[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "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": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "TokenBurned", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "TokenMinted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint16", "name": "tokenId", "type": "uint16" } ], "name": "TokenRevealed", "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" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "MAX_GEN0_TOKENS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_TOKENS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "addAdmin", "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getAddressWriteBlock", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getTokenMintBlock", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getTokenTraits", "outputs": [ { "components": [ { "internalType": "bool", "name": "isRevealed", "type": "bool" }, { "internalType": "bool", "name": "isHero", "type": "bool" }, { "internalType": "bool", "name": "isGen0", "type": "bool" }, { "internalType": "uint16", "name": "level", "type": "uint16" }, { "internalType": "uint256", "name": "lastLevelUpgradeTime", "type": "uint256" }, { "internalType": "uint8", "name": "rank", "type": "uint8" }, { "internalType": "uint256", "name": "lastRankUpgradeTime", "type": "uint256" }, { "internalType": "uint64", "name": "mintedBlockNumber", "type": "uint64" } ], "internalType": "struct INFT.HeroVillain", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getTokenWriteBlock", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getVillainRanks", "outputs": [ { "internalType": "uint8[4]", "name": "", "type": "uint8[4]" } ], "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": "tokenId", "type": "uint256" } ], "name": "isHero", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "bool", "name": "isGen0", "type": "bool" } ], "name": "mint", "outputs": [], "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": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "removeAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "tokenId", "type": "uint16" }, { "internalType": "uint256", "name": "seed", "type": "uint256" } ], "name": "revealTokenId", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "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": "address", "name": "_uGame", "type": "address" } ], "name": "setContracts", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_paused", "type": "bool" } ], "name": "setPaused", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "uri", "type": "string" } ], "name": "setRevealedBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "number", "type": "uint256" } ], "name": "setRoyaltyPermille", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint16", "name": "level", "type": "uint16" } ], "name": "setTraitLevel", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint8", "name": "rank", "type": "uint8" } ], "name": "setTraitRank", "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": "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": "tokensMinted", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "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": [], "name": "uGame", "outputs": [ { "internalType": "contract IGame", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "updateMaxGen0Token", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16[]", "name": "tokenIds", "type": "uint16[]" } ], "name": "updateOriginAccess", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "updateSupply", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "walletOfOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
61ea60600d55612ee0600e5561010060405260056080908152600660a052600760c052600860e0526200003790601190600462000156565b5060c8601655601780546001600160a01b03191673953666239e8e3cc4128b8f47f5f34927755376711790553480156200007057600080fd5b506040805180820182526009808252682a3432902537b5b2b960b91b602080840182815285518087019096529285528401528151919291620000b591600091620001f0565b508051620000cb906001906020840190620001f0565b505050620000e8620000e26200010060201b60201c565b62000104565b600a805460ff60a01b191690556001600b55620002c1565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600183019183908215620001de5791602002820160005b83821115620001ad57835183826101000a81548160ff021916908360ff16021790555092602001926001016020816000010492830192600103026200016d565b8015620001dc5782816101000a81549060ff0219169055600101602081600001049283019260010302620001ad565b505b50620001ec9291506200026d565b5090565b828054620001fe9062000284565b90600052602060002090601f016020900481019282620002225760008555620001de565b82601f106200023d57805160ff1916838001178555620001de565b82800160010185558215620001de579182015b82811115620001de57825182559160200191906001019062000250565b5b80821115620001ec57600081556001016200026e565b600181811c908216806200029957607f821691505b60208210811415620002bb57634e487b7160e01b600052602260045260246000fd5b50919050565b613de180620002d16000396000f3fe608060405234801561001057600080fd5b50600436106102955760003560e01c80636352211e11610167578063a76e6bc4116100ce578063dac55cd411610087578063dac55cd4146105ea578063e985e9c5146105fd578063ebd1736814610610578063ee525fef14610623578063f2fde38b14610636578063f47c84c51461064957600080fd5b8063a76e6bc414610582578063ac32d3b414610595578063ad789acb146105a8578063b88d4fde146105b1578063c87b56dd146105c4578063cb0f103e146105d757600080fd5b8063715018a611610120578063715018a6146105225780638da5cb5b1461052a57806394e568471461053257806395d89b4114610552578063a22cb4651461055a578063a5a57fdf1461056d57600080fd5b80636352211e146104a25780636bd08049146104b55780636de9f32b146104c85780636e83843a146104e957806370480275146104fc57806370a082311461050f57600080fd5b80632f745c591161020b57806342966c68116101c457806342966c6814610439578063438b63001461044c5780634a5f3a731461046c5780634f6ccce7146104745780635a2e2f47146104875780635c975abb1461049a57600080fd5b80632f745c59146103ba57806332385e25146103cd57806335ca838b146103f857806336a54b901461040b5780633ccfd60b1461041e57806342842e0e1461042657600080fd5b80631785f53c1161025d5780631785f53c1461032a57806318160ddd1461033d5780632097d3fb1461034f57806323b872dd146103625780632a55205a146103755780632e9f3f67146103a757600080fd5b806301ffc9a71461029a57806306fdde03146102c2578063081812fc146102d7578063095ea7b31461030257806316c38b3c14610317575b600080fd5b6102ad6102a836600461319a565b610652565b60405190151581526020015b60405180910390f35b6102ca61067d565b6040516102b9919061320f565b6102ea6102e5366004613222565b61070f565b6040516001600160a01b0390911681526020016102b9565b610315610310366004613252565b61071a565b005b61031561032536600461328a565b610728565b6103156103383660046132a7565b6107cd565b6008545b6040519081526020016102b9565b61031561035d3660046132c2565b61081d565b6103156103703660046132f9565b610a6a565b610388610383366004613335565b610aa7565b604080516001600160a01b0390931683526020830191909152016102b9565b6103156103b5366004613222565b610ae1565b6103416103c8366004613252565b610b15565b6103e06103db366004613222565b610c5e565b6040516001600160401b0390911681526020016102b9565b6103156104063660046133ad565b610d23565b6102ad610419366004613222565b610e5b565b610315610f60565b6103156104343660046132f9565b610fcf565b610315610447366004613222565b610fdf565b61045f61045a3660046132a7565b6110f0565b6040516102b9919061345e565b6103e0611189565b610341610482366004613222565b6111dc565b6103156104953660046132a7565b6112dc565b6102ad61132d565b6102ea6104b0366004613222565b61133d565b6103156104c3366004613222565b611394565b600f546104d69061ffff1681565b60405161ffff90911681526020016102b9565b6103156104f73660046134a2565b6113c8565b61031561050a3660046132a7565b611403565b61034161051d3660046132a7565b611456565b6103156114a7565b6102ea6114e2565b610545610540366004613222565b6114f1565b6040516102b99190613513565b6102ca6115b8565b6103156105683660046132c2565b6115c7565b6105756115d1565b6040516102b9919061358b565b6103156105903660046135bf565b611658565b6103156105a33660046135f3565b6118bf565b610341600e5481565b6103156105bf366004613618565b611a92565b6102ca6105d2366004613222565b611a9e565b6103156105e5366004613222565b611c20565b600c546102ea906001600160a01b031681565b6102ad61060b3660046136d7565b611c54565b6103e061061e366004613222565b611c87565b61031561063136600461370a565b611cd9565b6103156106443660046132a7565b611d55565b610341600d5481565b60006001600160e01b0319821663152a902d60e11b1480610677575061067782611df2565b92915050565b60606000805461068c90613728565b80601f01602080910402602001604051908101604052809291908181526020018280546106b890613728565b80156107055780601f106106da57610100808354040283529160200191610705565b820191906000526020600020905b8154815290600101906020018083116106e857829003601f168201915b5050505050905090565b600061067782611e17565b6107248282611e9f565b5050565b600c546001600160a01b03166107855760405162461bcd60e51b815260206004820152601a60248201527f4e46543a2047616d6520636f6e7472616374206e6f742073657400000000000060448201526064015b60405180910390fd5b3361078e6114e2565b6001600160a01b0316146107b45760405162461bcd60e51b815260040161077c90613763565b80156107c5576107c2611fab565b50565b6107c2612028565b336107d66114e2565b6001600160a01b0316146107fc5760405162461bcd60e51b815260040161077c90613763565b6001600160a01b03166000908152601060205260409020805460ff19169055565b61082561132d565b156108425760405162461bcd60e51b815260040161077c90613798565b6002600b5414156108655760405162461bcd60e51b815260040161077c906137c2565b6002600b553360009081526010602052604090205460ff166108995760405162461bcd60e51b815260040161077c906137f9565b600d54600f546108ae9061ffff166001613846565b61ffff1611156108f95760405162461bcd60e51b81526020600482015260166024820152751391950e88105b1b081d1bdad95b9cc81b5a5b9d195960521b604482015260640161077c565b600f805461ffff1690600061090d8361386c565b91906101000a81548161ffff021916908361ffff16021790555050610930613089565b8115156040828101918252436001600160401b0390811660e08501908152600f805461ffff9081166000908152601260209081529590208751815496890151975160608a015161ffff1990981691151561ff00191691909117610100981515989098029790971764ffffff00001916620100009715159790970264ffff0000001916969096176301000000958216959095029490941785556080860151600186015560a086015160028601805460ff191660ff90921691909117905560c0860151600386015590516004909401805467ffffffffffffffff1916949092169390931790559054610a22918591166120a7565b600f5460405161ffff909116906001600160a01b038516907fb9144c96c86541f6fa89c9f2f02495cccf4b08cd6643e26d34ee00aa586558a890600090a350506001600b5550565b6002600b541415610a8d5760405162461bcd60e51b815260040161077c906137c2565b6002600b55610a9d8383836120c1565b50506001600b5550565b60175460165460009182916001600160a01b03909116906103e890610acc908661388e565b610ad691906138c3565b915091509250929050565b33610aea6114e2565b6001600160a01b031614610b105760405162461bcd60e51b815260040161077c90613763565b601655565b6001600160a01b03821660009081526013602052604081205443600160401b9091046001600160401b031610610b5d5760405162461bcd60e51b815260040161077c906138d7565b6000610b6984846120f2565b60008181526014602052604090205490915043600160401b9091046001600160401b031610610baa5760405162461bcd60e51b815260040161077c906138d7565b60008181526012602090815260409182902082516101008082018552825460ff8082161515845291810482161515948301949094526201000084048116151594820194909452630100000090920461ffff16606083015260018101546080830152600281015490921660a0820152600382015460c08201526004909101546001600160401b031660e082018190524311610c565760405162461bcd60e51b815260040161077c906138d7565b509392505050565b3360009081526010602052604081205460ff16610c8d5760405162461bcd60e51b815260040161077c906137f9565b5060008181526012602090815260409182902082516101008082018552825460ff8082161515845291810482161515948301949094526201000084048116151594820194909452630100000090920461ffff16606083015260018101546080830152600281015490921660a0820152600382015460c08201526004909101546001600160401b031660e09091018190525b919050565b3360009081526010602052604090205460ff16610d525760405162461bcd60e51b815260040161077c906137f9565b6040805180820182526001600160401b0342818116835243828116602080860191825232600090815260139091529586209451855491518516600160401b026001600160801b031990921694169390931792909217909255915b8351811015610e55576040518060400160405280836001600160401b03168152602001846001600160401b031681525060146000868481518110610df257610df26138fb565b60209081029190910181015161ffff168252818101929092526040016000208251815493909201516001600160401b03908116600160401b026001600160801b031990941692169190911791909117905580610e4d81613911565b915050610dac565b50505050565b6000610e6682612188565b610eae5760405162461bcd60e51b81526020600482015260196024820152781391950e88151bdad95b88191bd95cc81b9bdd08195e1a5cdd603a1b604482015260640161077c565b60008281526012602090815260409182902082516101008082018552825460ff808216151580855292820481161515958401959095526201000081048516151595830195909552630100000090940461ffff16606082015260018201546080820152600282015490921660a0830152600381015460c0830152600401546001600160401b031660e082015290610f565760405162461bcd60e51b815260040161077c9061392c565b6020015192915050565b33610f696114e2565b6001600160a01b031614610f8f5760405162461bcd60e51b815260040161077c90613763565b610f976114e2565b6001600160a01b03166108fc479081150290604051600060405180830381858888f193505050501580156107c2573d6000803e3d6000fd5b610fda8383836121a5565b505050565b610fe761132d565b156110045760405162461bcd60e51b815260040161077c90613798565b6002600b5414156110275760405162461bcd60e51b815260040161077c906137c2565b6002600b553360009081526010602052604090205460ff1661105b5760405162461bcd60e51b815260040161077c906137f9565b806110658261133d565b6001600160a01b03167f1af5163f80e79b5e554f61e1d052084d3a3fe1166e42a265798c4e2ddce8ffa260405160405180910390a36110a3816121c0565b6000908152601260205260408120805464ffffffffff19168155600180820183905560028201805460ff191690556003820192909255600401805467ffffffffffffffff19169055600b55565b606060006110fd83611456565b90506000816001600160401b0381111561111957611119613357565b604051908082528060200260200182016040528015611142578160200160208202803683370190505b50905060005b82811015610c565761115a8582610b15565b82828151811061116c5761116c6138fb565b60209081029190910101528061118181613911565b915050611148565b3360009081526010602052604081205460ff166111b85760405162461bcd60e51b815260040161077c906137f9565b5032600090815260136020526040902054600160401b90046001600160401b031690565b6000806111e883612255565b60008181526014602052604090205490915043600160401b9091046001600160401b0316106112295760405162461bcd60e51b815260040161077c906138d7565b60008181526012602090815260409182902082516101008082018552825460ff8082161515845291810482161515948301949094526201000084048116151594820194909452630100000090920461ffff16606083015260018101546080830152600281015490921660a0820152600382015460c08201526004909101546001600160401b031660e0820181905243116112d55760405162461bcd60e51b815260040161077c906138d7565b5092915050565b336112e56114e2565b6001600160a01b03161461130b5760405162461bcd60e51b815260040161077c90613763565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600a54600160a01b900460ff1690565b600080611349836122e8565b6001600160a01b03811660009081526013602052604090205490915043600160401b9091046001600160401b0316106106775760405162461bcd60e51b815260040161077c906138d7565b3361139d6114e2565b6001600160a01b0316146113c35760405162461bcd60e51b815260040161077c90613763565b600d55565b336113d16114e2565b6001600160a01b0316146113f75760405162461bcd60e51b815260040161077c90613763565b610fda601583836130cd565b3361140c6114e2565b6001600160a01b0316146114325760405162461bcd60e51b815260040161077c90613763565b6001600160a01b03166000908152601060205260409020805460ff19166001179055565b6001600160a01b03811660009081526013602052604081205443600160401b9091046001600160401b03161061149e5760405162461bcd60e51b815260040161077c906138d7565b6106778261235f565b336114b06114e2565b6001600160a01b0316146114d65760405162461bcd60e51b815260040161077c90613763565b6114e060006123e6565b565b600a546001600160a01b031690565b6114f9613089565b3360009081526010602052604090205460ff166115285760405162461bcd60e51b815260040161077c906137f9565b5060009081526012602090815260409182902082516101008082018552825460ff8082161515845291810482161515948301949094526201000084048116151594820194909452630100000090920461ffff16606083015260018101546080830152600281015490921660a0820152600382015460c08201526004909101546001600160401b031660e082015290565b60606001805461068c90613728565b6107248282612438565b6115d9613151565b3360009081526010602052604090205460ff166116085760405162461bcd60e51b815260040161077c906137f9565b60408051608081019182905290601190600490826000855b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116116205790505050505050905090565b61166061132d565b1561167d5760405162461bcd60e51b815260040161077c90613798565b3360009081526010602052604090205460ff166116ac5760405162461bcd60e51b815260040161077c906137f9565b600060126000848152602001908152602001600020604051806101000160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff161515151581526020016000820160029054906101000a900460ff161515151581526020016000820160039054906101000a900461ffff1661ffff1661ffff168152602001600182015481526020016002820160009054906101000a900460ff1660ff1660ff168152602001600382015481526020016004820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681525050905081816060019061ffff16908161ffff168152505042816080018181525050806012600085815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff02191690831515021790555060408201518160000160026101000a81548160ff02191690831515021790555060608201518160000160036101000a81548161ffff021916908361ffff1602179055506080820151816001015560a08201518160020160006101000a81548160ff021916908360ff16021790555060c0820151816003015560e08201518160040160006101000a8154816001600160401b0302191690836001600160401b03160217905550905050505050565b6118c761132d565b156118e45760405162461bcd60e51b815260040161077c90613798565b3360009081526010602052604090205460ff166119135760405162461bcd60e51b815260040161077c906137f9565b60008281526012602090815260409182902082516101008082018552825460ff808216151580855292820481161515958401959095526201000081048516151595830195909552630100000090940461ffff16606082015260018201546080820152600282015490921660a0830152600381015460c0830152600401546001600160401b031660e0820152906119bb5760405162461bcd60e51b815260040161077c9061392c565b60ff91821660a082019081524260c08301908152600094855260126020908152604095869020845181549286015197860151606087015161ffff1990941691151561ff00191691909117610100981515989098029790971764ffffff00001916620100009715159790970264ffff000000191696909617630100000061ffff9092169190910217855560808301516001860155905160028501805460ff191691909416179092559051600383015560e001516004909101805467ffffffffffffffff19166001600160401b03909216919091179055565b610e5584848484612443565b600c546040516314834e8b60e31b81526004810183905260609182916000916001600160a01b03169063a41a74589060240161010060405180830381865afa158015611aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b12919061399b565b9050611b1d84612188565b8015611b27575080515b15611bf45781611b3685612475565b611b548360200151611b49576000611b4c565b60015b60ff16612475565b611b6e8460400151611b67576001611b4c565b6000612475565b604051602001611b819493929190613a72565b604051602081830303815290604052915081611ba4826060015161ffff16612475565b611bb18360800151612475565b611bc18460a0015160ff16612475565b611bce8560c00151612475565b604051602001611be2959493929190613aea565b60405160208183030381529060405291505b601582604051602001611c08929190613b77565b60405160208183030381529060405292505050919050565b33611c296114e2565b6001600160a01b031614611c4f5760405162461bcd60e51b815260040161077c90613763565b600e55565b6001600160a01b03808316600090815260056020908152604080832093851683529290529081205460ff165b9392505050565b3360009081526010602052604081205460ff16611cb65760405162461bcd60e51b815260040161077c906137f9565b50600090815260146020526040902054600160401b90046001600160401b031690565b3360009081526010602052604090205460ff16611d085760405162461bcd60e51b815260040161077c906137f9565b611d168261ffff168261257a565b506040805161ffff84168152905133917f1c1084a8de078a6ff77fc503f87d9710c34e080459c15ab29b64bb9ce9dc4c4d919081900360200190a25050565b33611d5e6114e2565b6001600160a01b031614611d845760405162461bcd60e51b815260040161077c90613763565b6001600160a01b038116611de95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161077c565b6107c2816123e6565b60006001600160e01b0319821663780e9d6360e01b14806106775750610677826127d0565b6000611e2282612188565b611e835760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161077c565b506000908152600460205260409020546001600160a01b031690565b6000611eaa826122e8565b9050806001600160a01b0316836001600160a01b03161415611f185760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161077c565b336001600160a01b0382161480611f345750611f348133611c54565b611fa15760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776044820152771b995c881b9bdc88185c1c1c9bdd995908199bdc88185b1b60421b606482015260840161077c565b610fda8383612820565b611fb361132d565b15611fd05760405162461bcd60e51b815260040161077c90613798565b600a805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861200b3390565b6040516001600160a01b03909116815260200160405180910390a1565b61203061132d565b6120735760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161077c565b600a805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa3361200b565b61072482826040518060200160405280600081525061288e565b6120cb33826128c1565b6120e75760405162461bcd60e51b815260040161077c90613c35565b610fda838383612983565b60006120fd8361235f565b821061215f5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b606482015260840161077c565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6000908152600260205260409020546001600160a01b0316151590565b610fda83838360405180602001604052806000815250611a92565b60006121cb826122e8565b90506121d981600084612b18565b6121e4600083612820565b6001600160a01b038116600090815260036020526040812080546001929061220d908490613c86565b909155505060008281526002602052604080822080546001600160a01b0319169055518391906001600160a01b03841690600080516020613d8c833981519152908390a45050565b600061226060085490565b82106122c35760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b606482015260840161077c565b600882815481106122d6576122d66138fb565b90600052602060002001549050919050565b6000818152600260205260408120546001600160a01b0316806106775760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161077c565b60006001600160a01b0382166123ca5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161077c565b506001600160a01b031660009081526003602052604090205490565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610724338383612bd0565b61244d33836128c1565b6124695760405162461bcd60e51b815260040161077c90613c35565b610e5584848484612c9b565b6060816124995750506040805180820190915260018152600360fc1b602082015290565b8160005b81156124c357806124ad81613911565b91506124bc9050600a836138c3565b915061249d565b6000816001600160401b038111156124dd576124dd613357565b6040519080825280601f01601f191660200182016040528015612507576020820181803683370190505b5090505b84156125725761251c600183613c86565b9150612529600a86613c9d565b612534906030613cb1565b60f81b818381518110612549576125496138fb565b60200101906001600160f81b031916908160001a90535061256b600a866138c3565b945061250b565b949350505050565b612582613089565b5060008281526012602090815260409182902082516101008082018552825460ff808216158015855292820481161515958401959095526201000081048516151595830195909552630100000090940461ffff16606082015260018201546080820152600282015490921660a0830152600381015460c0830152600401546001600160401b031660e08201529061265b5760405162461bcd60e51b815260206004820152601e60248201527f4e46543a20546f6b656e20697320616c72656164792072657665616c65640000604482015260640161077c565b438160e001516001600160401b0316106126875760405162461bcd60e51b815260040161077c906138d7565b612696601461ffff8416613c9d565b1515602082015260109190911c9060006126b260016004613c86565b8316905060118160ff16600481106126cc576126cc6138fb565b60208082049290920154601f90911661010090810a90910460ff90811660a086019081524260c0870181815260109890981c600390811660608901908152608089019283526001808a5260009b8c526012885260409b8c90208a518154998c01519d8c0151935161ffff19909a1690151561ff001916179c15159097029b909b1764ffffff00001916620100009115159190910264ffff000000191617630100000061ffff909716969096029590951784555197830197909755955160028201805460ff1916919097161790955592519284019290925560e08101516004909301805467ffffffffffffffff19166001600160401b03909416939093179092555090565b60006001600160e01b031982166380ac58cd60e01b148061280157506001600160e01b03198216635b5e139f60e01b145b8061067757506301ffc9a760e01b6001600160e01b0319831614610677565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612855826122e8565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6128988383612cce565b6128a56000848484612dfb565b610fda5760405162461bcd60e51b815260040161077c90613cc9565b60006128cc82612188565b61292d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161077c565b6000612938836122e8565b9050806001600160a01b0316846001600160a01b031614806129735750836001600160a01b03166129688461070f565b6001600160a01b0316145b8061257257506125728185611c54565b826001600160a01b0316612996826122e8565b6001600160a01b0316146129fa5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161077c565b6001600160a01b038216612a5c5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161077c565b612a67838383612b18565b612a72600082612820565b6001600160a01b0383166000908152600360205260408120805460019290612a9b908490613c86565b90915550506001600160a01b0382166000908152600360205260408120805460019290612ac9908490613cb1565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b038681169182179092559151849391871691600080516020613d8c83398151915291a4505050565b6001600160a01b038316612b7357612b6e81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b612b96565b816001600160a01b0316836001600160a01b031614612b9657612b968382612ef9565b6001600160a01b038216612bad57610fda81612f96565b826001600160a01b0316826001600160a01b031614610fda57610fda8282613045565b816001600160a01b0316836001600160a01b03161415612c2e5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b604482015260640161077c565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612ca6848484612983565b612cb284848484612dfb565b610e555760405162461bcd60e51b815260040161077c90613cc9565b6001600160a01b038216612d245760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b612d2d81612188565b15612d7a5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b612d8660008383612b18565b6001600160a01b0382166000908152600360205260408120805460019290612daf908490613cb1565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386169081179091559051839290600080516020613d8c833981519152908290a45050565b60006001600160a01b0384163b15612eee57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612e3f903390899088908890600401613d1b565b6020604051808303816000875af1925050508015612e7a575060408051601f3d908101601f19168201909252612e7791810190613d58565b60015b612ed4573d808015612ea8576040519150601f19603f3d011682016040523d82523d6000602084013e612ead565b606091505b508051612ecc5760405162461bcd60e51b815260040161077c90613cc9565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612572565b506001949350505050565b60006001612f068461235f565b612f109190613c86565b600083815260076020526040902054909150808214612f63576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b600854600090612fa890600190613c86565b60008381526009602052604081205460088054939450909284908110612fd057612fd06138fb565b906000526020600020015490508060088381548110612ff157612ff16138fb565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061302957613029613d75565b6001900381819060005260206000200160009055905550505050565b60006130508361235f565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b8280546130d990613728565b90600052602060002090601f0160209004810192826130fb5760008555613141565b82601f106131145782800160ff19823516178555613141565b82800160010185558215613141579182015b82811115613141578235825591602001919060010190613126565b5061314d92915061316f565b5090565b60405180608001604052806004906020820280368337509192915050565b5b8082111561314d5760008155600101613170565b6001600160e01b0319811681146107c257600080fd5b6000602082840312156131ac57600080fd5b8135611c8081613184565b60005b838110156131d25781810151838201526020016131ba565b83811115610e555750506000910152565b600081518084526131fb8160208601602086016131b7565b601f01601f19169290920160200192915050565b602081526000611c8060208301846131e3565b60006020828403121561323457600080fd5b5035919050565b80356001600160a01b0381168114610d1e57600080fd5b6000806040838503121561326557600080fd5b61326e8361323b565b946020939093013593505050565b80151581146107c257600080fd5b60006020828403121561329c57600080fd5b8135611c808161327c565b6000602082840312156132b957600080fd5b611c808261323b565b600080604083850312156132d557600080fd5b6132de8361323b565b915060208301356132ee8161327c565b809150509250929050565b60008060006060848603121561330e57600080fd5b6133178461323b565b92506133256020850161323b565b9150604084013590509250925092565b6000806040838503121561334857600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561339557613395613357565b604052919050565b61ffff811681146107c257600080fd5b600060208083850312156133c057600080fd5b82356001600160401b03808211156133d757600080fd5b818501915085601f8301126133eb57600080fd5b8135818111156133fd576133fd613357565b8060051b915061340e84830161336d565b818152918301840191848101908884111561342857600080fd5b938501935b8385101561345257843592506134428361339d565b828252938501939085019061342d565b98975050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156134965783518352928401929184019160010161347a565b50909695505050505050565b600080602083850312156134b557600080fd5b82356001600160401b03808211156134cc57600080fd5b818501915085601f8301126134e057600080fd5b8135818111156134ef57600080fd5b86602082850101111561350157600080fd5b60209290920196919550909350505050565b60006101008201905082511515825260208301511515602083015260408301511515604083015261ffff60608401511660608301526080830151608083015260a083015161356660a084018260ff169052565b5060c083015160c083015260e08301516112d560e08401826001600160401b03169052565b60808101818360005b60048110156135b657815160ff16835260209283019290910190600101613594565b50505092915050565b600080604083850312156135d257600080fd5b8235915060208301356132ee8161339d565b60ff811681146107c257600080fd5b6000806040838503121561360657600080fd5b8235915060208301356132ee816135e4565b6000806000806080858703121561362e57600080fd5b6136378561323b565b9350602061364681870161323b565b93506040860135925060608601356001600160401b038082111561366957600080fd5b818801915088601f83011261367d57600080fd5b81358181111561368f5761368f613357565b6136a1601f8201601f1916850161336d565b915080825289848285010111156136b757600080fd5b808484018584013760008482840101525080935050505092959194509250565b600080604083850312156136ea57600080fd5b6136f38361323b565b91506137016020840161323b565b90509250929050565b6000806040838503121561371d57600080fd5b823561326e8161339d565b600181811c9082168061373c57607f821691505b6020821081141561375d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601e908201527f4e46543a204f6e6c792061646d696e732063616e2063616c6c20746869730000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600061ffff80831681851680830382111561386357613863613830565b01949350505050565b600061ffff8083168181141561388457613884613830565b6001019392505050565b60008160001904831182151516156138a8576138a8613830565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826138d2576138d26138ad565b500490565b6020808252600a90820152694e46543a204e6f70652160b01b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600060001982141561392557613925613830565b5060010190565b6020808252601e908201527f4e46543a20546f6b656e206973206e6f74207965742072657665616c65640000604082015260600190565b8051610d1e8161327c565b8051610d1e8161339d565b8051610d1e816135e4565b80516001600160401b0381168114610d1e57600080fd5b60006101008083850312156139af57600080fd5b604051908101906001600160401b03821181831017156139d1576139d1613357565b81604052835191506139e28261327c565b8181526139f160208501613963565b6020820152613a0260408501613963565b6040820152613a136060850161396e565b606082015260808401516080820152613a2e60a08501613979565b60a082015260c084015160c0820152613a4960e08501613984565b60e0820152949350505050565b60008151613a688185602086016131b7565b9290920192915050565b60008551613a84818460208a016131b7565b855190830190613a98818360208a016131b7565b600b60fa1b91018181528551909190613ab8816001850160208a016131b7565b600192019182018190528451613ad58160028501602089016131b7565b60029201918201526003019695505050505050565b60008651613afc818460208b016131b7565b865190830190613b10818360208b016131b7565b600b60fa1b91018181528651909190613b30816001850160208b016131b7565b600192019182018190528551613b4d816002850160208a016131b7565b60029201918201528351613b688160038401602088016131b7565b01600301979650505050505050565b600080845481600182811c915080831680613b9357607f831692505b6020808410821415613bb357634e487b7160e01b86526022600452602486fd5b818015613bc75760018114613bd857613c05565b60ff19861689528489019650613c05565b60008b81526020902060005b86811015613bfd5781548b820152908501908301613be4565b505084890196505b505050505050613c2c613c2682673f7472616974733d60c01b815260080190565b85613a56565b95945050505050565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b600082821015613c9857613c98613830565b500390565b600082613cac57613cac6138ad565b500690565b60008219821115613cc457613cc4613830565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613d4e908301846131e3565b9695505050505050565b600060208284031215613d6a57600080fd5b8151611c8081613184565b634e487b7160e01b600052603160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209d62f8fa5551a1623f4c524582dd27906bd5cf228e565100a4081ba60109017c64736f6c634300080b0033