[ { "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": "baseURI", "type": "string" } ], "name": "BaseURIUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "creator", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "tokenUri", "type": "string" } ], "name": "Minted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "originalAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" } ], "name": "NFTCreatorMigrated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "originalAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" } ], "name": "NFTOwnerMigrated", "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": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "originalAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" } ], "name": "PaymentAddressMigrated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "fromCreator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "toCreator", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "TokenCreatorUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "string", "name": "indexedTokenUri", "type": "string" }, { "indexed": false, "internalType": "string", "name": "tokenPath", "type": "string" } ], "name": "TokenUriUpdated", "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": "string", "name": "_baseURI", "type": "string" }, { "internalType": "address", "name": "market", "type": "address" }, { "internalType": "address", "name": "treasury", "type": "address" } ], "name": "adminUpdateConfig", "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": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "ownedTokenIds", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "createdTokenIds", "type": "uint256[]" }, { "internalType": "address", "name": "newAddress", "type": "address" } ], "name": "creatorAccountUpgradation", "outputs": [], "stateMutability": "nonpayable", "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": "creator", "type": "address" }, { "internalType": "string", "name": "tokenUri", "type": "string" } ], "name": "getHasCreatorMintedTokenUri", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getNextTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getWethioMarket", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getWethioTreasury", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "treasury", "type": "address" }, { "internalType": "address", "name": "market", "type": "address" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "string", "name": "baseURI", "type": "string" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "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": "string", "name": "tokenIPFSPath", "type": "string" } ], "name": "mintAndApproveMarket", "outputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "tokenIPFSPath", "type": "string" }, { "internalType": "address", "name": "tokenCreatorPaymentAddress", "type": "address" } ], "name": "mintWithCreatorPaymentAddress", "outputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "tokenIPFSPath", "type": "string" }, { "internalType": "address", "name": "tokenCreatorPaymentAddress", "type": "address" } ], "name": "mintWithCreatorPaymentAddressAndApproveMarket", "outputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "tokenIPFSPath", "type": "string" } ], "name": "mintWithoutApproveMarket", "outputs": [ { "internalType": "uint256", "name": "tokenId", "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": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "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": "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": "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenCreator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": [], "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": "tokenIds", "type": "uint256[]" }, { "internalType": "address", "name": "newAddress", "type": "address" } ], "name": "updateCreatorPaymentAddresses", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405234801561001057600080fd5b50613d32806100206000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c80635174e85311610145578063a22cb465116100bd578063caa0f92a1161008c578063e985e9c511610071578063e985e9c5146104e7578063ed82e1f414610524578063f2fde38b1461053757600080fd5b8063caa0f92a146104cb578063d2c0fa5a146104d457600080fd5b8063a22cb4651461047f578063afb9d94514610492578063b88d4fde146104a5578063c87b56dd146104b857600080fd5b806370a08231116101145780637e078e76116100f95780637e078e76146104535780638da5cb5b1461046557806395d89b411461047757600080fd5b806370a0823114610438578063715018a61461044b57600080fd5b80635174e853146103f757806358f05b931461040a5780636352211e1461041d5780636c0360eb1461043057600080fd5b80632863ca6b116101d857806340c1a064116101a757806342966c681161018c57806342966c68146103ba57806344a02508146103cd5780634f6ccce7146103e457600080fd5b806340c1a0641461037d57806342842e0e146103a757600080fd5b80632863ca6b146103125780632a55205a146103255780632f745c59146103575780633f2f5ee21461036a57600080fd5b8063095ea7b311610214578063095ea7b3146102cf5780631331618e146102e457806318160ddd146102f757806323b872dd146102ff57600080fd5b806301ffc9a71461024657806306fdde031461026e578063081812fc14610283578063093bd49c146102ae575b600080fd5b6102596102543660046138a9565b61054a565b60405190151581526020015b60405180910390f35b610276610590565b6040516102659190613b30565b6102966102913660046139aa565b610623565b6040516001600160a01b039091168152602001610265565b6102c16102bc3660046138e1565b6106b1565b604051908152602001610265565b6102e26102dd366004613794565b610747565b005b6102e26102f23660046137bd565b610879565b6102c16109f3565b6102e261030d36600461365e565b610a05565b6102e261032036600461380f565b610a8c565b6103386103333660046139c2565b610d6e565b604080516001600160a01b039093168352602083019190915201610265565b6102c1610365366004613794565b610e2d565b6102e26103783660046135b8565b610e57565b61029661038b3660046139aa565b60009081526110d160205260409020546001600160a01b031690565b6102e26103b536600461365e565b610f99565b6102e26103c83660046139aa565b610fb4565b6000546201000090046001600160a01b0316610296565b6102c16103f23660046139aa565b6110d5565b6102c16104053660046138e1565b6110ec565b6102c1610418366004613914565b611116565b61029661042b3660046139aa565b61113a565b610276611163565b6102c161044636600461356c565b611173565b6102e2611213565b6104e4546001600160a01b0316610296565b61109f546001600160a01b0316610296565b610276611227565b6102e261048d366004613712565b611237565b6102e26104a0366004613957565b6112fd565b6102e26104b3366004613699565b611392565b6102766104c63660046139aa565b61141a565b610cb6546102c1565b6102c16104e2366004613914565b61159d565b6102596104f5366004613586565b6001600160a01b0391821660009081526104b66020908152604080832093909416825291909152205460ff1690565b610259610532366004613748565b611630565b6102e261054536600461356c565b611672565b60006001600160e01b031982166380ac58cd60e01b148061057b57506001600160e01b03198216635b5e139f60e01b145b8061058a575061058a82611702565b92915050565b60606104b780546105a090613bd1565b80601f01602080910402602001604051908101604052809291908181526020018280546105cc90613bd1565b80156106195780601f106105ee57610100808354040283529160200191610619565b820191906000526020600020905b8154815290600101906020018083116105fc57829003601f168201915b5050505050905090565b600061062e82611740565b6106945760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b5060009081526104b560205260409020546001600160a01b031690565b60006106bb61174e565b61072d5760405162461bcd60e51b815260206004820152603460248201527f57657468696f41646d696e526f6c653a2063616c6c657220646f6573206e6f7460448201527f2068617665207468652041646d696e20726f6c65000000000000000000000000606482015260840161068b565b610736826117f3565b90506107428133611866565b919050565b60006107528261113a565b9050806001600160a01b0316836001600160a01b031614156107dc5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161068b565b336001600160a01b03821614806107f857506107f881336104f5565b61086a5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161068b565b61087483836118dc565b505050565b6001600160a01b0381166108cf5760405162461bcd60e51b815260206004820181905260248201527f4e657720416464726573732063616e206e6f74207a65726f2061646472657373604482015260640161068b565b60005b828110156109ed5760008484838181106108fc57634e487b7160e01b600052603260045260246000fd5b9050602002013590506000610912826000610d6e565b509050336001600160a01b038216146109935760405162461bcd60e51b815260206004820152603860248201527f4e465437323143726561746f723a205061796d656e742061646472657373206960448201527f73206e6f74207468652065787065637465642076616c75650000000000000000606482015260840161068b565b6109a082856103e861194b565b6040516001600160a01b03851690339084907f9092dbdeb4aa676243ca9b0a089c57531b0bad5d781b340485d9543001f4650f90600090a4505080806109e590613c0c565b9150506108d2565b50505050565b6000610a006104b2611a77565b905090565b610a0f3382611a82565b610a815760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161068b565b610874838383611b6d565b60005b84811015610baf57610ac6868683818110610aba57634e487b7160e01b600052603260045260246000fd5b90506020020135611740565b8015610b08575033610afd878784818110610af157634e487b7160e01b600052603260045260246000fd5b9050602002013561113a565b6001600160a01b0316145b15610b9d57610b3e3383888885818110610b3257634e487b7160e01b600052603260045260246000fd5b90506020020135611b6d565b6001600160a01b03821633878784818110610b6957634e487b7160e01b600052603260045260246000fd5b905060200201357fde55f075ebd46256cd6bd57d8fb53e0406f687db372e90ae8c18e72be46f5c1660405160405180910390a45b80610ba781613c0c565b915050610a8f565b5060005b82811015610d665760006110d181868685818110610be157634e487b7160e01b600052603260045260246000fd5b60209081029290920135835250810191909152604001600020546001600160a01b031614610d5457336110d16000868685818110610c2f57634e487b7160e01b600052603260045260246000fd5b60209081029290920135835250810191909152604001600020546001600160a01b031614610cc55760405162461bcd60e51b815260206004820152603960248201527f4e465437323143726561746f723a20546f6b656e20776173206e6f742063726560448201527f617465642062792074686520676976656e206164647265737300000000000000606482015260840161068b565b610cf5848483818110610ce857634e487b7160e01b600052603260045260246000fd5b9050602002013583611866565b6001600160a01b03821633858584818110610d2057634e487b7160e01b600052603260045260246000fd5b905060200201357f58120fb31972ff9fad76eb87119474a58fc38d6b9b842bb3067a4a329eaa64f660405160405180910390a45b80610d5e81613c0c565b915050610bb3565b505050505050565b6000828152610480602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046bffffffffffffffffffffffff16928201929092528291610def57506040805180820190915261047f546001600160a01b0381168252600160a01b90046bffffffffffffffffffffffff1660208201525b602081015160009061271090610e13906bffffffffffffffffffffffff1687613b6f565b610e1d9190613b5b565b91519350909150505b9250929050565b6001600160a01b03821660009081526104b160205260408120610e509083611d1e565b9392505050565b600054610100900460ff1615808015610e775750600054600160ff909116105b80610e915750303b158015610e91575060005460ff166001145b610ef45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161068b565b6000805460ff191660011790558015610f17576000805461ff0019166101001790555b610f2086611d2a565b610f2985611ed0565b610f33848461205a565b610f3b61217e565b610f448261228d565b610f4c6122c5565b8015610d66576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b61087483838360405180602001604052806000815250611392565b60008181526110d1602052604090205481906001600160a01b031633146110425760405162461bcd60e51b8152602060048201526024808201527f4e465437323143726561746f723a2043616c6c6572206973206e6f742063726560448201527f61746f7200000000000000000000000000000000000000000000000000000000606482015260840161068b565b3361104c8261113a565b6001600160a01b0316146110c85760405162461bcd60e51b815260206004820152602a60248201527f4e465437323143726561746f723a2043616c6c657220646f6573206e6f74206f60448201527f776e20746865204e465400000000000000000000000000000000000000000000606482015260840161068b565b6110d182612338565b5050565b6000806110e46104b284612341565b509392505050565b60006110f7826106b1565b905061074261110f6104e4546001600160a01b031690565b6001611237565b6000611122838361159d565b905061058a61110f6104e4546001600160a01b031690565b600061058a82604051806060016040528060298152602001613cd4602991396104b2919061235d565b60606104ba80546105a090613bd1565b60006001600160a01b0382166111f15760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f206164647265737300000000000000000000000000000000000000000000606482015260840161068b565b6001600160a01b03821660009081526104b16020526040902061058a9061236a565b61121b612374565b61122560006123cf565b565b60606104b880546105a090613bd1565b6001600160a01b0382163314156112905760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161068b565b3360008181526104b6602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61130561174e565b6113775760405162461bcd60e51b815260206004820152603460248201527f57657468696f41646d696e526f6c653a2063616c6c657220646f6573206e6f7460448201527f2068617665207468652041646d696e20726f6c65000000000000000000000000606482015260840161068b565b6113808361228d565b61138982612422565b610874816124b1565b61139c3383611a82565b61140e5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161068b565b6109ed84848484612555565b606061142582611740565b6114975760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000606482015260840161068b565b60008281526104b96020526040812080546114b190613bd1565b80601f01602080910402602001604051908101604052809291908181526020018280546114dd90613bd1565b801561152a5780601f106114ff5761010080835404028352916020019161152a565b820191906000526020600020905b81548152906001019060200180831161150d57829003601f168201915b505050505090506104ba805461153f90613bd1565b1515905061154d5792915050565b805115611580576104ba81604051602001611569929190613acf565b604051602081830303815290604052915050919050565b6104ba61158c846125de565b604051602001611569929190613acf565b60006001600160a01b03821661161b5760405162461bcd60e51b815260206004820152603260248201527f4e46543732314d696e743a20746f6b656e43726561746f725061796d656e744160448201527f6464726573732069732072657175697265640000000000000000000000000000606482015260840161068b565b611624836106b1565b905061058a818361272c565b6001600160a01b03821660009081526108cd60205260408082209051611657908490613aa7565b9081526040519081900360200190205460ff16905092915050565b61167a612374565b6001600160a01b0381166116f65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161068b565b6116ff816123cf565b50565b60006001600160e01b031982167f2a55205a00000000000000000000000000000000000000000000000000000000148061058a575061058a82612739565b600061058a6104b28361278f565b600080546201000090046001600160a01b03166040517f24d7806c0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0391909116906324d7806c9060240160206040518083038186803b1580156117bb57600080fd5b505afa1580156117cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a00919061388d565b610cb680546000918261180583613c0c565b919050559050611815338261279b565b61181f81836128b5565b80336001600160a01b03167fe7cd4ce7f2a465edc730269a1305e8a48bad821e8fb7e152ec413829c01a53c4846040516118599190613b30565b60405180910390a3919050565b60008281526110d1602052604080822054905184926001600160a01b038086169316917febd529444fe852bfccb40075e8f8cae7612ea20edebdf5143c72718ccb157f759190a460009182526110d1602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b60008181526104b56020526040902080546001600160a01b0319166001600160a01b03841690811790915581906119128261113a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6127106bffffffffffffffffffffffff821611156119d15760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c2065786365656460448201527f2073616c65507269636500000000000000000000000000000000000000000000606482015260840161068b565b6001600160a01b038216611a275760405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d65746572730000000000604482015260640161068b565b6040805180820182526001600160a01b0393841681526bffffffffffffffffffffffff9283166020808301918252600096875261048090529190942093519051909116600160a01b029116179055565b600061058a82612a1f565b6000611a8d82611740565b611aee5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161068b565b6000611af98361113a565b9050806001600160a01b0316846001600160a01b03161480611b345750836001600160a01b0316611b2984610623565b6001600160a01b0316145b80611b6557506001600160a01b0380821660009081526104b6602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316611b808261113a565b6001600160a01b031614611bfc5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e0000000000000000000000000000000000000000000000606482015260840161068b565b6001600160a01b038216611c775760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161068b565b611c826000826118dc565b6001600160a01b03831660009081526104b160205260409020611ca59082612a2a565b506001600160a01b03821660009081526104b160205260409020611cc99082612a36565b50611cd76104b28284612a42565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000610e508383612a58565b600054610100900460ff1615808015611d4a5750600054600160ff909116105b80611d645750303b158015611d64575060005460ff166001145b611dc75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161068b565b6000805460ff191660011790558015611dea576000805461ff0019166101001790555b6001600160a01b0382163b611e575760405162461bcd60e51b815260206004820152602d60248201527f57657468696f54726561737572794e6f64653a2041646472657373206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161068b565b6000805475ffffffffffffffffffffffffffffffffffffffff00001916620100006001600160a01b0385160217905580156110d1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b600054610100900460ff1615808015611ef05750600054600160ff909116105b80611f0a5750303b158015611f0a575060005460ff166001145b611f6d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161068b565b6000805460ff191660011790558015611f90576000805461ff0019166101001790555b6001600160a01b0382163b611ffc5760405162461bcd60e51b815260206004820152602c60248201527f57657468696f204d61726b65744e6f64653a2041646472657373206973206e6f60448201526b1d08184818dbdb9d1c9858dd60a21b606482015260840161068b565b6104e480546001600160a01b0319166001600160a01b03841617905580156110d1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001611ec4565b600054610100900460ff161580801561207a5750600054600160ff909116105b806120945750303b158015612094575060005460ff166001145b6120f75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161068b565b6000805460ff19166001179055801561211a576000805461ff0019166101001790555b612122612a90565b61212a612a90565b6121348383612afb565b8015610874576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b600054610100900460ff161580801561219e5750600054600160ff909116105b806121b85750303b1580156121b8575060005460ff166001145b61221b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161068b565b6000805460ff19166001179055801561223e576000805461ff0019166101001790555b6000610cb65580156116ff576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150565b61229681612c2e565b7f6741b2fc379fad678116fe3d4d4b9a1a184ab53ba36b86ad0fa66340b1ab41ad816040516122829190613b30565b600054610100900460ff166123305760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161068b565b611225612c42565b6116ff81612cb6565b60008080806123508686612cbf565b9097909650945050505050565b6000611b65848484612cea565b600061058a825490565b61109f546001600160a01b031633146112255760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068b565b61109f80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0381163b61248e5760405162461bcd60e51b815260206004820152602c60248201527f57657468696f204d61726b65744e6f64653a2041646472657373206973206e6f60448201526b1d08184818dbdb9d1c9858dd60a21b606482015260840161068b565b6104e480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381163b61251e5760405162461bcd60e51b815260206004820152602d60248201527f57657468696f54726561737572794e6f64653a2041646472657373206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161068b565b600080546001600160a01b03909216620100000275ffffffffffffffffffffffffffffffffffffffff000019909216919091179055565b612560848484611b6d565b61256c84848484612d36565b6109ed5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161068b565b60608161261e57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115612648578061263281613c0c565b91506126419050600a83613b5b565b9150612622565b60008167ffffffffffffffff81111561267157634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561269b576020820181803683370190505b5090505b8415611b65576126b0600183613b8e565b91506126bd600a86613c27565b6126c8906030613b43565b60f81b8183815181106126eb57634e487b7160e01b600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612725600a86613b5b565b945061269f565b6110d182826103e861194b565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316148061058a5750506001600160e01b031916600090815261044d602052604090205460ff1690565b6000610e508383612e31565b6001600160a01b0382166127f15760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161068b565b6127fa81611740565b156128475760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161068b565b6001600160a01b03821660009081526104b16020526040902061286a9082612a36565b506128786104b28284612a42565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b602e8151101561292d5760405162461bcd60e51b815260206004820152602160248201527f4e46543732314d657461646174613a20496e76616c696420495046532070617460448201527f6800000000000000000000000000000000000000000000000000000000000000606482015260840161068b565b3360009081526108cd602052604090819020905161294c908390613aa7565b9081526040519081900360200190205460ff16156129d25760405162461bcd60e51b815260206004820152602660248201527f4e46543732314d657461646174613a204e46542077617320616c72656164792060448201527f6d696e7465640000000000000000000000000000000000000000000000000000606482015260840161068b565b3360009081526108cd6020526040908190209051600191906129f5908490613aa7565b908152604051908190036020019020805491151560ff199092169190911790556110d18282612e50565b600061058a8261236a565b6000610e508383612eda565b6000610e508383612ff7565b6000611b6584846001600160a01b038516613046565b6000826000018281548110612a7d57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b600054610100900460ff166112255760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161068b565b600054610100900460ff1615808015612b1b5750600054600160ff909116105b80612b355750303b158015612b35575060005460ff166001145b612b985760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161068b565b6000805460ff191660011790558015612bbb576000805461ff0019166101001790555b8251612bcf906104b79060208601906133ae565b508151612be4906104b89060208501906133ae565b50612bf56380ac58cd60e01b613063565b612c05635b5e139f60e01b613063565b6121347f780e9d6300000000000000000000000000000000000000000000000000000000613063565b80516110d1906104ba9060208401906133ae565b600054610100900460ff16612cad5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161068b565b611225336123cf565b6116ff816130e3565b60008080612ccd8585611d1e565b600081815260029690960160205260409095205494959350505050565b600082815260028401602052604081205480151580612d0e5750612d0e8585612e31565b8390612d2d5760405162461bcd60e51b815260040161068b9190613b30565b50949350505050565b60006001600160a01b0384163b612d4f57506001611b65565b6000612dfa630a85bd0160e11b33888787604051602401612d739493929190613af4565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001613ca2603291396001600160a01b0388169190613130565b9050600081806020019051810190612e1291906138c5565b6001600160e01b031916630a85bd0160e11b1492505050949350505050565b6000610e50838360008181526001830160205260408120541515610e50565b612e5982611740565b612eba5760405162461bcd60e51b815260206004820152602c60248201527f4552433732314d657461646174613a2055524920736574206f66206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161068b565b60008281526104b9602090815260409091208251610874928401906133ae565b60008181526001830160205260408120548015612fed576000612efe600183613b8e565b8554909150600090612f1290600190613b8e565b9050818114612f93576000866000018281548110612f4057634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080876000018481548110612f7157634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612fb257634e487b7160e01b600052603160045260246000fd5b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061058a565b600091505061058a565b600081815260018301602052604081205461303e5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561058a565b50600061058a565b60008281526002840160205260408120829055611b658484612a36565b6001600160e01b031980821614156130bd5760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640161068b565b6001600160e01b031916600090815261044d60205260409020805460ff19166001179055565b3360009081526108cd602090815260408083208484526104b9909252918290209151909161311091613ac3565b908152604051908190036020019020805460ff191690556116ff8161313f565b6060611b6584846000856131fd565b600061314a8261113a565b90506131576000836118dc565b60008281526104b960205260409020805461317190613bd1565b1590506131905760008281526104b96020526040812061319091613432565b6001600160a01b03811660009081526104b1602052604090206131b39083612a2a565b506131c06104b283613345565b5060405182906000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6060824710156132755760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161068b565b6001600160a01b0385163b6132cc5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161068b565b600080866001600160a01b031685876040516132e89190613aa7565b60006040518083038185875af1925050503d8060008114613325576040519150601f19603f3d011682016040523d82523d6000602084013e61332a565b606091505b509150915061333a828286613351565b979650505050505050565b6000610e50838361338a565b60608315613360575081610e50565b8251156133705782518084602001fd5b8160405162461bcd60e51b815260040161068b9190613b30565b60008181526002830160205260408120819055610e5083836000610e508383612eda565b8280546133ba90613bd1565b90600052602060002090601f0160209004810192826133dc5760008555613422565b82601f106133f557805160ff1916838001178555613422565b82800160010185558215613422579182015b82811115613422578251825591602001919060010190613407565b5061342e929150613468565b5090565b50805461343e90613bd1565b6000825580601f1061344e575050565b601f0160209004906000526020600020908101906116ff91905b5b8082111561342e5760008155600101613469565b600067ffffffffffffffff8084111561349857613498613c67565b604051601f8501601f19908116603f011681019082821181831017156134c0576134c0613c67565b816040528093508581528686860111156134d957600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b038116811461074257600080fd5b60008083601f84011261351b578081fd5b50813567ffffffffffffffff811115613532578182fd5b6020830191508360208260051b8501011115610e2657600080fd5b600082601f83011261355d578081fd5b610e508383356020850161347d565b60006020828403121561357d578081fd5b610e50826134f3565b60008060408385031215613598578081fd5b6135a1836134f3565b91506135af602084016134f3565b90509250929050565b600080600080600060a086880312156135cf578081fd5b6135d8866134f3565b94506135e6602087016134f3565b9350604086013567ffffffffffffffff80821115613602578283fd5b61360e89838a0161354d565b94506060880135915080821115613623578283fd5b61362f89838a0161354d565b93506080880135915080821115613644578283fd5b506136518882890161354d565b9150509295509295909350565b600080600060608486031215613672578283fd5b61367b846134f3565b9250613689602085016134f3565b9150604084013590509250925092565b600080600080608085870312156136ae578384fd5b6136b7856134f3565b93506136c5602086016134f3565b925060408501359150606085013567ffffffffffffffff8111156136e7578182fd5b8501601f810187136136f7578182fd5b6137068782356020840161347d565b91505092959194509250565b60008060408385031215613724578182fd5b61372d836134f3565b9150602083013561373d81613c7d565b809150509250929050565b6000806040838503121561375a578182fd5b613763836134f3565b9150602083013567ffffffffffffffff81111561377e578182fd5b61378a8582860161354d565b9150509250929050565b600080604083850312156137a6578182fd5b6137af836134f3565b946020939093013593505050565b6000806000604084860312156137d1578283fd5b833567ffffffffffffffff8111156137e7578384fd5b6137f38682870161350a565b90945092506138069050602085016134f3565b90509250925092565b600080600080600060608688031215613826578081fd5b853567ffffffffffffffff8082111561383d578283fd5b61384989838a0161350a565b90975095506020880135915080821115613861578283fd5b5061386e8882890161350a565b90945092506138819050604087016134f3565b90509295509295909350565b60006020828403121561389e578081fd5b8151610e5081613c7d565b6000602082840312156138ba578081fd5b8135610e5081613c8b565b6000602082840312156138d6578081fd5b8151610e5081613c8b565b6000602082840312156138f2578081fd5b813567ffffffffffffffff811115613908578182fd5b611b658482850161354d565b60008060408385031215613926578182fd5b823567ffffffffffffffff81111561393c578283fd5b6139488582860161354d565b9250506135af602084016134f3565b60008060006060848603121561396b578081fd5b833567ffffffffffffffff811115613981578182fd5b61398d8682870161354d565b93505061399c602085016134f3565b9150613806604085016134f3565b6000602082840312156139bb578081fd5b5035919050565b600080604083850312156139d4578182fd5b50508035926020909101359150565b600081518084526139fb816020860160208601613ba5565b601f01601f19169290920160200192915050565b8054600090600181811c9080831680613a2957607f831692505b6020808410821415613a4957634e487b7160e01b86526022600452602486fd5b818015613a5d5760018114613a6e57613a9b565b60ff19861689528489019650613a9b565b60008881526020902060005b86811015613a935781548b820152908501908301613a7a565b505084890196505b50505050505092915050565b60008251613ab9818460208701613ba5565b9190910192915050565b6000610e508284613a0f565b6000613adb8285613a0f565b8351613aeb818360208801613ba5565b01949350505050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152613b2660808301846139e3565b9695505050505050565b602081526000610e5060208301846139e3565b60008219821115613b5657613b56613c3b565b500190565b600082613b6a57613b6a613c51565b500490565b6000816000190483118215151615613b8957613b89613c3b565b500290565b600082821015613ba057613ba0613c3b565b500390565b60005b83811015613bc0578181015183820152602001613ba8565b838111156109ed5750506000910152565b600181811c90821680613be557607f821691505b60208210811415613c0657634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613c2057613c20613c3b565b5060010190565b600082613c3657613c36613c51565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b80151581146116ff57600080fd5b6001600160e01b0319811681146116ff57600080fdfe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656ea26469706673582212205d2e873565587d2bd31d95fda7e6f7f919b77db7b30628d0f60b4813c38bd17d64736f6c63430008040033