Feature Tip: Add private address tag to any address under My Name Tag !
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
|
|||||
---|---|---|---|---|---|---|---|---|---|
Init Controller | 11481404 | 1504 days ago | IN | 0 ETH | 0.00392792 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
WalletImpl
Compiler Version
v0.7.0+commit.9e61f92b
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-08-25 */ // SPDX-License-Identifier: Apache-2.0 // Copyright 2017 Loopring Technology Limited. pragma solidity ^0.7.0; /// @title Ownable /// @author Brecht Devos - <[email protected]> /// @dev The Ownable contract has an owner address, and provides basic /// authorization control functions, this simplifies the implementation of /// "user permissions". contract Ownable { address public owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /// @dev The Ownable constructor sets the original `owner` of the contract /// to the sender. constructor() { owner = msg.sender; } /// @dev Throws if called by any account other than the owner. modifier onlyOwner() { require(msg.sender == owner, "UNAUTHORIZED"); _; } /// @dev Allows the current owner to transfer control of the contract to a /// new owner. /// @param newOwner The address to transfer ownership to. function transferOwnership( address newOwner ) public virtual onlyOwner { require(newOwner != address(0), "ZERO_ADDRESS"); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } function renounceOwnership() public onlyOwner { emit OwnershipTransferred(owner, address(0)); owner = address(0); } } // Copyright 2017 Loopring Technology Limited. /// @title WalletRegistry /// @dev A registry for wallets. /// @author Daniel Wang - <[email protected]> interface WalletRegistry { function registerWallet(address wallet) external; function isWalletRegistered(address addr) external view returns (bool); function numOfWallets() external view returns (uint); } // Copyright 2017 Loopring Technology Limited. // Copyright 2017 Loopring Technology Limited. /// @title ModuleRegistry /// @dev A registry for modules. /// /// @author Daniel Wang - <[email protected]> interface ModuleRegistry { /// @dev Registers and enables a new module. function registerModule(address module) external; /// @dev Disables a module function disableModule(address module) external; /// @dev Returns true if the module is registered and enabled. function isModuleEnabled(address module) external view returns (bool); /// @dev Returns the list of enabled modules. function enabledModules() external view returns (address[] memory _modules); /// @dev Returns the number of enbaled modules. function numOfEnabledModules() external view returns (uint); /// @dev Returns true if the module is ever registered. function isModuleRegistered(address module) external view returns (bool); } /// @title Controller /// /// @author Daniel Wang - <[email protected]> abstract contract Controller { ModuleRegistry public moduleRegistry; WalletRegistry public walletRegistry; address public walletFactory; } // Copyright 2017 Loopring Technology Limited. /// @title ERC20 Token Interface /// @dev see https://github.com/ethereum/EIPs/issues/20 /// @author Daniel Wang - <[email protected]> abstract contract ERC20 { function totalSupply() public view virtual returns (uint); function balanceOf( address who ) public view virtual returns (uint); function allowance( address owner, address spender ) public view virtual returns (uint); function transfer( address to, uint value ) public virtual returns (bool); function transferFrom( address from, address to, uint value ) public virtual returns (bool); function approve( address spender, uint value ) public virtual returns (bool); } // Copyright 2017 Loopring Technology Limited. // Copyright 2017 Loopring Technology Limited. // Copyright 2017 Loopring Technology Limited. /// @title Module /// @dev Base contract for all smart wallet modules. /// /// @author Daniel Wang - <[email protected]> /// /// The design of this contract is inspired by Argent's contract codebase: /// https://github.com/argentlabs/argent-contracts interface Module { /// @dev Activates the module for the given wallet (msg.sender) after the module is added. /// Warning: this method shall ONLY be callable by a wallet. function activate() external; /// @dev Deactivates the module for the given wallet (msg.sender) before the module is removed. /// Warning: this method shall ONLY be callable by a wallet. function deactivate() external; } // Copyright 2017 Loopring Technology Limited. /// @title Wallet /// @dev Base contract for smart wallets. /// Sub-contracts must NOT use non-default constructor to initialize /// wallet states, instead, `init` shall be used. This is to enable /// proxies to be deployed in front of the real wallet contract for /// saving gas. /// /// @author Daniel Wang - <[email protected]> /// /// The design of this contract is inspired by Argent's contract codebase: /// https://github.com/argentlabs/argent-contracts interface Wallet { function version() external pure returns (string memory); function owner() external view returns (address); /// @dev Set a new owner. function setOwner(address newOwner) external; /// @dev Adds a new module. The `init` method of the module /// will be called with `address(this)` as the parameter. /// This method must throw if the module has already been added. /// @param _module The module's address. function addModule(address _module) external; /// @dev Removes an existing module. This method must throw if the module /// has NOT been added or the module is the wallet's only module. /// @param _module The module's address. function removeModule(address _module) external; /// @dev Checks if a module has been added to this wallet. /// @param _module The module to check. /// @return True if the module exists; False otherwise. function hasModule(address _module) external view returns (bool); /// @dev Binds a method from the given module to this /// wallet so the method can be invoked using this wallet's default /// function. /// Note that this method must throw when the given module has /// not been added to this wallet. /// @param _method The method's 4-byte selector. /// @param _module The module's address. Use address(0) to unbind the method. function bindMethod(bytes4 _method, address _module) external; /// @dev Returns the module the given method has been bound to. /// @param _method The method's 4-byte selector. /// @return _module The address of the bound module. If no binding exists, /// returns address(0) instead. function boundMethodModule(bytes4 _method) external view returns (address _module); /// @dev Performs generic transactions. Any module that has been added to this /// wallet can use this method to transact on any third-party contract with /// msg.sender as this wallet itself. /// /// This method will emit `Transacted` event if it doesn't throw. /// /// Note: this method must ONLY allow invocations from a module that has /// been added to this wallet. The wallet owner shall NOT be permitted /// to call this method directly. /// /// @param mode The transaction mode, 1 for CALL, 2 for DELEGATECALL. /// @param to The desitination address. /// @param value The amount of Ether to transfer. /// @param data The data to send over using `to.call{value: value}(data)` /// @return returnData The transaction's return value. function transact( uint8 mode, address to, uint value, bytes calldata data ) external returns (bytes memory returnData); } // Copyright 2017 Loopring Technology Limited. /// @title ReentrancyGuard /// @author Brecht Devos - <[email protected]> /// @dev Exposes a modifier that guards a function against reentrancy /// Changing the value of the same storage value multiple times in a transaction /// is cheap (starting from Istanbul) so there is no need to minimize /// the number of times the value is changed contract ReentrancyGuard { //The default value must be 0 in order to work behind a proxy. uint private _guardValue; modifier nonReentrant() { require(_guardValue == 0, "REENTRANCY"); _guardValue = 1; _; _guardValue = 0; } } /// @title BaseWallet /// @dev This contract provides basic implementation for a Wallet. /// /// @author Daniel Wang - <[email protected]> /// /// The design of this contract is inspired by Argent's contract codebase: /// https://github.com/argentlabs/argent-contracts abstract contract BaseWallet is ReentrancyGuard, Wallet { // WARNING: do not delete wallet state data to make this implementation // compatible with early versions. // // ----- DATA LAYOUT BEGINS ----- address internal _owner; mapping (address => bool) private modules; Controller public controller; mapping (bytes4 => address) internal methodToModule; // ----- DATA LAYOUT ENDS ----- event OwnerChanged (address newOwner); event ControllerChanged (address newController); event ModuleAdded (address module); event ModuleRemoved (address module); event MethodBound (bytes4 method, address module); event WalletSetup (address owner); event Transacted( address module, address to, uint value, bytes data ); modifier onlyFromModule { require(modules[msg.sender], "MODULE_UNAUTHORIZED"); _; } modifier onlyFromFactory { require( msg.sender == controller.walletFactory(), "UNAUTHORIZED" ); _; } /// @dev We need to make sure the Factory address cannot be changed without wallet owner's /// explicit authorization. modifier onlyFromFactoryOrModule { require( modules[msg.sender] || msg.sender == controller.walletFactory(), "UNAUTHORIZED" ); _; } /// @dev Set up this wallet by assigning an original owner /// /// Note that calling this method more than once will throw. /// /// @param _initialOwner The owner of this wallet, must not be address(0). function initOwner( address _initialOwner ) external onlyFromFactory nonReentrant { require(controller != Controller(0), "NO_CONTROLLER"); require(_owner == address(0), "INITIALIZED_ALREADY"); require(_initialOwner != address(0), "ZERO_ADDRESS"); _owner = _initialOwner; emit WalletSetup(_initialOwner); } /// @dev Set up this wallet by assigning an controller. /// /// Note that calling this method more than once will throw. /// And this method must be invoked before owner is initialized /// /// @param _controller The Controller instance. function initController( Controller _controller ) external nonReentrant { require( _owner == address(0) && controller == Controller(0) && _controller != Controller(0), "CONTROLLER_INIT_FAILED" ); controller = _controller; } function owner() override external view returns (address) { return _owner; } function setOwner(address newOwner) external override nonReentrant onlyFromModule { require(newOwner != address(0), "ZERO_ADDRESS"); require(newOwner != address(this), "PROHIBITED"); require(newOwner != _owner, "SAME_ADDRESS"); _owner = newOwner; emit OwnerChanged(newOwner); } function setController(Controller newController) external nonReentrant onlyFromModule { require(newController != controller, "SAME_CONTROLLER"); require(newController != Controller(0), "INVALID_CONTROLLER"); controller = newController; emit ControllerChanged(address(newController)); } function addModule(address _module) external override onlyFromFactoryOrModule { addModuleInternal(_module); } function removeModule(address _module) external override onlyFromModule { // Allow deactivate to fail to make sure the module can be removed require(modules[_module], "MODULE_NOT_EXISTS"); try Module(_module).deactivate() {} catch {} delete modules[_module]; emit ModuleRemoved(_module); } function hasModule(address _module) external view override returns (bool) { return modules[_module]; } function bindMethod(bytes4 _method, address _module) external override onlyFromModule { require(_method != bytes4(0), "BAD_METHOD"); if (_module != address(0)) { require(modules[_module], "MODULE_UNAUTHORIZED"); } methodToModule[_method] = _module; emit MethodBound(_method, _module); } function boundMethodModule(bytes4 _method) external view override returns (address) { return methodToModule[_method]; } function transact( uint8 mode, address to, uint value, bytes calldata data ) external override onlyFromFactoryOrModule returns (bytes memory returnData) { require( !controller.moduleRegistry().isModuleRegistered(to), "TRANSACT_ON_MODULE_DISALLOWED" ); bool success; (success, returnData) = nonReentrantCall(mode, to, value, data); if (!success) { assembly { returndatacopy(0, 0, returndatasize()) revert(0, returndatasize()) } } emit Transacted(msg.sender, to, value, data); } function addModuleInternal(address _module) internal { require(_module != address(0), "NULL_MODULE"); require(modules[_module] == false, "MODULE_EXISTS"); require( controller.moduleRegistry().isModuleEnabled(_module), "INVALID_MODULE" ); modules[_module] = true; emit ModuleAdded(_module); Module(_module).activate(); } receive() external payable { } /// @dev This default function can receive Ether or perform queries to modules /// using bound methods. fallback() external payable { address module = methodToModule[msg.sig]; require(modules[module], "MODULE_UNAUTHORIZED"); (bool success, bytes memory returnData) = module.call{value: msg.value}(msg.data); assembly { switch success case 0 { revert(add(returnData, 32), mload(returnData)) } default { return(add(returnData, 32), mload(returnData)) } } } // This call is introduced to support reentrany check. // The caller shall NOT have the nonReentrant modifier. function nonReentrantCall( uint8 mode, address target, uint value, bytes memory data ) private nonReentrant returns ( bool success, bytes memory returnData ) { if (mode == 1) { // solium-disable-next-line security/no-call-value (success, returnData) = target.call{value: value}(data); } else if (mode == 2) { // solium-disable-next-line security/no-call-value (success, returnData) = target.delegatecall(data); } else if (mode == 3) { require(value == 0, "INVALID_VALUE"); // solium-disable-next-line security/no-call-value (success, returnData) = target.staticcall(data); } else { revert("UNSUPPORTED_MODE"); } } } /// @title WalletImpl contract WalletImpl is BaseWallet { function version() external override pure returns (string memory) { // 使用中国省会作为别名 return "1.1.5 (shenyang)"; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newController","type":"address"}],"name":"ControllerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes4","name":"method","type":"bytes4"},{"indexed":false,"internalType":"address","name":"module","type":"address"}],"name":"MethodBound","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"module","type":"address"}],"name":"ModuleAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"module","type":"address"}],"name":"ModuleRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"module","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"Transacted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"WalletSetup","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"_module","type":"address"}],"name":"addModule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_method","type":"bytes4"},{"internalType":"address","name":"_module","type":"address"}],"name":"bindMethod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_method","type":"bytes4"}],"name":"boundMethodModule","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"controller","outputs":[{"internalType":"contract Controller","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_module","type":"address"}],"name":"hasModule","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract Controller","name":"_controller","type":"address"}],"name":"initController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_initialOwner","type":"address"}],"name":"initOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_module","type":"address"}],"name":"removeModule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract Controller","name":"newController","type":"address"}],"name":"setController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"mode","type":"uint8"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transact","outputs":[{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b506118f2806100206000396000f3fe6080604052600436106100c65760003560e01c806392eefe9b1161007f578063c7b2e59611610059578063c7b2e5961461046a578063cf38db69146104b1578063f77c4791146104e5578063fb01cc36146104fa576100cd565b806392eefe9b146103c1578063a0632461146103f4578063b149206e14610427576100cd565b80630d009297146101cf57806313af4035146102045780631ed86f191461023757806354fd4d501461026a5780637122b74c146102f45780638da5cb5b14610390576100cd565b366100cd57005b600080356001600160e01b0319168152600460209081526040808320546001600160a01b031680845260029092529091205460ff16610149576040805162461bcd60e51b81526020600482015260136024820152721353d115531157d5539055551213d492569151606a1b604482015290519081900360640190fd5b60006060826001600160a01b031634600036604051808383808284376040519201945060009350909150508083038185875af1925050503d80600081146101ac576040519150601f19603f3d011682016040523d82523d6000602084013e6101b1565b606091505b509150915081600081146101c757815160208301f35b815160208301fd5b3480156101db57600080fd5b50610202600480360360208110156101f257600080fd5b50356001600160a01b031661052d565b005b34801561021057600080fd5b506102026004803603602081101561022757600080fd5b50356001600160a01b031661077c565b34801561024357600080fd5b506102026004803603602081101561025a57600080fd5b50356001600160a01b031661095b565b34801561027657600080fd5b5061027f610a46565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102b95781810151838201526020016102a1565b50505050905090810190601f1680156102e65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561030057600080fd5b5061027f6004803603608081101561031757600080fd5b60ff823516916001600160a01b03602082013516916040820135919081019060808101606082013564010000000081111561035157600080fd5b82018360208201111561036357600080fd5b8035906020019184600183028401116401000000008311171561038557600080fd5b509092509050610a70565b34801561039c57600080fd5b506103a5610d7f565b604080516001600160a01b039092168252519081900360200190f35b3480156103cd57600080fd5b50610202600480360360208110156103e457600080fd5b50356001600160a01b0316610d8e565b34801561040057600080fd5b506102026004803603602081101561041757600080fd5b50356001600160a01b0316610f2b565b34801561043357600080fd5b506102026004803603604081101561044a57600080fd5b5080356001600160e01b03191690602001356001600160a01b031661108b565b34801561047657600080fd5b5061049d6004803603602081101561048d57600080fd5b50356001600160a01b0316611212565b604080519115158252519081900360200190f35b3480156104bd57600080fd5b506103a5600480360360208110156104d457600080fd5b50356001600160e01b031916611230565b3480156104f157600080fd5b506103a5611255565b34801561050657600080fd5b506102026004803603602081101561051d57600080fd5b50356001600160a01b0316611264565b600360009054906101000a90046001600160a01b03166001600160a01b031663c5c036996040518163ffffffff1660e01b815260040160206040518083038186803b15801561057b57600080fd5b505afa15801561058f573d6000803e3d6000fd5b505050506040513d60208110156105a557600080fd5b50516001600160a01b031633146105f2576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b60005415610634576040805162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b604482015290519081900360640190fd5b60016000556003546001600160a01b0316610686576040805162461bcd60e51b815260206004820152600d60248201526c2727afa1a7a72a2927a62622a960991b604482015290519081900360640190fd5b6001546001600160a01b0316156106da576040805162461bcd60e51b8152602060048201526013602482015272494e495449414c495a45445f414c524541445960681b604482015290519081900360640190fd5b6001600160a01b038116610724576040805162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015290519081900360640190fd5b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2d09b2e98dd73e6a5c2de8f80056fba918b4d574202a95c8e11eab46f89a21b69181900360200190a15060008055565b600054156107be576040805162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b604482015290519081900360640190fd5b600160009081553381526002602052604090205460ff1661081c576040805162461bcd60e51b81526020600482015260136024820152721353d115531157d5539055551213d492569151606a1b604482015290519081900360640190fd5b6001600160a01b038116610866576040805162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015290519081900360640190fd5b6001600160a01b0381163014156108b1576040805162461bcd60e51b815260206004820152600a602482015269141493d212509255115160b21b604482015290519081900360640190fd5b6001546001600160a01b0382811691161415610903576040805162461bcd60e51b815260206004820152600c60248201526b53414d455f4144445245535360a01b604482015290519081900360640190fd5b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fa2ea9883a321a3e97b8266c2b078bfeec6d50c711ed71f874a90d500ae2eaf369181900360200190a15060008055565b3360009081526002602052604090205460ff16806109fa5750600360009054906101000a90046001600160a01b03166001600160a01b031663c5c036996040518163ffffffff1660e01b815260040160206040518083038186803b1580156109c257600080fd5b505afa1580156109d6573d6000803e3d6000fd5b505050506040513d60208110156109ec57600080fd5b50516001600160a01b031633145b610a3a576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b610a4381611351565b50565b60408051808201909152601081526f312e312e3520287368656e79616e672960801b602082015290565b3360009081526002602052604090205460609060ff1680610b125750600360009054906101000a90046001600160a01b03166001600160a01b031663c5c036996040518163ffffffff1660e01b815260040160206040518083038186803b158015610ada57600080fd5b505afa158015610aee573d6000803e3d6000fd5b505050506040513d6020811015610b0457600080fd5b50516001600160a01b031633145b610b52576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b600360009054906101000a90046001600160a01b03166001600160a01b031663b95459e46040518163ffffffff1660e01b815260040160206040518083038186803b158015610ba057600080fd5b505afa158015610bb4573d6000803e3d6000fd5b505050506040513d6020811015610bca57600080fd5b505160408051631c5ebe2f60e01b81526001600160a01b03888116600483015291519190921691631c5ebe2f916024808301926020929190829003018186803b158015610c1657600080fd5b505afa158015610c2a573d6000803e3d6000fd5b505050506040513d6020811015610c4057600080fd5b505115610c94576040805162461bcd60e51b815260206004820152601d60248201527f5452414e534143545f4f4e5f4d4f44554c455f444953414c4c4f574544000000604482015290519081900360640190fd5b6000610cd887878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115d892505050565b9250905080610ceb573d6000803e3d6000fd5b7fd15cdc35d9f75ae49cb70603e3d7c2f6d6bff47de15cfbcdfcbbd8ab19aa7aca338787878760405180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039850909650505050505050a15095945050505050565b6001546001600160a01b031690565b60005415610dd0576040805162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b604482015290519081900360640190fd5b600160009081553381526002602052604090205460ff16610e2e576040805162461bcd60e51b81526020600482015260136024820152721353d115531157d5539055551213d492569151606a1b604482015290519081900360640190fd5b6003546001600160a01b0382811691161415610e83576040805162461bcd60e51b815260206004820152600f60248201526e29a0a6a2afa1a7a72a2927a62622a960891b604482015290519081900360640190fd5b6001600160a01b038116610ed3576040805162461bcd60e51b815260206004820152601260248201527124a72b20a624a22fa1a7a72a2927a62622a960711b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f027c3e080ed9215f564a9455a666f7e459b3edc0bb6e02a1bf842fde4d0ccfc19181900360200190a15060008055565b3360009081526002602052604090205460ff16610f85576040805162461bcd60e51b81526020600482015260136024820152721353d115531157d5539055551213d492569151606a1b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090205460ff16610fe6576040805162461bcd60e51b81526020600482015260116024820152704d4f44554c455f4e4f545f45584953545360781b604482015290519081900360640190fd5b806001600160a01b03166351b42b006040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561102157600080fd5b505af1925050508015611032575060015b506001600160a01b038116600081815260026020908152604091829020805460ff19169055815192835290517f0a1ee69f55c33d8467c69ca59ce2007a737a88603d75392972520bf67cb513b89281900390910190a150565b3360009081526002602052604090205460ff166110e5576040805162461bcd60e51b81526020600482015260136024820152721353d115531157d5539055551213d492569151606a1b604482015290519081900360640190fd5b6001600160e01b0319821661112e576040805162461bcd60e51b815260206004820152600a60248201526910905117d351551213d160b21b604482015290519081900360640190fd5b6001600160a01b038116156111a0576001600160a01b03811660009081526002602052604090205460ff166111a0576040805162461bcd60e51b81526020600482015260136024820152721353d115531157d5539055551213d492569151606a1b604482015290519081900360640190fd5b6001600160e01b0319821660008181526004602090815260409182902080546001600160a01b0319166001600160a01b03861690811790915582519384529083015280517fe38e0cbd107669b7b8120e2f6edde6ac4731cb8b123c1ab8b6db9b6bf0536fb29281900390910190a15050565b6001600160a01b031660009081526002602052604090205460ff1690565b6001600160e01b0319166000908152600460205260409020546001600160a01b031690565b6003546001600160a01b031681565b600054156112a6576040805162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b604482015290519081900360640190fd5b60016000819055546001600160a01b03161580156112cd57506003546001600160a01b0316155b80156112e157506001600160a01b03811615155b61132b576040805162461bcd60e51b815260206004820152601660248201527510d3d3951493d313115497d253925517d1905253115160521b604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b039290921691909117905560008055565b6001600160a01b03811661139a576040805162461bcd60e51b815260206004820152600b60248201526a4e554c4c5f4d4f44554c4560a81b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090205460ff16156113f8576040805162461bcd60e51b815260206004820152600d60248201526c4d4f44554c455f45584953545360981b604482015290519081900360640190fd5b600360009054906101000a90046001600160a01b03166001600160a01b031663b95459e46040518163ffffffff1660e01b815260040160206040518083038186803b15801561144657600080fd5b505afa15801561145a573d6000803e3d6000fd5b505050506040513d602081101561147057600080fd5b505160408051632d9ad53d60e01b81526001600160a01b03848116600483015291519190921691632d9ad53d916024808301926020929190829003018186803b1580156114bc57600080fd5b505afa1580156114d0573d6000803e3d6000fd5b505050506040513d60208110156114e657600080fd5b505161152a576040805162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f4d4f44554c4560901b604482015290519081900360640190fd5b6001600160a01b038116600081815260026020908152604091829020805460ff19166001179055815192835290517fead6a006345da1073a106d5f32372d2d2204f46cb0b4bca8f5ebafcbbed12b8a9281900390910190a1806001600160a01b0316630f15f4c06040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156115bd57600080fd5b505af11580156115d1573d6000803e3d6000fd5b5050505050565b60006060600054600014611620576040805162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b604482015290519081900360640190fd5b6001600081905560ff871614156116de57846001600160a01b031684846040518082805190602001908083835b6020831061166c5780518252601f19909201916020918201910161164d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146116ce576040519150601f19603f3d011682016040523d82523d6000602084013e6116d3565b606091505b5090925090506118ad565b8560ff166002141561178457846001600160a01b0316836040518082805190602001908083835b602083106117245780518252601f199092019160209182019101611705565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146116ce576040519150601f19603f3d011682016040523d82523d6000602084013e6116d3565b8560ff166003141561186d5783156117d3576040805162461bcd60e51b815260206004820152600d60248201526c494e56414c49445f56414c554560981b604482015290519081900360640190fd5b846001600160a01b0316836040518082805190602001908083835b6020831061180d5780518252601f1990920191602091820191016117ee565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146116ce576040519150601f19603f3d011682016040523d82523d6000602084013e6116d3565b6040805162461bcd60e51b815260206004820152601060248201526f554e535550504f525445445f4d4f444560801b604482015290519081900360640190fd5b6000805590959094509250505056fea2646970667358221220b3b72b358bc075ba67eadf36be0a3d4f30f7067e8e91a35f724dae238b92871464736f6c63430007000033
Deployed Bytecode
0x6080604052600436106100c65760003560e01c806392eefe9b1161007f578063c7b2e59611610059578063c7b2e5961461046a578063cf38db69146104b1578063f77c4791146104e5578063fb01cc36146104fa576100cd565b806392eefe9b146103c1578063a0632461146103f4578063b149206e14610427576100cd565b80630d009297146101cf57806313af4035146102045780631ed86f191461023757806354fd4d501461026a5780637122b74c146102f45780638da5cb5b14610390576100cd565b366100cd57005b600080356001600160e01b0319168152600460209081526040808320546001600160a01b031680845260029092529091205460ff16610149576040805162461bcd60e51b81526020600482015260136024820152721353d115531157d5539055551213d492569151606a1b604482015290519081900360640190fd5b60006060826001600160a01b031634600036604051808383808284376040519201945060009350909150508083038185875af1925050503d80600081146101ac576040519150601f19603f3d011682016040523d82523d6000602084013e6101b1565b606091505b509150915081600081146101c757815160208301f35b815160208301fd5b3480156101db57600080fd5b50610202600480360360208110156101f257600080fd5b50356001600160a01b031661052d565b005b34801561021057600080fd5b506102026004803603602081101561022757600080fd5b50356001600160a01b031661077c565b34801561024357600080fd5b506102026004803603602081101561025a57600080fd5b50356001600160a01b031661095b565b34801561027657600080fd5b5061027f610a46565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102b95781810151838201526020016102a1565b50505050905090810190601f1680156102e65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561030057600080fd5b5061027f6004803603608081101561031757600080fd5b60ff823516916001600160a01b03602082013516916040820135919081019060808101606082013564010000000081111561035157600080fd5b82018360208201111561036357600080fd5b8035906020019184600183028401116401000000008311171561038557600080fd5b509092509050610a70565b34801561039c57600080fd5b506103a5610d7f565b604080516001600160a01b039092168252519081900360200190f35b3480156103cd57600080fd5b50610202600480360360208110156103e457600080fd5b50356001600160a01b0316610d8e565b34801561040057600080fd5b506102026004803603602081101561041757600080fd5b50356001600160a01b0316610f2b565b34801561043357600080fd5b506102026004803603604081101561044a57600080fd5b5080356001600160e01b03191690602001356001600160a01b031661108b565b34801561047657600080fd5b5061049d6004803603602081101561048d57600080fd5b50356001600160a01b0316611212565b604080519115158252519081900360200190f35b3480156104bd57600080fd5b506103a5600480360360208110156104d457600080fd5b50356001600160e01b031916611230565b3480156104f157600080fd5b506103a5611255565b34801561050657600080fd5b506102026004803603602081101561051d57600080fd5b50356001600160a01b0316611264565b600360009054906101000a90046001600160a01b03166001600160a01b031663c5c036996040518163ffffffff1660e01b815260040160206040518083038186803b15801561057b57600080fd5b505afa15801561058f573d6000803e3d6000fd5b505050506040513d60208110156105a557600080fd5b50516001600160a01b031633146105f2576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b60005415610634576040805162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b604482015290519081900360640190fd5b60016000556003546001600160a01b0316610686576040805162461bcd60e51b815260206004820152600d60248201526c2727afa1a7a72a2927a62622a960991b604482015290519081900360640190fd5b6001546001600160a01b0316156106da576040805162461bcd60e51b8152602060048201526013602482015272494e495449414c495a45445f414c524541445960681b604482015290519081900360640190fd5b6001600160a01b038116610724576040805162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015290519081900360640190fd5b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2d09b2e98dd73e6a5c2de8f80056fba918b4d574202a95c8e11eab46f89a21b69181900360200190a15060008055565b600054156107be576040805162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b604482015290519081900360640190fd5b600160009081553381526002602052604090205460ff1661081c576040805162461bcd60e51b81526020600482015260136024820152721353d115531157d5539055551213d492569151606a1b604482015290519081900360640190fd5b6001600160a01b038116610866576040805162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015290519081900360640190fd5b6001600160a01b0381163014156108b1576040805162461bcd60e51b815260206004820152600a602482015269141493d212509255115160b21b604482015290519081900360640190fd5b6001546001600160a01b0382811691161415610903576040805162461bcd60e51b815260206004820152600c60248201526b53414d455f4144445245535360a01b604482015290519081900360640190fd5b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fa2ea9883a321a3e97b8266c2b078bfeec6d50c711ed71f874a90d500ae2eaf369181900360200190a15060008055565b3360009081526002602052604090205460ff16806109fa5750600360009054906101000a90046001600160a01b03166001600160a01b031663c5c036996040518163ffffffff1660e01b815260040160206040518083038186803b1580156109c257600080fd5b505afa1580156109d6573d6000803e3d6000fd5b505050506040513d60208110156109ec57600080fd5b50516001600160a01b031633145b610a3a576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b610a4381611351565b50565b60408051808201909152601081526f312e312e3520287368656e79616e672960801b602082015290565b3360009081526002602052604090205460609060ff1680610b125750600360009054906101000a90046001600160a01b03166001600160a01b031663c5c036996040518163ffffffff1660e01b815260040160206040518083038186803b158015610ada57600080fd5b505afa158015610aee573d6000803e3d6000fd5b505050506040513d6020811015610b0457600080fd5b50516001600160a01b031633145b610b52576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b600360009054906101000a90046001600160a01b03166001600160a01b031663b95459e46040518163ffffffff1660e01b815260040160206040518083038186803b158015610ba057600080fd5b505afa158015610bb4573d6000803e3d6000fd5b505050506040513d6020811015610bca57600080fd5b505160408051631c5ebe2f60e01b81526001600160a01b03888116600483015291519190921691631c5ebe2f916024808301926020929190829003018186803b158015610c1657600080fd5b505afa158015610c2a573d6000803e3d6000fd5b505050506040513d6020811015610c4057600080fd5b505115610c94576040805162461bcd60e51b815260206004820152601d60248201527f5452414e534143545f4f4e5f4d4f44554c455f444953414c4c4f574544000000604482015290519081900360640190fd5b6000610cd887878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115d892505050565b9250905080610ceb573d6000803e3d6000fd5b7fd15cdc35d9f75ae49cb70603e3d7c2f6d6bff47de15cfbcdfcbbd8ab19aa7aca338787878760405180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039850909650505050505050a15095945050505050565b6001546001600160a01b031690565b60005415610dd0576040805162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b604482015290519081900360640190fd5b600160009081553381526002602052604090205460ff16610e2e576040805162461bcd60e51b81526020600482015260136024820152721353d115531157d5539055551213d492569151606a1b604482015290519081900360640190fd5b6003546001600160a01b0382811691161415610e83576040805162461bcd60e51b815260206004820152600f60248201526e29a0a6a2afa1a7a72a2927a62622a960891b604482015290519081900360640190fd5b6001600160a01b038116610ed3576040805162461bcd60e51b815260206004820152601260248201527124a72b20a624a22fa1a7a72a2927a62622a960711b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f027c3e080ed9215f564a9455a666f7e459b3edc0bb6e02a1bf842fde4d0ccfc19181900360200190a15060008055565b3360009081526002602052604090205460ff16610f85576040805162461bcd60e51b81526020600482015260136024820152721353d115531157d5539055551213d492569151606a1b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090205460ff16610fe6576040805162461bcd60e51b81526020600482015260116024820152704d4f44554c455f4e4f545f45584953545360781b604482015290519081900360640190fd5b806001600160a01b03166351b42b006040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561102157600080fd5b505af1925050508015611032575060015b506001600160a01b038116600081815260026020908152604091829020805460ff19169055815192835290517f0a1ee69f55c33d8467c69ca59ce2007a737a88603d75392972520bf67cb513b89281900390910190a150565b3360009081526002602052604090205460ff166110e5576040805162461bcd60e51b81526020600482015260136024820152721353d115531157d5539055551213d492569151606a1b604482015290519081900360640190fd5b6001600160e01b0319821661112e576040805162461bcd60e51b815260206004820152600a60248201526910905117d351551213d160b21b604482015290519081900360640190fd5b6001600160a01b038116156111a0576001600160a01b03811660009081526002602052604090205460ff166111a0576040805162461bcd60e51b81526020600482015260136024820152721353d115531157d5539055551213d492569151606a1b604482015290519081900360640190fd5b6001600160e01b0319821660008181526004602090815260409182902080546001600160a01b0319166001600160a01b03861690811790915582519384529083015280517fe38e0cbd107669b7b8120e2f6edde6ac4731cb8b123c1ab8b6db9b6bf0536fb29281900390910190a15050565b6001600160a01b031660009081526002602052604090205460ff1690565b6001600160e01b0319166000908152600460205260409020546001600160a01b031690565b6003546001600160a01b031681565b600054156112a6576040805162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b604482015290519081900360640190fd5b60016000819055546001600160a01b03161580156112cd57506003546001600160a01b0316155b80156112e157506001600160a01b03811615155b61132b576040805162461bcd60e51b815260206004820152601660248201527510d3d3951493d313115497d253925517d1905253115160521b604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b039290921691909117905560008055565b6001600160a01b03811661139a576040805162461bcd60e51b815260206004820152600b60248201526a4e554c4c5f4d4f44554c4560a81b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090205460ff16156113f8576040805162461bcd60e51b815260206004820152600d60248201526c4d4f44554c455f45584953545360981b604482015290519081900360640190fd5b600360009054906101000a90046001600160a01b03166001600160a01b031663b95459e46040518163ffffffff1660e01b815260040160206040518083038186803b15801561144657600080fd5b505afa15801561145a573d6000803e3d6000fd5b505050506040513d602081101561147057600080fd5b505160408051632d9ad53d60e01b81526001600160a01b03848116600483015291519190921691632d9ad53d916024808301926020929190829003018186803b1580156114bc57600080fd5b505afa1580156114d0573d6000803e3d6000fd5b505050506040513d60208110156114e657600080fd5b505161152a576040805162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f4d4f44554c4560901b604482015290519081900360640190fd5b6001600160a01b038116600081815260026020908152604091829020805460ff19166001179055815192835290517fead6a006345da1073a106d5f32372d2d2204f46cb0b4bca8f5ebafcbbed12b8a9281900390910190a1806001600160a01b0316630f15f4c06040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156115bd57600080fd5b505af11580156115d1573d6000803e3d6000fd5b5050505050565b60006060600054600014611620576040805162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b604482015290519081900360640190fd5b6001600081905560ff871614156116de57846001600160a01b031684846040518082805190602001908083835b6020831061166c5780518252601f19909201916020918201910161164d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146116ce576040519150601f19603f3d011682016040523d82523d6000602084013e6116d3565b606091505b5090925090506118ad565b8560ff166002141561178457846001600160a01b0316836040518082805190602001908083835b602083106117245780518252601f199092019160209182019101611705565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146116ce576040519150601f19603f3d011682016040523d82523d6000602084013e6116d3565b8560ff166003141561186d5783156117d3576040805162461bcd60e51b815260206004820152600d60248201526c494e56414c49445f56414c554560981b604482015290519081900360640190fd5b846001600160a01b0316836040518082805190602001908083835b6020831061180d5780518252601f1990920191602091820191016117ee565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146116ce576040519150601f19603f3d011682016040523d82523d6000602084013e6116d3565b6040805162461bcd60e51b815260206004820152601060248201526f554e535550504f525445445f4d4f444560801b604482015290519081900360640190fd5b6000805590959094509250505056fea2646970667358221220b3b72b358bc075ba67eadf36be0a3d4f30f7067e8e91a35f724dae238b92871464736f6c63430007000033
Deployed Bytecode Sourcemap
17382:238:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15918:14;15950:7;;-1:-1:-1;;;;;;15950:7:0;15935:23;;:14;:23;;;;;;;;;-1:-1:-1;;;;;15935:23:0;15977:15;;;:7;:15;;;;;;;;;15969:47;;;;;-1:-1:-1;;;15969:47:0;;;;;;;;;;;;-1:-1:-1;;;15969:47:0;;;;;;;;;;;;;;;16030:12;16044:23;16071:6;-1:-1:-1;;;;;16071:11:0;16090:9;16101:8;;16071:39;;;;;;;;;;;;;;-1:-1:-1;16071:39:0;;-1:-1:-1;16071:39:0;;-1:-1:-1;;16071:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16029:81;;;;16152:7;16178:1;16173:57;;;;16288:10;16282:17;16277:2;16265:10;16261:19;16254:46;16173:57;16216:10;16210:17;16205:2;16193:10;16189:19;16182:46;11286:407;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11286:407:0;-1:-1:-1;;;;;11286:407:0;;:::i;:::-;;12475:368;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12475:368:0;-1:-1:-1;;;;;12475:368:0;;:::i;13217:155::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13217:155:0;-1:-1:-1;;;;;13217:155:0;;:::i;17423:194::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14497:731;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14497:731:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14497:731:0;;-1:-1:-1;14497:731:0;-1:-1:-1;14497:731:0;:::i;12336:131::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;12336:131:0;;;;;;;;;;;;;;12851:358;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12851:358:0;-1:-1:-1;;;;;12851:358:0;;:::i;13380:371::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13380:371:0;-1:-1:-1;;;;;13380:371:0;;:::i;13924:383::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13924:383:0;;-1:-1:-1;;;;;;13924:383:0;;;;;-1:-1:-1;;;;;13924:383:0;;:::i;13759:157::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13759:157:0;-1:-1:-1;;;;;13759:157:0;;:::i;:::-;;;;;;;;;;;;;;;;;;14315:174;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14315:174:0;-1:-1:-1;;;;;;14315:174:0;;:::i;9834:28::-;;;;;;;;;;;;;:::i;11978:350::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11978:350:0;-1:-1:-1;;;;;11978:350:0;;:::i;11286:407::-;10623:10;;;;;;;;;-1:-1:-1;;;;;10623:10:0;-1:-1:-1;;;;;10623:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10623:26:0;-1:-1:-1;;;;;10609:40:0;:10;:40;10587:102;;;;;-1:-1:-1;;;10587:102:0;;;;;;;;;;;;-1:-1:-1;;;10587:102:0;;;;;;;;;;;;;;;9129:11:::1;::::0;:16;9121:39:::1;;;::::0;;-1:-1:-1;;;9121:39:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;9121:39:0;;;;;;;;;;;;;::::1;;9185:1;9171:11;:15:::0;11437:10:::2;::::0;-1:-1:-1;;;;;11437:10:0::2;11429:53;;;::::0;;-1:-1:-1;;;11429:53:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;11429:53:0;;;;;;;;;;;;;::::2;;11501:6;::::0;-1:-1:-1;;;;;11501:6:0::2;:20:::0;11493:52:::2;;;::::0;;-1:-1:-1;;;11493:52:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;11493:52:0;;;;;;;;;;;;;::::2;;-1:-1:-1::0;;;;;11564:27:0;::::2;11556:52;;;::::0;;-1:-1:-1;;;11556:52:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;11556:52:0;;;;;;;;;;;;;::::2;;11621:6;:22:::0;;-1:-1:-1;;;;;11621:22:0;::::2;-1:-1:-1::0;;;;;;11621:22:0;;::::2;::::0;::::2;::::0;;;11659:26:::2;::::0;;;;;;::::2;::::0;;;;::::2;::::0;;::::2;-1:-1:-1::0;9223:1:0::1;9209:15:::0;;11286:407::o;12475:368::-;9129:11;;:16;9121:39;;;;;-1:-1:-1;;;9121:39:0;;;;;;;;;;;;-1:-1:-1;;;9121:39:0;;;;;;;;;;;;;;;9185:1;9171:11;:15;;;10483:10:::1;10475:19:::0;;:7:::1;:19;::::0;;;;;::::1;;10467:51;;;::::0;;-1:-1:-1;;;10467:51:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;10467:51:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;12617:22:0;::::2;12609:47;;;::::0;;-1:-1:-1;;;12609:47:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;12609:47:0;;;;;;;;;;;;;::::2;;-1:-1:-1::0;;;;;12675:25:0;::::2;12695:4;12675:25;;12667:48;;;::::0;;-1:-1:-1;;;12667:48:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;12667:48:0;;;;;;;;;;;;;::::2;;12746:6;::::0;-1:-1:-1;;;;;12734:18:0;;::::2;12746:6:::0;::::2;12734:18;;12726:43;;;::::0;;-1:-1:-1;;;12726:43:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;12726:43:0;;;;;;;;;;;;;::::2;;12780:6;:17:::0;;-1:-1:-1;;;;;12780:17:0;::::2;-1:-1:-1::0;;;;;;12780:17:0;;::::2;::::0;::::2;::::0;;;12813:22:::2;::::0;;;;;;::::2;::::0;;;;::::2;::::0;;::::2;-1:-1:-1::0;9223:1:0;9209:15;;12475:368::o;13217:155::-;10930:10;10922:19;;;;:7;:19;;;;;;;;;:63;;;10959:10;;;;;;;;;-1:-1:-1;;;;;10959:10:0;-1:-1:-1;;;;;10959:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10959:26:0;-1:-1:-1;;;;;10945:40:0;:10;:40;10922:63;10900:125;;;;;-1:-1:-1;;;10900:125:0;;;;;;;;;;;;-1:-1:-1;;;10900:125:0;;;;;;;;;;;;;;;13338:26:::1;13356:7;13338:17;:26::i;:::-;13217:155:::0;:::o;17423:194::-;17584:25;;;;;;;;;;;;-1:-1:-1;;;17584:25:0;;;;17423:194;:::o;14497:731::-;10930:10;10922:19;;;;:7;:19;;;;;;14717:23;;10922:19;;;:63;;;10959:10;;;;;;;;;-1:-1:-1;;;;;10959:10:0;-1:-1:-1;;;;;10959:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10959:26:0;-1:-1:-1;;;;;10945:40:0;:10;:40;10922:63;10900:125;;;;;-1:-1:-1;;;10900:125:0;;;;;;;;;;;;-1:-1:-1;;;10900:125:0;;;;;;;;;;;;;;;14781:10:::1;;;;;;;;;-1:-1:-1::0;;;;;14781:10:0::1;-1:-1:-1::0;;;;;14781:25:0::1;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;14781:27:0;:50:::1;::::0;;-1:-1:-1;;;14781:50:0;;-1:-1:-1;;;;;14781:50:0;;::::1;;::::0;::::1;::::0;;;:46;;;::::1;::::0;::::1;::::0;:50;;;;;:27:::1;::::0;:50;;;;;;;:46;:50;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;14781:50:0;14780:51:::1;14758:130;;;::::0;;-1:-1:-1;;;14758:130:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;14901:12;14948:39;14965:4;14971:2;14975:5;14982:4;;14948:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;14948:16:0::1;::::0;-1:-1:-1;;;14948:39:0:i:1;:::-;14924:63:::0;-1:-1:-1;14924:63:0;-1:-1:-1;14924:63:0;15000:166:::1;;15078:16;15075:1;::::0;15057:38:::1;15123:16;15075:1;15113:27;15038:117;15181:39;15192:10;15204:2;15208:5;15215:4;;15181:39;;;;-1:-1:-1::0;;;;;15181:39:0::1;;;;;;-1:-1:-1::0;;;;;15181:39:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;15181:39:0::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;15181:39:0;;-1:-1:-1;;;;;;;15181:39:0::1;11036:1;14497:731:::0;;;;;;;:::o;12336:131::-;12453:6;;-1:-1:-1;;;;;12453:6:0;12336:131;:::o;12851:358::-;9129:11;;:16;9121:39;;;;;-1:-1:-1;;;9121:39:0;;;;;;;;;;;;-1:-1:-1;;;9121:39:0;;;;;;;;;;;;;;;9185:1;9171:11;:15;;;10483:10:::1;10475:19:::0;;:7:::1;:19;::::0;;;;;::::1;;10467:51;;;::::0;;-1:-1:-1;;;10467:51:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;10467:51:0;;;;;;;;;;;;;::::1;;13005:10:::2;::::0;-1:-1:-1;;;;;12988:27:0;;::::2;13005:10:::0;::::2;12988:27;;12980:55;;;::::0;;-1:-1:-1;;;12980:55:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;12980:55:0;;;;;;;;;;;;;::::2;;-1:-1:-1::0;;;;;13054:30:0;::::2;13046:61;;;::::0;;-1:-1:-1;;;13046:61:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;13046:61:0;;;;;;;;;;;;;::::2;;13118:10;:26:::0;;-1:-1:-1;;;;;13118:26:0;::::2;-1:-1:-1::0;;;;;;13118:26:0;;::::2;::::0;::::2;::::0;;;13160:41:::2;::::0;;;;;;::::2;::::0;;;;::::2;::::0;;::::2;-1:-1:-1::0;9223:1:0;9209:15;;12851:358::o;13380:371::-;10483:10;10475:19;;;;:7;:19;;;;;;;;10467:51;;;;;-1:-1:-1;;;10467:51:0;;;;;;;;;;;;-1:-1:-1;;;10467:51:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;13579:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;::::1;;13571:46;;;::::0;;-1:-1:-1;;;13571:46:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;13571:46:0;;;;;;;;;;;;;::::1;;13639:7;-1:-1:-1::0;;;;;13632:26:0::1;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;13628:44:::0;-1:-1:-1;;;;;13689:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;;13682:23;;-1:-1:-1;;13682:23:0::1;::::0;;13721:22;;;;;;;::::1;::::0;;;;;;;;::::1;13380:371:::0;:::o;13924:383::-;10483:10;10475:19;;;;:7;:19;;;;;;;;10467:51;;;;;-1:-1:-1;;;10467:51:0;;;;;;;;;;;;-1:-1:-1;;;10467:51:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14061:20:0;::::1;14053:43;;;::::0;;-1:-1:-1;;;14053:43:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;14053:43:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;14111:21:0;::::1;::::0;14107:102:::1;;-1:-1:-1::0;;;;;14157:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;::::1;;14149:48;;;::::0;;-1:-1:-1;;;14149:48:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;14149:48:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;;14221:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;;;;;:33;;-1:-1:-1;;;;;;14221:33:0::1;-1:-1:-1::0;;;;;14221:33:0;::::1;::::0;;::::1;::::0;;;14270:29;;;;;;;::::1;::::0;;;::::1;::::0;;;;;;;;::::1;13924:383:::0;;:::o;13759:157::-;-1:-1:-1;;;;;13892:16:0;13863:4;13892:16;;;:7;:16;;;;;;;;;13759:157::o;14315:174::-;-1:-1:-1;;;;;;14458:23:0;14426:7;14458:23;;;:14;:23;;;;;;-1:-1:-1;;;;;14458:23:0;;14315:174::o;9834:28::-;;;-1:-1:-1;;;;;9834:28:0;;:::o;11978:350::-;9129:11;;:16;9121:39;;;;;-1:-1:-1;;;9121:39:0;;;;;;;;;;;;-1:-1:-1;;;9121:39:0;;;;;;;;;;;;;;;9185:1;9171:11;:15;;;12124:6;-1:-1:-1;;;;;12124:6:0::1;:20:::0;:64;::::1;;;-1:-1:-1::0;12161:10:0::1;::::0;-1:-1:-1;;;;;12161:10:0::1;:27:::0;12124:64:::1;:109;;;;-1:-1:-1::0;;;;;;12205:28:0;::::1;::::0;::::1;12124:109;12102:181;;;::::0;;-1:-1:-1;;;12102:181:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;12102:181:0;;;;;;;;;;;;;::::1;;12296:10;:24:::0;;-1:-1:-1;;;;;;12296:24:0::1;-1:-1:-1::0;;;;;12296:24:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;9209:15:0;;11978:350::o;15236:427::-;-1:-1:-1;;;;;15322:21:0;;15314:45;;;;;-1:-1:-1;;;15314:45:0;;;;;;;;;;;;-1:-1:-1;;;15314:45:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15378:16:0;;;;;;:7;:16;;;;;;;;:25;15370:51;;;;;-1:-1:-1;;;15370:51:0;;;;;;;;;;;;-1:-1:-1;;;15370:51:0;;;;;;;;;;;;;;;15454:10;;;;;;;;;-1:-1:-1;;;;;15454:10:0;-1:-1:-1;;;;;15454:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15454:27:0;:52;;;-1:-1:-1;;;15454:52:0;;-1:-1:-1;;;;;15454:52:0;;;;;;;;;:43;;;;;;;:52;;;;;:27;;:52;;;;;;;:43;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15454:52:0;15432:116;;;;;-1:-1:-1;;;15432:116:0;;;;;;;;;;;;-1:-1:-1;;;15432:116:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15559:16:0;;;;;;:7;:16;;;;;;;;;:23;;-1:-1:-1;;15559:23:0;15578:4;15559:23;;;15598:20;;;;;;;;;;;;;;;;;15636:7;-1:-1:-1;;;;;15629:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15236:427;:::o;16449:899::-;16672:12;16699:23;9129:11;;9144:1;9129:16;9121:39;;;;;-1:-1:-1;;;9121:39:0;;;;;;;;;;;;-1:-1:-1;;;9121:39:0;;;;;;;;;;;;;;;9185:1;9171:11;:15;;;16754:9:::1;::::0;::::1;;16750:591;;;16868:6;-1:-1:-1::0;;;;;16868:11:0::1;16887:5;16894:4;16868:31;;;;;;;;;;;;;;;;;;;::::0;;;;-1:-1:-1;;16868:31:0;;;;::::1;::::0;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;16844:55:0;;-1:-1:-1;16844:55:0;-1:-1:-1;16750:591:0::1;;;16921:4;:9;;16929:1;16921:9;16917:424;;;17035:6;-1:-1:-1::0;;;;;17035:19:0::1;17055:4;17035:25;;;;;;;;;;;;;;;;;;;::::0;;;;-1:-1:-1;;17035:25:0;;;;::::1;::::0;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16917:424;17082:4;:9;;17090:1;17082:9;17078:263;;;17116:10:::0;;17108:36:::1;;;::::0;;-1:-1:-1;;;17108:36:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;17108:36:0;;;;;;;;;;;;;::::1;;17247:6;-1:-1:-1::0;;;;;17247:17:0::1;17265:4;17247:23;;;;;;;;;;;;;;;;;;;::::0;;;;-1:-1:-1;;17247:23:0;;;;::::1;::::0;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17078:263;17303:26;::::0;;-1:-1:-1;;;17303:26:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;17303:26:0;;;;;;;;;;;;;::::1;17078:263;9223:1:::0;9209:15;;16449:899;;;;-1:-1:-1;16449:899:0;-1:-1:-1;;;16449:899:0:o
Swarm Source
ipfs://b3b72b358bc075ba67eadf36be0a3d4f30f7067e8e91a35f724dae238b928714
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.