Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,410 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw Staking | 20378650 | 117 days ago | IN | 0 ETH | 0.00169903 | ||||
Withdraw Staking | 12451050 | 1282 days ago | IN | 0 ETH | 0.01285937 | ||||
Withdraw Staking | 12448887 | 1282 days ago | IN | 0 ETH | 0.01015947 | ||||
Withdraw Staking | 12445990 | 1282 days ago | IN | 0 ETH | 0.0108487 | ||||
Withdraw Staking | 12441612 | 1283 days ago | IN | 0 ETH | 0.01325953 | ||||
Withdraw Staking | 12441154 | 1283 days ago | IN | 0 ETH | 0.00891975 | ||||
Withdraw Staking | 12439602 | 1283 days ago | IN | 0 ETH | 0.01944731 | ||||
Withdraw Staking | 12421962 | 1286 days ago | IN | 0 ETH | 0.02437992 | ||||
Withdraw Staking | 12412161 | 1288 days ago | IN | 0 ETH | 0.00583965 | ||||
Withdraw Staking | 12412151 | 1288 days ago | IN | 0 ETH | 0.03655217 | ||||
Withdraw Staking | 12380556 | 1293 days ago | IN | 0 ETH | 0.00574824 | ||||
Withdraw Staking | 12380465 | 1293 days ago | IN | 0 ETH | 0.00267746 | ||||
Withdraw Staking | 12378136 | 1293 days ago | IN | 0 ETH | 0.00668039 | ||||
Withdraw Staking | 12376758 | 1293 days ago | IN | 0 ETH | 0.00540493 | ||||
Withdraw Staking | 12376675 | 1293 days ago | IN | 0 ETH | 0.01211886 | ||||
Withdraw Staking | 12369232 | 1294 days ago | IN | 0 ETH | 0.00978755 | ||||
Withdraw Staking | 12367728 | 1295 days ago | IN | 0 ETH | 0.00776061 | ||||
Withdraw Staking | 12363486 | 1295 days ago | IN | 0 ETH | 0.01241697 | ||||
Withdraw Staking | 12363268 | 1295 days ago | IN | 0 ETH | 0.01321637 | ||||
Withdraw Staking | 12362848 | 1295 days ago | IN | 0 ETH | 0.01759071 | ||||
Withdraw Staking | 12360473 | 1296 days ago | IN | 0 ETH | 0.00451254 | ||||
Withdraw Staking | 12360123 | 1296 days ago | IN | 0 ETH | 0.00872637 | ||||
Withdraw Staking | 12359668 | 1296 days ago | IN | 0 ETH | 0.0041387 | ||||
Withdraw Staking | 12358625 | 1296 days ago | IN | 0 ETH | 0.00227908 | ||||
Withdraw Staking | 12358218 | 1296 days ago | IN | 0 ETH | 0.0019202 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
StakingPool
Compiler Version
v0.4.25+commit.59dbf8f1
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-03-30 */ pragma solidity 0.4.25; /** * token contract functions */ contract Ierc20 { function balanceOf(address who) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function transfer(address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function approveAndCall(address spender, uint tokens, bytes data) external returns (bool success); function transferFrom(address from, address to, uint256 value) external returns (bool); } library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a / b; return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } function ceil(uint256 a, uint256 m) internal pure returns (uint256) { uint256 c = add(a,m); uint256 d = sub(c,1); return mul(div(d,m),m); } } contract Owned { address public owner; event OwnerChanges(address newOwner); constructor() public { owner = msg.sender; } modifier onlyOwner { require(msg.sender == owner); _; } function transferOwnership(address newOwner) onlyOwner external { require(newOwner != address(0), "New owner is the zero address"); owner = newOwner; emit OwnerChanges(newOwner); } } contract StakingPool is Owned { using SafeMath for uint256; Ierc20 public tswap; Ierc20 public rewardToken; uint256 poolDuration; uint256 totalRewards; uint256 rewardsWithdrawn; uint256 poolStartTime; uint256 poolEndTime; uint256 totalStaked; // Represents a single stake for a user. A user may have multiple. struct Stake { uint256 amount; uint256 stakingTime; uint256 lastWithdrawTime; } mapping (address => Stake[]) public userStaking; // Represents total staking of an user struct UserTotals { uint256 totalStaking; uint256 totalStakingTIme; } mapping (address => UserTotals) public userTotalStaking; struct Ris3Rewards { uint256 totalWithdrawn; uint256 lastWithdrawTime; } mapping(address => Ris3Rewards) public userRewardInfo; event OwnerSetReward(uint256 amount); event Staked(address userAddress, uint256 amount); event StakingWithdrawal(address userAddress, uint256 amount); event RewardWithdrawal(address userAddress, uint256 amount); event PoolDurationChange(uint256 poolDuration); /** * Constrctor function */ constructor() public { tswap = Ierc20(0xCC4304A31d09258b0029eA7FE63d032f52e44EFe); rewardToken = Ierc20(0xe047705117Eb07e712C3d684f5B18E74577e83aC); poolDuration = 720 hours; } //Set pool rewards function ownerSetPoolRewards(uint256 _rewardAmount) external onlyOwner { require(poolStartTime == 0, "Pool rewards already set"); require(_rewardAmount > 0, "Cannot create pool with zero amount"); //set total rewards value totalRewards = _rewardAmount; poolStartTime = now; poolEndTime = now + poolDuration; //transfer tokens to contract rewardToken.transferFrom(msg.sender, this, _rewardAmount); emit OwnerSetReward(_rewardAmount); } //Stake function for users to stake SWAP token function stake(uint256 amount) external { require(amount > 0, "Cannot stake 0"); require(now < poolEndTime, "Staking pool is closed"); //staking pool is closed for staking //add value in staking userTotalStaking[msg.sender].totalStaking = userTotalStaking[msg.sender].totalStaking.add(amount); //add new stake Stake memory newStake = Stake(amount, now, 0); userStaking[msg.sender].push(newStake); //add to total staked totalStaked = totalStaked.add(amount); tswap.transferFrom(msg.sender, this, amount); emit Staked(msg.sender, amount); } //compute rewards function computeNewReward(uint256 _rewardAmount, uint256 _stakedAmount, uint256 _stakeTimeSec) private view returns (uint256 _reward) { uint256 rewardPerSecond = totalRewards.mul(1 ether); if (rewardPerSecond != 0 ) { rewardPerSecond = rewardPerSecond.div(poolDuration); } if (rewardPerSecond > 0) { uint256 rewardPerSecForEachTokenStaked = rewardPerSecond.div(totalStaked); uint256 userRewards = rewardPerSecForEachTokenStaked.mul(_stakedAmount).mul(_stakeTimeSec); userRewards = userRewards.div(1 ether); return _rewardAmount.add(userRewards); } else { return 0; } } //calculate your rewards function calculateReward(address _userAddress) public view returns (uint256 _reward) { // all user stakes Stake[] storage accountStakes = userStaking[_userAddress]; // Redeem from most recent stake and go backwards in time. uint256 rewardAmount = 0; uint256 i = accountStakes.length; while (i > 0) { Stake storage userStake = accountStakes[i - 1]; uint256 stakeTimeSec; //check if current time is more than pool ending time if (now > poolEndTime) { stakeTimeSec = poolEndTime.sub(userStake.stakingTime); if(userStake.lastWithdrawTime != 0){ stakeTimeSec = poolEndTime.sub(userStake.lastWithdrawTime); } } else { stakeTimeSec = now.sub(userStake.stakingTime); if(userStake.lastWithdrawTime != 0){ stakeTimeSec = now.sub(userStake.lastWithdrawTime); } } // fully redeem a past stake rewardAmount = computeNewReward(rewardAmount, userStake.amount, stakeTimeSec); i--; } return rewardAmount; } //Withdraw staking and rewards function withdrawStaking(uint256 amount) external { require(amount > 0, "Amount can not be zero"); require(userTotalStaking[msg.sender].totalStaking >= amount, "You are trying to withdaw more than your stake"); // 1. User Accounting Stake[] storage accountStakes = userStaking[msg.sender]; // Redeem from most recent stake and go backwards in time. uint256 sharesLeftToBurn = amount; uint256 rewardAmount = 0; while (sharesLeftToBurn > 0) { Stake storage lastStake = accountStakes[accountStakes.length - 1]; uint256 stakeTimeSec; //check if current time is more than pool ending time if (now > poolEndTime) { stakeTimeSec = poolEndTime.sub(lastStake.stakingTime); if(lastStake.lastWithdrawTime != 0){ stakeTimeSec = poolEndTime.sub(lastStake.lastWithdrawTime); } } else { stakeTimeSec = now.sub(lastStake.stakingTime); if(lastStake.lastWithdrawTime != 0){ stakeTimeSec = now.sub(lastStake.lastWithdrawTime); } } if (lastStake.amount <= sharesLeftToBurn) { // fully redeem a past stake rewardAmount = computeNewReward(rewardAmount, lastStake.amount, stakeTimeSec); sharesLeftToBurn = sharesLeftToBurn.sub(lastStake.amount); accountStakes.length--; } else { // partially redeem a past stake rewardAmount = computeNewReward(rewardAmount, sharesLeftToBurn, stakeTimeSec); lastStake.amount = lastStake.amount.sub(sharesLeftToBurn); lastStake.lastWithdrawTime = now; sharesLeftToBurn = 0; } } //substract value in staking userTotalStaking[msg.sender].totalStaking = userTotalStaking[msg.sender].totalStaking.sub(amount); //substract from total staked totalStaked = totalStaked.sub(amount); //update user rewards info userRewardInfo[msg.sender].totalWithdrawn = userRewardInfo[msg.sender].totalWithdrawn.add(rewardAmount); userRewardInfo[msg.sender].lastWithdrawTime = now; //update total rewards withdrawn rewardsWithdrawn = rewardsWithdrawn.add(rewardAmount); //transfer rewards and tokens rewardToken.transfer(msg.sender, rewardAmount); tswap.transfer(msg.sender, amount); emit RewardWithdrawal(msg.sender, rewardAmount); emit StakingWithdrawal(msg.sender, amount); } //Withdraw rewards function withdrawRewardsOnly() external { uint256 _rwdAmount = calculateReward(msg.sender); require(_rwdAmount > 0, "You do not have enough rewards"); // 1. User Accounting Stake[] storage accountStakes = userStaking[msg.sender]; // Redeem from most recent stake and go backwards in time. uint256 rewardAmount = 0; uint256 i = accountStakes.length; while (i > 0) { Stake storage userStake = accountStakes[i - 1]; uint256 stakeTimeSec; //check if current time is more than pool ending time if (now > poolEndTime) { stakeTimeSec = poolEndTime.sub(userStake.stakingTime); if(userStake.lastWithdrawTime != 0){ stakeTimeSec = poolEndTime.sub(userStake.lastWithdrawTime); } } else { stakeTimeSec = now.sub(userStake.stakingTime); if(userStake.lastWithdrawTime != 0){ stakeTimeSec = now.sub(userStake.lastWithdrawTime); } } // fully redeem a past stake rewardAmount = computeNewReward(rewardAmount, userStake.amount, stakeTimeSec); userStake.lastWithdrawTime = now; i--; } //update user rewards info userRewardInfo[msg.sender].totalWithdrawn = userRewardInfo[msg.sender].totalWithdrawn.add(rewardAmount); userRewardInfo[msg.sender].lastWithdrawTime = now; //update total rewards withdrawn rewardsWithdrawn = rewardsWithdrawn.add(rewardAmount); //transfer rewards rewardToken.transfer(msg.sender, rewardAmount); emit RewardWithdrawal(msg.sender, rewardAmount); } //get staking details by user address function getStakingAmount(address _userAddress) external constant returns (uint256 _stakedAmount) { return userTotalStaking[_userAddress].totalStaking; } //get total rewards collected by user function getTotalRewardCollectedByUser(address userAddress) view external returns (uint256 _totalRewardCollected) { return userRewardInfo[userAddress].totalWithdrawn; } //get total SWAP token staked in the contract function getTotalStaked() external constant returns ( uint256 _totalStaked) { return totalStaked; } //get total rewards in the contract function getTotalRewards() external constant returns ( uint256 _totalRewards) { return totalRewards; } //get pool details function getPoolDetails() external view returns (address _baseToken, address _pairedToken, uint256 _totalRewards, uint256 _rewardsWithdrawn, uint256 _poolStartTime, uint256 _poolEndTime) { return (address(tswap),address(rewardToken),totalRewards,rewardsWithdrawn,poolStartTime,poolEndTime); } //get duration of pools function getPoolDuration() external constant returns (uint256 _poolDuration) { return poolDuration; } //set duration of pools by owner in seconds function setPoolDuration(uint256 _poolDuration) external onlyOwner { poolDuration = _poolDuration; poolEndTime = poolStartTime + _poolDuration; emit PoolDurationChange(_poolDuration); } //get SWAP token address function getSwapAddress() external constant returns (address _swapAddress) { return address(tswap); } //set tswap address function setTswapAddress(address _address) external onlyOwner { tswap = Ierc20(_address); } //set reward token address function setRewardTokenAddress(address _address) external onlyOwner { rewardToken = Ierc20(_address); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"_poolDuration","type":"uint256"}],"name":"setPoolDuration","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getTotalStaked","outputs":[{"name":"_totalStaked","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawRewardsOnly","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"withdrawStaking","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"userRewardInfo","outputs":[{"name":"totalWithdrawn","type":"uint256"},{"name":"lastWithdrawTime","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_userAddress","type":"address"}],"name":"getStakingAmount","outputs":[{"name":"_stakedAmount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getSwapAddress","outputs":[{"name":"_swapAddress","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"userTotalStaking","outputs":[{"name":"totalStaking","type":"uint256"},{"name":"totalStakingTIme","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"userStaking","outputs":[{"name":"amount","type":"uint256"},{"name":"stakingTime","type":"uint256"},{"name":"lastWithdrawTime","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setRewardTokenAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setTswapAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"stake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"userAddress","type":"address"}],"name":"getTotalRewardCollectedByUser","outputs":[{"name":"_totalRewardCollected","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPoolDetails","outputs":[{"name":"_baseToken","type":"address"},{"name":"_pairedToken","type":"address"},{"name":"_totalRewards","type":"uint256"},{"name":"_rewardsWithdrawn","type":"uint256"},{"name":"_poolStartTime","type":"uint256"},{"name":"_poolEndTime","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tswap","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_userAddress","type":"address"}],"name":"calculateReward","outputs":[{"name":"_reward","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTotalRewards","outputs":[{"name":"_totalRewards","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPoolDuration","outputs":[{"name":"_poolDuration","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_rewardAmount","type":"uint256"}],"name":"ownerSetPoolRewards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"OwnerSetReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"userAddress","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"userAddress","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"StakingWithdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"userAddress","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"RewardWithdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"poolDuration","type":"uint256"}],"name":"PoolDurationChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newOwner","type":"address"}],"name":"OwnerChanges","type":"event"}]
Contract Creation Code
608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073cc4304a31d09258b0029ea7fe63d032f52e44efe600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e047705117eb07e712c3d684f5b18e74577e83ac600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062278d0060038190555061236a806101146000396000f300608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806302a01dc21461012d5780630917e7761461015a57806317608969146101855780632e0b78f61461019c578063360b8ed9146101c957806374363daa1461022757806385811fbf1461027e5780638da5cb5b146102d55780638db6c1191461032c578063908163021461038a5780639a6acf20146103f95780639ebde7811461043c578063a694fc3a1461047f578063a6b240fe146104ac578063aca34c1114610503578063c9e48653146105a9578063d82e396214610600578063e627f2db14610657578063f2fde38b14610682578063f7c618c1146106c5578063f7d57b811461071c578063fbc14bfb14610747575b600080fd5b34801561013957600080fd5b5061015860048036038101908080359060200190929190505050610774565b005b34801561016657600080fd5b5061016f61081b565b6040518082815260200191505060405180910390f35b34801561019157600080fd5b5061019a610825565b005b3480156101a857600080fd5b506101c760048036038101908080359060200190929190505050610c57565b005b3480156101d557600080fd5b5061020a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113e6565b604051808381526020018281526020019250505060405180910390f35b34801561023357600080fd5b50610268600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061140a565b6040518082815260200191505060405180910390f35b34801561028a57600080fd5b50610293611456565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e157600080fd5b506102ea611480565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561033857600080fd5b5061036d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114a5565b604051808381526020018281526020019250505060405180910390f35b34801561039657600080fd5b506103d5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114c9565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561040557600080fd5b5061043a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061150f565b005b34801561044857600080fd5b5061047d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115ae565b005b34801561048b57600080fd5b506104aa6004803603810190808035906020019092919050505061164d565b005b3480156104b857600080fd5b506104ed600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a4b565b6040518082815260200191505060405180910390f35b34801561050f57600080fd5b50610518611a97565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001838152602001828152602001965050505050505060405180910390f35b3480156105b557600080fd5b506105be611b06565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060c57600080fd5b50610641600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b2c565b6040518082815260200191505060405180910390f35b34801561066357600080fd5b5061066c611c6e565b6040518082815260200191505060405180910390f35b34801561068e57600080fd5b506106c3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c78565b005b3480156106d157600080fd5b506106da611e1e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561072857600080fd5b50610731611e44565b6040518082815260200191505060405180910390f35b34801561075357600080fd5b5061077260048036038101908080359060200190929190505050611e4e565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107cf57600080fd5b8060038190555080600654016007819055507f93202f612f7aeb2a12b92bc5e92cd9600b71bbe0605f654cc7ce95e0025f2270816040518082815260200191505060405180910390a150565b6000600854905090565b60008060008060008061083733611b2c565b95506000861115156108b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f596f7520646f206e6f74206861766520656e6f7567682072657761726473000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020945060009350848054905092505b60008311156109e657846001840381548110151561091857fe5b9060005260206000209060030201915060075442111561097c5761094b826001015460075461214990919063ffffffff16565b90506000826002015414151561097757610974826002015460075461214990919063ffffffff16565b90505b6109be565b61099382600101544261214990919063ffffffff16565b9050600082600201541415156109bd576109ba82600201544261214990919063ffffffff16565b90505b5b6109cd84836000015483612165565b93504282600201819055508280600190039350506108fe565b610a3b84600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461223990919063ffffffff16565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555042600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550610add8460055461223990919063ffffffff16565b600581905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610ba857600080fd5b505af1158015610bbc573d6000803e3d6000fd5b505050506040513d6020811015610bd257600080fd5b8101908080519060200190929190505050507f5bf73990fdbbb1700fedc6b63f17f15c22d262a16352f0fd668471a1e3548ffe3385604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505050505050565b60008060008060008086111515610cd6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f416d6f756e742063616e206e6f74206265207a65726f0000000000000000000081525060200191505060405180910390fd5b85600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015410151515610db6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f596f752061726520747279696e6720746f2077697468646177206d6f7265207481526020017f68616e20796f7572207374616b6500000000000000000000000000000000000081525060400191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209450859350600092505b6000841115610f5357846001868054905003815481101515610e1d57fe5b90600052602060002090600302019150600754421115610e8157610e50826001015460075461214990919063ffffffff16565b905060008260020154141515610e7c57610e79826002015460075461214990919063ffffffff16565b90505b610ec3565b610e9882600101544261214990919063ffffffff16565b905060008260020154141515610ec257610ebf82600201544261214990919063ffffffff16565b90505b5b838260000154111515610f1457610edf83836000015483612165565b9250610ef882600001548561214990919063ffffffff16565b935084805480919060019003610f0e91906122b3565b50610f4e565b610f1f838583612165565b9250610f3884836000015461214990919063ffffffff16565b8260000181905550428260020181905550600093505b610dff565b610fa886600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461214990919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506110038660085461214990919063ffffffff16565b60088190555061105e83600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461223990919063ffffffff16565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555042600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506111008360055461223990919063ffffffff16565b600581905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156111cb57600080fd5b505af11580156111df573d6000803e3d6000fd5b505050506040513d60208110156111f557600080fd5b810190808051906020019092919050505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156112cc57600080fd5b505af11580156112e0573d6000803e3d6000fd5b505050506040513d60208110156112f657600080fd5b8101908080519060200190929190505050507f5bf73990fdbbb1700fedc6b63f17f15c22d262a16352f0fd668471a1e3548ffe3384604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a17f5322e8325014aeb0f999c341770ee4939af85cc55c4f5e03547373cabe18978a3387604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505050505050565b600b6020528060005260406000206000915090508060000154908060010154905082565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915090508060000154908060010154905082565b6009602052816000526040600020818154811015156114e457fe5b9060005260206000209060030201600091509150508060000154908060010154908060020154905083565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561156a57600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561160957600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116556122e5565b6000821115156116cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f43616e6e6f74207374616b65203000000000000000000000000000000000000081525060200191505060405180910390fd5b60075442101515611746576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f5374616b696e6720706f6f6c20697320636c6f7365640000000000000000000081525060200191505060405180910390fd5b61179b82600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461223990919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555060606040519081016040528083815260200142815260200160008152509050600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081908060018154018082558091505090600182039060005260206000209060030201600090919290919091506000820151816000015560208201518160010155604082015181600201555050506118a18260085461223990919063ffffffff16565b600881905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156119a057600080fd5b505af11580156119b4573d6000803e3d6000fd5b505050506040513d60208110156119ca57600080fd5b8101908080519060200190929190505050507f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d3383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b600080600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454600554600654600754955095509550955095509550909192939495565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600080600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020945060009350848054905092505b6000831115611c61578460018403815481101515611b9c57fe5b90600052602060002090600302019150600754421115611c0057611bcf826001015460075461214990919063ffffffff16565b905060008260020154141515611bfb57611bf8826002015460075461214990919063ffffffff16565b90505b611c42565b611c1782600101544261214990919063ffffffff16565b905060008260020154141515611c4157611c3e82600201544261214990919063ffffffff16565b90505b5b611c5184836000015483612165565b9350828060019003935050611b82565b8395505050505050919050565b6000600454905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611cd357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611d78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4e6577206f776e657220697320746865207a65726f206164647265737300000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe181e59d45ee426a055928ff3e7e85526d4ef2532db1b20262d9bb5d5263d45481604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600354905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ea957600080fd5b6000600654141515611f23576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f506f6f6c207265776172647320616c726561647920736574000000000000000081525060200191505060405180910390fd5b600081111515611fc1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f43616e6e6f742063726561746520706f6f6c2077697468207a65726f20616d6f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600481905550426006819055506003544201600781905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156120d357600080fd5b505af11580156120e7573d6000803e3d6000fd5b505050506040513d60208110156120fd57600080fd5b8101908080519060200190929190505050507f9995276a5cbceb87f6c2a87b816fb85911a01e6eec7c9380558cbaaca1d62bdf816040518082815260200191505060405180910390a150565b600082821115151561215a57600080fd5b818303905092915050565b600080600080612188670de0b6b3a764000060045461225a90919063ffffffff16565b92506000831415156121ac576121a96003548461229890919063ffffffff16565b92505b600083111561222a576121ca6008548461229890919063ffffffff16565b91506121f1856121e3888561225a90919063ffffffff16565b61225a90919063ffffffff16565b905061220e670de0b6b3a76400008261229890919063ffffffff16565b9050612223818861223990919063ffffffff16565b935061222f565b600093505b5050509392505050565b600080828401905083811015151561225057600080fd5b8091505092915050565b600080600084141561226f5760009150612291565b828402905082848281151561228057fe5b0414151561228d57600080fd5b8091505b5092915050565b60008082848115156122a657fe5b0490508091505092915050565b8154818355818111156122e0576003028160030283600052602060002091820191016122df9190612307565b5b505050565b6060604051908101604052806000815260200160008152602001600081525090565b61233b91905b8082111561233757600080820160009055600182016000905560028201600090555060030161230d565b5090565b905600a165627a7a7230582042c612137bcdd3559d589b8541147494c483a1f828d7c5d971ef38ad6e88d36d0029
Deployed Bytecode
0x608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806302a01dc21461012d5780630917e7761461015a57806317608969146101855780632e0b78f61461019c578063360b8ed9146101c957806374363daa1461022757806385811fbf1461027e5780638da5cb5b146102d55780638db6c1191461032c578063908163021461038a5780639a6acf20146103f95780639ebde7811461043c578063a694fc3a1461047f578063a6b240fe146104ac578063aca34c1114610503578063c9e48653146105a9578063d82e396214610600578063e627f2db14610657578063f2fde38b14610682578063f7c618c1146106c5578063f7d57b811461071c578063fbc14bfb14610747575b600080fd5b34801561013957600080fd5b5061015860048036038101908080359060200190929190505050610774565b005b34801561016657600080fd5b5061016f61081b565b6040518082815260200191505060405180910390f35b34801561019157600080fd5b5061019a610825565b005b3480156101a857600080fd5b506101c760048036038101908080359060200190929190505050610c57565b005b3480156101d557600080fd5b5061020a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113e6565b604051808381526020018281526020019250505060405180910390f35b34801561023357600080fd5b50610268600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061140a565b6040518082815260200191505060405180910390f35b34801561028a57600080fd5b50610293611456565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e157600080fd5b506102ea611480565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561033857600080fd5b5061036d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114a5565b604051808381526020018281526020019250505060405180910390f35b34801561039657600080fd5b506103d5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114c9565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561040557600080fd5b5061043a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061150f565b005b34801561044857600080fd5b5061047d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115ae565b005b34801561048b57600080fd5b506104aa6004803603810190808035906020019092919050505061164d565b005b3480156104b857600080fd5b506104ed600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a4b565b6040518082815260200191505060405180910390f35b34801561050f57600080fd5b50610518611a97565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001838152602001828152602001965050505050505060405180910390f35b3480156105b557600080fd5b506105be611b06565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060c57600080fd5b50610641600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b2c565b6040518082815260200191505060405180910390f35b34801561066357600080fd5b5061066c611c6e565b6040518082815260200191505060405180910390f35b34801561068e57600080fd5b506106c3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c78565b005b3480156106d157600080fd5b506106da611e1e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561072857600080fd5b50610731611e44565b6040518082815260200191505060405180910390f35b34801561075357600080fd5b5061077260048036038101908080359060200190929190505050611e4e565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107cf57600080fd5b8060038190555080600654016007819055507f93202f612f7aeb2a12b92bc5e92cd9600b71bbe0605f654cc7ce95e0025f2270816040518082815260200191505060405180910390a150565b6000600854905090565b60008060008060008061083733611b2c565b95506000861115156108b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f596f7520646f206e6f74206861766520656e6f7567682072657761726473000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020945060009350848054905092505b60008311156109e657846001840381548110151561091857fe5b9060005260206000209060030201915060075442111561097c5761094b826001015460075461214990919063ffffffff16565b90506000826002015414151561097757610974826002015460075461214990919063ffffffff16565b90505b6109be565b61099382600101544261214990919063ffffffff16565b9050600082600201541415156109bd576109ba82600201544261214990919063ffffffff16565b90505b5b6109cd84836000015483612165565b93504282600201819055508280600190039350506108fe565b610a3b84600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461223990919063ffffffff16565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555042600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550610add8460055461223990919063ffffffff16565b600581905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610ba857600080fd5b505af1158015610bbc573d6000803e3d6000fd5b505050506040513d6020811015610bd257600080fd5b8101908080519060200190929190505050507f5bf73990fdbbb1700fedc6b63f17f15c22d262a16352f0fd668471a1e3548ffe3385604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505050505050565b60008060008060008086111515610cd6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f416d6f756e742063616e206e6f74206265207a65726f0000000000000000000081525060200191505060405180910390fd5b85600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015410151515610db6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f596f752061726520747279696e6720746f2077697468646177206d6f7265207481526020017f68616e20796f7572207374616b6500000000000000000000000000000000000081525060400191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209450859350600092505b6000841115610f5357846001868054905003815481101515610e1d57fe5b90600052602060002090600302019150600754421115610e8157610e50826001015460075461214990919063ffffffff16565b905060008260020154141515610e7c57610e79826002015460075461214990919063ffffffff16565b90505b610ec3565b610e9882600101544261214990919063ffffffff16565b905060008260020154141515610ec257610ebf82600201544261214990919063ffffffff16565b90505b5b838260000154111515610f1457610edf83836000015483612165565b9250610ef882600001548561214990919063ffffffff16565b935084805480919060019003610f0e91906122b3565b50610f4e565b610f1f838583612165565b9250610f3884836000015461214990919063ffffffff16565b8260000181905550428260020181905550600093505b610dff565b610fa886600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461214990919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506110038660085461214990919063ffffffff16565b60088190555061105e83600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461223990919063ffffffff16565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555042600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506111008360055461223990919063ffffffff16565b600581905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156111cb57600080fd5b505af11580156111df573d6000803e3d6000fd5b505050506040513d60208110156111f557600080fd5b810190808051906020019092919050505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156112cc57600080fd5b505af11580156112e0573d6000803e3d6000fd5b505050506040513d60208110156112f657600080fd5b8101908080519060200190929190505050507f5bf73990fdbbb1700fedc6b63f17f15c22d262a16352f0fd668471a1e3548ffe3384604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a17f5322e8325014aeb0f999c341770ee4939af85cc55c4f5e03547373cabe18978a3387604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505050505050565b600b6020528060005260406000206000915090508060000154908060010154905082565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915090508060000154908060010154905082565b6009602052816000526040600020818154811015156114e457fe5b9060005260206000209060030201600091509150508060000154908060010154908060020154905083565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561156a57600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561160957600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116556122e5565b6000821115156116cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f43616e6e6f74207374616b65203000000000000000000000000000000000000081525060200191505060405180910390fd5b60075442101515611746576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f5374616b696e6720706f6f6c20697320636c6f7365640000000000000000000081525060200191505060405180910390fd5b61179b82600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461223990919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555060606040519081016040528083815260200142815260200160008152509050600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081908060018154018082558091505090600182039060005260206000209060030201600090919290919091506000820151816000015560208201518160010155604082015181600201555050506118a18260085461223990919063ffffffff16565b600881905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156119a057600080fd5b505af11580156119b4573d6000803e3d6000fd5b505050506040513d60208110156119ca57600080fd5b8101908080519060200190929190505050507f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d3383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b600080600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454600554600654600754955095509550955095509550909192939495565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600080600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020945060009350848054905092505b6000831115611c61578460018403815481101515611b9c57fe5b90600052602060002090600302019150600754421115611c0057611bcf826001015460075461214990919063ffffffff16565b905060008260020154141515611bfb57611bf8826002015460075461214990919063ffffffff16565b90505b611c42565b611c1782600101544261214990919063ffffffff16565b905060008260020154141515611c4157611c3e82600201544261214990919063ffffffff16565b90505b5b611c5184836000015483612165565b9350828060019003935050611b82565b8395505050505050919050565b6000600454905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611cd357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611d78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4e6577206f776e657220697320746865207a65726f206164647265737300000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe181e59d45ee426a055928ff3e7e85526d4ef2532db1b20262d9bb5d5263d45481604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600354905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ea957600080fd5b6000600654141515611f23576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f506f6f6c207265776172647320616c726561647920736574000000000000000081525060200191505060405180910390fd5b600081111515611fc1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f43616e6e6f742063726561746520706f6f6c2077697468207a65726f20616d6f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600481905550426006819055506003544201600781905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156120d357600080fd5b505af11580156120e7573d6000803e3d6000fd5b505050506040513d60208110156120fd57600080fd5b8101908080519060200190929190505050507f9995276a5cbceb87f6c2a87b816fb85911a01e6eec7c9380558cbaaca1d62bdf816040518082815260200191505060405180910390a150565b600082821115151561215a57600080fd5b818303905092915050565b600080600080612188670de0b6b3a764000060045461225a90919063ffffffff16565b92506000831415156121ac576121a96003548461229890919063ffffffff16565b92505b600083111561222a576121ca6008548461229890919063ffffffff16565b91506121f1856121e3888561225a90919063ffffffff16565b61225a90919063ffffffff16565b905061220e670de0b6b3a76400008261229890919063ffffffff16565b9050612223818861223990919063ffffffff16565b935061222f565b600093505b5050509392505050565b600080828401905083811015151561225057600080fd5b8091505092915050565b600080600084141561226f5760009150612291565b828402905082848281151561228057fe5b0414151561228d57600080fd5b8091505b5092915050565b60008082848115156122a657fe5b0490508091505092915050565b8154818355818111156122e0576003028160030283600052602060002091820191016122df9190612307565b5b505050565b6060604051908101604052806000815260200160008152602001600081525090565b61233b91905b8082111561233757600080820160009055600182016000905560028201600090555060030161230d565b5090565b905600a165627a7a7230582042c612137bcdd3559d589b8541147494c483a1f828d7c5d971ef38ad6e88d36d0029
Deployed Bytecode Sourcemap
1879:11672:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12865:217;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12865:217:0;;;;;;;;;;;;;;;;;;;;;;;;;;12028:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12028:113:0;;;;;;;;;;;;;;;;;;;;;;;9636:1864;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9636:1864:0;;;;;;6817:2783;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6817:2783:0;;;;;;;;;;;;;;;;;;;;;;;;;;2738:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2738:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11555:167;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11555:167:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13124:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13124:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1376:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1376:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;2569:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2569:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2367:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2367:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13425:117;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13425:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13276:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13276:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3998:682;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3998:682:0;;;;;;;;;;;;;;;;;;;;;;;;;;11777:188;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11777:188:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12346:306;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12346:306:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1955:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1955:19:0;;;;;;;;;;;;;;;;;;;;;;;;;;;5494:1275;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5494:1275:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12194:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12194:116:0;;;;;;;;;;;;;;;;;;;;;;;1644:228;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1644:228:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1981:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1981:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;12693:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12693:115:0;;;;;;;;;;;;;;;;;;;;;;;3384:550;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3384:550:0;;;;;;;;;;;;;;;;;;;;;;;;;;12865:217;1598:5;;;;;;;;;;;1584:19;;:10;:19;;;1576:28;;;;;;;;12958:13;12943:12;:28;;;;13012:13;12996;;:29;12982:11;:43;;;;13041:33;13060:13;13041:33;;;;;;;;;;;;;;;;;;12865:217;:::o;12028:113::-;12082:20;12122:11;;12115:18;;12028:113;:::o;9636:1864::-;9687:18;9855:29;9999:20;10034:9;10106:23;10167:20;9708:27;9724:10;9708:15;:27::i;:::-;9687:48;;9767:1;9754:10;:14;9746:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9887:11;:23;9899:10;9887:23;;;;;;;;;;;;;;;9855:55;;10022:1;9999:24;;10046:13;:20;;;;10034:32;;10077:927;10088:1;10084;:5;10077:927;;;10132:13;10150:1;10146;:5;10132:20;;;;;;;;;;;;;;;;;;;;10106:46;;10293:11;;10287:3;:17;10283:497;;;10340:38;10356:9;:21;;;10340:11;;:15;;:38;;;;:::i;:::-;10325:53;;10430:1;10400:9;:26;;;:31;;10397:136;;;10470:43;10486:9;:26;;;10470:11;;:15;;:43;;;;:::i;:::-;10455:58;;10397:136;10283:497;;;10588:30;10596:9;:21;;;10588:3;:7;;:30;;;;:::i;:::-;10573:45;;10670:1;10640:9;:26;;;:31;;10637:128;;;10710:35;10718:9;:26;;;10710:3;:7;;:35;;;;:::i;:::-;10695:50;;10637:128;10283:497;10865:62;10882:12;10896:9;:16;;;10914:12;10865:16;:62::i;:::-;10850:77;;10971:3;10942:9;:26;;:32;;;;10989:3;;;;;;;;10077:927;;;11104:59;11150:12;11104:14;:26;11119:10;11104:26;;;;;;;;;;;;;;;:41;;;:45;;:59;;;;:::i;:::-;11060:14;:26;11075:10;11060:26;;;;;;;;;;;;;;;:41;;:103;;;;11220:3;11174:14;:26;11189:10;11174:26;;;;;;;;;;;;;;;:43;;:49;;;;11305:34;11326:12;11305:16;;:20;;:34;;;;:::i;:::-;11286:16;:53;;;;11388:11;;;;;;;;;;;:20;;;11409:10;11421:12;11388:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11388:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11388:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11388:46:0;;;;;;;;;;;;;;;;;11450:42;11467:10;11479:12;11450:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;9636:1864;;;;;;:::o;6817:2783::-;7096:29;7240:24;7284:20;7363:23;7443:20;6895:1;6886:6;:10;6878:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6987:6;6942:16;:28;6959:10;6942:28;;;;;;;;;;;;;;;:41;;;:51;;6934:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7128:11;:23;7140:10;7128:23;;;;;;;;;;;;;;;7096:55;;7267:6;7240:33;;7307:1;7284:24;;7319:1413;7345:1;7326:16;:20;7319:1413;;;7389:13;7426:1;7403:13;:20;;;;:24;7389:39;;;;;;;;;;;;;;;;;;;;7363:65;;7555:11;;7549:3;:17;7545:497;;;7602:38;7618:9;:21;;;7602:11;;:15;;:38;;;;:::i;:::-;7587:53;;7692:1;7662:9;:26;;;:31;;7659:136;;;7732:43;7748:9;:26;;;7732:11;;:15;;:43;;;;:::i;:::-;7717:58;;7659:136;7545:497;;;7850:30;7858:9;:21;;;7850:3;:7;;:30;;;;:::i;:::-;7835:45;;7932:1;7902:9;:26;;;:31;;7899:128;;;7972:35;7980:9;:26;;;7972:3;:7;;:35;;;;:::i;:::-;7957:50;;7899:128;7545:497;8094:16;8074:9;:16;;;:36;;8070:651;;;8192:62;8209:12;8223:9;:16;;;8241:12;8192:16;:62::i;:::-;8177:77;;8292:38;8313:9;:16;;;8292;:20;;:38;;;;:::i;:::-;8273:57;;8349:13;:22;;;;;;;;;;;;:::i;:::-;;8070:651;;;8477:62;8494:12;8508:16;8526:12;8477:16;:62::i;:::-;8462:77;;8577:38;8598:16;8577:9;:16;;;:20;;:38;;;;:::i;:::-;8558:9;:16;;:57;;;;8663:3;8634:9;:26;;:32;;;;8704:1;8685:20;;8070:651;7319:1413;;;8834:53;8880:6;8834:16;:28;8851:10;8834:28;;;;;;;;;;;;;;;:41;;;:45;;:53;;;;:::i;:::-;8790:16;:28;8807:10;8790:28;;;;;;;;;;;;;;;:41;;:97;;;;8961:23;8977:6;8961:11;;:15;;:23;;;;:::i;:::-;8947:11;:37;;;;9085:59;9131:12;9085:14;:26;9100:10;9085:26;;;;;;;;;;;;;;;:41;;;:45;;:59;;;;:::i;:::-;9041:14;:26;9056:10;9041:26;;;;;;;;;;;;;;;:41;;:103;;;;9201:3;9155:14;:26;9170:10;9155:26;;;;;;;;;;;;;;;:43;;:49;;;;9286:34;9307:12;9286:16;;:20;;:34;;;;:::i;:::-;9267:16;:53;;;;9380:11;;;;;;;;;;;:20;;;9401:10;9413:12;9380:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9380:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9380:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9380:46:0;;;;;;;;;;;;;;;;;9437:5;;;;;;;;;;;:14;;;9452:10;9464:6;9437:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9437:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9437:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9437:34:0;;;;;;;;;;;;;;;;;9497:42;9514:10;9526:12;9497:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;9555:37;9573:10;9585:6;9555:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;6817:2783;;;;;;:::o;2738:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11555:167::-;11630:21;11671:16;:30;11688:12;11671:30;;;;;;;;;;;;;;;:43;;;11664:50;;11555:167;;;:::o;13124:115::-;13177:20;13225:5;;;;;;;;;;;13210:21;;13124:115;:::o;1376:20::-;;;;;;;;;;;;;:::o;2569:55::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2367:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13425:117::-;1598:5;;;;;;;;;;;1584:19;;:10;:19;;;1576:28;;;;;;;;13525:8;13504:11;;:30;;;;;;;;;;;;;;;;;;13425:117;:::o;13276:105::-;1598:5;;;;;;;;;;;1584:19;;:10;:19;;;1576:28;;;;;;;;13364:8;13349:5;;:24;;;;;;;;;;;;;;;;;;13276:105;:::o;3998:682::-;4382:21;;:::i;:::-;4066:1;4057:6;:10;4049:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4111:11;;4105:3;:17;4097:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4283:53;4329:6;4283:16;:28;4300:10;4283:28;;;;;;;;;;;;;;;:41;;;:45;;:53;;;;:::i;:::-;4239:16;:28;4256:10;4239:28;;;;;;;;;;;;;;;:41;;:97;;;;4406:21;;;;;;;;;4412:6;4406:21;;;;4420:3;4406:21;;;;4425:1;4406:21;;;4382:45;;4438:11;:23;4450:10;4438:23;;;;;;;;;;;;;;;4467:8;4438:38;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;4438:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4542:23;4558:6;4542:11;;:15;;:23;;;;:::i;:::-;4528:11;:37;;;;4586:5;;;;;;;;;;;:18;;;4605:10;4617:4;4623:6;4586:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4586:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4586:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4586:44:0;;;;;;;;;;;;;;;;;4646:26;4653:10;4665:6;4646:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;3998:682;;:::o;11777:188::-;11860:29;11915:14;:27;11930:11;11915:27;;;;;;;;;;;;;;;:42;;;11908:49;;11777:188;;;:::o;12346:306::-;12395:18;12415:20;12437:21;12460:25;12487:22;12511:20;12560:5;;;;;;;;;;;12575:11;;;;;;;;;;;12588:12;;12601:16;;12618:13;;12632:11;;12544:100;;;;;;;;;;;;12346:306;;;;;;:::o;1955:19::-;;;;;;;;;;;;;:::o;5494:1275::-;5562:15;5618:29;5764:20;5799:9;5871:23;5932:20;5650:11;:25;5662:12;5650:25;;;;;;;;;;;;;;;5618:57;;5787:1;5764:24;;5811:13;:20;;;;5799:32;;5842:880;5853:1;5849;:5;5842:880;;;5897:13;5915:1;5911;:5;5897:20;;;;;;;;;;;;;;;;;;;;5871:46;;6058:11;;6052:3;:17;6048:497;;;6105:38;6121:9;:21;;;6105:11;;:15;;:38;;;;:::i;:::-;6090:53;;6195:1;6165:9;:26;;;:31;;6162:136;;;6235:43;6251:9;:26;;;6235:11;;:15;;:43;;;;:::i;:::-;6220:58;;6162:136;6048:497;;;6353:30;6361:9;:21;;;6353:3;:7;;:30;;;;:::i;:::-;6338:45;;6435:1;6405:9;:26;;;:31;;6402:128;;;6475:35;6483:9;:26;;;6475:3;:7;;:35;;;;:::i;:::-;6460:50;;6402:128;6048:497;6630:62;6647:12;6661:9;:16;;;6679:12;6630:16;:62::i;:::-;6615:77;;6707:3;;;;;;;;5842:880;;;6749:12;6742:19;;5494:1275;;;;;;;;:::o;12194:116::-;12249:21;12290:12;;12283:19;;12194:116;:::o;1644:228::-;1598:5;;;;;;;;;;;1584:19;;:10;:19;;;1576:28;;;;;;;;1751:1;1731:22;;:8;:22;;;;1723:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1810:8;1802:5;;:16;;;;;;;;;;;;;;;;;;1838:22;1851:8;1838:22;;;;;;;;;;;;;;;;;;;;;;1644:228;:::o;1981:25::-;;;;;;;;;;;;;:::o;12693:115::-;12747:21;12788:12;;12781:19;;12693:115;:::o;3384:550::-;1598:5;;;;;;;;;;;1584:19;;:10;:19;;;1576:28;;;;;;;;3491:1;3474:13;;:18;3466:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3556:1;3540:13;:17;3532:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3668:13;3653:12;:28;;;;3718:3;3702:13;:19;;;;3752:12;;3746:3;:18;3732:11;:32;;;;3824:11;;;;;;;;;;;:24;;;3849:10;3861:4;3867:13;3824:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3824:57:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3824:57:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3824:57:0;;;;;;;;;;;;;;;;;3897:29;3912:13;3897:29;;;;;;;;;;;;;;;;;;3384:550;:::o;926:114::-;984:7;1013:1;1008;:6;;1000:15;;;;;;;;1033:1;1029;:5;1022:12;;926:114;;;;:::o;4715:737::-;4832:15;4860:23;5087:38;5175:19;4886:25;4903:7;4886:12;;:16;;:25;;;;:::i;:::-;4860:51;;4945:1;4926:15;:20;;4922:105;;;4982:33;5002:12;;4982:15;:19;;:33;;;;:::i;:::-;4964:51;;4922:105;5069:1;5051:15;:19;5047:398;;;5128:32;5148:11;;5128:15;:19;;:32;;;;:::i;:::-;5087:73;;5197:68;5251:13;5197:49;5232:13;5197:30;:34;;:49;;;;:::i;:::-;:53;;:68;;;;:::i;:::-;5175:90;;5302:24;5318:7;5302:11;:15;;:24;;;;:::i;:::-;5288:38;;5362:30;5380:11;5362:13;:17;;:30;;;;:::i;:::-;5355:37;;;;5047:398;5432:1;5425:8;;4715:737;;;;;;;;;:::o;1046:134::-;1104:7;1120:9;1136:1;1132;:5;1120:17;;1157:1;1152;:6;;1144:15;;;;;;;;1173:1;1166:8;;1046:134;;;;;:::o;621:181::-;679:7;738:9;704:1;699;:6;695:37;;;723:1;716:8;;;;695:37;754:1;750;:5;738:17;;779:1;774;770;:5;;;;;;;;:10;762:19;;;;;;;;795:1;788:8;;621:181;;;;;;:::o;808:112::-;866:7;882:9;898:1;894;:5;;;;;;;;882:17;;913:1;906:8;;808:112;;;;;:::o;1879:11672::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
bzzr://42c612137bcdd3559d589b8541147494c483a1f828d7c5d971ef38ad6e88d36d
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.110777 | 1,821.2403 | $201.75 |
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.