More Info
Private Name Tags
ContractCreator
Latest 11 from a total of 11 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Grant Role | 15415354 | 881 days ago | IN | 0 ETH | 0.00059559 | ||||
Grant Role | 15092987 | 931 days ago | IN | 0 ETH | 0.00107002 | ||||
Grant Role | 15092987 | 931 days ago | IN | 0 ETH | 0.00107027 | ||||
Grant Role | 15092987 | 931 days ago | IN | 0 ETH | 0.00107027 | ||||
Grant Role | 15092987 | 931 days ago | IN | 0 ETH | 0.00107027 | ||||
Grant Role | 15092985 | 931 days ago | IN | 0 ETH | 0.00089195 | ||||
Grant Role | 15092985 | 931 days ago | IN | 0 ETH | 0.00089195 | ||||
Grant Role | 15092981 | 931 days ago | IN | 0 ETH | 0.00058983 | ||||
Grant Role | 15092980 | 931 days ago | IN | 0 ETH | 0.00105963 | ||||
Grant Role | 15056374 | 937 days ago | IN | 0 ETH | 0.00066823 | ||||
Grant Role | 15056346 | 937 days ago | IN | 0 ETH | 0.00064639 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
AggregatedFinanceTimelock
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-05-17 */ // File: contracts/@openzeppelin/token/ERC721/IERC721Receiver.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File: contracts/@openzeppelin/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) 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); } // File: contracts/@openzeppelin/token/ERC1155/IERC1155Receiver.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol) pragma solidity ^0.8.0; /** * @dev _Available since v3.1._ */ interface IERC1155Receiver is IERC165 { /** * @dev Handles the receipt of a single ERC1155 token type. This function is * called at the end of a `safeTransferFrom` after the balance has been updated. * * NOTE: To accept the transfer, this must return * `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` * (i.e. 0xf23a6e61, or its own function selector). * * @param operator The address which initiated the transfer (i.e. msg.sender) * @param from The address which previously owned the token * @param id The ID of the token being transferred * @param value The amount of tokens being transferred * @param data Additional data with no specified format * @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed */ function onERC1155Received( address operator, address from, uint256 id, uint256 value, bytes calldata data ) external returns (bytes4); /** * @dev Handles the receipt of a multiple ERC1155 token types. This function * is called at the end of a `safeBatchTransferFrom` after the balances have * been updated. * * NOTE: To accept the transfer(s), this must return * `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` * (i.e. 0xbc197c81, or its own function selector). * * @param operator The address which initiated the batch transfer (i.e. msg.sender) * @param from The address which previously owned the token * @param ids An array containing ids of each token being transferred (order and length must match values array) * @param values An array containing amounts of each token being transferred (order and length must match ids array) * @param data Additional data with no specified format * @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed */ function onERC1155BatchReceived( address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data ) external returns (bytes4); } // File: contracts/@openzeppelin/utils/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; /** * @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; } } // File: contracts/@openzeppelin/utils/Strings.sol // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) 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); } } // File: contracts/@openzeppelin/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) 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; } } // File: contracts/@openzeppelin/access/IAccessControl.sol // OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol) 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; } // File: contracts/@openzeppelin/access/AccessControl.sol // OpenZeppelin Contracts (last updated v4.6.0) (access/AccessControl.sol) pragma solidity ^0.8.0; /** * @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); _; } /** * @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 virtual override returns (bool) { return _roles[role].members[account]; } /** * @dev Revert with a standard message if `_msgSender()` is missing `role`. * Overriding this function changes the behavior of the {onlyRole} modifier. * * Format of the revert message is described in {_checkRole}. * * _Available since v4.6._ */ function _checkRole(bytes32 role) internal view virtual { _checkRole(role, _msgSender()); } /** * @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 virtual { 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 virtual 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 revoked `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}. * ==== * * NOTE: This function is deprecated in favor of {_grantRole}. */ 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); } /** * @dev Grants `role` to `account`. * * Internal function without access restriction. */ function _grantRole(bytes32 role, address account) internal virtual { if (!hasRole(role, account)) { _roles[role].members[account] = true; emit RoleGranted(role, account, _msgSender()); } } /** * @dev Revokes `role` from `account`. * * Internal function without access restriction. */ function _revokeRole(bytes32 role, address account) internal virtual { if (hasRole(role, account)) { _roles[role].members[account] = false; emit RoleRevoked(role, account, _msgSender()); } } } // File: contracts/@openzeppelin/governance/TimelockController.sol // OpenZeppelin Contracts (last updated v4.6.0) (governance/TimelockController.sol) pragma solidity ^0.8.0; /** * @dev Contract module which acts as a timelocked controller. When set as the * owner of an `Ownable` smart contract, it enforces a timelock on all * `onlyOwner` maintenance operations. This gives time for users of the * controlled contract to exit before a potentially dangerous maintenance * operation is applied. * * By default, this contract is self administered, meaning administration tasks * have to go through the timelock process. The proposer (resp executor) role * is in charge of proposing (resp executing) operations. A common use case is * to position this {TimelockController} as the owner of a smart contract, with * a multisig or a DAO as the sole proposer. * * _Available since v3.3._ */ contract TimelockController is AccessControl, IERC721Receiver, IERC1155Receiver { bytes32 public constant TIMELOCK_ADMIN_ROLE = keccak256("TIMELOCK_ADMIN_ROLE"); bytes32 public constant PROPOSER_ROLE = keccak256("PROPOSER_ROLE"); bytes32 public constant EXECUTOR_ROLE = keccak256("EXECUTOR_ROLE"); bytes32 public constant CANCELLER_ROLE = keccak256("CANCELLER_ROLE"); uint256 internal constant _DONE_TIMESTAMP = uint256(1); mapping(bytes32 => uint256) private _timestamps; uint256 private _minDelay; /** * @dev Emitted when a call is scheduled as part of operation `id`. */ event CallScheduled( bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data, bytes32 predecessor, uint256 delay ); /** * @dev Emitted when a call is performed as part of operation `id`. */ event CallExecuted(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data); /** * @dev Emitted when operation `id` is cancelled. */ event Cancelled(bytes32 indexed id); /** * @dev Emitted when the minimum delay for future operations is modified. */ event MinDelayChange(uint256 oldDuration, uint256 newDuration); /** * @dev Initializes the contract with a given `minDelay`, and a list of * initial proposers and executors. The proposers receive both the * proposer and the canceller role (for backward compatibility). The * executors receive the executor role. * * NOTE: At construction, both the deployer and the timelock itself are * administrators. This helps further configuration of the timelock by the * deployer. After configuration is done, it is recommended that the * deployer renounces its admin position and relies on timelocked * operations to perform future maintenance. */ constructor( uint256 minDelay, address[] memory proposers, address[] memory executors ) { _setRoleAdmin(TIMELOCK_ADMIN_ROLE, TIMELOCK_ADMIN_ROLE); _setRoleAdmin(PROPOSER_ROLE, TIMELOCK_ADMIN_ROLE); _setRoleAdmin(EXECUTOR_ROLE, TIMELOCK_ADMIN_ROLE); _setRoleAdmin(CANCELLER_ROLE, TIMELOCK_ADMIN_ROLE); // deployer + self administration _setupRole(TIMELOCK_ADMIN_ROLE, _msgSender()); _setupRole(TIMELOCK_ADMIN_ROLE, address(this)); // register proposers and cancellers for (uint256 i = 0; i < proposers.length; ++i) { _setupRole(PROPOSER_ROLE, proposers[i]); _setupRole(CANCELLER_ROLE, proposers[i]); } // register executors for (uint256 i = 0; i < executors.length; ++i) { _setupRole(EXECUTOR_ROLE, executors[i]); } _minDelay = minDelay; emit MinDelayChange(0, minDelay); } /** * @dev Modifier to make a function callable only by a certain role. In * addition to checking the sender's role, `address(0)` 's role is also * considered. Granting a role to `address(0)` is equivalent to enabling * this role for everyone. */ modifier onlyRoleOrOpenRole(bytes32 role) { if (!hasRole(role, address(0))) { _checkRole(role, _msgSender()); } _; } /** * @dev Contract might receive/hold ETH as part of the maintenance process. */ receive() external payable {} /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, AccessControl) returns (bool) { return interfaceId == type(IERC1155Receiver).interfaceId || super.supportsInterface(interfaceId); } /** * @dev Returns whether an id correspond to a registered operation. This * includes both Pending, Ready and Done operations. */ function isOperation(bytes32 id) public view virtual returns (bool pending) { return getTimestamp(id) > 0; } /** * @dev Returns whether an operation is pending or not. */ function isOperationPending(bytes32 id) public view virtual returns (bool pending) { return getTimestamp(id) > _DONE_TIMESTAMP; } /** * @dev Returns whether an operation is ready or not. */ function isOperationReady(bytes32 id) public view virtual returns (bool ready) { uint256 timestamp = getTimestamp(id); return timestamp > _DONE_TIMESTAMP && timestamp <= block.timestamp; } /** * @dev Returns whether an operation is done or not. */ function isOperationDone(bytes32 id) public view virtual returns (bool done) { return getTimestamp(id) == _DONE_TIMESTAMP; } /** * @dev Returns the timestamp at with an operation becomes ready (0 for * unset operations, 1 for done operations). */ function getTimestamp(bytes32 id) public view virtual returns (uint256 timestamp) { return _timestamps[id]; } /** * @dev Returns the minimum delay for an operation to become valid. * * This value can be changed by executing an operation that calls `updateDelay`. */ function getMinDelay() public view virtual returns (uint256 duration) { return _minDelay; } /** * @dev Returns the identifier of an operation containing a single * transaction. */ function hashOperation( address target, uint256 value, bytes calldata data, bytes32 predecessor, bytes32 salt ) public pure virtual returns (bytes32 hash) { return keccak256(abi.encode(target, value, data, predecessor, salt)); } /** * @dev Returns the identifier of an operation containing a batch of * transactions. */ function hashOperationBatch( address[] calldata targets, uint256[] calldata values, bytes[] calldata payloads, bytes32 predecessor, bytes32 salt ) public pure virtual returns (bytes32 hash) { return keccak256(abi.encode(targets, values, payloads, predecessor, salt)); } /** * @dev Schedule an operation containing a single transaction. * * Emits a {CallScheduled} event. * * Requirements: * * - the caller must have the 'proposer' role. */ function schedule( address target, uint256 value, bytes calldata data, bytes32 predecessor, bytes32 salt, uint256 delay ) public virtual onlyRole(PROPOSER_ROLE) { bytes32 id = hashOperation(target, value, data, predecessor, salt); _schedule(id, delay); emit CallScheduled(id, 0, target, value, data, predecessor, delay); } /** * @dev Schedule an operation containing a batch of transactions. * * Emits one {CallScheduled} event per transaction in the batch. * * Requirements: * * - the caller must have the 'proposer' role. */ function scheduleBatch( address[] calldata targets, uint256[] calldata values, bytes[] calldata payloads, bytes32 predecessor, bytes32 salt, uint256 delay ) public virtual onlyRole(PROPOSER_ROLE) { require(targets.length == values.length, "TimelockController: length mismatch"); require(targets.length == payloads.length, "TimelockController: length mismatch"); bytes32 id = hashOperationBatch(targets, values, payloads, predecessor, salt); _schedule(id, delay); for (uint256 i = 0; i < targets.length; ++i) { emit CallScheduled(id, i, targets[i], values[i], payloads[i], predecessor, delay); } } /** * @dev Schedule an operation that is to becomes valid after a given delay. */ function _schedule(bytes32 id, uint256 delay) private { require(!isOperation(id), "TimelockController: operation already scheduled"); require(delay >= getMinDelay(), "TimelockController: insufficient delay"); _timestamps[id] = block.timestamp + delay; } /** * @dev Cancel an operation. * * Requirements: * * - the caller must have the 'canceller' role. */ function cancel(bytes32 id) public virtual onlyRole(CANCELLER_ROLE) { require(isOperationPending(id), "TimelockController: operation cannot be cancelled"); delete _timestamps[id]; emit Cancelled(id); } /** * @dev Execute an (ready) operation containing a single transaction. * * Emits a {CallExecuted} event. * * Requirements: * * - the caller must have the 'executor' role. */ // This function can reenter, but it doesn't pose a risk because _afterCall checks that the proposal is pending, // thus any modifications to the operation during reentrancy should be caught. // slither-disable-next-line reentrancy-eth function execute( address target, uint256 value, bytes calldata data, bytes32 predecessor, bytes32 salt ) public payable virtual onlyRoleOrOpenRole(EXECUTOR_ROLE) { bytes32 id = hashOperation(target, value, data, predecessor, salt); _beforeCall(id, predecessor); _call(id, 0, target, value, data); _afterCall(id); } /** * @dev Execute an (ready) operation containing a batch of transactions. * * Emits one {CallExecuted} event per transaction in the batch. * * Requirements: * * - the caller must have the 'executor' role. */ function executeBatch( address[] calldata targets, uint256[] calldata values, bytes[] calldata payloads, bytes32 predecessor, bytes32 salt ) public payable virtual onlyRoleOrOpenRole(EXECUTOR_ROLE) { require(targets.length == values.length, "TimelockController: length mismatch"); require(targets.length == payloads.length, "TimelockController: length mismatch"); bytes32 id = hashOperationBatch(targets, values, payloads, predecessor, salt); _beforeCall(id, predecessor); for (uint256 i = 0; i < targets.length; ++i) { _call(id, i, targets[i], values[i], payloads[i]); } _afterCall(id); } /** * @dev Checks before execution of an operation's calls. */ function _beforeCall(bytes32 id, bytes32 predecessor) private view { require(isOperationReady(id), "TimelockController: operation is not ready"); require(predecessor == bytes32(0) || isOperationDone(predecessor), "TimelockController: missing dependency"); } /** * @dev Checks after execution of an operation's calls. */ function _afterCall(bytes32 id) private { require(isOperationReady(id), "TimelockController: operation is not ready"); _timestamps[id] = _DONE_TIMESTAMP; } /** * @dev Execute an operation's call. * * Emits a {CallExecuted} event. */ function _call( bytes32 id, uint256 index, address target, uint256 value, bytes calldata data ) private { (bool success, ) = target.call{value: value}(data); require(success, "TimelockController: underlying transaction reverted"); emit CallExecuted(id, index, target, value, data); } /** * @dev Changes the minimum timelock duration for future operations. * * Emits a {MinDelayChange} event. * * Requirements: * * - the caller must be the timelock itself. This can only be achieved by scheduling and later executing * an operation where the timelock is the target and the data is the ABI-encoded call to this function. */ function updateDelay(uint256 newDelay) external virtual { require(msg.sender == address(this), "TimelockController: caller must be timelock"); emit MinDelayChange(_minDelay, newDelay); _minDelay = newDelay; } /** * @dev See {IERC721Receiver-onERC721Received}. */ function onERC721Received( address, address, uint256, bytes memory ) public virtual override returns (bytes4) { return this.onERC721Received.selector; } /** * @dev See {IERC1155Receiver-onERC1155Received}. */ function onERC1155Received( address, address, uint256, uint256, bytes memory ) public virtual override returns (bytes4) { return this.onERC1155Received.selector; } /** * @dev See {IERC1155Receiver-onERC1155BatchReceived}. */ function onERC1155BatchReceived( address, address, uint256[] memory, uint256[] memory, bytes memory ) public virtual override returns (bytes4) { return this.onERC1155BatchReceived.selector; } } // File: contracts/AggregatedFinanceTimelock.sol pragma solidity ^0.8.13; contract AggregatedFinanceTimelock is TimelockController { constructor(uint256 minDelay, address[] memory proposers, address[] memory executors) TimelockController(minDelay, proposers, executors) {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"minDelay","type":"uint256"},{"internalType":"address[]","name":"proposers","type":"address[]"},{"internalType":"address[]","name":"executors","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"CallExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"delay","type":"uint256"}],"name":"CallScheduled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"Cancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldDuration","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newDuration","type":"uint256"}],"name":"MinDelayChange","type":"event"},{"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":"CANCELLER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EXECUTOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROPOSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIMELOCK_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"payloads","type":"bytes[]"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"executeBatch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getMinDelay","outputs":[{"internalType":"uint256","name":"duration","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":"id","type":"bytes32"}],"name":"getTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"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":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"hashOperation","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"payloads","type":"bytes[]"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"hashOperationBatch","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperation","outputs":[{"internalType":"bool","name":"pending","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperationDone","outputs":[{"internalType":"bool","name":"done","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperationPending","outputs":[{"internalType":"bool","name":"pending","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperationReady","outputs":[{"internalType":"bool","name":"ready","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"delay","type":"uint256"}],"name":"schedule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"payloads","type":"bytes[]"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"delay","type":"uint256"}],"name":"scheduleBatch","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":"uint256","name":"newDelay","type":"uint256"}],"name":"updateDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620022ac380380620022ac8339810160408190526200003491620003fd565b828282620000526000805160206200222c8339815191528062000222565b6200007c6000805160206200224c8339815191526000805160206200222c83398151915262000222565b620000a66000805160206200226c8339815191526000805160206200222c83398151915262000222565b620000d06000805160206200228c8339815191526000805160206200222c83398151915262000222565b620000eb6000805160206200222c833981519152336200026d565b620001066000805160206200222c833981519152306200026d565b60005b82518110156200018c57620001506000805160206200224c8339815191528483815181106200013c576200013c62000471565b60200260200101516200026d60201b60201c565b620001796000805160206200228c8339815191528483815181106200013c576200013c62000471565b620001848162000487565b905062000109565b5060005b8151811015620001d657620001c36000805160206200226c8339815191528383815181106200013c576200013c62000471565b620001ce8162000487565b905062000190565b5060028390556040805160008152602081018590527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1505050505050620004af565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6200027982826200027d565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000279576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620002d93390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200034b57600080fd5b919050565b600082601f8301126200036257600080fd5b815160206001600160401b03808311156200038157620003816200031d565b8260051b604051601f19603f83011681018181108482111715620003a957620003a96200031d565b604052938452858101830193838101925087851115620003c857600080fd5b83870191505b84821015620003f257620003e28262000333565b83529183019190830190620003ce565b979650505050505050565b6000806000606084860312156200041357600080fd5b835160208501519093506001600160401b03808211156200043357600080fd5b620004418783880162000350565b935060408601519150808211156200045857600080fd5b50620004678682870162000350565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b600060018201620004a857634e487b7160e01b600052601160045260246000fd5b5060010190565b611d6d80620004bf6000396000f3fe6080604052600436106101bb5760003560e01c80638065657f116100ec578063bc197c811161008a578063d547741f11610064578063d547741f14610582578063e38335e5146105a2578063f23a6e61146105b5578063f27a0c92146105e157600080fd5b8063bc197c8114610509578063c4d252f514610535578063d45c44351461055557600080fd5b806391d14854116100c657806391d1485414610480578063a217fddf146104a0578063b08e51c0146104b5578063b1c5f427146104e957600080fd5b80638065657f1461040c5780638f2a0bb01461042c5780638f61f4f51461044c57600080fd5b8063248a9ca31161015957806331d507501161013357806331d507501461038c57806336568abe146103ac578063584b153e146103cc57806364d62353146103ec57600080fd5b8063248a9ca31461030b5780632ab0f5291461033b5780632f2ff15d1461036c57600080fd5b80630d3cf6fc116101955780630d3cf6fc14610260578063134008d31461029457806313bc9f20146102a7578063150b7a02146102c757600080fd5b806301d5062a146101c757806301ffc9a7146101e957806307bd02651461021e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e2366004611368565b6105f6565b005b3480156101f557600080fd5b506102096102043660046113dc565b61068b565b60405190151581526020015b60405180910390f35b34801561022a57600080fd5b506102527fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610215565b34801561026c57600080fd5b506102527f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101e76102a2366004611406565b6106b6565b3480156102b357600080fd5b506102096102c2366004611471565b61072e565b3480156102d357600080fd5b506102f26102e236600461153f565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610215565b34801561031757600080fd5b50610252610326366004611471565b60009081526020819052604090206001015490565b34801561034757600080fd5b50610209610356366004611471565b6000908152600160208190526040909120541490565b34801561037857600080fd5b506101e76103873660046115a6565b610754565b34801561039857600080fd5b506102096103a7366004611471565b61077e565b3480156103b857600080fd5b506101e76103c73660046115a6565b610797565b3480156103d857600080fd5b506102096103e7366004611471565b61081a565b3480156103f857600080fd5b506101e7610407366004611471565b610830565b34801561041857600080fd5b50610252610427366004611406565b6108d4565b34801561043857600080fd5b506101e7610447366004611616565b610913565b34801561045857600080fd5b506102527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561048c57600080fd5b5061020961049b3660046115a6565b610a65565b3480156104ac57600080fd5b50610252600081565b3480156104c157600080fd5b506102527ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104f557600080fd5b506102526105043660046116c7565b610a8e565b34801561051557600080fd5b506102f26105243660046117ee565b63bc197c8160e01b95945050505050565b34801561054157600080fd5b506101e7610550366004611471565b610ad3565b34801561056157600080fd5b50610252610570366004611471565b60009081526001602052604090205490565b34801561058e57600080fd5b506101e761059d3660046115a6565b610ba8565b6101e76105b03660046116c7565b610bcd565b3480156105c157600080fd5b506102f26105d0366004611897565b63f23a6e6160e01b95945050505050565b3480156105ed57600080fd5b50600254610252565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161062081610d02565b60006106308989898989896108d4565b905061063c8184610d0f565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a60405161067896959493929190611924565b60405180910390a3505050505050505050565b60006001600160e01b03198216630271189760e51b14806106b057506106b082610dfe565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106e2816000610a65565b6106f0576106f08133610e33565b60006107008888888888886108d4565b905061070c8185610e97565b61071b8160008a8a8a8a610f33565b61072481611047565b5050505050505050565b60008181526001602052604081205460018111801561074d5750428111155b9392505050565b60008281526020819052604090206001015461076f81610d02565b6107798383611080565b505050565b60008181526001602052604081205481905b1192915050565b6001600160a01b038116331461080c5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6108168282611104565b5050565b6000818152600160208190526040822054610790565b3330146108935760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b6064820152608401610803565b60025460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1600255565b60008686868686866040516020016108f196959493929190611924565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161093d81610d02565b88871461095c5760405162461bcd60e51b815260040161080390611961565b88851461097b5760405162461bcd60e51b815260040161080390611961565b600061098d8b8b8b8b8b8b8b8b610a8e565b90506109998184610d0f565b60005b8a811015610a575780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e858181106109d9576109d96119a4565b90506020020160208101906109ee91906119ba565b8d8d86818110610a0057610a006119a4565b905060200201358c8c87818110610a1957610a196119a4565b9050602002810190610a2b91906119d5565b8c8b604051610a3f96959493929190611924565b60405180910390a3610a5081611a31565b905061099c565b505050505050505050505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60008888888888888888604051602001610aaf989796959493929190611ada565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610afd81610d02565b610b068261081a565b610b6c5760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b6064820152608401610803565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610bc381610d02565b6107798383611104565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610bf9816000610a65565b610c0757610c078133610e33565b878614610c265760405162461bcd60e51b815260040161080390611961565b878414610c455760405162461bcd60e51b815260040161080390611961565b6000610c578a8a8a8a8a8a8a8a610a8e565b9050610c638185610e97565b60005b89811015610cec57610cdc82828d8d85818110610c8557610c856119a4565b9050602002016020810190610c9a91906119ba565b8c8c86818110610cac57610cac6119a4565b905060200201358b8b87818110610cc557610cc56119a4565b9050602002810190610cd791906119d5565b610f33565b610ce581611a31565b9050610c66565b50610cf681611047565b50505050505050505050565b610d0c8133610e33565b50565b610d188261077e565b15610d7d5760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b6064820152608401610803565b600254811015610dde5760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b6064820152608401610803565b610de88142611b85565b6000928352600160205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106b057506301ffc9a760e01b6001600160e01b03198316146106b0565b610e3d8282610a65565b61081657610e55816001600160a01b03166014611169565b610e60836020611169565b604051602001610e71929190611bcd565b60408051601f198184030181529082905262461bcd60e51b825261080391600401611c42565b610ea08261072e565b610ebc5760405162461bcd60e51b815260040161080390611c75565b801580610ed85750600081815260016020819052604090912054145b6108165760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b6064820152608401610803565b6000846001600160a01b0316848484604051610f50929190611cbf565b60006040518083038185875af1925050503d8060008114610f8d576040519150601f19603f3d011682016040523d82523d6000602084013e610f92565b606091505b5050905080610fff5760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b6064820152608401610803565b85877fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b58878787876040516110369493929190611ccf565b60405180910390a350505050505050565b6110508161072e565b61106c5760405162461bcd60e51b815260040161080390611c75565b600090815260016020819052604090912055565b61108a8282610a65565b610816576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556110c03390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61110e8282610a65565b15610816576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60606000611178836002611d01565b611183906002611b85565b6001600160401b0381111561119a5761119a61148a565b6040519080825280601f01601f1916602001820160405280156111c4576020820181803683370190505b509050600360fc1b816000815181106111df576111df6119a4565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061120e5761120e6119a4565b60200101906001600160f81b031916908160001a9053506000611232846002611d01565b61123d906001611b85565b90505b60018111156112b5576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611271576112716119a4565b1a60f81b828281518110611287576112876119a4565b60200101906001600160f81b031916908160001a90535060049490941c936112ae81611d20565b9050611240565b50831561074d5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610803565b80356001600160a01b038116811461131b57600080fd5b919050565b60008083601f84011261133257600080fd5b5081356001600160401b0381111561134957600080fd5b60208301915083602082850101111561136157600080fd5b9250929050565b600080600080600080600060c0888a03121561138357600080fd5b61138c88611304565b96506020880135955060408801356001600160401b038111156113ae57600080fd5b6113ba8a828b01611320565b989b979a50986060810135976080820135975060a09091013595509350505050565b6000602082840312156113ee57600080fd5b81356001600160e01b03198116811461074d57600080fd5b60008060008060008060a0878903121561141f57600080fd5b61142887611304565b95506020870135945060408701356001600160401b0381111561144a57600080fd5b61145689828a01611320565b979a9699509760608101359660809091013595509350505050565b60006020828403121561148357600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156114c8576114c861148a565b604052919050565b600082601f8301126114e157600080fd5b81356001600160401b038111156114fa576114fa61148a565b61150d601f8201601f19166020016114a0565b81815284602083860101111561152257600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561155557600080fd5b61155e85611304565b935061156c60208601611304565b92506040850135915060608501356001600160401b0381111561158e57600080fd5b61159a878288016114d0565b91505092959194509250565b600080604083850312156115b957600080fd5b823591506115c960208401611304565b90509250929050565b60008083601f8401126115e457600080fd5b5081356001600160401b038111156115fb57600080fd5b6020830191508360208260051b850101111561136157600080fd5b600080600080600080600080600060c08a8c03121561163457600080fd5b89356001600160401b038082111561164b57600080fd5b6116578d838e016115d2565b909b50995060208c013591508082111561167057600080fd5b61167c8d838e016115d2565b909950975060408c013591508082111561169557600080fd5b506116a28c828d016115d2565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b0312156116e357600080fd5b88356001600160401b03808211156116fa57600080fd5b6117068c838d016115d2565b909a50985060208b013591508082111561171f57600080fd5b61172b8c838d016115d2565b909850965060408b013591508082111561174457600080fd5b506117518b828c016115d2565b999c989b509699959896976060870135966080013595509350505050565b600082601f83011261178057600080fd5b813560206001600160401b0382111561179b5761179b61148a565b8160051b6117aa8282016114a0565b92835284810182019282810190878511156117c457600080fd5b83870192505b848310156117e3578235825291830191908301906117ca565b979650505050505050565b600080600080600060a0868803121561180657600080fd5b61180f86611304565b945061181d60208701611304565b935060408601356001600160401b038082111561183957600080fd5b61184589838a0161176f565b9450606088013591508082111561185b57600080fd5b61186789838a0161176f565b9350608088013591508082111561187d57600080fd5b5061188a888289016114d0565b9150509295509295909350565b600080600080600060a086880312156118af57600080fd5b6118b886611304565b94506118c660208701611304565b9350604086013592506060860135915060808601356001600160401b038111156118ef57600080fd5b61188a888289016114d0565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a06040820152600061194c60a0830186886118fb565b60608301949094525060800152949350505050565b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156119cc57600080fd5b61074d82611304565b6000808335601e198436030181126119ec57600080fd5b8301803591506001600160401b03821115611a0657600080fd5b60200191503681900382131561136157600080fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611a4357611a43611a1b565b5060010190565b81835260006020808501808196508560051b810191508460005b87811015611acd5782840389528135601e19883603018112611a8557600080fd5b870180356001600160401b03811115611a9d57600080fd5b803603891315611aac57600080fd5b611ab986828985016118fb565b9a87019a9550505090840190600101611a64565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b811015611b1b576001600160a01b03611b0684611304565b16825260209283019290910190600101611aed565b5083810360208501528881526001600160fb1b03891115611b3b57600080fd5b8860051b9150818a602083013781810191505060208101600081526020848303016040850152611b6c81888a611a4a565b6060850196909652505050608001529695505050505050565b60008219821115611b9857611b98611a1b565b500190565b60005b83811015611bb8578181015183820152602001611ba0565b83811115611bc7576000848401525b50505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611c05816017850160208801611b9d565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611c36816028840160208801611b9d565b01602801949350505050565b6020815260008251806020840152611c61816040850160208701611b9d565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b60018060a01b0385168152836020820152606060408201526000611cf76060830184866118fb565b9695505050505050565b6000816000190483118215151615611d1b57611d1b611a1b565b500290565b600081611d2f57611d2f611a1b565b50600019019056fea2646970667358221220566483e5f5e2f0a0d0cbfcc0c42126de40ad70f256704be5832e06a5283a14d764736f6c634300080d00335f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78300000000000000000000000000000000000000000000000000000000000019af0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106101bb5760003560e01c80638065657f116100ec578063bc197c811161008a578063d547741f11610064578063d547741f14610582578063e38335e5146105a2578063f23a6e61146105b5578063f27a0c92146105e157600080fd5b8063bc197c8114610509578063c4d252f514610535578063d45c44351461055557600080fd5b806391d14854116100c657806391d1485414610480578063a217fddf146104a0578063b08e51c0146104b5578063b1c5f427146104e957600080fd5b80638065657f1461040c5780638f2a0bb01461042c5780638f61f4f51461044c57600080fd5b8063248a9ca31161015957806331d507501161013357806331d507501461038c57806336568abe146103ac578063584b153e146103cc57806364d62353146103ec57600080fd5b8063248a9ca31461030b5780632ab0f5291461033b5780632f2ff15d1461036c57600080fd5b80630d3cf6fc116101955780630d3cf6fc14610260578063134008d31461029457806313bc9f20146102a7578063150b7a02146102c757600080fd5b806301d5062a146101c757806301ffc9a7146101e957806307bd02651461021e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e2366004611368565b6105f6565b005b3480156101f557600080fd5b506102096102043660046113dc565b61068b565b60405190151581526020015b60405180910390f35b34801561022a57600080fd5b506102527fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610215565b34801561026c57600080fd5b506102527f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101e76102a2366004611406565b6106b6565b3480156102b357600080fd5b506102096102c2366004611471565b61072e565b3480156102d357600080fd5b506102f26102e236600461153f565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610215565b34801561031757600080fd5b50610252610326366004611471565b60009081526020819052604090206001015490565b34801561034757600080fd5b50610209610356366004611471565b6000908152600160208190526040909120541490565b34801561037857600080fd5b506101e76103873660046115a6565b610754565b34801561039857600080fd5b506102096103a7366004611471565b61077e565b3480156103b857600080fd5b506101e76103c73660046115a6565b610797565b3480156103d857600080fd5b506102096103e7366004611471565b61081a565b3480156103f857600080fd5b506101e7610407366004611471565b610830565b34801561041857600080fd5b50610252610427366004611406565b6108d4565b34801561043857600080fd5b506101e7610447366004611616565b610913565b34801561045857600080fd5b506102527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561048c57600080fd5b5061020961049b3660046115a6565b610a65565b3480156104ac57600080fd5b50610252600081565b3480156104c157600080fd5b506102527ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104f557600080fd5b506102526105043660046116c7565b610a8e565b34801561051557600080fd5b506102f26105243660046117ee565b63bc197c8160e01b95945050505050565b34801561054157600080fd5b506101e7610550366004611471565b610ad3565b34801561056157600080fd5b50610252610570366004611471565b60009081526001602052604090205490565b34801561058e57600080fd5b506101e761059d3660046115a6565b610ba8565b6101e76105b03660046116c7565b610bcd565b3480156105c157600080fd5b506102f26105d0366004611897565b63f23a6e6160e01b95945050505050565b3480156105ed57600080fd5b50600254610252565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161062081610d02565b60006106308989898989896108d4565b905061063c8184610d0f565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a60405161067896959493929190611924565b60405180910390a3505050505050505050565b60006001600160e01b03198216630271189760e51b14806106b057506106b082610dfe565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106e2816000610a65565b6106f0576106f08133610e33565b60006107008888888888886108d4565b905061070c8185610e97565b61071b8160008a8a8a8a610f33565b61072481611047565b5050505050505050565b60008181526001602052604081205460018111801561074d5750428111155b9392505050565b60008281526020819052604090206001015461076f81610d02565b6107798383611080565b505050565b60008181526001602052604081205481905b1192915050565b6001600160a01b038116331461080c5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6108168282611104565b5050565b6000818152600160208190526040822054610790565b3330146108935760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b6064820152608401610803565b60025460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1600255565b60008686868686866040516020016108f196959493929190611924565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161093d81610d02565b88871461095c5760405162461bcd60e51b815260040161080390611961565b88851461097b5760405162461bcd60e51b815260040161080390611961565b600061098d8b8b8b8b8b8b8b8b610a8e565b90506109998184610d0f565b60005b8a811015610a575780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e858181106109d9576109d96119a4565b90506020020160208101906109ee91906119ba565b8d8d86818110610a0057610a006119a4565b905060200201358c8c87818110610a1957610a196119a4565b9050602002810190610a2b91906119d5565b8c8b604051610a3f96959493929190611924565b60405180910390a3610a5081611a31565b905061099c565b505050505050505050505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60008888888888888888604051602001610aaf989796959493929190611ada565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610afd81610d02565b610b068261081a565b610b6c5760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b6064820152608401610803565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610bc381610d02565b6107798383611104565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610bf9816000610a65565b610c0757610c078133610e33565b878614610c265760405162461bcd60e51b815260040161080390611961565b878414610c455760405162461bcd60e51b815260040161080390611961565b6000610c578a8a8a8a8a8a8a8a610a8e565b9050610c638185610e97565b60005b89811015610cec57610cdc82828d8d85818110610c8557610c856119a4565b9050602002016020810190610c9a91906119ba565b8c8c86818110610cac57610cac6119a4565b905060200201358b8b87818110610cc557610cc56119a4565b9050602002810190610cd791906119d5565b610f33565b610ce581611a31565b9050610c66565b50610cf681611047565b50505050505050505050565b610d0c8133610e33565b50565b610d188261077e565b15610d7d5760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b6064820152608401610803565b600254811015610dde5760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b6064820152608401610803565b610de88142611b85565b6000928352600160205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106b057506301ffc9a760e01b6001600160e01b03198316146106b0565b610e3d8282610a65565b61081657610e55816001600160a01b03166014611169565b610e60836020611169565b604051602001610e71929190611bcd565b60408051601f198184030181529082905262461bcd60e51b825261080391600401611c42565b610ea08261072e565b610ebc5760405162461bcd60e51b815260040161080390611c75565b801580610ed85750600081815260016020819052604090912054145b6108165760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b6064820152608401610803565b6000846001600160a01b0316848484604051610f50929190611cbf565b60006040518083038185875af1925050503d8060008114610f8d576040519150601f19603f3d011682016040523d82523d6000602084013e610f92565b606091505b5050905080610fff5760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b6064820152608401610803565b85877fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b58878787876040516110369493929190611ccf565b60405180910390a350505050505050565b6110508161072e565b61106c5760405162461bcd60e51b815260040161080390611c75565b600090815260016020819052604090912055565b61108a8282610a65565b610816576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556110c03390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61110e8282610a65565b15610816576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60606000611178836002611d01565b611183906002611b85565b6001600160401b0381111561119a5761119a61148a565b6040519080825280601f01601f1916602001820160405280156111c4576020820181803683370190505b509050600360fc1b816000815181106111df576111df6119a4565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061120e5761120e6119a4565b60200101906001600160f81b031916908160001a9053506000611232846002611d01565b61123d906001611b85565b90505b60018111156112b5576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611271576112716119a4565b1a60f81b828281518110611287576112876119a4565b60200101906001600160f81b031916908160001a90535060049490941c936112ae81611d20565b9050611240565b50831561074d5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610803565b80356001600160a01b038116811461131b57600080fd5b919050565b60008083601f84011261133257600080fd5b5081356001600160401b0381111561134957600080fd5b60208301915083602082850101111561136157600080fd5b9250929050565b600080600080600080600060c0888a03121561138357600080fd5b61138c88611304565b96506020880135955060408801356001600160401b038111156113ae57600080fd5b6113ba8a828b01611320565b989b979a50986060810135976080820135975060a09091013595509350505050565b6000602082840312156113ee57600080fd5b81356001600160e01b03198116811461074d57600080fd5b60008060008060008060a0878903121561141f57600080fd5b61142887611304565b95506020870135945060408701356001600160401b0381111561144a57600080fd5b61145689828a01611320565b979a9699509760608101359660809091013595509350505050565b60006020828403121561148357600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156114c8576114c861148a565b604052919050565b600082601f8301126114e157600080fd5b81356001600160401b038111156114fa576114fa61148a565b61150d601f8201601f19166020016114a0565b81815284602083860101111561152257600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561155557600080fd5b61155e85611304565b935061156c60208601611304565b92506040850135915060608501356001600160401b0381111561158e57600080fd5b61159a878288016114d0565b91505092959194509250565b600080604083850312156115b957600080fd5b823591506115c960208401611304565b90509250929050565b60008083601f8401126115e457600080fd5b5081356001600160401b038111156115fb57600080fd5b6020830191508360208260051b850101111561136157600080fd5b600080600080600080600080600060c08a8c03121561163457600080fd5b89356001600160401b038082111561164b57600080fd5b6116578d838e016115d2565b909b50995060208c013591508082111561167057600080fd5b61167c8d838e016115d2565b909950975060408c013591508082111561169557600080fd5b506116a28c828d016115d2565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b0312156116e357600080fd5b88356001600160401b03808211156116fa57600080fd5b6117068c838d016115d2565b909a50985060208b013591508082111561171f57600080fd5b61172b8c838d016115d2565b909850965060408b013591508082111561174457600080fd5b506117518b828c016115d2565b999c989b509699959896976060870135966080013595509350505050565b600082601f83011261178057600080fd5b813560206001600160401b0382111561179b5761179b61148a565b8160051b6117aa8282016114a0565b92835284810182019282810190878511156117c457600080fd5b83870192505b848310156117e3578235825291830191908301906117ca565b979650505050505050565b600080600080600060a0868803121561180657600080fd5b61180f86611304565b945061181d60208701611304565b935060408601356001600160401b038082111561183957600080fd5b61184589838a0161176f565b9450606088013591508082111561185b57600080fd5b61186789838a0161176f565b9350608088013591508082111561187d57600080fd5b5061188a888289016114d0565b9150509295509295909350565b600080600080600060a086880312156118af57600080fd5b6118b886611304565b94506118c660208701611304565b9350604086013592506060860135915060808601356001600160401b038111156118ef57600080fd5b61188a888289016114d0565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a06040820152600061194c60a0830186886118fb565b60608301949094525060800152949350505050565b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156119cc57600080fd5b61074d82611304565b6000808335601e198436030181126119ec57600080fd5b8301803591506001600160401b03821115611a0657600080fd5b60200191503681900382131561136157600080fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611a4357611a43611a1b565b5060010190565b81835260006020808501808196508560051b810191508460005b87811015611acd5782840389528135601e19883603018112611a8557600080fd5b870180356001600160401b03811115611a9d57600080fd5b803603891315611aac57600080fd5b611ab986828985016118fb565b9a87019a9550505090840190600101611a64565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b811015611b1b576001600160a01b03611b0684611304565b16825260209283019290910190600101611aed565b5083810360208501528881526001600160fb1b03891115611b3b57600080fd5b8860051b9150818a602083013781810191505060208101600081526020848303016040850152611b6c81888a611a4a565b6060850196909652505050608001529695505050505050565b60008219821115611b9857611b98611a1b565b500190565b60005b83811015611bb8578181015183820152602001611ba0565b83811115611bc7576000848401525b50505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611c05816017850160208801611b9d565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611c36816028840160208801611b9d565b01602801949350505050565b6020815260008251806020840152611c61816040850160208701611b9d565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b60018060a01b0385168152836020820152606060408201526000611cf76060830184866118fb565b9695505050505050565b6000816000190483118215151615611d1b57611d1b611a1b565b500290565b600081611d2f57611d2f611a1b565b50600019019056fea2646970667358221220566483e5f5e2f0a0d0cbfcc0c42126de40ad70f256704be5832e06a5283a14d764736f6c634300080d0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000019af0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : minDelay (uint256): 6575
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000019af
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
33949:226:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27086:413;;;;;;;;;;-1:-1:-1;27086:413:0;;;;;:::i;:::-;;:::i;:::-;;24153:230;;;;;;;;;;-1:-1:-1;24153:230:0;;;;;:::i;:::-;;:::i;:::-;;;1763:14:1;;1756:22;1738:41;;1726:2;1711:18;24153:230:0;;;;;;;;20758:66;;;;;;;;;;;;20798:26;20758:66;;;;;1936:25:1;;;1924:2;1909:18;20758:66:0;1790:177:1;20600:78:0;;;;;;;;;;;;20646:32;20600:78;;29759:406;;;;;;:::i;:::-;;:::i;24982:211::-;;;;;;;;;;-1:-1:-1;24982:211:0;;;;;:::i;:::-;;:::i;32996:207::-;;;;;;;;;;-1:-1:-1;32996:207:0;;;;;:::i;:::-;-1:-1:-1;;;32996:207:0;;;;;;;;;;-1:-1:-1;;;;;;4502:33:1;;;4484:52;;4472:2;4457:18;32996:207:0;4340:202:1;16024:131:0;;;;;;;;;;-1:-1:-1;16024:131:0;;;;;:::i;:::-;16098:7;16125:12;;;;;;;;;;:22;;;;16024:131;25277:138;;;;;;;;;;-1:-1:-1;25277:138:0;;;;;:::i;:::-;25343:9;25668:15;;;20958:1;25668:15;;;;;;;;;25372:35;;25277:138;16417:147;;;;;;;;;;-1:-1:-1;16417:147:0;;;;;:::i;:::-;;:::i;24545:122::-;;;;;;;;;;-1:-1:-1;24545:122:0;;;;;:::i;:::-;;:::i;17465:218::-;;;;;;;;;;-1:-1:-1;17465:218:0;;;;;:::i;:::-;;:::i;24754:143::-;;;;;;;;;;-1:-1:-1;24754:143:0;;;;;:::i;:::-;;:::i;32677:240::-;;;;;;;;;;-1:-1:-1;32677:240:0;;;;;:::i;:::-;;:::i;26108:292::-;;;;;;;;;;-1:-1:-1;26108:292:0;;;;;:::i;:::-;;:::i;27764:729::-;;;;;;;;;;-1:-1:-1;27764:729:0;;;;;:::i;:::-;;:::i;20685:66::-;;;;;;;;;;;;20725:26;20685:66;;14484:147;;;;;;;;;;-1:-1:-1;14484:147:0;;;;;:::i;:::-;;:::i;13589:49::-;;;;;;;;;;-1:-1:-1;13589:49:0;13634:4;13589:49;;20831:68;;;;;;;;;;;;20872:27;20831:68;;26522:333;;;;;;;;;;-1:-1:-1;26522:333:0;;;;;:::i;:::-;;:::i;33597:255::-;;;;;;;;;;-1:-1:-1;33597:255:0;;;;;:::i;:::-;-1:-1:-1;;;33597:255:0;;;;;;;;29036:235;;;;;;;;;;-1:-1:-1;29036:235:0;;;;;:::i;:::-;;:::i;25568:123::-;;;;;;;;;;-1:-1:-1;25568:123:0;;;;;:::i;:::-;25631:17;25668:15;;;:11;:15;;;;;;;25568:123;16809:149;;;;;;;;;;-1:-1:-1;16809:149:0;;;;;:::i;:::-;;:::i;30436:722::-;;;;;;:::i;:::-;;:::i;33284:227::-;;;;;;;;;;-1:-1:-1;33284:227:0;;;;;:::i;:::-;-1:-1:-1;;;33284:227:0;;;;;;;;25884:105;;;;;;;;;;-1:-1:-1;25972:9:0;;25884:105;;27086:413;20725:26;14080:16;14091:4;14080:10;:16::i;:::-;27317:10:::1;27330:53;27344:6;27352:5;27359:4;;27365:11;27378:4;27330:13;:53::i;:::-;27317:66;;27394:20;27404:2;27408:5;27394:9;:20::i;:::-;27448:1;27444:2;27430:61;27451:6;27459:5;27466:4;;27472:11;27485:5;27430:61;;;;;;;;;;;:::i;:::-;;;;;;;;27306:193;27086:413:::0;;;;;;;;:::o;24153:230::-;24262:4;-1:-1:-1;;;;;;24286:49:0;;-1:-1:-1;;;24286:49:0;;:89;;;24339:36;24363:11;24339:23;:36::i;:::-;24279:96;24153:230;-1:-1:-1;;24153:230:0:o;29759:406::-;20798:26;23842:25;23850:4;23864:1;23842:7;:25::i;:::-;23837:89;;23884:30;23895:4;8436:10;23884;:30::i;:::-;29983:10:::1;29996:53;30010:6;30018:5;30025:4;;30031:11;30044:4;29996:13;:53::i;:::-;29983:66;;30060:28;30072:2;30076:11;30060;:28::i;:::-;30099:33;30105:2;30109:1;30112:6;30120:5;30127:4;;30099:5;:33::i;:::-;30143:14;30154:2;30143:10;:14::i;:::-;29972:193;29759:406:::0;;;;;;;:::o;24982:211::-;25049:10;25668:15;;;:11;:15;;;;;;20958:1;25126:9;:27;:59;;;;;25170:15;25157:9;:28;;25126:59;25119:66;24982:211;-1:-1:-1;;;24982:211:0:o;16417:147::-;16098:7;16125:12;;;;;;;;;;:22;;;14080:16;14091:4;14080:10;:16::i;:::-;16531:25:::1;16542:4;16548:7;16531:10;:25::i;:::-;16417:147:::0;;;:::o;24545:122::-;24607:12;25668:15;;;:11;:15;;;;;;24607:12;;24639:16;:20;;24545:122;-1:-1:-1;;24545:122:0:o;17465:218::-;-1:-1:-1;;;;;17561:23:0;;8436:10;17561:23;17553:83;;;;-1:-1:-1;;;17553:83:0;;11409:2:1;17553:83:0;;;11391:21:1;11448:2;11428:18;;;11421:30;11487:34;11467:18;;;11460:62;-1:-1:-1;;;11538:18:1;;;11531:45;11593:19;;17553:83:0;;;;;;;;;17649:26;17661:4;17667:7;17649:11;:26::i;:::-;17465:218;;:::o;24754:143::-;24823:12;25668:15;;;20958:1;25668:15;;;;;;;;24855:16;25568:123;32677:240;32752:10;32774:4;32752:27;32744:83;;;;-1:-1:-1;;;32744:83:0;;11825:2:1;32744:83:0;;;11807:21:1;11864:2;11844:18;;;11837:30;11903:34;11883:18;;;11876:62;-1:-1:-1;;;11954:18:1;;;11947:41;12005:19;;32744:83:0;11623:407:1;32744:83:0;32858:9;;32843:35;;;12209:25:1;;;12265:2;12250:18;;12243:34;;;32843:35:0;;12182:18:1;32843:35:0;;;;;;;32889:9;:20;32677:240::o;26108:292::-;26299:12;26352:6;26360:5;26367:4;;26373:11;26386:4;26341:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;26331:61;;;;;;26324:68;;26108:292;;;;;;;;:::o;27764:729::-;20725:26;14080:16;14091:4;14080:10;:16::i;:::-;28038:31;;::::1;28030:79;;;;-1:-1:-1::0;;;28030:79:0::1;;;;;;;:::i;:::-;28128:33:::0;;::::1;28120:81;;;;-1:-1:-1::0;;;28120:81:0::1;;;;;;;:::i;:::-;28214:10;28227:64;28246:7;;28255:6;;28263:8;;28273:11;28286:4;28227:18;:64::i;:::-;28214:77;;28302:20;28312:2;28316:5;28302:9;:20::i;:::-;28338:9;28333:153;28353:18:::0;;::::1;28333:153;;;28416:1;28412:2;28398:76;28419:7;;28427:1;28419:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;28431:6;;28438:1;28431:9;;;;;;;:::i;:::-;;;;;;;28442:8;;28451:1;28442:11;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;28455;28468:5;28398:76;;;;;;;;;;;:::i;:::-;;;;;;;;28373:3;::::0;::::1;:::i;:::-;;;28333:153;;;;28019:474;27764:729:::0;;;;;;;;;;:::o;14484:147::-;14570:4;14594:12;;;;;;;;;;;-1:-1:-1;;;;;14594:29:0;;;;;;;;;;;;;;;14484:147::o;26522:333::-;26748:12;26801:7;;26810:6;;26818:8;;26828:11;26841:4;26790:56;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;26780:67;;;;;;26773:74;;26522:333;;;;;;;;;;:::o;29036:235::-;20872:27;14080:16;14091:4;14080:10;:16::i;:::-;29123:22:::1;29142:2;29123:18;:22::i;:::-;29115:84;;;::::0;-1:-1:-1;;;29115:84:0;;17053:2:1;29115:84:0::1;::::0;::::1;17035:21:1::0;17092:2;17072:18;;;17065:30;17131:34;17111:18;;;17104:62;-1:-1:-1;;;17182:18:1;;;17175:47;17239:19;;29115:84:0::1;16851:413:1::0;29115:84:0::1;29217:15;::::0;;;:11:::1;:15;::::0;;;;;29210:22;;;29250:13;29229:2;;29250:13:::1;::::0;::::1;29036:235:::0;;:::o;16809:149::-;16098:7;16125:12;;;;;;;;;;:22;;;14080:16;14091:4;14080:10;:16::i;:::-;16924:26:::1;16936:4;16942:7;16924:11;:26::i;30436:722::-:0;20798:26;23842:25;23850:4;23864:1;23842:7;:25::i;:::-;23837:89;;23884:30;23895:4;8436:10;23884;:30::i;:::-;30703:31;;::::1;30695:79;;;;-1:-1:-1::0;;;30695:79:0::1;;;;;;;:::i;:::-;30793:33:::0;;::::1;30785:81;;;;-1:-1:-1::0;;;30785:81:0::1;;;;;;;:::i;:::-;30879:10;30892:64;30911:7;;30920:6;;30928:8;;30938:11;30951:4;30892:18;:64::i;:::-;30879:77;;30967:28;30979:2;30983:11;30967;:28::i;:::-;31011:9;31006:120;31026:18:::0;;::::1;31006:120;;;31066:48;31072:2;31076:1;31079:7;;31087:1;31079:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;31091:6;;31098:1;31091:9;;;;;;;:::i;:::-;;;;;;;31102:8;;31111:1;31102:11;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;31066:5;:48::i;:::-;31046:3;::::0;::::1;:::i;:::-;;;31006:120;;;;31136:14;31147:2;31136:10;:14::i;:::-;30684:474;30436:722:::0;;;;;;;;;:::o;14935:105::-;15002:30;15013:4;8436:10;23884;:30::i;15002:::-;14935:105;:::o;28600:285::-;28674:15;28686:2;28674:11;:15::i;:::-;28673:16;28665:76;;;;-1:-1:-1;;;28665:76:0;;17471:2:1;28665:76:0;;;17453:21:1;17510:2;17490:18;;;17483:30;17549:34;17529:18;;;17522:62;-1:-1:-1;;;17600:18:1;;;17593:45;17655:19;;28665:76:0;17269:411:1;28665:76:0;25972:9;;28760:5;:22;;28752:73;;;;-1:-1:-1;;;28752:73:0;;17887:2:1;28752:73:0;;;17869:21:1;17926:2;17906:18;;;17899:30;17965:34;17945:18;;;17938:62;-1:-1:-1;;;18016:18:1;;;18009:36;18062:19;;28752:73:0;17685:402:1;28752:73:0;28854:23;28872:5;28854:15;:23;:::i;:::-;28836:15;;;;:11;:15;;;;;;:41;;;;-1:-1:-1;28600:285:0:o;14188:204::-;14273:4;-1:-1:-1;;;;;;14297:47:0;;-1:-1:-1;;;14297:47:0;;:87;;-1:-1:-1;;;;;;;;;;5498:40:0;;;14348:36;5389:157;15330:505;15419:22;15427:4;15433:7;15419;:22::i;:::-;15414:414;;15607:41;15635:7;-1:-1:-1;;;;;15607:41:0;15645:2;15607:19;:41::i;:::-;15721:38;15749:4;15756:2;15721:19;:38::i;:::-;15512:270;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;15512:270:0;;;;;;;;;;-1:-1:-1;;;15458:358:0;;;;;;;:::i;31246:280::-;31332:20;31349:2;31332:16;:20::i;:::-;31324:75;;;;-1:-1:-1;;;31324:75:0;;;;;;;:::i;:::-;31418:25;;;:57;;-1:-1:-1;25343:9:0;25668:15;;;20958:1;25668:15;;;;;;;;;25372:35;31447:28;31410:108;;;;-1:-1:-1;;;31410:108:0;;20280:2:1;31410:108:0;;;20262:21:1;20319:2;20299:18;;;20292:30;20358:34;20338:18;;;20331:62;-1:-1:-1;;;20409:18:1;;;20402:36;20455:19;;31410:108:0;20078:402:1;31905:367:0;32071:12;32089:6;-1:-1:-1;;;;;32089:11:0;32108:5;32115:4;;32089:31;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32070:50;;;32139:7;32131:71;;;;-1:-1:-1;;;32131:71:0;;20963:2:1;32131:71:0;;;20945:21:1;21002:2;20982:18;;;20975:30;21041:34;21021:18;;;21014:62;-1:-1:-1;;;21092:18:1;;;21085:49;21151:19;;32131:71:0;20761:415:1;32131:71:0;32237:5;32233:2;32220:44;32244:6;32252:5;32259:4;;32220:44;;;;;;;;;:::i;:::-;;;;;;;;32059:213;31905:367;;;;;;:::o;31613:178::-;31672:20;31689:2;31672:16;:20::i;:::-;31664:75;;;;-1:-1:-1;;;31664:75:0;;;;;;;:::i;:::-;31750:15;;;;20958:1;31750:15;;;;;;;;:33;31613:178::o;18966:238::-;19050:22;19058:4;19064:7;19050;:22::i;:::-;19045:152;;19089:6;:12;;;;;;;;;;;-1:-1:-1;;;;;19089:29:0;;;;;;;;;:36;;-1:-1:-1;;19089:36:0;19121:4;19089:36;;;19172:12;8436:10;;8356:98;19172:12;-1:-1:-1;;;;;19145:40:0;19163:7;-1:-1:-1;;;;;19145:40:0;19157:4;19145:40;;;;;;;;;;18966:238;;:::o;19336:239::-;19420:22;19428:4;19434:7;19420;:22::i;:::-;19416:152;;;19491:5;19459:12;;;;;;;;;;;-1:-1:-1;;;;;19459:29:0;;;;;;;;;;:37;;-1:-1:-1;;19459:37:0;;;19516:40;8436:10;;19459:12;;19516:40;;19491:5;19516:40;19336:239;;:::o;7219:451::-;7294:13;7320:19;7352:10;7356:6;7352:1;:10;:::i;:::-;:14;;7365:1;7352:14;:::i;:::-;-1:-1:-1;;;;;7342:25:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7342:25:0;;7320:47;;-1:-1:-1;;;7378:6:0;7385:1;7378:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;7378:15:0;;;;;;;;;-1:-1:-1;;;7404:6:0;7411:1;7404:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;7404:15:0;;;;;;;;-1:-1:-1;7435:9:0;7447:10;7451:6;7447:1;:10;:::i;:::-;:14;;7460:1;7447:14;:::i;:::-;7435:26;;7430:135;7467:1;7463;:5;7430:135;;;-1:-1:-1;;;7515:5:0;7523:3;7515:11;7502:25;;;;;;;:::i;:::-;;;;7490:6;7497:1;7490:9;;;;;;;;:::i;:::-;;;;:37;-1:-1:-1;;;;;7490:37:0;;;;;;;;-1:-1:-1;7552:1:0;7542:11;;;;;7470:3;;;:::i;:::-;;;7430:135;;;-1:-1:-1;7583:10:0;;7575:55;;;;-1:-1:-1;;;7575:55:0;;22114:2:1;7575:55:0;;;22096:21:1;;;22133:18;;;22126:30;22192:34;22172:18;;;22165:62;22244:18;;7575:55:0;21912:356:1;14:173;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:347::-;243:8;253:6;307:3;300:4;292:6;288:17;284:27;274:55;;325:1;322;315:12;274:55;-1:-1:-1;348:20:1;;-1:-1:-1;;;;;380:30:1;;377:50;;;423:1;420;413:12;377:50;460:4;452:6;448:17;436:29;;512:3;505:4;496:6;488;484:19;480:30;477:39;474:59;;;529:1;526;519:12;474:59;192:347;;;;;:::o;544:758::-;659:6;667;675;683;691;699;707;760:3;748:9;739:7;735:23;731:33;728:53;;;777:1;774;767:12;728:53;800:29;819:9;800:29;:::i;:::-;790:39;;876:2;865:9;861:18;848:32;838:42;;931:2;920:9;916:18;903:32;-1:-1:-1;;;;;950:6:1;947:30;944:50;;;990:1;987;980:12;944:50;1029:58;1079:7;1070:6;1059:9;1055:22;1029:58;:::i;:::-;544:758;;;;-1:-1:-1;1106:8:1;1188:2;1173:18;;1160:32;;1239:3;1224:19;;1211:33;;-1:-1:-1;1291:3:1;1276:19;;;1263:33;;-1:-1:-1;544:758:1;-1:-1:-1;;;;544:758:1:o;1307:286::-;1365:6;1418:2;1406:9;1397:7;1393:23;1389:32;1386:52;;;1434:1;1431;1424:12;1386:52;1460:23;;-1:-1:-1;;;;;;1512:32:1;;1502:43;;1492:71;;1559:1;1556;1549:12;1972:689;2078:6;2086;2094;2102;2110;2118;2171:3;2159:9;2150:7;2146:23;2142:33;2139:53;;;2188:1;2185;2178:12;2139:53;2211:29;2230:9;2211:29;:::i;:::-;2201:39;;2287:2;2276:9;2272:18;2259:32;2249:42;;2342:2;2331:9;2327:18;2314:32;-1:-1:-1;;;;;2361:6:1;2358:30;2355:50;;;2401:1;2398;2391:12;2355:50;2440:58;2490:7;2481:6;2470:9;2466:22;2440:58;:::i;:::-;1972:689;;;;-1:-1:-1;2517:8:1;2599:2;2584:18;;2571:32;;2650:3;2635:19;;;2622:33;;-1:-1:-1;1972:689:1;-1:-1:-1;;;;1972:689:1:o;2666:180::-;2725:6;2778:2;2766:9;2757:7;2753:23;2749:32;2746:52;;;2794:1;2791;2784:12;2746:52;-1:-1:-1;2817:23:1;;2666:180;-1:-1:-1;2666:180:1:o;2851:127::-;2912:10;2907:3;2903:20;2900:1;2893:31;2943:4;2940:1;2933:15;2967:4;2964:1;2957:15;2983:275;3054:2;3048:9;3119:2;3100:13;;-1:-1:-1;;3096:27:1;3084:40;;-1:-1:-1;;;;;3139:34:1;;3175:22;;;3136:62;3133:88;;;3201:18;;:::i;:::-;3237:2;3230:22;2983:275;;-1:-1:-1;2983:275:1:o;3263:530::-;3305:5;3358:3;3351:4;3343:6;3339:17;3335:27;3325:55;;3376:1;3373;3366:12;3325:55;3412:6;3399:20;-1:-1:-1;;;;;3434:2:1;3431:26;3428:52;;;3460:18;;:::i;:::-;3504:55;3547:2;3528:13;;-1:-1:-1;;3524:27:1;3553:4;3520:38;3504:55;:::i;:::-;3584:2;3575:7;3568:19;3630:3;3623:4;3618:2;3610:6;3606:15;3602:26;3599:35;3596:55;;;3647:1;3644;3637:12;3596:55;3712:2;3705:4;3697:6;3693:17;3686:4;3677:7;3673:18;3660:55;3760:1;3735:16;;;3753:4;3731:27;3724:38;;;;3739:7;3263:530;-1:-1:-1;;;3263:530:1:o;3798:537::-;3893:6;3901;3909;3917;3970:3;3958:9;3949:7;3945:23;3941:33;3938:53;;;3987:1;3984;3977:12;3938:53;4010:29;4029:9;4010:29;:::i;:::-;4000:39;;4058:38;4092:2;4081:9;4077:18;4058:38;:::i;:::-;4048:48;;4143:2;4132:9;4128:18;4115:32;4105:42;;4198:2;4187:9;4183:18;4170:32;-1:-1:-1;;;;;4217:6:1;4214:30;4211:50;;;4257:1;4254;4247:12;4211:50;4280:49;4321:7;4312:6;4301:9;4297:22;4280:49;:::i;:::-;4270:59;;;3798:537;;;;;;;:::o;4547:254::-;4615:6;4623;4676:2;4664:9;4655:7;4651:23;4647:32;4644:52;;;4692:1;4689;4682:12;4644:52;4728:9;4715:23;4705:33;;4757:38;4791:2;4780:9;4776:18;4757:38;:::i;:::-;4747:48;;4547:254;;;;;:::o;4991:367::-;5054:8;5064:6;5118:3;5111:4;5103:6;5099:17;5095:27;5085:55;;5136:1;5133;5126:12;5085:55;-1:-1:-1;5159:20:1;;-1:-1:-1;;;;;5191:30:1;;5188:50;;;5234:1;5231;5224:12;5188:50;5271:4;5263:6;5259:17;5247:29;;5331:3;5324:4;5314:6;5311:1;5307:14;5299:6;5295:27;5291:38;5288:47;5285:67;;;5348:1;5345;5338:12;5363:1306;5559:6;5567;5575;5583;5591;5599;5607;5615;5623;5676:3;5664:9;5655:7;5651:23;5647:33;5644:53;;;5693:1;5690;5683:12;5644:53;5733:9;5720:23;-1:-1:-1;;;;;5803:2:1;5795:6;5792:14;5789:34;;;5819:1;5816;5809:12;5789:34;5858:70;5920:7;5911:6;5900:9;5896:22;5858:70;:::i;:::-;5947:8;;-1:-1:-1;5832:96:1;-1:-1:-1;6035:2:1;6020:18;;6007:32;;-1:-1:-1;6051:16:1;;;6048:36;;;6080:1;6077;6070:12;6048:36;6119:72;6183:7;6172:8;6161:9;6157:24;6119:72;:::i;:::-;6210:8;;-1:-1:-1;6093:98:1;-1:-1:-1;6298:2:1;6283:18;;6270:32;;-1:-1:-1;6314:16:1;;;6311:36;;;6343:1;6340;6333:12;6311:36;;6382:72;6446:7;6435:8;6424:9;6420:24;6382:72;:::i;:::-;5363:1306;;;;-1:-1:-1;5363:1306:1;;;;6473:8;;6555:2;6540:18;;6527:32;;6606:3;6591:19;;6578:33;;-1:-1:-1;6658:3:1;6643:19;6630:33;;-1:-1:-1;5363:1306:1;-1:-1:-1;;;;5363:1306:1:o;6674:1237::-;6861:6;6869;6877;6885;6893;6901;6909;6917;6970:3;6958:9;6949:7;6945:23;6941:33;6938:53;;;6987:1;6984;6977:12;6938:53;7027:9;7014:23;-1:-1:-1;;;;;7097:2:1;7089:6;7086:14;7083:34;;;7113:1;7110;7103:12;7083:34;7152:70;7214:7;7205:6;7194:9;7190:22;7152:70;:::i;:::-;7241:8;;-1:-1:-1;7126:96:1;-1:-1:-1;7329:2:1;7314:18;;7301:32;;-1:-1:-1;7345:16:1;;;7342:36;;;7374:1;7371;7364:12;7342:36;7413:72;7477:7;7466:8;7455:9;7451:24;7413:72;:::i;:::-;7504:8;;-1:-1:-1;7387:98:1;-1:-1:-1;7592:2:1;7577:18;;7564:32;;-1:-1:-1;7608:16:1;;;7605:36;;;7637:1;7634;7627:12;7605:36;;7676:72;7740:7;7729:8;7718:9;7714:24;7676:72;:::i;:::-;6674:1237;;;;-1:-1:-1;6674:1237:1;;;;7767:8;;7849:2;7834:18;;7821:32;;7900:3;7885:19;7872:33;;-1:-1:-1;6674:1237:1;-1:-1:-1;;;;6674:1237:1:o;7916:712::-;7970:5;8023:3;8016:4;8008:6;8004:17;8000:27;7990:55;;8041:1;8038;8031:12;7990:55;8077:6;8064:20;8103:4;-1:-1:-1;;;;;8122:2:1;8119:26;8116:52;;;8148:18;;:::i;:::-;8194:2;8191:1;8187:10;8217:28;8241:2;8237;8233:11;8217:28;:::i;:::-;8279:15;;;8349;;;8345:24;;;8310:12;;;;8381:15;;;8378:35;;;8409:1;8406;8399:12;8378:35;8445:2;8437:6;8433:15;8422:26;;8457:142;8473:6;8468:3;8465:15;8457:142;;;8539:17;;8527:30;;8490:12;;;;8577;;;;8457:142;;;8617:5;7916:712;-1:-1:-1;;;;;;;7916:712:1:o;8633:943::-;8787:6;8795;8803;8811;8819;8872:3;8860:9;8851:7;8847:23;8843:33;8840:53;;;8889:1;8886;8879:12;8840:53;8912:29;8931:9;8912:29;:::i;:::-;8902:39;;8960:38;8994:2;8983:9;8979:18;8960:38;:::i;:::-;8950:48;;9049:2;9038:9;9034:18;9021:32;-1:-1:-1;;;;;9113:2:1;9105:6;9102:14;9099:34;;;9129:1;9126;9119:12;9099:34;9152:61;9205:7;9196:6;9185:9;9181:22;9152:61;:::i;:::-;9142:71;;9266:2;9255:9;9251:18;9238:32;9222:48;;9295:2;9285:8;9282:16;9279:36;;;9311:1;9308;9301:12;9279:36;9334:63;9389:7;9378:8;9367:9;9363:24;9334:63;:::i;:::-;9324:73;;9450:3;9439:9;9435:19;9422:33;9406:49;;9480:2;9470:8;9467:16;9464:36;;;9496:1;9493;9486:12;9464:36;;9519:51;9562:7;9551:8;9540:9;9536:24;9519:51;:::i;:::-;9509:61;;;8633:943;;;;;;;;:::o;9763:606::-;9867:6;9875;9883;9891;9899;9952:3;9940:9;9931:7;9927:23;9923:33;9920:53;;;9969:1;9966;9959:12;9920:53;9992:29;10011:9;9992:29;:::i;:::-;9982:39;;10040:38;10074:2;10063:9;10059:18;10040:38;:::i;:::-;10030:48;;10125:2;10114:9;10110:18;10097:32;10087:42;;10176:2;10165:9;10161:18;10148:32;10138:42;;10231:3;10220:9;10216:19;10203:33;-1:-1:-1;;;;;10251:6:1;10248:30;10245:50;;;10291:1;10288;10281:12;10245:50;10314:49;10355:7;10346:6;10335:9;10331:22;10314:49;:::i;10374:266::-;10462:6;10457:3;10450:19;10514:6;10507:5;10500:4;10495:3;10491:14;10478:43;-1:-1:-1;10566:1:1;10541:16;;;10559:4;10537:27;;;10530:38;;;;10622:2;10601:15;;;-1:-1:-1;;10597:29:1;10588:39;;;10584:50;;10374:266::o;10645:557::-;10943:1;10939;10934:3;10930:11;10926:19;10918:6;10914:32;10903:9;10896:51;10983:6;10978:2;10967:9;10963:18;10956:34;11026:3;11021:2;11010:9;11006:18;10999:31;10877:4;11047:62;11104:3;11093:9;11089:19;11081:6;11073;11047:62;:::i;:::-;11140:2;11125:18;;11118:34;;;;-1:-1:-1;11183:3:1;11168:19;11161:35;11039:70;10645:557;-1:-1:-1;;;;10645:557:1:o;12850:399::-;13052:2;13034:21;;;13091:2;13071:18;;;13064:30;13130:34;13125:2;13110:18;;13103:62;-1:-1:-1;;;13196:2:1;13181:18;;13174:33;13239:3;13224:19;;12850:399::o;13254:127::-;13315:10;13310:3;13306:20;13303:1;13296:31;13346:4;13343:1;13336:15;13370:4;13367:1;13360:15;13386:186;13445:6;13498:2;13486:9;13477:7;13473:23;13469:32;13466:52;;;13514:1;13511;13504:12;13466:52;13537:29;13556:9;13537:29;:::i;13577:521::-;13654:4;13660:6;13720:11;13707:25;13814:2;13810:7;13799:8;13783:14;13779:29;13775:43;13755:18;13751:68;13741:96;;13833:1;13830;13823:12;13741:96;13860:33;;13912:20;;;-1:-1:-1;;;;;;13944:30:1;;13941:50;;;13987:1;13984;13977:12;13941:50;14020:4;14008:17;;-1:-1:-1;14051:14:1;14047:27;;;14037:38;;14034:58;;;14088:1;14085;14078:12;14103:127;14164:10;14159:3;14155:20;14152:1;14145:31;14195:4;14192:1;14185:15;14219:4;14216:1;14209:15;14235:135;14274:3;14295:17;;;14292:43;;14315:18;;:::i;:::-;-1:-1:-1;14362:1:1;14351:13;;14235:135::o;14375:1030::-;14482:6;14477:3;14470:19;14452:3;14508:4;14549:2;14544:3;14540:12;14574:11;14601;14594:18;;14651:6;14648:1;14644:14;14637:5;14633:26;14621:38;;14682:5;14705:1;14715:664;14729:6;14726:1;14723:13;14715:664;;;14800:5;14794:4;14790:16;14785:3;14778:29;14859:6;14846:20;14949:2;14945:7;14937:5;14921:14;14917:26;14913:40;14893:18;14889:65;14879:93;;14968:1;14965;14958:12;14879:93;15000:30;;15059:21;;-1:-1:-1;;;;;15096:32:1;;15093:52;;;15141:1;15138;15131:12;15093:52;15192:8;15176:14;15172:29;15165:5;15161:41;15158:61;;;15215:1;15212;15205:12;15158:61;15240:59;15294:4;15284:8;15279:2;15270:7;15266:16;15240:59;:::i;:::-;15357:12;;;;15232:67;-1:-1:-1;;;15322:15:1;;;;14751:1;14744:9;14715:664;;;-1:-1:-1;15395:4:1;;14375:1030;-1:-1:-1;;;;;;;14375:1030:1:o;15410:1436::-;15862:3;15875:22;;;15847:19;;15932:22;;;15814:4;16012:6;15985:3;15970:19;;15814:4;16046:235;16060:6;16057:1;16054:13;16046:235;;;-1:-1:-1;;;;;16125:26:1;16144:6;16125:26;:::i;:::-;16121:52;16109:65;;16197:4;16256:15;;;;16221:12;;;;16082:1;16075:9;16046:235;;;-1:-1:-1;16319:19:1;;;16312:4;16297:20;;16290:49;16348:19;;;-1:-1:-1;;;;;16379:31:1;;16376:51;;;16423:1;16420;16413:12;16376:51;16457:6;16454:1;16450:14;16436:28;;16510:6;16502;16495:4;16490:3;16486:14;16473:44;16545:6;16540:3;16536:16;16526:26;;;16579:4;16575:2;16571:13;16604:1;16600:2;16593:13;16666:4;16654:9;16650:2;16646:18;16642:29;16637:2;16626:9;16622:18;16615:57;16689:64;16750:2;16742:6;16734;16689:64;:::i;:::-;16784:2;16769:18;;16762:34;;;;-1:-1:-1;;;16827:3:1;16812:19;16805:35;16681:72;15410:1436;-1:-1:-1;;;;;;15410:1436:1:o;18092:128::-;18132:3;18163:1;18159:6;18156:1;18153:13;18150:39;;;18169:18;;:::i;:::-;-1:-1:-1;18205:9:1;;18092:128::o;18225:258::-;18297:1;18307:113;18321:6;18318:1;18315:13;18307:113;;;18397:11;;;18391:18;18378:11;;;18371:39;18343:2;18336:10;18307:113;;;18438:6;18435:1;18432:13;18429:48;;;18473:1;18464:6;18459:3;18455:16;18448:27;18429:48;;18225:258;;;:::o;18488:786::-;18899:25;18894:3;18887:38;18869:3;18954:6;18948:13;18970:62;19025:6;19020:2;19015:3;19011:12;19004:4;18996:6;18992:17;18970:62;:::i;:::-;-1:-1:-1;;;19091:2:1;19051:16;;;19083:11;;;19076:40;19141:13;;19163:63;19141:13;19212:2;19204:11;;19197:4;19185:17;;19163:63;:::i;:::-;19246:17;19265:2;19242:26;;18488:786;-1:-1:-1;;;;18488:786:1:o;19279:383::-;19428:2;19417:9;19410:21;19391:4;19460:6;19454:13;19503:6;19498:2;19487:9;19483:18;19476:34;19519:66;19578:6;19573:2;19562:9;19558:18;19553:2;19545:6;19541:15;19519:66;:::i;:::-;19646:2;19625:15;-1:-1:-1;;19621:29:1;19606:45;;;;19653:2;19602:54;;19279:383;-1:-1:-1;;19279:383:1:o;19667:406::-;19869:2;19851:21;;;19908:2;19888:18;;;19881:30;19947:34;19942:2;19927:18;;19920:62;-1:-1:-1;;;20013:2:1;19998:18;;19991:40;20063:3;20048:19;;19667:406::o;20485:271::-;20668:6;20660;20655:3;20642:33;20624:3;20694:16;;20719:13;;;20694:16;20485:271;-1:-1:-1;20485:271:1:o;21181:412::-;21423:1;21419;21414:3;21410:11;21406:19;21398:6;21394:32;21383:9;21376:51;21463:6;21458:2;21447:9;21443:18;21436:34;21506:2;21501;21490:9;21486:18;21479:30;21357:4;21526:61;21583:2;21572:9;21568:18;21560:6;21552;21526:61;:::i;:::-;21518:69;21181:412;-1:-1:-1;;;;;;21181:412:1:o;21598:168::-;21638:7;21704:1;21700;21696:6;21692:14;21689:1;21686:21;21681:1;21674:9;21667:17;21663:45;21660:71;;;21711:18;;:::i;:::-;-1:-1:-1;21751:9:1;;21598:168::o;21771:136::-;21810:3;21838:5;21828:39;;21847:18;;:::i;:::-;-1:-1:-1;;;21883:18:1;;21771:136::o
Swarm Source
ipfs://566483e5f5e2f0a0d0cbfcc0c42126de40ad70f256704be5832e06a5283a14d7
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.