Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 83 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Toggle Pause | 17490062 | 420 days ago | IN | 0 ETH | 0.0007166 | ||||
Revoke Role | 17489991 | 420 days ago | IN | 0 ETH | 0.00040182 | ||||
Grant Role | 17489989 | 420 days ago | IN | 0 ETH | 0.00076255 | ||||
Withdraw All | 17426099 | 429 days ago | IN | 0 ETH | 0.00079223 | ||||
Mint2 | 17403858 | 432 days ago | IN | 0.065 ETH | 0.00348537 | ||||
Mint2 | 17319867 | 443 days ago | IN | 0.065 ETH | 0.00868488 | ||||
Mint2 | 17296964 | 447 days ago | IN | 0.195 ETH | 0.01559034 | ||||
Mint2 | 17296959 | 447 days ago | IN | 0.195 ETH | 0.01614228 | ||||
Mint2 | 17296829 | 447 days ago | IN | 0.26 ETH | 0.01811556 | ||||
Mint2 | 17296684 | 447 days ago | IN | 0.195 ETH | 0.01454179 | ||||
Mint2 | 17296643 | 447 days ago | IN | 0.195 ETH | 0.01349009 | ||||
Mint2 | 17296479 | 447 days ago | IN | 0.195 ETH | 0.01467711 | ||||
Mint2 | 17291552 | 447 days ago | IN | 0.13 ETH | 0.01097666 | ||||
Mint2 | 17291475 | 447 days ago | IN | 0.065 ETH | 0.006487 | ||||
Mint2 | 17243881 | 454 days ago | IN | 0.065 ETH | 0.00882954 | ||||
Mint2 | 16936940 | 498 days ago | IN | 0.065 ETH | 0.00635698 | ||||
Mint2 | 16929458 | 499 days ago | IN | 0.065 ETH | 0.00403016 | ||||
Mint2 | 16907960 | 502 days ago | IN | 0.065 ETH | 0.00382424 | ||||
Mint2 | 16893800 | 504 days ago | IN | 0.065 ETH | 0.00375872 | ||||
Mint2 | 16886287 | 505 days ago | IN | 0.065 ETH | 0.0026654 | ||||
Mint2 | 16879491 | 506 days ago | IN | 0.065 ETH | 0.00290483 | ||||
Mint2 | 16878480 | 506 days ago | IN | 0.065 ETH | 0.00392419 | ||||
Mint2 | 16858632 | 509 days ago | IN | 0.065 ETH | 0.00255094 | ||||
Mint2 | 16846833 | 510 days ago | IN | 0.065 ETH | 0.0038352 | ||||
Mint2 | 16820982 | 514 days ago | IN | 0.065 ETH | 0.00596125 |
Loading...
Loading
Contract Name:
EthermonAvatarDistributor
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-07-28 */ // File: contracts/EthermonAvatarDistributor.sol /** *Submitted for verification at polygonscan.com on 2022-01-28 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @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); } } /** * @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); } /** * @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; } } /** * @dev External interface of AccessControl declared to support ERC165 detection. */ interface IAccessControl { function hasRole(bytes32 role, address account) external view returns (bool); function getRoleAdmin(bytes32 role) external view returns (bytes32); function grantRole(bytes32 role, address account) external; function revokeRole(bytes32 role, address account) external; function renounceRole(bytes32 role, address account) external; } /** * @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 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 {_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 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]{20}) is missing role (0x[0-9a-f]{32})$/ * * _Available since v4.1._ */ modifier onlyRole(bytes32 role) { _checkRole(role, _msgSender()); _; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId); } /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) public view override returns (bool) { return _roles[role].members[account]; } /** * @dev Revert with a standard message if `account` is missing `role`. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{20}) is missing role (0x[0-9a-f]{32})$/ */ function _checkRole(bytes32 role, address account) internal view { if (!hasRole(role, account)) { revert( string( abi.encodePacked( "AccessControl: account ", Strings.toHexString(uint160(account), 20), " is missing role ", Strings.toHexString(uint256(role), 32) ) ) ); } } /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) public view override returns (bytes32) { return _roles[role].adminRole; } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _grantRole(role, account); } /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _revokeRole(role, account); } /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been granted `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) public virtual override { require( account == _msgSender(), "AccessControl: can only renounce roles for self" ); _revokeRole(role, account); } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. Note that unlike {grantRole}, this function doesn't perform any * checks on the calling account. * * [WARNING] * ==== * This function should only be called from the constructor when setting * up the initial roles for the system. * * Using this function in any other way is effectively circumventing the admin * system imposed by {AccessControl}. * ==== */ function _setupRole(bytes32 role, address account) internal virtual { _grantRole(role, account); } /** * @dev Sets `adminRole` as ``role``'s admin role. * * Emits a {RoleAdminChanged} event. */ function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { emit RoleAdminChanged(role, getRoleAdmin(role), adminRole); _roles[role].adminRole = adminRole; } function _grantRole(bytes32 role, address account) private { if (!hasRole(role, account)) { _roles[role].members[account] = true; emit RoleGranted(role, account, _msgSender()); } } function _revokeRole(bytes32 role, address account) private { if (hasRole(role, account)) { _roles[role].members[account] = false; emit RoleRevoked(role, account, _msgSender()); } } } /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer( address indexed from, address indexed to, uint256 indexed tokenId ); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval( address indexed owner, address indexed approved, uint256 indexed tokenId ); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll( address indexed owner, address indexed operator, bool approved ); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue( target, data, value, "Address: low-level call with value failed" ); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require( address(this).balance >= value, "Address: insufficient balance for call" ); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}( data ); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall( target, data, "Address: low-level static call failed" ); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall( target, data, "Address: low-level delegate call failed" ); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn( token, abi.encodeWithSelector(token.transfer.selector, to, value) ); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn( token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value) ); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn( token, abi.encodeWithSelector(token.approve.selector, spender, value) ); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn( token, abi.encodeWithSelector( token.approve.selector, spender, newAllowance ) ); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { //unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require( oldAllowance >= value, "SafeERC20: decreased allowance below zero" ); uint256 newAllowance = oldAllowance - value; _callOptionalReturn( token, abi.encodeWithSelector( token.approve.selector, spender, newAllowance ) ); //} } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall( data, "SafeERC20: low-level call failed" ); if (returndata.length > 0) { // Return data is optional require( abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed" ); } } } interface EthermonAvatarIF { function mintNextToken(address _mintTo) external returns (bool); function mint(address _mintTo, uint256 _tokenId) external returns (bool); function getCurrentTokenId() external view returns (uint256); function totalSupply() external view returns (uint256); function cap() external view returns (uint256); function balanceOf(address _owner) external view returns (uint256); } contract EthermonAvatarDistributor is AccessControl { using SafeERC20 for IERC20; EthermonAvatarIF public eavaToken; IERC20 public emonToken; uint256 public tokenPrice = uint256(5 * 10**16); // 0.05 eth for test, 50 MATIC address public withdrawWallet; bytes32 public constant TOGGLE_MINTING_ROLE = keccak256("TOGGLE_MINTING_ROLE"); address public upgradedToAddress = address(0); uint256 public mintingCap = 555; uint256 public mintingCount = 0; uint8 public MAX_MINT_LIMIT = 10; uint8 public MAX_MINT_LIMIT_WHITELIST = 10; mapping(address => bool) public whitelist1; mapping(address => bool) public whitelist2; bool public whitelist1Enabled = true; bool public whitelist2Enabled = false; uint256 public onWhiteList2max = 1; uint256 public onWhiteList2mints = 0; uint256 public tokenCounter = 0; constructor(EthermonAvatarIF _eavaToken, IERC20 _emonToken) { _setupRole(DEFAULT_ADMIN_ROLE, msg.sender); _setupRole(TOGGLE_MINTING_ROLE, msg.sender); tokenCounter = 519; withdrawWallet = msg.sender; eavaToken = _eavaToken; emonToken = IERC20(_emonToken); } function SetTokenCounter(uint256 _tokenCounter) external { require( hasRole(DEFAULT_ADMIN_ROLE, _msgSender()), "Caller is not a admin" ); tokenCounter = _tokenCounter; } function setContracts(EthermonAvatarIF _eavaToken, IERC20 _emonToken) external { require( hasRole(DEFAULT_ADMIN_ROLE, _msgSender()), "Caller is not a admin" ); eavaToken = _eavaToken; emonToken = IERC20(_emonToken); } function upgrade(address _upgradedToAddress) public { require( hasRole(DEFAULT_ADMIN_ROLE, _msgSender()), "Caller is not a admin" ); upgradedToAddress = _upgradedToAddress; } // mint bool public _mintingPaused = true; bool public onlyMintingByTokenHoldersAllowed = false; uint256 public minTokenBalanceRequired = 0; //Would 1000 EMON to mint function getBalanceEAVA(address _owner) public view returns (uint256) { return eavaToken.balanceOf(_owner); } function mint2(uint256 _num) public payable returns (bool) { require( address(0) == upgradedToAddress, "Contract has been upgraded to a new address" ); require( msg.value >= (tokenPrice * _num), "Insufficient amount provided" ); require(!_mintingPaused, "Minting paused"); // require(whiteList[msg.sender] || !whitelistOnly, "ONLY WHITELIST"); //either on whitelist or whitelist is false require((mintingCount + _num) <= mintingCap, "Minting cap reached"); mintingCount = mintingCount + _num; uint256 emonBalance = emonToken.balanceOf(msg.sender); uint256 eavaBalance = eavaToken.balanceOf(msg.sender); require( (whitelist1Enabled && whitelist1[msg.sender] && (eavaBalance + _num <= MAX_MINT_LIMIT_WHITELIST)) || ( (whitelist2Enabled && whitelist2[msg.sender] && (emonBalance >= minTokenBalanceRequired)) ) || (!whitelist1Enabled && !whitelist2Enabled), "ONLY WHITELIST" ); // if on whitelist 2 and cap not reached require( (!whitelist2Enabled) || (((whitelist1Enabled && whitelist1[msg.sender])) || (whitelist2Enabled && (eavaBalance + _num <= MAX_MINT_LIMIT_WHITELIST) && (whitelist2[msg.sender] && (emonBalance >= minTokenBalanceRequired)) && (onWhiteList2max > onWhiteList2mints + _num))), "WHITELIST 2 cap reached" ); if ( !whitelist2Enabled || (((whitelist1Enabled && whitelist1[msg.sender])) || (whitelist2Enabled && (whitelist2[msg.sender] && (emonBalance >= minTokenBalanceRequired)) && (onWhiteList2max > onWhiteList2mints + _num))) ) { onWhiteList2mints = onWhiteList2mints + _num; } uint256 tokenId = tokenCounter - 1; // MAX_MINT_LIMIT (A person can mint 10 in one go only). require( _num <= MAX_MINT_LIMIT && tokenId + _num <= mintingCap, "Either Maximum cap of 5555 mints reached OR Miniting capacity exceeds 10" ); for (uint256 i; i < _num; i++) { eavaToken.mint(msg.sender, tokenCounter); //, tokenId + i + 1 tokenCounter += 1; } return true; } function mint(uint256 _num) public payable returns (bool) { require( address(0) == upgradedToAddress, "Contract has been upgraded to a new address" ); require( msg.value >= (tokenPrice * _num), "Insufficient amount provided" ); require(!_mintingPaused, "Minting paused"); // require(whiteList[msg.sender] || !whitelistOnly, "ONLY WHITELIST"); //either on whitelist or whitelist is false require((mintingCount + _num) <= mintingCap, "Minting cap reached"); mintingCount = mintingCount + _num; uint256 emonBalance = emonToken.balanceOf(msg.sender); uint256 eavaBalance = eavaToken.balanceOf(msg.sender); require( (whitelist1Enabled && whitelist1[msg.sender] && (eavaBalance + _num <= MAX_MINT_LIMIT_WHITELIST)) || ( (whitelist2Enabled && whitelist2[msg.sender] && (emonBalance >= minTokenBalanceRequired)) ) || (!whitelist1Enabled && !whitelist2Enabled), "ONLY WHITELIST" ); // if on whitelist 2 and cap not reached require( (!whitelist2Enabled) || (((whitelist1Enabled && whitelist1[msg.sender])) || (whitelist2Enabled && (eavaBalance + _num <= MAX_MINT_LIMIT_WHITELIST) && (whitelist2[msg.sender] && (emonBalance >= minTokenBalanceRequired)) && (onWhiteList2max > onWhiteList2mints + _num))), "WHITELIST 2 cap reached" ); if ( !whitelist2Enabled || (((whitelist1Enabled && whitelist1[msg.sender])) || (whitelist2Enabled && (whitelist2[msg.sender] && (emonBalance >= minTokenBalanceRequired)) && (onWhiteList2max > onWhiteList2mints + _num))) ) { onWhiteList2mints = onWhiteList2mints + _num; } uint256 tokenId = eavaToken.getCurrentTokenId(); // MAX_MINT_LIMIT (A person can mint 10 in one go only). require( _num <= MAX_MINT_LIMIT && tokenId + _num <= mintingCap, "Either Maximum cap of 5555 mints reached OR Miniting capacity exceeds 10" ); for (uint256 i; i < _num; i++) { eavaToken.mintNextToken(msg.sender); //, tokenId + i + 1 } return true; } // mintUsingEMON bool public _mintingUsingEMONPaused = true; uint256 public tokenPriceEMON = uint256(2000 * 10**18); // = 2000 EMON paid to mint function setLimitConfig(uint8 _limit, uint8 _limitWhitelist) external { require( _limit >= 0 && _limitWhitelist >= 0 && hasRole(DEFAULT_ADMIN_ROLE, msg.sender), "Wrong limit parameter or Caller is not an admin" ); MAX_MINT_LIMIT = _limit; MAX_MINT_LIMIT_WHITELIST = _limitWhitelist; } function mintUsingEMON(uint256 _num) public returns (bool) { require( address(0) == upgradedToAddress, "Contract has been upgraded to a new address" ); require(!_mintingUsingEMONPaused, "Minting using EMON paused"); require((mintingCount + _num) <= mintingCap, "Minting cap reached"); mintingCount = mintingCount + _num; uint256 emonBalance = emonToken.balanceOf(msg.sender); uint256 eavaBalance = eavaToken.balanceOf(msg.sender); require( (whitelist1Enabled && whitelist1[msg.sender] && (eavaBalance + _num <= MAX_MINT_LIMIT_WHITELIST)) || ( (whitelist2Enabled && whitelist2[msg.sender] && (emonBalance >= minTokenBalanceRequired)) ) || (!whitelist1Enabled && !whitelist2Enabled), "ONLY WHITELIST" ); // if on whitelist 2 and cap not reached require( (!whitelist2Enabled && (eavaBalance + _num <= MAX_MINT_LIMIT_WHITELIST)) || (((whitelist1Enabled && whitelist1[msg.sender])) || (whitelist2Enabled && (whitelist2[msg.sender] && (emonBalance >= minTokenBalanceRequired)) && (onWhiteList2max > onWhiteList2mints + _num))), "WHITELIST 2 cap reached" ); if ( !whitelist2Enabled || (((whitelist1Enabled && whitelist1[msg.sender])) || (whitelist2Enabled && (whitelist2[msg.sender] && (emonBalance >= minTokenBalanceRequired)) && (onWhiteList2max > onWhiteList2mints + _num))) ) { onWhiteList2mints = onWhiteList2mints + _num; } uint256 tokenId = eavaToken.getCurrentTokenId(); // MAX_MINT_LIMIT (A person can mint 10 in one go only). require( _num <= MAX_MINT_LIMIT && tokenId + _num < mintingCap, "Either Maximum cap of 5555 mints reached OR Miniting capacity exceeds 10" ); emonToken.safeTransferFrom( msg.sender, address(this), (tokenPriceEMON * _num) ); for (uint256 i; i < _num; i++) { eavaToken.mintNextToken(msg.sender); } return true; } fallback() external payable {} receive() external payable {} // admin functions function withdrawAll() public { uint256 _each = address(this).balance; require(payable(withdrawWallet).send(_each)); } function updateWithdrawWallet(address _newWallet) public { require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), "Caller is not admin"); withdrawWallet = _newWallet; } function togglePause(bool _pause) public { require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), "Caller is not admin"); require(_mintingPaused != _pause, "Already in desired pause state"); _mintingPaused = _pause; } function togglePauseEMON(bool _pause) public { require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), "Caller is not admin"); require( _mintingUsingEMONPaused != _pause, "Already in desired pause state" ); _mintingUsingEMONPaused = _pause; } function toggleOnlyMintingByTokenHolders(bool _isRestricted) public { require( hasRole(DEFAULT_ADMIN_ROLE, msg.sender) || hasRole(TOGGLE_MINTING_ROLE, msg.sender), "Caller is not toggler or admin" ); onlyMintingByTokenHoldersAllowed = _isRestricted; } function updateMinTokenBalanceRequired(uint256 _required) public { require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), "Caller is not admin"); minTokenBalanceRequired = _required; } function updatePrice(uint256 _newPrice) public { require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), "Caller is not admin"); tokenPrice = _newPrice; } function updatePriceEMON(uint256 _newPrice) public { require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), "Caller is not admin"); tokenPriceEMON = _newPrice; } function adminWithdrawERC20(address token) external { require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), "Caller is not admin"); uint256 amount = IERC20(token).balanceOf(address(this)); IERC20(token).transfer(msg.sender, amount); } function adminWithdrawERC721(address token, uint256 _tokenId) external { require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), "Caller is not admin"); IERC721(token).transferFrom(address(this), msg.sender, _tokenId); } // whitelist 1 uint256 onWhitelist1Count = 0; function addToWhiteList1(address[] calldata entries) external { require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), "Caller is not admin"); for (uint256 i = 0; i < entries.length; i++) { address entry = entries[i]; require(entry != address(0), "Cannot add zero address"); require(!whitelist1[entry], "Cannot add duplicate address"); whitelist1[entry] = true; onWhitelist1Count++; } } function removeFromWhiteList1(address[] calldata entries) external { require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), "Caller is not admin"); for (uint256 i = 0; i < entries.length; i++) { address entry = entries[i]; require(entry != address(0), "Cannot remove zero address"); whitelist1[entry] = false; onWhitelist1Count--; } } function toggleWhiteList1(bool _whitelist1Enabled) external { require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), "Caller is not admin"); whitelist1Enabled = _whitelist1Enabled; } function isOnWhiteList1(address addr) external view returns (bool) { return whitelist1[addr]; } function totalOnWhitelist1() external view returns (uint256) { return onWhitelist1Count; } // whitelist 2 uint256 onWhitelist2Count = 0; function addToWhiteList2() external { require( !whitelist2[msg.sender], "Cannot add duplicate address to whitelist 2" ); // User need to hold EMON to add themselves to whiteList2 uint256 emonBalance = emonToken.balanceOf(msg.sender); require( emonBalance >= minTokenBalanceRequired, "Insufficient EMON balance to add to whiteList 2" ); whitelist2[msg.sender] = true; onWhitelist2Count++; } function removeFromWhiteList2(address[] calldata entries) external { require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), "Caller is not admin"); for (uint256 i = 0; i < entries.length; i++) { address entry = entries[i]; require(entry != address(0), "Cannot remove zero address"); whitelist2[entry] = false; onWhitelist2Count--; } } function toggleWhiteList2(bool _whitelist2Enabled) external { require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), "Caller is not admin"); whitelist2Enabled = _whitelist2Enabled; } function isOnWhiteList2(address addr) external view returns (bool) { return whitelist2[addr]; } function totalOnWhitelist2() external view returns (uint256) { return onWhitelist2Count; } function setWhiteList2Cap(uint256 _onWhiteList2cap) external { require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), "Caller is not admin"); onWhiteList2max = _onWhiteList2cap; } function setMintingCap(uint256 _mintingCap) external { require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), "Caller is not admin"); mintingCap = _mintingCap; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract EthermonAvatarIF","name":"_eavaToken","type":"address"},{"internalType":"contract IERC20","name":"_emonToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_MINT_LIMIT","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_MINT_LIMIT_WHITELIST","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenCounter","type":"uint256"}],"name":"SetTokenCounter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TOGGLE_MINTING_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mintingPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mintingUsingEMONPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"entries","type":"address[]"}],"name":"addToWhiteList1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addToWhiteList2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"adminWithdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"adminWithdrawERC721","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"eavaToken","outputs":[{"internalType":"contract EthermonAvatarIF","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emonToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"getBalanceEAVA","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isOnWhiteList1","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isOnWhiteList2","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokenBalanceRequired","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_num","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_num","type":"uint256"}],"name":"mint2","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_num","type":"uint256"}],"name":"mintUsingEMON","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintingCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintingCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"onWhiteList2max","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"onWhiteList2mints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"onlyMintingByTokenHoldersAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"entries","type":"address[]"}],"name":"removeFromWhiteList1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"entries","type":"address[]"}],"name":"removeFromWhiteList2","outputs":[],"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":"contract EthermonAvatarIF","name":"_eavaToken","type":"address"},{"internalType":"contract IERC20","name":"_emonToken","type":"address"}],"name":"setContracts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_limit","type":"uint8"},{"internalType":"uint8","name":"_limitWhitelist","type":"uint8"}],"name":"setLimitConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintingCap","type":"uint256"}],"name":"setMintingCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_onWhiteList2cap","type":"uint256"}],"name":"setWhiteList2Cap","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":"bool","name":"_isRestricted","type":"bool"}],"name":"toggleOnlyMintingByTokenHolders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_pause","type":"bool"}],"name":"togglePause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_pause","type":"bool"}],"name":"togglePauseEMON","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_whitelist1Enabled","type":"bool"}],"name":"toggleWhiteList1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_whitelist2Enabled","type":"bool"}],"name":"toggleWhiteList2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenPriceEMON","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalOnWhitelist1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalOnWhitelist2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_required","type":"uint256"}],"name":"updateMinTokenBalanceRequired","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"updatePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"updatePriceEMON","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"updateWithdrawWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_upgradedToAddress","type":"address"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"upgradedToAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist1","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelist1Enabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist2","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelist2Enabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405266b1a2bc2ec50000600355600580546001600160a01b031916905561022b6006556000600781905560088054600a60ff199182161761ff0019908116610a0017909255600b8054821660019081178416909155600c819055600d849055600e849055600f8054831682179093169092556010839055601180549091169091179055686c6b935b8bbd4000006012556013819055601455348015620000a757600080fd5b506040516200375138038062003751833981016040819052620000ca916200020d565b620000d760003362000146565b620001037f9cb032b8cc7b4041809d26a3bfef7f826e63f69957d4724d2d7f9648e24165093362000146565b610207600e55600480546001600160a01b03199081163317909155600180546001600160a01b039485169083161790556002805492909316911617905562000264565b62000152828262000156565b5050565b620001628282620001e0565b62000152576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556200019c62000209565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b3390565b6000806040838503121562000220578182fd5b82516200022d816200024b565b602084015190925062000240816200024b565b809150509250929050565b6001600160a01b03811681146200026157600080fd5b50565b6134dd80620002746000396000f3fe6080604052600436106103905760003560e01c806379ad73e2116101dc578063a675844811610102578063c4bdf966116100a0578063d547741f1161006f578063d547741f14610989578063d8952a49146109a9578063fcdf3ae2146109c9578063fe880735146109e957610397565b8063c4bdf9661461092a578063cc20289a1461093f578063cd8e0ab21461095f578063d082e3811461097457610397565b8063aef6ce2a116100dc578063aef6ce2a146108c0578063bc78d1e3146108d5578063c1244e8d146108f5578063c1c1e70f1461090a57610397565b8063a67584481461086b578063a772a8721461088b578063aeae2f4f146108ab57610397565b8063853828b61161017a57806391d148541161014957806391d148541461080357806392e3233314610823578063a0712d6814610843578063a217fddf1461085657610397565b8063853828b6146107a457806385d178f4146107b957806386d576e5146107ce5780638d6cc56d146107e357610397565b80637f313af4116101b65780637f313af4146107455780637f59230f1461075a5780637ff9b5961461076f5780638239556e1461078457610397565b806379ad73e2146106e55780637b14ceb3146107055780637b577a8f1461072557610397565b80633ad504c0116102c157806367ac20d01161025f5780636e3492101161022e5780636e3492101461066c578063731c24b5146106815780637451a29c146106a3578063753e39f7146106c557610397565b806367ac20d01461060257806367e8a0b7146106225780636b5ecffc146106375780636c5c482d1461064c57610397565b8063576036831161029b578063576036831461058d57806357d159c6146105a257806362688166146105c25780636781bff3146105e257610397565b80633ad504c0146105385780633f23a566146105585780634ff7eb261461056d57610397565b806322aceb901161032e578063359d88bb11610308578063359d88bb146104c557806336568abe146104e557806336e39b4a146105055780633aa180881461052557610397565b806322aceb9014610470578063248a9ca3146104855780632f2ff15d146104a557610397565b80630c99106a1161036a5780630c99106a1461041157806311074b6f1461042657806319a33ea21461043b57806320cd08a91461045b57610397565b806301ffc9a7146103995780630900f010146103cf5780630a3fe1f8146103ef57610397565b3661039757005b005b3480156103a557600080fd5b506103b96103b4366004612c6e565b610a09565b6040516103c69190612def565b60405180910390f35b3480156103db57600080fd5b506103976103ea366004612b39565b610a36565b3480156103fb57600080fd5b50610404610a8a565b6040516103c69190612dfa565b34801561041d57600080fd5b50610404610a90565b34801561043257600080fd5b50610404610a96565b34801561044757600080fd5b50610397610456366004612b39565b610a9c565b34801561046757600080fd5b506103b9610bca565b34801561047c57600080fd5b50610397610bd3565b34801561049157600080fd5b506104046104a0366004612c27565b610cd8565b3480156104b157600080fd5b506103976104c0366004612c3f565b610ced565b3480156104d157600080fd5b506103976104e0366004612b80565b610d11565b3480156104f157600080fd5b50610397610500366004612c3f565b610de9565b34801561051157600080fd5b50610397610520366004612c27565b610e2f565b6103b9610533366004612c27565b610e5b565b34801561054457600080fd5b506103b9610553366004612b39565b61134f565b34801561056457600080fd5b50610404611364565b34801561057957600080fd5b506103b9610588366004612b39565b61136a565b34801561059957600080fd5b50610404611388565b3480156105ae57600080fd5b506103976105bd366004612bef565b61138e565b3480156105ce57600080fd5b506103976105dd366004612cdb565b6113f1565b3480156105ee57600080fd5b506103b96105fd366004612b39565b61143d565b34801561060e57600080fd5b506103b961061d366004612c27565b61145b565b34801561062e57600080fd5b506103b961198b565b34801561064357600080fd5b506103b9611994565b34801561065857600080fd5b50610397610667366004612b80565b61199d565b34801561067857600080fd5b50610404611ab1565b34801561068d57600080fd5b50610696611ab7565b6040516103c691906133b4565b3480156106af57600080fd5b506106b8611ac5565b6040516103c69190612d9e565b3480156106d157600080fd5b506103976106e0366004612c27565b611ad4565b3480156106f157600080fd5b50610397610700366004612bef565b611b02565b34801561071157600080fd5b50610397610720366004612c27565b611b73565b34801561073157600080fd5b50610397610740366004612bef565b611b9f565b34801561075157600080fd5b506103b9611c02565b34801561076657600080fd5b50610696611c10565b34801561077b57600080fd5b50610404611c19565b34801561079057600080fd5b5061039761079f366004612b55565b611c1f565b3480156107b057600080fd5b50610397611cac565b3480156107c557600080fd5b506106b8611ce1565b3480156107da57600080fd5b506103b9611cf0565b3480156107ef57600080fd5b506103976107fe366004612c27565b611cfe565b34801561080f57600080fd5b506103b961081e366004612c3f565b611d2a565b34801561082f57600080fd5b5061039761083e366004612b39565b611d53565b6103b9610851366004612c27565b611d9c565b34801561086257600080fd5b506104046122d3565b34801561087757600080fd5b50610397610886366004612c27565b6122d8565b34801561089757600080fd5b506103976108a6366004612c27565b612304565b3480156108b757600080fd5b506106b8612330565b3480156108cc57600080fd5b5061040461233f565b3480156108e157600080fd5b506103976108f0366004612bef565b612345565b34801561090157600080fd5b506106b8612386565b34801561091657600080fd5b50610397610925366004612b80565b612395565b34801561093657600080fd5b5061040461246d565b34801561094b57600080fd5b5061040461095a366004612b39565b612473565b34801561096b57600080fd5b506104046124f4565b34801561098057600080fd5b50610404612518565b34801561099557600080fd5b506103976109a4366004612c3f565b61251e565b3480156109b557600080fd5b506103976109c4366004612c96565b61253d565b3480156109d557600080fd5b506103b96109e4366004612b39565b612594565b3480156109f557600080fd5b50610397610a04366004612bef565b6125a9565b60006001600160e01b03198216637965db0b60e01b1480610a2e5750610a2e826125e3565b90505b919050565b610a43600061081e6125fc565b610a685760405162461bcd60e51b8152600401610a5f90612e36565b60405180910390fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b60105481565b60135490565b60125481565b610aa7600033611d2a565b610ac35760405162461bcd60e51b8152600401610a5f906131bd565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190610af2903090600401612d9e565b60206040518083038186803b158015610b0a57600080fd5b505afa158015610b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b429190612cc3565b60405163a9059cbb60e01b81529091506001600160a01b0383169063a9059cbb90610b739033908590600401612dd6565b602060405180830381600087803b158015610b8d57600080fd5b505af1158015610ba1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc59190612c0b565b505050565b60115460ff1681565b336000908152600a602052604090205460ff1615610c035760405162461bcd60e51b8152600401610a5f906130ec565b6002546040516370a0823160e01b81526000916001600160a01b0316906370a0823190610c34903390600401612d9e565b60206040518083038186803b158015610c4c57600080fd5b505afa158015610c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c849190612cc3565b9050601054811015610ca85760405162461bcd60e51b8152600401610a5f9061309d565b336000908152600a60205260408120805460ff191660011790556014805491610cd083613453565b919050555050565b60009081526020819052604090206001015490565b610cf682610cd8565b610d0781610d026125fc565b612600565b610bc58383612664565b610d1c600033611d2a565b610d385760405162461bcd60e51b8152600401610a5f906131bd565b60005b81811015610bc5576000838383818110610d6557634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610d7a9190612b39565b90506001600160a01b038116610da25760405162461bcd60e51b8152600401610a5f90613186565b6001600160a01b0381166000908152600960205260408120805460ff191690556013805491610dd08361343c565b9190505550508080610de190613453565b915050610d3b565b610df16125fc565b6001600160a01b0316816001600160a01b031614610e215760405162461bcd60e51b8152600401610a5f90613365565b610e2b82826126e9565b5050565b610e3a600033611d2a565b610e565760405162461bcd60e51b8152600401610a5f906131bd565b601255565b6005546000906001600160a01b031615610e875760405162461bcd60e51b8152600401610a5f9061301b565b81600354610e9591906133da565b341015610eb45760405162461bcd60e51b8152600401610a5f90613221565b600f5460ff1615610ed75760405162461bcd60e51b8152600401610a5f90612f08565b60065482600754610ee891906133c2565b1115610f065760405162461bcd60e51b8152600401610a5f9061328f565b81600754610f1491906133c2565b6007556002546040516370a0823160e01b81526000916001600160a01b0316906370a0823190610f48903390600401612d9e565b60206040518083038186803b158015610f6057600080fd5b505afa158015610f74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f989190612cc3565b6001546040516370a0823160e01b81529192506000916001600160a01b03909116906370a0823190610fce903390600401612d9e565b60206040518083038186803b158015610fe657600080fd5b505afa158015610ffa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101e9190612cc3565b600b5490915060ff16801561104257503360009081526009602052604090205460ff165b80156110615750600854610100900460ff1661105e85836133c2565b11155b8061109b5750600b54610100900460ff16801561108d5750336000908152600a602052604090205460ff165b801561109b57506010548210155b806110bc5750600b5460ff161580156110bc5750600b54610100900460ff16155b6110d85760405162461bcd60e51b8152600401610a5f9061333d565b600b54610100900460ff16158061117d5750600b5460ff16801561110b57503360009081526009602052604090205460ff165b8061117d5750600b54610100900460ff16801561113b5750600854610100900460ff1661113885836133c2565b11155b80156111635750336000908152600a602052604090205460ff16801561116357506010548210155b801561117d575083600d5461117891906133c2565b600c54115b6111995760405162461bcd60e51b8152600401610a5f90612f9e565b600b54610100900460ff16158061121f5750600b5460ff1680156111cc57503360009081526009602052604090205460ff165b8061121f5750600b54610100900460ff1680156112055750336000908152600a602052604090205460ff16801561120557506010548210155b801561121f575083600d5461121a91906133c2565b600c54115b156112365783600d5461123291906133c2565b600d555b60006001600e5461124791906133f9565b60085490915060ff16851180159061126a575060065461126786836133c2565b11155b6112865760405162461bcd60e51b8152600401610a5f90612e9a565b60005b8581101561134357600154600e546040516340c10f1960e01b81526001600160a01b03909216916340c10f19916112c591339190600401612dd6565b602060405180830381600087803b1580156112df57600080fd5b505af11580156112f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113179190612c0b565b506001600e600082825461132b91906133c2565b9091555081905061133b81613453565b915050611289565b50600195945050505050565b600a6020526000908152604090205460ff1681565b60065481565b6001600160a01b03166000908152600a602052604090205460ff1690565b60075481565b611399600033611d2a565b6113b55760405162461bcd60e51b8152600401610a5f906131bd565b600f5460ff16151581151514156113de5760405162461bcd60e51b8152600401610a5f90613306565b600f805460ff1916911515919091179055565b6113fc600033611d2a565b6114185760405162461bcd60e51b8152600401610a5f90613137565b6008805460ff9283166101000261ff00199490931660ff199091161792909216179055565b6001600160a01b031660009081526009602052604090205460ff1690565b6005546000906001600160a01b0316156114875760405162461bcd60e51b8152600401610a5f9061301b565b60115460ff16156114aa5760405162461bcd60e51b8152600401610a5f90612f30565b600654826007546114bb91906133c2565b11156114d95760405162461bcd60e51b8152600401610a5f9061328f565b816007546114e791906133c2565b6007556002546040516370a0823160e01b81526000916001600160a01b0316906370a082319061151b903390600401612d9e565b60206040518083038186803b15801561153357600080fd5b505afa158015611547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156b9190612cc3565b6001546040516370a0823160e01b81529192506000916001600160a01b03909116906370a08231906115a1903390600401612d9e565b60206040518083038186803b1580156115b957600080fd5b505afa1580156115cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f19190612cc3565b600b5490915060ff16801561161557503360009081526009602052604090205460ff165b80156116345750600854610100900460ff1661163185836133c2565b11155b8061166e5750600b54610100900460ff1680156116605750336000908152600a602052604090205460ff165b801561166e57506010548210155b8061168f5750600b5460ff1615801561168f5750600b54610100900460ff16155b6116ab5760405162461bcd60e51b8152600401610a5f9061333d565b600b54610100900460ff161580156116d65750600854610100900460ff166116d385836133c2565b11155b806117505750600b5460ff1680156116fd57503360009081526009602052604090205460ff165b806117505750600b54610100900460ff1680156117365750336000908152600a602052604090205460ff16801561173657506010548210155b8015611750575083600d5461174b91906133c2565b600c54115b61176c5760405162461bcd60e51b8152600401610a5f90612f9e565b600b54610100900460ff1615806117f25750600b5460ff16801561179f57503360009081526009602052604090205460ff165b806117f25750600b54610100900460ff1680156117d85750336000908152600a602052604090205460ff1680156117d857506010548210155b80156117f2575083600d546117ed91906133c2565b600c54115b156118095783600d5461180591906133c2565b600d555b60015460408051632b0c491b60e11b815290516000926001600160a01b0316916356189236916004808301926020929190829003018186803b15801561184e57600080fd5b505afa158015611862573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118869190612cc3565b60085490915060ff1685118015906118a857506006546118a686836133c2565b105b6118c45760405162461bcd60e51b8152600401610a5f90612e9a565b6118eb3330876012546118d791906133da565b6002546001600160a01b031692919061276c565b60005b8581101561134357600154604051631ec019dd60e21b81526001600160a01b0390911690637b00677490611926903390600401612d9e565b602060405180830381600087803b15801561194057600080fd5b505af1158015611954573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119789190612c0b565b508061198381613453565b9150506118ee565b600b5460ff1681565b600f5460ff1681565b6119a8600033611d2a565b6119c45760405162461bcd60e51b8152600401610a5f906131bd565b60005b81811015610bc55760008383838181106119f157634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611a069190612b39565b90506001600160a01b038116611a2e5760405162461bcd60e51b8152600401610a5f90613066565b6001600160a01b03811660009081526009602052604090205460ff1615611a675760405162461bcd60e51b8152600401610a5f90612f67565b6001600160a01b0381166000908152600960205260408120805460ff191660011790556013805491611a9883613453565b9190505550508080611aa990613453565b9150506119c7565b600c5481565b600854610100900460ff1681565b6001546001600160a01b031681565b611ae1600061081e6125fc565b611afd5760405162461bcd60e51b8152600401610a5f90612e36565b600e55565b611b0d600033611d2a565b80611b3d5750611b3d7f9cb032b8cc7b4041809d26a3bfef7f826e63f69957d4724d2d7f9648e241650933611d2a565b611b595760405162461bcd60e51b8152600401610a5f906131ea565b600f80549115156101000261ff0019909216919091179055565b611b7e600033611d2a565b611b9a5760405162461bcd60e51b8152600401610a5f906131bd565b600c55565b611baa600033611d2a565b611bc65760405162461bcd60e51b8152600401610a5f906131bd565b60115460ff1615158115151415611bef5760405162461bcd60e51b8152600401610a5f90613306565b6011805460ff1916911515919091179055565b600f54610100900460ff1681565b60085460ff1681565b60035481565b611c2a600033611d2a565b611c465760405162461bcd60e51b8152600401610a5f906131bd565b6040516323b872dd60e01b81526001600160a01b038316906323b872dd90611c7690309033908690600401612db2565b600060405180830381600087803b158015611c9057600080fd5b505af1158015611ca4573d6000803e3d6000fd5b505050505050565b60045460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050611cde57600080fd5b50565b6004546001600160a01b031681565b600b54610100900460ff1681565b611d09600033611d2a565b611d255760405162461bcd60e51b8152600401610a5f906131bd565b600355565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b611d5e600033611d2a565b611d7a5760405162461bcd60e51b8152600401610a5f906131bd565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6005546000906001600160a01b031615611dc85760405162461bcd60e51b8152600401610a5f9061301b565b81600354611dd691906133da565b341015611df55760405162461bcd60e51b8152600401610a5f90613221565b600f5460ff1615611e185760405162461bcd60e51b8152600401610a5f90612f08565b60065482600754611e2991906133c2565b1115611e475760405162461bcd60e51b8152600401610a5f9061328f565b81600754611e5591906133c2565b6007556002546040516370a0823160e01b81526000916001600160a01b0316906370a0823190611e89903390600401612d9e565b60206040518083038186803b158015611ea157600080fd5b505afa158015611eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed99190612cc3565b6001546040516370a0823160e01b81529192506000916001600160a01b03909116906370a0823190611f0f903390600401612d9e565b60206040518083038186803b158015611f2757600080fd5b505afa158015611f3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f5f9190612cc3565b600b5490915060ff168015611f8357503360009081526009602052604090205460ff165b8015611fa25750600854610100900460ff16611f9f85836133c2565b11155b80611fdc5750600b54610100900460ff168015611fce5750336000908152600a602052604090205460ff165b8015611fdc57506010548210155b80611ffd5750600b5460ff16158015611ffd5750600b54610100900460ff16155b6120195760405162461bcd60e51b8152600401610a5f9061333d565b600b54610100900460ff1615806120be5750600b5460ff16801561204c57503360009081526009602052604090205460ff165b806120be5750600b54610100900460ff16801561207c5750600854610100900460ff1661207985836133c2565b11155b80156120a45750336000908152600a602052604090205460ff1680156120a457506010548210155b80156120be575083600d546120b991906133c2565b600c54115b6120da5760405162461bcd60e51b8152600401610a5f90612f9e565b600b54610100900460ff1615806121605750600b5460ff16801561210d57503360009081526009602052604090205460ff165b806121605750600b54610100900460ff1680156121465750336000908152600a602052604090205460ff16801561214657506010548210155b8015612160575083600d5461215b91906133c2565b600c54115b156121775783600d5461217391906133c2565b600d555b60015460408051632b0c491b60e11b815290516000926001600160a01b0316916356189236916004808301926020929190829003018186803b1580156121bc57600080fd5b505afa1580156121d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f49190612cc3565b60085490915060ff168511801590612217575060065461221486836133c2565b11155b6122335760405162461bcd60e51b8152600401610a5f90612e9a565b60005b8581101561134357600154604051631ec019dd60e21b81526001600160a01b0390911690637b0067749061226e903390600401612d9e565b602060405180830381600087803b15801561228857600080fd5b505af115801561229c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c09190612c0b565b50806122cb81613453565b915050612236565b600081565b6122e3600033611d2a565b6122ff5760405162461bcd60e51b8152600401610a5f906131bd565b600655565b61230f600033611d2a565b61232b5760405162461bcd60e51b8152600401610a5f906131bd565b601055565b6002546001600160a01b031681565b60145490565b612350600033611d2a565b61236c5760405162461bcd60e51b8152600401610a5f906131bd565b600b80549115156101000261ff0019909216919091179055565b6005546001600160a01b031681565b6123a0600033611d2a565b6123bc5760405162461bcd60e51b8152600401610a5f906131bd565b60005b81811015610bc55760008383838181106123e957634e487b7160e01b600052603260045260246000fd5b90506020020160208101906123fe9190612b39565b90506001600160a01b0381166124265760405162461bcd60e51b8152600401610a5f90613186565b6001600160a01b0381166000908152600a60205260408120805460ff1916905560148054916124548361343c565b919050555050808061246590613453565b9150506123bf565b600d5481565b6001546040516370a0823160e01b81526000916001600160a01b0316906370a08231906124a4908590600401612d9e565b60206040518083038186803b1580156124bc57600080fd5b505afa1580156124d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2e9190612cc3565b7f9cb032b8cc7b4041809d26a3bfef7f826e63f69957d4724d2d7f9648e241650981565b600e5481565b61252782610cd8565b61253381610d026125fc565b610bc583836126e9565b61254a600061081e6125fc565b6125665760405162461bcd60e51b8152600401610a5f90612e36565b600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055565b60096020526000908152604090205460ff1681565b6125b4600033611d2a565b6125d05760405162461bcd60e51b8152600401610a5f906131bd565b600b805460ff1916911515919091179055565b6001600160e01b031981166301ffc9a760e01b14919050565b3390565b61260a8282611d2a565b610e2b57612622816001600160a01b031660146127ca565b61262d8360206127ca565b60405160200161263e929190612d29565b60408051601f198184030181529082905262461bcd60e51b8252610a5f91600401612e03565b61266e8282611d2a565b610e2b576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556126a56125fc565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6126f38282611d2a565b15610e2b576000828152602081815260408083206001600160a01b03851684529091529020805460ff191690556127286125fc565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6127c4846323b872dd60e01b85858560405160240161278d93929190612db2565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612983565b50505050565b606060006127d98360026133da565b6127e49060026133c2565b67ffffffffffffffff81111561280a57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612834576020820181803683370190505b509050600360fc1b8160008151811061285d57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061289a57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060006128be8460026133da565b6128c99060016133c2565b90505b600181111561295d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061290b57634e487b7160e01b600052603260045260246000fd5b1a60f81b82828151811061292f57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c936129568161343c565b90506128cc565b50831561297c5760405162461bcd60e51b8152600401610a5f90612e65565b9392505050565b60006129d8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612a129092919063ffffffff16565b805190915015610bc557808060200190518101906129f69190612c0b565b610bc55760405162461bcd60e51b8152600401610a5f906132bc565b6060612a218484600085612a29565b949350505050565b606082471015612a4b5760405162461bcd60e51b8152600401610a5f90612fd5565b612a5485612ae9565b612a705760405162461bcd60e51b8152600401610a5f90613258565b600080866001600160a01b03168587604051612a8c9190612d0d565b60006040518083038185875af1925050503d8060008114612ac9576040519150601f19603f3d011682016040523d82523d6000602084013e612ace565b606091505b5091509150612ade828286612aef565b979650505050505050565b3b151590565b60608315612afe57508161297c565b825115612b0e5782518084602001fd5b8160405162461bcd60e51b8152600401610a5f9190612e03565b803560ff81168114610a3157600080fd5b600060208284031215612b4a578081fd5b813561297c81613484565b60008060408385031215612b67578081fd5b8235612b7281613484565b946020939093013593505050565b60008060208385031215612b92578182fd5b823567ffffffffffffffff80821115612ba9578384fd5b818501915085601f830112612bbc578384fd5b813581811115612bca578485fd5b8660208083028501011115612bdd578485fd5b60209290920196919550909350505050565b600060208284031215612c00578081fd5b813561297c81613499565b600060208284031215612c1c578081fd5b815161297c81613499565b600060208284031215612c38578081fd5b5035919050565b60008060408385031215612c51578182fd5b823591506020830135612c6381613484565b809150509250929050565b600060208284031215612c7f578081fd5b81356001600160e01b03198116811461297c578182fd5b60008060408385031215612ca8578182fd5b8235612cb381613484565b91506020830135612c6381613484565b600060208284031215612cd4578081fd5b5051919050565b60008060408385031215612ced578182fd5b612cf683612b28565b9150612d0460208401612b28565b90509250929050565b60008251612d1f818460208701613410565b9190910192915050565b60007f416363657373436f6e74726f6c3a206163636f756e742000000000000000000082528351612d61816017850160208801613410565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612d92816028840160208801613410565b01602801949350505050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b6000602082528251806020840152612e22816040850160208701613410565b601f01601f19169190910160400192915050565b60208082526015908201527421b0b63632b91034b9903737ba10309030b236b4b760591b604082015260600190565b6020808252818101527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604082015260600190565b60208082526048908201527f456974686572204d6178696d756d20636170206f662035353535206d696e747360408201527f2072656163686564204f52204d696e6974696e67206361706163697479206578606082015267063656564732031360c41b608082015260a00190565b6020808252600e908201526d135a5b9d1a5b99c81c185d5cd95960921b604082015260600190565b60208082526019908201527f4d696e74696e67207573696e6720454d4f4e2070617573656400000000000000604082015260600190565b6020808252601c908201527f43616e6e6f7420616464206475706c6963617465206164647265737300000000604082015260600190565b60208082526017908201527f57484954454c4953542032206361702072656163686564000000000000000000604082015260600190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b6020808252602b908201527f436f6e747261637420686173206265656e20757067726164656420746f20612060408201526a6e6577206164647265737360a81b606082015260800190565b60208082526017908201527f43616e6e6f7420616464207a65726f2061646472657373000000000000000000604082015260600190565b6020808252602f908201527f496e73756666696369656e7420454d4f4e2062616c616e636520746f2061646460408201526e103a37903bb434ba32a634b9ba101960891b606082015260800190565b6020808252602b908201527f43616e6e6f7420616464206475706c6963617465206164647265737320746f2060408201526a3bb434ba32b634b9ba101960a91b606082015260800190565b6020808252602f908201527f57726f6e67206c696d697420706172616d65746572206f722043616c6c65722060408201526e34b9903737ba1030b71030b236b4b760891b606082015260800190565b6020808252601a908201527f43616e6e6f742072656d6f7665207a65726f2061646472657373000000000000604082015260600190565b60208082526013908201527221b0b63632b91034b9903737ba1030b236b4b760691b604082015260600190565b6020808252601e908201527f43616c6c6572206973206e6f7420746f67676c6572206f722061646d696e0000604082015260600190565b6020808252601c908201527f496e73756666696369656e7420616d6f756e742070726f766964656400000000604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b602080825260139082015272135a5b9d1a5b99c818d85c081c995858da1959606a1b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601e908201527f416c726561647920696e20646573697265642070617573652073746174650000604082015260600190565b6020808252600e908201526d13d393164815d2125511531254d560921b604082015260600190565b6020808252602f908201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560408201526e103937b632b9903337b91039b2b63360891b606082015260800190565b60ff91909116815260200190565b600082198211156133d5576133d561346e565b500190565b60008160001904831182151516156133f4576133f461346e565b500290565b60008282101561340b5761340b61346e565b500390565b60005b8381101561342b578181015183820152602001613413565b838111156127c45750506000910152565b60008161344b5761344b61346e565b506000190190565b60006000198214156134675761346761346e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114611cde57600080fd5b8015158114611cde57600080fdfea2646970667358221220ef42739b4e51742ad49aed285b8bb7bb28c746949ee8b271386a6e74b5d4fc7764736f6c6343000800003300000000000000000000000085368196369274c646ce112449aaa6fef05d3171000000000000000000000000d6a5ab46ead26f49b03bbb1f9eb1ad5c1767974a
Deployed Bytecode
0x6080604052600436106103905760003560e01c806379ad73e2116101dc578063a675844811610102578063c4bdf966116100a0578063d547741f1161006f578063d547741f14610989578063d8952a49146109a9578063fcdf3ae2146109c9578063fe880735146109e957610397565b8063c4bdf9661461092a578063cc20289a1461093f578063cd8e0ab21461095f578063d082e3811461097457610397565b8063aef6ce2a116100dc578063aef6ce2a146108c0578063bc78d1e3146108d5578063c1244e8d146108f5578063c1c1e70f1461090a57610397565b8063a67584481461086b578063a772a8721461088b578063aeae2f4f146108ab57610397565b8063853828b61161017a57806391d148541161014957806391d148541461080357806392e3233314610823578063a0712d6814610843578063a217fddf1461085657610397565b8063853828b6146107a457806385d178f4146107b957806386d576e5146107ce5780638d6cc56d146107e357610397565b80637f313af4116101b65780637f313af4146107455780637f59230f1461075a5780637ff9b5961461076f5780638239556e1461078457610397565b806379ad73e2146106e55780637b14ceb3146107055780637b577a8f1461072557610397565b80633ad504c0116102c157806367ac20d01161025f5780636e3492101161022e5780636e3492101461066c578063731c24b5146106815780637451a29c146106a3578063753e39f7146106c557610397565b806367ac20d01461060257806367e8a0b7146106225780636b5ecffc146106375780636c5c482d1461064c57610397565b8063576036831161029b578063576036831461058d57806357d159c6146105a257806362688166146105c25780636781bff3146105e257610397565b80633ad504c0146105385780633f23a566146105585780634ff7eb261461056d57610397565b806322aceb901161032e578063359d88bb11610308578063359d88bb146104c557806336568abe146104e557806336e39b4a146105055780633aa180881461052557610397565b806322aceb9014610470578063248a9ca3146104855780632f2ff15d146104a557610397565b80630c99106a1161036a5780630c99106a1461041157806311074b6f1461042657806319a33ea21461043b57806320cd08a91461045b57610397565b806301ffc9a7146103995780630900f010146103cf5780630a3fe1f8146103ef57610397565b3661039757005b005b3480156103a557600080fd5b506103b96103b4366004612c6e565b610a09565b6040516103c69190612def565b60405180910390f35b3480156103db57600080fd5b506103976103ea366004612b39565b610a36565b3480156103fb57600080fd5b50610404610a8a565b6040516103c69190612dfa565b34801561041d57600080fd5b50610404610a90565b34801561043257600080fd5b50610404610a96565b34801561044757600080fd5b50610397610456366004612b39565b610a9c565b34801561046757600080fd5b506103b9610bca565b34801561047c57600080fd5b50610397610bd3565b34801561049157600080fd5b506104046104a0366004612c27565b610cd8565b3480156104b157600080fd5b506103976104c0366004612c3f565b610ced565b3480156104d157600080fd5b506103976104e0366004612b80565b610d11565b3480156104f157600080fd5b50610397610500366004612c3f565b610de9565b34801561051157600080fd5b50610397610520366004612c27565b610e2f565b6103b9610533366004612c27565b610e5b565b34801561054457600080fd5b506103b9610553366004612b39565b61134f565b34801561056457600080fd5b50610404611364565b34801561057957600080fd5b506103b9610588366004612b39565b61136a565b34801561059957600080fd5b50610404611388565b3480156105ae57600080fd5b506103976105bd366004612bef565b61138e565b3480156105ce57600080fd5b506103976105dd366004612cdb565b6113f1565b3480156105ee57600080fd5b506103b96105fd366004612b39565b61143d565b34801561060e57600080fd5b506103b961061d366004612c27565b61145b565b34801561062e57600080fd5b506103b961198b565b34801561064357600080fd5b506103b9611994565b34801561065857600080fd5b50610397610667366004612b80565b61199d565b34801561067857600080fd5b50610404611ab1565b34801561068d57600080fd5b50610696611ab7565b6040516103c691906133b4565b3480156106af57600080fd5b506106b8611ac5565b6040516103c69190612d9e565b3480156106d157600080fd5b506103976106e0366004612c27565b611ad4565b3480156106f157600080fd5b50610397610700366004612bef565b611b02565b34801561071157600080fd5b50610397610720366004612c27565b611b73565b34801561073157600080fd5b50610397610740366004612bef565b611b9f565b34801561075157600080fd5b506103b9611c02565b34801561076657600080fd5b50610696611c10565b34801561077b57600080fd5b50610404611c19565b34801561079057600080fd5b5061039761079f366004612b55565b611c1f565b3480156107b057600080fd5b50610397611cac565b3480156107c557600080fd5b506106b8611ce1565b3480156107da57600080fd5b506103b9611cf0565b3480156107ef57600080fd5b506103976107fe366004612c27565b611cfe565b34801561080f57600080fd5b506103b961081e366004612c3f565b611d2a565b34801561082f57600080fd5b5061039761083e366004612b39565b611d53565b6103b9610851366004612c27565b611d9c565b34801561086257600080fd5b506104046122d3565b34801561087757600080fd5b50610397610886366004612c27565b6122d8565b34801561089757600080fd5b506103976108a6366004612c27565b612304565b3480156108b757600080fd5b506106b8612330565b3480156108cc57600080fd5b5061040461233f565b3480156108e157600080fd5b506103976108f0366004612bef565b612345565b34801561090157600080fd5b506106b8612386565b34801561091657600080fd5b50610397610925366004612b80565b612395565b34801561093657600080fd5b5061040461246d565b34801561094b57600080fd5b5061040461095a366004612b39565b612473565b34801561096b57600080fd5b506104046124f4565b34801561098057600080fd5b50610404612518565b34801561099557600080fd5b506103976109a4366004612c3f565b61251e565b3480156109b557600080fd5b506103976109c4366004612c96565b61253d565b3480156109d557600080fd5b506103b96109e4366004612b39565b612594565b3480156109f557600080fd5b50610397610a04366004612bef565b6125a9565b60006001600160e01b03198216637965db0b60e01b1480610a2e5750610a2e826125e3565b90505b919050565b610a43600061081e6125fc565b610a685760405162461bcd60e51b8152600401610a5f90612e36565b60405180910390fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b60105481565b60135490565b60125481565b610aa7600033611d2a565b610ac35760405162461bcd60e51b8152600401610a5f906131bd565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190610af2903090600401612d9e565b60206040518083038186803b158015610b0a57600080fd5b505afa158015610b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b429190612cc3565b60405163a9059cbb60e01b81529091506001600160a01b0383169063a9059cbb90610b739033908590600401612dd6565b602060405180830381600087803b158015610b8d57600080fd5b505af1158015610ba1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc59190612c0b565b505050565b60115460ff1681565b336000908152600a602052604090205460ff1615610c035760405162461bcd60e51b8152600401610a5f906130ec565b6002546040516370a0823160e01b81526000916001600160a01b0316906370a0823190610c34903390600401612d9e565b60206040518083038186803b158015610c4c57600080fd5b505afa158015610c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c849190612cc3565b9050601054811015610ca85760405162461bcd60e51b8152600401610a5f9061309d565b336000908152600a60205260408120805460ff191660011790556014805491610cd083613453565b919050555050565b60009081526020819052604090206001015490565b610cf682610cd8565b610d0781610d026125fc565b612600565b610bc58383612664565b610d1c600033611d2a565b610d385760405162461bcd60e51b8152600401610a5f906131bd565b60005b81811015610bc5576000838383818110610d6557634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610d7a9190612b39565b90506001600160a01b038116610da25760405162461bcd60e51b8152600401610a5f90613186565b6001600160a01b0381166000908152600960205260408120805460ff191690556013805491610dd08361343c565b9190505550508080610de190613453565b915050610d3b565b610df16125fc565b6001600160a01b0316816001600160a01b031614610e215760405162461bcd60e51b8152600401610a5f90613365565b610e2b82826126e9565b5050565b610e3a600033611d2a565b610e565760405162461bcd60e51b8152600401610a5f906131bd565b601255565b6005546000906001600160a01b031615610e875760405162461bcd60e51b8152600401610a5f9061301b565b81600354610e9591906133da565b341015610eb45760405162461bcd60e51b8152600401610a5f90613221565b600f5460ff1615610ed75760405162461bcd60e51b8152600401610a5f90612f08565b60065482600754610ee891906133c2565b1115610f065760405162461bcd60e51b8152600401610a5f9061328f565b81600754610f1491906133c2565b6007556002546040516370a0823160e01b81526000916001600160a01b0316906370a0823190610f48903390600401612d9e565b60206040518083038186803b158015610f6057600080fd5b505afa158015610f74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f989190612cc3565b6001546040516370a0823160e01b81529192506000916001600160a01b03909116906370a0823190610fce903390600401612d9e565b60206040518083038186803b158015610fe657600080fd5b505afa158015610ffa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101e9190612cc3565b600b5490915060ff16801561104257503360009081526009602052604090205460ff165b80156110615750600854610100900460ff1661105e85836133c2565b11155b8061109b5750600b54610100900460ff16801561108d5750336000908152600a602052604090205460ff165b801561109b57506010548210155b806110bc5750600b5460ff161580156110bc5750600b54610100900460ff16155b6110d85760405162461bcd60e51b8152600401610a5f9061333d565b600b54610100900460ff16158061117d5750600b5460ff16801561110b57503360009081526009602052604090205460ff165b8061117d5750600b54610100900460ff16801561113b5750600854610100900460ff1661113885836133c2565b11155b80156111635750336000908152600a602052604090205460ff16801561116357506010548210155b801561117d575083600d5461117891906133c2565b600c54115b6111995760405162461bcd60e51b8152600401610a5f90612f9e565b600b54610100900460ff16158061121f5750600b5460ff1680156111cc57503360009081526009602052604090205460ff165b8061121f5750600b54610100900460ff1680156112055750336000908152600a602052604090205460ff16801561120557506010548210155b801561121f575083600d5461121a91906133c2565b600c54115b156112365783600d5461123291906133c2565b600d555b60006001600e5461124791906133f9565b60085490915060ff16851180159061126a575060065461126786836133c2565b11155b6112865760405162461bcd60e51b8152600401610a5f90612e9a565b60005b8581101561134357600154600e546040516340c10f1960e01b81526001600160a01b03909216916340c10f19916112c591339190600401612dd6565b602060405180830381600087803b1580156112df57600080fd5b505af11580156112f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113179190612c0b565b506001600e600082825461132b91906133c2565b9091555081905061133b81613453565b915050611289565b50600195945050505050565b600a6020526000908152604090205460ff1681565b60065481565b6001600160a01b03166000908152600a602052604090205460ff1690565b60075481565b611399600033611d2a565b6113b55760405162461bcd60e51b8152600401610a5f906131bd565b600f5460ff16151581151514156113de5760405162461bcd60e51b8152600401610a5f90613306565b600f805460ff1916911515919091179055565b6113fc600033611d2a565b6114185760405162461bcd60e51b8152600401610a5f90613137565b6008805460ff9283166101000261ff00199490931660ff199091161792909216179055565b6001600160a01b031660009081526009602052604090205460ff1690565b6005546000906001600160a01b0316156114875760405162461bcd60e51b8152600401610a5f9061301b565b60115460ff16156114aa5760405162461bcd60e51b8152600401610a5f90612f30565b600654826007546114bb91906133c2565b11156114d95760405162461bcd60e51b8152600401610a5f9061328f565b816007546114e791906133c2565b6007556002546040516370a0823160e01b81526000916001600160a01b0316906370a082319061151b903390600401612d9e565b60206040518083038186803b15801561153357600080fd5b505afa158015611547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156b9190612cc3565b6001546040516370a0823160e01b81529192506000916001600160a01b03909116906370a08231906115a1903390600401612d9e565b60206040518083038186803b1580156115b957600080fd5b505afa1580156115cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f19190612cc3565b600b5490915060ff16801561161557503360009081526009602052604090205460ff165b80156116345750600854610100900460ff1661163185836133c2565b11155b8061166e5750600b54610100900460ff1680156116605750336000908152600a602052604090205460ff165b801561166e57506010548210155b8061168f5750600b5460ff1615801561168f5750600b54610100900460ff16155b6116ab5760405162461bcd60e51b8152600401610a5f9061333d565b600b54610100900460ff161580156116d65750600854610100900460ff166116d385836133c2565b11155b806117505750600b5460ff1680156116fd57503360009081526009602052604090205460ff165b806117505750600b54610100900460ff1680156117365750336000908152600a602052604090205460ff16801561173657506010548210155b8015611750575083600d5461174b91906133c2565b600c54115b61176c5760405162461bcd60e51b8152600401610a5f90612f9e565b600b54610100900460ff1615806117f25750600b5460ff16801561179f57503360009081526009602052604090205460ff165b806117f25750600b54610100900460ff1680156117d85750336000908152600a602052604090205460ff1680156117d857506010548210155b80156117f2575083600d546117ed91906133c2565b600c54115b156118095783600d5461180591906133c2565b600d555b60015460408051632b0c491b60e11b815290516000926001600160a01b0316916356189236916004808301926020929190829003018186803b15801561184e57600080fd5b505afa158015611862573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118869190612cc3565b60085490915060ff1685118015906118a857506006546118a686836133c2565b105b6118c45760405162461bcd60e51b8152600401610a5f90612e9a565b6118eb3330876012546118d791906133da565b6002546001600160a01b031692919061276c565b60005b8581101561134357600154604051631ec019dd60e21b81526001600160a01b0390911690637b00677490611926903390600401612d9e565b602060405180830381600087803b15801561194057600080fd5b505af1158015611954573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119789190612c0b565b508061198381613453565b9150506118ee565b600b5460ff1681565b600f5460ff1681565b6119a8600033611d2a565b6119c45760405162461bcd60e51b8152600401610a5f906131bd565b60005b81811015610bc55760008383838181106119f157634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611a069190612b39565b90506001600160a01b038116611a2e5760405162461bcd60e51b8152600401610a5f90613066565b6001600160a01b03811660009081526009602052604090205460ff1615611a675760405162461bcd60e51b8152600401610a5f90612f67565b6001600160a01b0381166000908152600960205260408120805460ff191660011790556013805491611a9883613453565b9190505550508080611aa990613453565b9150506119c7565b600c5481565b600854610100900460ff1681565b6001546001600160a01b031681565b611ae1600061081e6125fc565b611afd5760405162461bcd60e51b8152600401610a5f90612e36565b600e55565b611b0d600033611d2a565b80611b3d5750611b3d7f9cb032b8cc7b4041809d26a3bfef7f826e63f69957d4724d2d7f9648e241650933611d2a565b611b595760405162461bcd60e51b8152600401610a5f906131ea565b600f80549115156101000261ff0019909216919091179055565b611b7e600033611d2a565b611b9a5760405162461bcd60e51b8152600401610a5f906131bd565b600c55565b611baa600033611d2a565b611bc65760405162461bcd60e51b8152600401610a5f906131bd565b60115460ff1615158115151415611bef5760405162461bcd60e51b8152600401610a5f90613306565b6011805460ff1916911515919091179055565b600f54610100900460ff1681565b60085460ff1681565b60035481565b611c2a600033611d2a565b611c465760405162461bcd60e51b8152600401610a5f906131bd565b6040516323b872dd60e01b81526001600160a01b038316906323b872dd90611c7690309033908690600401612db2565b600060405180830381600087803b158015611c9057600080fd5b505af1158015611ca4573d6000803e3d6000fd5b505050505050565b60045460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050611cde57600080fd5b50565b6004546001600160a01b031681565b600b54610100900460ff1681565b611d09600033611d2a565b611d255760405162461bcd60e51b8152600401610a5f906131bd565b600355565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b611d5e600033611d2a565b611d7a5760405162461bcd60e51b8152600401610a5f906131bd565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6005546000906001600160a01b031615611dc85760405162461bcd60e51b8152600401610a5f9061301b565b81600354611dd691906133da565b341015611df55760405162461bcd60e51b8152600401610a5f90613221565b600f5460ff1615611e185760405162461bcd60e51b8152600401610a5f90612f08565b60065482600754611e2991906133c2565b1115611e475760405162461bcd60e51b8152600401610a5f9061328f565b81600754611e5591906133c2565b6007556002546040516370a0823160e01b81526000916001600160a01b0316906370a0823190611e89903390600401612d9e565b60206040518083038186803b158015611ea157600080fd5b505afa158015611eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed99190612cc3565b6001546040516370a0823160e01b81529192506000916001600160a01b03909116906370a0823190611f0f903390600401612d9e565b60206040518083038186803b158015611f2757600080fd5b505afa158015611f3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f5f9190612cc3565b600b5490915060ff168015611f8357503360009081526009602052604090205460ff165b8015611fa25750600854610100900460ff16611f9f85836133c2565b11155b80611fdc5750600b54610100900460ff168015611fce5750336000908152600a602052604090205460ff165b8015611fdc57506010548210155b80611ffd5750600b5460ff16158015611ffd5750600b54610100900460ff16155b6120195760405162461bcd60e51b8152600401610a5f9061333d565b600b54610100900460ff1615806120be5750600b5460ff16801561204c57503360009081526009602052604090205460ff165b806120be5750600b54610100900460ff16801561207c5750600854610100900460ff1661207985836133c2565b11155b80156120a45750336000908152600a602052604090205460ff1680156120a457506010548210155b80156120be575083600d546120b991906133c2565b600c54115b6120da5760405162461bcd60e51b8152600401610a5f90612f9e565b600b54610100900460ff1615806121605750600b5460ff16801561210d57503360009081526009602052604090205460ff165b806121605750600b54610100900460ff1680156121465750336000908152600a602052604090205460ff16801561214657506010548210155b8015612160575083600d5461215b91906133c2565b600c54115b156121775783600d5461217391906133c2565b600d555b60015460408051632b0c491b60e11b815290516000926001600160a01b0316916356189236916004808301926020929190829003018186803b1580156121bc57600080fd5b505afa1580156121d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f49190612cc3565b60085490915060ff168511801590612217575060065461221486836133c2565b11155b6122335760405162461bcd60e51b8152600401610a5f90612e9a565b60005b8581101561134357600154604051631ec019dd60e21b81526001600160a01b0390911690637b0067749061226e903390600401612d9e565b602060405180830381600087803b15801561228857600080fd5b505af115801561229c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c09190612c0b565b50806122cb81613453565b915050612236565b600081565b6122e3600033611d2a565b6122ff5760405162461bcd60e51b8152600401610a5f906131bd565b600655565b61230f600033611d2a565b61232b5760405162461bcd60e51b8152600401610a5f906131bd565b601055565b6002546001600160a01b031681565b60145490565b612350600033611d2a565b61236c5760405162461bcd60e51b8152600401610a5f906131bd565b600b80549115156101000261ff0019909216919091179055565b6005546001600160a01b031681565b6123a0600033611d2a565b6123bc5760405162461bcd60e51b8152600401610a5f906131bd565b60005b81811015610bc55760008383838181106123e957634e487b7160e01b600052603260045260246000fd5b90506020020160208101906123fe9190612b39565b90506001600160a01b0381166124265760405162461bcd60e51b8152600401610a5f90613186565b6001600160a01b0381166000908152600a60205260408120805460ff1916905560148054916124548361343c565b919050555050808061246590613453565b9150506123bf565b600d5481565b6001546040516370a0823160e01b81526000916001600160a01b0316906370a08231906124a4908590600401612d9e565b60206040518083038186803b1580156124bc57600080fd5b505afa1580156124d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2e9190612cc3565b7f9cb032b8cc7b4041809d26a3bfef7f826e63f69957d4724d2d7f9648e241650981565b600e5481565b61252782610cd8565b61253381610d026125fc565b610bc583836126e9565b61254a600061081e6125fc565b6125665760405162461bcd60e51b8152600401610a5f90612e36565b600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055565b60096020526000908152604090205460ff1681565b6125b4600033611d2a565b6125d05760405162461bcd60e51b8152600401610a5f906131bd565b600b805460ff1916911515919091179055565b6001600160e01b031981166301ffc9a760e01b14919050565b3390565b61260a8282611d2a565b610e2b57612622816001600160a01b031660146127ca565b61262d8360206127ca565b60405160200161263e929190612d29565b60408051601f198184030181529082905262461bcd60e51b8252610a5f91600401612e03565b61266e8282611d2a565b610e2b576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556126a56125fc565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6126f38282611d2a565b15610e2b576000828152602081815260408083206001600160a01b03851684529091529020805460ff191690556127286125fc565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6127c4846323b872dd60e01b85858560405160240161278d93929190612db2565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612983565b50505050565b606060006127d98360026133da565b6127e49060026133c2565b67ffffffffffffffff81111561280a57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612834576020820181803683370190505b509050600360fc1b8160008151811061285d57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061289a57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060006128be8460026133da565b6128c99060016133c2565b90505b600181111561295d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061290b57634e487b7160e01b600052603260045260246000fd5b1a60f81b82828151811061292f57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c936129568161343c565b90506128cc565b50831561297c5760405162461bcd60e51b8152600401610a5f90612e65565b9392505050565b60006129d8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612a129092919063ffffffff16565b805190915015610bc557808060200190518101906129f69190612c0b565b610bc55760405162461bcd60e51b8152600401610a5f906132bc565b6060612a218484600085612a29565b949350505050565b606082471015612a4b5760405162461bcd60e51b8152600401610a5f90612fd5565b612a5485612ae9565b612a705760405162461bcd60e51b8152600401610a5f90613258565b600080866001600160a01b03168587604051612a8c9190612d0d565b60006040518083038185875af1925050503d8060008114612ac9576040519150601f19603f3d011682016040523d82523d6000602084013e612ace565b606091505b5091509150612ade828286612aef565b979650505050505050565b3b151590565b60608315612afe57508161297c565b825115612b0e5782518084602001fd5b8160405162461bcd60e51b8152600401610a5f9190612e03565b803560ff81168114610a3157600080fd5b600060208284031215612b4a578081fd5b813561297c81613484565b60008060408385031215612b67578081fd5b8235612b7281613484565b946020939093013593505050565b60008060208385031215612b92578182fd5b823567ffffffffffffffff80821115612ba9578384fd5b818501915085601f830112612bbc578384fd5b813581811115612bca578485fd5b8660208083028501011115612bdd578485fd5b60209290920196919550909350505050565b600060208284031215612c00578081fd5b813561297c81613499565b600060208284031215612c1c578081fd5b815161297c81613499565b600060208284031215612c38578081fd5b5035919050565b60008060408385031215612c51578182fd5b823591506020830135612c6381613484565b809150509250929050565b600060208284031215612c7f578081fd5b81356001600160e01b03198116811461297c578182fd5b60008060408385031215612ca8578182fd5b8235612cb381613484565b91506020830135612c6381613484565b600060208284031215612cd4578081fd5b5051919050565b60008060408385031215612ced578182fd5b612cf683612b28565b9150612d0460208401612b28565b90509250929050565b60008251612d1f818460208701613410565b9190910192915050565b60007f416363657373436f6e74726f6c3a206163636f756e742000000000000000000082528351612d61816017850160208801613410565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612d92816028840160208801613410565b01602801949350505050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b6000602082528251806020840152612e22816040850160208701613410565b601f01601f19169190910160400192915050565b60208082526015908201527421b0b63632b91034b9903737ba10309030b236b4b760591b604082015260600190565b6020808252818101527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604082015260600190565b60208082526048908201527f456974686572204d6178696d756d20636170206f662035353535206d696e747360408201527f2072656163686564204f52204d696e6974696e67206361706163697479206578606082015267063656564732031360c41b608082015260a00190565b6020808252600e908201526d135a5b9d1a5b99c81c185d5cd95960921b604082015260600190565b60208082526019908201527f4d696e74696e67207573696e6720454d4f4e2070617573656400000000000000604082015260600190565b6020808252601c908201527f43616e6e6f7420616464206475706c6963617465206164647265737300000000604082015260600190565b60208082526017908201527f57484954454c4953542032206361702072656163686564000000000000000000604082015260600190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b6020808252602b908201527f436f6e747261637420686173206265656e20757067726164656420746f20612060408201526a6e6577206164647265737360a81b606082015260800190565b60208082526017908201527f43616e6e6f7420616464207a65726f2061646472657373000000000000000000604082015260600190565b6020808252602f908201527f496e73756666696369656e7420454d4f4e2062616c616e636520746f2061646460408201526e103a37903bb434ba32a634b9ba101960891b606082015260800190565b6020808252602b908201527f43616e6e6f7420616464206475706c6963617465206164647265737320746f2060408201526a3bb434ba32b634b9ba101960a91b606082015260800190565b6020808252602f908201527f57726f6e67206c696d697420706172616d65746572206f722043616c6c65722060408201526e34b9903737ba1030b71030b236b4b760891b606082015260800190565b6020808252601a908201527f43616e6e6f742072656d6f7665207a65726f2061646472657373000000000000604082015260600190565b60208082526013908201527221b0b63632b91034b9903737ba1030b236b4b760691b604082015260600190565b6020808252601e908201527f43616c6c6572206973206e6f7420746f67676c6572206f722061646d696e0000604082015260600190565b6020808252601c908201527f496e73756666696369656e7420616d6f756e742070726f766964656400000000604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b602080825260139082015272135a5b9d1a5b99c818d85c081c995858da1959606a1b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601e908201527f416c726561647920696e20646573697265642070617573652073746174650000604082015260600190565b6020808252600e908201526d13d393164815d2125511531254d560921b604082015260600190565b6020808252602f908201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560408201526e103937b632b9903337b91039b2b63360891b606082015260800190565b60ff91909116815260200190565b600082198211156133d5576133d561346e565b500190565b60008160001904831182151516156133f4576133f461346e565b500290565b60008282101561340b5761340b61346e565b500390565b60005b8381101561342b578181015183820152602001613413565b838111156127c45750506000910152565b60008161344b5761344b61346e565b506000190190565b60006000198214156134675761346761346e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114611cde57600080fd5b8015158114611cde57600080fdfea2646970667358221220ef42739b4e51742ad49aed285b8bb7bb28c746949ee8b271386a6e74b5d4fc7764736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000085368196369274c646ce112449aaa6fef05d3171000000000000000000000000d6a5ab46ead26f49b03bbb1f9eb1ad5c1767974a
-----Decoded View---------------
Arg [0] : _eavaToken (address): 0x85368196369274c646cE112449aaA6fef05D3171
Arg [1] : _emonToken (address): 0xd6A5aB46ead26f49b03bBB1F9EB1Ad5c1767974a
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000085368196369274c646ce112449aaa6fef05d3171
Arg [1] : 000000000000000000000000d6a5ab46ead26f49b03bbb1f9eb1ad5c1767974a
Deployed Bytecode Sourcemap
34251:16502:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8768:280;;;;;;;;;;-1:-1:-1;8768:280:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36036:234;;;;;;;;;;-1:-1:-1;36036:234:0;;;;;:::i;:::-;;:::i;36390:42::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;48802:104::-;;;;;;;;;;;;;:::i;42026:54::-;;;;;;;;;;;;;:::i;46988:263::-;;;;;;;;;;-1:-1:-1;46988:263:0;;;;;:::i;:::-;;:::i;41977:42::-;;;;;;;;;;;;;:::i;48972:522::-;;;;;;;;;;;;;:::i;10296:123::-;;;;;;;;;;-1:-1:-1;10296:123:0;;;;;:::i;:::-;;:::i;10681:188::-;;;;;;;;;;-1:-1:-1;10681:188:0;;;;;:::i;:::-;;:::i;48052:416::-;;;;;;;;;;-1:-1:-1;48052:416:0;;;;;:::i;:::-;;:::i;11811:287::-;;;;;;;;;;-1:-1:-1;11811:287:0;;;;;:::i;:::-;;:::i;46800:180::-;;;;;;;;;;-1:-1:-1;46800:180:0;;;;;:::i;:::-;;:::i;36598:2682::-;;;;;;:::i;:::-;;:::i;34905:42::-;;;;;;;;;;-1:-1:-1;34905:42:0;;;;;:::i;:::-;;:::i;34690:31::-;;;;;;;;;;;;;:::i;50135:109::-;;;;;;;;;;-1:-1:-1;50135:109:0;;;;;:::i;:::-;;:::i;34728:31::-;;;;;;;;;;;;;:::i;45508:245::-;;;;;;;;;;-1:-1:-1;45508:245:0;;;;;:::i;:::-;;:::i;42117:385::-;;;;;;;;;;-1:-1:-1;42117:385:0;;;;;:::i;:::-;;:::i;48685:109::-;;;;;;;;;;-1:-1:-1;48685:109:0;;;;;:::i;:::-;;:::i;42510:2547::-;;;;;;;;;;-1:-1:-1;42510:2547:0;;;;;:::i;:::-;;:::i;34956:36::-;;;;;;;;;;;;;:::i;36291:33::-;;;;;;;;;;;;;:::i;47563:481::-;;;;;;;;;;-1:-1:-1;47563:481:0;;;;;:::i;:::-;;:::i;35043:34::-;;;;;;;;;;;;;:::i;34805:42::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;34345:33::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;35495:227::-;;;;;;;;;;-1:-1:-1;35495:227:0;;;;;:::i;:::-;;:::i;46073:328::-;;;;;;;;;;-1:-1:-1;46073:328:0;;;;;:::i;:::-;;:::i;50364:198::-;;;;;;;;;;-1:-1:-1;50364:198:0;;;;;:::i;:::-;;:::i;45761:304::-;;;;;;;;;;-1:-1:-1;45761:304:0;;;;;:::i;:::-;;:::i;36331:52::-;;;;;;;;;;;;;:::i;34766:32::-;;;;;;;;;;;;;:::i;34417:47::-;;;;;;;;;;;;;:::i;47259:238::-;;;;;;;;;;-1:-1:-1;47259:238:0;;;;;:::i;:::-;;:::i;45164:141::-;;;;;;;;;;;;;:::i;34502:29::-;;;;;;;;;;;;;:::i;34999:37::-;;;;;;;;;;;;;:::i;46620:172::-;;;;;;;;;;-1:-1:-1;46620:172:0;;;;;:::i;:::-;;:::i;9140:180::-;;;;;;;;;;-1:-1:-1;9140:180:0;;;;;:::i;:::-;;:::i;45313:187::-;;;;;;;;;;-1:-1:-1;45313:187:0;;;;;:::i;:::-;;:::i;39288:2657::-;;;;;;:::i;:::-;;:::i;6940:49::-;;;;;;;;;;;;;:::i;50570:180::-;;;;;;;;;;-1:-1:-1;50570:180:0;;;;;:::i;:::-;;:::i;46409:203::-;;;;;;;;;;-1:-1:-1;46409:203:0;;;;;:::i;:::-;;:::i;34385:23::-;;;;;;;;;;;;;:::i;50252:104::-;;;;;;;;;;;;;:::i;49926:201::-;;;;;;;;;;-1:-1:-1;49926:201:0;;;;;:::i;:::-;;:::i;34636:45::-;;;;;;;;;;;;;:::i;49502:416::-;;;;;;;;;;-1:-1:-1;49502:416:0;;;;;:::i;:::-;;:::i;35084:36::-;;;;;;;;;;;;;:::i;36467:123::-;;;;;;;;;;-1:-1:-1;36467:123:0;;;;;:::i;:::-;;:::i;34540:87::-;;;;;;;;;;;;;:::i;35129:31::-;;;;;;;;;;;;;:::i;11114:190::-;;;;;;;;;;-1:-1:-1;11114:190:0;;;;;:::i;:::-;;:::i;35730:298::-;;;;;;;;;;-1:-1:-1;35730:298:0;;;;;:::i;:::-;;:::i;34856:42::-;;;;;;;;;;-1:-1:-1;34856:42:0;;;;;:::i;:::-;;:::i;48476:201::-;;;;;;;;;;-1:-1:-1;48476:201:0;;;;;:::i;:::-;;:::i;8768:280::-;8898:4;-1:-1:-1;;;;;;8940:47:0;;-1:-1:-1;;;8940:47:0;;:100;;;9004:36;9028:11;9004:23;:36::i;:::-;8920:120;;8768:280;;;;:::o;36036:234::-;36121:41;6985:4;36149:12;:10;:12::i;36121:41::-;36099:112;;;;-1:-1:-1;;;36099:112:0;;;;;;;:::i;:::-;;;;;;;;;36224:17;:38;;-1:-1:-1;;;;;;36224:38:0;-1:-1:-1;;;;;36224:38:0;;;;;;;;;;36036:234::o;36390:42::-;;;;:::o;48802:104::-;48881:17;;48802:104;:::o;42026:54::-;;;;:::o;46988:263::-;47059:39;6985:4;47087:10;47059:7;:39::i;:::-;47051:71;;;;-1:-1:-1;;;47051:71:0;;;;;;;:::i;:::-;47152:38;;-1:-1:-1;;;47152:38:0;;47135:14;;-1:-1:-1;;;;;47152:23:0;;;;;:38;;47184:4;;47152:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;47201:42;;-1:-1:-1;;;47201:42:0;;47135:55;;-1:-1:-1;;;;;;47201:22:0;;;;;:42;;47224:10;;47135:55;;47201:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;46988:263;;:::o;41977:42::-;;;;;;:::o;48972:522::-;49053:10;49042:22;;;;:10;:22;;;;;;;;49041:23;49019:116;;;;-1:-1:-1;;;49019:116:0;;;;;;;:::i;:::-;49237:9;;:31;;-1:-1:-1;;;49237:31:0;;49215:19;;-1:-1:-1;;;;;49237:9:0;;:19;;:31;;49257:10;;49237:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;49215:53;;49316:23;;49301:11;:38;;49279:135;;;;-1:-1:-1;;;49279:135:0;;;;;;;:::i;:::-;49438:10;49427:22;;;;:10;:22;;;;;:29;;-1:-1:-1;;49427:29:0;49452:4;49427:29;;;49467:17;:19;;;;;;:::i;:::-;;;;;;48972:522;:::o;10296:123::-;10362:7;10389:12;;;;;;;;;;:22;;;;10296:123::o;10681:188::-;10800:18;10813:4;10800:12;:18::i;:::-;8646:30;8657:4;8663:12;:10;:12::i;:::-;8646:10;:30::i;:::-;10836:25:::1;10847:4;10853:7;10836:10;:25::i;48052:416::-:0;48138:39;6985:4;48166:10;48138:7;:39::i;:::-;48130:71;;;;-1:-1:-1;;;48130:71:0;;;;;;;:::i;:::-;48219:9;48214:247;48234:18;;;48214:247;;;48274:13;48290:7;;48298:1;48290:10;;;;;-1:-1:-1;;;48290:10:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;48274:26;-1:-1:-1;;;;;;48323:19:0;;48315:58;;;;-1:-1:-1;;;48315:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;48390:17:0;;48410:5;48390:17;;;:10;:17;;;;;:25;;-1:-1:-1;;48390:25:0;;;48430:17;:19;;;;;;:::i;:::-;;;;;;48214:247;48254:3;;;;;:::i;:::-;;;;48214:247;;11811:287;11964:12;:10;:12::i;:::-;-1:-1:-1;;;;;11953:23:0;:7;-1:-1:-1;;;;;11953:23:0;;11931:120;;;;-1:-1:-1;;;11931:120:0;;;;;;;:::i;:::-;12064:26;12076:4;12082:7;12064:11;:26::i;:::-;11811:287;;:::o;46800:180::-;46870:39;6985:4;46898:10;46870:7;:39::i;:::-;46862:71;;;;-1:-1:-1;;;46862:71:0;;;;;;;:::i;:::-;46946:14;:26;46800:180::o;36598:2682::-;36704:17;;36651:4;;-1:-1:-1;;;;;36704:17:0;36690:31;36668:124;;;;-1:-1:-1;;;36668:124:0;;;;;;;:::i;:::-;36852:4;36839:10;;:17;;;;:::i;:::-;36825:9;:32;;36803:110;;;;-1:-1:-1;;;36803:110:0;;;;;;;:::i;:::-;36933:14;;;;36932:15;36924:42;;;;-1:-1:-1;;;36924:42:0;;;;;;;:::i;:::-;37136:10;;37127:4;37112:12;;:19;;;;:::i;:::-;37111:35;;37103:67;;;;-1:-1:-1;;;37103:67:0;;;;;;;:::i;:::-;37211:4;37196:12;;:19;;;;:::i;:::-;37181:12;:34;37250:9;;:31;;-1:-1:-1;;;37250:31:0;;37228:19;;-1:-1:-1;;;;;37250:9:0;;:19;;:31;;37270:10;;37250:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37314:9;;:31;;-1:-1:-1;;;37314:31:0;;37228:53;;-1:-1:-1;37292:19:0;;-1:-1:-1;;;;;37314:9:0;;;;:19;;:31;;37334:10;;37314:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37381:17;;37292:53;;-1:-1:-1;37381:17:0;;:60;;;;-1:-1:-1;37430:10:0;37419:22;;;;:10;:22;;;;;;;;37381:60;:129;;;;-1:-1:-1;37485:24:0;;;;;;;37463:18;37477:4;37463:11;:18;:::i;:::-;:46;;37381:129;37380:333;;;-1:-1:-1;37556:17:0;;;;;;;:68;;;;-1:-1:-1;37613:10:0;37602:22;;;;:10;:22;;;;;;;;37556:68;:137;;;;;37669:23;;37654:11;:38;;37556:137;37380:396;;;-1:-1:-1;37736:17:0;;;;37735:18;:40;;;;-1:-1:-1;37758:17:0;;;;;;;37757:18;37735:40;37358:460;;;;-1:-1:-1;;;37358:460:0;;;;;;;:::i;:::-;37905:17;;;;;;;37904:18;;37903:410;;-1:-1:-1;37947:17:0;;;;:43;;;;-1:-1:-1;37979:10:0;37968:22;;;;:10;:22;;;;;;;;37947:43;37945:367;;;-1:-1:-1;38018:17:0;;;;;;;:94;;;;-1:-1:-1;38087:24:0;;;;;;;38065:18;38079:4;38065:11;:18;:::i;:::-;:46;;38018:94;:220;;;;-1:-1:-1;38153:10:0;38142:22;;;;:10;:22;;;;;;;;:95;;;;;38213:23;;38198:11;:38;;38142:95;38018:293;;;;;38306:4;38286:17;;:24;;;;:::i;:::-;38268:15;;:42;38018:293;37881:483;;;;-1:-1:-1;;;37881:483:0;;;;;;;:::i;:::-;38396:17;;;;;;;38395:18;;:311;;-1:-1:-1;38433:17:0;;;;:43;;;;-1:-1:-1;38465:10:0;38454:22;;;;:10;:22;;;;;;;;38433:43;38431:274;;;-1:-1:-1;38500:17:0;;;;;;;:135;;;;-1:-1:-1;38554:10:0;38543:22;;;;:10;:22;;;;;;;;:91;;;;;38610:23;;38595:11;:38;;38543:91;38500:204;;;;;38699:4;38679:17;;:24;;;;:::i;:::-;38661:15;;:42;38500:204;38377:412;;;38773:4;38753:17;;:24;;;;:::i;:::-;38733:17;:44;38377:412;38801:15;38834:1;38819:12;;:16;;;;:::i;:::-;38942:14;;38801:34;;-1:-1:-1;38942:14:0;;38934:22;;;;;:54;;-1:-1:-1;38978:10:0;;38960:14;38970:4;38960:7;:14;:::i;:::-;:28;;38934:54;38912:176;;;;-1:-1:-1;;;38912:176:0;;;;;;;:::i;:::-;39106:9;39101:150;39121:4;39117:1;:8;39101:150;;;39147:9;;39174:12;;39147:40;;-1:-1:-1;;;39147:40:0;;-1:-1:-1;;;;;39147:9:0;;;;:14;;:40;;39162:10;;39174:12;39147:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;39238:1;39222:12;;:17;;;;;;;:::i;:::-;;;;-1:-1:-1;39127:3:0;;-1:-1:-1;39127:3:0;;;:::i;:::-;;;;39101:150;;;-1:-1:-1;39268:4:0;;36598:2682;-1:-1:-1;;;;;36598:2682:0:o;34905:42::-;;;;;;;;;;;;;;;:::o;34690:31::-;;;;:::o;50135:109::-;-1:-1:-1;;;;;50220:16:0;50196:4;50220:16;;;:10;:16;;;;;;;;;50135:109::o;34728:31::-;;;;:::o;45508:245::-;45568:39;6985:4;45596:10;45568:7;:39::i;:::-;45560:71;;;;-1:-1:-1;;;45560:71:0;;;;;;;:::i;:::-;45650:14;;;;:24;;;;;;;45642:67;;;;-1:-1:-1;;;45642:67:0;;;;;;;:::i;:::-;45722:14;:23;;-1:-1:-1;;45722:23:0;;;;;;;;;;45508:245::o;42117:385::-;42293:39;6985:4;42321:10;42293:7;:39::i;:::-;42198:209;;;;-1:-1:-1;;;42198:209:0;;;;;;;:::i;:::-;42418:14;:23;;;42452:42;;;42418:23;42452:42;-1:-1:-1;;42418:23:0;;;;-1:-1:-1;;42418:23:0;;;;42452:42;;;;;;;42117:385::o;48685:109::-;-1:-1:-1;;;;;48770:16:0;48746:4;48770:16;;;:10;:16;;;;;;;;;48685:109::o;42510:2547::-;42616:17;;42563:4;;-1:-1:-1;;;;;42616:17:0;42602:31;42580:124;;;;-1:-1:-1;;;42580:124:0;;;;;;;:::i;:::-;42724:23;;;;42723:24;42715:62;;;;-1:-1:-1;;;42715:62:0;;;;;;;:::i;:::-;42823:10;;42814:4;42799:12;;:19;;;;:::i;:::-;42798:35;;42790:67;;;;-1:-1:-1;;;42790:67:0;;;;;;;:::i;:::-;42898:4;42883:12;;:19;;;;:::i;:::-;42868:12;:34;42937:9;;:31;;-1:-1:-1;;;42937:31:0;;42915:19;;-1:-1:-1;;;;;42937:9:0;;:19;;:31;;42957:10;;42937:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43001:9;;:31;;-1:-1:-1;;;43001:31:0;;42915:53;;-1:-1:-1;42979:19:0;;-1:-1:-1;;;;;43001:9:0;;;;:19;;:31;;43021:10;;43001:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43068:17;;42979:53;;-1:-1:-1;43068:17:0;;:60;;;;-1:-1:-1;43117:10:0;43106:22;;;;:10;:22;;;;;;;;43068:60;:129;;;;-1:-1:-1;43172:24:0;;;;;;;43150:18;43164:4;43150:11;:18;:::i;:::-;:46;;43068:129;43067:333;;;-1:-1:-1;43243:17:0;;;;;;;:68;;;;-1:-1:-1;43300:10:0;43289:22;;;;:10;:22;;;;;;;;43243:68;:137;;;;;43356:23;;43341:11;:38;;43243:137;43067:396;;;-1:-1:-1;43423:17:0;;;;43422:18;:40;;;;-1:-1:-1;43445:17:0;;;;;;;43444:18;43422:40;43045:460;;;;-1:-1:-1;;;43045:460:0;;;;;;;:::i;:::-;43592:17;;;;;;;43591:18;:87;;;;-1:-1:-1;43653:24:0;;;;;;;43631:18;43645:4;43631:11;:18;:::i;:::-;:46;;43591:87;43590:402;;;-1:-1:-1;43703:17:0;;;;:43;;;;-1:-1:-1;43735:10:0;43724:22;;;;:10;:22;;;;;;;;43703:43;43701:290;;;-1:-1:-1;43774:17:0;;;;;;;:143;;;;-1:-1:-1;43832:10:0;43821:22;;;;:10;:22;;;;;;;;:95;;;;;43892:23;;43877:11;:38;;43821:95;43774:216;;;;;43985:4;43965:17;;:24;;;;:::i;:::-;43947:15;;:42;43774:216;43568:475;;;;-1:-1:-1;;;43568:475:0;;;;;;;:::i;:::-;44075:17;;;;;;;44074:18;;:311;;-1:-1:-1;44112:17:0;;;;:43;;;;-1:-1:-1;44144:10:0;44133:22;;;;:10;:22;;;;;;;;44112:43;44110:274;;;-1:-1:-1;44179:17:0;;;;;;;:135;;;;-1:-1:-1;44233:10:0;44222:22;;;;:10;:22;;;;;;;;:91;;;;;44289:23;;44274:11;:38;;44222:91;44179:204;;;;;44378:4;44358:17;;:24;;;;:::i;:::-;44340:15;;:42;44179:204;44056:412;;;44452:4;44432:17;;:24;;;;:::i;:::-;44412:17;:44;44056:412;44498:9;;:29;;;-1:-1:-1;;;44498:29:0;;;;44480:15;;-1:-1:-1;;;;;44498:9:0;;:27;;:29;;;;;;;;;;;;;;:9;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44634:14;;44480:47;;-1:-1:-1;44634:14:0;;44626:22;;;;;:53;;-1:-1:-1;44669:10:0;;44652:14;44662:4;44652:7;:14;:::i;:::-;:27;44626:53;44604:175;;;;-1:-1:-1;;;44604:175:0;;;;;;;:::i;:::-;44792:128;44833:10;44866:4;44904;44887:14;;:21;;;;:::i;:::-;44792:9;;-1:-1:-1;;;;;44792:9:0;;:128;;:26;:128::i;:::-;44938:9;44933:93;44953:4;44949:1;:8;44933:93;;;44979:9;;:35;;-1:-1:-1;;;44979:35:0;;-1:-1:-1;;;;;44979:9:0;;;;:23;;:35;;45003:10;;44979:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;44959:3:0;;;;:::i;:::-;;;;44933:93;;34956:36;;;;;;:::o;36291:33::-;;;;;;:::o;47563:481::-;47644:39;6985:4;47672:10;47644:7;:39::i;:::-;47636:71;;;;-1:-1:-1;;;47636:71:0;;;;;;;:::i;:::-;47725:9;47720:317;47740:18;;;47720:317;;;47780:13;47796:7;;47804:1;47796:10;;;;;-1:-1:-1;;;47796:10:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;47780:26;-1:-1:-1;;;;;;47829:19:0;;47821:55;;;;-1:-1:-1;;;47821:55:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;47900:17:0;;;;;;:10;:17;;;;;;;;47899:18;47891:59;;;;-1:-1:-1;;;47891:59:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;47967:17:0;;;;;;:10;:17;;;;;:24;;-1:-1:-1;;47967:24:0;47987:4;47967:24;;;48006:17;:19;;;;;;:::i;:::-;;;;;;47720:317;47760:3;;;;;:::i;:::-;;;;47720:317;;35043:34;;;;:::o;34805:42::-;;;;;;;;;:::o;34345:33::-;;;-1:-1:-1;;;;;34345:33:0;;:::o;35495:227::-;35585:41;6985:4;35613:12;:10;:12::i;35585:41::-;35563:112;;;;-1:-1:-1;;;35563:112:0;;;;;;;:::i;:::-;35686:12;:28;35495:227::o;46073:328::-;46174:39;6985:4;46202:10;46174:7;:39::i;:::-;:100;;;;46234:40;34595:32;46263:10;46234:7;:40::i;:::-;46152:180;;;;-1:-1:-1;;;46152:180:0;;;;;;;:::i;:::-;46345:32;:48;;;;;;;-1:-1:-1;;46345:48:0;;;;;;;;;46073:328::o;50364:198::-;50444:39;6985:4;50472:10;50444:7;:39::i;:::-;50436:71;;;;-1:-1:-1;;;50436:71:0;;;;;;;:::i;:::-;50520:15;:34;50364:198::o;45761:304::-;45825:39;6985:4;45853:10;45825:7;:39::i;:::-;45817:71;;;;-1:-1:-1;;;45817:71:0;;;;;;;:::i;:::-;45921:23;;;;:33;;;;;;;45899:113;;;;-1:-1:-1;;;45899:113:0;;;;;;;:::i;:::-;46025:23;:32;;-1:-1:-1;;46025:32:0;;;;;;;;;;45761:304::o;36331:52::-;;;;;;;;;:::o;34766:32::-;;;;;;:::o;34417:47::-;;;;:::o;47259:238::-;47349:39;6985:4;47377:10;47349:7;:39::i;:::-;47341:71;;;;-1:-1:-1;;;47341:71:0;;;;;;;:::i;:::-;47425:64;;-1:-1:-1;;;47425:64:0;;-1:-1:-1;;;;;47425:27:0;;;;;:64;;47461:4;;47468:10;;47480:8;;47425:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47259:238;;:::o;45164:141::-;45269:14;;45261:35;;45221:21;;-1:-1:-1;;;;;45269:14:0;;45261:35;;;;;45221:21;;45205:13;45261:35;45205:13;45261:35;45221:21;45269:14;45261:35;;;;;;;45253:44;;;;;;45164:141;:::o;34502:29::-;;;-1:-1:-1;;;;;34502:29:0;;:::o;34999:37::-;;;;;;;;;:::o;46620:172::-;46686:39;6985:4;46714:10;46686:7;:39::i;:::-;46678:71;;;;-1:-1:-1;;;46678:71:0;;;;;;;:::i;:::-;46762:10;:22;46620:172::o;9140:180::-;9254:4;9283:12;;;;;;;;;;;-1:-1:-1;;;;;9283:29:0;;;;;;;;;;;;;;;9140:180::o;45313:187::-;45389:39;6985:4;45417:10;45389:7;:39::i;:::-;45381:71;;;;-1:-1:-1;;;45381:71:0;;;;;;;:::i;:::-;45465:14;:27;;-1:-1:-1;;;;;;45465:27:0;-1:-1:-1;;;;;45465:27:0;;;;;;;;;;45313:187::o;39288:2657::-;39393:17;;39340:4;;-1:-1:-1;;;;;39393:17:0;39379:31;39357:124;;;;-1:-1:-1;;;39357:124:0;;;;;;;:::i;:::-;39541:4;39528:10;;:17;;;;:::i;:::-;39514:9;:32;;39492:110;;;;-1:-1:-1;;;39492:110:0;;;;;;;:::i;:::-;39622:14;;;;39621:15;39613:42;;;;-1:-1:-1;;;39613:42:0;;;;;;;:::i;:::-;39825:10;;39816:4;39801:12;;:19;;;;:::i;:::-;39800:35;;39792:67;;;;-1:-1:-1;;;39792:67:0;;;;;;;:::i;:::-;39900:4;39885:12;;:19;;;;:::i;:::-;39870:12;:34;39939:9;;:31;;-1:-1:-1;;;39939:31:0;;39917:19;;-1:-1:-1;;;;;39939:9:0;;:19;;:31;;39959:10;;39939:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40003:9;;:31;;-1:-1:-1;;;40003:31:0;;39917:53;;-1:-1:-1;39981:19:0;;-1:-1:-1;;;;;40003:9:0;;;;:19;;:31;;40023:10;;40003:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40070:17;;39981:53;;-1:-1:-1;40070:17:0;;:60;;;;-1:-1:-1;40119:10:0;40108:22;;;;:10;:22;;;;;;;;40070:60;:129;;;;-1:-1:-1;40174:24:0;;;;;;;40152:18;40166:4;40152:11;:18;:::i;:::-;:46;;40070:129;40069:333;;;-1:-1:-1;40245:17:0;;;;;;;:68;;;;-1:-1:-1;40302:10:0;40291:22;;;;:10;:22;;;;;;;;40245:68;:137;;;;;40358:23;;40343:11;:38;;40245:137;40069:396;;;-1:-1:-1;40425:17:0;;;;40424:18;:40;;;;-1:-1:-1;40447:17:0;;;;;;;40446:18;40424:40;40047:460;;;;-1:-1:-1;;;40047:460:0;;;;;;;:::i;:::-;40594:17;;;;;;;40593:18;;40592:410;;-1:-1:-1;40636:17:0;;;;:43;;;;-1:-1:-1;40668:10:0;40657:22;;;;:10;:22;;;;;;;;40636:43;40634:367;;;-1:-1:-1;40707:17:0;;;;;;;:94;;;;-1:-1:-1;40776:24:0;;;;;;;40754:18;40768:4;40754:11;:18;:::i;:::-;:46;;40707:94;:220;;;;-1:-1:-1;40842:10:0;40831:22;;;;:10;:22;;;;;;;;:95;;;;;40902:23;;40887:11;:38;;40831:95;40707:293;;;;;40995:4;40975:17;;:24;;;;:::i;:::-;40957:15;;:42;40707:293;40570:483;;;;-1:-1:-1;;;40570:483:0;;;;;;;:::i;:::-;41085:17;;;;;;;41084:18;;:311;;-1:-1:-1;41122:17:0;;;;:43;;;;-1:-1:-1;41154:10:0;41143:22;;;;:10;:22;;;;;;;;41122:43;41120:274;;;-1:-1:-1;41189:17:0;;;;;;;:135;;;;-1:-1:-1;41243:10:0;41232:22;;;;:10;:22;;;;;;;;:91;;;;;41299:23;;41284:11;:38;;41232:91;41189:204;;;;;41388:4;41368:17;;:24;;;;:::i;:::-;41350:15;;:42;41189:204;41066:412;;;41462:4;41442:17;;:24;;;;:::i;:::-;41422:17;:44;41066:412;41508:9;;:29;;;-1:-1:-1;;;41508:29:0;;;;41490:15;;-1:-1:-1;;;;;41508:9:0;;:27;;:29;;;;;;;;;;;;;;:9;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41644:14;;41490:47;;-1:-1:-1;41644:14:0;;41636:22;;;;;:54;;-1:-1:-1;41680:10:0;;41662:14;41672:4;41662:7;:14;:::i;:::-;:28;;41636:54;41614:176;;;;-1:-1:-1;;;41614:176:0;;;;;;;:::i;:::-;41808:9;41803:113;41823:4;41819:1;:8;41803:113;;;41849:9;;:35;;-1:-1:-1;;;41849:35:0;;-1:-1:-1;;;;;41849:9:0;;;;:23;;:35;;41873:10;;41849:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;41829:3:0;;;;:::i;:::-;;;;41803:113;;6940:49;6985:4;6940:49;:::o;50570:180::-;50642:39;6985:4;50670:10;50642:7;:39::i;:::-;50634:71;;;;-1:-1:-1;;;50634:71:0;;;;;;;:::i;:::-;50718:10;:24;50570:180::o;46409:203::-;46493:39;6985:4;46521:10;46493:7;:39::i;:::-;46485:71;;;;-1:-1:-1;;;46485:71:0;;;;;;;:::i;:::-;46569:23;:35;46409:203::o;34385:23::-;;;-1:-1:-1;;;;;34385:23:0;;:::o;50252:104::-;50331:17;;50252:104;:::o;49926:201::-;50005:39;6985:4;50033:10;50005:7;:39::i;:::-;49997:71;;;;-1:-1:-1;;;49997:71:0;;;;;;;:::i;:::-;50081:17;:38;;;;;;;-1:-1:-1;;50081:38:0;;;;;;;;;49926:201::o;34636:45::-;;;-1:-1:-1;;;;;34636:45:0;;:::o;49502:416::-;49588:39;6985:4;49616:10;49588:7;:39::i;:::-;49580:71;;;;-1:-1:-1;;;49580:71:0;;;;;;;:::i;:::-;49669:9;49664:247;49684:18;;;49664:247;;;49724:13;49740:7;;49748:1;49740:10;;;;;-1:-1:-1;;;49740:10:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;49724:26;-1:-1:-1;;;;;;49773:19:0;;49765:58;;;;-1:-1:-1;;;49765:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;49840:17:0;;49860:5;49840:17;;;:10;:17;;;;;:25;;-1:-1:-1;;49840:25:0;;;49880:17;:19;;;;;;:::i;:::-;;;;;;49664:247;49704:3;;;;;:::i;:::-;;;;49664:247;;35084:36;;;;:::o;36467:123::-;36555:9;;:27;;-1:-1:-1;;;36555:27:0;;36528:7;;-1:-1:-1;;;;;36555:9:0;;:19;;:27;;36575:6;;36555:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;34540:87::-;34595:32;34540:87;:::o;35129:31::-;;;;:::o;11114:190::-;11234:18;11247:4;11234:12;:18::i;:::-;8646:30;8657:4;8663:12;:10;:12::i;8646:30::-;11270:26:::1;11282:4;11288:7;11270:11;:26::i;35730:298::-:0;35856:41;6985:4;35884:12;:10;:12::i;35856:41::-;35834:112;;;;-1:-1:-1;;;35834:112:0;;;;;;;:::i;:::-;35957:9;:22;;-1:-1:-1;;;;;35957:22:0;;;-1:-1:-1;;;;;;35957:22:0;;;;;;;35990:9;:30;;;;;;;;;;;35730:298::o;34856:42::-;;;;;;;;;;;;;;;:::o;48476:201::-;48555:39;6985:4;48583:10;48555:7;:39::i;:::-;48547:71;;;;-1:-1:-1;;;48547:71:0;;;;;;;:::i;:::-;48631:17;:38;;-1:-1:-1;;48631:38:0;;;;;;;;;;48476:201::o;4407:207::-;-1:-1:-1;;;;;;4566:40:0;;-1:-1:-1;;;4566:40:0;4407:207;;;:::o;728:98::-;808:10;728:98;:::o;9610:497::-;9691:22;9699:4;9705:7;9691;:22::i;:::-;9686:414;;9879:41;9907:7;-1:-1:-1;;;;;9879:41:0;9917:2;9879:19;:41::i;:::-;9993:38;10021:4;10028:2;9993:19;:38::i;:::-;9784:270;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9784:270:0;;;;;;;;;;-1:-1:-1;;;9730:358:0;;;;;;;:::i;13128:229::-;13203:22;13211:4;13217:7;13203;:22::i;:::-;13198:152;;13242:6;:12;;;;;;;;;;;-1:-1:-1;;;;;13242:29:0;;;;;;;;;:36;;-1:-1:-1;;13242:36:0;13274:4;13242:36;;;13325:12;:10;:12::i;:::-;-1:-1:-1;;;;;13298:40:0;13316:7;-1:-1:-1;;;;;13298:40:0;13310:4;13298:40;;;;;;;;;;13128:229;;:::o;13365:230::-;13440:22;13448:4;13454:7;13440;:22::i;:::-;13436:152;;;13511:5;13479:12;;;;;;;;;;;-1:-1:-1;;;;;13479:29:0;;;;;;;;;:37;;-1:-1:-1;;13479:37:0;;;13563:12;:10;:12::i;:::-;-1:-1:-1;;;;;13536:40:0;13554:7;-1:-1:-1;;;;;13536:40:0;13548:4;13536:40;;;;;;;;;;13365:230;;:::o;30335:285::-;30479:133;30513:5;30556:27;;;30585:4;30591:2;30595:5;30533:68;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;30533:68:0;;;;;;;;;;;;;;-1:-1:-1;;;;;30533:68:0;-1:-1:-1;;;;;;30533:68:0;;;;;;;;;;30479:19;:133::i;:::-;30335:285;;;;:::o;2469:483::-;2571:13;2602:19;2634:10;2638:6;2634:1;:10;:::i;:::-;:14;;2647:1;2634:14;:::i;:::-;2624:25;;;;;;-1:-1:-1;;;2624:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2624:25:0;;2602:47;;-1:-1:-1;;;2660:6:0;2667:1;2660:9;;;;;;-1:-1:-1;;;2660:9:0;;;;;;;;;;;;:15;-1:-1:-1;;;;;2660:15:0;;;;;;;;;-1:-1:-1;;;2686:6:0;2693:1;2686:9;;;;;;-1:-1:-1;;;2686:9:0;;;;;;;;;;;;:15;-1:-1:-1;;;;;2686:15:0;;;;;;;;-1:-1:-1;2717:9:0;2729:10;2733:6;2729:1;:10;:::i;:::-;:14;;2742:1;2729:14;:::i;:::-;2717:26;;2712:135;2749:1;2745;:5;2712:135;;;-1:-1:-1;;;2797:5:0;2805:3;2797:11;2784:25;;;;;-1:-1:-1;;;2784:25:0;;;;;;;;;;;;2772:6;2779:1;2772:9;;;;;;-1:-1:-1;;;2772:9:0;;;;;;;;;;;;:37;-1:-1:-1;;;;;2772:37:0;;;;;;;;-1:-1:-1;2834:1:0;2824:11;;;;;2752:3;;;:::i;:::-;;;2712:135;;;-1:-1:-1;2865:10:0;;2857:55;;;;-1:-1:-1;;;2857:55:0;;;;;;;:::i;:::-;2937:6;2469:483;-1:-1:-1;;;2469:483:0:o;32994:802::-;33418:23;33444:106;33486:4;33444:106;;;;;;;;;;;;;;;;;33452:5;-1:-1:-1;;;;;33444:27:0;;;:106;;;;;:::i;:::-;33565:17;;33418:132;;-1:-1:-1;33565:21:0;33561:228;;33680:10;33669:30;;;;;;;;;;;;:::i;:::-;33643:134;;;;-1:-1:-1;;;33643:134:0;;;;;;;:::i;24875:229::-;25012:12;25044:52;25066:6;25074:4;25080:1;25083:12;25044:21;:52::i;:::-;25037:59;24875:229;-1:-1:-1;;;;24875:229:0:o;26091:572::-;26261:12;26333:5;26308:21;:30;;26286:118;;;;-1:-1:-1;;;26286:118:0;;;;;;;:::i;:::-;26423:18;26434:6;26423:10;:18::i;:::-;26415:60;;;;-1:-1:-1;;;26415:60:0;;;;;;;:::i;:::-;26489:12;26503:23;26530:6;-1:-1:-1;;;;;26530:11:0;26549:5;26570:4;26530:55;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26488:97;;;;26603:52;26621:7;26630:10;26642:12;26603:17;:52::i;:::-;26596:59;26091:572;-1:-1:-1;;;;;;;26091:572:0:o;21972:387::-;22295:20;22343:8;;;21972:387::o;28834:712::-;28984:12;29013:7;29009:530;;;-1:-1:-1;29044:10:0;29037:17;;29009:530;29158:17;;:21;29154:374;;29356:10;29350:17;29417:15;29404:10;29400:2;29396:19;29389:44;29304:148;29499:12;29492:20;;-1:-1:-1;;;29492:20:0;;;;;;;;:::i;14:158:1:-;82:20;;142:4;131:16;;121:27;;111:2;;162:1;159;152:12;177:259;;289:2;277:9;268:7;264:23;260:32;257:2;;;310:6;302;295:22;257:2;354:9;341:23;373:33;400:5;373:33;:::i;441:327::-;;;570:2;558:9;549:7;545:23;541:32;538:2;;;591:6;583;576:22;538:2;635:9;622:23;654:33;681:5;654:33;:::i;:::-;706:5;758:2;743:18;;;;730:32;;-1:-1:-1;;;528:240:1:o;773:666::-;;;920:2;908:9;899:7;895:23;891:32;888:2;;;941:6;933;926:22;888:2;986:9;973:23;1015:18;1056:2;1048:6;1045:14;1042:2;;;1077:6;1069;1062:22;1042:2;1120:6;1109:9;1105:22;1095:32;;1165:7;1158:4;1154:2;1150:13;1146:27;1136:2;;1192:6;1184;1177:22;1136:2;1237;1224:16;1263:2;1255:6;1252:14;1249:2;;;1284:6;1276;1269:22;1249:2;1343:7;1338:2;1332;1324:6;1320:15;1316:2;1312:24;1308:33;1305:46;1302:2;;;1369:6;1361;1354:22;1302:2;1405;1397:11;;;;;1427:6;;-1:-1:-1;878:561:1;;-1:-1:-1;;;;878:561:1:o;1444:253::-;;1553:2;1541:9;1532:7;1528:23;1524:32;1521:2;;;1574:6;1566;1559:22;1521:2;1618:9;1605:23;1637:30;1661:5;1637:30;:::i;1702:257::-;;1822:2;1810:9;1801:7;1797:23;1793:32;1790:2;;;1843:6;1835;1828:22;1790:2;1880:9;1874:16;1899:30;1923:5;1899:30;:::i;1964:190::-;;2076:2;2064:9;2055:7;2051:23;2047:32;2044:2;;;2097:6;2089;2082:22;2044:2;-1:-1:-1;2125:23:1;;2034:120;-1:-1:-1;2034:120:1:o;2159:327::-;;;2288:2;2276:9;2267:7;2263:23;2259:32;2256:2;;;2309:6;2301;2294:22;2256:2;2350:9;2337:23;2327:33;;2410:2;2399:9;2395:18;2382:32;2423:33;2450:5;2423:33;:::i;:::-;2475:5;2465:15;;;2246:240;;;;;:::o;2491:306::-;;2602:2;2590:9;2581:7;2577:23;2573:32;2570:2;;;2623:6;2615;2608:22;2570:2;2654:23;;-1:-1:-1;;;;;;2706:32:1;;2696:43;;2686:2;;2758:6;2750;2743:22;2802:441;;;2970:2;2958:9;2949:7;2945:23;2941:32;2938:2;;;2991:6;2983;2976:22;2938:2;3035:9;3022:23;3054:33;3081:5;3054:33;:::i;:::-;3106:5;-1:-1:-1;3163:2:1;3148:18;;3135:32;3176:35;3135:32;3176:35;:::i;3443:194::-;;3566:2;3554:9;3545:7;3541:23;3537:32;3534:2;;;3587:6;3579;3572:22;3534:2;-1:-1:-1;3615:16:1;;3524:113;-1:-1:-1;3524:113:1:o;3642:266::-;;;3767:2;3755:9;3746:7;3742:23;3738:32;3735:2;;;3788:6;3780;3773:22;3735:2;3816:29;3835:9;3816:29;:::i;:::-;3806:39;;3864:38;3898:2;3887:9;3883:18;3864:38;:::i;:::-;3854:48;;3725:183;;;;;:::o;3913:274::-;;4080:6;4074:13;4096:53;4142:6;4137:3;4130:4;4122:6;4118:17;4096:53;:::i;:::-;4165:16;;;;;4050:137;-1:-1:-1;;4050:137:1:o;4192:786::-;;4603:25;4598:3;4591:38;4658:6;4652:13;4674:62;4729:6;4724:2;4719:3;4715:12;4708:4;4700:6;4696:17;4674:62;:::i;:::-;-1:-1:-1;;;4795:2:1;4755:16;;;4787:11;;;4780:40;4845:13;;4867:63;4845:13;4916:2;4908:11;;4901:4;4889:17;;4867:63;:::i;:::-;4950:17;4969:2;4946:26;;4581:397;-1:-1:-1;;;;4581:397:1:o;4983:203::-;-1:-1:-1;;;;;5147:32:1;;;;5129:51;;5117:2;5102:18;;5084:102::o;5191:375::-;-1:-1:-1;;;;;5449:15:1;;;5431:34;;5501:15;;;;5496:2;5481:18;;5474:43;5548:2;5533:18;;5526:34;;;;5381:2;5366:18;;5348:218::o;5571:274::-;-1:-1:-1;;;;;5763:32:1;;;;5745:51;;5827:2;5812:18;;5805:34;5733:2;5718:18;;5700:145::o;5850:187::-;6015:14;;6008:22;5990:41;;5978:2;5963:18;;5945:92::o;6042:177::-;6188:25;;;6176:2;6161:18;;6143:76::o;6679:383::-;;6828:2;6817:9;6810:21;6860:6;6854:13;6903:6;6898:2;6887:9;6883:18;6876:34;6919:66;6978:6;6973:2;6962:9;6958:18;6953:2;6945:6;6941:15;6919:66;:::i;:::-;7046:2;7025:15;-1:-1:-1;;7021:29:1;7006:45;;;;7053:2;7002:54;;6800:262;-1:-1:-1;;6800:262:1:o;7067:345::-;7269:2;7251:21;;;7308:2;7288:18;;;7281:30;-1:-1:-1;;;7342:2:1;7327:18;;7320:51;7403:2;7388:18;;7241:171::o;7417:356::-;7619:2;7601:21;;;7638:18;;;7631:30;7697:34;7692:2;7677:18;;7670:62;7764:2;7749:18;;7591:182::o;7778:476::-;7980:2;7962:21;;;8019:2;7999:18;;;7992:30;8058:34;8053:2;8038:18;;8031:62;8129:34;8124:2;8109:18;;8102:62;-1:-1:-1;;;8195:3:1;8180:19;;8173:39;8244:3;8229:19;;7952:302::o;8259:338::-;8461:2;8443:21;;;8500:2;8480:18;;;8473:30;-1:-1:-1;;;8534:2:1;8519:18;;8512:44;8588:2;8573:18;;8433:164::o;8602:349::-;8804:2;8786:21;;;8843:2;8823:18;;;8816:30;8882:27;8877:2;8862:18;;8855:55;8942:2;8927:18;;8776:175::o;8956:352::-;9158:2;9140:21;;;9197:2;9177:18;;;9170:30;9236;9231:2;9216:18;;9209:58;9299:2;9284:18;;9130:178::o;9313:347::-;9515:2;9497:21;;;9554:2;9534:18;;;9527:30;9593:25;9588:2;9573:18;;9566:53;9651:2;9636:18;;9487:173::o;9665:402::-;9867:2;9849:21;;;9906:2;9886:18;;;9879:30;9945:34;9940:2;9925:18;;9918:62;-1:-1:-1;;;10011:2:1;9996:18;;9989:36;10057:3;10042:19;;9839:228::o;10072:407::-;10274:2;10256:21;;;10313:2;10293:18;;;10286:30;10352:34;10347:2;10332:18;;10325:62;-1:-1:-1;;;10418:2:1;10403:18;;10396:41;10469:3;10454:19;;10246:233::o;10484:347::-;10686:2;10668:21;;;10725:2;10705:18;;;10698:30;10764:25;10759:2;10744:18;;10737:53;10822:2;10807:18;;10658:173::o;10836:411::-;11038:2;11020:21;;;11077:2;11057:18;;;11050:30;11116:34;11111:2;11096:18;;11089:62;-1:-1:-1;;;11182:2:1;11167:18;;11160:45;11237:3;11222:19;;11010:237::o;11252:407::-;11454:2;11436:21;;;11493:2;11473:18;;;11466:30;11532:34;11527:2;11512:18;;11505:62;-1:-1:-1;;;11598:2:1;11583:18;;11576:41;11649:3;11634:19;;11426:233::o;11664:411::-;11866:2;11848:21;;;11905:2;11885:18;;;11878:30;11944:34;11939:2;11924:18;;11917:62;-1:-1:-1;;;12010:2:1;11995:18;;11988:45;12065:3;12050:19;;11838:237::o;12080:350::-;12282:2;12264:21;;;12321:2;12301:18;;;12294:30;12360:28;12355:2;12340:18;;12333:56;12421:2;12406:18;;12254:176::o;12435:343::-;12637:2;12619:21;;;12676:2;12656:18;;;12649:30;-1:-1:-1;;;12710:2:1;12695:18;;12688:49;12769:2;12754:18;;12609:169::o;12783:354::-;12985:2;12967:21;;;13024:2;13004:18;;;12997:30;13063:32;13058:2;13043:18;;13036:60;13128:2;13113:18;;12957:180::o;13142:352::-;13344:2;13326:21;;;13383:2;13363:18;;;13356:30;13422;13417:2;13402:18;;13395:58;13485:2;13470:18;;13316:178::o;13499:353::-;13701:2;13683:21;;;13740:2;13720:18;;;13713:30;13779:31;13774:2;13759:18;;13752:59;13843:2;13828:18;;13673:179::o;13857:343::-;14059:2;14041:21;;;14098:2;14078:18;;;14071:30;-1:-1:-1;;;14132:2:1;14117:18;;14110:49;14191:2;14176:18;;14031:169::o;14205:406::-;14407:2;14389:21;;;14446:2;14426:18;;;14419:30;14485:34;14480:2;14465:18;;14458:62;-1:-1:-1;;;14551:2:1;14536:18;;14529:40;14601:3;14586:19;;14379:232::o;14616:354::-;14818:2;14800:21;;;14857:2;14837:18;;;14830:30;14896:32;14891:2;14876:18;;14869:60;14961:2;14946:18;;14790:180::o;14975:338::-;15177:2;15159:21;;;15216:2;15196:18;;;15189:30;-1:-1:-1;;;15250:2:1;15235:18;;15228:44;15304:2;15289:18;;15149:164::o;15318:411::-;15520:2;15502:21;;;15559:2;15539:18;;;15532:30;15598:34;15593:2;15578:18;;15571:62;-1:-1:-1;;;15664:2:1;15649:18;;15642:45;15719:3;15704:19;;15492:237::o;15916:184::-;16088:4;16076:17;;;;16058:36;;16046:2;16031:18;;16013:87::o;16105:128::-;;16176:1;16172:6;16169:1;16166:13;16163:2;;;16182:18;;:::i;:::-;-1:-1:-1;16218:9:1;;16153:80::o;16238:168::-;;16344:1;16340;16336:6;16332:14;16329:1;16326:21;16321:1;16314:9;16307:17;16303:45;16300:2;;;16351:18;;:::i;:::-;-1:-1:-1;16391:9:1;;16290:116::o;16411:125::-;;16479:1;16476;16473:8;16470:2;;;16484:18;;:::i;:::-;-1:-1:-1;16521:9:1;;16460:76::o;16541:258::-;16613:1;16623:113;16637:6;16634:1;16631:13;16623:113;;;16713:11;;;16707:18;16694:11;;;16687:39;16659:2;16652:10;16623:113;;;16754:6;16751:1;16748:13;16745:2;;;-1:-1:-1;;16789:1:1;16771:16;;16764:27;16594:205::o;16804:136::-;;16871:5;16861:2;;16880:18;;:::i;:::-;-1:-1:-1;;;16916:18:1;;16851:89::o;16945:135::-;;-1:-1:-1;;17005:17:1;;17002:2;;;17025:18;;:::i;:::-;-1:-1:-1;17072:1:1;17061:13;;16992:88::o;17085:127::-;17146:10;17141:3;17137:20;17134:1;17127:31;17177:4;17174:1;17167:15;17201:4;17198:1;17191:15;17217:133;-1:-1:-1;;;;;17294:31:1;;17284:42;;17274:2;;17340:1;17337;17330:12;17355:120;17443:5;17436:13;17429:21;17422:5;17419:32;17409:2;;17465:1;17462;17455:12
Swarm Source
ipfs://ef42739b4e51742ad49aed285b8bb7bb28c746949ee8b271386a6e74b5d4fc77
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.