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
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x6125eb61 | 10701958 | 1479 days ago | IN | 0 ETH | 0.3218376 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
LToken
Compiler Version
v0.6.7+commit.b8d736ae
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-10-16 */ // File: contracts\thirdParty\interfaces\IERC1820Registry.sol // From open https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/introspection/IERC1820Registry.sol pragma solidity ^0.6.0; /** * @dev Interface of the global ERC1820 Registry, as defined in the * https://eips.ethereum.org/EIPS/eip-1820[EIP]. Accounts may register * implementers for interfaces in this registry, as well as query support. * * Implementers may be shared by multiple accounts, and can also implement more * than a single interface for each account. Contracts can implement interfaces * for themselves, but externally-owned accounts (EOA) must delegate this to a * contract. * * {IERC165} interfaces can also be queried via the registry. * * For an in-depth explanation and source code analysis, see the EIP text. */ interface IERC1820Registry { /** * @dev Sets `newManager` as the manager for `account`. A manager of an * account is able to set interface implementers for it. * * By default, each account is its own manager. Passing a value of `0x0` in * `newManager` will reset the manager to this initial state. * * Emits a {ManagerChanged} event. * * Requirements: * * - the caller must be the current manager for `account`. */ function setManager(address account, address newManager) external; /** * @dev Returns the manager for `account`. * * See {setManager}. */ function getManager(address account) external view returns (address); /** * @dev Sets the `implementer` contract as ``account``'s implementer for * `interfaceHash`. * * `account` being the zero address is an alias for the caller's address. * The zero address can also be used in `implementer` to remove an old one. * * See {interfaceHash} to learn how these are created. * * Emits an {InterfaceImplementerSet} event. * * Requirements: * * - the caller must be the current manager for `account`. * - `interfaceHash` must not be an {IERC165} interface id (i.e. it must not * end in 28 zeroes). * - `implementer` must implement {IERC1820Implementer} and return true when * queried for support, unless `implementer` is the caller. See * {IERC1820Implementer-canImplementInterfaceForAddress}. */ function setInterfaceImplementer(address account, bytes32 interfaceHash, address implementer) external; /** * @dev Returns the implementer of `interfaceHash` for `account`. If no such * implementer is registered, returns the zero address. * * If `interfaceHash` is an {IERC165} interface id (i.e. it ends with 28 * zeroes), `account` will be queried for support of it. * * `account` being the zero address is an alias for the caller's address. */ function getInterfaceImplementer(address account, bytes32 interfaceHash) external view returns (address); /** * @dev Returns the interface hash for an `interfaceName`, as defined in the * corresponding * https://eips.ethereum.org/EIPS/eip-1820#interface-name[section of the EIP]. */ function interfaceHash(string calldata interfaceName) external pure returns (bytes32); /** * @notice Updates the cache with whether the contract implements an ERC165 interface or not. * @param account Address of the contract for which to update the cache. * @param interfaceId ERC165 interface for which to update the cache. */ function updateERC165Cache(address account, bytes4 interfaceId) external; /** * @notice Checks whether a contract implements an ERC165 interface or not. * If the result is not cached a direct lookup on the contract address is performed. * If the result is not cached or the cached value is out-of-date, the cache MUST be updated manually by calling * {updateERC165Cache} with the contract address. * @param account Address of the contract to check. * @param interfaceId ERC165 interface to check. * @return True if `account` implements `interfaceId`, false otherwise. */ function implementsERC165Interface(address account, bytes4 interfaceId) external view returns (bool); /** * @notice Checks whether a contract implements an ERC165 interface or not without using nor updating the cache. * @param account Address of the contract to check. * @param interfaceId ERC165 interface to check. * @return True if `account` implements `interfaceId`, false otherwise. */ function implementsERC165InterfaceNoCache(address account, bytes4 interfaceId) external view returns (bool); event InterfaceImplementerSet(address indexed account, bytes32 indexed interfaceHash, address indexed implementer); event ManagerChanged(address indexed account, address indexed newManager); } // File: contracts\interfaces\IERC777Sender.sol pragma solidity 0.6.7; // As defined in the 'ERC777TokensSender And The tokensToSend Hook' section of https://eips.ethereum.org/EIPS/eip-777 interface IERC777Sender { function tokensToSend(address operator, address from, address to, uint256 amount, bytes calldata data, bytes calldata operatorData) external; } // File: contracts\interfaces\IERC777Recipient.sol pragma solidity 0.6.7; // As defined in the 'ERC777TokensRecipient And The tokensReceived Hook' section of https://eips.ethereum.org/EIPS/eip-777 interface IERC777Recipient { function tokensReceived(address operator, address from, address to, uint256 amount, bytes calldata data, bytes calldata operatorData) external; } // File: contracts\thirdParty\SafeMath.sol // Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/SafeMath.sol pragma solidity ^0.6.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. * * _Available since v2.4.0._ */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // File: contracts\libraries\LToken.sol pragma solidity 0.6.7; struct TokenState { uint256 totalSupply; mapping(address => uint256) balances; mapping(address => mapping(address => uint256)) approvals; mapping(address => mapping(address => bool)) authorizedOperators; address[] defaultOperators; mapping(address => bool) defaultOperatorIsRevoked; mapping(address => bool) minters; } library LToken { using SafeMath for uint256; event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); event Sent(address indexed operator, address indexed from, address indexed to, uint256 amount, bytes data, bytes operatorData); event Minted(address indexed operator, address indexed to, uint256 amount, bytes data, bytes operatorData); event Burned(address indexed operator, address indexed from, uint256 amount, bytes data, bytes operatorData); event AuthorizedOperator(address indexed operator, address indexed holder); event RevokedOperator(address indexed operator, address indexed holder); // Universal address as defined in Registry Contract Address section of https://eips.ethereum.org/EIPS/eip-1820 IERC1820Registry constant internal ERC1820_REGISTRY = IERC1820Registry(0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24); // precalculated hashes - see https://github.com/ethereum/solidity/issues/4024 // keccak256("ERC777TokensSender") bytes32 constant internal ERC777_TOKENS_SENDER_HASH = 0x29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe895; // keccak256("ERC777TokensRecipient") bytes32 constant internal ERC777_TOKENS_RECIPIENT_HASH = 0xb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b; modifier checkSenderNotOperator(address _operator) { require(_operator != msg.sender, "Cannot be operator for self"); _; } function initState(TokenState storage _tokenState, uint8 _decimals, uint256 _initialSupply) external { _tokenState.defaultOperators.push(address(this)); _tokenState.totalSupply = _initialSupply.mul(10**uint256(_decimals)); _tokenState.balances[msg.sender] = _tokenState.totalSupply; } function transferFrom(TokenState storage _tokenState, address _from, address _to, uint256 _value) external { _tokenState.approvals[_from][msg.sender] = _tokenState.approvals[_from][msg.sender].sub(_value, "Amount not approved"); doSend(_tokenState, msg.sender, _from, _to, _value, "", "", false); } function approve(TokenState storage _tokenState, address _spender, uint256 _value) external { require(_spender != address(0), "Cannot approve to zero address"); _tokenState.approvals[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); } function authorizeOperator(TokenState storage _tokenState, address _operator) checkSenderNotOperator(_operator) external { if (_operator == address(this)) _tokenState.defaultOperatorIsRevoked[msg.sender] = false; else _tokenState.authorizedOperators[_operator][msg.sender] = true; emit AuthorizedOperator(_operator, msg.sender); } function revokeOperator(TokenState storage _tokenState, address _operator) checkSenderNotOperator(_operator) external { if (_operator == address(this)) _tokenState.defaultOperatorIsRevoked[msg.sender] = true; else _tokenState.authorizedOperators[_operator][msg.sender] = false; emit RevokedOperator(_operator, msg.sender); } function authorizeMinter(TokenState storage _tokenState, address _minter) external { _tokenState.minters[_minter] = true; } function revokeMinter(TokenState storage _tokenState, address _minter) external { _tokenState.minters[_minter] = false; } function doMint(TokenState storage _tokenState, address _to, uint256 _amount) external { assert(_to != address(0)); _tokenState.totalSupply = _tokenState.totalSupply.add(_amount); _tokenState.balances[_to] = _tokenState.balances[_to].add(_amount); // From ERC777: The token contract MUST call the tokensReceived hook after updating the state. receiveHook(address(this), address(0), _to, _amount, "", "", true); emit Minted(address(this), _to, _amount, "", ""); emit Transfer(address(0), _to, _amount); } function doBurn(TokenState storage _tokenState, address _operator, address _from, uint256 _amount, bytes calldata _data, bytes calldata _operatorData) external { assert(_from != address(0)); // From ERC777: The token contract MUST call the tokensToSend hook before updating the state. sendHook(_operator, _from, address(0), _amount, _data, _operatorData); _tokenState.balances[_from] = _tokenState.balances[_from].sub(_amount, "Cannot burn more than balance"); _tokenState.totalSupply = _tokenState.totalSupply.sub(_amount); emit Burned(_operator, _from, _amount, _data, _operatorData); emit Transfer(_from, address(0), _amount); } function doSend(TokenState storage _tokenState, address _operator, address _from, address _to, uint256 _amount, bytes memory _data, bytes memory _operatorData, bool _enforceERC777) public { assert(_from != address(0)); require(_to != address(0), "Cannot send funds to 0 address"); // From ERC777: The token contract MUST call the tokensToSend hook before updating the state. sendHook(_operator, _from, _to, _amount, _data, _operatorData); _tokenState.balances[_from] = _tokenState.balances[_from].sub(_amount, "Amount exceeds available funds"); _tokenState.balances[_to] = _tokenState.balances[_to].add(_amount); emit Sent(_operator, _from, _to, _amount, _data, _operatorData); emit Transfer(_from, _to, _amount); // From ERC777: The token contract MUST call the tokensReceived hook after updating the state. receiveHook(_operator, _from, _to, _amount, _data, _operatorData, _enforceERC777); } function receiveHook(address _operator, address _from, address _to, uint256 _amount, bytes memory _data, bytes memory _operatorData, bool _enforceERC777) public { address implementer = ERC1820_REGISTRY.getInterfaceImplementer(_to, ERC777_TOKENS_RECIPIENT_HASH); if (implementer != address(0)) IERC777Recipient(implementer).tokensReceived(_operator, _from, _to, _amount, _data, _operatorData); else if (_enforceERC777) require(!isContract(_to), "Must be registered with ERC1820"); } function sendHook(address _operator, address _from, address _to, uint256 _amount, bytes memory _data, bytes memory _operatorData) public { address implementer = ERC1820_REGISTRY.getInterfaceImplementer(_from, ERC777_TOKENS_SENDER_HASH); if (implementer != address(0)) IERC777Sender(implementer).tokensToSend(_operator, _from, _to, _amount, _data, _operatorData); } function isContract(address _account) private view returns (bool isContract_) { uint256 size; assembly { size := extcodesize(_account) } isContract_ = size != 0; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"holder","type":"address"}],"name":"AuthorizedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"holder","type":"address"}],"name":"RevokedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Sent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]
Contract Creation Code
6125eb610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100be5760003560e01c80638bde1d781161007b5780638bde1d781461055b5780638c96a55d146105c0578063a31b6c291461061b578063a77f752c146107f0578063b750dc461461084b578063bbce8abb14610a2b576100be565b806324394467146100c35780632e6a5609146101f2578063528aa17e1461027757806353a7daf4146102d25780635a7ecab91461032d5780636eeb9e0f146104f6575b600080fd5b8180156100cf57600080fd5b506101f0600480360360c08110156100e657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561015757600080fd5b82018360208201111561016957600080fd5b8035906020019184600183028401116401000000008311171561018b57600080fd5b9091929391929390803590602001906401000000008111156101ac57600080fd5b8201836020820111156101be57600080fd5b803590602001918460018302840111640100000000831117156101e057600080fd5b9091929391929390505050610a7d565b005b8180156101fe57600080fd5b506102756004803603608081101561021557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d77565b005b81801561028357600080fd5b506102d06004803603604081101561029a57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ef6565b005b8180156102de57600080fd5b5061032b600480360360408110156102f557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611123565b005b81801561033957600080fd5b506104f4600480360360c081101561035057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156103d757600080fd5b8201836020820111156103e957600080fd5b8035906020019184600183028401116401000000008311171561040b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561046e57600080fd5b82018360208201111561048057600080fd5b803590602001918460018302840111640100000000831117156104a257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611181565b005b81801561050257600080fd5b506105596004803603606081101561051957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061149b565b005b81801561056757600080fd5b506105be6004803603606081101561057e57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116b1565b005b8180156105cc57600080fd5b50610619600480360360408110156105e357600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611841565b005b81801561062757600080fd5b506107ee600480360360e081101561063e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156106c557600080fd5b8201836020820111156106d757600080fd5b803590602001918460018302840111640100000000831117156106f957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561075c57600080fd5b82018360208201111561076e57600080fd5b8035906020019184600183028401116401000000008311171561079057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080351515906020019092919050505061189f565b005b8180156107fc57600080fd5b506108496004803603604081101561081357600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c41565b005b81801561085757600080fd5b50610a29600480360361010081101561086f57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561090057600080fd5b82018360208201111561091257600080fd5b8035906020019184600183028401116401000000008311171561093457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561099757600080fd5b8201836020820111156109a957600080fd5b803590602001918460018302840111640100000000831117156109cb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803515159060200190929190505050611e6e565b005b818015610a3757600080fd5b50610a7b60048036036060811015610a4e57600080fd5b8101908080359060200190929190803560ff16906020019092919080359060200190929190505050612293565b005b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610ab457fe5b610b4b878760008888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611181565b610bd6856040518060400160405280601d81526020017f43616e6e6f74206275726e206d6f7265207468616e2062616c616e63650000008152508a60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123689092919063ffffffff16565b8860010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c3285896000015461242890919063ffffffff16565b88600001819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a409887878787876040518086815260200180602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f82011690508083019250505097505050505050505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a35050505050505050565b610e3f816040518060400160405280601381526020017f416d6f756e74206e6f7420617070726f766564000000000000000000000000008152508660020160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123689092919063ffffffff16565b8460020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ef0843385858560405180602001604052806000815250604051806020016040528060008152506000611e6e565b50505050565b803373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43616e6e6f74206265206f70657261746f7220666f722073656c66000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561102c5760008360050160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506110c4565b60018360030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a3505050565b60008260060160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe89560001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561123f57600080fd5b505afa158015611253573d6000803e3d6000fd5b505050506040513d602081101561126957600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611492578073ffffffffffffffffffffffffffffffffffffffff166375ab97828888888888886040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156113c15780820151818401526020810190506113a6565b50505050905090810190601f1680156113ee5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561142757808201518184015260208101905061140c565b50505050905090810190601f1680156114545780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b15801561147957600080fd5b505af115801561148d573d6000803e3d6000fd5b505050505b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114d257fe5b6114e981846000015461247290919063ffffffff16565b8360000181905550611545818460010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247290919063ffffffff16565b8360010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115b930600084846040518060200160405280600081525060405180602001604052806000815250600161189f565b8173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d83604051808281526020018060200180602001838103835260008152602001602001838103825260008152602001602001935050505060405180910390a38173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f43616e6e6f7420617070726f766520746f207a65726f2061646472657373000081525060200191505060405180910390fd5b808360020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b60018260060160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561195d57600080fd5b505afa158015611971573d6000803e3d6000fd5b505050506040513d602081101561198757600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611bb3578073ffffffffffffffffffffffffffffffffffffffff166223de298989898989896040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611ade578082015181840152602081019050611ac3565b50505050905090810190601f168015611b0b5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015611b44578082015181840152602081019050611b29565b50505050905090810190601f168015611b715780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b158015611b9657600080fd5b505af1158015611baa573d6000803e3d6000fd5b50505050611c37565b8115611c3657611bc2866124fa565b15611c35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4d7573742062652072656769737465726564207769746820455243313832300081525060200191505060405180910390fd5b5b5b5050505050505050565b803373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ce4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43616e6e6f74206265206f70657261746f7220666f722073656c66000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d775760018360050160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611e0f565b60008360030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415611ea557fe5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611f48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f43616e6e6f742073656e642066756e647320746f20302061646472657373000081525060200191505060405180910390fd5b611f56878787878787611181565b611fe1846040518060400160405280601e81526020017f416d6f756e74206578636565647320617661696c61626c652066756e647300008152508a60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123689092919063ffffffff16565b8860010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061207a848960010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247290919063ffffffff16565b8860010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015612172578082015181840152602081019050612157565b50505050905090810190601f16801561219f5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156121d85780820151818401526020810190506121bd565b50505050905090810190601f1680156122055780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a48473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a36122898787878787878761189f565b5050505050505050565b82600401309080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506123118260ff16600a0a8261250e90919063ffffffff16565b836000018190555082600001548360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6000838311158290612415576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156123da5780820151818401526020810190506123bf565b50505050905090810190601f1680156124075780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600061246a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612368565b905092915050565b6000808284019050838110156124f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080823b90506000811415915050919050565b600080831415612521576000905061258e565b600082840290508284828161253257fe5b0414612589576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806125956021913960400191505060405180910390fd5b809150505b9291505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212205b1bc9e7c526dd6814ae06bf1421b5e5b7b06e5ca3918259e44f1bc8e5be34a564736f6c63430006070033
Deployed Bytecode
0x7360ca4ec4412a3b319f4bd6366bb836395336b39730146080604052600436106100be5760003560e01c80638bde1d781161007b5780638bde1d781461055b5780638c96a55d146105c0578063a31b6c291461061b578063a77f752c146107f0578063b750dc461461084b578063bbce8abb14610a2b576100be565b806324394467146100c35780632e6a5609146101f2578063528aa17e1461027757806353a7daf4146102d25780635a7ecab91461032d5780636eeb9e0f146104f6575b600080fd5b8180156100cf57600080fd5b506101f0600480360360c08110156100e657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561015757600080fd5b82018360208201111561016957600080fd5b8035906020019184600183028401116401000000008311171561018b57600080fd5b9091929391929390803590602001906401000000008111156101ac57600080fd5b8201836020820111156101be57600080fd5b803590602001918460018302840111640100000000831117156101e057600080fd5b9091929391929390505050610a7d565b005b8180156101fe57600080fd5b506102756004803603608081101561021557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d77565b005b81801561028357600080fd5b506102d06004803603604081101561029a57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ef6565b005b8180156102de57600080fd5b5061032b600480360360408110156102f557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611123565b005b81801561033957600080fd5b506104f4600480360360c081101561035057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156103d757600080fd5b8201836020820111156103e957600080fd5b8035906020019184600183028401116401000000008311171561040b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561046e57600080fd5b82018360208201111561048057600080fd5b803590602001918460018302840111640100000000831117156104a257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611181565b005b81801561050257600080fd5b506105596004803603606081101561051957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061149b565b005b81801561056757600080fd5b506105be6004803603606081101561057e57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116b1565b005b8180156105cc57600080fd5b50610619600480360360408110156105e357600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611841565b005b81801561062757600080fd5b506107ee600480360360e081101561063e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156106c557600080fd5b8201836020820111156106d757600080fd5b803590602001918460018302840111640100000000831117156106f957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561075c57600080fd5b82018360208201111561076e57600080fd5b8035906020019184600183028401116401000000008311171561079057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080351515906020019092919050505061189f565b005b8180156107fc57600080fd5b506108496004803603604081101561081357600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c41565b005b81801561085757600080fd5b50610a29600480360361010081101561086f57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561090057600080fd5b82018360208201111561091257600080fd5b8035906020019184600183028401116401000000008311171561093457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561099757600080fd5b8201836020820111156109a957600080fd5b803590602001918460018302840111640100000000831117156109cb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803515159060200190929190505050611e6e565b005b818015610a3757600080fd5b50610a7b60048036036060811015610a4e57600080fd5b8101908080359060200190929190803560ff16906020019092919080359060200190929190505050612293565b005b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610ab457fe5b610b4b878760008888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611181565b610bd6856040518060400160405280601d81526020017f43616e6e6f74206275726e206d6f7265207468616e2062616c616e63650000008152508a60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123689092919063ffffffff16565b8860010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c3285896000015461242890919063ffffffff16565b88600001819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a409887878787876040518086815260200180602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f82011690508083019250505097505050505050505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a35050505050505050565b610e3f816040518060400160405280601381526020017f416d6f756e74206e6f7420617070726f766564000000000000000000000000008152508660020160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123689092919063ffffffff16565b8460020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ef0843385858560405180602001604052806000815250604051806020016040528060008152506000611e6e565b50505050565b803373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43616e6e6f74206265206f70657261746f7220666f722073656c66000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561102c5760008360050160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506110c4565b60018360030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a3505050565b60008260060160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe89560001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561123f57600080fd5b505afa158015611253573d6000803e3d6000fd5b505050506040513d602081101561126957600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611492578073ffffffffffffffffffffffffffffffffffffffff166375ab97828888888888886040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156113c15780820151818401526020810190506113a6565b50505050905090810190601f1680156113ee5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561142757808201518184015260208101905061140c565b50505050905090810190601f1680156114545780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b15801561147957600080fd5b505af115801561148d573d6000803e3d6000fd5b505050505b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114d257fe5b6114e981846000015461247290919063ffffffff16565b8360000181905550611545818460010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247290919063ffffffff16565b8360010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115b930600084846040518060200160405280600081525060405180602001604052806000815250600161189f565b8173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d83604051808281526020018060200180602001838103835260008152602001602001838103825260008152602001602001935050505060405180910390a38173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f43616e6e6f7420617070726f766520746f207a65726f2061646472657373000081525060200191505060405180910390fd5b808360020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b60018260060160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561195d57600080fd5b505afa158015611971573d6000803e3d6000fd5b505050506040513d602081101561198757600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611bb3578073ffffffffffffffffffffffffffffffffffffffff166223de298989898989896040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611ade578082015181840152602081019050611ac3565b50505050905090810190601f168015611b0b5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015611b44578082015181840152602081019050611b29565b50505050905090810190601f168015611b715780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b158015611b9657600080fd5b505af1158015611baa573d6000803e3d6000fd5b50505050611c37565b8115611c3657611bc2866124fa565b15611c35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4d7573742062652072656769737465726564207769746820455243313832300081525060200191505060405180910390fd5b5b5b5050505050505050565b803373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ce4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43616e6e6f74206265206f70657261746f7220666f722073656c66000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d775760018360050160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611e0f565b60008360030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415611ea557fe5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611f48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f43616e6e6f742073656e642066756e647320746f20302061646472657373000081525060200191505060405180910390fd5b611f56878787878787611181565b611fe1846040518060400160405280601e81526020017f416d6f756e74206578636565647320617661696c61626c652066756e647300008152508a60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123689092919063ffffffff16565b8860010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061207a848960010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247290919063ffffffff16565b8860010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015612172578082015181840152602081019050612157565b50505050905090810190601f16801561219f5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156121d85780820151818401526020810190506121bd565b50505050905090810190601f1680156122055780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a48473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a36122898787878787878761189f565b5050505050505050565b82600401309080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506123118260ff16600a0a8261250e90919063ffffffff16565b836000018190555082600001548360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6000838311158290612415576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156123da5780820151818401526020810190506123bf565b50505050905090810190601f1680156124075780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600061246a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612368565b905092915050565b6000808284019050838110156124f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080823b90506000811415915050919050565b600080831415612521576000905061258e565b600082840290508284828161253257fe5b0414612589576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806125956021913960400191505060405180910390fd5b809150505b9291505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212205b1bc9e7c526dd6814ae06bf1421b5e5b7b06e5ca3918259e44f1bc8e5be34a564736f6c63430006070033
Deployed Bytecode Sourcemap
11835:6886:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;15895:688:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15895:688:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;15895:688:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;15895:688:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;15895:688:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;15895:688:0;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;15895:688:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;15895:688:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;15895:688:0;;;;;;;;;;;;:::i;:::-;;13672:319;;5:9:-1;2:2;;;27:1;24;17:12;2:2;13672:319:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;13672:319:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14290:375;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14290:375:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;14290:375:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15191:137;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15191:137:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;15191:137:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18098:399;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18098:399:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;18098:399:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;18098:399:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;18098:399:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;18098:399:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;18098:399:0;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;18098:399:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;18098:399:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;18098:399:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;18098:399:0;;;;;;;;;;;;;;;:::i;:::-;;15334:555;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15334:555:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;15334:555:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13997:287;;5:9:-1;2:2;;;27:1;24;17:12;2:2;13997:287:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;13997:287:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15046:139;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15046:139:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;15046:139:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17564:528;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17564:528:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;17564:528:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;17564:528:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;17564:528:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;17564:528:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;17564:528:0;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;17564:528:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;17564:528:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;17564:528:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;17564:528:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14671:369;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14671:369:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;14671:369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16589:969;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16589:969:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;16589:969:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;16589:969:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;16589:969:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;16589:969:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;16589:969:0;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;16589:969:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;16589:969:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;16589:969:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;16589:969:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13356:310;;5:9:-1;2:2;;;27:1;24;17:12;2:2;13356:310:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;13356:310:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15895:688;16101:1;16084:19;;:5;:19;;;;16077:27;;;;16210:69;16219:9;16230:5;16245:1;16249:7;16258:5;;16210:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;16210:69:0;;;;;;16265:13;;16210:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;16210:69:0;;;;;;:8;:69::i;:::-;16318:73;16350:7;16318:73;;;;;;;;;;;;;;;;;:11;:20;;:27;16339:5;16318:27;;;;;;;;;;;;;;;;:31;;:73;;;;;:::i;:::-;16288:11;:20;;:27;16309:5;16288:27;;;;;;;;;;;;;;;:103;;;;16424:36;16452:7;16424:11;:23;;;:27;;:36;;;;:::i;:::-;16398:11;:23;;:62;;;;16492:5;16474:55;;16481:9;16474:55;;;16499:7;16508:5;;16515:13;;16474:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;16474:55:0;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;16474:55:0;;;;;;;;;;;;;;;;;;16565:1;16541:36;;16550:5;16541:36;;;16569:7;16541:36;;;;;;;;;;;;;;;;;;15895:688;;;;;;;;:::o;13672:319::-;13837:75;13882:6;13837:75;;;;;;;;;;;;;;;;;:11;:21;;:28;13859:5;13837:28;;;;;;;;;;;;;;;:40;13866:10;13837:40;;;;;;;;;;;;;;;;:44;;:75;;;;;:::i;:::-;13794:11;:21;;:28;13816:5;13794:28;;;;;;;;;;;;;;;:40;13823:10;13794:40;;;;;;;;;;;;;;;:118;;;;13919:66;13926:11;13939:10;13951:5;13958:3;13963:6;13919:66;;;;;;;;;;;;;;;;;;;;;;;;13979:5;13919:6;:66::i;:::-;13672:319;;;;:::o;14290:375::-;14396:9;13294:10;13281:23;;:9;:23;;;;13273:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14456:4:::1;14435:26;;:9;:26;;;14431:175;;;14521:5;14470:11;:36;;:48;14507:10;14470:48;;;;;;;;;;;;;;;;:56;;;;;;;;;;;;;;;;;;14431:175;;;14602:4;14545:11;:31;;:42;14577:9;14545:42;;;;;;;;;;;;;;;:54;14588:10;14545:54;;;;;;;;;;;;;;;;:61;;;;;;;;;;;;;;;;;;14431:175;14648:10;14618:41;;14637:9;14618:41;;;;;;;;;;;;14290:375:::0;;;:::o;15191:137::-;15317:5;15286:11;:19;;:28;15306:7;15286:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;15191:137;;:::o;18098:399::-;18257:19;12751:42;18279:40;;;18320:5;12973:66;18327:25;;18279:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18279:74:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18279:74:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;18279:74:0;;;;;;;;;;;;;;;;18257:96;;18387:1;18364:25;;:11;:25;;;18360:131;;18412:11;18398:39;;;18438:9;18449:5;18456:3;18461:7;18470:5;18477:13;18398:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;18398:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;18398:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18398:93:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18398:93:0;;;;18360:131;18098:399;;;;;;;:::o;15334:555::-;15458:1;15443:17;;:3;:17;;;;15436:25;;;;15496:36;15524:7;15496:11;:23;;;:27;;:36;;;;:::i;:::-;15470:11;:23;;:62;;;;15567:38;15597:7;15567:11;:20;;:25;15588:3;15567:25;;;;;;;;;;;;;;;;:29;;:38;;;;:::i;:::-;15539:11;:20;;:25;15560:3;15539:25;;;;;;;;;;;;;;;:66;;;;15714;15734:4;15749:1;15753:3;15758:7;15714:66;;;;;;;;;;;;;;;;;;;;;;;;15775:4;15714:11;:66::i;:::-;15816:3;15794:43;;15809:4;15794:43;;;15821:7;15794:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15870:3;15849:34;;15866:1;15849:34;;;15875:7;15849:34;;;;;;;;;;;;;;;;;;15334:555;;;:::o;13997:287::-;14132:1;14112:22;;:8;:22;;;;14104:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14222:6;14176:11;:21;;:33;14198:10;14176:33;;;;;;;;;;;;;;;:43;14210:8;14176:43;;;;;;;;;;;;;;;:52;;;;14261:8;14240:38;;14249:10;14240:38;;;14271:6;14240:38;;;;;;;;;;;;;;;;;;13997:287;;;:::o;15046:139::-;15175:4;15144:11;:19;;:28;15164:7;15144:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;15046:139;;:::o;17564:528::-;17747:19;12751:42;17769:40;;;17810:3;13142:66;17815:28;;17769:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17769:75:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17769:75:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;17769:75:0;;;;;;;;;;;;;;;;17747:97;;17878:1;17855:25;;:11;:25;;;17851:235;;17906:11;17889:44;;;17934:9;17945:5;17952:3;17957:7;17966:5;17973:13;17889:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17889:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17889:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17889:98:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17889:98:0;;;;17851:235;;;18003:14;17999:87;;;18035:15;18046:3;18035:10;:15::i;:::-;18034:16;18026:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17999:87;17851:235;17564:528;;;;;;;;:::o;14671:369::-;14774:9;13294:10;13281:23;;:9;:23;;;;13273:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14834:4:::1;14813:26;;:9;:26;;;14809:175;;;14899:4;14848:11;:36;;:48;14885:10;14848:48;;;;;;;;;;;;;;;;:55;;;;;;;;;;;;;;;;;;14809:175;;;14979:5;14922:11;:31;;:42;14954:9;14922:42;;;;;;;;;;;;;;;:54;14965:10;14922:54;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;14809:175;15023:10;14996:38;;15012:9;14996:38;;;;;;;;;;;;14671:369:::0;;;:::o;16589:969::-;16823:1;16806:19;;:5;:19;;;;16799:27;;;;16858:1;16843:17;;:3;:17;;;;16835:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17001:62;17010:9;17021:5;17028:3;17033:7;17042:5;17049:13;17001:8;:62::i;:::-;17102:74;17134:7;17102:74;;;;;;;;;;;;;;;;;:11;:20;;:27;17123:5;17102:27;;;;;;;;;;;;;;;;:31;;:74;;;;;:::i;:::-;17072:11;:20;;:27;17093:5;17072:27;;;;;;;;;;;;;;;:104;;;;17211:38;17241:7;17211:11;:20;;:25;17232:3;17211:25;;;;;;;;;;;;;;;;:29;;:38;;;;:::i;:::-;17183:11;:20;;:25;17204:3;17183:25;;;;;;;;;;;;;;;:66;;;;17286:3;17263:58;;17279:5;17263:58;;17268:9;17263:58;;;17291:7;17300:5;17307:13;17263:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17263:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17263:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17349:3;17333:29;;17342:5;17333:29;;;17354:7;17333:29;;;;;;;;;;;;;;;;;;17471:81;17483:9;17494:5;17501:3;17506:7;17515:5;17522:13;17537:14;17471:11;:81::i;:::-;16589:969;;;;;;;;:::o;13356:310::-;13472:11;:28;;13514:4;13472:48;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;13472:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13553:42;13584:9;13576:18;;13572:2;:22;13553:14;:18;;:42;;;;:::i;:::-;13527:11;:23;;:68;;;;13637:11;:23;;;13602:11;:20;;:32;13623:10;13602:32;;;;;;;;;;;;;;;:58;;;;13356:310;;;:::o;7746:192::-;7832:7;7865:1;7860;:6;;7868:12;7852:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7852:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7892:9;7908:1;7904;:5;7892:17;;7929:1;7922:8;;;7746:192;;;;;:::o;7273:136::-;7331:7;7358:43;7362:1;7365;7358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;7351:50;;7273:136;;;;:::o;6817:181::-;6875:7;6895:9;6911:1;6907;:5;6895:17;;6936:1;6931;:6;;6923:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6989:1;6982:8;;;6817:181;;;;:::o;18503:215::-;18578:16;18606:12;18665:8;18653:21;18645:29;;18711:1;18703:4;:9;;18689:23;;18503:215;;;;:::o;8189:471::-;8247:7;8497:1;8492;:6;8488:47;;;8522:1;8515:8;;;;8488:47;8547:9;8563:1;8559;:5;8547:17;;8592:1;8587;8583;:5;;;;;;:10;8575:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8651:1;8644:8;;;8189:471;;;;;:::o
Swarm Source
ipfs://5b1bc9e7c526dd6814ae06bf1421b5e5b7b06e5ca3918259e44f1bc8e5be34a5
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 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.