Overview
TokenID
32
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
SurrealDisplays
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; import "operator-filter-registry/src/DefaultOperatorFilterer.sol"; import "../lib/ERC721.sol"; import "../lib/Owned.sol"; import "../lib/StringsMinified.sol"; import "../lib/Base64.sol"; ///////////////////////////////////////////////////////////////////////// // // // ███████╗ ██╗ ██╗ ██████╗ ██████╗ ███████╗ █████╗ ██╗ // // ██╔════╝ ██║ ██║ ██╔══██╗ ██╔══██╗ ██╔════╝ ██╔══██╗ ██║ // // ███████╗ ██║ ██║ ██████╔╝ ██████╔╝ █████╗ ███████║ ██║ // // ╚════██║ ██║ ██║ ██╔══██╗ ██╔══██╗ ██╔══╝ ██╔══██║ ██║ // // ███████║ ╚██████╔╝ ██║ ██║ ██║ ██║ ███████╗ ██║ ██║ ███████╗ // // ╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝ ╚═╝ ╚═╝ ╚══════╝ // // // // surr.app // // A magic bag for your web3 loot // // // ///////////////////////////////////////////////////////////////////////// contract SurrealDisplays is DefaultOperatorFilterer, ERC721, Owned { using Strings for uint256; //// UNCHANGEABLE //// uint256[10] _displayTotalSupply; //// PRIVATE STORAGE //// string private _baseURI; string private _imgBaseURI; bool private _offchainMetadata; string[10] private _displayTypes; mapping(bytes32 => bool) private _operatorHashUsed; //// PUBLIC STORAGE //// uint256 public maxSupply = 1111; address public operator; uint256 public totalMinted; uint256[10] public totalMintedByType; mapping(uint256 => uint256) public idToDisplayType; mapping(address => uint256) public mintedTo; //// CONSTRUCTOR //// constructor(string memory imgBaseURI, address operator_, address owner) DefaultOperatorFilterer() ERC721("Displays by Surreal", "DSPM") Owned(owner) { _imgBaseURI = imgBaseURI; operator = operator_; _displayTotalSupply[0] = 99; _displayTotalSupply[1] = 152; _displayTotalSupply[2] = 42; _displayTotalSupply[3] = 88; _displayTotalSupply[4] = 142; _displayTotalSupply[5] = 111; _displayTotalSupply[6] = 77; _displayTotalSupply[7] = 168; _displayTotalSupply[8] = 90; _displayTotalSupply[9] = 142; _displayTypes[0] = "DSP"; _displayTypes[1] = "JX"; _displayTypes[2] = "QAS"; _displayTypes[3] = "OX"; _displayTypes[4] = "VCR"; _displayTypes[5] = "XB"; _displayTypes[6] = "LLP"; _displayTypes[7] = "KD"; _displayTypes[8] = "SMP"; _displayTypes[9] = "TT"; } //// MINTER //// function mint( address to, uint256 displayType, bytes32 operatorMessageHash, bytes memory operatorSignature) payable public { require(displayType < _displayTotalSupply.length, "SurrealDisplays: Invalid displayType"); require(totalMintedByType[displayType] < _displayTotalSupply[displayType], "SurrealDisplays: Exceeds total supply for displayType"); if(msg.sender != owner) { require(mintedTo[to] == 0, "SurrealDisplays: Not eligible for mint"); if(msg.value == 0) { verifyFreeMintSignature(operatorMessageHash, operatorSignature); _operatorHashUsed[operatorMessageHash] = true; } else { require(msg.value == 100000000000000000, "SurrealDisplays: Not enough Eth provided for the mint"); } } uint256 totalMinted_ = totalMinted + 1; totalMintedByType[displayType]++; idToDisplayType[totalMinted_] = displayType; mintedTo[to] = totalMinted_; totalMinted = totalMinted_; _mint(to, totalMinted_); } //// URI GETTER //// function tokenURI(uint256 id) public view override returns (string memory) { require(id > 0 && id <= totalMinted, "SurrealDisplays: Nonexistent Display"); if(_offchainMetadata) return string.concat(_baseURI, id.toString()); uint256 _type = idToDisplayType[id]; bytes memory dataURI = abi.encodePacked( '{', '"name": "', _displayTypes[_type], '-', id.toString(), '", "external_url": "https://www.surr.app"', ', "description": "This module displays key parameters on your journey, such as what loot is in your bag. Also, it gives you early access to the iOS beta and unlocks special features in the app."', ', "image": "', _imgBaseURI, _displayTypes[_type], '.png"', ', "attributes": [{"trait_type": "Type", "value": "', _displayTypes[_type], '"}, {"trait_type": "V", "value": "1"}]', '}' ); return string( abi.encodePacked( "data:application/json;base64,", Base64.encode(dataURI) ) ); } //// OWNER ONLY //// function withdraw() onlyOwner external { (bool sent,) = owner.call{value: address(this).balance}(""); require(sent, "SurrealDisplays: Withdrawal error"); } function updateURI( string memory baseURI, string memory imgBaseURI, bool offchainMetadata ) onlyOwner external { _offchainMetadata = offchainMetadata; _baseURI = baseURI; _imgBaseURI = imgBaseURI; } function updateOperator(address operator_) onlyOwner external { operator = operator_; } //// PRIVATE //// function verifyFreeMintSignature(bytes32 hash, bytes memory signature) private view { require(signature.length == 65, "SurrealDisplays: Invalid signature - invalid signature length"); // Signature reentrancy check require(_operatorHashUsed[hash] == false, "SurrealDisplays: Signature verification fail - hash has been used"); bytes32 r; bytes32 s; uint8 v; assembly { r := mload(add(signature, 32)) s := mload(add(signature, 64)) v := and(mload(add(signature, 65)), 255) } require(uint256(s) <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0, "SurrealDisplays: Invalid signature - invalid S parameter"); require(v == 27 || v == 28, "SurrealDisplays: Invalid signature - invalid V parameter"); require(ecrecover(hash, v, r, s) == operator, "SurrealDisplays: Invalid signature - signer is not Operator"); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (utils/Base64.sol) pragma solidity >=0.8.0; /** * @dev Provides a set of functions to operate with Base64 strings. * * _Available since v4.5._ */ library Base64 { /** * @dev Base64 Encoding/Decoding Table */ string internal constant _TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; /** * @dev Converts a `bytes` to its Bytes64 `string` representation. */ function encode(bytes memory data) internal pure returns (string memory) { /** * Inspired by Brecht Devos (Brechtpd) implementation - MIT licence * https://github.com/Brechtpd/base64/blob/e78d9fd951e7b0977ddca77d92dc85183770daf4/base64.sol */ if (data.length == 0) return ""; // Loads the table into memory string memory table = _TABLE; // Encoding takes 3 bytes chunks of binary data from `bytes` data parameter // and split into 4 numbers of 6 bits. // The final Base64 length should be `bytes` data length multiplied by 4/3 rounded up // - `data.length + 2` -> Round up // - `/ 3` -> Number of 3-bytes chunks // - `4 *` -> 4 characters for each chunk string memory result = new string(4 * ((data.length + 2) / 3)); /// @solidity memory-safe-assembly assembly { // Prepare the lookup table (skip the first "length" byte) let tablePtr := add(table, 1) // Prepare result pointer, jump over length let resultPtr := add(result, 32) // Run over the input, 3 bytes at a time for { let dataPtr := data let endPtr := add(data, mload(data)) } lt(dataPtr, endPtr) { } { // Advance 3 bytes dataPtr := add(dataPtr, 3) let input := mload(dataPtr) // To write each character, shift the 3 bytes (18 bits) chunk // 4 times in blocks of 6 bits for each character (18, 12, 6, 0) // and apply logical AND with 0x3F which is the number of // the previous character in the ASCII table prior to the Base64 Table // The result is then added to the table to get the character to write, // and finally write it in the result pointer but with a left shift // of 256 (1 byte) - 8 (1 ASCII char) = 248 bits mstore8(resultPtr, mload(add(tablePtr, and(shr(18, input), 0x3F)))) resultPtr := add(resultPtr, 1) // Advance mstore8(resultPtr, mload(add(tablePtr, and(shr(12, input), 0x3F)))) resultPtr := add(resultPtr, 1) // Advance mstore8(resultPtr, mload(add(tablePtr, and(shr(6, input), 0x3F)))) resultPtr := add(resultPtr, 1) // Advance mstore8(resultPtr, mload(add(tablePtr, and(input, 0x3F)))) resultPtr := add(resultPtr, 1) // Advance } // When data `bytes` is not exactly 3 bytes long // it is padded with `=` characters at the end switch mod(mload(data), 3) case 1 { mstore8(sub(resultPtr, 1), 0x3d) mstore8(sub(resultPtr, 2), 0x3d) } case 2 { mstore8(sub(resultPtr, 1), 0x3d) } } return result; } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Modern, minimalist, and gas efficient ERC-721 implementation. /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC721.sol) abstract contract ERC721 { /*////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event Transfer(address indexed from, address indexed to, uint256 indexed id); event Approval(address indexed owner, address indexed spender, uint256 indexed id); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /*////////////////////////////////////////////////////////////// METADATA STORAGE/LOGIC //////////////////////////////////////////////////////////////*/ string public name; string public symbol; function tokenURI(uint256 id) public view virtual returns (string memory); /*////////////////////////////////////////////////////////////// ERC721 BALANCE/OWNER STORAGE //////////////////////////////////////////////////////////////*/ mapping(uint256 => address) internal _ownerOf; mapping(address => uint256) internal _balanceOf; function ownerOf(uint256 id) public view virtual returns (address owner) { require((owner = _ownerOf[id]) != address(0), "NOT_MINTED"); } function balanceOf(address owner) public view virtual returns (uint256) { require(owner != address(0), "ZERO_ADDRESS"); return _balanceOf[owner]; } /*////////////////////////////////////////////////////////////// ERC721 APPROVAL STORAGE //////////////////////////////////////////////////////////////*/ mapping(uint256 => address) public getApproved; mapping(address => mapping(address => bool)) public isApprovedForAll; /*////////////////////////////////////////////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////*/ constructor(string memory _name, string memory _symbol) { name = _name; symbol = _symbol; } /*////////////////////////////////////////////////////////////// ERC721 LOGIC //////////////////////////////////////////////////////////////*/ function approve(address spender, uint256 id) public virtual { address owner = _ownerOf[id]; require(msg.sender == owner || isApprovedForAll[owner][msg.sender], "NOT_AUTHORIZED"); getApproved[id] = spender; emit Approval(owner, spender, id); } function setApprovalForAll(address operator, bool approved) public virtual { isApprovedForAll[msg.sender][operator] = approved; emit ApprovalForAll(msg.sender, operator, approved); } function transferFrom( address from, address to, uint256 id ) public virtual { require(from == _ownerOf[id], "WRONG_FROM"); require(to != address(0), "INVALID_RECIPIENT"); require( msg.sender == from || isApprovedForAll[from][msg.sender] || msg.sender == getApproved[id], "NOT_AUTHORIZED" ); // Underflow of the sender's balance is impossible because we check for // ownership above and the recipient's balance can't realistically overflow. unchecked { _balanceOf[from]--; _balanceOf[to]++; } _ownerOf[id] = to; delete getApproved[id]; emit Transfer(from, to, id); } function safeTransferFrom( address from, address to, uint256 id ) public virtual { transferFrom(from, to, id); require( to.code.length == 0 || ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, "") == ERC721TokenReceiver.onERC721Received.selector, "UNSAFE_RECIPIENT" ); } function safeTransferFrom( address from, address to, uint256 id, bytes calldata data ) public virtual { transferFrom(from, to, id); require( to.code.length == 0 || ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, data) == ERC721TokenReceiver.onERC721Received.selector, "UNSAFE_RECIPIENT" ); } /*////////////////////////////////////////////////////////////// ERC165 LOGIC //////////////////////////////////////////////////////////////*/ function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) { return interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165 interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721 interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata } /*////////////////////////////////////////////////////////////// INTERNAL MINT/BURN LOGIC //////////////////////////////////////////////////////////////*/ function _mint(address to, uint256 id) internal virtual { require(to != address(0), "INVALID_RECIPIENT"); require(_ownerOf[id] == address(0), "ALREADY_MINTED"); // Counter overflow is incredibly unrealistic. unchecked { _balanceOf[to]++; } _ownerOf[id] = to; emit Transfer(address(0), to, id); } function _burn(uint256 id) internal virtual { address owner = _ownerOf[id]; require(owner != address(0), "NOT_MINTED"); // Ownership check above ensures no underflow. unchecked { _balanceOf[owner]--; } delete _ownerOf[id]; delete getApproved[id]; emit Transfer(owner, address(0), id); } /*////////////////////////////////////////////////////////////// INTERNAL SAFE MINT LOGIC //////////////////////////////////////////////////////////////*/ function _safeMint(address to, uint256 id) internal virtual { _mint(to, id); require( to.code.length == 0 || ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, "") == ERC721TokenReceiver.onERC721Received.selector, "UNSAFE_RECIPIENT" ); } function _safeMint( address to, uint256 id, bytes memory data ) internal virtual { _mint(to, id); require( to.code.length == 0 || ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, data) == ERC721TokenReceiver.onERC721Received.selector, "UNSAFE_RECIPIENT" ); } } /// @notice A generic interface for a contract which properly accepts ERC721 tokens. /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC721.sol) abstract contract ERC721TokenReceiver { function onERC721Received( address, address, uint256, bytes calldata ) external virtual returns (bytes4) { return ERC721TokenReceiver.onERC721Received.selector; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (utils/math/Math.sol) pragma solidity 0.8.17; /** * @dev Standard math utilities missing in the Solidity language. */ library Math { /** * @dev Return the log in base 10, rounded down, of a positive value. * Returns 0 if given 0. */ function log10(uint256 value) internal pure returns (uint256) { uint256 result = 0; unchecked { if (value >= 10**64) { value /= 10**64; result += 64; } if (value >= 10**32) { value /= 10**32; result += 32; } if (value >= 10**16) { value /= 10**16; result += 16; } if (value >= 10**8) { value /= 10**8; result += 8; } if (value >= 10**4) { value /= 10**4; result += 4; } if (value >= 10**2) { value /= 10**2; result += 2; } if (value >= 10**1) { result += 1; } } return result; } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Simple single owner authorization mixin. /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Owned.sol) abstract contract Owned { /*////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event OwnershipTransferred(address indexed user, address indexed newOwner); /*////////////////////////////////////////////////////////////// OWNERSHIP STORAGE //////////////////////////////////////////////////////////////*/ address public owner; modifier onlyOwner() virtual { require(msg.sender == owner, "UNAUTHORIZED"); _; } /*////////////////////////////////////////////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////*/ constructor(address _owner) { owner = _owner; emit OwnershipTransferred(address(0), _owner); } /*////////////////////////////////////////////////////////////// OWNERSHIP LOGIC //////////////////////////////////////////////////////////////*/ function transferOwnership(address newOwner) public virtual onlyOwner { owner = newOwner; emit OwnershipTransferred(msg.sender, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol) pragma solidity >=0.8.0; import "./MathMinified.sol"; /** * @dev String operations. */ library Strings { bytes16 private constant _SYMBOLS = "0123456789abcdef"; /** * @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-assembly assembly { ptr := add(buffer, add(32, length)) } while (true) { ptr--; /// @solidity memory-safe-assembly assembly { mstore8(ptr, byte(mod(value, 10), _SYMBOLS)) } value /= 10; if (value == 0) break; } return buffer; } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; import {OperatorFilterer} from "./OperatorFilterer.sol"; /** * @title DefaultOperatorFilterer * @notice Inherits from OperatorFilterer and automatically subscribes to the default OpenSea subscription. */ abstract contract DefaultOperatorFilterer is OperatorFilterer { address constant DEFAULT_SUBSCRIPTION = address(0x3cc6CddA760b79bAfa08dF41ECFA224f810dCeB6); constructor() OperatorFilterer(DEFAULT_SUBSCRIPTION, true) {} }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; interface IOperatorFilterRegistry { function isOperatorAllowed(address registrant, address operator) external view returns (bool); function register(address registrant) external; function registerAndSubscribe(address registrant, address subscription) external; function registerAndCopyEntries(address registrant, address registrantToCopy) external; function unregister(address addr) external; function updateOperator(address registrant, address operator, bool filtered) external; function updateOperators(address registrant, address[] calldata operators, bool filtered) external; function updateCodeHash(address registrant, bytes32 codehash, bool filtered) external; function updateCodeHashes(address registrant, bytes32[] calldata codeHashes, bool filtered) external; function subscribe(address registrant, address registrantToSubscribe) external; function unsubscribe(address registrant, bool copyExistingEntries) external; function subscriptionOf(address addr) external returns (address registrant); function subscribers(address registrant) external returns (address[] memory); function subscriberAt(address registrant, uint256 index) external returns (address); function copyEntriesOf(address registrant, address registrantToCopy) external; function isOperatorFiltered(address registrant, address operator) external returns (bool); function isCodeHashOfFiltered(address registrant, address operatorWithCode) external returns (bool); function isCodeHashFiltered(address registrant, bytes32 codeHash) external returns (bool); function filteredOperators(address addr) external returns (address[] memory); function filteredCodeHashes(address addr) external returns (bytes32[] memory); function filteredOperatorAt(address registrant, uint256 index) external returns (address); function filteredCodeHashAt(address registrant, uint256 index) external returns (bytes32); function isRegistered(address addr) external returns (bool); function codeHashOf(address addr) external returns (bytes32); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; import {IOperatorFilterRegistry} from "./IOperatorFilterRegistry.sol"; /** * @title OperatorFilterer * @notice Abstract contract whose constructor automatically registers and optionally subscribes to or copies another * registrant's entries in the OperatorFilterRegistry. * @dev This smart contract is meant to be inherited by token contracts so they can use the following: * - `onlyAllowedOperator` modifier for `transferFrom` and `safeTransferFrom` methods. * - `onlyAllowedOperatorApproval` modifier for `approve` and `setApprovalForAll` methods. */ abstract contract OperatorFilterer { error OperatorNotAllowed(address operator); IOperatorFilterRegistry public constant OPERATOR_FILTER_REGISTRY = IOperatorFilterRegistry(0x000000000000AAeB6D7670E522A718067333cd4E); constructor(address subscriptionOrRegistrantToCopy, bool subscribe) { // If an inheriting token contract is deployed to a network without the registry deployed, the modifier // will not revert, but the contract will need to be registered with the registry once it is deployed in // order for the modifier to filter addresses. if (address(OPERATOR_FILTER_REGISTRY).code.length > 0) { if (subscribe) { OPERATOR_FILTER_REGISTRY.registerAndSubscribe(address(this), subscriptionOrRegistrantToCopy); } else { if (subscriptionOrRegistrantToCopy != address(0)) { OPERATOR_FILTER_REGISTRY.registerAndCopyEntries(address(this), subscriptionOrRegistrantToCopy); } else { OPERATOR_FILTER_REGISTRY.register(address(this)); } } } } modifier onlyAllowedOperator(address from) virtual { // Allow spending tokens from addresses with balance // Note that this still allows listings and marketplaces with escrow to transfer tokens if transferred // from an EOA. if (from != msg.sender) { _checkFilterOperator(msg.sender); } _; } modifier onlyAllowedOperatorApproval(address operator) virtual { _checkFilterOperator(operator); _; } function _checkFilterOperator(address operator) internal view virtual { // Check registry code length to facilitate testing in environments without a deployed registry. if (address(OPERATOR_FILTER_REGISTRY).code.length > 0) { if (!OPERATOR_FILTER_REGISTRY.isOperatorAllowed(address(this), operator)) { revert OperatorNotAllowed(operator); } } } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"imgBaseURI","type":"string"},{"internalType":"address","name":"operator_","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"OperatorNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","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":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"OPERATOR_FILTER_REGISTRY","outputs":[{"internalType":"contract IOperatorFilterRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","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":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"idToDisplayType","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"displayType","type":"uint256"},{"internalType":"bytes32","name":"operatorMessageHash","type":"bytes32"},{"internalType":"bytes","name":"operatorSignature","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mintedTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","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":"id","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":"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":"id","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"totalMintedByType","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator_","type":"address"}],"name":"updateOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"},{"internalType":"string","name":"imgBaseURI","type":"string"},{"internalType":"bool","name":"offchainMetadata","type":"bool"}],"name":"updateURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052610457601f553480156200001757600080fd5b50604051620052703803806200527083398181016040528101906200003d919062000ab0565b806040518060400160405280601381526020017f446973706c617973206279205375727265616c000000000000000000000000008152506040518060400160405280600481526020017f4453504d00000000000000000000000000000000000000000000000000000000815250733cc6cdda760b79bafa08df41ecfa224f810dceb6600160006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115620002b65780156200017c576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16637d3e3dbe30846040518363ffffffff1660e01b81526004016200014292919062000b3c565b600060405180830381600087803b1580156200015d57600080fd5b505af115801562000172573d6000803e3d6000fd5b50505050620002b5565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462000236576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663a0af290330846040518363ffffffff1660e01b8152600401620001fc92919062000b3c565b600060405180830381600087803b1580156200021757600080fd5b505af11580156200022c573d6000803e3d6000fd5b50505050620002b4565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b81526004016200027f919062000b69565b600060405180830381600087803b1580156200029a57600080fd5b505af1158015620002af573d6000803e3d6000fd5b505050505b5b5b50508160009081620002c9919062000dd1565b508060019081620002db919062000dd1565b50505080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35082601290816200038c919062000dd1565b5081602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606360076000600a8110620003e857620003e762000eb8565b5b0181905550609860076001600a811062000407576200040662000eb8565b5b0181905550602a60076002600a811062000426576200042562000eb8565b5b0181905550605860076003600a811062000445576200044462000eb8565b5b0181905550608e60076004600a811062000464576200046362000eb8565b5b0181905550606f60076005600a811062000483576200048262000eb8565b5b0181905550604d60076006600a8110620004a257620004a162000eb8565b5b018190555060a8600780600a8110620004c057620004bf62000eb8565b5b0181905550605a60076008600a8110620004df57620004de62000eb8565b5b0181905550608e60076009600a8110620004fe57620004fd62000eb8565b5b01819055506040518060400160405280600381526020017f445350000000000000000000000000000000000000000000000000000000000081525060146000600a811062000551576200055062000eb8565b5b01908162000560919062000dd1565b506040518060400160405280600281526020017f4a5800000000000000000000000000000000000000000000000000000000000081525060146001600a8110620005af57620005ae62000eb8565b5b019081620005be919062000dd1565b506040518060400160405280600381526020017f514153000000000000000000000000000000000000000000000000000000000081525060146002600a81106200060d576200060c62000eb8565b5b0190816200061c919062000dd1565b506040518060400160405280600281526020017f4f5800000000000000000000000000000000000000000000000000000000000081525060146003600a81106200066b576200066a62000eb8565b5b0190816200067a919062000dd1565b506040518060400160405280600381526020017f564352000000000000000000000000000000000000000000000000000000000081525060146004600a8110620006c957620006c862000eb8565b5b019081620006d8919062000dd1565b506040518060400160405280600281526020017f584200000000000000000000000000000000000000000000000000000000000081525060146005600a811062000727576200072662000eb8565b5b01908162000736919062000dd1565b506040518060400160405280600381526020017f4c4c50000000000000000000000000000000000000000000000000000000000081525060146006600a811062000785576200078462000eb8565b5b01908162000794919062000dd1565b506040518060400160405280600281526020017f4b4400000000000000000000000000000000000000000000000000000000000081525060146007600a8110620007e357620007e262000eb8565b5b019081620007f2919062000dd1565b506040518060400160405280600381526020017f534d50000000000000000000000000000000000000000000000000000000000081525060146008600a811062000841576200084062000eb8565b5b01908162000850919062000dd1565b506040518060400160405280600281526020017f545400000000000000000000000000000000000000000000000000000000000081525060146009600a81106200089f576200089e62000eb8565b5b019081620008ae919062000dd1565b5050505062000ee7565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200092182620008d6565b810181811067ffffffffffffffff82111715620009435762000942620008e7565b5b80604052505050565b600062000958620008b8565b905062000966828262000916565b919050565b600067ffffffffffffffff821115620009895762000988620008e7565b5b6200099482620008d6565b9050602081019050919050565b60005b83811015620009c1578082015181840152602081019050620009a4565b60008484015250505050565b6000620009e4620009de846200096b565b6200094c565b90508281526020810184848401111562000a035762000a02620008d1565b5b62000a10848285620009a1565b509392505050565b600082601f83011262000a305762000a2f620008cc565b5b815162000a42848260208601620009cd565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a788262000a4b565b9050919050565b62000a8a8162000a6b565b811462000a9657600080fd5b50565b60008151905062000aaa8162000a7f565b92915050565b60008060006060848603121562000acc5762000acb620008c2565b5b600084015167ffffffffffffffff81111562000aed5762000aec620008c7565b5b62000afb8682870162000a18565b935050602062000b0e8682870162000a99565b925050604062000b218682870162000a99565b9150509250925092565b62000b368162000a6b565b82525050565b600060408201905062000b53600083018562000b2b565b62000b62602083018462000b2b565b9392505050565b600060208201905062000b80600083018462000b2b565b92915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bd957607f821691505b60208210810362000bef5762000bee62000b91565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c597fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c1a565b62000c65868362000c1a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000cb262000cac62000ca68462000c7d565b62000c87565b62000c7d565b9050919050565b6000819050919050565b62000cce8362000c91565b62000ce662000cdd8262000cb9565b84845462000c27565b825550505050565b600090565b62000cfd62000cee565b62000d0a81848462000cc3565b505050565b5b8181101562000d325762000d2660008262000cf3565b60018101905062000d10565b5050565b601f82111562000d815762000d4b8162000bf5565b62000d568462000c0a565b8101602085101562000d66578190505b62000d7e62000d758562000c0a565b83018262000d0f565b50505b505050565b600082821c905092915050565b600062000da66000198460080262000d86565b1980831691505092915050565b600062000dc1838362000d93565b9150826002028217905092915050565b62000ddc8262000b86565b67ffffffffffffffff81111562000df85762000df7620008e7565b5b62000e04825462000bc0565b62000e1182828562000d36565b600060209050601f83116001811462000e49576000841562000e34578287015190505b62000e40858262000db3565b86555062000eb0565b601f19841662000e598662000bf5565b60005b8281101562000e835784890151825560018201915060208501945060208101905062000e5c565b8683101562000ea3578489015162000e9f601f89168262000d93565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6143798062000ef76000396000f3fe6080604052600436106101815760003560e01c806370a08231116100d1578063a2309ff81161008a578063c87b56dd11610064578063c87b56dd14610585578063d5abeb01146105c2578063e985e9c5146105ed578063f2fde38b1461062a57610181565b8063a2309ff814610508578063ac7475ed14610533578063b88d4fde1461055c57610181565b806370a08231146103f35780638da5cb5b146104305780639460650f1461045b57806395d89b411461049857806396d66de0146104c3578063a22cb465146104df57610181565b806323b872dd1161013e57806342842e0e1161011857806342842e0e14610325578063570ca7351461034e5780636352211e146103795780636e661b4b146103b657610181565b806323b872dd146102ba5780633ccfd60b146102e357806341f43434146102fa57610181565b806301ffc9a71461018657806306fdde03146101c3578063081812fc146101ee578063095ea7b31461022b578063118033bc146102545780631623961214610291575b600080fd5b34801561019257600080fd5b506101ad60048036038101906101a8919061248c565b610653565b6040516101ba91906124d4565b60405180910390f35b3480156101cf57600080fd5b506101d86106e5565b6040516101e5919061257f565b60405180910390f35b3480156101fa57600080fd5b50610215600480360381019061021091906125d7565b610773565b6040516102229190612645565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d919061268c565b6107a6565b005b34801561026057600080fd5b5061027b600480360381019061027691906126cc565b61098f565b6040516102889190612708565b60405180910390f35b34801561029d57600080fd5b506102b860048036038101906102b39190612884565b6109a7565b005b3480156102c657600080fd5b506102e160048036038101906102dc919061290f565b610a76565b005b3480156102ef57600080fd5b506102f8610e75565b005b34801561030657600080fd5b5061030f610fd6565b60405161031c91906129c1565b60405180910390f35b34801561033157600080fd5b5061034c6004803603810190610347919061290f565b610fe8565b005b34801561035a57600080fd5b50610363611120565b6040516103709190612645565b60405180910390f35b34801561038557600080fd5b506103a0600480360381019061039b91906125d7565b611146565b6040516103ad9190612645565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d891906125d7565b6111f1565b6040516103ea9190612708565b60405180910390f35b3480156103ff57600080fd5b5061041a600480360381019061041591906126cc565b611209565b6040516104279190612708565b60405180910390f35b34801561043c57600080fd5b506104456112c0565b6040516104529190612645565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d91906125d7565b6112e6565b60405161048f9190612708565b60405180910390f35b3480156104a457600080fd5b506104ad611301565b6040516104ba919061257f565b60405180910390f35b6104dd60048036038101906104d89190612ab3565b61138f565b005b3480156104eb57600080fd5b5061050660048036038101906105019190612b36565b611656565b005b34801561051457600080fd5b5061051d611753565b60405161052a9190612708565b60405180910390f35b34801561053f57600080fd5b5061055a600480360381019061055591906126cc565b611759565b005b34801561056857600080fd5b50610583600480360381019061057e9190612bd6565b61182d565b005b34801561059157600080fd5b506105ac60048036038101906105a791906125d7565b61196b565b6040516105b9919061257f565b60405180910390f35b3480156105ce57600080fd5b506105d7611ac0565b6040516105e49190612708565b60405180910390f35b3480156105f957600080fd5b50610614600480360381019061060f9190612c5e565b611ac6565b60405161062191906124d4565b60405180910390f35b34801561063657600080fd5b50610651600480360381019061064c91906126cc565b611af5565b005b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106ae57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106de5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600080546106f290612ccd565b80601f016020809104026020016040519081016040528092919081815260200182805461071e90612ccd565b801561076b5780601f106107405761010080835404028352916020019161076b565b820191906000526020600020905b81548152906001019060200180831161074e57829003601f168201915b505050505081565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061089e5750600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6108dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d490612d4a565b60405180910390fd5b826004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b602d6020528060005260406000206000915090505481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2e90612db6565b60405180910390fd5b80601360006101000a81548160ff0219169083151502179055508260119081610a609190612f78565b508160129081610a709190612f78565b50505050565b6002600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610b17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0e90613096565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7d90613102565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610c465750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80610caf57506004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce590612d4a565b60405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efc90612db6565b60405180910390fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610f4d90613153565b60006040518083038185875af1925050503d8060008114610f8a576040519150601f19603f3d011682016040523d82523d6000602084013e610f8f565b606091505b5050905080610fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fca906131da565b60405180910390fd5b50565b6daaeb6d7670e522a718067333cd4e81565b610ff3838383610a76565b60008273ffffffffffffffffffffffffffffffffffffffff163b14806110dc575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b81526004016110789392919061322e565b6020604051808303816000875af1158015611097573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110bb919061328d565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b61111b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111290613306565b60405180910390fd5b505050565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff16036111ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e390613372565b60405180910390fd5b919050565b602c6020528060005260406000206000915090505481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611279576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611270906133de565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602281600a81106112f657600080fd5b016000915090505481565b6001805461130e90612ccd565b80601f016020809104026020016040519081016040528092919081815260200182805461133a90612ccd565b80156113875780601f1061135c57610100808354040283529160200191611387565b820191906000526020600020905b81548152906001019060200180831161136a57829003601f168201915b505050505081565b600a83106113d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c990613470565b60405180910390fd5b600783600a81106113e6576113e5613490565b5b0154602284600a81106113fc576113fb613490565b5b01541061143e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143590613531565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115a4576000602d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150c906135c3565b60405180910390fd5b60003403611558576115278282611c23565b6001601e600084815260200190815260200160002060006101000a81548160ff0219169083151502179055506115a3565b67016345785d8a000034146115a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159990613655565b60405180910390fd5b5b5b600060016021546115b591906136a4565b9050602284600a81106115cb576115ca613490565b5b0160008154809291906115dd906136d8565b919050555083602c60008381526020019081526020016000208190555080602d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060218190555061164f8582611e8a565b5050505050565b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161174791906124d4565b60405180910390a35050565b60215481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e090612db6565b60405180910390fd5b80602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611838858585610a76565b60008473ffffffffffffffffffffffffffffffffffffffff163b1480611925575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b81526004016118c195949392919061374d565b6020604051808303816000875af11580156118e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611904919061328d565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b611964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195b90613306565b60405180910390fd5b5050505050565b606060008211801561197f57506021548211155b6119be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b59061380d565b60405180910390fd5b601360009054906101000a900460ff1615611a055760116119de8361209c565b6040516020016119ef9291906138ec565b6040516020818303038152906040529050611abb565b6000602c60008481526020019081526020016000205490506000601482600a8110611a3357611a32613490565b5b01611a3d8561209c565b6012601485600a8110611a5357611a52613490565b5b01601486600a8110611a6857611a67613490565b5b01604051602001611a7d959493929190613d5e565b6040516020818303038152906040529050611a978161216a565b604051602001611aa79190613e63565b604051602081830303815290604052925050505b919050565b601f5481565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7c90612db6565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6041815114611c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5e90613ef7565b60405180910390fd5b60001515601e600084815260200190815260200160002060009054906101000a900460ff16151514611cce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc590613faf565b60405180910390fd5b6000806000602084015192506040840151915060ff60418501511690507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c1115611d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4890614041565b60405180910390fd5b601b8160ff161480611d665750601c8160ff16145b611da5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9c906140d3565b60405180910390fd5b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660018683868660405160008152602001604052604051611e01949392919061411e565b6020604051602081039080840390855afa158015611e23573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff1614611e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7a906141d5565b60405180910390fd5b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef090613102565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9290614241565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6060600060016120ab846122cd565b01905060008167ffffffffffffffff8111156120ca576120c961272d565b5b6040519080825280601f01601f1916602001820160405280156120fc5781602001600182028036833780820191505090505b509050600082602001820190505b60011561215f578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161215357612152614261565b5b0494506000850361210a575b819350505050919050565b6060600082510361218c576040518060200160405280600081525090506122c8565b600060405180606001604052806040815260200161430460409139905060006003600285516121bb91906136a4565b6121c59190614290565b60046121d191906142c1565b67ffffffffffffffff8111156121ea576121e961272d565b5b6040519080825280601f01601f19166020018201604052801561221c5781602001600182028036833780820191505090505b509050600182016020820185865187015b80821015612288576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f811685015184536001840193505061222d565b50506003865106600181146122a457600281146122b7576122bf565b603d6001830353603d60028303536122bf565b603d60018303535b50505080925050505b919050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061232b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161232157612320614261565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612368576d04ee2d6d415b85acef8100000000838161235e5761235d614261565b5b0492506020810190505b662386f26fc10000831061239757662386f26fc10000838161238d5761238c614261565b5b0492506010810190505b6305f5e10083106123c0576305f5e10083816123b6576123b5614261565b5b0492506008810190505b61271083106123e55761271083816123db576123da614261565b5b0492506004810190505b6064831061240857606483816123fe576123fd614261565b5b0492506002810190505b600a8310612417576001810190505b80915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61246981612434565b811461247457600080fd5b50565b60008135905061248681612460565b92915050565b6000602082840312156124a2576124a161242a565b5b60006124b084828501612477565b91505092915050565b60008115159050919050565b6124ce816124b9565b82525050565b60006020820190506124e960008301846124c5565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561252957808201518184015260208101905061250e565b60008484015250505050565b6000601f19601f8301169050919050565b6000612551826124ef565b61255b81856124fa565b935061256b81856020860161250b565b61257481612535565b840191505092915050565b600060208201905081810360008301526125998184612546565b905092915050565b6000819050919050565b6125b4816125a1565b81146125bf57600080fd5b50565b6000813590506125d1816125ab565b92915050565b6000602082840312156125ed576125ec61242a565b5b60006125fb848285016125c2565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061262f82612604565b9050919050565b61263f81612624565b82525050565b600060208201905061265a6000830184612636565b92915050565b61266981612624565b811461267457600080fd5b50565b60008135905061268681612660565b92915050565b600080604083850312156126a3576126a261242a565b5b60006126b185828601612677565b92505060206126c2858286016125c2565b9150509250929050565b6000602082840312156126e2576126e161242a565b5b60006126f084828501612677565b91505092915050565b612702816125a1565b82525050565b600060208201905061271d60008301846126f9565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61276582612535565b810181811067ffffffffffffffff821117156127845761278361272d565b5b80604052505050565b6000612797612420565b90506127a3828261275c565b919050565b600067ffffffffffffffff8211156127c3576127c261272d565b5b6127cc82612535565b9050602081019050919050565b82818337600083830152505050565b60006127fb6127f6846127a8565b61278d565b90508281526020810184848401111561281757612816612728565b5b6128228482856127d9565b509392505050565b600082601f83011261283f5761283e612723565b5b813561284f8482602086016127e8565b91505092915050565b612861816124b9565b811461286c57600080fd5b50565b60008135905061287e81612858565b92915050565b60008060006060848603121561289d5761289c61242a565b5b600084013567ffffffffffffffff8111156128bb576128ba61242f565b5b6128c78682870161282a565b935050602084013567ffffffffffffffff8111156128e8576128e761242f565b5b6128f48682870161282a565b92505060406129058682870161286f565b9150509250925092565b6000806000606084860312156129285761292761242a565b5b600061293686828701612677565b935050602061294786828701612677565b9250506040612958868287016125c2565b9150509250925092565b6000819050919050565b600061298761298261297d84612604565b612962565b612604565b9050919050565b60006129998261296c565b9050919050565b60006129ab8261298e565b9050919050565b6129bb816129a0565b82525050565b60006020820190506129d660008301846129b2565b92915050565b6000819050919050565b6129ef816129dc565b81146129fa57600080fd5b50565b600081359050612a0c816129e6565b92915050565b600067ffffffffffffffff821115612a2d57612a2c61272d565b5b612a3682612535565b9050602081019050919050565b6000612a56612a5184612a12565b61278d565b905082815260208101848484011115612a7257612a71612728565b5b612a7d8482856127d9565b509392505050565b600082601f830112612a9a57612a99612723565b5b8135612aaa848260208601612a43565b91505092915050565b60008060008060808587031215612acd57612acc61242a565b5b6000612adb87828801612677565b9450506020612aec878288016125c2565b9350506040612afd878288016129fd565b925050606085013567ffffffffffffffff811115612b1e57612b1d61242f565b5b612b2a87828801612a85565b91505092959194509250565b60008060408385031215612b4d57612b4c61242a565b5b6000612b5b85828601612677565b9250506020612b6c8582860161286f565b9150509250929050565b600080fd5b600080fd5b60008083601f840112612b9657612b95612723565b5b8235905067ffffffffffffffff811115612bb357612bb2612b76565b5b602083019150836001820283011115612bcf57612bce612b7b565b5b9250929050565b600080600080600060808688031215612bf257612bf161242a565b5b6000612c0088828901612677565b9550506020612c1188828901612677565b9450506040612c22888289016125c2565b935050606086013567ffffffffffffffff811115612c4357612c4261242f565b5b612c4f88828901612b80565b92509250509295509295909350565b60008060408385031215612c7557612c7461242a565b5b6000612c8385828601612677565b9250506020612c9485828601612677565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612ce557607f821691505b602082108103612cf857612cf7612c9e565b5b50919050565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b6000612d34600e836124fa565b9150612d3f82612cfe565b602082019050919050565b60006020820190508181036000830152612d6381612d27565b9050919050565b7f554e415554484f52495a45440000000000000000000000000000000000000000600082015250565b6000612da0600c836124fa565b9150612dab82612d6a565b602082019050919050565b60006020820190508181036000830152612dcf81612d93565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612e387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612dfb565b612e428683612dfb565b95508019841693508086168417925050509392505050565b6000612e75612e70612e6b846125a1565b612962565b6125a1565b9050919050565b6000819050919050565b612e8f83612e5a565b612ea3612e9b82612e7c565b848454612e08565b825550505050565b600090565b612eb8612eab565b612ec3818484612e86565b505050565b5b81811015612ee757612edc600082612eb0565b600181019050612ec9565b5050565b601f821115612f2c57612efd81612dd6565b612f0684612deb565b81016020851015612f15578190505b612f29612f2185612deb565b830182612ec8565b50505b505050565b600082821c905092915050565b6000612f4f60001984600802612f31565b1980831691505092915050565b6000612f688383612f3e565b9150826002028217905092915050565b612f81826124ef565b67ffffffffffffffff811115612f9a57612f9961272d565b5b612fa48254612ccd565b612faf828285612eeb565b600060209050601f831160018114612fe25760008415612fd0578287015190505b612fda8582612f5c565b865550613042565b601f198416612ff086612dd6565b60005b8281101561301857848901518255600182019150602085019450602081019050612ff3565b868310156130355784890151613031601f891682612f3e565b8355505b6001600288020188555050505b505050505050565b7f57524f4e475f46524f4d00000000000000000000000000000000000000000000600082015250565b6000613080600a836124fa565b915061308b8261304a565b602082019050919050565b600060208201905081810360008301526130af81613073565b9050919050565b7f494e56414c49445f524543495049454e54000000000000000000000000000000600082015250565b60006130ec6011836124fa565b91506130f7826130b6565b602082019050919050565b6000602082019050818103600083015261311b816130df565b9050919050565b600081905092915050565b50565b600061313d600083613122565b91506131488261312d565b600082019050919050565b600061315e82613130565b9150819050919050565b7f5375727265616c446973706c6179733a205769746864726177616c206572726f60008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006131c46021836124fa565b91506131cf82613168565b604082019050919050565b600060208201905081810360008301526131f3816131b7565b9050919050565b600082825260208201905092915050565b60006132186000836131fa565b91506132238261312d565b600082019050919050565b60006080820190506132436000830186612636565b6132506020830185612636565b61325d60408301846126f9565b818103606083015261326e8161320b565b9050949350505050565b60008151905061328781612460565b92915050565b6000602082840312156132a3576132a261242a565b5b60006132b184828501613278565b91505092915050565b7f554e534146455f524543495049454e5400000000000000000000000000000000600082015250565b60006132f06010836124fa565b91506132fb826132ba565b602082019050919050565b6000602082019050818103600083015261331f816132e3565b9050919050565b7f4e4f545f4d494e54454400000000000000000000000000000000000000000000600082015250565b600061335c600a836124fa565b915061336782613326565b602082019050919050565b6000602082019050818103600083015261338b8161334f565b9050919050565b7f5a45524f5f414444524553530000000000000000000000000000000000000000600082015250565b60006133c8600c836124fa565b91506133d382613392565b602082019050919050565b600060208201905081810360008301526133f7816133bb565b9050919050565b7f5375727265616c446973706c6179733a20496e76616c696420646973706c617960008201527f5479706500000000000000000000000000000000000000000000000000000000602082015250565b600061345a6024836124fa565b9150613465826133fe565b604082019050919050565b600060208201905081810360008301526134898161344d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f5375727265616c446973706c6179733a204578636565647320746f74616c207360008201527f7570706c7920666f7220646973706c6179547970650000000000000000000000602082015250565b600061351b6035836124fa565b9150613526826134bf565b604082019050919050565b6000602082019050818103600083015261354a8161350e565b9050919050565b7f5375727265616c446973706c6179733a204e6f7420656c696769626c6520666f60008201527f72206d696e740000000000000000000000000000000000000000000000000000602082015250565b60006135ad6026836124fa565b91506135b882613551565b604082019050919050565b600060208201905081810360008301526135dc816135a0565b9050919050565b7f5375727265616c446973706c6179733a204e6f7420656e6f756768204574682060008201527f70726f766964656420666f7220746865206d696e740000000000000000000000602082015250565b600061363f6035836124fa565b915061364a826135e3565b604082019050919050565b6000602082019050818103600083015261366e81613632565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006136af826125a1565b91506136ba836125a1565b92508282019050808211156136d2576136d1613675565b5b92915050565b60006136e3826125a1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361371557613714613675565b5b600182019050919050565b600061372c83856131fa565b93506137398385846127d9565b61374283612535565b840190509392505050565b60006080820190506137626000830188612636565b61376f6020830187612636565b61377c60408301866126f9565b818103606083015261378f818486613720565b90509695505050505050565b7f5375727265616c446973706c6179733a204e6f6e6578697374656e742044697360008201527f706c617900000000000000000000000000000000000000000000000000000000602082015250565b60006137f76024836124fa565b91506138028261379b565b604082019050919050565b60006020820190508181036000830152613826816137ea565b9050919050565b600081905092915050565b6000815461384581612ccd565b61384f818661382d565b9450600182166000811461386a576001811461387f576138b2565b60ff19831686528115158202860193506138b2565b61388885612dd6565b60005b838110156138aa5781548189015260018201915060208101905061388b565b838801955050505b50505092915050565b60006138c6826124ef565b6138d0818561382d565b93506138e081856020860161250b565b80840191505092915050565b60006138f88285613838565b915061390482846138bb565b91508190509392505050565b7f7b00000000000000000000000000000000000000000000000000000000000000600082015250565b600061394660018361382d565b915061395182613910565b600182019050919050565b7f226e616d65223a20220000000000000000000000000000000000000000000000600082015250565b600061399260098361382d565b915061399d8261395c565b600982019050919050565b7f2d00000000000000000000000000000000000000000000000000000000000000600082015250565b60006139de60018361382d565b91506139e9826139a8565b600182019050919050565b7f222c202265787465726e616c5f75726c223a202268747470733a2f2f7777772e60008201527f737572722e617070220000000000000000000000000000000000000000000000602082015250565b6000613a5060298361382d565b9150613a5b826139f4565b602982019050919050565b7f2c20226465736372697074696f6e223a202254686973206d6f64756c6520646960008201527f73706c617973206b657920706172616d6574657273206f6e20796f7572206a6f60208201527f75726e65792c20737563682061732077686174206c6f6f7420697320696e207960408201527f6f7572206261672e20416c736f2c20697420676976657320796f75206561726c60608201527f792061636365737320746f2074686520694f53206265746120616e6420756e6c60808201527f6f636b73207370656369616c20666561747572657320696e207468652061707060a08201527f2e2200000000000000000000000000000000000000000000000000000000000060c082015250565b6000613b8060c28361382d565b9150613b8b82613a66565b60c282019050919050565b7f2c2022696d616765223a20220000000000000000000000000000000000000000600082015250565b6000613bcc600c8361382d565b9150613bd782613b96565b600c82019050919050565b7f2e706e6722000000000000000000000000000000000000000000000000000000600082015250565b6000613c1860058361382d565b9150613c2382613be2565b600582019050919050565b7f2c202261747472696275746573223a205b7b2274726169745f74797065223a2060008201527f2254797065222c202276616c7565223a20220000000000000000000000000000602082015250565b6000613c8a60328361382d565b9150613c9582613c2e565b603282019050919050565b7f227d2c207b2274726169745f74797065223a202256222c202276616c7565223a60008201527f202231227d5d0000000000000000000000000000000000000000000000000000602082015250565b6000613cfc60268361382d565b9150613d0782613ca0565b602682019050919050565b7f7d00000000000000000000000000000000000000000000000000000000000000600082015250565b6000613d4860018361382d565b9150613d5382613d12565b600182019050919050565b6000613d6982613939565b9150613d7482613985565b9150613d808288613838565b9150613d8b826139d1565b9150613d9782876138bb565b9150613da282613a43565b9150613dad82613b73565b9150613db882613bbf565b9150613dc48286613838565b9150613dd08285613838565b9150613ddb82613c0b565b9150613de682613c7d565b9150613df28284613838565b9150613dfd82613cef565b9150613e0882613d3b565b91508190509695505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b6000613e4d601d8361382d565b9150613e5882613e17565b601d82019050919050565b6000613e6e82613e40565b9150613e7a82846138bb565b915081905092915050565b7f5375727265616c446973706c6179733a20496e76616c6964207369676e61747560008201527f7265202d20696e76616c6964207369676e6174757265206c656e677468000000602082015250565b6000613ee1603d836124fa565b9150613eec82613e85565b604082019050919050565b60006020820190508181036000830152613f1081613ed4565b9050919050565b7f5375727265616c446973706c6179733a205369676e617475726520766572696660008201527f69636174696f6e206661696c202d206861736820686173206265656e2075736560208201527f6400000000000000000000000000000000000000000000000000000000000000604082015250565b6000613f996041836124fa565b9150613fa482613f17565b606082019050919050565b60006020820190508181036000830152613fc881613f8c565b9050919050565b7f5375727265616c446973706c6179733a20496e76616c6964207369676e61747560008201527f7265202d20696e76616c6964205320706172616d657465720000000000000000602082015250565b600061402b6038836124fa565b915061403682613fcf565b604082019050919050565b6000602082019050818103600083015261405a8161401e565b9050919050565b7f5375727265616c446973706c6179733a20496e76616c6964207369676e61747560008201527f7265202d20696e76616c6964205620706172616d657465720000000000000000602082015250565b60006140bd6038836124fa565b91506140c882614061565b604082019050919050565b600060208201905081810360008301526140ec816140b0565b9050919050565b6140fc816129dc565b82525050565b600060ff82169050919050565b61411881614102565b82525050565b600060808201905061413360008301876140f3565b614140602083018661410f565b61414d60408301856140f3565b61415a60608301846140f3565b95945050505050565b7f5375727265616c446973706c6179733a20496e76616c6964207369676e61747560008201527f7265202d207369676e6572206973206e6f74204f70657261746f720000000000602082015250565b60006141bf603b836124fa565b91506141ca82614163565b604082019050919050565b600060208201905081810360008301526141ee816141b2565b9050919050565b7f414c52454144595f4d494e544544000000000000000000000000000000000000600082015250565b600061422b600e836124fa565b9150614236826141f5565b602082019050919050565b6000602082019050818103600083015261425a8161421e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061429b826125a1565b91506142a6836125a1565b9250826142b6576142b5614261565b5b828204905092915050565b60006142cc826125a1565b91506142d7836125a1565b92508282026142e5816125a1565b915082820484148315176142fc576142fb613675565b5b509291505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220d4d87d5f18f379dc21dc1972bfb78c5a48f7912dfb1ec9961c09260b881c7b4064736f6c634300081100330000000000000000000000000000000000000000000000000000000000000060000000000000000000000000df7a0f84fc9fe0c7a0d8500a62d592fa5d3e118d000000000000000000000000ffffff55fc62fac0f1cdb23628cc9c367a7f10900000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d515778614c4a57535a4771424d427a625148355164414b4a445333754874767469585443376e353136316a472f00000000000000000000
Deployed Bytecode
0x6080604052600436106101815760003560e01c806370a08231116100d1578063a2309ff81161008a578063c87b56dd11610064578063c87b56dd14610585578063d5abeb01146105c2578063e985e9c5146105ed578063f2fde38b1461062a57610181565b8063a2309ff814610508578063ac7475ed14610533578063b88d4fde1461055c57610181565b806370a08231146103f35780638da5cb5b146104305780639460650f1461045b57806395d89b411461049857806396d66de0146104c3578063a22cb465146104df57610181565b806323b872dd1161013e57806342842e0e1161011857806342842e0e14610325578063570ca7351461034e5780636352211e146103795780636e661b4b146103b657610181565b806323b872dd146102ba5780633ccfd60b146102e357806341f43434146102fa57610181565b806301ffc9a71461018657806306fdde03146101c3578063081812fc146101ee578063095ea7b31461022b578063118033bc146102545780631623961214610291575b600080fd5b34801561019257600080fd5b506101ad60048036038101906101a8919061248c565b610653565b6040516101ba91906124d4565b60405180910390f35b3480156101cf57600080fd5b506101d86106e5565b6040516101e5919061257f565b60405180910390f35b3480156101fa57600080fd5b50610215600480360381019061021091906125d7565b610773565b6040516102229190612645565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d919061268c565b6107a6565b005b34801561026057600080fd5b5061027b600480360381019061027691906126cc565b61098f565b6040516102889190612708565b60405180910390f35b34801561029d57600080fd5b506102b860048036038101906102b39190612884565b6109a7565b005b3480156102c657600080fd5b506102e160048036038101906102dc919061290f565b610a76565b005b3480156102ef57600080fd5b506102f8610e75565b005b34801561030657600080fd5b5061030f610fd6565b60405161031c91906129c1565b60405180910390f35b34801561033157600080fd5b5061034c6004803603810190610347919061290f565b610fe8565b005b34801561035a57600080fd5b50610363611120565b6040516103709190612645565b60405180910390f35b34801561038557600080fd5b506103a0600480360381019061039b91906125d7565b611146565b6040516103ad9190612645565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d891906125d7565b6111f1565b6040516103ea9190612708565b60405180910390f35b3480156103ff57600080fd5b5061041a600480360381019061041591906126cc565b611209565b6040516104279190612708565b60405180910390f35b34801561043c57600080fd5b506104456112c0565b6040516104529190612645565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d91906125d7565b6112e6565b60405161048f9190612708565b60405180910390f35b3480156104a457600080fd5b506104ad611301565b6040516104ba919061257f565b60405180910390f35b6104dd60048036038101906104d89190612ab3565b61138f565b005b3480156104eb57600080fd5b5061050660048036038101906105019190612b36565b611656565b005b34801561051457600080fd5b5061051d611753565b60405161052a9190612708565b60405180910390f35b34801561053f57600080fd5b5061055a600480360381019061055591906126cc565b611759565b005b34801561056857600080fd5b50610583600480360381019061057e9190612bd6565b61182d565b005b34801561059157600080fd5b506105ac60048036038101906105a791906125d7565b61196b565b6040516105b9919061257f565b60405180910390f35b3480156105ce57600080fd5b506105d7611ac0565b6040516105e49190612708565b60405180910390f35b3480156105f957600080fd5b50610614600480360381019061060f9190612c5e565b611ac6565b60405161062191906124d4565b60405180910390f35b34801561063657600080fd5b50610651600480360381019061064c91906126cc565b611af5565b005b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106ae57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106de5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600080546106f290612ccd565b80601f016020809104026020016040519081016040528092919081815260200182805461071e90612ccd565b801561076b5780601f106107405761010080835404028352916020019161076b565b820191906000526020600020905b81548152906001019060200180831161074e57829003601f168201915b505050505081565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061089e5750600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6108dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d490612d4a565b60405180910390fd5b826004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b602d6020528060005260406000206000915090505481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2e90612db6565b60405180910390fd5b80601360006101000a81548160ff0219169083151502179055508260119081610a609190612f78565b508160129081610a709190612f78565b50505050565b6002600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610b17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0e90613096565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7d90613102565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610c465750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80610caf57506004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce590612d4a565b60405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efc90612db6565b60405180910390fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610f4d90613153565b60006040518083038185875af1925050503d8060008114610f8a576040519150601f19603f3d011682016040523d82523d6000602084013e610f8f565b606091505b5050905080610fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fca906131da565b60405180910390fd5b50565b6daaeb6d7670e522a718067333cd4e81565b610ff3838383610a76565b60008273ffffffffffffffffffffffffffffffffffffffff163b14806110dc575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b81526004016110789392919061322e565b6020604051808303816000875af1158015611097573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110bb919061328d565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b61111b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111290613306565b60405180910390fd5b505050565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff16036111ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e390613372565b60405180910390fd5b919050565b602c6020528060005260406000206000915090505481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611279576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611270906133de565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602281600a81106112f657600080fd5b016000915090505481565b6001805461130e90612ccd565b80601f016020809104026020016040519081016040528092919081815260200182805461133a90612ccd565b80156113875780601f1061135c57610100808354040283529160200191611387565b820191906000526020600020905b81548152906001019060200180831161136a57829003601f168201915b505050505081565b600a83106113d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c990613470565b60405180910390fd5b600783600a81106113e6576113e5613490565b5b0154602284600a81106113fc576113fb613490565b5b01541061143e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143590613531565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115a4576000602d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150c906135c3565b60405180910390fd5b60003403611558576115278282611c23565b6001601e600084815260200190815260200160002060006101000a81548160ff0219169083151502179055506115a3565b67016345785d8a000034146115a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159990613655565b60405180910390fd5b5b5b600060016021546115b591906136a4565b9050602284600a81106115cb576115ca613490565b5b0160008154809291906115dd906136d8565b919050555083602c60008381526020019081526020016000208190555080602d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060218190555061164f8582611e8a565b5050505050565b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161174791906124d4565b60405180910390a35050565b60215481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e090612db6565b60405180910390fd5b80602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611838858585610a76565b60008473ffffffffffffffffffffffffffffffffffffffff163b1480611925575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b81526004016118c195949392919061374d565b6020604051808303816000875af11580156118e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611904919061328d565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b611964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195b90613306565b60405180910390fd5b5050505050565b606060008211801561197f57506021548211155b6119be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b59061380d565b60405180910390fd5b601360009054906101000a900460ff1615611a055760116119de8361209c565b6040516020016119ef9291906138ec565b6040516020818303038152906040529050611abb565b6000602c60008481526020019081526020016000205490506000601482600a8110611a3357611a32613490565b5b01611a3d8561209c565b6012601485600a8110611a5357611a52613490565b5b01601486600a8110611a6857611a67613490565b5b01604051602001611a7d959493929190613d5e565b6040516020818303038152906040529050611a978161216a565b604051602001611aa79190613e63565b604051602081830303815290604052925050505b919050565b601f5481565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7c90612db6565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6041815114611c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5e90613ef7565b60405180910390fd5b60001515601e600084815260200190815260200160002060009054906101000a900460ff16151514611cce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc590613faf565b60405180910390fd5b6000806000602084015192506040840151915060ff60418501511690507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c1115611d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4890614041565b60405180910390fd5b601b8160ff161480611d665750601c8160ff16145b611da5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9c906140d3565b60405180910390fd5b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660018683868660405160008152602001604052604051611e01949392919061411e565b6020604051602081039080840390855afa158015611e23573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff1614611e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7a906141d5565b60405180910390fd5b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef090613102565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9290614241565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6060600060016120ab846122cd565b01905060008167ffffffffffffffff8111156120ca576120c961272d565b5b6040519080825280601f01601f1916602001820160405280156120fc5781602001600182028036833780820191505090505b509050600082602001820190505b60011561215f578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161215357612152614261565b5b0494506000850361210a575b819350505050919050565b6060600082510361218c576040518060200160405280600081525090506122c8565b600060405180606001604052806040815260200161430460409139905060006003600285516121bb91906136a4565b6121c59190614290565b60046121d191906142c1565b67ffffffffffffffff8111156121ea576121e961272d565b5b6040519080825280601f01601f19166020018201604052801561221c5781602001600182028036833780820191505090505b509050600182016020820185865187015b80821015612288576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f811685015184536001840193505061222d565b50506003865106600181146122a457600281146122b7576122bf565b603d6001830353603d60028303536122bf565b603d60018303535b50505080925050505b919050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061232b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161232157612320614261565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612368576d04ee2d6d415b85acef8100000000838161235e5761235d614261565b5b0492506020810190505b662386f26fc10000831061239757662386f26fc10000838161238d5761238c614261565b5b0492506010810190505b6305f5e10083106123c0576305f5e10083816123b6576123b5614261565b5b0492506008810190505b61271083106123e55761271083816123db576123da614261565b5b0492506004810190505b6064831061240857606483816123fe576123fd614261565b5b0492506002810190505b600a8310612417576001810190505b80915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61246981612434565b811461247457600080fd5b50565b60008135905061248681612460565b92915050565b6000602082840312156124a2576124a161242a565b5b60006124b084828501612477565b91505092915050565b60008115159050919050565b6124ce816124b9565b82525050565b60006020820190506124e960008301846124c5565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561252957808201518184015260208101905061250e565b60008484015250505050565b6000601f19601f8301169050919050565b6000612551826124ef565b61255b81856124fa565b935061256b81856020860161250b565b61257481612535565b840191505092915050565b600060208201905081810360008301526125998184612546565b905092915050565b6000819050919050565b6125b4816125a1565b81146125bf57600080fd5b50565b6000813590506125d1816125ab565b92915050565b6000602082840312156125ed576125ec61242a565b5b60006125fb848285016125c2565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061262f82612604565b9050919050565b61263f81612624565b82525050565b600060208201905061265a6000830184612636565b92915050565b61266981612624565b811461267457600080fd5b50565b60008135905061268681612660565b92915050565b600080604083850312156126a3576126a261242a565b5b60006126b185828601612677565b92505060206126c2858286016125c2565b9150509250929050565b6000602082840312156126e2576126e161242a565b5b60006126f084828501612677565b91505092915050565b612702816125a1565b82525050565b600060208201905061271d60008301846126f9565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61276582612535565b810181811067ffffffffffffffff821117156127845761278361272d565b5b80604052505050565b6000612797612420565b90506127a3828261275c565b919050565b600067ffffffffffffffff8211156127c3576127c261272d565b5b6127cc82612535565b9050602081019050919050565b82818337600083830152505050565b60006127fb6127f6846127a8565b61278d565b90508281526020810184848401111561281757612816612728565b5b6128228482856127d9565b509392505050565b600082601f83011261283f5761283e612723565b5b813561284f8482602086016127e8565b91505092915050565b612861816124b9565b811461286c57600080fd5b50565b60008135905061287e81612858565b92915050565b60008060006060848603121561289d5761289c61242a565b5b600084013567ffffffffffffffff8111156128bb576128ba61242f565b5b6128c78682870161282a565b935050602084013567ffffffffffffffff8111156128e8576128e761242f565b5b6128f48682870161282a565b92505060406129058682870161286f565b9150509250925092565b6000806000606084860312156129285761292761242a565b5b600061293686828701612677565b935050602061294786828701612677565b9250506040612958868287016125c2565b9150509250925092565b6000819050919050565b600061298761298261297d84612604565b612962565b612604565b9050919050565b60006129998261296c565b9050919050565b60006129ab8261298e565b9050919050565b6129bb816129a0565b82525050565b60006020820190506129d660008301846129b2565b92915050565b6000819050919050565b6129ef816129dc565b81146129fa57600080fd5b50565b600081359050612a0c816129e6565b92915050565b600067ffffffffffffffff821115612a2d57612a2c61272d565b5b612a3682612535565b9050602081019050919050565b6000612a56612a5184612a12565b61278d565b905082815260208101848484011115612a7257612a71612728565b5b612a7d8482856127d9565b509392505050565b600082601f830112612a9a57612a99612723565b5b8135612aaa848260208601612a43565b91505092915050565b60008060008060808587031215612acd57612acc61242a565b5b6000612adb87828801612677565b9450506020612aec878288016125c2565b9350506040612afd878288016129fd565b925050606085013567ffffffffffffffff811115612b1e57612b1d61242f565b5b612b2a87828801612a85565b91505092959194509250565b60008060408385031215612b4d57612b4c61242a565b5b6000612b5b85828601612677565b9250506020612b6c8582860161286f565b9150509250929050565b600080fd5b600080fd5b60008083601f840112612b9657612b95612723565b5b8235905067ffffffffffffffff811115612bb357612bb2612b76565b5b602083019150836001820283011115612bcf57612bce612b7b565b5b9250929050565b600080600080600060808688031215612bf257612bf161242a565b5b6000612c0088828901612677565b9550506020612c1188828901612677565b9450506040612c22888289016125c2565b935050606086013567ffffffffffffffff811115612c4357612c4261242f565b5b612c4f88828901612b80565b92509250509295509295909350565b60008060408385031215612c7557612c7461242a565b5b6000612c8385828601612677565b9250506020612c9485828601612677565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612ce557607f821691505b602082108103612cf857612cf7612c9e565b5b50919050565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b6000612d34600e836124fa565b9150612d3f82612cfe565b602082019050919050565b60006020820190508181036000830152612d6381612d27565b9050919050565b7f554e415554484f52495a45440000000000000000000000000000000000000000600082015250565b6000612da0600c836124fa565b9150612dab82612d6a565b602082019050919050565b60006020820190508181036000830152612dcf81612d93565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612e387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612dfb565b612e428683612dfb565b95508019841693508086168417925050509392505050565b6000612e75612e70612e6b846125a1565b612962565b6125a1565b9050919050565b6000819050919050565b612e8f83612e5a565b612ea3612e9b82612e7c565b848454612e08565b825550505050565b600090565b612eb8612eab565b612ec3818484612e86565b505050565b5b81811015612ee757612edc600082612eb0565b600181019050612ec9565b5050565b601f821115612f2c57612efd81612dd6565b612f0684612deb565b81016020851015612f15578190505b612f29612f2185612deb565b830182612ec8565b50505b505050565b600082821c905092915050565b6000612f4f60001984600802612f31565b1980831691505092915050565b6000612f688383612f3e565b9150826002028217905092915050565b612f81826124ef565b67ffffffffffffffff811115612f9a57612f9961272d565b5b612fa48254612ccd565b612faf828285612eeb565b600060209050601f831160018114612fe25760008415612fd0578287015190505b612fda8582612f5c565b865550613042565b601f198416612ff086612dd6565b60005b8281101561301857848901518255600182019150602085019450602081019050612ff3565b868310156130355784890151613031601f891682612f3e565b8355505b6001600288020188555050505b505050505050565b7f57524f4e475f46524f4d00000000000000000000000000000000000000000000600082015250565b6000613080600a836124fa565b915061308b8261304a565b602082019050919050565b600060208201905081810360008301526130af81613073565b9050919050565b7f494e56414c49445f524543495049454e54000000000000000000000000000000600082015250565b60006130ec6011836124fa565b91506130f7826130b6565b602082019050919050565b6000602082019050818103600083015261311b816130df565b9050919050565b600081905092915050565b50565b600061313d600083613122565b91506131488261312d565b600082019050919050565b600061315e82613130565b9150819050919050565b7f5375727265616c446973706c6179733a205769746864726177616c206572726f60008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006131c46021836124fa565b91506131cf82613168565b604082019050919050565b600060208201905081810360008301526131f3816131b7565b9050919050565b600082825260208201905092915050565b60006132186000836131fa565b91506132238261312d565b600082019050919050565b60006080820190506132436000830186612636565b6132506020830185612636565b61325d60408301846126f9565b818103606083015261326e8161320b565b9050949350505050565b60008151905061328781612460565b92915050565b6000602082840312156132a3576132a261242a565b5b60006132b184828501613278565b91505092915050565b7f554e534146455f524543495049454e5400000000000000000000000000000000600082015250565b60006132f06010836124fa565b91506132fb826132ba565b602082019050919050565b6000602082019050818103600083015261331f816132e3565b9050919050565b7f4e4f545f4d494e54454400000000000000000000000000000000000000000000600082015250565b600061335c600a836124fa565b915061336782613326565b602082019050919050565b6000602082019050818103600083015261338b8161334f565b9050919050565b7f5a45524f5f414444524553530000000000000000000000000000000000000000600082015250565b60006133c8600c836124fa565b91506133d382613392565b602082019050919050565b600060208201905081810360008301526133f7816133bb565b9050919050565b7f5375727265616c446973706c6179733a20496e76616c696420646973706c617960008201527f5479706500000000000000000000000000000000000000000000000000000000602082015250565b600061345a6024836124fa565b9150613465826133fe565b604082019050919050565b600060208201905081810360008301526134898161344d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f5375727265616c446973706c6179733a204578636565647320746f74616c207360008201527f7570706c7920666f7220646973706c6179547970650000000000000000000000602082015250565b600061351b6035836124fa565b9150613526826134bf565b604082019050919050565b6000602082019050818103600083015261354a8161350e565b9050919050565b7f5375727265616c446973706c6179733a204e6f7420656c696769626c6520666f60008201527f72206d696e740000000000000000000000000000000000000000000000000000602082015250565b60006135ad6026836124fa565b91506135b882613551565b604082019050919050565b600060208201905081810360008301526135dc816135a0565b9050919050565b7f5375727265616c446973706c6179733a204e6f7420656e6f756768204574682060008201527f70726f766964656420666f7220746865206d696e740000000000000000000000602082015250565b600061363f6035836124fa565b915061364a826135e3565b604082019050919050565b6000602082019050818103600083015261366e81613632565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006136af826125a1565b91506136ba836125a1565b92508282019050808211156136d2576136d1613675565b5b92915050565b60006136e3826125a1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361371557613714613675565b5b600182019050919050565b600061372c83856131fa565b93506137398385846127d9565b61374283612535565b840190509392505050565b60006080820190506137626000830188612636565b61376f6020830187612636565b61377c60408301866126f9565b818103606083015261378f818486613720565b90509695505050505050565b7f5375727265616c446973706c6179733a204e6f6e6578697374656e742044697360008201527f706c617900000000000000000000000000000000000000000000000000000000602082015250565b60006137f76024836124fa565b91506138028261379b565b604082019050919050565b60006020820190508181036000830152613826816137ea565b9050919050565b600081905092915050565b6000815461384581612ccd565b61384f818661382d565b9450600182166000811461386a576001811461387f576138b2565b60ff19831686528115158202860193506138b2565b61388885612dd6565b60005b838110156138aa5781548189015260018201915060208101905061388b565b838801955050505b50505092915050565b60006138c6826124ef565b6138d0818561382d565b93506138e081856020860161250b565b80840191505092915050565b60006138f88285613838565b915061390482846138bb565b91508190509392505050565b7f7b00000000000000000000000000000000000000000000000000000000000000600082015250565b600061394660018361382d565b915061395182613910565b600182019050919050565b7f226e616d65223a20220000000000000000000000000000000000000000000000600082015250565b600061399260098361382d565b915061399d8261395c565b600982019050919050565b7f2d00000000000000000000000000000000000000000000000000000000000000600082015250565b60006139de60018361382d565b91506139e9826139a8565b600182019050919050565b7f222c202265787465726e616c5f75726c223a202268747470733a2f2f7777772e60008201527f737572722e617070220000000000000000000000000000000000000000000000602082015250565b6000613a5060298361382d565b9150613a5b826139f4565b602982019050919050565b7f2c20226465736372697074696f6e223a202254686973206d6f64756c6520646960008201527f73706c617973206b657920706172616d6574657273206f6e20796f7572206a6f60208201527f75726e65792c20737563682061732077686174206c6f6f7420697320696e207960408201527f6f7572206261672e20416c736f2c20697420676976657320796f75206561726c60608201527f792061636365737320746f2074686520694f53206265746120616e6420756e6c60808201527f6f636b73207370656369616c20666561747572657320696e207468652061707060a08201527f2e2200000000000000000000000000000000000000000000000000000000000060c082015250565b6000613b8060c28361382d565b9150613b8b82613a66565b60c282019050919050565b7f2c2022696d616765223a20220000000000000000000000000000000000000000600082015250565b6000613bcc600c8361382d565b9150613bd782613b96565b600c82019050919050565b7f2e706e6722000000000000000000000000000000000000000000000000000000600082015250565b6000613c1860058361382d565b9150613c2382613be2565b600582019050919050565b7f2c202261747472696275746573223a205b7b2274726169745f74797065223a2060008201527f2254797065222c202276616c7565223a20220000000000000000000000000000602082015250565b6000613c8a60328361382d565b9150613c9582613c2e565b603282019050919050565b7f227d2c207b2274726169745f74797065223a202256222c202276616c7565223a60008201527f202231227d5d0000000000000000000000000000000000000000000000000000602082015250565b6000613cfc60268361382d565b9150613d0782613ca0565b602682019050919050565b7f7d00000000000000000000000000000000000000000000000000000000000000600082015250565b6000613d4860018361382d565b9150613d5382613d12565b600182019050919050565b6000613d6982613939565b9150613d7482613985565b9150613d808288613838565b9150613d8b826139d1565b9150613d9782876138bb565b9150613da282613a43565b9150613dad82613b73565b9150613db882613bbf565b9150613dc48286613838565b9150613dd08285613838565b9150613ddb82613c0b565b9150613de682613c7d565b9150613df28284613838565b9150613dfd82613cef565b9150613e0882613d3b565b91508190509695505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b6000613e4d601d8361382d565b9150613e5882613e17565b601d82019050919050565b6000613e6e82613e40565b9150613e7a82846138bb565b915081905092915050565b7f5375727265616c446973706c6179733a20496e76616c6964207369676e61747560008201527f7265202d20696e76616c6964207369676e6174757265206c656e677468000000602082015250565b6000613ee1603d836124fa565b9150613eec82613e85565b604082019050919050565b60006020820190508181036000830152613f1081613ed4565b9050919050565b7f5375727265616c446973706c6179733a205369676e617475726520766572696660008201527f69636174696f6e206661696c202d206861736820686173206265656e2075736560208201527f6400000000000000000000000000000000000000000000000000000000000000604082015250565b6000613f996041836124fa565b9150613fa482613f17565b606082019050919050565b60006020820190508181036000830152613fc881613f8c565b9050919050565b7f5375727265616c446973706c6179733a20496e76616c6964207369676e61747560008201527f7265202d20696e76616c6964205320706172616d657465720000000000000000602082015250565b600061402b6038836124fa565b915061403682613fcf565b604082019050919050565b6000602082019050818103600083015261405a8161401e565b9050919050565b7f5375727265616c446973706c6179733a20496e76616c6964207369676e61747560008201527f7265202d20696e76616c6964205620706172616d657465720000000000000000602082015250565b60006140bd6038836124fa565b91506140c882614061565b604082019050919050565b600060208201905081810360008301526140ec816140b0565b9050919050565b6140fc816129dc565b82525050565b600060ff82169050919050565b61411881614102565b82525050565b600060808201905061413360008301876140f3565b614140602083018661410f565b61414d60408301856140f3565b61415a60608301846140f3565b95945050505050565b7f5375727265616c446973706c6179733a20496e76616c6964207369676e61747560008201527f7265202d207369676e6572206973206e6f74204f70657261746f720000000000602082015250565b60006141bf603b836124fa565b91506141ca82614163565b604082019050919050565b600060208201905081810360008301526141ee816141b2565b9050919050565b7f414c52454144595f4d494e544544000000000000000000000000000000000000600082015250565b600061422b600e836124fa565b9150614236826141f5565b602082019050919050565b6000602082019050818103600083015261425a8161421e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061429b826125a1565b91506142a6836125a1565b9250826142b6576142b5614261565b5b828204905092915050565b60006142cc826125a1565b91506142d7836125a1565b92508282026142e5816125a1565b915082820484148315176142fc576142fb613675565b5b509291505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220d4d87d5f18f379dc21dc1972bfb78c5a48f7912dfb1ec9961c09260b881c7b4064736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000df7a0f84fc9fe0c7a0d8500a62d592fa5d3e118d000000000000000000000000ffffff55fc62fac0f1cdb23628cc9c367a7f10900000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d515778614c4a57535a4771424d427a625148355164414b4a445333754874767469585443376e353136316a472f00000000000000000000
-----Decoded View---------------
Arg [0] : imgBaseURI (string): ipfs://QmQWxaLJWSZGqBMBzbQH5QdAKJDS3uHtvtiXTC7n5161jG/
Arg [1] : operator_ (address): 0xdF7a0F84Fc9fE0C7a0d8500A62D592Fa5D3e118d
Arg [2] : owner (address): 0xffffff55FC62FAc0f1cDB23628Cc9c367A7f1090
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 000000000000000000000000df7a0f84fc9fe0c7a0d8500a62d592fa5d3e118d
Arg [2] : 000000000000000000000000ffffff55fc62fac0f1cdb23628cc9c367a7f1090
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [4] : 697066733a2f2f516d515778614c4a57535a4771424d427a625148355164414b
Arg [5] : 4a445333754874767469585443376e353136316a472f00000000000000000000
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.