Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x60606040 | 15999407 | 720 days ago | IN | 0 ETH | 0.01638736 |
Loading...
Loading
Contract Name:
LockService
Compiler Version
v0.4.16+commit.d7661dd9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-11-18 */ // solhint-disable reason-string // solhint-disable contract-name-camelcase pragma solidity 0.4.16; /** * token contract functions */ contract Token { 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 constant returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b); return c; } function div(uint256 a, uint256 b) internal constant returns (uint256) { uint256 c = a / b; return c; } function sub(uint256 a, uint256 b) internal constant returns (uint256) { require(b <= a); return a - b; } function add(uint256 a, uint256 b) internal constant returns (uint256) { uint256 c = a + b; require(c >= a); return c; } function ceil(uint256 a, uint256 m) internal constant returns (uint256) { uint256 c = add(a, m); uint256 d = sub(c, 1); return mul(div(d, m), m); } } contract owned { address public owner; function owned() public { owner = msg.sender; } modifier onlyOwner() { require(msg.sender == owner); _; } function transferOwnership(address newOwner) public onlyOwner { owner = newOwner; } } contract LockService is owned { using SafeMath for uint256; /* * deposit vars */ struct Items { address tokenAddress; address withdrawalAddress; uint256 tokenAmount; uint256 unlockTime; bool withdrawn; } uint256 public depositId; uint256[] public allDepositIds; mapping(address => uint256[]) public depositsByWithdrawalAddress; mapping(uint256 => Items) public lockedToken; mapping(address => mapping(address => uint256)) public walletTokenBalance; event LogWithdrawal(address SentToAddress, uint256 AmountTransferred); /** *lock tokens */ function lockTokens( address _tokenAddress, address _withdrawalAddress, uint256 _amount, uint256 _unlockTime ) public returns (uint256 _id) { require(_amount > 0); require(_unlockTime < 10000000000); //update balance in address walletTokenBalance[_tokenAddress][_withdrawalAddress] = walletTokenBalance[_tokenAddress][_withdrawalAddress].add( _amount ); _id = ++depositId; lockedToken[_id].tokenAddress = _tokenAddress; lockedToken[_id].withdrawalAddress = _withdrawalAddress; lockedToken[_id].tokenAmount = _amount; lockedToken[_id].unlockTime = _unlockTime; lockedToken[_id].withdrawn = false; allDepositIds.push(_id); depositsByWithdrawalAddress[_withdrawalAddress].push(_id); // transfer tokens into contract require(Token(_tokenAddress).transferFrom(msg.sender, this, _amount)); } /** *Create multiple locks */ function createMultipleLocks( address _tokenAddress, address _withdrawalAddress, uint256[] _amounts, uint256[] _unlockTimes ) public returns (uint256 _id) { require(_amounts.length > 0); require(_amounts.length == _unlockTimes.length); uint256 i; for (i = 0; i < _amounts.length; i++) { require(_amounts[i] > 0); require(_unlockTimes[i] < 10000000000); //update balance in address walletTokenBalance[_tokenAddress][_withdrawalAddress] = walletTokenBalance[_tokenAddress][_withdrawalAddress].add( _amounts[i] ); _id = ++depositId; lockedToken[_id].tokenAddress = _tokenAddress; lockedToken[_id].withdrawalAddress = _withdrawalAddress; lockedToken[_id].tokenAmount = _amounts[i]; lockedToken[_id].unlockTime = _unlockTimes[i]; lockedToken[_id].withdrawn = false; allDepositIds.push(_id); depositsByWithdrawalAddress[_withdrawalAddress].push(_id); //transfer tokens into contract require(Token(_tokenAddress).transferFrom(msg.sender, this, _amounts[i])); } } /** *Extend lock Duration */ function extendLockDuration(uint256 _id, uint256 _unlockTime) public { require(_unlockTime < 10000000000); require(_unlockTime > lockedToken[_id].unlockTime); require(!lockedToken[_id].withdrawn); require(msg.sender == lockedToken[_id].withdrawalAddress); //set new unlock time lockedToken[_id].unlockTime = _unlockTime; } /** *transfer locked tokens */ function transferLocks(uint256 _id, address _receiverAddress) public { require(!lockedToken[_id].withdrawn); require(msg.sender == lockedToken[_id].withdrawalAddress); //decrease sender's token balance walletTokenBalance[lockedToken[_id].tokenAddress][msg.sender] = walletTokenBalance[lockedToken[_id].tokenAddress][ msg.sender ].sub(lockedToken[_id].tokenAmount); //increase receiver's token balance walletTokenBalance[lockedToken[_id].tokenAddress][_receiverAddress] = walletTokenBalance[ lockedToken[_id].tokenAddress ][_receiverAddress].add(lockedToken[_id].tokenAmount); //remove this id from sender address uint256 j; uint256 arrLength = depositsByWithdrawalAddress[lockedToken[_id].withdrawalAddress].length; for (j = 0; j < arrLength; j++) { if (depositsByWithdrawalAddress[lockedToken[_id].withdrawalAddress][j] == _id) { depositsByWithdrawalAddress[lockedToken[_id].withdrawalAddress][j] = depositsByWithdrawalAddress[ lockedToken[_id].withdrawalAddress ][arrLength - 1]; depositsByWithdrawalAddress[lockedToken[_id].withdrawalAddress].length--; break; } } //Assign this id to receiver address lockedToken[_id].withdrawalAddress = _receiverAddress; depositsByWithdrawalAddress[_receiverAddress].push(_id); } /** *withdraw tokens */ function withdrawTokens(uint256 _id) public { require(block.timestamp >= lockedToken[_id].unlockTime); require(msg.sender == lockedToken[_id].withdrawalAddress); require(!lockedToken[_id].withdrawn); lockedToken[_id].withdrawn = true; //update balance in address walletTokenBalance[lockedToken[_id].tokenAddress][msg.sender] = walletTokenBalance[lockedToken[_id].tokenAddress][ msg.sender ].sub(lockedToken[_id].tokenAmount); //remove this id from this address uint256 j; uint256 arrLength = depositsByWithdrawalAddress[lockedToken[_id].withdrawalAddress].length; for (j = 0; j < arrLength; j++) { if (depositsByWithdrawalAddress[lockedToken[_id].withdrawalAddress][j] == _id) { depositsByWithdrawalAddress[lockedToken[_id].withdrawalAddress][j] = depositsByWithdrawalAddress[ lockedToken[_id].withdrawalAddress ][arrLength - 1]; depositsByWithdrawalAddress[lockedToken[_id].withdrawalAddress].length--; break; } } // transfer tokens to wallet address require(Token(lockedToken[_id].tokenAddress).transfer(msg.sender, lockedToken[_id].tokenAmount)); LogWithdrawal(msg.sender, lockedToken[_id].tokenAmount); } /*get total token balance in contract*/ function getTotalTokenBalance(address _tokenAddress) public view returns (uint256) { return Token(_tokenAddress).balanceOf(this); } /*get total token balance by address*/ function getTokenBalanceByAddress(address _tokenAddress, address _walletAddress) public view returns (uint256) { return walletTokenBalance[_tokenAddress][_walletAddress]; } /*get allDepositIds*/ function getAllDepositIds() public view returns (uint256[]) { return allDepositIds; } /*get getDepositDetails*/ function getDepositDetails(uint256 _id) public view returns ( address _tokenAddress, address _withdrawalAddress, uint256 _tokenAmount, uint256 _unlockTime, bool _withdrawn ) { return ( lockedToken[_id].tokenAddress, lockedToken[_id].withdrawalAddress, lockedToken[_id].tokenAmount, lockedToken[_id].unlockTime, lockedToken[_id].withdrawn ); } /*get DepositsByWithdrawalAddress*/ function getDepositsByWithdrawalAddress(address _withdrawalAddress) public view returns (uint256[]) { return depositsByWithdrawalAddress[_withdrawalAddress]; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"},{"name":"_withdrawalAddress","type":"address"},{"name":"_amounts","type":"uint256[]"},{"name":"_unlockTimes","type":"uint256[]"}],"name":"createMultipleLocks","outputs":[{"name":"_id","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_withdrawalAddress","type":"address"}],"name":"getDepositsByWithdrawalAddress","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"}],"name":"withdrawTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenAddress","type":"address"},{"name":"_walletAddress","type":"address"}],"name":"getTokenBalanceByAddress","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_receiverAddress","type":"address"}],"name":"transferLocks","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"depositsByWithdrawalAddress","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAllDepositIds","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_unlockTime","type":"uint256"}],"name":"extendLockDuration","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"},{"name":"_withdrawalAddress","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_unlockTime","type":"uint256"}],"name":"lockTokens","outputs":[{"name":"_id","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"getDepositDetails","outputs":[{"name":"_tokenAddress","type":"address"},{"name":"_withdrawalAddress","type":"address"},{"name":"_tokenAmount","type":"uint256"},{"name":"_unlockTime","type":"uint256"},{"name":"_withdrawn","type":"bool"}],"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":"depositId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenAddress","type":"address"}],"name":"getTotalTokenBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"walletTokenBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"lockedToken","outputs":[{"name":"tokenAddress","type":"address"},{"name":"withdrawalAddress","type":"address"},{"name":"tokenAmount","type":"uint256"},{"name":"unlockTime","type":"uint256"},{"name":"withdrawn","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"allDepositIds","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"SentToAddress","type":"address"},{"indexed":false,"name":"AmountTransferred","type":"uint256"}],"name":"LogWithdrawal","type":"event"}]
Contract Creation Code
60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b6113f8806100316000396000f300606060405236156100d55763ffffffff60e060020a60003504166303a29adf81146100da5780630bd59ad314610193578063315a095d14610206578063347c80ba1461021e5780634c5f7f5414610255578063530680d8146102795780636ba03924146102ad57806376704de0146103145780637d533c1e1461032f578063890db72f1461036c5780638da5cb5b146103bc5780639852099c146103eb578063adad19bd14610410578063b9e7df1c14610441578063bb941cff14610478578063c9028aff146104c8578063f2fde38b146104f0575b600080fd5b34156100e557600080fd5b610181600160a060020a036004803582169160248035909116919060649060443590810190830135806020818102016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284375094965061051195505050505050565b60405190815260200160405180910390f35b341561019e57600080fd5b6101b2600160a060020a03600435166107b8565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156101f25780820151818401525b6020016101d9565b505050509050019250505060405180910390f35b341561021157600080fd5b61021c60043561083c565b005b341561022957600080fd5b610181600160a060020a0360043581169060243516610b6b565b60405190815260200160405180910390f35b341561026057600080fd5b61021c600435600160a060020a0360243516610b98565b005b341561028457600080fd5b610181600160a060020a0360043516602435610e74565b60405190815260200160405180910390f35b34156102b857600080fd5b6101b2610ea6565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156101f25780820151818401525b6020016101d9565b505050509050019250505060405180910390f35b341561031f57600080fd5b61021c600435602435610f05565b005b341561033a57600080fd5b610181600160a060020a0360043581169060243516604435606435610f96565b60405190815260200160405180910390f35b341561037757600080fd5b610382600435611171565b604051600160a060020a0395861681529390941660208401526040808401929092526060830152911515608082015260a001905180910390f35b34156103c757600080fd5b6103cf6111b7565b604051600160a060020a03909116815260200160405180910390f35b34156103f657600080fd5b6101816111c6565b60405190815260200160405180910390f35b341561041b57600080fd5b610181600160a060020a03600435166111cc565b60405190815260200160405180910390f35b341561044c57600080fd5b610181600160a060020a0360043581169060243516611247565b60405190815260200160405180910390f35b341561048357600080fd5b610382600435611264565b604051600160a060020a0395861681529390941660208401526040808401929092526060830152911515608082015260a001905180910390f35b34156104d357600080fd5b6101816004356112a3565b60405190815260200160405180910390f35b34156104fb57600080fd5b61021c600160a060020a03600435166112c6565b005b600080600084511161052257600080fd5b825184511461053057600080fd5b5060005b83518110156107ae57600084828151811061054b57fe5b906020019060200201511161055f57600080fd5b6402540be40083828151811061057157fe5b906020019060200201511061058557600080fd5b6105d084828151811061059457fe5b90602001906020020151600160a060020a038089166000908152600560209081526040808320938b16835292905220549063ffffffff61130e16565b600160a060020a038088166000818152600560209081526040808320948b1680845294825280832095909555600180548101808255808452600490925294909120805473ffffffffffffffffffffffffffffffffffffffff19908116909317815590930180549091169091179055915083818151811061064c57fe5b9060200190602002015160008381526004602052604090206002015582818151811061067457fe5b906020019060200201516000838152600460208190526040909120600381019290925501805460ff1916905560028054600181016106b28382611345565b916000526020600020900160005b5083905550600160a060020a03851660009081526003602052604090208054600181016106ed8382611345565b916000526020600020900160005b5083905550600160a060020a0386166323b872dd333087858151811061071d57fe5b9060200190602002015160006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561077f57600080fd5b6102c65a03f1151561079057600080fd5b5050506040518051905015156107a557600080fd5b5b600101610534565b5b50949350505050565b6107c061136f565b6003600083600160a060020a0316600160a060020a0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561082f57602002820191906000526020600020905b81548152602001906001019080831161081b575b505050505090505b919050565b600081815260046020526040812060030154819042101561085c57600080fd5b60008381526004602052604090206001015433600160a060020a0390811691161461088657600080fd5b6000838152600460208190526040909120015460ff16156108a657600080fd5b6000838152600460208181526040808420928301805460ff1916600117905560028301549254600160a060020a03908116855260058352818520339091168552909152909120546108fc9163ffffffff61132b16565b60008481526004602090815260408083208054600160a060020a039081168552600584528285203382168652845282852095909555600101549093168252600390529081205490925090505b80821015610a7057600083815260046020908152604080832060010154600160a060020a031683526003909152902080548491908490811061098657fe5b906000526020600020900160005b50541415610a6457600083815260046020908152604080832060010154600160a060020a0316835260039091529020805460001983019081106109d357fe5b906000526020600020900160005b5054600084815260046020908152604080832060010154600160a060020a0316835260039091529020805484908110610a1657fe5b906000526020600020900160005b5055600083815260046020908152604080832060010154600160a060020a0316835260039091529020805490610a5e906000198301611345565b50610a70565b5b600190910190610948565b6000838152600460205260408082208054600290910154600160a060020a039091169263a9059cbb9233929190516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610ae557600080fd5b6102c65a03f11515610af657600080fd5b505050604051805190501515610b0b57600080fd5b7fb4214c8c54fc7442f36d3682f59aebaf09358a4431835b30efb29d52cf9e1e91336004600086815260200190815260200160002060020154604051600160a060020a03909216825260208201526040908101905180910390a15b505050565b600160a060020a038083166000908152600560209081526040808320938516835292905220545b92915050565b600082815260046020819052604082200154819060ff1615610bb957600080fd5b60008481526004602052604090206001015433600160a060020a03908116911614610be357600080fd5b600084815260046020908152604080832060028101549054600160a060020a0390811685526005845282852033909116855290925290912054610c2b9163ffffffff61132b16565b60008581526004602090815260408083208054600160a060020a039081168552600580855283862033831687528552838620969096556002820154915481168552948352818420948816845293909152902054610c8d9163ffffffff61130e16565b60008581526004602090815260408083208054600160a060020a039081168552600584528285208982168652845282852095909555600101549093168252600390529081205490925090505b80821015610e0157600084815260046020908152604080832060010154600160a060020a0316835260039091529020805485919084908110610d1757fe5b906000526020600020900160005b50541415610df557600084815260046020908152604080832060010154600160a060020a031683526003909152902080546000198301908110610d6457fe5b906000526020600020900160005b5054600085815260046020908152604080832060010154600160a060020a0316835260039091529020805484908110610da757fe5b906000526020600020900160005b5055600084815260046020908152604080832060010154600160a060020a0316835260039091529020805490610def906000198301611345565b50610e01565b5b600190910190610cd9565b60008481526004602090815260408083206001908101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03891690811790915584526003909252909120805490918101610e5a8382611345565b916000526020600020900160005b50859055505b50505050565b600360205281600052604060002081815481101515610e8f57fe5b906000526020600020900160005b91509150505481565b610eae61136f565b6002805480602002602001604051908101604052809291908181526020018280548015610efa57602002820191906000526020600020905b815481526020019060010190808311610ee6575b505050505090505b90565b6402540be4008110610f1657600080fd5b6000828152600460205260409020600301548111610f3357600080fd5b6000828152600460208190526040909120015460ff1615610f5357600080fd5b60008281526004602052604090206001015433600160a060020a03908116911614610f7d57600080fd5b60008281526004602052604090206003018190555b5050565b6000808311610fa457600080fd5b6402540be4008210610fb557600080fd5b600160a060020a03808616600090815260056020908152604080832093881683529290522054610feb908463ffffffff61130e16565b600160a060020a038087166000818152600560209081526040808320948a168084529482528083209590955560018054810180825580845260049283905295909220805473ffffffffffffffffffffffffffffffffffffffff199081169094178155808301805490941690941790925560028084018890556003840187905592909101805460ff191690558154929350909190810161108a8382611345565b916000526020600020900160005b5082905550600160a060020a03841660009081526003602052604090208054600181016110c58382611345565b916000526020600020900160005b5082905550600160a060020a0385166323b872dd33308660006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561114257600080fd5b6102c65a03f1151561115357600080fd5b50505060405180519050151561116857600080fd5b5b949350505050565b600081815260046020819052604090912080546001820154600283015460038401549390940154600160a060020a039283169492909116929060ff165b91939590929450565b600054600160a060020a031681565b60015481565b600081600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561122557600080fd5b6102c65a03f1151561123657600080fd5b50505060405180519150505b919050565b600560209081526000928352604080842090915290825290205481565b600460208190526000918252604090912080546001820154600283015460038401549390940154600160a060020a039283169492909116929060ff1685565b60028054829081106112b157fe5b906000526020600020900160005b5054905081565b60005433600160a060020a039081169116146112e157600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60008282018381101561132057600080fd5b8091505b5092915050565b60008282111561133a57600080fd5b508082035b92915050565b815481835581811511610b6657600083815260209020610b669181019083016113ab565b5b505050565b60206040519081016040526000815290565b815481835581811511610b6657600083815260209020610b669181019083016113ab565b5b505050565b610f0291905b808211156113c557600081556001016113b1565b5090565b905600a165627a7a723058203aac5cbf4c5a750a5e8a3bd1804c29ef72baf4a0187731df5eda6b2bc02967f80029
Deployed Bytecode
0x606060405236156100d55763ffffffff60e060020a60003504166303a29adf81146100da5780630bd59ad314610193578063315a095d14610206578063347c80ba1461021e5780634c5f7f5414610255578063530680d8146102795780636ba03924146102ad57806376704de0146103145780637d533c1e1461032f578063890db72f1461036c5780638da5cb5b146103bc5780639852099c146103eb578063adad19bd14610410578063b9e7df1c14610441578063bb941cff14610478578063c9028aff146104c8578063f2fde38b146104f0575b600080fd5b34156100e557600080fd5b610181600160a060020a036004803582169160248035909116919060649060443590810190830135806020818102016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284375094965061051195505050505050565b60405190815260200160405180910390f35b341561019e57600080fd5b6101b2600160a060020a03600435166107b8565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156101f25780820151818401525b6020016101d9565b505050509050019250505060405180910390f35b341561021157600080fd5b61021c60043561083c565b005b341561022957600080fd5b610181600160a060020a0360043581169060243516610b6b565b60405190815260200160405180910390f35b341561026057600080fd5b61021c600435600160a060020a0360243516610b98565b005b341561028457600080fd5b610181600160a060020a0360043516602435610e74565b60405190815260200160405180910390f35b34156102b857600080fd5b6101b2610ea6565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156101f25780820151818401525b6020016101d9565b505050509050019250505060405180910390f35b341561031f57600080fd5b61021c600435602435610f05565b005b341561033a57600080fd5b610181600160a060020a0360043581169060243516604435606435610f96565b60405190815260200160405180910390f35b341561037757600080fd5b610382600435611171565b604051600160a060020a0395861681529390941660208401526040808401929092526060830152911515608082015260a001905180910390f35b34156103c757600080fd5b6103cf6111b7565b604051600160a060020a03909116815260200160405180910390f35b34156103f657600080fd5b6101816111c6565b60405190815260200160405180910390f35b341561041b57600080fd5b610181600160a060020a03600435166111cc565b60405190815260200160405180910390f35b341561044c57600080fd5b610181600160a060020a0360043581169060243516611247565b60405190815260200160405180910390f35b341561048357600080fd5b610382600435611264565b604051600160a060020a0395861681529390941660208401526040808401929092526060830152911515608082015260a001905180910390f35b34156104d357600080fd5b6101816004356112a3565b60405190815260200160405180910390f35b34156104fb57600080fd5b61021c600160a060020a03600435166112c6565b005b600080600084511161052257600080fd5b825184511461053057600080fd5b5060005b83518110156107ae57600084828151811061054b57fe5b906020019060200201511161055f57600080fd5b6402540be40083828151811061057157fe5b906020019060200201511061058557600080fd5b6105d084828151811061059457fe5b90602001906020020151600160a060020a038089166000908152600560209081526040808320938b16835292905220549063ffffffff61130e16565b600160a060020a038088166000818152600560209081526040808320948b1680845294825280832095909555600180548101808255808452600490925294909120805473ffffffffffffffffffffffffffffffffffffffff19908116909317815590930180549091169091179055915083818151811061064c57fe5b9060200190602002015160008381526004602052604090206002015582818151811061067457fe5b906020019060200201516000838152600460208190526040909120600381019290925501805460ff1916905560028054600181016106b28382611345565b916000526020600020900160005b5083905550600160a060020a03851660009081526003602052604090208054600181016106ed8382611345565b916000526020600020900160005b5083905550600160a060020a0386166323b872dd333087858151811061071d57fe5b9060200190602002015160006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561077f57600080fd5b6102c65a03f1151561079057600080fd5b5050506040518051905015156107a557600080fd5b5b600101610534565b5b50949350505050565b6107c061136f565b6003600083600160a060020a0316600160a060020a0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561082f57602002820191906000526020600020905b81548152602001906001019080831161081b575b505050505090505b919050565b600081815260046020526040812060030154819042101561085c57600080fd5b60008381526004602052604090206001015433600160a060020a0390811691161461088657600080fd5b6000838152600460208190526040909120015460ff16156108a657600080fd5b6000838152600460208181526040808420928301805460ff1916600117905560028301549254600160a060020a03908116855260058352818520339091168552909152909120546108fc9163ffffffff61132b16565b60008481526004602090815260408083208054600160a060020a039081168552600584528285203382168652845282852095909555600101549093168252600390529081205490925090505b80821015610a7057600083815260046020908152604080832060010154600160a060020a031683526003909152902080548491908490811061098657fe5b906000526020600020900160005b50541415610a6457600083815260046020908152604080832060010154600160a060020a0316835260039091529020805460001983019081106109d357fe5b906000526020600020900160005b5054600084815260046020908152604080832060010154600160a060020a0316835260039091529020805484908110610a1657fe5b906000526020600020900160005b5055600083815260046020908152604080832060010154600160a060020a0316835260039091529020805490610a5e906000198301611345565b50610a70565b5b600190910190610948565b6000838152600460205260408082208054600290910154600160a060020a039091169263a9059cbb9233929190516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610ae557600080fd5b6102c65a03f11515610af657600080fd5b505050604051805190501515610b0b57600080fd5b7fb4214c8c54fc7442f36d3682f59aebaf09358a4431835b30efb29d52cf9e1e91336004600086815260200190815260200160002060020154604051600160a060020a03909216825260208201526040908101905180910390a15b505050565b600160a060020a038083166000908152600560209081526040808320938516835292905220545b92915050565b600082815260046020819052604082200154819060ff1615610bb957600080fd5b60008481526004602052604090206001015433600160a060020a03908116911614610be357600080fd5b600084815260046020908152604080832060028101549054600160a060020a0390811685526005845282852033909116855290925290912054610c2b9163ffffffff61132b16565b60008581526004602090815260408083208054600160a060020a039081168552600580855283862033831687528552838620969096556002820154915481168552948352818420948816845293909152902054610c8d9163ffffffff61130e16565b60008581526004602090815260408083208054600160a060020a039081168552600584528285208982168652845282852095909555600101549093168252600390529081205490925090505b80821015610e0157600084815260046020908152604080832060010154600160a060020a0316835260039091529020805485919084908110610d1757fe5b906000526020600020900160005b50541415610df557600084815260046020908152604080832060010154600160a060020a031683526003909152902080546000198301908110610d6457fe5b906000526020600020900160005b5054600085815260046020908152604080832060010154600160a060020a0316835260039091529020805484908110610da757fe5b906000526020600020900160005b5055600084815260046020908152604080832060010154600160a060020a0316835260039091529020805490610def906000198301611345565b50610e01565b5b600190910190610cd9565b60008481526004602090815260408083206001908101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03891690811790915584526003909252909120805490918101610e5a8382611345565b916000526020600020900160005b50859055505b50505050565b600360205281600052604060002081815481101515610e8f57fe5b906000526020600020900160005b91509150505481565b610eae61136f565b6002805480602002602001604051908101604052809291908181526020018280548015610efa57602002820191906000526020600020905b815481526020019060010190808311610ee6575b505050505090505b90565b6402540be4008110610f1657600080fd5b6000828152600460205260409020600301548111610f3357600080fd5b6000828152600460208190526040909120015460ff1615610f5357600080fd5b60008281526004602052604090206001015433600160a060020a03908116911614610f7d57600080fd5b60008281526004602052604090206003018190555b5050565b6000808311610fa457600080fd5b6402540be4008210610fb557600080fd5b600160a060020a03808616600090815260056020908152604080832093881683529290522054610feb908463ffffffff61130e16565b600160a060020a038087166000818152600560209081526040808320948a168084529482528083209590955560018054810180825580845260049283905295909220805473ffffffffffffffffffffffffffffffffffffffff199081169094178155808301805490941690941790925560028084018890556003840187905592909101805460ff191690558154929350909190810161108a8382611345565b916000526020600020900160005b5082905550600160a060020a03841660009081526003602052604090208054600181016110c58382611345565b916000526020600020900160005b5082905550600160a060020a0385166323b872dd33308660006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561114257600080fd5b6102c65a03f1151561115357600080fd5b50505060405180519050151561116857600080fd5b5b949350505050565b600081815260046020819052604090912080546001820154600283015460038401549390940154600160a060020a039283169492909116929060ff165b91939590929450565b600054600160a060020a031681565b60015481565b600081600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561122557600080fd5b6102c65a03f1151561123657600080fd5b50505060405180519150505b919050565b600560209081526000928352604080842090915290825290205481565b600460208190526000918252604090912080546001820154600283015460038401549390940154600160a060020a039283169492909116929060ff1685565b60028054829081106112b157fe5b906000526020600020900160005b5054905081565b60005433600160a060020a039081169116146112e157600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60008282018381101561132057600080fd5b8091505b5092915050565b60008282111561133a57600080fd5b508082035b92915050565b815481835581811511610b6657600083815260209020610b669181019083016113ab565b5b505050565b60206040519081016040526000815290565b815481835581811511610b6657600083815260209020610b669181019083016113ab565b5b505050565b610f0291905b808211156113c557600081556001016113b1565b5090565b905600a165627a7a723058203aac5cbf4c5a750a5e8a3bd1804c29ef72baf4a0187731df5eda6b2bc02967f80029
Deployed Bytecode Sourcemap
1772:7078:0:-;;;;;;;;-1:-1:-1;;;1772:7078:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3345:1130;;;;;;;;;;-1:-1:-1;;;;;3345:1130:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3345:1130:0;;-1:-1:-1;3345:1130:0;;-1:-1:-1;;;;;;3345:1130:0;;;;;;;;;;;;;;;;8680:167;;;;;;;;;;-1:-1:-1;;;;;8680:167:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;8:100;52:2;45:3;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;6350:1262:0;;;;;;;;;;;;;;;;7848:180;;;;;;;;;;-1:-1:-1;;;;;7848:180:0;;;;;;;;;;;;;;;;;;;;;;;;;4926:1383;;;;;;;;;;;;-1:-1:-1;;;;;4926:1383:0;;;;;;;2092:64;;;;;;;;;;-1:-1:-1;;;;;2092:64:0;;;;;;;;;;;;;;;;;;;;;;8059:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;8:100;52:2;45:3;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;4521:357:0;;;;;;;;;;;;;;;;;;2397:901;;;;;;;;;;-1:-1:-1;;;;;2397:901:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8187:448;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8187:448:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1510:20;;;;;;;;;;;;;;;-1:-1:-1;;;;;1510:20:0;;;;;;;;;;;;;;2028:24;;;;;;;;;;;;;;;;;;;;;;;;;;;7661:139;;;;;;;;;;-1:-1:-1;;;;;7661:139:0;;;;;;;;;;;;;;;;;;;;2210:73;;;;;;;;;;-1:-1:-1;;;;;2210:73:0;;;;;;;;;;;;;;;;;;;;;;;;;2161:44;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2161:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2057:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1674:91;;;;;;;;;;-1:-1:-1;;;;;1674:91:0;;;;;;;3345:1130;3510:11;3621:9;3556:1;3538:8;:15;:19;3530:28;;;;;;3592:12;:19;3573:8;:15;:38;3565:47;;;;;;-1:-1:-1;3646:1:0;3637:833;3653:8;:15;3649:1;:19;3637:833;;;3706:1;3692:8;3701:1;3692:11;;;;;;;;;;;;;;;;:15;3684:24;;;;;;3743:11;3725:12;3738:1;3725:15;;;;;;;;;;;;;;;;:29;3717:38;;;;;;3857:88;3925:8;3934:1;3925:11;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3857:33:0;;;;;;;:18;:33;;;;;;;;:53;;;;;;;;;;;:88;:57;:88;:::i;:::-;-1:-1:-1;;;;;3801:33:0;;;;;;;:18;:33;;;;;;;;:53;;;;;;;;;;;;:144;;;;3964:9;3962:11;;;;;;;3982:16;;;:11;:16;;;;;;;:45;;-1:-1:-1;;3982:45:0;;;;;;;;4036:34;;;:55;;;;;;;;;;3962:11;-1:-1:-1;4131:8:0;4140:1;4131:8;:11;;;;;;;;;;;;;;;4100:16;;;;:11;:16;;;;;:28;;:42;4181:12;4194:1;4181:12;:15;;;;;;;;;;;;;;;4151:16;;;;:11;:16;;;;;;;;:27;;;:45;;;;4205:26;:34;;-1:-1:-1;;4205:34:0;;;4250:13;:23;;4205:34;4250:23;;;:13;:23;;:::i;:::-;;;;;;;;;;;-1:-1:-1;4250:23:0;;;-1:-1:-1;;;;;;4282:47:0;;;;;;:27;:47;;;;;:57;;;;;;:47;:57;;:::i;:::-;;;;;;;;;;;-1:-1:-1;4282:57:0;;;-1:-1:-1;;;;;;4397:33:0;;;4431:10;4443:4;4449:8;4458:1;4449:8;:11;;;;;;;;;;;;;;;4397:64;;;;;;;;-1:-1:-1;;;4397:64:0;;;;;;-1:-1:-1;;;;;4397:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4389:73;;;;;;;;3637:833;3670:3;;3637:833;;;3345:1130;;;;;;;;:::o;8680:167::-;8769:9;;:::i;:::-;8794:27;:47;8822:18;-1:-1:-1;;;;;8794:47:0;-1:-1:-1;;;;;8794:47:0;;;;;;;;;;;;8787:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8680:167;;;;:::o;6350:1262::-;6869:9;6428:16;;;:11;:16;;;;;:27;;;6869:9;;6409:15;:46;;6401:55;;;;;;6485:16;;;;:11;:16;;;;;:34;;;6471:10;-1:-1:-1;;;;;6471:48:0;;;6485:34;;6471:48;6463:57;;;;;;6536:16;;;;:11;:16;;;;;;;;:26;;;;6535:27;6527:36;;;;;;6572:16;;;;:11;:16;;;;;;;;:26;;;:33;;-1:-1:-1;;6572:33:0;6601:4;6572:33;;;6791:28;;;;6730:29;;-1:-1:-1;;;;;6730:29:0;;;6711:49;;:18;:49;;;;;6769:10;6711:75;;;;;;;;;;;;:109;;;:79;:109;:::i;:::-;6647:49;6666:16;;;:11;:16;;;;;;;;:29;;-1:-1:-1;;;;;6666:29:0;;;6647:49;;:18;:49;;;;;6697:10;6647:61;;;;;;;;;:173;;;;6666:29;6933:34;;;;;6905:63;;:27;:63;;;;;:70;6647:49;;-1:-1:-1;6905:70:0;-1:-1:-1;6982:416:0;6998:9;6994:1;:13;6982:416;;;7027:63;7055:16;;;:11;:16;;;;;;;;:34;;;-1:-1:-1;;;;;7055:34:0;7027:63;;:27;:63;;;;;:66;;7097:3;;7027:63;7091:1;;7027:66;;;;;;;;;;;;;;;;;;:73;7023:368;;;7182:85;7222:16;;;:11;:16;;;;;;;;:34;;;-1:-1:-1;;;;;7222:34:0;7182:85;;:27;:85;;;;;:100;;-1:-1:-1;;7268:13:0;;;7182:100;;;;;;;;;;;;;;;;-1:-1:-1;7182:100:0;7113:63;7141:16;;;:11;:16;;;;;;;;:34;;;-1:-1:-1;;;;;7141:34:0;7113:63;;:27;:63;;;;;:66;;7177:1;;7113:66;;;;;;;;;;;;;;;;-1:-1:-1;7113:169:0;7293:63;7321:16;;;:11;:16;;;;;;;;:34;;;-1:-1:-1;;;;;7321:34:0;7293:63;;:27;:63;;;;;:72;;;;;-1:-1:-1;;7293:72:0;;;:::i;:::-;;7376:5;;7023:368;6982:416;7009:3;;;;;6982:416;;;7462:16;;;;:11;:16;;;;;;:29;;7514:28;;;;;-1:-1:-1;;;;;7462:29:0;;;;7456:45;;7502:10;;7514:28;7462:16;7456:87;;;;;;-1:-1:-1;;;7456:87:0;;;;;;-1:-1:-1;;;;;7456:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7448:96;;;;;;;;7551:55;7565:10;7577:11;:16;7589:3;7577:16;;;;;;;;;;;:28;;;7551:55;;-1:-1:-1;;;;;7551:55:0;;;;;;;;;;;;;;;;;;;;6350:1262;;;;:::o;7848:180::-;-1:-1:-1;;;;;7973:33:0;;;7950:7;7973:33;;;:18;:33;;;;;;;;:49;;;;;;;;;;7848:180;;;;;:::o;4926:1383::-;5609:9;5011:16;;;:11;:16;;;;;;;:26;;5609:9;;5011:26;;5010:27;5002:36;;;;;;5067:16;;;;:11;:16;;;;;:34;;;5053:10;-1:-1:-1;;;;;5053:48:0;;;5067:34;;5053:48;5045:57;;;;;;5294:16;;;;:11;:16;;;;;;;;:28;;;;5233:29;;-1:-1:-1;;;;;5233:29:0;;;5214:49;;:18;:49;;;;;5272:10;5214:75;;;;;;;;;;;;:109;;;:79;:109;:::i;:::-;5150:49;5169:16;;;:11;:16;;;;;;;;:29;;-1:-1:-1;;;;;5169:29:0;;;5150:49;;:18;:49;;;;;;5200:10;5150:61;;;;;;;;;:173;;;;5529:28;;;;5470:29;;;;5443:63;;;;;;;;:81;;;;;;;;;;;;:115;;;:85;:115;:::i;:::-;5373:49;5392:16;;;:11;:16;;;;;;;;:29;;-1:-1:-1;;;;;5392:29:0;;;5373:49;;:18;:49;;;;;:67;;;;;;;;;;:185;;;;5392:29;5673:34;;;;;5645:63;;:27;:63;;;;;:70;5373:49;;-1:-1:-1;5645:70:0;-1:-1:-1;5722:416:0;5738:9;5734:1;:13;5722:416;;;5767:63;5795:16;;;:11;:16;;;;;;;;:34;;;-1:-1:-1;;;;;5795:34:0;5767:63;;:27;:63;;;;;:66;;5837:3;;5767:63;5831:1;;5767:66;;;;;;;;;;;;;;;;;;:73;5763:368;;;5922:85;5962:16;;;:11;:16;;;;;;;;:34;;;-1:-1:-1;;;;;5962:34:0;5922:85;;:27;:85;;;;;:100;;-1:-1:-1;;6008:13:0;;;5922:100;;;;;;;;;;;;;;;;-1:-1:-1;5922:100:0;5853:63;5881:16;;;:11;:16;;;;;;;;:34;;;-1:-1:-1;;;;;5881:34:0;5853:63;;:27;:63;;;;;:66;;5917:1;;5853:66;;;;;;;;;;;;;;;;-1:-1:-1;5853:169:0;6033:63;6061:16;;;:11;:16;;;;;;;;:34;;;-1:-1:-1;;;;;6061:34:0;6033:63;;:27;:63;;;;;:72;;;;;-1:-1:-1;;6033:72:0;;;:::i;:::-;;6116:5;;5763:368;5722:416;5749:3;;;;;5722:416;;;6188:16;;;;:11;:16;;;;;;;;:34;;;;:53;;-1:-1:-1;;6188:53:0;-1:-1:-1;;;;;6188:53:0;;;;;;;;6248:45;;:27;:45;;;;;;:55;;:45;;:55;;;:45;:55;;:::i;:::-;;;;;;;;;;;-1:-1:-1;6248:55:0;;;-1:-1:-1;4926:1383:0;;;;;:::o;2092:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8059:93::-;8108:9;;:::i;:::-;8133:13;8126:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8059:93;;:::o;4521:357::-;4619:11;4605:25;;4597:34;;;;;;4660:16;;;;:11;:16;;;;;:27;;;4646:41;;4638:50;;;;;;4704:16;;;;:11;:16;;;;;;;;:26;;;;4703:27;4695:36;;;;;;4760:16;;;;:11;:16;;;;;:34;;;4746:10;-1:-1:-1;;;;;4746:48:0;;;4760:34;;4746:48;4738:57;;;;;;4831:16;;;;:11;:16;;;;;:27;;:41;;;4521:357;;;:::o;2397:901::-;2547:11;2575;;;2567:20;;;;;;2616:11;2602:25;;2594:34;;;;;;-1:-1:-1;;;;;2726:33:0;;;;;;;:18;:33;;;;;;;;:53;;;;;;;;;;:80;;2792:7;2726:80;:57;:80;:::i;:::-;-1:-1:-1;;;;;2670:33:0;;;;;;;:18;:33;;;;;;;;:53;;;;;;;;;;;;:136;;;;2823:9;2821:11;;;;;;;2839:16;;;:11;:16;;;;;;;;:45;;-1:-1:-1;;2839:45:0;;;;;;;;2891:34;;;:55;;;;;;;;;;;2953:28;;;;:38;;;2998:27;;;:41;;;3046:26;;;;:34;;-1:-1:-1;;3046:34:0;;;3089:23;;2821:11;;-1:-1:-1;2953:28:0;;3089:23;;;;2953:28;3089:23;;:::i;:::-;;;;;;;;;;;-1:-1:-1;3089:23:0;;;-1:-1:-1;;;;;;3119:47:0;;;;;;:27;:47;;;;;:57;;;;;;:47;:57;;:::i;:::-;;;;;;;;;;;-1:-1:-1;3119:57:0;;;-1:-1:-1;;;;;;3231:33:0;;;3265:10;3277:4;3283:7;3231:60;;;;;;;;-1:-1:-1;;;3231:60:0;;;;;;-1:-1:-1;;;;;3231:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3223:69;;;;;;;;2397:901;;;;;;;:::o;8187:448::-;8271:21;8442:16;;;:11;:16;;;;;;;;:29;;;8480:34;;;8523:28;;;;8560:27;;;;8596:26;;;;;-1:-1:-1;;;;;8442:29:0;;;;8480:34;;;;;8560:27;8596:26;;8187:448;;;;;;;;:::o;1510:20::-;;;-1:-1:-1;;;;;1510:20:0;;:::o;2028:24::-;;;;:::o;7661:139::-;7735:7;7764:13;-1:-1:-1;;;;;7758:30:0;;7789:4;7758:36;;;;;;;;-1:-1:-1;;;7758:36:0;;;;;;-1:-1:-1;;;;;7758:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7661:139:0;;;;:::o;2210:73::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;2161:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2161:44:0;;;;;;;;;;;;;:::o;2057:30::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2057:30:0;;-1:-1:-1;2057:30:0;:::o;1674:91::-;1648:5;;1634:10;-1:-1:-1;;;;;1634:19:0;;;1648:5;;1634:19;1626:28;;;;;;1743:5;:16;;-1:-1:-1;;1743:16:0;-1:-1:-1;;;;;1743:16:0;;;;;1661:1;1674:91;;:::o;1174:138::-;1236:7;1264:5;;;1284:6;;;;1276:15;;;;;;1305:1;1298:8;;1174:138;;;;;;:::o;1050:118::-;1112:7;1136:6;;;;1128:15;;;;;;-1:-1:-1;1157:5:0;;;1050:118;;;;;:::o;1772:7078::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
bzzr://3aac5cbf4c5a750a5e8a3bd1804c29ef72baf4a0187731df5eda6b2bc02967f8
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.