[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "ApprovalToCurrentOwner", "type": "error" }, { "inputs": [], "name": "ApproveToCaller", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "InvalidQueryRange", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "AdminTransfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "uri", "type": "string" } ], "name": "BaseURI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Burn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "gasFee", "type": "uint256" } ], "name": "Claim", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "genesisId", "type": "uint256" } ], "name": "ClaimForAnimation", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "from", "type": "address" } ], "name": "ClaimRewardOther", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "start", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "end", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "total", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "to", "type": "address" } ], "name": "Mint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "collection", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "minter", "type": "address" }, { "indexed": false, "internalType": "string", "name": "tokenURI", "type": "string" } ], "name": "MintWithTokenURI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "from", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "to", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "paid", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "seller", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_roundId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "buyer", "type": "address" } ], "name": "PurchaseNFT", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "TransferFromAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_add", "type": "address" } ], "name": "addAllowAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burnAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_roundId", "type": "uint256" }, { "internalType": "uint256", "name": "limit", "type": "uint256" } ], "name": "buyBox", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "claimReward", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "genesisToken", "type": "uint256" } ], "name": "claimRewardAnimation", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "claimRewardOther", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "claimRewardXeta", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "name": "delegates", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "explicitOwnershipOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" } ], "internalType": "struct ERC721A.TokenOwnership", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "explicitOwnershipsOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" } ], "internalType": "struct ERC721A.TokenOwnership[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "funcSignatures", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "currentTime", "type": "uint256" } ], "name": "getNumberOfboxesSold", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "currentTime", "type": "uint256" } ], "name": "getRoundDetails", "outputs": [ { "internalType": "uint256", "name": "_roundId", "type": "uint256" }, { "internalType": "uint256", "name": "startTime", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "uint256", "name": "userPurchaseLimit", "type": "uint256" }, { "internalType": "uint256", "name": "maxSupply", "type": "uint256" }, { "internalType": "uint256", "name": "supply", "type": "uint256" }, { "internalType": "bool", "name": "iswhiteList", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_roundId", "type": "uint256" } ], "name": "getSpecificRoundDetails", "outputs": [ { "internalType": "uint256", "name": "startTime", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "uint256", "name": "userPurchaseLimit", "type": "uint256" }, { "internalType": "uint256", "name": "maxSupply", "type": "uint256" }, { "internalType": "uint256", "name": "supply", "type": "uint256" }, { "internalType": "bool", "name": "iswhiteList", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_roundId", "type": "uint256" }, { "internalType": "address", "name": "_add", "type": "address" } ], "name": "getUserBoxCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_roundId", "type": "uint256" }, { "internalType": "address", "name": "_add", "type": "address" } ], "name": "isUserWhiteListed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minCostXeta", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minGasCost", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to_", "type": "address" }, { "internalType": "uint256", "name": "countNFTs_", "type": "uint256" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to_", "type": "address" } ], "name": "mintAndBurn", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_add", "type": "address" }, { "internalType": "uint256", "name": "_roundId", "type": "uint256" } ], "name": "registerUser", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_add", "type": "address[]" }, { "internalType": "uint256", "name": "_roundId", "type": "uint256" } ], "name": "registerUsers", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_add", "type": "address" } ], "name": "removeAllowAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_add", "type": "address" }, { "internalType": "uint256", "name": "_roundId", "type": "uint256" } ], "name": "removeUser", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_add", "type": "address[]" }, { "internalType": "uint256", "name": "_roundId", "type": "uint256" } ], "name": "removeUsers", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_add", "type": "address" } ], "name": "setAuthor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "baseURI_", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_cost", "type": "uint256" } ], "name": "setMinGasCost", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_cost", "type": "uint256" } ], "name": "setMinGasCostXeta", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "tokensOfOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "start", "type": "uint256" }, { "internalType": "uint256", "name": "stop", "type": "uint256" } ], "name": "tokensOfOwnerIn", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "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": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040523480156200001157600080fd5b506040518060400160405280600881526020016758616e612041424960c01b8152506040518060400160405280600381526020016258424960e81b8152508160069081620000609190620001cf565b5060076200006f8282620001cf565b50506001600455506200008233620000d8565b6200008d33620000d8565b336000908152600e6020908152604091829020805460ff191660011790558151606081019092526039808352906200377090830139600d90620000d19082620001cf565b506200029b565b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200015557607f821691505b6020821081036200017657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001ca57600081815260208120601f850160051c81016020861015620001a55750805b601f850160051c820191505b81811015620001c657828155600101620001b1565b5050505b505050565b81516001600160401b03811115620001eb57620001eb6200012a565b6200020381620001fc845462000140565b846200017c565b602080601f8311600181146200023b5760008415620002225750858301515b600019600386901b1c1916600185901b178555620001c6565b600085815260208120601f198616915b828110156200026c578886015182559484019460019091019084016200024b565b50858210156200028b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6134c580620002ab6000396000f3fe6080604052600436106102af5760003560e01c80637e7a9bf711610166578063b0bf4016116100d3578063dcc496921161008f578063e77163f61161006c578063e77163f614610973578063e985e9c514610993578063f2fde38b146109dc578063fa0b5e55146109fc57005b8063dcc496921461092a578063e02f8e1f14610940578063e249ba771461096057005b8063b0bf4016146107a6578063b6b12e61146107c6578063b88d4fde14610823578063c23dc68f14610843578063c87b56dd14610870578063c9c6eeb61461089057005b806395d89b411161012257806395d89b41146106e857806399a2557a146106fd578063a05f41a41461071d578063a0a2daf01461073d578063a22cb46514610773578063ae169a501461079357005b80637e7a9bf7146106075780637fa3f76c146106275780638462151c1461063a5780638da5cb5b14610667578063924f01661461068557806393d3f774146106c857005b806333878d681161021c57806355f804b3116101d857806369ff1a81116101b557806369ff1a811461059d5780636c0360eb146105bd57806370a08231146105d2578063715018a6146105f257005b806355f804b3146105305780635bbb2177146105505780636352211e1461057d57005b806333878d6814610472578063395c9d8914610492578063406d382a146104a857806340c10f19146104bb57806342842e0e146104f05780634feac01d1461051057005b806318160ddd1161026b57806318160ddd146103b55780631da60643146103d25780631e35c513146103f257806323b872dd1461041257806326a6860a146104325780632deaa2831461045257005b806301ffc9a7146102b857806306fdde03146102ed578063081812fc1461030f578063095ea7b314610347578063126fe62d14610367578063151523941461038757005b366102b657005b005b3480156102c457600080fd5b506102d86102d3366004612b54565b610a1c565b60405190151581526020015b60405180910390f35b3480156102f957600080fd5b50610302610a6e565b6040516102e49190612bc1565b34801561031b57600080fd5b5061032f61032a366004612bd4565b610b00565b6040516001600160a01b0390911681526020016102e4565b34801561035357600080fd5b506102b6610362366004612c04565b610b44565b34801561037357600080fd5b506102b6610382366004612c2e565b610bd1565b34801561039357600080fd5b506103a76103a2366004612c2e565b610c25565b6040519081526020016102e4565b3480156103c157600080fd5b5060055460045403600019016103a7565b3480156103de57600080fd5b506102b66103ed366004612bd4565b610cfd565b3480156103fe57600080fd5b506103a761040d366004612c49565b610d2c565b34801561041e57600080fd5b506102b661042d366004612c75565b610d5b565b34801561043e57600080fd5b5061030261044d366004612bd4565b610d66565b34801561045e57600080fd5b506102b661046d366004612c49565b610e12565b34801561047e57600080fd5b506102b661048d366004612cb1565b610ea5565b34801561049e57600080fd5b506103a760145481565b6102b66104b6366004612cb1565b610ef4565b3480156104c757600080fd5b506104db6104d6366004612c04565b61131b565b604080519283526020830191909152016102e4565b3480156104fc57600080fd5b506102b661050b366004612c75565b6113b9565b34801561051c57600080fd5b506102b661052b366004612d3c565b6113d4565b34801561053c57600080fd5b506102b661054b366004612e35565b611473565b34801561055c57600080fd5b5061057061056b366004612e7d565b6114e5565b6040516102e49190612f0d565b34801561058957600080fd5b5061032f610598366004612bd4565b6115ab565b3480156105a957600080fd5b506102b66105b8366004612c2e565b6115bd565b3480156105c957600080fd5b5061030261160b565b3480156105de57600080fd5b506103a76105ed366004612c2e565b611618565b3480156105fe57600080fd5b506102b6611666565b34801561061357600080fd5b506102b6610622366004612bd4565b61169c565b6102b6610635366004612bd4565b6116cb565b34801561064657600080fd5b5061065a610655366004612c2e565b6117fa565b6040516102e49190612f77565b34801561067357600080fd5b50600c546001600160a01b031661032f565b34801561069157600080fd5b506102d86106a0366004612c49565b6001600160a01b03166000908152601160209081526040808320938352929052205460ff1690565b3480156106d457600080fd5b506102b66106e3366004612c04565b61193f565b3480156106f457600080fd5b50610302611996565b34801561070957600080fd5b5061065a610718366004612faf565b6119a5565b34801561072957600080fd5b506102b6610738366004612c2e565b611b70565b34801561074957600080fd5b5061032f610758366004612b54565b6000602081905290815260409020546001600160a01b031681565b34801561077f57600080fd5b506102b661078e366004612fe2565b611bbc565b6102b66107a1366004612bd4565b611c51565b3480156107b257600080fd5b506102b66107c1366004612d3c565b611ca4565b3480156107d257600080fd5b506107e66107e1366004612bd4565b611d43565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e0820152610100016102e4565b34801561082f57600080fd5b506102b661083e36600461301e565b611de8565b34801561084f57600080fd5b5061086361085e366004612bd4565b611e39565b6040516102e49190613099565b34801561087c57600080fd5b5061030261088b366004612bd4565b611ef3565b34801561089c57600080fd5b506108f36108ab366004612bd4565b60009081526010602052604090208054600182015460028301546004840154600585015460068601546003909601549496939592949193909291600160a01b900460ff161590565b604080519788526020880196909652948601939093526060850191909152608084015260a0830152151560c082015260e0016102e4565b34801561093657600080fd5b506103a760165481565b34801561094c57600080fd5b506102b661095b366004612bd4565b611fbd565b6102b661096e366004612bd4565b612025565b34801561097f57600080fd5b506103a761098e366004612bd4565b612065565b34801561099f57600080fd5b506102d86109ae3660046130ce565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205460ff1690565b3480156109e857600080fd5b506102b66109f7366004612c2e565b6120c5565b348015610a0857600080fd5b506102b6610a17366004612c04565b612160565b60006001600160e01b031982166380ac58cd60e01b1480610a4d57506001600160e01b03198216635b5e139f60e01b145b80610a6857506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060068054610a7d906130f8565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa9906130f8565b8015610af65780601f10610acb57610100808354040283529160200191610af6565b820191906000526020600020905b815481529060010190602001808311610ad957829003601f168201915b5050505050905090565b6000610b0b826121ba565b610b28576040516333d1c03960e21b815260040160405180910390fd5b506000908152600a60205260409020546001600160a01b031690565b6000610b4f826115ab565b9050806001600160a01b0316836001600160a01b031603610b835760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b03821614801590610ba35750610ba181336109ae565b155b15610bc1576040516367d9dca160e11b815260040160405180910390fd5b610bcc8383836121f3565b505050565b600c546001600160a01b03163314610c045760405162461bcd60e51b8152600401610bfb90613132565b60405180910390fd5b6001600160a01b03166000908152600e60205260409020805460ff19169055565b336000908152600e602052604081205460ff16610c545760405162461bcd60e51b8152600401610bfb90613167565b600080610c6284600161224f565b60408051838152602081018390526001818301526001600160a01b038816606082015290519294509092507faacef1bbb194eac329f8f247fbe8cce3eca2ed1f2e0a45a0488c2dd8afe6e516919081900360800190a1610cc182612277565b6040518281527fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb9060200160405180910390a15090505b919050565b600c546001600160a01b03163314610d275760405162461bcd60e51b8152600401610bfb90613132565b601655565b6001600160a01b03811660009081526011602090815260408083208584529091528120600101545b9392505050565b610bcc838383612282565b60018181548110610d7657600080fd5b906000526020600020016000915090508054610d91906130f8565b80601f0160208091040260200160405190810160405280929190818152602001828054610dbd906130f8565b8015610e0a5780601f10610ddf57610100808354040283529160200191610e0a565b820191906000526020600020905b815481529060010190602001808311610ded57829003601f168201915b505050505081565b336000908152600e602052604090205460ff16610e415760405162461bcd60e51b8152600401610bfb90613167565b610e54610e4d836115ab565b8284612282565b817f728fe8c3e9dd087cac70e8ff44565c920a2bb77c726ed3191394fefb4aabc358610e7f846115ab565b604080516001600160a01b03928316815291851660208301520160405180910390a25050565b610eb082600161245d565b604080518381523360208201529081018290527f5fbf5ce628c478d1bb47d9045669f654aadc3457af53cb6040cf3872e018a9d69060600160405180910390a15050565b6000828152601060209081526040918290208251610100810184528154815260018201548184015260028201548185015260038201546001600160a01b0381166060830152600160a01b900460ff16151560808201908152600483015460a0830152600583015460c08301528451938401909452600690910154825260e0810191909152905180610f9f575033600090815260116020908152604080832086845290915290205460ff165b610fbb5760405162461bcd60e51b8152600401610bfb90613167565b80514210156110015760405162461bcd60e51b81526020600482015260126024820152711cd95c9a595cc81b9bdd081cdd185c9d195960721b6044820152606401610bfb565b42816020015110156110485760405162461bcd60e51b815260206004820152601060248201526f1cd95c9a595cc81a185cc8195b99195960821b6044820152606401610bfb565b6000838152601060205260409020600601546110659083906131a4565b8160c0015110156110a25760405162461bcd60e51b81526020600482015260076024820152661cdbdb191bdd5d60ca1b6044820152606401610bfb565b60a081015115806110df57503360009081526011602090815260408083208684529091529020600101546110d79083906131a4565b8160a0015110155b6111195760405162461bcd60e51b815260206004820152600b60248201526a0d8d2dad2e840e4cac2c6d60ab1b6044820152606401610bfb565b6040810151349061112a84826131b7565b9050818111156111665760405162461bcd60e51b815260206004820152600760248201526609c8ca8406260760cb1b6044820152606401610bfb565b600080611173338761224f565b60008981526010602052604090206006015491935091506111959087906131a4565b600088815260106020908152604080832060060193909355338252601181528282208a8352905220600101546111cc9087906131a4565b3360009081526011602090815260408083208b845290915280822060010192909255606087015191516001600160a01b0390921691859181818185875af1925050503d806000811461123a576040519150601f19603f3d011682016040523d82523d6000602084013e61123f565b606091505b5050506000838561125091906131ce565b11156112a6573361126184866131ce565b604051600081818185875af1925050503d806000811461129d576040519150601f19603f3d011682016040523d82523d6000602084013e6112a2565b606091505b5050505b6040808601516060808801518351868152602081018690529384019290925282018590526001600160a01b0316608082015260a081018890523360c08201527fe73e5204eb80dc206720d968b9fae55e7eebcf94f2c833bef77c1219af19444d9060e00160405180910390a150505050505050565b336000908152600e6020526040812054819060ff1661134c5760405162461bcd60e51b8152600401610bfb90613167565b600080611359868661224f565b60408051838152602081018390529081018890526001600160a01b038916606082015291935091507faacef1bbb194eac329f8f247fbe8cce3eca2ed1f2e0a45a0488c2dd8afe6e5169060800160405180910390a1909590945092505050565b610bcc83838360405180602001604052806000815250611de8565b600c546001600160a01b031633146113fe5760405162461bcd60e51b8152600401610bfb90613132565b60005b8251811015610bcc57600060116000858481518110611422576114226131e1565b6020908102919091018101516001600160a01b0316825281810192909252604090810160009081208682529092529020805460ff19169115159190911790558061146b816131f7565b915050611401565b600c546001600160a01b0316331461149d5760405162461bcd60e51b8152600401610bfb90613132565b600d6114a9828261325e565b507f01e56a02aca7f26a28165a040851ba78f30282b55ca81c63a804cdc1e2dcea72600d6040516114da919061331d565b60405180910390a150565b80516060906000816001600160401b0381111561150457611504612cd3565b60405190808252806020026020018201604052801561154f57816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816115225790505b50905060005b8281146115a35761157e858281518110611571576115716131e1565b6020026020010151611e39565b828281518110611590576115906131e1565b6020908102919091010152600101611555565b509392505050565b60006115b682612611565b5192915050565b600c546001600160a01b031633146115e75760405162461bcd60e51b8152600401610bfb90613132565b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b600d8054610d91906130f8565b60006001600160a01b038216611641576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600960205260409020546001600160401b031690565b600c546001600160a01b031633146116905760405162461bcd60e51b8152600401610bfb90613132565b61169a6000612738565b565b600c546001600160a01b031633146116c65760405162461bcd60e51b8152600401610bfb90613132565b601455565b6116d681600161245d565b601654349081101561171e5760405162461bcd60e51b81526020600482015260116024820152701a5b881d985b1a590819d85cc818dbdcdd607a1b6044820152606401610bfb565b6015546040516000916001600160a01b03169034908381818185875af1925050503d806000811461176b576040519150601f19603f3d011682016040523d82523d6000602084013e611770565b606091505b50509050806117b75760405162461bcd60e51b8152602060048201526013602482015272195d1a081d1c985b9cd9995c8819985a5b1959606a1b6044820152606401610bfb565b60408051848152336020820152348183015290517f3ed1528b0fdc7c5207c1bf935e34a667e13656b9ed165260c522be0bc544f3039181900360600190a1505050565b6060600080600061180a85611618565b90506000816001600160401b0381111561182657611826612cd3565b60405190808252806020026020018201604052801561184f578160200160208202803683370190505b509050611875604080516060810182526000808252602082018190529181019190915290565b60015b83861161193357600081815260086020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff161515918101829052925061192b5781516001600160a01b0316156118ec57815194505b876001600160a01b0316856001600160a01b03160361192b578083878060010198508151811061191e5761191e6131e1565b6020026020010181815250505b600101611878565b50909695505050505050565b600c546001600160a01b031633146119695760405162461bcd60e51b8152600401610bfb90613132565b6001600160a01b03909116600090815260116020908152604080832093835292905220805460ff19169055565b606060078054610a7d906130f8565b6060818311156119c857604051631960ccad60e11b815260040160405180910390fd5b6004546000906001016119d9600190565b8510156119e557600194505b808411156119f1578093505b60006119fc87611618565b905084861015611a1b5785850381811015611a15578091505b50611a1f565b5060005b6000816001600160401b03811115611a3957611a39612cd3565b604051908082528060200260200182016040528015611a62578160200160208202803683370190505b50905081600003611a78579350610d5492505050565b6000611a8388611e39565b905060008160400151611a94575080515b885b888114158015611aa65750848714155b15611b5f57600081815260086020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff1615159181018290529350611b575782516001600160a01b031615611b1857825191505b8a6001600160a01b0316826001600160a01b031603611b575780848880600101995081518110611b4a57611b4a6131e1565b6020026020010181815250505b600101611a96565b505050928352509095945050505050565b600c546001600160a01b03163314611b9a5760405162461bcd60e51b8152600401610bfb90613132565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b336001600160a01b03831603611be55760405163b06307db60e01b815260040160405180910390fd5b336000818152600b602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b611c5c81600161245d565b601454349081101561171e5760405162461bcd60e51b81526020600482015260116024820152701a5b881d985b1a590819d85cc818dbdcdd607a1b6044820152606401610bfb565b600c546001600160a01b03163314611cce5760405162461bcd60e51b8152600401610bfb90613132565b60005b8251811015610bcc57600160116000858481518110611cf257611cf26131e1565b6020908102919091018101516001600160a01b0316825281810192909252604090810160009081208682529092529020805460ff191691151591909117905580611d3b816131f7565b915050611cd1565b60008080808080808060015b600f548111611ddc5788158015611d7657506000818152601060205260409020600101548a105b15611dca576000818152601060205260409020805460018201546002830154600484015460058501546006860154600390960154969e50939c50919a509850965094509250600160a01b900460ff16159050875b80611dd4816131f7565b915050611d4f565b50919395975091939597565b611df3848484612282565b6001600160a01b0383163b15158015611e155750611e138484848461278a565b155b15611e33576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b60408051606080820183526000808352602080840182905283850182905284519283018552818352820181905292810192909252906001831080611e7f57506004548310155b15611e8a5792915050565b50600082815260086020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff161580159282019290925290611eea5792915050565b610d5483612611565b6060611efe826121ba565b611f625760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610bfb565b6000611f6c612876565b90506000815111611f8c5760405180602001604052806000815250610d54565b80611f9684612885565b604051602001611fa79291906133a8565b6040516020818303038152906040529392505050565b336000908152600e602052604090205460ff16611fec5760405162461bcd60e51b8152600401610bfb90613167565b611ff581612277565b6040518181527fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb906020016114da565b61203081600161245d565b604080518281523360208201527f91890005cf69b109a05f54a6d8b9a7e19ac8b48717cde7a1cfb4d5b94ee889d791016114da565b60008060015b600f5481116120ad5781158015612092575060008181526010602052604090206001015484105b1561209b578091505b806120a5816131f7565b91505061206b565b50600081815260106020526040902060060154610d54565b600c546001600160a01b031633146120ef5760405162461bcd60e51b8152600401610bfb90613132565b6001600160a01b0381166121545760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bfb565b61215d81612738565b50565b600c546001600160a01b0316331461218a5760405162461bcd60e51b8152600401610bfb90613132565b6001600160a01b03909116600090815260116020908152604080832093835292905220805460ff19166001179055565b6000816001111580156121ce575060045482105b8015610a68575050600090815260086020526040902054600160e01b900460ff161590565b6000828152600a602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60008061226c848460405180602001604052806000815250612985565b915091509250929050565b61215d81600061245d565b600061228d82612611565b9050836001600160a01b031681600001516001600160a01b0316146122c45760405162a1148160e81b815260040160405180910390fd5b6000336001600160a01b03861614806122e257506122e285336109ae565b806122fd5750336122f284610b00565b6001600160a01b0316145b90508061231d57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03841661234457604051633a954ecd60e21b815260040160405180910390fd5b612350600084876121f3565b6001600160a01b038581166000908152600960209081526040808320805467ffffffffffffffff198082166001600160401b0392831660001901831617909255898616808652838620805493841693831660019081018416949094179055898652600890945282852080546001600160e01b031916909417600160a01b4290921691909102178355870180845292208054919390911661242457600454821461242457805460208601516001600160401b0316600160a01b026001600160e01b03199091166001600160a01b038a16171781555b50505082846001600160a01b0316866001600160a01b031660008051602061347083398151915260405160405180910390a45050505050565b600061246883612611565b805190915082156124ce576000336001600160a01b0383161480612491575061249182336109ae565b806124ac5750336124a186610b00565b6001600160a01b0316145b9050806124cc57604051632ce44b5f60e11b815260040160405180910390fd5b505b6124da600085836121f3565b6001600160a01b0380821660008181526009602090815260408083208054600160801b6000196001600160401b0380841691909101811667ffffffffffffffff198416811783900482166001908101831690930277ffffffffffffffff0000000000000000ffffffffffffffff19909416179290921783558b86526008909452828520805460ff60e01b1942909316600160a01b026001600160e01b03199091169097179690961716600160e01b1785559189018084529220805491949091166125d85760045482146125d857805460208701516001600160401b0316600160a01b026001600160e01b03199091166001600160a01b038716171781555b5050604051869250600091506001600160a01b03841690600080516020613470833981519152908390a450506005805460010190555050565b60408051606081018252600080825260208201819052918101919091528180600111158015612641575060045481105b1561271f57600081815260086020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff1615159181018290529061271d5780516001600160a01b0316156126b4579392505050565b5060001901600081815260086020908152604091829020825160608101845290546001600160a01b038116808352600160a01b82046001600160401b031693830193909352600160e01b900460ff1615159281019290925215612718579392505050565b6126b4565b505b604051636f96cda160e11b815260040160405180910390fd5b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a02906127bf9033908990889088906004016133d7565b6020604051808303816000875af19250505080156127fa575060408051601f3d908101601f191682019092526127f791810190613414565b60015b612858573d808015612828576040519150601f19603f3d011682016040523d82523d6000602084013e61282d565b606091505b508051600003612850576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b6060600d8054610a7d906130f8565b6060816000036128ac5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156128d657806128c0816131f7565b91506128cf9050600a83613447565b91506128b0565b6000816001600160401b038111156128f0576128f0612cd3565b6040519080825280601f01601f19166020018201604052801561291a576020820181803683370190505b5090505b841561286e5761292f6001836131ce565b915061293c600a8661345b565b6129479060306131a4565b60f81b81838151811061295c5761295c6131e1565b60200101906001600160f81b031916908160001a90535061297e600a86613447565b945061291e565b60045460009081906001600160a01b0386166129b357604051622e076360e81b815260040160405180910390fd5b846000036129d45760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b038616600081815260096020908152604080832080546fffffffffffffffffffffffffffffffff1981166001600160401b038083168d0181169182176801000000000000000067ffffffffffffffff1990941690921783900481168d01811690920217909155858452600890925290912080546001600160e01b0319168317600160a01b42909316929092029190911790558190818701903b15612aea575b60405182906001600160a01b038a1690600090600080516020613470833981519152908290a4612ab3600089848060010195508961278a565b612ad0576040516368d2bf6b60e11b815260040160405180910390fd5b808203612a7a578260045414612ae557600080fd5b612b1d565b5b6040516001830192906001600160a01b038a1690600090600080516020613470833981519152908290a4808203612aeb575b50600455806001600454612b3191906131ce565b9250925050935093915050565b6001600160e01b03198116811461215d57600080fd5b600060208284031215612b6657600080fd5b8135610d5481612b3e565b60005b83811015612b8c578181015183820152602001612b74565b50506000910152565b60008151808452612bad816020860160208601612b71565b601f01601f19169290920160200192915050565b602081526000610d546020830184612b95565b600060208284031215612be657600080fd5b5035919050565b80356001600160a01b0381168114610cf857600080fd5b60008060408385031215612c1757600080fd5b612c2083612bed565b946020939093013593505050565b600060208284031215612c4057600080fd5b610d5482612bed565b60008060408385031215612c5c57600080fd5b82359150612c6c60208401612bed565b90509250929050565b600080600060608486031215612c8a57600080fd5b612c9384612bed565b9250612ca160208501612bed565b9150604084013590509250925092565b60008060408385031215612cc457600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612d1157612d11612cd3565b604052919050565b60006001600160401b03821115612d3257612d32612cd3565b5060051b60200190565b60008060408385031215612d4f57600080fd5b82356001600160401b03811115612d6557600080fd5b8301601f81018513612d7657600080fd5b80356020612d8b612d8683612d19565b612ce9565b82815260059290921b83018101918181019088841115612daa57600080fd5b938201935b83851015612dcf57612dc085612bed565b82529382019390820190612daf565b98969091013596505050505050565b60006001600160401b03831115612df757612df7612cd3565b612e0a601f8401601f1916602001612ce9565b9050828152838383011115612e1e57600080fd5b828260208301376000602084830101529392505050565b600060208284031215612e4757600080fd5b81356001600160401b03811115612e5d57600080fd5b8201601f81018413612e6e57600080fd5b61286e84823560208401612dde565b60006020808385031215612e9057600080fd5b82356001600160401b03811115612ea657600080fd5b8301601f81018513612eb757600080fd5b8035612ec5612d8682612d19565b81815260059190911b82018301908381019087831115612ee457600080fd5b928401925b82841015612f0257833582529284019290840190612ee9565b979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561193357612f6483855180516001600160a01b031682526020808201516001600160401b0316908301526040908101511515910152565b9284019260609290920191600101612f29565b6020808252825182820181905260009190848201906040850190845b8181101561193357835183529284019291840191600101612f93565b600080600060608486031215612fc457600080fd5b612fcd84612bed565b95602085013595506040909401359392505050565b60008060408385031215612ff557600080fd5b612ffe83612bed565b91506020830135801515811461301357600080fd5b809150509250929050565b6000806000806080858703121561303457600080fd5b61303d85612bed565b935061304b60208601612bed565b92506040850135915060608501356001600160401b0381111561306d57600080fd5b8501601f8101871361307e57600080fd5b61308d87823560208401612dde565b91505092959194509250565b81516001600160a01b031681526020808301516001600160401b03169082015260408083015115159082015260608101610a68565b600080604083850312156130e157600080fd5b6130ea83612bed565b9150612c6c60208401612bed565b600181811c9082168061310c57607f821691505b60208210810361312c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600d908201526c6e6f7420617574686f72697a6560981b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610a6857610a6861318e565b8082028115828204841417610a6857610a6861318e565b81810381811115610a6857610a6861318e565b634e487b7160e01b600052603260045260246000fd5b6000600182016132095761320961318e565b5060010190565b601f821115610bcc57600081815260208120601f850160051c810160208610156132375750805b601f850160051c820191505b8181101561325657828155600101613243565b505050505050565b81516001600160401b0381111561327757613277612cd3565b61328b8161328584546130f8565b84613210565b602080601f8311600181146132c057600084156132a85750858301515b600019600386901b1c1916600185901b178555613256565b600085815260208120601f198616915b828110156132ef578886015182559484019460019091019084016132d0565b508582101561330d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602080835260008454613331816130f8565b80848701526040600180841660008114613352576001811461336c5761339a565b60ff1985168984015283151560051b89018301955061339a565b896000528660002060005b858110156133925781548b8201860152908301908801613377565b8a0184019650505b509398975050505050505050565b600083516133ba818460208801612b71565b8351908301906133ce818360208801612b71565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061340a90830184612b95565b9695505050505050565b60006020828403121561342657600080fd5b8151610d5481612b3e565b634e487b7160e01b600052601260045260246000fd5b60008261345657613456613431565b500490565b60008261346a5761346a613431565b50069056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122047135b53a5d9542d040d8a728f54848842cc86d06211673b6fe5932304ce278164736f6c6343000811003368747470733a2f2f746573746170692e78616e616c69612e636f6d2f78616e616c69612f6765742d6e66742d6d6574613f746f6b656e49643d