0 txs
451 calls
constructor
constructor()
functions
_getCatsListFromIdArray
viewfunction _getCatsListFromIdArray(uint256[] playedIds) view returns (tuple[])
_getPagedIds
purefunction _getPagedIds(uint256[] idsArray, uint256 offset, uint16 pageSize) pure returns (uint256[])
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
baseURI
viewfunction baseURI() view returns (string)
calculateBurnValues
viewfunction calculateBurnValues() view returns (uint256 mintShareWeth, uint256 poolAContribution)
calculatePoolA
viewfunction calculatePoolA() view returns (uint256 poolA)
canBuy
viewfunction canBuy(uint256 smartcatTokenId, bytes signature) view returns (bool)
catsThatHavePlayed
viewfunction catsThatHavePlayed(uint256 tokenId) view returns (uint256[])
contractURI
viewfunction contractURI() view returns (string)
expectedBurnValue
viewfunction expectedBurnValue() view returns (uint256 burnShareWETH, uint256 burnShareMatic)
FEE_FACTOR
viewfunction FEE_FACTOR() view returns (uint256)
getAllLoots
viewfunction getAllLoots() view returns (tuple[])
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getCatsList
viewfunction getCatsList(uint256 toyId) view returns (tuple[])
getCatsListPaged
viewfunction getCatsListPaged(uint256 toyId, uint256 offset, uint16 pageSize) view returns (tuple[] list, uint256 total)
getEthSignedMessageHash
purefunction getEthSignedMessageHash(bytes32 messageHash) pure returns (bytes32)
getMessageHash
viewfunction getMessageHash() view returns (bytes32)
getMintPrice
viewfunction getMintPrice() view returns (uint256)
getPointBalances
viewfunction getPointBalances(uint256[] tokenIds) view returns (tuple[])
hasCatPlayed
viewfunction hasCatPlayed(uint256 tokenId, uint256 smartCatTokenId) view returns (bool)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
maticPayout
viewfunction maticPayout() view returns (uint256 burnShareMatic)
mintStartTime
viewfunction mintStartTime() view returns (uint256)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
POINTS_PER_PLAY
viewfunction POINTS_PER_PLAY() view returns (uint256)
pointsBalance
viewfunction pointsBalance(uint256 tokenId) view returns (uint256)
pointsPerPlay
purefunction pointsPerPlay() pure returns (uint256)
POOL_A_FACTOR
viewfunction POOL_A_FACTOR() view returns (uint256)
POOL_B_FACTOR
viewfunction POOL_B_FACTOR() view returns (uint256)
PROTOCOL_FEE_FACTOR
viewfunction PROTOCOL_FEE_FACTOR() view returns (uint256)
recover
purefunction recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) pure returns (address)
royaltyInfo
viewfunction royaltyInfo(uint256 tokenId, uint256 salePrice) view returns (address receiver, uint256 royaltyAmount)
scriptURI
viewfunction scriptURI() view returns (string[])
STAGE1_PREFIX
viewfunction STAGE1_PREFIX() view returns (string)
STL_FEE_FACTOR
viewfunction STL_FEE_FACTOR() view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenByIndex
viewfunction tokenByIndex(uint256 index) view returns (uint256)
tokenOfOwnerByIndex
viewfunction tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)
tokensMinted
viewfunction tokensMinted() view returns (uint256)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
wethPayout
viewfunction wethPayout() view returns (uint256 burnShareWETH)
WITHDRAW_DEPOSIT_FACTOR
viewfunction WITHDRAW_DEPOSIT_FACTOR() view returns (uint256)
approve
nonpayablefunction approve(address to, uint256 tokenId)
burn
nonpayablefunction burn(uint256 tokenId)
buy
nonpayablefunction buy(uint256 smartcatTokenId, bytes signature)
initialize
nonpayablefunction initialize(address initialOwner, address wethContract, address smartcatNftContract, address smartcatScoreContract)
play
nonpayablefunction play(uint256 tokenId, uint256 smartcatTokenId)
renounceOwnership
nonpayablefunction renounceOwnership()
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setBaseURI
nonpayablefunction setBaseURI(string newBaseURI)
setMaxTokens
nonpayablefunction setMaxTokens(uint256 newMaxTokens)
setScriptURI
nonpayablefunction setScriptURI(string[] newScriptURI)
setSmartCatLootPool
nonpayablefunction setSmartCatLootPool(address lootPoolContract)
setSmartCatMintFeePool
nonpayablefunction setSmartCatMintFeePool(address mintFeePool)
setVerifier
nonpayablefunction setVerifier(address newVerifier)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateMintFee
nonpayablefunction updateMintFee(uint256 newMintFee)
updateStartTime
nonpayablefunction updateStartTime(uint256 newStartTime)
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
BaseUriUpdate
event BaseUriUpdate(string uri)
Initialized
event Initialized(uint64 version)
MintFeeUpdate
event MintFeeUpdate(uint256 price)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RoyaltyContractUpdate
event RoyaltyContractUpdate(address indexed newAddress)
RoyaltyUpdated
event RoyaltyUpdated(uint256 value)
ScriptUpdate
event ScriptUpdate(string[])
SetVerifier
event SetVerifier(address verifier)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
UpdateStartTime
event UpdateStartTime(uint256 newStartTime)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
ERC721IncorrectOwner
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner)
ERC721InsufficientApproval
error ERC721InsufficientApproval(address operator, uint256 tokenId)
ERC721InvalidApprover
error ERC721InvalidApprover(address approver)
ERC721InvalidOperator
error ERC721InvalidOperator(address operator)
ERC721InvalidOwner
error ERC721InvalidOwner(address owner)
ERC721InvalidReceiver
error ERC721InvalidReceiver(address receiver)
ERC721InvalidSender
error ERC721InvalidSender(address sender)
ERC721NonexistentToken
error ERC721NonexistentToken(uint256 tokenId)
FailedInnerCall
error FailedInnerCall()
IndexOutOfBounds
error IndexOutOfBounds()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
ZeroAddressCantBeOwner
error ZeroAddressCantBeOwner()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6140c180620000e66000396000f3fe608060405234801561001057600080fd5b50600436106103db5760003560e01c8063794c05af1161020a578063b80880cf11610125578063e8a3d485116100b8578063ef46dcf311610087578063ef46dcf31461085e578063f2fde38b14610873578063f83e98fb14610780578063f8c8765e14610886578063fa5408011461089957600080fd5b8063e8a3d48514610810578063e96f81aa14610818578063e985e9c51461082b578063eae9f1131461083e57600080fd5b8063c87b56dd116100f4578063c87b56dd146107b7578063d5bffcfa146107ca578063d8423c6f146107ea578063e3d61eb3146107fd57600080fd5b8063b80880cf14610780578063b88d4fde14610789578063bfe1e0e41461079c578063c2bf17b0146107a457600080fd5b80638da5cb5b1161019d578063a68b5d811161016c578063a68b5d811461072a578063a7f93ebd1461073d578063b0556d3014610745578063b63d536c1461074d57600080fd5b80638da5cb5b146106d6578063931e2e491461070657806395d89b411461070f578063a22cb4651461071757600080fd5b806383ead51b116101d957806383ead51b146106a157806384017e52146106a8578063845c5023146106bb5780638b7019e4146106c357600080fd5b8063794c05af1461066057806379941334146106735780637bc49a951461067b578063821895511461068e57600080fd5b806342966c68116102fa5780636352211e1161028d5780636ed7e4301161025c5780636ed7e4301461061257806370a0823114610625578063715018a614610638578063759723931461064057600080fd5b80636352211e146105e6578063667d7068146105f95780636c0360eb146106025780636de9f32b1461060a57600080fd5b80635437988d116102c95780635437988d146105b857806355f804b3146105cb5780635614eb3c146105de5780635afbc4a81461058757600080fd5b806342966c6814610574578063447ccf60146105875780634bb30912146105905780634f6ccce7146105a557600080fd5b806318160ddd116103725780632b1ac6e6116103415780632b1ac6e6146105295780632f745c59146105465780633758b9961461055957806342842e0e1461056157600080fd5b806318160ddd146104c45780631ef9a254146104da57806323b872dd146104e45780632a55205a146104f757600080fd5b8063095ea7b3116103ae578063095ea7b31461045d5780630da7bff01461047057806311e776fe146104915780631505bc93146104a457600080fd5b806301ffc9a7146103e057806306bcf02f1461040857806306fdde031461041d578063081812fc14610432575b600080fd5b6103f36103ee36600461326a565b6108fa565b60405190151581526020015b60405180910390f35b61041b610416366004613287565b610941565b005b610425610985565b6040516103ff91906132f0565b610445610440366004613287565b610a29565b6040516001600160a01b0390911681526020016103ff565b61041b61046b366004613318565b610a3e565b61048361047e36600461335b565b610a4d565b6040516103ff92919061341e565b61041b61049f366004613287565b610b0b565b6104b76104b2366004613514565b610b18565b6040516103ff9190613548565b6104cc610d95565b6040519081526020016103ff565b6104cc6201731881565b61041b6104f236600461355b565b610dda565b61050a61050536600461359c565b610e6a565b604080516001600160a01b0390931683526020830191909152016103ff565b610531610eaf565b604080519283526020830191909152016103ff565b6104cc610554366004613318565b610f5f565b6104cc61102b565b61041b61056f36600461355b565b61108d565b61041b610582366004613287565b6110ad565b6104cc61c35081565b61059861121b565b6040516103ff91906135be565b6104cc6105b3366004613287565b6112f4565b61041b6105c6366004613620565b61138c565b61041b6105d936600461363d565b6113b6565b6104cc611409565b6104456105f4366004613287565b6114fc565b6104cc619c4081565b610425611507565b6104cc611595565b61041b610620366004613620565b6115ad565b6104cc610633366004613620565b6115d7565b61041b611633565b61065361064e366004613287565b611647565b6040516103ff91906136ae565b6103f361066e36600461359c565b611661565b6104cc611680565b61041b61068936600461359c565b611690565b61041b61069c366004613772565b61179a565b604b6104cc565b61041b6106b6366004613287565b61181f565b6104cc611833565b6103f36106d1366004613772565b61183d565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610445565b6104cc60025481565b6104256119e8565b61041b6107253660046137c6565b611a27565b61041b610738366004613620565b611a32565b6008546104cc565b610531611a5c565b61042560405180604001604052806014815260200173029ba30b3b290189030b63637bbb2b2103337b9160651b81525081565b6104cc61271081565b61041b6107973660046137ff565b611b73565b6104cc604b81565b6104456107b2366004613879565b611b8a565b6104256107c5366004613287565b611bf2565b6107dd6107d8366004613514565b611c45565b6040516103ff91906138b6565b6104b76107f8366004613287565b611d34565b61041b61080b366004613905565b611d5a565b610425611da6565b6106536108263660046139ca565b611dce565b6103f3610839366004613a17565b611ed9565b6104cc61084c366004613287565b60009081526004602052604090205490565b610866611f26565b6040516103ff9190613a45565b61041b610881366004613620565b612034565b61041b610894366004613a9a565b61206f565b6104cc6108a7366004613287565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b600061090582612230565b80610920575063152a902d60e11b6001600160e01b03198316145b8061093b575063a86517a160e01b6001600160e01b03198316145b92915050565b610949612255565b60028190556040518181527fa09018266c541576eb124551c9c57c82a8129add3ba6777a5974b1d0e6252e99906020015b60405180910390a150565b60008051602061406c83398151915280546060919081906109a590613af6565b80601f01602080910402602001604051908101604052809291908181526020018280546109d190613af6565b8015610a1e5780601f106109f357610100808354040283529160200191610a1e565b820191906000526020600020905b815481529060010190602001808311610a0157829003601f168201915b505050505091505090565b6000610a34826122b0565b5061093b826122e8565b610a49828233612322565b5050565b6000838152600560205260408120606091908190610a6a9061232f565b90508051600003610ae2576040805160008082526020820190925290610ad5565b610ac26040518060800160405280600081526020016060815260200160006001600160a01b03168152602001600060ff1681525090565b815260200190600190039081610a8b5790505b5060009250925050610b03565b6000610aef828787611dce565b9050610afa81610b18565b82519350935050505b935093915050565b610b13612255565b600955565b600e54600d5482516060926001600160a01b039081169216906000906001600160401b03811115610b4b57610b4b613440565b604051908082528060200260200182016040528015610bb357816020015b610ba06040518060800160405280600081526020016060815260200160006001600160a01b03168152602001600060ff1681525090565b815260200190600190039081610b695790505b50905060005b8551811015610d8c576000868281518110610bd657610bd6613b2a565b602002602001015190506040518060800160405280828152602001856001600160a01b031663c87b56dd846040518263ffffffff1660e01b8152600401610c1f91815260200190565b600060405180830381865afa158015610c3c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c649190810190613b40565b8152602001856001600160a01b0316636352211e846040518263ffffffff1660e01b8152600401610c9791815260200190565b602060405180830381865afa158015610cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd89190613bad565b6001600160a01b03168152602001866001600160a01b03166386481d40846040518263ffffffff1660e01b8152600401610d1491815260200190565b602060405180830381865afa158015610d31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d559190613bca565b60ff16815250838381518110610d6d57610d6d613b2a565b6020026020010181905250508080610d8490613bfd565b915050610bb9565b50949350505050565b7f0c12c17af20e858ae142203eca79d9fe977cde9a6d2226d7db28f4c9277f80865460008051602061404c8339815191528054600092610dd491613c16565b91505090565b6001600160a01b038216610e0957604051633250574960e11b8152600060048201526024015b60405180910390fd5b6000610e1683833361233c565b9050836001600160a01b0316816001600160a01b031614610e64576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610e00565b50505050565b600080610e76846122b0565b506006546001600160a01b0316915061271083610e9260015490565b610e9c9190613c29565b610ea69190613c40565b90509250929050565b6000806000610ebc611a5c565b9093509050610ecb8184613c62565b92506000610ed7610d95565b90508015610f5957600654604080516328ed687760e21b8152905183926001600160a01b03169163a3b5a1dc9160048083019260209291908290030181865afa158015610f28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4c9190613c75565b610f569190613c40565b92505b50509091565b6000610f6a836115d7565b8210610f8957604051634e23d03560e01b815260040160405180910390fd5b6001600160a01b038316610fb0576040516354cd056560e01b815260040160405180910390fd5b6000610fc860008051602061404c8339815191525490565b90506000805b8281101561101757856001600160a01b0316610fe982612351565b6001600160a01b03160361100f5784820361100857925061093b915050565b6001909101905b600101610fce565b50611020613c8e565b506000949350505050565b600060405180604001604052806014815260200173029ba30b3b290189030b63637bbb2b2103337b9160651b8152506110613390565b604051602001611072929190613ca4565b60405160208183030381529060405280519060200120905090565b6110a883838360405180602001604052806000815250611b73565b505050565b60006110b8826114fc565b90506001600160a01b03811633146111085760405162461bcd60e51b815260206004820152601360248201527227b7363c9037bbb732b91031b0b710313ab93760691b6044820152606401610e00565b600080611113611a5c565b600c5460405163a9059cbb60e01b81526001600160a01b03878116600483015260248201859052939550919350919091169063a9059cbb906044016020604051808303816000875af115801561116d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111919190613cdb565b50600061119c610d95565b90506111a78561238b565b60065460405163e34e0e6360e01b81526001600160a01b03868116600483015260248201859052604482018490529091169063e34e0e6390606401600060405180830381600087803b1580156111fc57600080fd5b505af1158015611210573d6000803e3d6000fd5b505050505050505050565b60606000805480602002602001604051908101604052809291908181526020016000905b828210156112eb57838290600052602060002001805461125e90613af6565b80601f016020809104026020016040519081016040528092919081815260200182805461128a90613af6565b80156112d75780601f106112ac576101008083540402835291602001916112d7565b820191906000526020600020905b8154815290600101906020018083116112ba57829003601f168201915b50505050508152602001906001019061123f565b50505050905090565b60008061130d60008051602061404c8339815191525490565b9050611317610d95565b831061133657604051634e23d03560e01b815260040160405180910390fd5b6000805b8281101561137957600061134d82612351565b6001600160a01b0316146113715784820361136a57949350505050565b6001909101905b60010161133a565b50611382613c8e565b5060009392505050565b611394612255565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6113be612255565b60036113cb828483613d46565b507fc35611e34b3940869a5132c8bc8ec4854192b0bfea25d0b9b38bcdeec2c09a7f82826040516113fd929190613e05565b60405180910390a15050565b600c546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611452573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114769190613c75565b600660009054906101000a90046001600160a01b03166001600160a01b0316635614eb3c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ed9190613c75565b6114f79190613c62565b905090565b600061093b826122b0565b6003805461151490613af6565b80601f016020809104026020016040519081016040528092919081815260200182805461154090613af6565b801561158d5780601f106115625761010080835404028352916020019161158d565b820191906000526020600020905b81548152906001019060200180831161157057829003601f168201915b505050505081565b60006114f760008051602061404c8339815191525490565b6115b5612255565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b600060008051602061406c8339815191526001600160a01b038316611612576040516322718ad960e21b815260006004820152602401610e00565b6001600160a01b039092166000908152600390920160205250604090205490565b61163b612255565b61164560006123c6565b565b600081815260056020526040902060609061093b9061232f565b60008281526005602052604081206116799083612437565b9392505050565b600061168a610eaf565b50919050565b611699826122b0565b6001600160a01b0316336001600160a01b0316146116f05760405162461bcd60e51b81526020600482015260146024820152734d757374206f776e20746f7920746f20706c617960601b6044820152606401610e00565b6116f98161244f565b61170281612509565b61170c8282611661565b156117595760405162461bcd60e51b815260206004820152601c60248201527f416c726561647920706c617965642077697468207468697320746f79000000006044820152606401610e00565b600082815260056020526040902061177190826125be565b5060008281526004602052604081208054604b9290611791908490613c62565b90915550505050565b6117a4828261183d565b5060006117bc6117b360085490565b620173186125ca565b90506000816117ca60085490565b6117d49190613c16565b600c549091506117ef906001600160a01b03163330856125e4565b600c5460075461180e916001600160a01b0390811691339116846125e4565b610e643361181a61263e565b61266b565b611827612255565b61183081612685565b50565b600061093b610eaf565b60006002544210156118875760405162461bcd60e51b8152602060048201526013602482015272135a5b9d1a5b99c81b9bdd081cdd185c9d1959606a1b6044820152606401610e00565b6002546118979062015180613c62565b42101561197c5781516041146118e55760405162461bcd60e51b815260206004820152601360248201527214da59db985d1d5c99481b9bdd081d985b1a59606a1b6044820152606401610e00565b60208201516040830151606084015160001a919061190f6119076108a761102b565b848484611b8a565b600f546001600160a01b039081169116146119785760405162461bcd60e51b815260206004820152602360248201527f496e636f72726563742077616c6c657420666f722074686973207369676e617460448201526275726560e81b6064820152608401610e00565b5050505b6119858361244f565b61198e83612509565b60095460008051602061404c83398151915254106119df5760405162461bcd60e51b815260206004820152600e60248201526d4e6f206d6f726520737570706c7960901b6044820152606401610e00565b50600192915050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079301805460609160008051602061406c833981519152916109a590613af6565b610a493383836126ba565b611a3a612255565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000611a69610d95565b90508015611b6e57600c546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa158015611ab9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611add9190613c75565b611ae79190613c40565b925080600660009054906101000a90046001600160a01b03166001600160a01b0316635614eb3c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b619190613c75565b611b6b9190613c40565b91505b509091565b611b7e848484610dda565b610e648484848461276b565b6040805160008082526020820180845287905260ff861692820192909252606081018490526080810183905260019060a0016020604051602081039080840390855afa158015611bde573d6000803e3d6000fd5b5050604051601f1901519695505050505050565b60606003611bff83612894565b60405180604001604052806005815260200164173539b7b760d91b815250604051602001611c2f93929190613ea7565b6040516020818303038152906040529050919050565b6060600082516001600160401b03811115611c6257611c62613440565b604051908082528060200260200182016040528015611ca757816020015b6040805180820190915260008082526020820152815260200190600190039081611c805790505b50905060005b8351811015611d2d576000848281518110611cca57611cca613b2a565b6020026020010151905060405180604001604052808281526020016004600084815260200190815260200160002054815250838381518110611d0e57611d0e613b2a565b6020026020010181905250508080611d2590613bfd565b915050611cad565b5092915050565b600081815260056020526040812060609190611d4f9061232f565b905061167981610b18565b611d6381612926565b8051611d76906000906020840190613197565b507f9538911740e5519a40db77fb5f637de0d56cdd804318d81ae270cc24fbd8479e8160405161097a91906135be565b60606003604051602001611dba9190613ee0565b604051602081830303815290604052905090565b60608351600003611de0575082611679565b600083855111611df1576000611e0b565b611e0b8361ffff16858751611e069190613c16565b61292e565b90506000816001600160401b03811115611e2757611e27613440565b604051908082528060200260200182016040528015611e50578160200160208202803683370190505b50805190915015611ed0576000858751611e6a9190613c16565b905060005b83811015611ecd5781611e8181613f09565b925050878281518110611e9657611e96613b2a565b6020026020010151838281518110611eb057611eb0613b2a565b602090810291909101015280611ec581613bfd565b915050611e6f565b50505b95945050505050565b6001600160a01b0391821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020908152604080832093909416825291909152205460ff1690565b60606000611f32610d95565b90506000816001600160401b03811115611f4e57611f4e613440565b604051908082528060200260200182016040528015611fac57816020015b611f9960405180606001604052806000815260200160006001600160a01b03168152602001600081525090565b815260200190600190039081611f6c5790505b50905060005b82811015611d2d576000611fc5826112f4565b90506040518060600160405280828152602001611fe1836114fc565b6001600160a01b03168152600083815260046020908152604090912054910152835184908490811061201557612015613b2a565b602002602001018190525050808061202c90613bfd565b915050611fb2565b61203c612255565b6001600160a01b03811661206657604051631e4fbdf760e01b815260006004820152602401610e00565b611830816123c6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156120b45750825b90506000826001600160401b031660011480156120d05750303b155b9050811580156120de575080155b156120fc5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561212657845460ff60401b1916600160401b1785555b6121706040518060400160405280600d81526020016c14db585c9d10d85d08131bdbdd609a1b8152506040518060400160405280600381526020016214d0d360ea1b815250612944565b61217989612956565b61218a67016345785d8a0000612685565b6103e8600981905561219b90612967565b600c80546001600160a01b03808b166001600160a01b031992831617909255600d80548a8416908316179055600e8054928916929091169190911790556365812350600255831561121057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050505050565b60006001600160e01b0319821663780e9d6360e01b148061093b575061093b826129ea565b336122877f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146116455760405163118cdaa760e01b8152336004820152602401610e00565b6000806122bc83612351565b90506001600160a01b03811661093b57604051637e27328960e01b815260048101849052602401610e00565b60009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260409020546001600160a01b031690565b6110a88383836001612a3a565b6060600061167983612b50565b6000612349848484612bac565b949350505050565b60009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260409020546001600160a01b031690565b600061239a600083600061233c565b90506001600160a01b038116610a4957604051637e27328960e01b815260048101839052602401610e00565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60008181526001830160205260408120541515611679565b600d546040516331a9108f60e11b81526004810183905233916001600160a01b031690636352211e90602401602060405180830381865afa158015612498573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124bc9190613bad565b6001600160a01b0316146118305760405162461bcd60e51b81526020600482015260146024820152736f6e6c7920666f722063617420686f6c6465727360601b6044820152606401610e00565b600e54604051630219207560e61b8152600481018390526001600160a01b03909116906386481d4090602401602060405180830381865afa158015612552573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125769190613bca565b60ff166000036118305760405162461bcd60e51b815260206004820152601360248201527210d85d081b5d5cdd0818994818591bdc1d1959606a1b6044820152606401610e00565b60006116798383612c0c565b6000620186a06125da8385613c29565b6116799190613c40565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610e64908590612c5b565b60008051602061404c8339815191528054600091908290828261266083613bfd565b909155509392505050565b610a49828260405180602001604052806000815250612cbe565b60088190556040518181527f1cd6160c8d04c1f5bf61b1ff96eba34c6b959706d688f0ef4b989d3048a7358c9060200161097a565b60008051602061406c8339815191526001600160a01b0383166126fb57604051630b61174360e31b81526001600160a01b0384166004820152602401610e00565b6001600160a01b038481166000818152600584016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6001600160a01b0383163b15610e6457604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906127ad903390889087908790600401613f20565b6020604051808303816000875af19250505080156127e8575060408051601f3d908101601f191682019092526127e591810190613f53565b60015b612851573d808015612816576040519150601f19603f3d011682016040523d82523d6000602084013e61281b565b606091505b50805160000361284957604051633250574960e11b81526001600160a01b0385166004820152602401610e00565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461288d57604051633250574960e11b81526001600160a01b0385166004820152602401610e00565b5050505050565b606060006128a183612cd5565b60010190506000816001600160401b038111156128c0576128c0613440565b6040519080825280601f01601f1916602001820160405280156128ea576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846128f457509392505050565b611830612255565b600081831061293d5781611679565b5090919050565b61294c612dad565b610a498282612df6565b61295e612dad565b61183081612e27565b6127108111156129b25760405162461bcd60e51b8152602060048201526016602482015275526f79616c7479206d6f72652074686174203130302560501b6044820152606401610e00565b6040518181527f244ea8d7627f5a08f4299862bd5a45752842c183aee5b0fb0d1e4887bfa605b39060200160405180910390a1600155565b60006001600160e01b031982166380ac58cd60e01b1480612a1b57506001600160e01b03198216635b5e139f60e01b145b8061093b57506301ffc9a760e01b6001600160e01b031983161461093b565b60008051602061406c8339815191528180612a5d57506001600160a01b03831615155b15612b1f576000612a6d856122b0565b90506001600160a01b03841615801590612a995750836001600160a01b0316816001600160a01b031614155b8015612aac5750612aaa8185611ed9565b155b15612ad55760405163a9fbf51f60e01b81526001600160a01b0385166004820152602401610e00565b8215612b1d5784866001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080546001600160a01b0319166001600160a01b0392909216919091179055565b606081600001805480602002602001604051908101604052809291908181526020018280548015612ba057602002820191906000526020600020905b815481526020019060010190808311612b8c575b50505050509050919050565b60006001600160a01b038416612c01577f0c12c17af20e858ae142203eca79d9fe977cde9a6d2226d7db28f4c9277f8086805460008051602061404c833981519152916000612bfa83613bfd565b9190505550505b612349848484612e2f565b6000818152600183016020526040812054612c535750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561093b565b50600061093b565b6000612c706001600160a01b03841683612f39565b90508051600014158015612c95575080806020019051810190612c939190613cdb565b155b156110a857604051635274afe760e01b81526001600160a01b0384166004820152602401610e00565b612cc88383612f47565b6110a8600084848461276b565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310612d145772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612d40576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612d5e57662386f26fc10000830492506010015b6305f5e1008310612d76576305f5e100830492506008015b6127108310612d8a57612710830492506004015b60648310612d9c576064830492506002015b600a831061093b5760010192915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661164557604051631afcd79f60e31b815260040160405180910390fd5b612dfe612dad565b60008051602061406c83398151915280612e188482613f70565b5060018101610e648382613f70565b61203c612dad565b600060008051602061406c83398151915281612e4a85612351565b90506001600160a01b03841615612e6657612e66818587612fac565b6001600160a01b03811615612ea657612e83600086600080612a3a565b6001600160a01b0381166000908152600383016020526040902080546000190190555b6001600160a01b03861615612ed7576001600160a01b03861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080546001600160a01b0319166001600160a01b038a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b606061167983836000613010565b6001600160a01b038216612f7157604051633250574960e11b815260006004820152602401610e00565b6000612f7f8383600061233c565b90506001600160a01b038116156110a8576040516339e3563760e11b815260006004820152602401610e00565b612fb78383836130ad565b6110a8576001600160a01b038316612fe557604051637e27328960e01b815260048101829052602401610e00565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610e00565b6060814710156130355760405163cd78605960e01b8152306004820152602401610e00565b600080856001600160a01b03168486604051613051919061402f565b60006040518083038185875af1925050503d806000811461308e576040519150601f19603f3d011682016040523d82523d6000602084013e613093565b606091505b50915091506130a3868383613112565b9695505050505050565b60006001600160a01b038316158015906123495750826001600160a01b0316846001600160a01b031614806130e757506130e78484611ed9565b806123495750826001600160a01b0316613100836122e8565b6001600160a01b031614949350505050565b606082613127576131228261316e565b611679565b815115801561313e57506001600160a01b0384163b155b1561316757604051639996b31560e01b81526001600160a01b0385166004820152602401610e00565b5080611679565b80511561317e5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b8280548282559060005260206000209081019282156131dd579160200282015b828111156131dd57825182906131cd9082613f70565b50916020019190600101906131b7565b506131e99291506131ed565b5090565b808211156131e9576000613201828261320a565b506001016131ed565b50805461321690613af6565b6000825580601f10613226575050565b601f01602090049060005260206000209081019061183091905b808211156131e95760008155600101613240565b6001600160e01b03198116811461183057600080fd5b60006020828403121561327c57600080fd5b813561167981613254565b60006020828403121561329957600080fd5b5035919050565b60005b838110156132bb5781810151838201526020016132a3565b50506000910152565b600081518084526132dc8160208601602086016132a0565b601f01601f19169290920160200192915050565b60208152600061167960208301846132c4565b6001600160a01b038116811461183057600080fd5b6000806040838503121561332b57600080fd5b823561333681613303565b946020939093013593505050565b803561ffff8116811461335657600080fd5b919050565b60008060006060848603121561337057600080fd5b833592506020840135915061338760408501613344565b90509250925092565b600082825180855260208086019550808260051b84010181860160005b8481101561341157601f1986840301895281516080815185528582015181878701526133db828701826132c4565b6040848101516001600160a01b03169088015260609384015160ff169390960192909252505097830197908301906001016133ad565b5090979650505050505050565b6040815260006134316040830185613390565b90508260208301529392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561347e5761347e613440565b604052919050565b60006001600160401b0382111561349f5761349f613440565b5060051b60200190565b600082601f8301126134ba57600080fd5b813560206134cf6134ca83613486565b613456565b82815260059290921b840181019181810190868411156134ee57600080fd5b8286015b8481101561350957803583529183019183016134f2565b509695505050505050565b60006020828403121561352657600080fd5b81356001600160401b0381111561353c57600080fd5b612349848285016134a9565b6020815260006116796020830184613390565b60008060006060848603121561357057600080fd5b833561357b81613303565b9250602084013561358b81613303565b929592945050506040919091013590565b600080604083850312156135af57600080fd5b50508035926020909101359150565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561361357603f198886030184526136018583516132c4565b945092850192908501906001016135e5565b5092979650505050505050565b60006020828403121561363257600080fd5b813561167981613303565b6000806020838503121561365057600080fd5b82356001600160401b038082111561366757600080fd5b818501915085601f83011261367b57600080fd5b81358181111561368a57600080fd5b86602082850101111561369c57600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b818110156136e6578351835292840192918401916001016136ca565b50909695505050505050565b60006001600160401b0382111561370b5761370b613440565b50601f01601f191660200190565b60006137276134ca846136f2565b905082815283838301111561373b57600080fd5b828260208301376000602084830101529392505050565b600082601f83011261376357600080fd5b61167983833560208501613719565b6000806040838503121561378557600080fd5b8235915060208301356001600160401b038111156137a257600080fd5b6137ae85828601613752565b9150509250929050565b801515811461183057600080fd5b600080604083850312156137d957600080fd5b82356137e481613303565b915060208301356137f4816137b8565b809150509250929050565b6000806000806080858703121561381557600080fd5b843561382081613303565b9350602085013561383081613303565b92506040850135915060608501356001600160401b0381111561385257600080fd5b61385e87828801613752565b91505092959194509250565b60ff8116811461183057600080fd5b6000806000806080858703121561388f57600080fd5b8435935060208501356138a18161386a565b93969395505050506040820135916060013590565b602080825282518282018190526000919060409081850190868401855b828110156138f8578151805185528601518685015292840192908501906001016138d3565b5091979650505050505050565b6000602080838503121561391857600080fd5b82356001600160401b038082111561392f57600080fd5b818501915085601f83011261394357600080fd5b81356139516134ca82613486565b81815260059190911b8301840190848101908883111561397057600080fd5b8585015b838110156139bd5780358581111561398c5760008081fd5b8601603f81018b1361399e5760008081fd5b6139af8b8983013560408401613719565b845250918601918601613974565b5098975050505050505050565b6000806000606084860312156139df57600080fd5b83356001600160401b038111156139f557600080fd5b613a01868287016134a9565b9350506020840135915061338760408501613344565b60008060408385031215613a2a57600080fd5b8235613a3581613303565b915060208301356137f481613303565b602080825282518282018190526000919060409081850190868401855b828110156138f857815180518552868101516001600160a01b0316878601528501518585015260609093019290850190600101613a62565b60008060008060808587031215613ab057600080fd5b8435613abb81613303565b93506020850135613acb81613303565b92506040850135613adb81613303565b91506060850135613aeb81613303565b939692955090935050565b600181811c90821680613b0a57607f821691505b60208210810361168a57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060208284031215613b5257600080fd5b81516001600160401b03811115613b6857600080fd5b8201601f81018413613b7957600080fd5b8051613b876134ca826136f2565b818152856020838501011115613b9c57600080fd5b611ed08260208301602086016132a0565b600060208284031215613bbf57600080fd5b815161167981613303565b600060208284031215613bdc57600080fd5b81516116798161386a565b634e487b7160e01b600052601160045260246000fd5b600060018201613c0f57613c0f613be7565b5060010190565b8181038181111561093b5761093b613be7565b808202811582820484141761093b5761093b613be7565b600082613c5d57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561093b5761093b613be7565b600060208284031215613c8757600080fd5b5051919050565b634e487b7160e01b600052600160045260246000fd5b60008351613cb68184602088016132a0565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b600060208284031215613ced57600080fd5b8151611679816137b8565b601f8211156110a857600081815260208120601f850160051c81016020861015613d1f5750805b601f850160051c820191505b81811015613d3e57828155600101613d2b565b505050505050565b6001600160401b03831115613d5d57613d5d613440565b613d7183613d6b8354613af6565b83613cf8565b6000601f841160018114613da55760008515613d8d5750838201355b600019600387901b1c1916600186901b17835561288d565b600083815260209020601f19861690835b82811015613dd65786850135825560209485019460019092019101613db6565b5086821015613df35760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60008154613e4181613af6565b60018281168015613e595760018114613e6e57613e9d565b60ff1984168752821515830287019450613e9d565b8560005260208060002060005b85811015613e945781548a820152908401908201613e7b565b50505082870194505b5050505092915050565b6000613eb38286613e34565b8451613ec38183602089016132a0565b8451910190613ed68183602088016132a0565b0195945050505050565b6000613eec8284613e34565b6c31b7b73a3930b1ba173539b7b760991b8152600d019392505050565b600081613f1857613f18613be7565b506000190190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906130a3908301846132c4565b600060208284031215613f6557600080fd5b815161167981613254565b81516001600160401b03811115613f8957613f89613440565b613f9d81613f978454613af6565b84613cf8565b602080601f831160018114613fd25760008415613fba5750858301515b600019600386901b1c1916600185901b178555613d3e565b600085815260208120601f198616915b8281101561400157888601518255948401946001909101908401613fe2565b508582101561401f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082516140418184602087016132a0565b919091019291505056fe0c12c17af20e858ae142203eca79d9fe977cde9a6d2226d7db28f4c9277f808580bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300a2646970667358221220076228d904c179593b1373543c8819ace2df0ee0fdc184dd160d81f6188f799064736f6c63430008140033