Overview
TokenID
4589963154156470283549486640403797072397...
Total Transfers
2
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
PositionNFT
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 200 runs
Other Settings:
london EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526//SPDX-License-Identifier: BUSL-1.1pragma solidity 0.8.20;import "@openzeppelin/contracts/token/ERC721/ERC721.sol";import "@openzeppelin/contracts/access/AccessControl.sol";import "../libraries/DataTypes.sol";import "../libraries/Errors.sol";import "../libraries/Roles.sol";/// @title PositionNFT/// @notice An ERC721 NFT that represents ownership of each position created through the protocol/// @dev Instances can only be minted by other contango contractscontract PositionNFT is ERC721, AccessControl {event ContangoContractSet(address indexed contractAddr, bool indexed enabled);uint256 public counter = 1;mapping(address contractAddr => bool enabled) public contangoContracts;constructor(Timelock timelock) ERC721("Contango Position", "CTGP") {// Grant the admin role to the timelock by default_grantRole(DEFAULT_ADMIN_ROLE, Timelock.unwrap(timelock));}/// @notice creates a new position in the protocol by minting a new NFT instance/// @param positionId positionId of the new position without the number component set
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/ERC721.sol)pragma solidity ^0.8.0;import "./IERC721.sol";import "./IERC721Receiver.sol";import "./extensions/IERC721Metadata.sol";import "../../utils/Address.sol";import "../../utils/Context.sol";import "../../utils/Strings.sol";import "../../utils/introspection/ERC165.sol";/*** @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including* the Metadata extension, but not including the Enumerable extension, which is available separately as* {ERC721Enumerable}.*/contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {using Address for address;using Strings for uint256;// Token namestring private _name;// Token symbol
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (access/AccessControl.sol)pragma solidity ^0.8.0;import "./IAccessControl.sol";import "../utils/Context.sol";import "../utils/Strings.sol";import "../utils/introspection/ERC165.sol";/*** @dev Contract module that allows children to implement role-based access* control mechanisms. This is a lightweight version that doesn't allow enumerating role* members except through off-chain means by accessing the contract event logs. Some* applications may benefit from on-chain enumerability, for those cases see* {AccessControlEnumerable}.** Roles are referred to by their `bytes32` identifier. These should be exposed* in the external API and be unique. The best way to achieve this is by* using `public constant` hash digests:** ```solidity* bytes32 public constant MY_ROLE = keccak256("MY_ROLE");* ```** Roles can be used to represent a set of permissions. To restrict access to a
1234567891011121314151617181920212223242526//SPDX-License-Identifier: BUSL-1.1pragma solidity 0.8.20;import "./extensions/PositionIdExt.sol";uint256 constant WAD = 1e18;uint256 constant RAY = 1e27;uint256 constant PERCENTAGE_UNIT = 1e4;uint256 constant ONE_HUNDRED_PERCENT = 1e4;enum Currency {None,Base,Quote}type Symbol is bytes16;type PositionId is bytes32;using { decode, getSymbol, getNumber, getMoneyMarket, getExpiry, isPerp, isExpired, withNumber, getFlags } for PositionId global;type OrderId is bytes32;type MoneyMarketId is uint8;
12345//SPDX-License-Identifier: MITpragma solidity 0.8.20;error SenderIsNotNativeToken(address msgSender, address nativeToken);error Unauthorised(address msgSender);
123456789//SPDX-License-Identifier: MITpragma solidity 0.8.20;bytes32 constant EMERGENCY_BREAK_ROLE = keccak256("EMERGENCY_BREAK");bytes32 constant OPERATOR_ROLE = keccak256("OPERATOR");bytes32 constant CONTANGO_ROLE = keccak256("CONTANGO");bytes32 constant BOT_ROLE = keccak256("BOT");bytes32 constant MINTER_ROLE = keccak256("MINTER");bytes32 constant MODIFIER_ROLE = keccak256("MODIFIER");
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)pragma solidity ^0.8.0;import "../../utils/introspection/IERC165.sol";/*** @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);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)pragma solidity ^0.8.0;/*** @title ERC721 token receiver interface* @dev Interface for any contract that wants to support safeTransfers* from ERC721 asset contracts.*/interface IERC721Receiver {/*** @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}* by `operator` from `from`, this function is called.** It must return its Solidity selector to confirm the token transfer.* If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.** The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.*/function onERC721Received(address operator,address from,uint256 tokenId,bytes calldata data) external returns (bytes4);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)pragma solidity ^0.8.0;import "../IERC721.sol";/*** @title ERC-721 Non-Fungible Token Standard, optional metadata extension* @dev See https://eips.ethereum.org/EIPS/eip-721*/interface IERC721Metadata is IERC721 {/*** @dev Returns the token collection name.*/function name() external view returns (string memory);/*** @dev Returns the token collection symbol.*/function symbol() external view returns (string memory);/*** @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.*/function tokenURI(uint256 tokenId) external view returns (string memory);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)pragma solidity ^0.8.1;/*** @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** Furthermore, `isContract` will also return true if the target contract within
123456789101112131415161718192021222324// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)pragma solidity ^0.8.0;/*** @dev Provides information about the current execution context, including the* sender of the transaction and its data. While these are generally available* via msg.sender and msg.data, they should not be accessed in such a direct* manner, since when dealing with meta-transactions the account sending and* paying for execution may not be the actual sender (as far as an application* is concerned).** This contract is only required for intermediate, library-like contracts.*/abstract contract Context {function _msgSender() internal view virtual returns (address) {return msg.sender;}function _msgData() internal view virtual returns (bytes calldata) {return msg.data;}}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)pragma solidity ^0.8.0;import "./math/Math.sol";import "./math/SignedMath.sol";/*** @dev String operations.*/library Strings {bytes16 private constant _SYMBOLS = "0123456789abcdef";uint8 private constant _ADDRESS_LENGTH = 20;/*** @dev Converts a `uint256` to its ASCII `string` decimal representation.*/function toString(uint256 value) internal pure returns (string memory) {unchecked {uint256 length = Math.log10(value) + 1;string memory buffer = new string(length);uint256 ptr;/// @solidity memory-safe-assemblyassembly {ptr := add(buffer, add(32, length))
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)pragma solidity ^0.8.0;import "./IERC165.sol";/*** @dev Implementation of the {IERC165} interface.** Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check* for the additional interface id that will be supported. For example:** ```solidity* function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {* return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);* }* ```** Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.*/abstract contract ERC165 is IERC165 {/*** @dev See {IERC165-supportsInterface}.*/function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)pragma solidity ^0.8.0;/*** @dev External interface of AccessControl declared to support ERC165 detection.*/interface IAccessControl {/*** @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`** `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite* {RoleAdminChanged} not being emitted signaling this.** _Available since v3.1._*/event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);/*** @dev Emitted when `account` is granted `role`.** `sender` is the account that originated the contract call, an admin role* bearer except when using {AccessControl-_setupRole}.*/event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
1234567891011121314151617181920212223242526//SPDX-License-Identifier: BUSL-1.1pragma solidity 0.8.20;import "../DataTypes.sol";error InvalidUInt48(uint256 n);error InvalidUInt32(uint256 n);error InvalidExpiry();error InvalidPositionId();// 16B - 1B - 4B - 1B - 4B - 6B// symbol - money market - expiry - flags - empty - numberfunction decode(PositionId positionId) pure returns (Symbol symbol, MoneyMarketId mm, uint32 expiry, uint256 number) {bytes32 raw = PositionId.unwrap(positionId);symbol = Symbol.wrap(bytes16(raw));mm = MoneyMarketId.wrap(uint8(uint256(raw >> 120)));expiry = (uint32(uint256(raw >> 88)));number = uint48(uint256(raw));}function getSymbol(PositionId positionId) pure returns (Symbol) {return Symbol.wrap(bytes16(PositionId.unwrap(positionId)));}function getNumber(PositionId positionId) pure returns (uint256) {
12345678910111213141516171819202122232425// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)pragma solidity ^0.8.0;/*** @dev Interface of the ERC165 standard, as defined in the* https://eips.ethereum.org/EIPS/eip-165[EIP].** Implementers can declare support of contract interfaces, which can then be* queried by others ({ERC165Checker}).** For an implementation, see {ERC165}.*/interface IERC165 {/*** @dev Returns true if this contract implements the interface defined by* `interfaceId`. See the corresponding* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]* to learn more about how these ids are created.** This function call must use less than 30 000 gas.*/function supportsInterface(bytes4 interfaceId) external view returns (bool);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)pragma solidity ^0.8.0;/*** @dev Standard math utilities missing in the Solidity language.*/library Math {enum Rounding {Down, // Toward negative infinityUp, // Toward infinityZero // Toward zero}/*** @dev Returns the largest of two numbers.*/function max(uint256 a, uint256 b) internal pure returns (uint256) {return a > b ? a : b;}/*** @dev Returns the smallest of two numbers.*/function min(uint256 a, uint256 b) internal pure returns (uint256) {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)pragma solidity ^0.8.0;/*** @dev Standard signed math utilities missing in the Solidity language.*/library SignedMath {/*** @dev Returns the largest of two signed numbers.*/function max(int256 a, int256 b) internal pure returns (int256) {return a > b ? a : b;}/*** @dev Returns the smallest of two signed numbers.*/function min(int256 a, int256 b) internal pure returns (int256) {return a < b ? a : b;}/*** @dev Returns the average of two signed numbers without overflow.* The result is rounded towards zero.
1234567891011121314151617181920212223242526{"remappings": ["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","forge-std/=lib/forge-std/src/","@aave/core-v3/=lib/aave-v3-core/","erc7399/=lib/erc7399/src/","erc7399-wrappers/=lib/erc7399-wrappers/src/","@prb/test/=lib/erc7399-wrappers/lib/prb-test/src/","aave-v3-core/=lib/aave-v3-core/","ds-test/=lib/forge-std/lib/ds-test/src/","erc3156/=lib/erc7399-wrappers/lib/erc3156/contracts/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts-upgradeable/contracts/","prb-test/=lib/erc7399-wrappers/lib/prb-test/src/","registry/=lib/erc7399-wrappers/lib/registry/","solmate/=lib/erc7399-wrappers/lib/solmate/src/"],"optimizer": {"enabled": true,"runs": 200},"metadata": {"useLiteralContent": false,
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"Timelock","name":"timelock","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidPositionId","type":"error"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"}],"name":"InvalidUInt48","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddr","type":"address"},{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContangoContractSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"PositionId","name":"positionId","type":"bytes32"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddr","type":"address"}],"name":"contangoContracts","outputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"counter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"PositionId","name":"positionId","type":"bytes32"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"PositionId","name":"positionId","type":"bytes32"},{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"PositionId","name":"positionId_","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"PositionId","name":"positionId","type":"bytes32"}],"name":"positionOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddr","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setContangoContract","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405260016007553480156200001657600080fd5b5060405162001ee738038062001ee783398101604081905262000039916200015e565b6040518060400160405280601181526020017021b7b73a30b733b7902837b9b4ba34b7b760791b815250604051806040016040528060048152602001630435447560e41b815250816000908162000091919062000235565b506001620000a0828262000235565b50620000b291506000905082620000b9565b5062000301565b60008281526006602090815260408083206001600160a01b038516845290915290205460ff166200015a5760008281526006602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620001193390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000602082840312156200017157600080fd5b81516001600160a01b03811681146200018957600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001bb57607f821691505b602082108103620001dc57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200023057600081815260208120601f850160051c810160208610156200020b5750805b601f850160051c820191505b818110156200022c5782815560010162000217565b5050505b505050565b81516001600160401b0381111562000251576200025162000190565b6200026981620002628454620001a6565b84620001e2565b602080601f831160018114620002a15760008415620002885750858301515b600019600386901b1c1916600185901b1785556200022c565b600085815260208120601f198616915b82811015620002d257888601518255948401946001909101908401620002b1565b5085821015620002f15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b611bd680620003116000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806342842e0e116100de578063a217fddf11610097578063c87b56dd11610071578063c87b56dd14610374578063d547741f14610387578063e985e9c51461039a578063ed79b81a146103ad57600080fd5b8063a217fddf14610346578063a22cb4651461034e578063b88d4fde1461036157600080fd5b806342842e0e146102e957806361bc221a146102fc5780636352211e1461030557806370a082311461031857806391d148541461032b57806395d89b411461033e57600080fd5b806323b872dd1161014b5780632f2ff15d116101255780632f2ff15d1461029d57806336568abe146102b057806338a699a4146102c357806340328664146102d657600080fd5b806323b872dd14610246578063248a9ca314610259578063293c6a3a1461028a57600080fd5b806301ffc9a71461019357806306fdde03146101bb578063081812fc146101d057806308a1eee1146101fb578063095ea7b3146102105780630d067d2214610223575b600080fd5b6101a66101a136600461167a565b6103c0565b60405190151581526020015b60405180910390f35b6101c36103e0565b6040516101b291906116e7565b6101e36101de3660046116fa565b610472565b6040516001600160a01b0390911681526020016101b2565b61020e6102093660046116fa565b610499565b005b61020e61021e36600461172f565b6104d0565b6101a6610231366004611759565b60086020526000908152604090205460ff1681565b61020e610254366004611774565b6105ea565b61027c6102673660046116fa565b60009081526006602052604090206001015490565b6040519081526020016101b2565b61027c6102983660046117b0565b61061b565b61020e6102ab3660046117b0565b610678565b61020e6102be3660046117b0565b61069d565b6101a66102d13660046116fa565b610717565b6101e36102e43660046116fa565b610736565b61020e6102f7366004611774565b610741565b61027c60075481565b6101e36103133660046116fa565b61075c565b61027c610326366004611759565b6107bc565b6101a66103393660046117b0565b610842565b6101c361086d565b61027c600081565b61020e61035c3660046117dc565b61087c565b61020e61036f36600461182e565b610887565b6101c36103823660046116fa565b6108bf565b61020e6103953660046117b0565b610933565b6101a66103a836600461190a565b610958565b61020e6103bb3660046117dc565b6109c6565b60006103cb82610a26565b806103da57506103da82610a26565b92915050565b6060600080546103ef90611934565b80601f016020809104026020016040519081016040528092919081815260200182805461041b90611934565b80156104685780601f1061043d57610100808354040283529160200191610468565b820191906000526020600020905b81548152906001019060200180831161044b57829003601f168201915b5050505050905090565b600061047d82610a4b565b506000908152600460205260409020546001600160a01b031690565b7ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc96104c381610aad565b6104cc82610ab7565b5050565b60006104db8261075c565b9050806001600160a01b0316836001600160a01b03160361054d5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061056957506105698133610958565b6105db5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610544565b6105e58383610b4c565b505050565b6105f43382610bba565b6106105760405162461bcd60e51b81526004016105449061196e565b6105e5838383610c19565b60007ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc961064781610aad565b6007805461066591600061065a836119d1565b909155508590610d7d565b91506106718383610ddb565b5092915050565b60008281526006602052604090206001015461069381610aad565b6105e58383610df5565b6001600160a01b038116331461070d5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610544565b6104cc8282610e7b565b6000818152600260205260408120546001600160a01b031615156103da565b60006103da8261075c565b6105e583838360405180602001604052806000815250610887565b6000818152600260205260408120546001600160a01b0316806103da5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610544565b60006001600160a01b0382166108265760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610544565b506001600160a01b031660009081526003602052604090205490565b60009182526006602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600180546103ef90611934565b6104cc338383610ee2565b6108913383610bba565b6108ad5760405162461bcd60e51b81526004016105449061196e565b6108b984848484610fb0565b50505050565b60606108ca82610a4b565b60006108e160408051602081019091526000815290565b90506000815111610901576040518060200160405280600081525061092c565b8061090b84610fe3565b60405160200161091c9291906119ea565b6040516020818303038152906040525b9392505050565b60008281526006602052604090206001015461094e81610aad565b6105e58383610e7b565b6000816001600160a01b0316836001600160a01b0316148061099257506001600160a01b03821660009081526008602052604090205460ff165b8061092c57506001600160a01b0380841660009081526005602090815260408083209386168352929052205460ff1661092c565b60006109d181610aad565b6001600160a01b038316600081815260086020526040808220805460ff191686151590811790915590519092917f441641ed431b30e3e74612ab3c4e7b668289831b7a8dba39d97dfcc4376c6be191a3505050565b60006001600160e01b03198216637965db0b60e01b14806103da57506103da82611076565b6000818152600260205260409020546001600160a01b0316610aaa5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610544565b50565b610aaa81336110c6565b6000610ac28261075c565b9050610acd8261075c565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610b818261075c565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610bc68361075c565b9050806001600160a01b0316846001600160a01b03161480610bed5750610bed8185610958565b80610c115750836001600160a01b0316610c0684610472565b6001600160a01b0316145b949350505050565b826001600160a01b0316610c2c8261075c565b6001600160a01b031614610c525760405162461bcd60e51b815260040161054490611a19565b6001600160a01b038216610cb45760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610544565b826001600160a01b0316610cc78261075c565b6001600160a01b031614610ced5760405162461bcd60e51b815260040161054490611a19565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000818265ffffffffffff1614610daa57604051631903a4a760e11b815260048101839052602401610544565b65ffffffffffff831615610dd157604051637bb0b62160e01b815260040160405180910390fd5b61092c8284611a5e565b6104cc82826040518060200160405280600081525061111f565b610dff8282610842565b6104cc5760008281526006602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610e373390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610e858282610842565b156104cc5760008281526006602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b816001600160a01b0316836001600160a01b031603610f435760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610544565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610fbb848484610c19565b610fc784848484611152565b6108b95760405162461bcd60e51b815260040161054490611a71565b60606000610ff083611253565b600101905060008167ffffffffffffffff81111561101057611010611818565b6040519080825280601f01601f19166020018201604052801561103a576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461104457509392505050565b60006001600160e01b031982166380ac58cd60e01b14806110a757506001600160e01b03198216635b5e139f60e01b145b806103da57506301ffc9a760e01b6001600160e01b03198316146103da565b6110d08282610842565b6104cc576110dd8161132b565b6110e883602061133d565b6040516020016110f9929190611ac3565b60408051601f198184030181529082905262461bcd60e51b8252610544916004016116e7565b61112983836114d9565b6111366000848484611152565b6105e55760405162461bcd60e51b815260040161054490611a71565b60006001600160a01b0384163b1561124857604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611196903390899088908890600401611b38565b6020604051808303816000875af19250505080156111d1575060408051601f3d908101601f191682019092526111ce91810190611b75565b60015b61122e573d8080156111ff576040519150601f19603f3d011682016040523d82523d6000602084013e611204565b606091505b5080516000036112265760405162461bcd60e51b815260040161054490611a71565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610c11565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106112925772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef810000000083106112be576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106112dc57662386f26fc10000830492506010015b6305f5e10083106112f4576305f5e100830492506008015b612710831061130857612710830492506004015b6064831061131a576064830492506002015b600a83106103da5760010192915050565b60606103da6001600160a01b03831660145b6060600061134c836002611b92565b611357906002611a5e565b67ffffffffffffffff81111561136f5761136f611818565b6040519080825280601f01601f191660200182016040528015611399576020820181803683370190505b509050600360fc1b816000815181106113b4576113b4611ba9565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106113e3576113e3611ba9565b60200101906001600160f81b031916908160001a9053506000611407846002611b92565b611412906001611a5e565b90505b600181111561148a576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061144657611446611ba9565b1a60f81b82828151811061145c5761145c611ba9565b60200101906001600160f81b031916908160001a90535060049490941c9361148381611bbf565b9050611415565b50831561092c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610544565b6001600160a01b03821661152f5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610544565b6000818152600260205260409020546001600160a01b0316156115945760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610544565b6000818152600260205260409020546001600160a01b0316156115f95760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610544565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b031981168114610aaa57600080fd5b60006020828403121561168c57600080fd5b813561092c81611664565b60005b838110156116b257818101518382015260200161169a565b50506000910152565b600081518084526116d3816020860160208601611697565b601f01601f19169290920160200192915050565b60208152600061092c60208301846116bb565b60006020828403121561170c57600080fd5b5035919050565b80356001600160a01b038116811461172a57600080fd5b919050565b6000806040838503121561174257600080fd5b61174b83611713565b946020939093013593505050565b60006020828403121561176b57600080fd5b61092c82611713565b60008060006060848603121561178957600080fd5b61179284611713565b92506117a060208501611713565b9150604084013590509250925092565b600080604083850312156117c357600080fd5b823591506117d360208401611713565b90509250929050565b600080604083850312156117ef57600080fd5b6117f883611713565b91506020830135801515811461180d57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561184457600080fd5b61184d85611713565b935061185b60208601611713565b925060408501359150606085013567ffffffffffffffff8082111561187f57600080fd5b818701915087601f83011261189357600080fd5b8135818111156118a5576118a5611818565b604051601f8201601f19908116603f011681019083821181831017156118cd576118cd611818565b816040528281528a60208487010111156118e657600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561191d57600080fd5b61192683611713565b91506117d360208401611713565b600181811c9082168061194857607f821691505b60208210810361196857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000600182016119e3576119e36119bb565b5060010190565b600083516119fc818460208801611697565b835190830190611a10818360208801611697565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b808201808211156103da576103da6119bb565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611afb816017850160208801611697565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611b2c816028840160208801611697565b01602801949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611b6b908301846116bb565b9695505050505050565b600060208284031215611b8757600080fd5b815161092c81611664565b80820281158282048414176103da576103da6119bb565b634e487b7160e01b600052603260045260246000fd5b600081611bce57611bce6119bb565b50600019019056000000000000000000000000c0939a4ed0129bc5162f6f693935b3f72a46a90d
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061018e5760003560e01c806342842e0e116100de578063a217fddf11610097578063c87b56dd11610071578063c87b56dd14610374578063d547741f14610387578063e985e9c51461039a578063ed79b81a146103ad57600080fd5b8063a217fddf14610346578063a22cb4651461034e578063b88d4fde1461036157600080fd5b806342842e0e146102e957806361bc221a146102fc5780636352211e1461030557806370a082311461031857806391d148541461032b57806395d89b411461033e57600080fd5b806323b872dd1161014b5780632f2ff15d116101255780632f2ff15d1461029d57806336568abe146102b057806338a699a4146102c357806340328664146102d657600080fd5b806323b872dd14610246578063248a9ca314610259578063293c6a3a1461028a57600080fd5b806301ffc9a71461019357806306fdde03146101bb578063081812fc146101d057806308a1eee1146101fb578063095ea7b3146102105780630d067d2214610223575b600080fd5b6101a66101a136600461167a565b6103c0565b60405190151581526020015b60405180910390f35b6101c36103e0565b6040516101b291906116e7565b6101e36101de3660046116fa565b610472565b6040516001600160a01b0390911681526020016101b2565b61020e6102093660046116fa565b610499565b005b61020e61021e36600461172f565b6104d0565b6101a6610231366004611759565b60086020526000908152604090205460ff1681565b61020e610254366004611774565b6105ea565b61027c6102673660046116fa565b60009081526006602052604090206001015490565b6040519081526020016101b2565b61027c6102983660046117b0565b61061b565b61020e6102ab3660046117b0565b610678565b61020e6102be3660046117b0565b61069d565b6101a66102d13660046116fa565b610717565b6101e36102e43660046116fa565b610736565b61020e6102f7366004611774565b610741565b61027c60075481565b6101e36103133660046116fa565b61075c565b61027c610326366004611759565b6107bc565b6101a66103393660046117b0565b610842565b6101c361086d565b61027c600081565b61020e61035c3660046117dc565b61087c565b61020e61036f36600461182e565b610887565b6101c36103823660046116fa565b6108bf565b61020e6103953660046117b0565b610933565b6101a66103a836600461190a565b610958565b61020e6103bb3660046117dc565b6109c6565b60006103cb82610a26565b806103da57506103da82610a26565b92915050565b6060600080546103ef90611934565b80601f016020809104026020016040519081016040528092919081815260200182805461041b90611934565b80156104685780601f1061043d57610100808354040283529160200191610468565b820191906000526020600020905b81548152906001019060200180831161044b57829003601f168201915b5050505050905090565b600061047d82610a4b565b506000908152600460205260409020546001600160a01b031690565b7ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc96104c381610aad565b6104cc82610ab7565b5050565b60006104db8261075c565b9050806001600160a01b0316836001600160a01b03160361054d5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061056957506105698133610958565b6105db5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610544565b6105e58383610b4c565b505050565b6105f43382610bba565b6106105760405162461bcd60e51b81526004016105449061196e565b6105e5838383610c19565b60007ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc961064781610aad565b6007805461066591600061065a836119d1565b909155508590610d7d565b91506106718383610ddb565b5092915050565b60008281526006602052604090206001015461069381610aad565b6105e58383610df5565b6001600160a01b038116331461070d5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610544565b6104cc8282610e7b565b6000818152600260205260408120546001600160a01b031615156103da565b60006103da8261075c565b6105e583838360405180602001604052806000815250610887565b6000818152600260205260408120546001600160a01b0316806103da5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610544565b60006001600160a01b0382166108265760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610544565b506001600160a01b031660009081526003602052604090205490565b60009182526006602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600180546103ef90611934565b6104cc338383610ee2565b6108913383610bba565b6108ad5760405162461bcd60e51b81526004016105449061196e565b6108b984848484610fb0565b50505050565b60606108ca82610a4b565b60006108e160408051602081019091526000815290565b90506000815111610901576040518060200160405280600081525061092c565b8061090b84610fe3565b60405160200161091c9291906119ea565b6040516020818303038152906040525b9392505050565b60008281526006602052604090206001015461094e81610aad565b6105e58383610e7b565b6000816001600160a01b0316836001600160a01b0316148061099257506001600160a01b03821660009081526008602052604090205460ff165b8061092c57506001600160a01b0380841660009081526005602090815260408083209386168352929052205460ff1661092c565b60006109d181610aad565b6001600160a01b038316600081815260086020526040808220805460ff191686151590811790915590519092917f441641ed431b30e3e74612ab3c4e7b668289831b7a8dba39d97dfcc4376c6be191a3505050565b60006001600160e01b03198216637965db0b60e01b14806103da57506103da82611076565b6000818152600260205260409020546001600160a01b0316610aaa5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610544565b50565b610aaa81336110c6565b6000610ac28261075c565b9050610acd8261075c565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610b818261075c565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610bc68361075c565b9050806001600160a01b0316846001600160a01b03161480610bed5750610bed8185610958565b80610c115750836001600160a01b0316610c0684610472565b6001600160a01b0316145b949350505050565b826001600160a01b0316610c2c8261075c565b6001600160a01b031614610c525760405162461bcd60e51b815260040161054490611a19565b6001600160a01b038216610cb45760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610544565b826001600160a01b0316610cc78261075c565b6001600160a01b031614610ced5760405162461bcd60e51b815260040161054490611a19565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000818265ffffffffffff1614610daa57604051631903a4a760e11b815260048101839052602401610544565b65ffffffffffff831615610dd157604051637bb0b62160e01b815260040160405180910390fd5b61092c8284611a5e565b6104cc82826040518060200160405280600081525061111f565b610dff8282610842565b6104cc5760008281526006602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610e373390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610e858282610842565b156104cc5760008281526006602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b816001600160a01b0316836001600160a01b031603610f435760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610544565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610fbb848484610c19565b610fc784848484611152565b6108b95760405162461bcd60e51b815260040161054490611a71565b60606000610ff083611253565b600101905060008167ffffffffffffffff81111561101057611010611818565b6040519080825280601f01601f19166020018201604052801561103a576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461104457509392505050565b60006001600160e01b031982166380ac58cd60e01b14806110a757506001600160e01b03198216635b5e139f60e01b145b806103da57506301ffc9a760e01b6001600160e01b03198316146103da565b6110d08282610842565b6104cc576110dd8161132b565b6110e883602061133d565b6040516020016110f9929190611ac3565b60408051601f198184030181529082905262461bcd60e51b8252610544916004016116e7565b61112983836114d9565b6111366000848484611152565b6105e55760405162461bcd60e51b815260040161054490611a71565b60006001600160a01b0384163b1561124857604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611196903390899088908890600401611b38565b6020604051808303816000875af19250505080156111d1575060408051601f3d908101601f191682019092526111ce91810190611b75565b60015b61122e573d8080156111ff576040519150601f19603f3d011682016040523d82523d6000602084013e611204565b606091505b5080516000036112265760405162461bcd60e51b815260040161054490611a71565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610c11565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106112925772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef810000000083106112be576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106112dc57662386f26fc10000830492506010015b6305f5e10083106112f4576305f5e100830492506008015b612710831061130857612710830492506004015b6064831061131a576064830492506002015b600a83106103da5760010192915050565b60606103da6001600160a01b03831660145b6060600061134c836002611b92565b611357906002611a5e565b67ffffffffffffffff81111561136f5761136f611818565b6040519080825280601f01601f191660200182016040528015611399576020820181803683370190505b509050600360fc1b816000815181106113b4576113b4611ba9565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106113e3576113e3611ba9565b60200101906001600160f81b031916908160001a9053506000611407846002611b92565b611412906001611a5e565b90505b600181111561148a576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061144657611446611ba9565b1a60f81b82828151811061145c5761145c611ba9565b60200101906001600160f81b031916908160001a90535060049490941c9361148381611bbf565b9050611415565b50831561092c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610544565b6001600160a01b03821661152f5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610544565b6000818152600260205260409020546001600160a01b0316156115945760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610544565b6000818152600260205260409020546001600160a01b0316156115f95760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610544565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b031981168114610aaa57600080fd5b60006020828403121561168c57600080fd5b813561092c81611664565b60005b838110156116b257818101518382015260200161169a565b50506000910152565b600081518084526116d3816020860160208601611697565b601f01601f19169290920160200192915050565b60208152600061092c60208301846116bb565b60006020828403121561170c57600080fd5b5035919050565b80356001600160a01b038116811461172a57600080fd5b919050565b6000806040838503121561174257600080fd5b61174b83611713565b946020939093013593505050565b60006020828403121561176b57600080fd5b61092c82611713565b60008060006060848603121561178957600080fd5b61179284611713565b92506117a060208501611713565b9150604084013590509250925092565b600080604083850312156117c357600080fd5b823591506117d360208401611713565b90509250929050565b600080604083850312156117ef57600080fd5b6117f883611713565b91506020830135801515811461180d57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561184457600080fd5b61184d85611713565b935061185b60208601611713565b925060408501359150606085013567ffffffffffffffff8082111561187f57600080fd5b818701915087601f83011261189357600080fd5b8135818111156118a5576118a5611818565b604051601f8201601f19908116603f011681019083821181831017156118cd576118cd611818565b816040528281528a60208487010111156118e657600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561191d57600080fd5b61192683611713565b91506117d360208401611713565b600181811c9082168061194857607f821691505b60208210810361196857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000600182016119e3576119e36119bb565b5060010190565b600083516119fc818460208801611697565b835190830190611a10818360208801611697565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b808201808211156103da576103da6119bb565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611afb816017850160208801611697565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611b2c816028840160208801611697565b01602801949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611b6b908301846116bb565b9695505050505050565b600060208284031215611b8757600080fd5b815161092c81611664565b80820281158282048414176103da576103da6119bb565b634e487b7160e01b600052603260045260246000fd5b600081611bce57611bce6119bb565b50600019019056
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c0939a4ed0129bc5162f6f693935b3f72a46a90d
-----Decoded View---------------
Arg [0] : timelock (address): 0xc0939a4Ed0129bc5162F6f693935B3F72a46a90D
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000c0939a4ed0129bc5162f6f693935b3f72a46a90d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.