0 txs
2.1k calls
constructor
constructor()
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256 result)
craftingContract
viewfunction craftingContract() view returns (address)
currentSaleType
viewfunction currentSaleType() view returns (uint8)
getAllUserCardTokens
viewfunction getAllUserCardTokens(address user) view returns (uint256[])
getApproved
viewfunction getApproved(uint256 id) view returns (address result)
getHeavyPacksMintedByUser
viewfunction getHeavyPacksMintedByUser(address user) view returns (uint256 heavyPackCount)
getNormalPacksMintedByUser
viewfunction getNormalPacksMintedByUser(address user) view returns (uint256 normalPackCount)
getSecondRareChance
viewfunction getSecondRareChance() view returns (uint256)
getTokenInfo
viewfunction getTokenInfo(uint256 tokenId) view returns (uint8 rarity, uint16 cardId, uint8 secondRareChance)
getTotalPacksMintedByUser
viewfunction getTotalPacksMintedByUser(address user) view returns (uint256 packCount)
getUserTokens
viewfunction getUserTokens(address user, uint16 cardId) view returns (uint256[])
hasFreeHeavyPackClaimed
viewfunction hasFreeHeavyPackClaimed(address user) view returns (bool claimed)
heavyPacksMinted
viewfunction heavyPacksMinted() view returns (uint256)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool result)
isFreeHeavyPackEligible
viewfunction isFreeHeavyPackEligible(address user) view returns (bool eligible)
isInLastChancePhase
viewfunction isInLastChancePhase() view returns (bool)
name
purefunction name() pure returns (string)
nextTokenId
viewfunction nextTokenId() view returns (uint256)
normalPackOpeningDelay
viewfunction normalPackOpeningDelay() view returns (uint256)
normalSaleDuration
viewfunction normalSaleDuration() view returns (uint256)
normalSaleStartTime
viewfunction normalSaleStartTime() view returns (uint256)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 id) view returns (address result)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool result)
symbol
purefunction symbol() pure returns (string)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
userTokens
viewfunction userTokens(address, uint16, uint256) view returns (uint256)
VERSION
viewfunction VERSION() view returns (string)
vrfConsumer
viewfunction vrfConsumer() view returns (address)
whitelist
viewfunction whitelist(address user) view returns (bool isWhitelisted)
whitelistEnabled
viewfunction whitelistEnabled() view returns (bool)
addToWhitelist
nonpayablefunction addToWhitelist(address[] users)
addToWhitelistWithFreePack
nonpayablefunction addToWhitelistWithFreePack(address[] users)
approve
payablefunction approve(address account, uint256 id) payable
batchBurnAndMint
nonpayablefunction batchBurnAndMint(uint256[] tokensToBurn, address user, uint16 cardId, uint8 rarity) returns (uint256)
batchMintAndBurn
nonpayablefunction batchMintAndBurn(uint256 tokenToBurn, address user, uint16[] cardIds, uint8[] rarities)
endSale
nonpayablefunction endSale()
initialize
nonpayablefunction initialize(address admin)
mintFreeHeavyPack
nonpayablefunction mintFreeHeavyPack()
mintPacks
payablefunction mintPacks(uint256 quantity) payable
removeFromWhitelist
nonpayablefunction removeFromWhitelist(address[] users)
renounceOwnership
nonpayablefunction renounceOwnership()
rescueERC20
nonpayablefunction rescueERC20(address token)
rescueERC721
nonpayablefunction rescueERC721(address token, uint256 tokenId)
safeTransferFrom
payablefunction safeTransferFrom(address from, address to, uint256 id, bytes data) payable
safeTransferFrom
payablefunction safeTransferFrom(address from, address to, uint256 id) payable
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool isApproved)
setBaseURI
nonpayablefunction setBaseURI(string newBaseURI)
setCraftingContract
nonpayablefunction setCraftingContract(address craftingAddress)
setVrfConsumer
nonpayablefunction setVrfConsumer(address vrfConsumer_)
setWhitelistEnabled
nonpayablefunction setWhitelistEnabled(bool enabled)
startHeavyPackSale
nonpayablefunction startHeavyPackSale()
startNormalPackSale
nonpayablefunction startNormalPackSale(uint256 duration, uint256 packOpeningDelay)
transferFrom
payablefunction transferFrom(address from, address to, uint256 id) payable
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdraw
nonpayablefunction withdraw()
events
Approval
event Approval(address indexed owner, address indexed account, uint256 indexed id)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool isApproved)
BaseURIUpdated
event BaseURIUpdated(string newBaseURI)
BatchRemovedFromWhitelist
event BatchRemovedFromWhitelist(address[] users)
BatchWhitelisted
event BatchWhitelisted(address[] users)
BatchWhitelistedWithFreePack
event BatchWhitelistedWithFreePack(address[] users)
ContractUpgraded
event ContractUpgraded(string version)
CraftingContractSet
event CraftingContractSet(address indexed craftingAddress)
FreeHeavyPackMinted
event FreeHeavyPackMinted(address indexed user, uint256 indexed tokenId)
HeavyPackSaleEnded
event HeavyPackSaleEnded(uint256 totalMinted)
HeavyPackSaleStarted
event HeavyPackSaleStarted(uint256 limit)
Initialized
event Initialized(uint64 version)
NormalPackSaleStarted
event NormalPackSaleStarted(uint256 startTime, uint256 maxSecondRareChance, uint256 duration, uint256 packOpeningDelay)
NormalSaleDurationUpdated
event NormalSaleDurationUpdated(uint256 duration)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
SaleEnded
event SaleEnded(uint8 saleType)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed id)
Upgraded
event Upgraded(address indexed implementation)
UserPackLimitReached
event UserPackLimitReached(address indexed user, uint256 totalPacks)
VrfConsumerSet
event VrfConsumerSet(address indexed vrfConsumer)
WhitelistEnabled
event WhitelistEnabled(bool enabled)
errors
AccountBalanceOverflow
error AccountBalanceOverflow()
AddressEmptyCode
error AddressEmptyCode(address target)
BalanceQueryForZeroAddress
error BalanceQueryForZeroAddress()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedCall
error FailedCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
NotOwnerNorApproved
error NotOwnerNorApproved()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
TokenAlreadyExists
error TokenAlreadyExists()
TokenDoesNotExist
error TokenDoesNotExist()
TransferFromIncorrectOwner
error TransferFromIncorrectOwner()
TransferToNonERC721ReceiverImplementer
error TransferToNonERC721ReceiverImplementer()
TransferToZeroAddress
error TransferToZeroAddress()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a06040523461004c5730608052610015610050565b61001d610050565b610025610050565b61002d610050565b604051613e1d90816100e78239608051818181611f390152611ffd0152f35b5f80fd5b5f516020613f045f395f51905f525460ff8160401c166100d7576002600160401b03196001600160401b038216016100855750565b6001600160401b0319166001600160401b039081175f516020613f045f395f51905f52556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1565b63f92ee8a960e01b5f5260045ffdfe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a7146128e157508063052d9e7e1461287f57806306fdde031461283e578063075a2f7b1461274a578063081812fc146126f9578063095ea7b3146126445780630eff95421461240e57806312377d69146123f1578063155982ea1461239f57806318160ddd1461237e5780631d20123e146123615780631ef4d1fd1461233957806323b872dd14612327578063380d831b146122cd5780633ccfd60b146121ea5780633f9de036146121c657806342842e0e1461218d5780634f1ef28614611faf57806351fb012d14611f8d57806352d1902d14611f27578063548db17414611e3157806355f804b314611c6c57806359334bb114611bd8578063612147c714611ab25780636352211e14611a825780636abebafc14611a5257806370a08231146119ff578063715018a61461199857806375794a3c1461197b57806375fc61751461195e5780637a030836146119325780637f6497831461181457806384ff33821461174157806385e13e721461171d5780638677d1961461158c5780638c7a63ae146114ef5780638da5cb5b146114bb57806395d89b411461147a578063971fcb74146113045780639a9fd72314610c2a5780639b19251a14610bff578063a22cb46514610b8d578063a73134f314610b23578063a829326d14610a6a578063ad3cb1cc14610a2b578063af9b521b146109ff578063b6544bc0146109d8578063b88d4fde1461096e578063bb11675614610933578063c4d66de814610615578063c87b56dd146105f6578063ccec3716146104b7578063d7981834146103f1578063da5f4f91146103c5578063e18abbea146103a0578063e985e9c51461035c578063f18dee491461033f578063f197aad71461030a578063f2fde38b146102df5763ffa1ad74146102b0575f80fd5b346102db575f3660031901126102db576102d76102cb612b49565b6040519182918261292b565b0390f35b5f80fd5b346102db5760203660031901126102db576103086102fb6129a7565b61030361350d565b61349c565b005b346102db5760203660031901126102db57602060018061033061032b6129a7565b613a34565b60101c16146040519015158152f35b346102db575f3660031901126102db576020600354604051908152f35b346102db5760403660031901126102db576103756129a7565b61037d6129bd565b601c52670a5a2e7a000000006008525f5260206030600c20546040519015158152f35b346102db575f3660031901126102db57602060ff6103bc613bf4565b16604051908152f35b346102db575f3660031901126102db5760015460405160089190911c6001600160a01b03168152602090f35b346102db5760403660031901126102db576004356001600160a01b038116908190036102db5761041f61350d565b610427613540565b5f516020613d285f395f51905f52546001600160a01b031661044a811515613ad8565b813b156102db575f916064839260405194859384926323b872dd60e01b8452306004850152602484015260243560448401525af180156104ac5761049c575b60015f516020613da85f395f51905f5255005b5f6104a6916129d3565b80610489565b6040513d5f823e3d90fd5b346102db5760203660031901126102db576004356001600160a01b038116908181036102db576104e561350d565b6104ed613540565b5f516020613d285f395f51905f52546001600160a01b031690610511821515613ad8565b6040516370a0823160e01b815230600482015290602082602481875afa9182156104ac575f926105c2575b50816105555760015f516020613da85f395f51905f5255005b6020925f8093604051908682019363a9059cbb60e01b855260248301526044820152604481526105866064826129d3565b51925af1156104ac575f513d6105b95750803b155b6105a757808080610489565b635274afe760e01b5f5260045260245ffd5b6001141561059b565b9091506020813d6020116105ee575b816105de602093836129d3565b810103126102db5751908461053c565b3d91506105d1565b346102db5760203660031901126102db576102d76102cb60043561332f565b346102db5760203660031901126102db5761062e6129a7565b5f516020613dc85f395f51905f52549060ff8260401c1615916001600160401b0381168015908161092b575b6001149081610921575b159081610918575b506109095767ffffffffffffffff1981166001175f516020613dc85f395f51905f5255826108dd575b506001600160a01b03811615610898576107c9906106b1613c9e565b6106b9613c9e565b6106c1613c9e565b6106c9613c9e565b6106d1613c9e565b6106d9613c9e565b60015f516020613da85f395f51905f52556106f2613c9e565b6106fc5f5461322f565b601f8111610850575b5060c55f555f805261612f60f01b600360205f207f68747470733a2f2f6d657461646174612e6d696e746e6f726d6965732e636f6d81557f2f697066732f626166796265696464336e6b6e6b627061656b6d6374796b717060018201557f326837796636657670356b6d6b376f6d797a717472716b7967736c6b63706f616002820155015560ff19600154166001555f600355600160ff1960045416176004555f6005555f6006555f6007555f6009555f600a556107c1613c9e565b610303613c9e565b7fb8751b0dd53b85bff7c80c820320c0c7993e4af340a036b112cb9b5714106a616107f56102cb612b49565b0390a16107fe57005b60ff60401b195f516020613dc85f395f51905f5254165f516020613dc85f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b5f805261089290601f0160051c5f516020613d485f395f51905f52017f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e567613267565b83610705565b60405162461bcd60e51b815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f2061646472657373000000006044820152606490fd5b68ffffffffffffffffff191668010000000000000001175f516020613dc85f395f51905f525582610695565b63f92ee8a960e01b5f5260045ffd5b9050158461066c565b303b159150610664565b84915061065a565b346102db5760203660031901126102db57602061096661095461032b6129a7565b607f808260081c169160011c16613076565b604051908152f35b60803660031901126102db576109826129a7565b61098a6129bd565b906044356064356001600160401b0381116102db576109ad903690600401612ae0565b6109bb838686979497612ce0565b813b6109c357005b610308946109d2913691612aaa565b926139a2565b346102db575f3660031901126102db576102d76109f36132f2565b60405191829182612b36565b346102db5760203660031901126102db576020607f610a1f61032b6129a7565b60081c16604051908152f35b346102db575f3660031901126102db576102d7604051610a4c6040826129d3565b60058152640352e302e360dc1b60208201526040519182918261292b565b346102db5760203660031901126102db57610a836129a7565b610a8b61350d565b6001600160a01b03168015610ad257600280546001600160a01b031916821790557fe05443f24ac3d1d1ff306fb2b4e65932b1349fec7156ae5cc16acb81453682ca5f80a2005b60405162461bcd60e51b815260206004820152602360248201527f56524620636f6e73756d65722063616e6e6f74206265207a65726f206164647260448201526265737360e81b6064820152608490fd5b346102db5760603660031901126102db57610b3c6129a7565b610b44612a0b565b6044359160018060a01b03165f52600860205261ffff60405f2091165f5260205260405f2080548210156102db57602091610b7e91612b0d565b90549060031b1c604051908152f35b346102db5760403660031901126102db57610ba66129a7565b6024358015158091036102db5781601c52670a5a2e7a00000000600852335f52806030600c20555f5260018060a01b0316337f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160205fa3005b346102db5760203660031901126102db576020600180610c2061032b6129a7565b1614604051908152f35b60203660031901126102db57600435610c41613540565b801515806112f9575b156112aa57610c576132f2565b906003821015918261120957801561127457610c71613a51565b80611267575b156112595767016345785d8a0000925b610c918385613ac5565b341061121d5761120957600181036110125750607f610caf33613a34565b60011c16916005610cc08385613076565b11610fbf5760ff60045416610f76575b6101f4610cdf83600354613076565b11610f3157600954610cfc610cf46001613c5d565b5f6001613850565b5f5b848110610f1457505050610d1482600354613076565b806003556101f4811015610ed9575b50610d2d33613a34565b92610d3e83607f8660011c16613076565b93607f8511610e9857610dc594610daa916001808260101c16145f14610e9257620100005b60018083600f1c16145f14610e8c576180005b600183811603610e845760ff60015b166002600160e01b0360019590951b94909416617f0093909316911717171733613c77565b826005610db78284613076565b1015610e48575b5050613ac5565b8034115f14610e4157610dd89034612cbf565b80610df05760015f516020613da85f395f51905f5255005b5f80808093335af1610e00613034565b5015610e0c5780610489565b60405162461bcd60e51b815260206004820152600d60248201526c1499599d5b990819985a5b1959609a1b6044820152606490fd5b505f610dd8565b610e5191613076565b6040519081527fad44db9ee963035c0a812721e383c8168ed73353fa424e330d85ffc41332494160203392a28382610dbe565b60ff5f610d85565b5f610d76565b5f610d63565b60405162461bcd60e51b81526020600482015260196024820152784865617679207061636b20636f756e74206f766572666c6f7760381b6044820152606490fd5b60207f17d3ab55a0e2d758e55a583b3c1e8d0e15e55c820f5aea7b3c1bdd3fa45814d891604051908152a160ff196001541660015583610d23565b80610f2b83610f2560019487613076565b336138d3565b01610cfe565b60405162461bcd60e51b815260206004820152601d60248201527f576f756c6420657863656564206865617679207061636b206c696d69740000006044820152606490fd5b600180610f8233613a34565b1614610cd05760405162461bcd60e51b815260206004820152600f60248201526e139bdd081dda1a5d195b1a5cdd1959608a1b6044820152606490fd5b60405162461bcd60e51b815260206004820152602560248201527f576f756c6420657863656564206d6178206865617679207061636b7320706572604482015264103ab9b2b960d91b6064820152608490fd5b600214611023575b610dc591613ac5565b607f61102e33613a34565b60081c1691601461103f8385613076565b116111b55760095461105b6110535f613c5d565b60015f613850565b5f5b84811061119e5750505061107033613a34565b9261108183607f8660081c16613076565b607f811161115957610dc5946110ec916001808360101c16145f1461115357620100005b60018084600f1c16145f1461114d576180005b6001848116036111455760ff60015b1660fe94909416610100600160e01b0360089490941b93909316911717171733613c77565b8260146110f98284613076565b1015611109575b5050915061101a565b61111291613076565b6040519081527fad44db9ee963035c0a812721e383c8168ed73353fa424e330d85ffc41332494160203392a28382611100565b60ff5f6110c7565b5f6110b8565b5f6110a5565b60405162461bcd60e51b815260206004820152601a60248201527f4e6f726d616c207061636b20636f756e74206f766572666c6f770000000000006044820152606490fd5b806111af83610f2560019487613076565b0161105d565b60405162461bcd60e51b815260206004820152602660248201527f576f756c6420657863656564206d6178206e6f726d616c207061636b7320706560448201526539103ab9b2b960d11b6064820152608490fd5b634e487b7160e01b5f52602160045260245ffd5b60405162461bcd60e51b8152602060048201526014602482015273125b9cdd59999a58da595b9d081c185e5b595b9d60621b6044820152606490fd5b66b1a2bc2ec5000092610c87565b505f925060028114610c77565b60405162461bcd60e51b815260206004820152600e60248201526d4e6f2073616c652061637469766560901b6044820152606490fd5b60405162461bcd60e51b815260206004820152602160248201527f496e76616c6964207175616e746974793a20312d3230207061636b73206f6e6c6044820152607960f81b6064820152608490fd5b506014811115610c4a565b346102db5760803660031901126102db576004356001600160401b0381116102db57366023820112156102db57806004013590611340826129f4565b9161134e60405193846129d3565b8083526024602084019160051b830101913683116102db57602401905b82821061146a578361137b6129bd565b60443561ffff811681036102db576064359160ff831683036102db5761139f613540565b60015460081c6001600160a01b03163303611410575f5b84518110156113db57806113d56113cf60019388612cab565b51613578565b016113b6565b506113f7906020936113f16009549485926137bd565b916138d3565b60015f516020613da85f395f51905f5255604051908152f35b60405162461bcd60e51b815260206004820152602c60248201527f4f6e6c79206372616674696e67206d616e616765722063616e2063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608490fd5b813581526020918201910161136b565b346102db575f3660031901126102db576102d760405161149b6040826129d3565b60078152664e4f524d49455360c81b60208201526040519182918261292b565b346102db575f3660031901126102db575f516020613d285f395f51905f52546040516001600160a01b039091168152602090f35b346102db5760203660031901126102db576004355f818152673ec412a9852d173d60c11b601c5260209020810181015460601b156115505761ffff60ff611537606093613a81565b9193908360405195168552166020840152166040820152f35b60405162461bcd60e51b8152602060048201526014602482015273151bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b6044820152606490fd5b346102db575f3660031901126102db576115a4613540565b6001806115b033613a34565b600f1c16036116d8576115d36001806115c833613a34565b60101c1614156132aa565b6009546115e5630320000182336138d3565b6115ee33613a34565b60018082600f1c1614908115611693576116489161161260018360101c16156132aa565b156116885762010000618000915b6001818116036116805760ff60015b1660fe8216617f00929092169390931717171733613c77565b337ff9af2464f81ee47526e753a034735725e07d8d185919417ba076332aa73f645a5f80a360015f516020613da85f395f51905f5255005b60ff5f61162f565b620100005f91611620565b60405162461bcd60e51b815260206004820152601f60248201527f55736572206e6f7420656c696769626c6520666f722066726565207061636b006044820152606490fd5b60405162461bcd60e51b815260206004820152601a60248201527f4e6f7420656c696769626c6520666f722066726565207061636b0000000000006044820152606490fd5b346102db575f3660031901126102db576020611737613a51565b6040519015158152f35b346102db5760203660031901126102db5761175a6129a7565b61176261350d565b6001600160a01b0381169081156117be5760018054610100600160a81b03191660089290921b610100600160a81b03169190911790557fd92a414c4b9e90574a72a0687935555eadea52291e91c532b161c7c1bf74bc285f80a2005b60405162461bcd60e51b815260206004820152602860248201527f4372616674696e6720636f6e74726163742063616e6e6f74206265207a65726f604482015267206164647265737360c01b6064820152608490fd5b346102db5761182236612955565b61182a61350d565b611835811515612b6c565b6118426064821115612ba6565b5f5b81811061188257507f2a55a0d5ab468cdf42e45d8b63743125b80e7b5728ab822976ea33814a72c2099161187d60405192839283612c57565b0390a1005b6001906118ab6001600160a01b036118a361189e848789612be7565b612bf7565b161515612c0b565b81806118be61032b61189e85888a612be7565b16036118cb575b01611844565b6119266118dc61189e838688612be7565b6118e581613a34565b84808260101c16145f1461192b5762010000905b8591617f0060fe60028960e01b03891985161616926101008960e01b039060ff1916161617171790613c77565b6118c5565b5f906118f9565b346102db5760203660031901126102db576020607f61195261032b6129a7565b60011c16604051908152f35b346102db575f3660031901126102db576020600754604051908152f35b346102db575f3660031901126102db576020600954604051908152f35b346102db575f3660031901126102db576119b061350d565b5f516020613d285f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346102db5760203660031901126102db57611a186129a7565b8015611a4557673ec412a9852d173d60c11b601c525f52602063ffffffff601c600c205416604051908152f35b638f4eb6045f526004601cfd5b346102db5760203660031901126102db576020600180611a7361032b6129a7565b600f1c16146040519015158152f35b346102db5760203660031901126102db576020611aa060043561327d565b6040516001600160a01b039091168152f35b346102db5760403660031901126102db57600435602435611ad161350d565b8115611b935781811015611b38577fb24a585979bbf2d769da8f8cacab868622ae8edf740b22d9bfe7e09966bd09c391608091600260ff196001541617600155426005558160065580600755604051914283526064602084015260408301526060820152a1005b60405162461bcd60e51b815260206004820152602d60248201527f5061636b206f70656e696e672064656c6179206d757374206265206c6573732060448201526c3a3430b710323ab930ba34b7b760991b6064820152608490fd5b60405162461bcd60e51b815260206004820152601f60248201527f4475726174696f6e206d7573742062652067726561746572207468616e2030006044820152606490fd5b346102db5760403660031901126102db57611bf16129a7565b611bf9612a0b565b9060018060a01b03165f52600860205261ffff60405f2091165f5260205260405f206040519081602082549182815201915f5260205f20905f5b818110611c56576102d785611c4a818703826129d3565b60405191829182612a56565b8254845260209093019260019283019201611c33565b346102db5760203660031901126102db576004356001600160401b0381116102db57611c9c903690600401612ae0565b611ca461350d565b6001600160401b038111611e1d57611cbc5f5461322f565b601f8111611dd8575b505f91601f8211600114611d4857604090827f6741b2fc379fad678116fe3d4d4b9a1a184ab53ba36b86ad0fa66340b1ab41ad945f91611d3d575b508360011b905f198560031b1c1916175f555b82825193849260208452816020850152848401375f828201840152601f01601f19168101030190a1005b905081013585611d00565b5f8080525f516020613d485f395f51905f5290601f198416905b818110611dc05750907f6741b2fc379fad678116fe3d4d4b9a1a184ab53ba36b86ad0fa66340b1ab41ad94846040949310611da7575b5050600183811b015f55611d13565b8201355f19600386901b60f8161c191690558480611d98565b83860135835560209586019560019093019201611d62565b5f8052611e0d905f516020613d485f395f51905f52601f840160051c81019160208510611e13575b601f0160051c0190613267565b82611cc5565b9091508190611e00565b634e487b7160e01b5f52604160045260245ffd5b346102db57611e3f36612955565b611e4761350d565b611e52811515612b6c565b611e5f6064821115612ba6565b5f5b818110611e9a57507f6b3e78be6e65c6ee6172cd5d8cc3739bcfaaad32d240e5fa17d94004238726ed9161187d60405192839283612c57565b80600180611eb061032b61189e8396888a612be7565b1614611ebd575b01611e61565b611f1b611ece61189e838688612be7565b611ed781613a34565b84808260101c16145f14611f205762010000905b60ff5f1691617f0060fe60028960e01b03891985161616926101008960e01b039060ff1916161617171790613c77565b611eb7565b5f90611eeb565b346102db575f3660031901126102db577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003611f7e5760206040515f516020613d685f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b346102db575f3660031901126102db57602060ff600454166040519015158152f35b60403660031901126102db57611fc36129a7565b6024356001600160401b0381116102db57366023820112156102db57611ff3903690602481600401359101612aaa565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630811490811561216b575b50611f7e5761203561350d565b6040516352d1902d60e01b81526001600160a01b0383169290602081600481875afa5f9181612137575b506120775783634c9c8ce360e01b5f5260045260245ffd5b805f516020613d685f395f51905f528592036121255750813b15612113575f516020613d685f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151156120fb575f8083602061030895519101845af46120f5613034565b91613cc9565b50503461210457005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d602011612163575b81612153602093836129d3565b810103126102db5751908561205f565b3d9150612146565b5f516020613d685f395f51905f52546001600160a01b03161415905083612028565b61219636612a1c565b6121a38183859495612ce0565b823b6121ab57005b61030892604051926121be6020856129d3565b5f84526139a2565b346102db5760203660031901126102db576102d7611c4a6121e56129a7565b613091565b346102db575f3660031901126102db5761220261350d565b61220a613540565b478015612291575f516020613d285f395f51905f52545f918291829182916001600160a01b03165af161223b613034565b50156122545760015f516020613da85f395f51905f5255005b60405162461bcd60e51b8152602060048201526015602482015274115512081dda5d1a191c985dd85b0819985a5b1959605a1b6044820152606490fd5b60405162461bcd60e51b81526020600482015260146024820152734e6f2066756e647320746f20776974686472617760601b6044820152606490fd5b346102db575f3660031901126102db576122e561350d565b7fcd6c7c6a4f16582e08b6b730d4e9b1b5bec991a95228a540fd1a2c47a5301cdc61187d6123116132f2565b60ff196001541660015560405191829182612b36565b61030861233336612a1c565b91612ce0565b346102db575f3660031901126102db576002546040516001600160a01b039091168152602090f35b346102db575f3660031901126102db576020600654604051908152f35b346102db575f3660031901126102db576020610966600954600a5490612cbf565b346102db575f3660031901126102db576123b761350d565b600160ff19815416176001557f5c6066d3b81c4f648a35b135497d24e3b68fd6833bd45d640bc6be11f983c1a560206040516101f48152a1005b346102db575f3660031901126102db576020600554604051908152f35b346102db5760803660031901126102db576124276129bd565b604435906001600160401b0382116102db57366023830112156102db578160040135612452816129f4565b9261246060405194856129d3565b8184526024602085019260051b820101903682116102db57602401915b81831061262957505050606435916001600160401b0383116102db57366023840112156102db5782600401356124b2816129f4565b936124c060405195866129d3565b8185526024602086019260051b820101903682116102db57602401915b81831061260f575050506124ef613540565b6002546001600160a01b031633036125b957805183510361255c57612515600435613578565b5f5b81518110156104895760019061255660095461254f60ff612538858a612cab565b511661ffff6125478689612cab565b5116906137bd565b90866138d3565b01612517565b60405162461bcd60e51b815260206004820152602f60248201527f436172642049447320616e64207261726974696573206d75737420686176652060448201526e0e8d0ca40e6c2daca40d8cadccee8d608b1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f4f6e6c792056524620636f6e73756d65722063616e2063616c6c207468697320604482015267333ab731ba34b7b760c11b6064820152608490fd5b823560ff811681036102db578152602092830192016124dd565b823561ffff811681036102db5781526020928301920161247d565b60403660031901126102db576126586129a7565b6024355f818152673ec412a9852d173d60c11b3317601c526020902081018101805491926001600160a01b0390811692169081156126ec578290823314331517156126c8575b600101557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4005b9050815f526030600c2054156126df57829061269e565b634b6e7f185f526004601cfd5b63ceea21b65f526004601cfd5b346102db5760203660031901126102db576004355f818152673ec412a9852d173d60c11b601c5260209020810101805460601b156126ec57600101546040516001600160a01b039091168152602090f35b346102db5761275836612955565b61276061350d565b61276b811515612b6c565b6127786064821115612ba6565b5f5b8181106127b357507fbb92e25d386185255892db5e64e4224e50f1b598e6f33b590093bbfb4061c7119161187d60405192839283612c57565b6001906127cf6001600160a01b036118a361189e848789612be7565b6128316127e061189e838688612be7565b6127e981613a34565b84808260101c16145f146128375762010000905b61800060ff871692617f0060fe60028a60e01b038a1986161616936101008a60e01b039060ff191616161717171790613c77565b0161277a565b5f906127fd565b346102db575f3660031901126102db576102d760405161285f6040826129d3565b60078152664e6f726d69657360c81b60208201526040519182918261292b565b346102db5760203660031901126102db576004358015158091036102db5760207f9bea0dd3cae4438dc4c54c3110002aedc380f4075b6edae73ae0536105a2008a916128c961350d565b60ff196004541660ff821617600455604051908152a1005b346102db5760203660031901126102db57600435906001600160e01b0319821682036102db5760209160e01c635b5e139f8114906301ffc9a76380ac58cd82149114171715158152f35b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b9060206003198301126102db576004356001600160401b0381116102db57826023820112156102db578060040135926001600160401b0384116102db5760248460051b830101116102db576024019190565b600435906001600160a01b03821682036102db57565b602435906001600160a01b03821682036102db57565b90601f801991011681019081106001600160401b03821117611e1d57604052565b6001600160401b038111611e1d5760051b60200190565b6024359061ffff821682036102db57565b60609060031901126102db576004356001600160a01b03811681036102db57906024356001600160a01b03811681036102db579060443590565b60206040818301928281528451809452019201905f5b818110612a795750505090565b8251845260209384019390920191600101612a6c565b6001600160401b038111611e1d57601f01601f191660200190565b929192612ab682612a8f565b91612ac460405193846129d3565b8294818452818301116102db578281602093845f960137010152565b9181601f840112156102db578235916001600160401b0383116102db57602083818601950101116102db57565b8054821015612b22575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b9190602083019260038210156112095752565b60405190612b586040836129d3565b60058252640332e302e360dc1b6020830152565b15612b7357565b60405162461bcd60e51b815260206004820152600b60248201526a456d70747920617272617960a81b6044820152606490fd5b15612bad57565b60405162461bcd60e51b8152602060048201526012602482015271546f6f206d616e792061646472657373657360701b6044820152606490fd5b9190811015612b225760051b0190565b356001600160a01b03811681036102db5790565b15612c1257565b60405162461bcd60e51b815260206004820152601d60248201527f43616e6e6f742077686974656c697374207a65726f20616464726573730000006044820152606490fd5b60208082528101839052604001915f905b808210612c755750505090565b91929091908335906001600160a01b03821682036102db576001600160a01b039091168152602090810193019160010190612c68565b8051821015612b225760209160051b010190565b91908203918211612ccc57565b634e487b7160e01b5f52601160045260245ffd5b9091906001600160a01b03811615158061301f575b612f3b575b5f828152673ec412a9852d173d60c11b3317601c52602090208201820180546001600160a01b0394851694928316928116808414810215612f265750825f528160010180548033148533141715612f0f575b612f06575b50848318189055601c600c205f198154019055825f52601c600c2060018154019063ffffffff8216850215612ef157558183825f516020613d885f395f51905f525f80a4612d9e82613a81565b509190508015612edb575f52600860205260405f2061ffff82165f5260205260405f20928354935f5b858110612e45575b5050909192505b8015612e32575f52600860205261ffff60405f2091165f5260205260405f2090815491600160401b831015611e1d5782612e18916001612e3095018155612b0d565b90919082549060031b91821b915f19901b1916179055565b565b505050612e40600a54613083565b600a55565b84612e508284612b0d565b90549060031b1c14612e6457600101612dc7565b5f959192939495198201918211612ccc57612e18612e85612e939385612b0d565b90549060031b1c9184612b0d565b80548015612ec7575f190190612ebc612eac8383612b0d565b8154905f199060031b1b19169055565b559082915f80612dcf565b634e487b7160e01b5f52603160045260245ffd5b509091612ee9600954613083565b600955612dd6565b67ea553b3401336cea851560021b526004601cfd5b5f90555f612d51565b6030600c2054612d4c57634b6e7f185f526004601cfd5b67ceea21b6a1148100901560021b526004601cfd5b600160ff612f4884613a81565b50501611612cfa5760025460405163b20b1bfb60e01b81526004810184905290602090829060249082906001600160a01b03165afa9081156104ac575f91612fed575b5015612cfa5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74207472616e73666572207061636b207768696c65206f70656e6960448201526d6e6720696e2070726f677265737360901b6064820152608490fd5b90506020813d602011613017575b81613008602093836129d3565b810103126102db57515f612f8b565b3d9150612ffb565b506002546001600160a01b0316331415612cf5565b3d1561305e573d9061304582612a8f565b9161305360405193846129d3565b82523d5f602084013e565b606090565b61ffff1661ffff8114612ccc5760010190565b91908201809211612ccc57565b5f198114612ccc5760010190565b6002546040516331498fa360e21b815290602090829060049082906001600160a01b03165afa80156104ac575f906131f0575b5f92915061ffff1660025b8161ffff8216106131b457508215613199576130ea836129f4565b926130f860405194856129d3565b808452613107601f19916129f4565b013660208501375f9160025b8261ffff821610613125575050505090565b6001600160a01b0382165f90815260086020908152604080832061ffff85168452909152812080545b8083106131665750505061316190613063565b613113565b9091956131906001916131798986612b0d565b90549060031b1c61318a828c612cab565b52613083565b9601919061314e565b5050506040516131aa6020826129d3565b5f81525f36813790565b926131e56131eb9160018060a01b0385165f52600860205260405f2061ffff87165f5260205260405f205490613076565b93613063565b6130cf565b506020813d602011613227575b8161320a602093836129d3565b810103126102db575161ffff811681036102db5761ffff906130c4565b3d91506131fd565b90600182811c9216801561325d575b602083101461324957565b634e487b7160e01b5f52602260045260245ffd5b91607f169161323e565b818110613272575050565b5f8155600101613267565b5f818152673ec412a9852d173d60c11b601c5260209020810101546001600160a01b03169081156126ec57565b156132b157565b60405162461bcd60e51b8152602060048201526019602482015278119c9959481c1858dac8185b1c9958591e4818db185a5b5959603a1b6044820152606490fd5b60ff600154166003811015611209576002811480613317575b6133125790565b505f90565b5061332760055460065490613076565b42101561330b565b5f818152673ec412a9852d173d60c11b601c5260209020810181015460601b1561348d5761335c90613a81565b505f54915061336a8261322f565b1561347757604051600a61ffff608083019360a084016040525f855216925b5f1901926030828206018453049182156133a557600a90613389565b9150608082601f19810192030181526040519283915f916133c58161322f565b90600181169081156134535750600114613407575b50926005929161340494518092825e0164173539b7b760d91b815203601a198101845201826129d3565b90565b5f808052919250905f516020613d485f395f51905f525b8282106134355750508201602001906134046133da565b60209192939450806001915483858a0101520191018593929161341e565b60ff19166020808701919091528215159092028501909101925061340490506133da565b50506040516134876020826129d3565b5f815290565b63677510db60e11b5f5260045ffd5b6001600160a01b031680156134fa575f516020613d285f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b5f516020613d285f395f51905f52546001600160a01b0316330361352d57565b63118cdaa760e01b5f523360045260245ffd5b60025f516020613da85f395f51905f5254146135695760025f516020613da85f395f51905f5255565b633ee5aeb560e01b5f5260045ffd5b6001600160a01b036135898261327d565b161515806137a8575b6136c4575b5f818152673ec412a9852d173d60c11b601c52602090208101810180546001600160a01b038116919082156126ec578290815f528260010180548015600117156136b0575b6136a7575b50189055601c600c2080545f19019055815f825f516020613d885f395f51905f528280a461360e82613a81565b509190505f52600860205261ffff60405f2091165f5260205260405f2080545f5b818110613646575b50505050612e40600a54613083565b836136518285612b0d565b90549060031b1c146136655760010161362f565b9192505f19810191908211612ccc57612e18612e856136849385612b0d565b80548015612ec7575f19019061369d612eac8383612b0d565b555f808080613637565b5f90555f6135e1565b92506030600c2054156126df5784926135dc565b600160ff6136d183613a81565b505016116135975760025460405163b20b1bfb60e01b81526004810183905290602090829060249082906001600160a01b03165afa9081156104ac575f91613776575b50156135975760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74207472616e73666572207061636b207768696c65206f70656e6960448201526d6e6720696e2070726f677265737360901b6064820152608490fd5b90506020813d6020116137a0575b81613791602093836129d3565b810103126102db57515f613714565b3d9150613784565b506002546001600160a01b0316331415613592565b60ff1690601f82116138185761ffff808216116137e05760031b6207fff8161790565b60405162461bcd60e51b815260206004820152601060248201526f43617264496420746f6f206c6172676560801b6044820152606490fd5b60405162461bcd60e51b815260206004820152601060248201526f52617269747920746f6f206c6172676560801b6044820152606490fd5b60ff909291921690601f82116138185761ffff808416116137e057606460ff82161161388e576307f800006207fff89160131b169260031b16171790565b60405162461bcd60e51b815260206004820152601c60248201527f5365636f6e642072617265206368616e636520746f6f206c61726765000000006044820152606490fd5b91909160018060a01b03168091835f52673ec412a9852d173d60c11b601c5260a01b1760205f208301830155805f52601c600c2060018154019063ffffffff821683021561398d575581815f5f516020613d885f395f51905f528180a461393982613a81565b50919050613948600954613083565b6009558015612e32575f52600860205261ffff60405f2091165f5260205260405f2090815491600160401b831015611e1d5782612e18916001612e3095018155612b0d565b67ea553b3401336cea831560021b526004601cfd5b9060a46020939460405195869463150b7a028652338787015260018060a01b03166040860152606085015260808085015280518091818060a0880152613a20575b505001905f601c8401915af115613a12575b5163757a42ff60e11b01613a0557565b63d1a57ed65f526004601cfd5b3d156139f5573d5f823e3d90fd5b818760c08801920160045afa50805f6139e3565b673ec412a9852d173d60c11b601c525f52601c600c205460201c90565b613a596132f2565b600381101561120957600203613a7d57613a7560055442612cbf565b600754111590565b5f90565b805f52673ec412a9852d173d60c11b601c5260205f2081010154607f8160b31c16600761ffff8360a31c169260a01c1692565b9081606402916064830403612ccc57565b81810292918115918404141715612ccc57565b15613adf57565b60405162461bcd60e51b8152602060048201526011602482015270125b9d985b1a59081c9958da5c1a595b9d607a1b6044820152606490fd5b8115613b22570490565b634e487b7160e01b5f52601260045260245ffd5b5f908015613bee578080600114613be657600214613bdf5760016101338210166001600b83101617613bd1579060019060025b60018111613b955750825f19048211613b8157500290565b634e487b7160e01b81526011600452602490fd5b92805f19048111613bbd5760018416613bb4575b80029260011c613b69565b80920291613ba9565b634e487b7160e01b82526011600452602482fd5b6002900a919080613b815750565b5050600490565b505050600190565b50505f90565b613bfc6132f2565b600381101561120957600203613a7d57613c1860055442612cbf565b613c256006549182612cbf565b90606482029180830460641490151715612ccc57613c58613c53613c4e6127109360ff95613b18565b613b36565b613ab4565b041690565b60ff1660018114613c715715613bf4575f90565b50606490565b673ec412a9852d173d60c11b601c525f52601c600c20908154908160201c1860201b189055565b60ff5f516020613dc85f395f51905f525460401c1615613cba57565b631afcd79f60e31b5f5260045ffd5b90613ced5750805115613cde57602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580613d1e575b613cfe575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15613cf656fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212201ae422b99a275d15b4719d81bd33b1c45aa810d982baf4a2134919aae9afefa764736f6c634300081e0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00