[ { "inputs": [ { "internalType": "address", "name": "implementation", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "message", "type": "string" } ], "name": "CommitMessage", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "ConsecutiveTransfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes4", "name": "functionId", "type": "bytes4" }, { "indexed": true, "internalType": "address", "name": "oldDelegate", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newDelegate", "type": "address" }, { "indexed": false, "internalType": "string", "name": "functionSignature", "type": "string" } ], "name": "FunctionUpdate", "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": 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": "address", "name": "", "type": "address" } ], "name": "_allowAddress", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "payable", "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": [], "name": "bundleId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "name": "delegates", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "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": "address", "name": "", "type": "address" } ], "name": "isTransferAllowed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "nftLock", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": [], "name": "perPurchaseNFTToMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "reservedNFT", "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": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "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": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "status", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": [], "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": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_delegate", "type": "address" }, { "internalType": "string", "name": "_functionSignatures", "type": "string" }, { "internalType": "string", "name": "_commitMessage", "type": "string" } ], "name": "updateContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b5060405162002d3e38038062002d3e83398101604081905262000034916200089c565b60408051808201825260208082527f436f72706f7261746520436f6c6c61626f726174696f6e20542d536869727473818301528251808401909352600383526210d0d560ea1b908301529060066200008d838262000973565b5060076200009c828262000973565b5050600160045550620000af33620006bf565b600380546001600160a01b0319163017905533600090815260106020908152604091829020805460ff1916600117905581516060810190925260398083529062002c6690830139600f9062000105908262000973565b50610c80601255601580546001600160a01b03191633179055604080516060810190915260258082526000919062002cc26020830139600354909150620001579082906001600160a01b031662000711565b6040805180820190915260128152717365744261736555524928737472696e672960701b60208201526200018c818462000711565b60405180606001604052806023815260200162002c9f602391399050620001b4818462000711565b60405180606001604052806030815260200162002ce7603091399050620001dc818462000711565b5060408051808201909152601581527f6d696e7428616464726573732c75696e7432353629000000000000000000000060208201526200021d818462000711565b5060408051808201909152601081526f736574536565642875696e743235362960801b602082015262000251818462000711565b60405180606001604052806024815260200162002c1660249139905062000279818462000711565b5060408051808201909152601081526f636c61696d5473686972744e4654282960801b6020820152620002ad818462000711565b6040518060600160405280602c815260200162002c3a602c91399050620002d5818462000711565b506040805180820190915260128152716275726e41646d696e2875696e743235362960701b60208201526200030b818462000711565b60405180606001604052806026815260200162002bf060269139905062000333818462000711565b50604080518082019091526012815271736574417574686f7228616464726573732960701b602082015262000369818462000711565b5060408051808201909152601581527f7365744d6178537570706c792875696e743235362900000000000000000000006020820152620003aa818462000711565b506040805180820190915260128152717365745374617475732875696e743235362960701b6020820152620003e0818462000711565b506040805180820190915260208082527f7365745472616e73666572416c6c6f77656428616464726573732c626f6f6c299082015262000421818462000711565b60405180606001604052806027815260200162002d1760279139905062000449818462000711565b6040518060600160405280603b815260200162002bb5603b9139905062000471818462000711565b5060408051808201909152601e81527f73657450657242756e646c654e4654546f4d696e742875696e743235362900006020820152620004b2818462000711565b50604080518082019091526011815270746f6b656e5552492875696e743235362960781b6020820152620004e7818462000711565b5060408051808201909152601181527073657450726963652875696e743235362960781b60208201526200051c818462000711565b5060408051808201909152601381527f736574526f79616c74792875696e74323536290000000000000000000000000060208201526200055d818462000711565b5060408051808201909152600a8152696765745072696365282960b01b60208201526200058b818462000711565b5060408051808201909152600e81526d6765744d6178537570706c79282960901b6020820152620005bd818462000711565b50604080518082019091526012815271676574417574686f722875696e743235362960701b6020820152620005f3818462000711565b5060408051808201909152601681527f676574526f79616c74794665652875696e743235362900000000000000000000602082015262000634818462000711565b5060408051808201909152601381527f67657443726561746f722875696e743235362900000000000000000000000000602082015262000675818462000711565b5060408051808201909152601d81527f6d696e7442756c6b28616464726573735b5d2c75696e743235365b5d290000006020820152620006b6818462000711565b50505062000ab8565b600e80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b81516020808401919091206001600160e01b031981166000908152918290526040822080546001600160a01b0319166001600160a01b0385161790556001805480820182559252907fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60162000787848262000973565b506001546040516002906200079e90869062000a65565b908152602001604051809103902081905550816001600160a01b031660006001600160a01b0316826001600160e01b0319167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538660405162000801919062000a83565b60405180910390a47faa1c0a0a78cec2470f9652e5d29540752e7a64d70f926933cebf13afaeda45de6040516200088f906020808252603a908201527f4164646564204552433135333820757064617465436f6e74726163742066756e60408201527f6374696f6e20617420636f6e7472616374206372656174696f6e000000000000606082015260800190565b60405180910390a1505050565b600060208284031215620008af57600080fd5b81516001600160a01b0381168114620008c757600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620008f957607f821691505b6020821081036200091a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200096e57600081815260208120601f850160051c81016020861015620009495750805b601f850160051c820191505b818110156200096a5782815560010162000955565b5050505b505050565b81516001600160401b038111156200098f576200098f620008ce565b620009a781620009a08454620008e4565b8462000920565b602080601f831160018114620009df5760008415620009c65750858301515b600019600386901b1c1916600185901b1785556200096a565b600085815260208120601f198616915b8281101562000a1057888601518255948401946001909101908401620009ef565b508582101562000a2f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60005b8381101562000a5c57818101518382015260200162000a42565b50506000910152565b6000825162000a7981846020870162000a3f565b9190910192915050565b602081526000825180602084015262000aa481604085016020870162000a3f565b601f01601f19169190910160400192915050565b6120ed8062000ac86000396000f3fe6080604052600436106101b75760003560e01c80636c0360eb116100ec578063a22cb4651161008a578063c87b56dd11610064578063c87b56dd14610579578063e985e9c514610599578063f2fde38b146105b9578063f4e37f12146105d9576101b7565b8063a22cb46514610530578063aa8062ef14610550578063b88d4fde14610566576101b7565b80638822048e116100c65780638822048e146104975780638da5cb5b146104c757806395d89b41146104e5578063a0a2daf0146104fa576101b7565b80636c0360eb1461044d57806370a0823114610462578063715018a614610482576101b7565b806323b872dd11610159578063495d815111610133578063495d8151146103ad578063521b52a4146103dd578063614555671461040d5780636352211e1461042d576101b7565b806323b872dd1461036757806326a6860a1461037a57806342842e0e1461039a576101b7565b8063095ea7b311610195578063095ea7b3146102fd5780630994b1ad1461031057806318160ddd14610334578063200d2ed214610351576101b7565b806301ffc9a71461026e57806306fdde03146102a3578063081812fc146102c5575b6000356001600160e01b0319161580156101d057503415155b156101d757005b600080356001600160e01b0319168152602081905260409020546001600160a01b0316806102475760405162461bcd60e51b8152602060048201526018602482015277233ab731ba34b7b7103237b2b9903737ba1032bc34b9ba1760411b60448201526064015b60405180910390fd5b60405136600082376000803683855af43d806000843e818015610268578184f35b8184fd5b005b34801561027a57600080fd5b5061028e610289366004611885565b610606565b60405190151581526020015b60405180910390f35b3480156102af57600080fd5b506102b8610658565b60405161029a91906118f2565b3480156102d157600080fd5b506102e56102e0366004611905565b6106ea565b6040516001600160a01b03909116815260200161029a565b61026c61030b366004611935565b61072e565b34801561031c57600080fd5b5061032660185481565b60405190815260200161029a565b34801561034057600080fd5b506005546004540360001901610326565b34801561035d57600080fd5b5061032660135481565b61026c61037536600461195f565b610774565b34801561038657600080fd5b506102b8610395366004611905565b6107e2565b61026c6103a836600461195f565b61088e565b3480156103b957600080fd5b5061028e6103c8366004611905565b600d6020526000908152604090205460ff1681565b3480156103e957600080fd5b5061028e6103f836600461199b565b60106020526000908152604090205460ff1681565b34801561041957600080fd5b5061026c6104283660046119ff565b6108f7565b34801561043957600080fd5b506102e5610448366004611905565b610f02565b34801561045957600080fd5b506102b8610f0d565b34801561046e57600080fd5b5061032661047d36600461199b565b610f1a565b34801561048e57600080fd5b5061026c610f69565b3480156104a357600080fd5b5061028e6104b236600461199b565b600c6020526000908152604090205460ff1681565b3480156104d357600080fd5b50600e546001600160a01b03166102e5565b3480156104f157600080fd5b506102b8610f9f565b34801561050657600080fd5b506102e5610515366004611885565b6000602081905290815260409020546001600160a01b031681565b34801561053c57600080fd5b5061026c61054b366004611a80565b610fae565b34801561055c57600080fd5b5061032660175481565b61026c610574366004611ad2565b610ff0565b34801561058557600080fd5b506102b8610594366004611905565b611060565b3480156105a557600080fd5b5061028e6105b4366004611bae565b61112b565b3480156105c557600080fd5b5061026c6105d436600461199b565b611159565b3480156105e557600080fd5b506103266105f4366004611905565b601d6020526000908152604090205481565b60006301ffc9a760e01b6001600160e01b03198316148061063757506380ac58cd60e01b6001600160e01b03198316145b806106525750635b5e139f60e01b6001600160e01b03198316145b92915050565b60606006805461066790611be1565b80601f016020809104026020016040519081016040528092919081815260200182805461069390611be1565b80156106e05780601f106106b5576101008083540402835291602001916106e0565b820191906000526020600020905b8154815290600101906020018083116106c357829003601f168201915b5050505050905090565b60006106f5826111f4565b610712576040516333d1c03960e21b815260040160405180910390fd5b506000908152600a60205260409020546001600160a01b031690565b6001600160a01b0382166000908152600c602052604090205460ff166107665760405162461bcd60e51b815260040161023e90611c1b565b6107708282611229565b5050565b336000908152600c602052604090205460ff166107a35760405162461bcd60e51b815260040161023e90611c1b565b6000818152600d602052604090205460ff16156107d25760405162461bcd60e51b815260040161023e90611c52565b6107dd838383611235565b505050565b600181815481106107f257600080fd5b90600052602060002001600091509050805461080d90611be1565b80601f016020809104026020016040519081016040528092919081815260200182805461083990611be1565b80156108865780601f1061085b57610100808354040283529160200191610886565b820191906000526020600020905b81548152906001019060200180831161086957829003601f168201915b505050505081565b336000908152600c602052604090205460ff166108bd5760405162461bcd60e51b815260040161023e90611c1b565b6000818152600d602052604090205460ff16156108ec5760405162461bcd60e51b815260040161023e90611c52565b6107dd8383836113ce565b600e546001600160a01b031633146109215760405162461bcd60e51b815260040161023e90611c81565b60006001600160a01b038616156109a85750843b806109a85760405162461bcd60e51b815260206004820152603960248201527f5f64656c65676174652061646472657373206973206e6f74206120636f6e747260448201527f61637420616e64206973206e6f74206164647265737328302900000000000000606482015260840161023e565b600085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508451602080870198509596508601909401938693509150819050808080805b878a1015610eb857895160001a925082602903610ea65789610a1c81611ccc565b9a50610a2a9050878b611ce5565b808a526020808b018290206001600160e01b031981166000908152918290526040909120548c99509097506001600160a01b0390811696509094508f16610c4b57600289604051610a7b9190611cf8565b908152602001604051809103902054915081600003610ad75760405162461bcd60e51b8152602060048201526018602482015277233ab731ba34b7b7103237b2b9903737ba1032bc34b9ba1760411b604482015260640161023e565b81610ae181611d14565b60018054919450610af3925090611ce5565b9050808214610b8b5760018181548110610b0f57610b0f611d2b565b9060005260206000200160018381548110610b2c57610b2c611d2b565b906000526020600020019081610b429190611d87565b50610b4e826001611e68565b600260018381548110610b6357610b63611d2b565b90600052602060002001604051610b7a9190611e7b565b908152604051908190036020019020555b6001805480610b9c57610b9c611ef1565b600190038181906000526020600020016000610bb89190611821565b9055600289604051610bca9190611cf8565b90815260408051602092819003830181206000908190556001600160e01b03198a168082529381905291822080546001600160a01b031916905590916001600160a01b038816917f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f535390610c3e908e906118f2565b60405180910390a4610ea1565b600289604051610c5b9190611cf8565b908152602001604051809103902054600003610dad576001600160a01b03851615610cb85760405162461bcd60e51b815260206004820152600d60248201526c233ab731a4b21031b630b9b41760991b604482015260640161023e565b8e600080886001600160e01b0319166001600160e01b031916815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600189908060018154018082558091505060019003906000526020600020016000909190919091509081610d379190611f07565b50600154604051600290610d4c908c90611cf8565b9081526020016040518091039020819055508e6001600160a01b031660006001600160a01b0316876001600160e01b0319167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c604051610c3e91906118f2565b8e6001600160a01b0316600080886001600160e01b0319166001600160e01b031916815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031614610ea1578e600080886001600160e01b0319166001600160e01b031916815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508e6001600160a01b0316856001600160a01b0316876001600160e01b0319167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c604051610e9891906118f2565b60405180910390a45b978301975b89610eb081611ccc565b9a50506109fb565b7faa1c0a0a78cec2470f9652e5d29540752e7a64d70f926933cebf13afaeda45de8c8c604051610ee9929190611fc1565b60405180910390a1505050505050505050505050505050565b6000610652826113e9565b600f805461080d90611be1565b60006001600160a01b038216610f43576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b031660009081526009602052604090205467ffffffffffffffff1690565b600e546001600160a01b03163314610f935760405162461bcd60e51b815260040161023e90611c81565b610f9d6000611475565b565b60606007805461066790611be1565b6001600160a01b0382166000908152600c602052604090205460ff16610fe65760405162461bcd60e51b815260040161023e90611c1b565b61077082826114c7565b336000908152600c602052604090205460ff1661101f5760405162461bcd60e51b815260040161023e90611c1b565b6000828152600d602052604090205460ff161561104e5760405162461bcd60e51b815260040161023e90611c52565b61105a84848484611533565b50505050565b606061106b826111f4565b6110cf5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161023e565b60006110d9611577565b905060008151116110f95760405180602001604052806000815250611124565b8061110384611586565b604051602001611114929190611ff0565b6040516020818303038152906040525b9392505050565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205460ff1690565b600e546001600160a01b031633146111835760405162461bcd60e51b815260040161023e90611c81565b6001600160a01b0381166111e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161023e565b6111f181611475565b50565b600081600111158015611208575060045482105b8015610652575050600090815260086020526040902054600160e01b161590565b6107708282600161168f565b6000611240826113e9565b9050836001600160a01b0316816001600160a01b0316146112735760405162a1148160e81b815260040160405180910390fd5b6000828152600a602052604090208054338082146001600160a01b038816909114176112c0576112a3863361112b565b6112c057604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b0385166112e757604051633a954ecd60e21b815260040160405180910390fd5b80156112f257600082555b6001600160a01b038681166000908152600960205260408082208054600019019055918716808252919020805460010190554260a01b17600160e11b17600085815260086020526040812091909155600160e11b84169003611384576001840160008181526008602052604081205490036113825760045481146113825760008181526008602052604090208490555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b6107dd83838360405180602001604052806000815250610ff0565b60008160011161145c575060008181526008602052604081205490600160e01b8216900361145c578060000361145757600454821061143b57604051636f96cda160e11b815260040160405180910390fd5b5b5060001901600081815260086020526040902054801561143c575b919050565b604051636f96cda160e11b815260040160405180910390fd5b600e80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b336000818152600b602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61153e848484610774565b6001600160a01b0383163b1561105a5761155a84848484611736565b61105a576040516368d2bf6b60e11b815260040160405180910390fd5b6060600f805461066790611be1565b6060816000036115ad5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156115d757806115c181611ccc565b91506115d09050600a83612035565b91506115b1565b60008167ffffffffffffffff8111156115f2576115f2611abc565b6040519080825280601f01601f19166020018201604052801561161c576020820181803683370190505b5090505b841561168757611631600183611ce5565b915061163e600a86612049565b611649906030611e68565b60f81b81838151811061165e5761165e611d2b565b60200101906001600160f81b031916908160001a905350611680600a86612035565b9450611620565b949350505050565b600061169a83610f02565b905081156116d957336001600160a01b038216146116d9576116bc813361112b565b6116d9576040516367d9dca160e11b815260040160405180910390fd5b6000838152600a602052604080822080546001600160a01b0319166001600160a01b0388811691821790925591518693918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a450505050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a029061176b90339089908890889060040161205d565b6020604051808303816000875af19250505080156117a6575060408051601f3d908101601f191682019092526117a39181019061209a565b60015b611804573d8080156117d4576040519150601f19603f3d011682016040523d82523d6000602084013e6117d9565b606091505b5080516000036117fc576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b50805461182d90611be1565b6000825580601f1061183d575050565b601f0160209004906000526020600020908101906111f191905b8082111561186b5760008155600101611857565b5090565b6001600160e01b0319811681146111f157600080fd5b60006020828403121561189757600080fd5b81356111248161186f565b60005b838110156118bd5781810151838201526020016118a5565b50506000910152565b600081518084526118de8160208601602086016118a2565b601f01601f19169290920160200192915050565b60208152600061112460208301846118c6565b60006020828403121561191757600080fd5b5035919050565b80356001600160a01b038116811461145757600080fd5b6000806040838503121561194857600080fd5b6119518361191e565b946020939093013593505050565b60008060006060848603121561197457600080fd5b61197d8461191e565b925061198b6020850161191e565b9150604084013590509250925092565b6000602082840312156119ad57600080fd5b6111248261191e565b60008083601f8401126119c857600080fd5b50813567ffffffffffffffff8111156119e057600080fd5b6020830191508360208285010111156119f857600080fd5b9250929050565b600080600080600060608688031215611a1757600080fd5b611a208661191e565b9450602086013567ffffffffffffffff80821115611a3d57600080fd5b611a4989838a016119b6565b90965094506040880135915080821115611a6257600080fd5b50611a6f888289016119b6565b969995985093965092949392505050565b60008060408385031215611a9357600080fd5b611a9c8361191e565b915060208301358015158114611ab157600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215611ae857600080fd5b611af18561191e565b9350611aff6020860161191e565b925060408501359150606085013567ffffffffffffffff80821115611b2357600080fd5b818701915087601f830112611b3757600080fd5b813581811115611b4957611b49611abc565b604051601f8201601f19908116603f01168101908382118183101715611b7157611b71611abc565b816040528281528a6020848701011115611b8a57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215611bc157600080fd5b611bca8361191e565b9150611bd86020840161191e565b90509250929050565b600181811c90821680611bf557607f821691505b602082108103611c1557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601c908201527f4552433732313a207472616e73666572206e6f7420616c6c6f77656400000000604082015260600190565b602080825260159082015274115490cdcc8c4e88139195081a5cc81b1bd8dad959605a1b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600060018201611cde57611cde611cb6565b5060010190565b8181038181111561065257610652611cb6565b60008251611d0a8184602087016118a2565b9190910192915050565b600081611d2357611d23611cb6565b506000190190565b634e487b7160e01b600052603260045260246000fd5b601f8211156107dd57600081815260208120601f850160051c81016020861015611d685750805b601f850160051c820191505b818110156113c657828155600101611d74565b818103611d92575050565b611d9c8254611be1565b67ffffffffffffffff811115611db457611db4611abc565b611dc881611dc28454611be1565b84611d41565b6000601f821160018114611dfc5760008315611de45750848201545b600019600385901b1c1916600184901b178455611e61565b600085815260209020601f19841690600086815260209020845b83811015611e365782860154825560019586019590910190602001611e16565b5085831015611e545781850154600019600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b8082018082111561065257610652611cb6565b6000808354611e8981611be1565b60018281168015611ea15760018114611eb657611ee5565b60ff1984168752821515830287019450611ee5565b8760005260208060002060005b85811015611edc5781548a820152908401908201611ec3565b50505082870194505b50929695505050505050565b634e487b7160e01b600052603160045260246000fd5b815167ffffffffffffffff811115611f2157611f21611abc565b611f2f81611dc28454611be1565b602080601f831160018114611f645760008415611f4c5750858301515b600019600386901b1c1916600185901b1785556113c6565b600085815260208120601f198616915b82811015611f9357888601518255948401946001909101908401611f74565b5085821015611fb15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600083516120028184602088016118a2565b8351908301906120168183602088016118a2565b01949350505050565b634e487b7160e01b600052601260045260246000fd5b6000826120445761204461201f565b500490565b6000826120585761205861201f565b500690565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612090908301846118c6565b9695505050505050565b6000602082840312156120ac57600080fd5b81516111248161186f56fea2646970667358221220e3f5b8914d8d9abad03e30eb11a818975f867dd9003916aa1124118537988b3f64736f6c6343000811003367657453616c6544657461696c732875696e74323536297075626c696320766965772072657475726e732875696e743235362c75696e743235362973657457686974656c697374526f6f7428627974657333322c75696e743235362c626f6f6c297072654f726465725473686972744e465428627974657333325b5d2c75696e74323536296275795473686972744e465428627974657333325b5d2c75696e743235362c626f6f6c2c75696e743235362968747470733a2f2f746573746170692e78616e616c69612e636f6d2f78616e616c69612f6765742d6e66742d6d6574613f746f6b656e49643d67657455736572426f75676874436f756e7428616464726573732c75696e7432353629757064617465436f6e747261637428616464726573732c737472696e672c737472696e6729697357686974656c697374656428616464726573732c627974657333325b5d2c75696e743235362c75696e743235362973657453616c6544657461696c732875696e743235362c75696e743235362c75696e7432353629000000000000000000000000ce2d07cd4971634de91cd1ad88f21e4b27e0687a