Overview
POL Balance
0 POL
POL Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
Sponsored
Latest 25 from a total of 5,630 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Owners | 61834818 | 26 hrs ago | IN | 0 POL | 0.04231187 | ||||
Set Owners | 61410048 | 11 days ago | IN | 0 POL | 0.1683757 | ||||
Set Owners | 60737949 | 28 days ago | IN | 0 POL | 0.00239532 | ||||
Set Owners | 60216782 | 41 days ago | IN | 0 POL | 0.01017287 | ||||
Set Owners | 60024750 | 46 days ago | IN | 0 POL | 0.01726271 | ||||
Set Owners | 60023251 | 46 days ago | IN | 0 POL | 0.03740009 | ||||
Set Owners | 59795094 | 52 days ago | IN | 0 POL | 0.0175629 | ||||
Set Owners | 59764738 | 53 days ago | IN | 0 POL | 0.0107633 | ||||
Set Owners | 59764597 | 53 days ago | IN | 0 POL | 0.0107633 | ||||
Set Owners | 59743219 | 53 days ago | IN | 0 POL | 0.0129411 | ||||
Set Owners | 59383453 | 62 days ago | IN | 0 POL | 0.00217205 | ||||
Set Owners | 59383312 | 62 days ago | IN | 0 POL | 0.00285599 | ||||
Set Owners | 59161925 | 68 days ago | IN | 0 POL | 0.00239532 | ||||
Set Owners | 59106391 | 69 days ago | IN | 0 POL | 0.04066807 | ||||
Set Owners | 59076223 | 70 days ago | IN | 0 POL | 0.00239544 | ||||
Set Owners | 58831162 | 76 days ago | IN | 0 POL | 0.00343847 | ||||
Set Owners | 58590677 | 82 days ago | IN | 0 POL | 0.01225723 | ||||
Set Owners | 58256557 | 90 days ago | IN | 0 POL | 0.00556311 | ||||
Set Owners | 58125079 | 94 days ago | IN | 0 POL | 0.01991587 | ||||
Set Owners | 58010555 | 97 days ago | IN | 0 POL | 0.0104521 | ||||
Set Owners | 57959189 | 98 days ago | IN | 0 POL | 0.01015152 | ||||
Set Owners | 57373866 | 113 days ago | IN | 0 POL | 0.0037755 | ||||
Set Owners | 57368048 | 113 days ago | IN | 0 POL | 0.00239532 | ||||
Set Owners | 57155797 | 119 days ago | IN | 0 POL | 0.00208776 | ||||
Set Owners | 57154408 | 119 days ago | IN | 0 POL | 0.11224202 |
Loading...
Loading
Contract Name:
LuchaMirror
Compiler Version
v0.8.0+commit.c7dfd78e
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: Unlicense pragma solidity ^0.8.0; // Credit: https://github.com/geeogi/loot-mirror import "@openzeppelin/contracts/access/AccessControl.sol"; contract LuchaMirror is AccessControl { // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from owner to list of owned token IDs mapping(address => mapping(uint256 => uint256)) private _ownedTokens; // Struct for updating the owners struct OwnerUpdate { address owner; uint256[] tokenIds; } constructor() { _setupRole(DEFAULT_ADMIN_ROLE, msg.sender); } function balanceOf(address owner) public view returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } function ownerOf(uint256 tokenId) external view returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256) { require(index < balanceOf(owner), "ERC721Enumerable: owner index out of bounds"); return _ownedTokens[owner][index]; } /** * The owner of this contract can call this function to * update the owner states * * The update should include entries for incoming owners and * any existing owners whose balances have changed * * It can also include entries for owners whose balances * haven't yet been indexed by the contract * * It's not necessary to include entries for outgoing owners (they'll * be deleted automatically) */ function setOwners(OwnerUpdate[] calldata _ownerUpdates) external onlyRole(DEFAULT_ADMIN_ROLE) { // For each of the owner updates for (uint256 i = 0; i < _ownerUpdates.length; i++) { address owner = _ownerUpdates[i].owner; uint256[] calldata tokenIds = _ownerUpdates[i].tokenIds; // Reset the owned tokens of the owner uint256 ownerBalance = _balances[owner]; for (uint256 j = 0; j < ownerBalance; j++) { delete _ownedTokens[owner][j]; } // Reset the balance of the owner delete _balances[owner]; // For each of the token ids for (uint256 k = 0; k < tokenIds.length; k++) { address previousOwner = _owners[tokenIds[k]]; // Reset the owned tokens of the previous owner uint256 previousOwnerBalance = _balances[previousOwner]; for (uint256 l = 0; l < previousOwnerBalance; l++) { delete _ownedTokens[previousOwner][l]; } // Reset the balances of the previous owner delete _balances[previousOwner]; // Reset the owner of the token ids delete _owners[tokenIds[k]]; } } // For each of the owner updates for (uint256 k = 0; k < _ownerUpdates.length; k++) { address owner = _ownerUpdates[k].owner; uint256[] calldata tokenIds = _ownerUpdates[k].tokenIds; // Set the balances of the owner _balances[owner] = tokenIds.length; for (uint256 l = 0; l < tokenIds.length; l++) { // Set the owner of the token ids _owners[tokenIds[l]] = owner; // Set the owned tokens of the owner _ownedTokens[owner][l] = tokenIds[l]; } } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IAccessControl.sol"; import "../utils/Context.sol"; import "../utils/Strings.sol"; import "../utils/introspection/ERC165.sol"; /** * @dev Contract module that allows children to implement role-based access * control mechanisms. This is a lightweight version that doesn't allow enumerating role * members except through off-chain means by accessing the contract event logs. Some * applications may benefit from on-chain enumerability, for those cases see * {AccessControlEnumerable}. * * Roles are referred to by their `bytes32` identifier. These should be exposed * in the external API and be unique. The best way to achieve this is by * using `public constant` hash digests: * * ``` * bytes32 public constant MY_ROLE = keccak256("MY_ROLE"); * ``` * * Roles can be used to represent a set of permissions. To restrict access to a * function call, use {hasRole}: * * ``` * function foo() public { * require(hasRole(MY_ROLE, msg.sender)); * ... * } * ``` * * Roles can be granted and revoked dynamically via the {grantRole} and * {revokeRole} functions. Each role has an associated admin role, and only * accounts that have a role's admin role can call {grantRole} and {revokeRole}. * * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means * that only accounts with this role will be able to grant or revoke other * roles. More complex role relationships can be created by using * {_setRoleAdmin}. * * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to * grant and revoke this role. Extra precautions should be taken to secure * accounts that have been granted it. */ abstract contract AccessControl is Context, IAccessControl, ERC165 { struct RoleData { mapping(address => bool) members; bytes32 adminRole; } mapping(bytes32 => RoleData) private _roles; bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; /** * @dev Modifier that checks that an account has a specific role. Reverts * with a standardized message including the required role. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ * * _Available since v4.1._ */ modifier onlyRole(bytes32 role) { _checkRole(role, _msgSender()); _; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId); } /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) public view override returns (bool) { return _roles[role].members[account]; } /** * @dev Revert with a standard message if `account` is missing `role`. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ */ function _checkRole(bytes32 role, address account) internal view { if (!hasRole(role, account)) { revert( string( abi.encodePacked( "AccessControl: account ", Strings.toHexString(uint160(account), 20), " is missing role ", Strings.toHexString(uint256(role), 32) ) ) ); } } /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) public view override returns (bytes32) { return _roles[role].adminRole; } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _grantRole(role, account); } /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _revokeRole(role, account); } /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been granted `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) public virtual override { require(account == _msgSender(), "AccessControl: can only renounce roles for self"); _revokeRole(role, account); } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. Note that unlike {grantRole}, this function doesn't perform any * checks on the calling account. * * [WARNING] * ==== * This function should only be called from the constructor when setting * up the initial roles for the system. * * Using this function in any other way is effectively circumventing the admin * system imposed by {AccessControl}. * ==== */ function _setupRole(bytes32 role, address account) internal virtual { _grantRole(role, account); } /** * @dev Sets `adminRole` as ``role``'s admin role. * * Emits a {RoleAdminChanged} event. */ function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { bytes32 previousAdminRole = getRoleAdmin(role); _roles[role].adminRole = adminRole; emit RoleAdminChanged(role, previousAdminRole, adminRole); } function _grantRole(bytes32 role, address account) private { if (!hasRole(role, account)) { _roles[role].members[account] = true; emit RoleGranted(role, account, _msgSender()); } } function _revokeRole(bytes32 role, address account) private { if (hasRole(role, account)) { _roles[role].members[account] = false; emit RoleRevoked(role, account, _msgSender()); } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev External interface of AccessControl declared to support ERC165 detection. */ interface IAccessControl { /** * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` * * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite * {RoleAdminChanged} not being emitted signaling this. * * _Available since v3.1._ */ event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); /** * @dev Emitted when `account` is granted `role`. * * `sender` is the account that originated the contract call, an admin role * bearer except when using {AccessControl-_setupRole}. */ event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Emitted when `account` is revoked `role`. * * `sender` is the account that originated the contract call: * - if using `revokeRole`, it is the admin role bearer * - if using `renounceRole`, it is the role bearer (i.e. `account`) */ event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) external view returns (bool); /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {AccessControl-_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) external view returns (bytes32); /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) external; /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) external; /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been granted `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"internalType":"struct LuchaMirror.OwnerUpdate[]","name":"_ownerUpdates","type":"tuple[]"}],"name":"setOwners","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50620000276000801b336200002d60201b60201c565b620001a6565b6200003f82826200004360201b60201c565b5050565b6200005582826200013460201b60201c565b6200013057600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620000d56200019e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b611c3c80620001b66000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806336568abe1161007157806336568abe146101765780636352211e1461019257806370a08231146101c257806391d14854146101f2578063a217fddf14610222578063d547741f14610240576100a9565b806301ffc9a7146100ae578063202bfe30146100de578063248a9ca3146100fa5780632f2ff15d1461012a5780632f745c5914610146575b600080fd5b6100c860048036038101906100c3919061143c565b61025c565b6040516100d591906117e1565b60405180910390f35b6100f860048036038101906100f39190611392565b6102d6565b005b610114600480360381019061010f91906113d7565b610951565b60405161012191906117fc565b60405180910390f35b610144600480360381019061013f9190611400565b610970565b005b610160600480360381019061015b9190611356565b610999565b60405161016d91906118d9565b60405180910390f35b610190600480360381019061018b9190611400565b610a3e565b005b6101ac60048036038101906101a79190611465565b610ac1565b6040516101b991906117c6565b60405180910390f35b6101dc60048036038101906101d7919061132d565b610b73565b6040516101e991906118d9565b60405180910390f35b61020c60048036038101906102079190611400565b610c2b565b60405161021991906117e1565b60405180910390f35b61022a610c95565b60405161023791906117fc565b60405180910390f35b61025a60048036038101906102559190611400565b610c9c565b005b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102cf57506102ce82610cc5565b5b9050919050565b6000801b6102eb816102e6610d2f565b610d37565b60005b838390508110156106d6576000848483818110610334577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002810190610346919061194b565b6000016020810190610358919061132d565b9050366000868685818110610396577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020028101906103a8919061194b565b80602001906103b791906118f4565b915091506000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060005b8181101561047157600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002060009055808061046990611b21565b915050610402565b50600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905560005b838390508110156106be57600060016000868685818110610502577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060005b818110156105f057600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008281526020019081526020016000206000905580806105e890611b21565b915050610581565b50600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905560016000878786818110610671577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055505080806106b690611b21565b9150506104b8565b505050505080806106ce90611b21565b9150506102ee565b5060005b8383905081101561094b576000848483818110610720577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002810190610732919061194b565b6000016020810190610744919061132d565b9050366000868685818110610782577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002810190610794919061194b565b80602001906107a391906118f4565b9150915081819050600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b8282905081101561093457836001600085858581811061083a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508282828181106108c6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550808061092c90611b21565b9150506107f1565b50505050808061094390611b21565b9150506106da565b50505050565b6000806000838152602001908152602001600020600101549050919050565b61097982610951565b61098a81610985610d2f565b610d37565b6109948383610dd4565b505050565b60006109a483610b73565b82106109e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dc90611859565b60405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610a46610d2f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaa906118b9565b60405180910390fd5b610abd8282610eb4565b5050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6190611899565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdb90611879565b60405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b610ca582610951565b610cb681610cb1610d2f565b610d37565b610cc08383610eb4565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b610d418282610c2b565b610dd057610d668173ffffffffffffffffffffffffffffffffffffffff166014610f95565b610d748360001c6020610f95565b604051602001610d8592919061178c565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc79190611817565b60405180910390fd5b5050565b610dde8282610c2b565b610eb057600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610e55610d2f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b610ebe8282610c2b565b15610f9157600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610f36610d2f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b606060006002836002610fa891906119ec565b610fb29190611996565b67ffffffffffffffff811115610ff1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156110235781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611081577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061110b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261114b91906119ec565b6111559190611996565b90505b6001811115611241577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106111bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1a60f81b8282815181106111fa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061123a90611af7565b9050611158565b5060008414611285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127c90611839565b60405180910390fd5b8091505092915050565b60008135905061129e81611baa565b92915050565b60008083601f8401126112b657600080fd5b8235905067ffffffffffffffff8111156112cf57600080fd5b6020830191508360208202830111156112e757600080fd5b9250929050565b6000813590506112fd81611bc1565b92915050565b60008135905061131281611bd8565b92915050565b60008135905061132781611bef565b92915050565b60006020828403121561133f57600080fd5b600061134d8482850161128f565b91505092915050565b6000806040838503121561136957600080fd5b60006113778582860161128f565b925050602061138885828601611318565b9150509250929050565b600080602083850312156113a557600080fd5b600083013567ffffffffffffffff8111156113bf57600080fd5b6113cb858286016112a4565b92509250509250929050565b6000602082840312156113e957600080fd5b60006113f7848285016112ee565b91505092915050565b6000806040838503121561141357600080fd5b6000611421858286016112ee565b92505060206114328582860161128f565b9150509250929050565b60006020828403121561144e57600080fd5b600061145c84828501611303565b91505092915050565b60006020828403121561147757600080fd5b600061148584828501611318565b91505092915050565b61149781611a46565b82525050565b6114a681611a58565b82525050565b6114b581611a64565b82525050565b60006114c68261196f565b6114d0818561197a565b93506114e0818560208601611ac4565b6114e981611b99565b840191505092915050565b60006114ff8261196f565b611509818561198b565b9350611519818560208601611ac4565b80840191505092915050565b600061153260208361197a565b91507f537472696e67733a20686578206c656e67746820696e73756666696369656e746000830152602082019050919050565b6000611572602b8361197a565b91507f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008301527f74206f6620626f756e64730000000000000000000000000000000000000000006020830152604082019050919050565b60006115d8602a8361197a565b91507f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008301527f726f2061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b600061163e60298361197a565b91507f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008301527f656e7420746f6b656e00000000000000000000000000000000000000000000006020830152604082019050919050565b60006116a460178361198b565b91507f416363657373436f6e74726f6c3a206163636f756e74200000000000000000006000830152601782019050919050565b60006116e460118361198b565b91507f206973206d697373696e6720726f6c65200000000000000000000000000000006000830152601182019050919050565b6000611724602f8361197a565b91507f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008301527f20726f6c657320666f722073656c6600000000000000000000000000000000006020830152604082019050919050565b61178681611aba565b82525050565b600061179782611697565b91506117a382856114f4565b91506117ae826116d7565b91506117ba82846114f4565b91508190509392505050565b60006020820190506117db600083018461148e565b92915050565b60006020820190506117f6600083018461149d565b92915050565b600060208201905061181160008301846114ac565b92915050565b6000602082019050818103600083015261183181846114bb565b905092915050565b6000602082019050818103600083015261185281611525565b9050919050565b6000602082019050818103600083015261187281611565565b9050919050565b60006020820190508181036000830152611892816115cb565b9050919050565b600060208201905081810360008301526118b281611631565b9050919050565b600060208201905081810360008301526118d281611717565b9050919050565b60006020820190506118ee600083018461177d565b92915050565b6000808335600160200384360303811261190d57600080fd5b80840192508235915067ffffffffffffffff82111561192b57600080fd5b60208301925060208202360383131561194357600080fd5b509250929050565b60008235600160400383360303811261196357600080fd5b80830191505092915050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b60006119a182611aba565b91506119ac83611aba565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156119e1576119e0611b6a565b5b828201905092915050565b60006119f782611aba565b9150611a0283611aba565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611a3b57611a3a611b6a565b5b828202905092915050565b6000611a5182611a9a565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015611ae2578082015181840152602081019050611ac7565b83811115611af1576000848401525b50505050565b6000611b0282611aba565b91506000821415611b1657611b15611b6a565b5b600182039050919050565b6000611b2c82611aba565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611b5f57611b5e611b6a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000601f19601f8301169050919050565b611bb381611a46565b8114611bbe57600080fd5b50565b611bca81611a64565b8114611bd557600080fd5b50565b611be181611a6e565b8114611bec57600080fd5b50565b611bf881611aba565b8114611c0357600080fd5b5056fea264697066735822122078fe549a67aab1d320131f6ca63cbb51abd03cc3ff0b154aef45197e383f0b3b64736f6c63430008000033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806336568abe1161007157806336568abe146101765780636352211e1461019257806370a08231146101c257806391d14854146101f2578063a217fddf14610222578063d547741f14610240576100a9565b806301ffc9a7146100ae578063202bfe30146100de578063248a9ca3146100fa5780632f2ff15d1461012a5780632f745c5914610146575b600080fd5b6100c860048036038101906100c3919061143c565b61025c565b6040516100d591906117e1565b60405180910390f35b6100f860048036038101906100f39190611392565b6102d6565b005b610114600480360381019061010f91906113d7565b610951565b60405161012191906117fc565b60405180910390f35b610144600480360381019061013f9190611400565b610970565b005b610160600480360381019061015b9190611356565b610999565b60405161016d91906118d9565b60405180910390f35b610190600480360381019061018b9190611400565b610a3e565b005b6101ac60048036038101906101a79190611465565b610ac1565b6040516101b991906117c6565b60405180910390f35b6101dc60048036038101906101d7919061132d565b610b73565b6040516101e991906118d9565b60405180910390f35b61020c60048036038101906102079190611400565b610c2b565b60405161021991906117e1565b60405180910390f35b61022a610c95565b60405161023791906117fc565b60405180910390f35b61025a60048036038101906102559190611400565b610c9c565b005b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102cf57506102ce82610cc5565b5b9050919050565b6000801b6102eb816102e6610d2f565b610d37565b60005b838390508110156106d6576000848483818110610334577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002810190610346919061194b565b6000016020810190610358919061132d565b9050366000868685818110610396577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020028101906103a8919061194b565b80602001906103b791906118f4565b915091506000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060005b8181101561047157600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002060009055808061046990611b21565b915050610402565b50600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905560005b838390508110156106be57600060016000868685818110610502577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060005b818110156105f057600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008281526020019081526020016000206000905580806105e890611b21565b915050610581565b50600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905560016000878786818110610671577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055505080806106b690611b21565b9150506104b8565b505050505080806106ce90611b21565b9150506102ee565b5060005b8383905081101561094b576000848483818110610720577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002810190610732919061194b565b6000016020810190610744919061132d565b9050366000868685818110610782577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002810190610794919061194b565b80602001906107a391906118f4565b9150915081819050600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b8282905081101561093457836001600085858581811061083a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508282828181106108c6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550808061092c90611b21565b9150506107f1565b50505050808061094390611b21565b9150506106da565b50505050565b6000806000838152602001908152602001600020600101549050919050565b61097982610951565b61098a81610985610d2f565b610d37565b6109948383610dd4565b505050565b60006109a483610b73565b82106109e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dc90611859565b60405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610a46610d2f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaa906118b9565b60405180910390fd5b610abd8282610eb4565b5050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6190611899565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdb90611879565b60405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b610ca582610951565b610cb681610cb1610d2f565b610d37565b610cc08383610eb4565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b610d418282610c2b565b610dd057610d668173ffffffffffffffffffffffffffffffffffffffff166014610f95565b610d748360001c6020610f95565b604051602001610d8592919061178c565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc79190611817565b60405180910390fd5b5050565b610dde8282610c2b565b610eb057600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610e55610d2f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b610ebe8282610c2b565b15610f9157600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610f36610d2f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b606060006002836002610fa891906119ec565b610fb29190611996565b67ffffffffffffffff811115610ff1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156110235781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611081577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061110b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261114b91906119ec565b6111559190611996565b90505b6001811115611241577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106111bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1a60f81b8282815181106111fa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061123a90611af7565b9050611158565b5060008414611285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127c90611839565b60405180910390fd5b8091505092915050565b60008135905061129e81611baa565b92915050565b60008083601f8401126112b657600080fd5b8235905067ffffffffffffffff8111156112cf57600080fd5b6020830191508360208202830111156112e757600080fd5b9250929050565b6000813590506112fd81611bc1565b92915050565b60008135905061131281611bd8565b92915050565b60008135905061132781611bef565b92915050565b60006020828403121561133f57600080fd5b600061134d8482850161128f565b91505092915050565b6000806040838503121561136957600080fd5b60006113778582860161128f565b925050602061138885828601611318565b9150509250929050565b600080602083850312156113a557600080fd5b600083013567ffffffffffffffff8111156113bf57600080fd5b6113cb858286016112a4565b92509250509250929050565b6000602082840312156113e957600080fd5b60006113f7848285016112ee565b91505092915050565b6000806040838503121561141357600080fd5b6000611421858286016112ee565b92505060206114328582860161128f565b9150509250929050565b60006020828403121561144e57600080fd5b600061145c84828501611303565b91505092915050565b60006020828403121561147757600080fd5b600061148584828501611318565b91505092915050565b61149781611a46565b82525050565b6114a681611a58565b82525050565b6114b581611a64565b82525050565b60006114c68261196f565b6114d0818561197a565b93506114e0818560208601611ac4565b6114e981611b99565b840191505092915050565b60006114ff8261196f565b611509818561198b565b9350611519818560208601611ac4565b80840191505092915050565b600061153260208361197a565b91507f537472696e67733a20686578206c656e67746820696e73756666696369656e746000830152602082019050919050565b6000611572602b8361197a565b91507f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008301527f74206f6620626f756e64730000000000000000000000000000000000000000006020830152604082019050919050565b60006115d8602a8361197a565b91507f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008301527f726f2061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b600061163e60298361197a565b91507f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008301527f656e7420746f6b656e00000000000000000000000000000000000000000000006020830152604082019050919050565b60006116a460178361198b565b91507f416363657373436f6e74726f6c3a206163636f756e74200000000000000000006000830152601782019050919050565b60006116e460118361198b565b91507f206973206d697373696e6720726f6c65200000000000000000000000000000006000830152601182019050919050565b6000611724602f8361197a565b91507f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008301527f20726f6c657320666f722073656c6600000000000000000000000000000000006020830152604082019050919050565b61178681611aba565b82525050565b600061179782611697565b91506117a382856114f4565b91506117ae826116d7565b91506117ba82846114f4565b91508190509392505050565b60006020820190506117db600083018461148e565b92915050565b60006020820190506117f6600083018461149d565b92915050565b600060208201905061181160008301846114ac565b92915050565b6000602082019050818103600083015261183181846114bb565b905092915050565b6000602082019050818103600083015261185281611525565b9050919050565b6000602082019050818103600083015261187281611565565b9050919050565b60006020820190508181036000830152611892816115cb565b9050919050565b600060208201905081810360008301526118b281611631565b9050919050565b600060208201905081810360008301526118d281611717565b9050919050565b60006020820190506118ee600083018461177d565b92915050565b6000808335600160200384360303811261190d57600080fd5b80840192508235915067ffffffffffffffff82111561192b57600080fd5b60208301925060208202360383131561194357600080fd5b509250929050565b60008235600160400383360303811261196357600080fd5b80830191505092915050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b60006119a182611aba565b91506119ac83611aba565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156119e1576119e0611b6a565b5b828201905092915050565b60006119f782611aba565b9150611a0283611aba565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611a3b57611a3a611b6a565b5b828202905092915050565b6000611a5182611a9a565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015611ae2578082015181840152602081019050611ac7565b83811115611af1576000848401525b50505050565b6000611b0282611aba565b91506000821415611b1657611b15611b6a565b5b600182039050919050565b6000611b2c82611aba565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611b5f57611b5e611b6a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000601f19601f8301169050919050565b611bb381611a46565b8114611bbe57600080fd5b50565b611bca81611a64565b8114611bd557600080fd5b50565b611be181611a6e565b8114611bec57600080fd5b50565b611bf881611aba565b8114611c0357600080fd5b5056fea264697066735822122078fe549a67aab1d320131f6ca63cbb51abd03cc3ff0b154aef45197e383f0b3b64736f6c63430008000033
Loading...
Loading
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.