[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Added", "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": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Bought", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "ChangedOwner", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "amountClaimed", "type": "uint256" } ], "name": "Claimed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "ForSale", "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": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "hodlerAddres", "type": "address" } ], "name": "PersonAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Recovered", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "Bazaar", "outputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "enum ERC721.TokenState", "name": "state", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_HUSKY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "METADATA_PROVENANCE_HASH", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "NftForSale", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "addTokenGrant", "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": "buy", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "cancelTokenSale", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "changeOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "claim", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "contractowner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAllNFTForSale", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "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": "recipient", "type": "address" } ], "name": "getTokenGrant", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "hasSaleStarted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "maxHusky", "type": "uint256" } ], "name": "mintHusky", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "nbNFTHolders", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "pauseDrop", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "persons", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "recoverERC20", "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": "string", "name": "baseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_price", "type": "uint256" } ], "name": "setPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_hash", "type": "string" } ], "name": "setProvenanceHash", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "setPrice", "type": "uint256" } ], "name": "setTokenPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "startDrop", "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": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "tokenGrants", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [], "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" }, { "inputs": [ { "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "withdrawAll", "outputs": [], "stateMutability": "payable", "type": "function" } ]
600c805460ff60a01b191690556722b1c8c1227a0000600d5560a0604081905260006080819052620000349160149162000287565b503480156200004257600080fd5b506040518060400160405280600a8152602001694875736b79205061636b60b01b815250604051806040016040528060058152602001644855534b5960d81b8152506200009c6301ffc9a760e01b620001ac60201b60201c565b8151620000b190600890602085019062000287565b508051620000c790600990602084019062000287565b50620000da6380ac58cd60e01b620001ac565b620000ec635b5e139f60e01b620001ac565b620000fe63780e9d6360e01b620001ac565b50600090506200010d62000207565b600c80546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506200017f60405180608001604052806051815260200162003fc9605191396200020b565b60028054336001600160a01b031991821681179092556013805490911690911790556000600e55620003d6565b6001600160e01b03198082161415620001e25760405162461bcd60e51b8152600401620001d9906200032d565b60405180910390fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b3390565b6200021562000207565b6001600160a01b0316620002286200025f565b6001600160a01b031614620002515760405162461bcd60e51b8152600401620001d99062000364565b6200025c816200026e565b50565b600c546001600160a01b031690565b80516200028390600b90602084019062000287565b5050565b828054620002959062000399565b90600052602060002090601f016020900481019282620002b9576000855562000304565b82601f10620002d457805160ff191683800117855562000304565b8280016001018555821562000304579182015b8281111562000304578251825591602001919060010190620002e7565b506200031292915062000316565b5090565b5b8082111562000312576000815560010162000317565b6020808252601c908201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600281046001821680620003ae57607f821691505b60208210811415620003d057634e487b7160e01b600052602260045260246000fd5b50919050565b613be380620003e66000396000f3fe6080604052600436106102885760003560e01c806370a082311161015a578063a3b3ea1e116100c1578063d96a094a1161007a578063d96a094a14610752578063e985e9c514610765578063eb685c4714610785578063f0c9dc60146107a5578063f2826ca9146107ba578063f2fde38b146107cf57610288565b8063a3b3ea1e14610692578063a6f9dae1146106b2578063b81a4d8f146106d2578063b88d4fde146106f2578063b8ad2abe14610712578063c87b56dd1461073257610288565b80638980f11f116101135780638980f11f146105e85780638da5cb5b1461060857806391b7f5ed1461061d57806395d89b411461063d578063a22cb46514610652578063a2f9eac61461067257610288565b806370a082311461053c578063715018a61461055c57806376adcab5146105715780637bd7525d146105845780638462151c146105b3578063853828b6146105e057610288565b80632e1a7d4d116101fe5780634f6ccce7116101b75780634f6ccce71461049d57806355f804b3146104bd5780636098c94c146104dd57806360e81977146104f25780636352211e146105075780636c0360eb1461052757610288565b80632e1a7d4d146104005780632f745c591461041357806334d84c7b14610433578063376d3b8f1461044857806342842e0e146104685780634e71d92d1461048857610288565b80631096952311610250578063109695231461036157806318160ddd146103815780631c8b232d1461039657806323b872dd146103ab5780632808c92c146103cb5780632bda5ac3146103e057610288565b806301ffc9a71461028d57806304c2c104146102c357806306fdde03146102f0578063081812fc14610312578063095ea7b31461033f575b600080fd5b34801561029957600080fd5b506102ad6102a8366004612fb5565b6107ef565b6040516102ba9190613191565b60405180910390f35b3480156102cf57600080fd5b506102e36102de366004612e3a565b610812565b6040516102ba91906139db565b3480156102fc57600080fd5b50610305610824565b6040516102ba919061319c565b34801561031e57600080fd5b5061033261032d366004613033565b6108b6565b6040516102ba91906130e3565b34801561034b57600080fd5b5061035f61035a366004612f70565b610902565b005b34801561036d57600080fd5b5061035f61037c366004612fed565b61099a565b34801561038d57600080fd5b506102e36109f0565b3480156103a257600080fd5b506102ad610a01565b3480156103b757600080fd5b5061035f6103c6366004612e86565b610a11565b3480156103d757600080fd5b5061035f610a49565b3480156103ec57600080fd5b5061035f6103fb366004613033565b610a97565b61035f61040e366004613033565b610bec565b34801561041f57600080fd5b506102e361042e366004612f70565b610c53565b34801561043f57600080fd5b5061035f610c7e565b34801561045457600080fd5b506102e3610463366004612e3a565b610cd2565b34801561047457600080fd5b5061035f610483366004612e86565b610ced565b34801561049457600080fd5b5061035f610d08565b3480156104a957600080fd5b506102e36104b8366004613033565b610db3565b3480156104c957600080fd5b5061035f6104d8366004612fed565b610dc9565b3480156104e957600080fd5b50610332610e11565b3480156104fe57600080fd5b506102e3610e20565b34801561051357600080fd5b50610332610522366004613033565b610e26565b34801561053357600080fd5b50610305610e4e565b34801561054857600080fd5b506102e3610557366004612e3a565b610e5d565b34801561056857600080fd5b5061035f610ea6565b61035f61057f366004613033565b610f2f565b34801561059057600080fd5b506105a461059f366004613033565b61113c565b6040516102ba939291906139f2565b3480156105bf57600080fd5b506105d36105ce366004612e3a565b61115f565b6040516102ba919061314d565b61035f611240565b3480156105f457600080fd5b5061035f610603366004612f70565b6112b4565b34801561061457600080fd5b50610332611355565b34801561062957600080fd5b5061035f610638366004613033565b611364565b34801561064957600080fd5b506103056113a8565b34801561065e57600080fd5b5061035f61066d366004612f3a565b6113b7565b34801561067e57600080fd5b5061033261068d366004613033565b611485565b34801561069e57600080fd5b506102e36106ad366004613033565b6114af565b3480156106be57600080fd5b5061035f6106cd366004612e3a565b6114d0565b3480156106de57600080fd5b506102e36106ed366004612e3a565b611589565b3480156106fe57600080fd5b5061035f61070d366004612ec1565b61159b565b34801561071e57600080fd5b5061035f61072d366004612f70565b6115da565b34801561073e57600080fd5b5061030561074d366004613033565b61168f565b61035f610760366004613033565b6117d2565b34801561077157600080fd5b506102ad610780366004612e54565b611e02565b34801561079157600080fd5b5061035f6107a036600461304b565b611e30565b3480156107b157600080fd5b50610305611f4d565b3480156107c657600080fd5b506105d3611fdb565b3480156107db57600080fd5b5061035f6107ea366004612e3a565b612032565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b60116020526000908152604090205481565b60606008805461083390613aba565b80601f016020809104026020016040519081016040528092919081815260200182805461085f90613aba565b80156108ac5780601f10610881576101008083540402835291602001916108ac565b820191906000526020600020905b81548152906001019060200180831161088f57829003601f168201915b5050505050905090565b60006108c1826120f3565b6108e65760405162461bcd60e51b81526004016108dd9061371b565b60405180910390fd5b506000908152600660205260409020546001600160a01b031690565b600061090d82610e26565b9050806001600160a01b0316836001600160a01b031614156109415760405162461bcd60e51b81526004016108dd90613855565b806001600160a01b0316610953612100565b6001600160a01b0316148061096f575061096f81610780612100565b61098b5760405162461bcd60e51b81526004016108dd90613501565b6109958383612104565b505050565b6109a2612100565b6001600160a01b03166109b3611355565b6001600160a01b0316146109d95760405162461bcd60e51b81526004016108dd90613767565b80516109ec906014906020840190612d1a565b5050565b60006109fc6004612172565b905090565b600c54600160a01b900460ff1681565b610a22610a1c612100565b8261217d565b610a3e5760405162461bcd60e51b81526004016108dd906138c6565b610995838383612202565b610a51612100565b6001600160a01b0316610a62611355565b6001600160a01b031614610a885760405162461bcd60e51b81526004016108dd90613767565b600c805460ff60a01b19169055565b610aa081610e26565b6001600160a01b0316336001600160a01b031614610abd57600080fd5b60008181526001602081905260408220018190555b601054811015610bc1578160108281548110610afe57634e487b7160e01b600052603260045260246000fd5b90600052602060002001541415610baf5760108054610b1f90600190613a77565b81548110610b3d57634e487b7160e01b600052603260045260246000fd5b906000526020600020015460108281548110610b6957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001556010805480610b9457634e487b7160e01b600052603160045260246000fd5b60019003818190600052602060002001600090559055610bc1565b80610bb981613aef565b915050610ad2565b506000818152600160208190526040909120600201805460049260ff1990911690835b021790555050565b610bf4612100565b6001600160a01b0316610c05611355565b6001600160a01b031614610c2b5760405162461bcd60e51b81526004016108dd90613767565b604051339082156108fc029083906000818181858888f19350505050610c5057600080fd5b50565b6001600160a01b0382166000908152600360205260408120610c759083612319565b90505b92915050565b610c86612100565b6001600160a01b0316610c97611355565b6001600160a01b031614610cbd5760405162461bcd60e51b81526004016108dd90613767565b600c805460ff60a01b1916600160a01b179055565b6001600160a01b031660009081526012602052604090205490565b6109958383836040518060200160405280600081525061159b565b6000610d1333610cd2565b905060008111610d355760405162461bcd60e51b81526004016108dd9061394e565b336000908152601260205260408120819055600e8054839290610d59908490613a77565b9091555050604051339082156108fc029083906000818181858888f19350505050610d8357600080fd5b604051819033907fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a90600090a350565b600080610dc1600484612325565b509392505050565b610dd1612100565b6001600160a01b0316610de2611355565b6001600160a01b031614610e085760405162461bcd60e51b81526004016108dd90613767565b610c5081612341565b6013546001600160a01b031681565b61138881565b6000610c7882604051806060016040528060298152602001613b856029913960049190612354565b6060600b805461083390613aba565b60006001600160a01b038216610e855760405162461bcd60e51b81526004016108dd9061355e565b6001600160a01b0382166000908152600360205260409020610c7890612172565b610eae612100565b6001600160a01b0316610ebf611355565b6001600160a01b031614610ee55760405162461bcd60e51b81526004016108dd90613767565b600c546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600c80546001600160a01b0319169055565b600c54600160a01b900460ff161515600114610f4a57600080fd5b611388610f556109f0565b10610f725760405162461bcd60e51b81526004016108dd90613896565b600081118015610f83575060148111155b610f9f5760405162461bcd60e51b81526004016108dd906135a8565b611388610fb482610fae6109f0565b9061236b565b1115610fd25760405162461bcd60e51b81526004016108dd906136f0565b600d54610fdf9082612377565b341015610ffe5760405162461bcd60e51b81526004016108dd90613636565b6000805b600f5481101561106d57336001600160a01b0316600f828154811061103757634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561105b576001915061106d565b8061106581613aef565b915050611002565b50806110dc57600f8054600181019091557f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b03191633908117909155600090815260116020526040812080548492906110d1908490613a2c565b909155506111089050565b336000908152601160205260409020546110f6818461236b565b33600090815260116020526040902055505b60005b8281101561099557600061111d6109f0565b90506111293382612383565b508061113481613aef565b91505061110b565b600160208190526000918252604090912080549181015460029091015460ff1683565b6060600061116c83610e5d565b90508061118957505060408051600081526020810190915261080d565b60008167ffffffffffffffff8111156111b257634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156111db578160200160208202803683370190505b50905060005b82811015611230576111f38582610c53565b82828151811061121357634e487b7160e01b600052603260045260246000fd5b60209081029190910101528061122881613aef565b9150506111e1565b50915061080d9050565b50919050565b611248612100565b6001600160a01b0316611259611355565b6001600160a01b03161461127f5760405162461bcd60e51b81526004016108dd90613767565b600e5433906108fc906112929047613a77565b6040518115909202916000818181858888f193505050506112b257600080fd5b565b6013546001600160a01b031633146112de5760405162461bcd60e51b81526004016108dd9061331a565b600081116112fe5760405162461bcd60e51b81526004016108dd90613403565b601354611318906001600160a01b0384811691168361239d565b7f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa288282604051611349929190613134565b60405180910390a15050565b600c546001600160a01b031690565b61136c612100565b6001600160a01b031661137d611355565b6001600160a01b0316146113a35760405162461bcd60e51b81526004016108dd90613767565b600d55565b60606009805461083390613aba565b6113bf612100565b6001600160a01b0316826001600160a01b031614156113f05760405162461bcd60e51b81526004016108dd906133cc565b80600760006113fd612100565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155611441612100565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516114799190613191565b60405180910390a35050565b600f818154811061149557600080fd5b6000918252602090912001546001600160a01b0316905081565b601081815481106114bf57600080fd5b600091825260209091200154905081565b6013546001600160a01b031633146114fa5760405162461bcd60e51b81526004016108dd9061324b565b6001600160a01b0381161580159061151b57506001600160a01b0381163014155b6115375760405162461bcd60e51b81526004016108dd906135f1565b601380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f2748503f8f31d8071821d1d5144384ba6a465036cda17fa1629a8a2509ccee0e90600090a35050565b60126020526000908152604090205481565b6115ac6115a6612100565b8361217d565b6115c85760405162461bcd60e51b81526004016108dd906138c6565b6115d4848484846123f3565b50505050565b6013546001600160a01b031633146116045760405162461bcd60e51b81526004016108dd906134ca565b600081116116245760405162461bcd60e51b81526004016108dd906131f1565b6001600160a01b038216600090815260126020526040902054611647908261236b565b6001600160a01b03831660008181526012602052604080822093909355915183927f446e00ad56f9b887844f390c87a128507b991ea0499375f13ecb115288c2df7d91a35050565b606061169a826120f3565b6116b65760405162461bcd60e51b81526004016108dd906137e5565b6000828152600a6020526040812080546116cf90613aba565b80601f01602080910402602001604051908101604052809291908181526020018280546116fb90613aba565b80156117485780601f1061171d57610100808354040283529160200191611748565b820191906000526020600020905b81548152906001019060200180831161172b57829003601f168201915b505050505090506000611759610e4e565b905080516000141561176d5750905061080d565b81511561179f5780826040516020016117879291906130b4565b6040516020818303038152906040529250505061080d565b806117a985612426565b6040516020016117ba9291906130b4565b60405160208183030381529060405292505050919050565b60006117dd82610e26565b6000838152600160208190526040909120015490915081903410156118145760405162461bcd60e51b81526004016108dd90613226565b60008381526001602052604090206002015460ff16600481111561184857634e487b7160e01b600052602160045260246000fd5b6001146118675760405162461bcd60e51b81526004016108dd90613834565b600083815260016020528061187b34612541565b9150611887348361255c565b6040519091506001600160a01b0384169082156108fc029083906000818181858888f193505050501580156118c0573d6000803e3d6000fd5b506000805b600f5481101561193057336001600160a01b0316600f82815481106118fa57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561191e5760019150611930565b8061192881613aef565b9150506118c5565b50806119a057600f805460018181019092557f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319163390811790915560009081526011602052604081208054909190611995908490613a2c565b909155506119cd9050565b336000908152601160205260409020546119bb81600161236b565b33600090815260116020526040902055505b6001600160a01b03851660009081526011602052604090205460011415611b4e576001600160a01b03851660009081526011602052604081208190555b600f54811015611b4857856001600160a01b0316600f8281548110611a3f57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415611b3657600f8054611a6a90600190613a77565b81548110611a8857634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600f80546001600160a01b039092169183908110611ac257634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600f805480611b0f57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b0319169055019055611b48565b80611b4081613aef565b915050611a0a565b50611b8d565b6001600160a01b038516600090815260116020526040902054611b7281600161255c565b6001600160a01b038716600090815260116020526040902055505b611ba0611b9987610e26565b3388612202565b60008681526001602052604081206002908101805460ff191690911790555b601054811015611cae578660108281548110611beb57634e487b7160e01b600052603260045260246000fd5b90600052602060002001541415611c9c5760108054611c0c90600190613a77565b81548110611c2a57634e487b7160e01b600052603260045260246000fd5b906000526020600020015460108281548110611c5657634e487b7160e01b600052603260045260246000fd5b6000918252602090912001556010805480611c8157634e487b7160e01b600052603160045260246000fd5b60019003818190600052602060002001600090559055611cae565b80611ca681613aef565b915050611bbf565b5082600e6000828254611cc19190613a2c565b90915550600090505b600f54811015611dc057600060116000600f8481548110611cfb57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040018120549150611d2b82612568565b90506000611d398288612377565b9050611d4781612710612585565b90508060126000600f8781548110611d6f57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400181208054909190611da3908490613a2c565b925050819055505050508080611db890613aef565b915050611cca565b507f3ccb2ab6980b218b1dd4974b07365cd90a191e170c611da46262fecc208bd6618634604051611df29291906139e4565b60405180910390a1505050505050565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b611e3982610e26565b6001600160a01b0316336001600160a01b031614611e5657600080fd5b6000805b601054811015611eae578360108281548110611e8657634e487b7160e01b600052603260045260246000fd5b90600052602060002001541415611e9c57600191505b80611ea681613aef565b915050611e5a565b5080611eea57601080546001810182556000919091527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672018390555b600083815260016020819052604091829020808201859055600201805460ff19169091179055517f454a59b1e51b1685e697faeca2a404382f4dcb9970aece78299147857e15039390611f4090859085906139e4565b60405180910390a1505050565b60148054611f5a90613aba565b80601f0160208091040260200160405190810160405280929190818152602001828054611f8690613aba565b8015611fd35780601f10611fa857610100808354040283529160200191611fd3565b820191906000526020600020905b815481529060010190602001808311611fb657829003601f168201915b505050505081565b606060108054806020026020016040519081016040528092919081815260200182805480156108ac57602002820191906000526020600020905b815481526020019060010190808311612015575050505050905090565b61203a612100565b6001600160a01b031661204b611355565b6001600160a01b0316146120715760405162461bcd60e51b81526004016108dd90613767565b6001600160a01b0381166120975760405162461bcd60e51b81526004016108dd906132d4565b600c546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610c78600483612591565b3390565b600081815260066020526040902080546001600160a01b0319166001600160a01b038416908117909155819061213982610e26565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610c788261259d565b6000612188826120f3565b6121a45760405162461bcd60e51b81526004016108dd9061347e565b60006121af83610e26565b9050806001600160a01b0316846001600160a01b031614806121ea5750836001600160a01b03166121df846108b6565b6001600160a01b0316145b806121fa57506121fa8185611e02565b949350505050565b826001600160a01b031661221582610e26565b6001600160a01b03161461223b5760405162461bcd60e51b81526004016108dd9061379c565b6001600160a01b0382166122615760405162461bcd60e51b81526004016108dd90613388565b61226c838383610995565b612277600082612104565b6001600160a01b038316600090815260036020526040902061229990826125a1565b506001600160a01b03821660009081526003602052604090206122bc90826125ad565b506122c9600482846125b9565b506122d3816125cf565b80826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000610c7583836125fd565b60008080806123348686612656565b9097909650945050505050565b80516109ec90600b906020840190612d1a565b60006123618484846126c6565b90505b9392505050565b6000610c758284613a2c565b6000610c758284613a58565b6109ec82826040518060200160405280600081525061273d565b6109958363a9059cbb60e01b84846040516024016123bc929190613134565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612770565b6123fe848484612202565b61240a848484846127ff565b6115d45760405162461bcd60e51b81526004016108dd90613282565b60608161244b57506040805180820190915260018152600360fc1b602082015261080d565b8160005b8115612475578061245f81613aef565b915061246e9050600a83613a44565b915061244f565b60008167ffffffffffffffff81111561249e57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156124c8576020820181803683370190505b5090505b84156121fa576124dd600183613a77565b91506124ea600a86613b0a565b6124f5906030613a2c565b60f81b81838151811061251857634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535061253a600a86613a44565b94506124cc565b60008061254f836005612377565b9050612364816064612585565b6000610c758284613a77565b60008061257783612710612377565b9050612364816125856109f0565b6000610c758284613a44565b6000610c75838361291a565b5490565b6000610c758383612932565b6000610c758383612a4f565b600061236184846001600160a01b038516612a99565b60008181526001602081905260408220808201929092556002909101805460049260ff199091169083610be4565b815460009082106126205760405162461bcd60e51b81526004016108dd906131af565b82600001828154811061264357634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b81546000908190831061267b5760405162461bcd60e51b81526004016108dd90613679565b60008460000184815481106126a057634e487b7160e01b600052603260045260246000fd5b906000526020600020906002020190508060000154816001015492509250509250929050565b600082815260018401602052604081205482816126f65760405162461bcd60e51b81526004016108dd919061319c565b5084612703600183613a77565b8154811061272157634e487b7160e01b600052603260045260246000fd5b9060005260206000209060020201600101549150509392505050565b6127478383612b48565b61275460008484846127ff565b6109955760405162461bcd60e51b81526004016108dd90613282565b60006127c5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612c0c9092919063ffffffff16565b80519091501561099557808060200190518101906127e39190612f99565b6109955760405162461bcd60e51b81526004016108dd90613991565b6000612813846001600160a01b0316612c1b565b1561290f57836001600160a01b031663150b7a0261282f612100565b8786866040518563ffffffff1660e01b815260040161285194939291906130f7565b602060405180830381600087803b15801561286b57600080fd5b505af192505050801561289b575060408051601f3d908101601f1916820190925261289891810190612fd1565b60015b6128f5573d8080156128c9576040519150601f19603f3d011682016040523d82523d6000602084013e6128ce565b606091505b5080516128ed5760405162461bcd60e51b81526004016108dd90613282565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506121fa565b506001949350505050565b60009081526001919091016020526040902054151590565b60008181526001830160205260408120548015612a45576000612956600183613a77565b855490915060009061296a90600190613a77565b9050600086600001828154811061299157634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050808760000184815481106129c257634e487b7160e01b600052603260045260246000fd5b6000918252602090912001556129d9836001613a2c565b60008281526001890160205260409020558654879080612a0957634e487b7160e01b600052603160045260246000fd5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610c78565b6000915050610c78565b6000612a5b838361291a565b612a9157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610c78565b506000610c78565b600082815260018401602052604081205480612afe575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055612364565b8285612b0b600184613a77565b81548110612b2957634e487b7160e01b600052603260045260246000fd5b9060005260206000209060020201600101819055506000915050612364565b6001600160a01b038216612b6e5760405162461bcd60e51b81526004016108dd906136bb565b612b77816120f3565b15612b945760405162461bcd60e51b81526004016108dd90613351565b612ba060008383610995565b6001600160a01b0382166000908152600360205260409020612bc290826125ad565b50612bcf600482846125b9565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60606123618484600085612c21565b3b151590565b606082471015612c435760405162461bcd60e51b81526004016108dd90613438565b612c4c85612c1b565b612c685760405162461bcd60e51b81526004016108dd90613917565b600080866001600160a01b03168587604051612c849190613098565b60006040518083038185875af1925050503d8060008114612cc1576040519150601f19603f3d011682016040523d82523d6000602084013e612cc6565b606091505b5091509150612cd6828286612ce1565b979650505050505050565b60608315612cf0575081612364565b825115612d005782518084602001fd5b8160405162461bcd60e51b81526004016108dd919061319c565b828054612d2690613aba565b90600052602060002090601f016020900481019282612d485760008555612d8e565b82601f10612d6157805160ff1916838001178555612d8e565b82800160010185558215612d8e579182015b82811115612d8e578251825591602001919060010190612d73565b50612d9a929150612d9e565b5090565b5b80821115612d9a5760008155600101612d9f565b600067ffffffffffffffff80841115612dce57612dce613b4a565b604051601f8501601f191681016020018281118282101715612df257612df2613b4a565b604052848152915081838501861015612e0a57600080fd5b8484602083013760006020868301015250509392505050565b80356001600160a01b038116811461080d57600080fd5b600060208284031215612e4b578081fd5b610c7582612e23565b60008060408385031215612e66578081fd5b612e6f83612e23565b9150612e7d60208401612e23565b90509250929050565b600080600060608486031215612e9a578081fd5b612ea384612e23565b9250612eb160208501612e23565b9150604084013590509250925092565b60008060008060808587031215612ed6578081fd5b612edf85612e23565b9350612eed60208601612e23565b925060408501359150606085013567ffffffffffffffff811115612f0f578182fd5b8501601f81018713612f1f578182fd5b612f2e87823560208401612db3565b91505092959194509250565b60008060408385031215612f4c578182fd5b612f5583612e23565b91506020830135612f6581613b60565b809150509250929050565b60008060408385031215612f82578182fd5b612f8b83612e23565b946020939093013593505050565b600060208284031215612faa578081fd5b815161236481613b60565b600060208284031215612fc6578081fd5b813561236481613b6e565b600060208284031215612fe2578081fd5b815161236481613b6e565b600060208284031215612ffe578081fd5b813567ffffffffffffffff811115613014578182fd5b8201601f81018413613024578182fd5b6121fa84823560208401612db3565b600060208284031215613044578081fd5b5035919050565b6000806040838503121561305d578182fd5b50508035926020909101359150565b60008151808452613084816020860160208601613a8e565b601f01601f19169290920160200192915050565b600082516130aa818460208701613a8e565b9190910192915050565b600083516130c6818460208801613a8e565b8351908301906130da818360208801613a8e565b01949350505050565b6001600160a01b0391909116815260200190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061312a9083018461306c565b9695505050505050565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561318557835183529284019291840191600101613169565b50909695505050505050565b901515815260200190565b600060208252610c75602083018461306c565b60208082526022908201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604082015261647360f01b606082015260800190565b6020808252818101527f436c61696d3a3a616464546f6b656e4772616e743a207a65726f206772616e74604082015260600190565b6020808252600b908201526a507269636520697373756560a81b604082015260600190565b6020808252601d908201527f436c61696d3a3a6368616e67654f776e65723a206e6f74206f776e6572000000604082015260600190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601e908201527f436c61696d3a3a7265636f76657245524332303a206e6f74206f776e65720000604082015260600190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b60208082526024908201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526019908201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604082015260600190565b6020808252818101527f436c61696d3a3a7265636f76657245524332303a20616d6f756e742069732030604082015260600190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b6020808252602c908201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b6020808252601f908201527f436c61696d3a3a616464546f6b656e4772616e743a206e6f74206f776e657200604082015260600190565b60208082526038908201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760408201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606082015260800190565b6020808252602a908201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604082015269726f206164647265737360b01b606082015260800190565b60208082526029908201527f596f752063616e206372616674206d696e696d756d20312c206d6178696d756d604082015268203230204875736b7960b81b606082015260800190565b60208082526025908201527f436c61696d3a3a6368616e67654f776e65723a206e6f742076616c6964206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45746865722076616c75652073656e742069732062656c6f772074686520707260408201526269636560e81b606082015260800190565b60208082526022908201527f456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e604082015261647360f01b606082015260800190565b6020808252818101527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604082015260600190565b60208082526011908201527045786365656473204d41585f4855534b5960781b604082015260600190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960408201526839903737ba1037bbb760b91b606082015260800190565b6020808252602f908201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60408201526e3732bc34b9ba32b73a103a37b5b2b760891b606082015260800190565b6020808252600790820152664e6f2053616c6560c81b604082015260600190565b60208082526021908201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656040820152603960f91b606082015260800190565b60208082526016908201527514d85b19481a185cc8185b1c9958591e48195b99195960521b604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b60208082526023908201527f436c61696d3a3a636c61696d3a20617661696c61626c65546f436c61696d206960408201526207320360ec1b606082015260800190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b90815260200190565b918252602082015260400190565b838152602081018390526060810160058310613a1e57634e487b7160e01b600052602160045260246000fd5b826040830152949350505050565b60008219821115613a3f57613a3f613b1e565b500190565b600082613a5357613a53613b34565b500490565b6000816000190483118215151615613a7257613a72613b1e565b500290565b600082821015613a8957613a89613b1e565b500390565b60005b83811015613aa9578181015183820152602001613a91565b838111156115d45750506000910152565b600281046001821680613ace57607f821691505b6020821081141561123a57634e487b7160e01b600052602260045260246000fd5b6000600019821415613b0357613b03613b1e565b5060010190565b600082613b1957613b19613b34565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8015158114610c5057600080fd5b6001600160e01b031981168114610c5057600080fdfe4552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656ea2646970667358221220232e1b8f839821233546a59824ce94adf641ff159b4f4866d7129142b546289264736f6c6343000800003368747470733a2f2f61796f626f2e6d7970696e6174612e636c6f75642f697066732f516d515057645235584773594d5475755a544d4c57574c7a6563517043766d3958636657475432506f41446953772f