0 txs
2 calls
constructor
constructor()
functions
balanceOf
viewfunction balanceOf(address account, uint256 id) view returns (uint256)
balanceOfBatch
viewfunction balanceOfBatch(address[] accounts, uint256[] ids) view returns (uint256[])
isApprovedForAll
viewfunction isApprovedForAll(address account, address operator) view returns (bool)
mintable
viewfunction mintable(uint256 tokenId) view returns (bool)
owner
viewfunction owner() view returns (address)
paymentToken
viewfunction paymentToken() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
signer
viewfunction signer() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
transferable
viewfunction transferable(uint256 tokenId) view returns (bool)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
uri
viewfunction uri(uint256) view returns (string)
initialize
nonpayablefunction initialize(address _signer, address _paymentToken, string uri)
mintCollectibles
nonpayablefunction mintCollectibles(uint256 quantity, uint256 tokenCost, uint256 tokenId, address recipientAddress, bytes signature)
renounceOwnership
nonpayablefunction renounceOwnership()
safeBatchTransferFrom
nonpayablefunction safeBatchTransferFrom(address from, address to, uint256[] ids, uint256[] values, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, uint256 value, bytes data)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setMintable
nonpayablefunction setMintable(uint256 tokenId, bool isMintable)
setPaymentToken
nonpayablefunction setPaymentToken(address _paymentToken)
setSigner
nonpayablefunction setSigner(address _signer)
setTransferable
nonpayablefunction setTransferable(uint256 tokenId, bool isTransferable)
setURI
nonpayablefunction setURI(string uri)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdrawERC20
nonpayablefunction withdrawERC20(address token, address to, uint256 amount)
events
AdminAccessed
event AdminAccessed(address indexed caller, bytes msgData)
ApprovalForAll
event ApprovalForAll(address indexed account, address indexed operator, bool approved)
CollectiblesMinted
event CollectiblesMinted(uint256 indexed tokenId, address indexed recipientAddress, uint256 quantity)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
TransferBatch
event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values)
TransferSingle
event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value)
Upgraded
event Upgraded(address indexed implementation)
URI
event URI(string value, uint256 indexed id)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
ERC1155InsufficientBalance
error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId)
ERC1155InvalidApprover
error ERC1155InvalidApprover(address approver)
ERC1155InvalidArrayLength
error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength)
ERC1155InvalidOperator
error ERC1155InvalidOperator(address operator)
ERC1155InvalidReceiver
error ERC1155InvalidReceiver(address receiver)
ERC1155InvalidSender
error ERC1155InvalidSender(address sender)
ERC1155MissingApprovalForAll
error ERC1155MissingApprovalForAll(address operator, address owner)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedInnerCall
error FailedInnerCall()
InvalidInitialization
error InvalidInitialization()
InvalidPaymentToken
error InvalidPaymentToken()
InvalidSignature
error InvalidSignature()
InvalidSignerAddress
error InvalidSignerAddress()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
ToIsZeroAddress
error ToIsZeroAddress()
TokenNotMintable
error TokenNotMintable()
TokenNotTransferable
error TokenNotTransferable()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612a6b6100f95f395f81816114440152818161146d01526115c20152612a6b5ff3fe608060405260043610610198575f3560e01c80634f1ef286116100dc578063a22cb46511610087578063e985e9c511610062578063e985e9c5146104d3578063f242432a14610539578063f2fde38b14610558578063f4c3b4d714610577575f5ffd5b8063a22cb4651461044d578063ad3cb1cc1461046c578063dfe28fbf146104b4575f5ffd5b80636c19e783116100b75780636c19e783146103de578063715018a6146103fd5780638da5cb5b14610411575f5ffd5b80634f1ef2861461039857806352d1902d146103ab5780636a326ab1146103bf575f5ffd5b8063238ac933116101475780633013ce29116101225780633013ce29146102f257806344004cc11461032e5780634571e3a61461034d5780634e1273f41461036c575f5ffd5b8063238ac933146102885780632abebe36146102b45780632eb2c2d6146102d3575f5ffd5b80630e89341c116101775780630e89341c1461021e5780630f7849431461024a5780631936165414610269575f5ffd5b8062fdd58e1461019c57806301ffc9a7146101ce57806302fe5305146101fd575b5f5ffd5b3480156101a7575f5ffd5b506101bb6101b6366004612161565b610596565b6040519081526020015b60405180910390f35b3480156101d9575f5ffd5b506101ed6101e836600461219e565b6105de565b60405190151581526020016101c5565b348015610208575f5ffd5b5061021c610217366004612270565b610678565b005b348015610229575f5ffd5b5061023d6102383660046122aa565b610694565b6040516101c591906122ef565b348015610255575f5ffd5b506101ed6102643660046122aa565b610769565b348015610274575f5ffd5b5061021c610283366004612301565b6107a8565b348015610293575f5ffd5b5061029c61099e565b6040516001600160a01b0390911681526020016101c5565b3480156102bf575f5ffd5b5061021c6102ce3660046123aa565b6109d0565b3480156102de575f5ffd5b5061021c6102ed366004612461565b610a2e565b3480156102fd575f5ffd5b507f5a28e9363890463c9c0af14a039c4fd0b531a70d4fac0c70c1ed7f14875b4901546001600160a01b031661029c565b348015610339575f5ffd5b5061021c610348366004612510565b610abc565b348015610358575f5ffd5b5061021c61036736600461254a565b610b1c565b348015610377575f5ffd5b5061038b6103863660046125a4565b610c5b565b6040516101c591906126a1565b61021c6103a63660046126b3565b610d2b565b3480156103b6575f5ffd5b506101bb610d46565b3480156103ca575f5ffd5b5061021c6103d93660046126f4565b610d74565b3480156103e9575f5ffd5b5061021c6103f83660046126f4565b610df9565b348015610408575f5ffd5b5061021c610e81565b34801561041c575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031661029c565b348015610458575f5ffd5b5061021c61046736600461270d565b610e94565b348015610477575f5ffd5b5061023d6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156104bf575f5ffd5b5061021c6104ce3660046123aa565b610e9f565b3480156104de575f5ffd5b506101ed6104ed366004612735565b6001600160a01b039182165f9081527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45016020908152604080832093909416825291909152205460ff1690565b348015610544575f5ffd5b5061021c61055336600461275d565b610ef9565b348015610563575f5ffd5b5061021c6105723660046126f4565b610f7f565b348015610582575f5ffd5b506101ed6105913660046122aa565b610fd2565b5f8181527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4500602090815260408083206001600160a01b03861684529091529020545b92915050565b5f6001600160e01b031982167fd9b67a2600000000000000000000000000000000000000000000000000000000148061064057506001600160e01b031982167f0e89341c00000000000000000000000000000000000000000000000000000000145b806105d857507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316146105d8565b610680611011565b610688611085565b610691816110ca565b50565b7f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c450280546060917f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4500916106e5906127b1565b80601f0160208091040260200160405190810160405280929190818152602001828054610711906127b1565b801561075c5780601f106107335761010080835404028352916020019161075c565b820191905f5260205f20905b81548152906001019060200180831161073f57829003601f168201915b5050505050915050919050565b600881901c5f9081527f5a28e9363890463c9c0af14a039c4fd0b531a70d4fac0c70c1ed7f14875b4902602052604081205460ff83161c6001166105d8565b6107b0611137565b5f7f5a28e9363890463c9c0af14a039c4fd0b531a70d4fac0c70c1ed7f14875b4900604080516001600160a01b038716602082015290810188905260608101899052608081018790529091505f9060a001604051602081830303815290604052805190602001209050610847816020527b19457468657265756d205369676e6564204d6573736167653a0a33325f52603c60042090565b82549091506001600160a01b031661086082868661119a565b6001600160a01b0316146108a0576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600886901c5f90815260028301602052604090205460ff87161c6001166108f3576040517f7d41f9da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61090d85878a60405180602001604052805f815250611233565b846001600160a01b0316867fd78a843e3990e70c561486e1130f2ad692ab7ee0a25249a1d18bfb94e485cd918a60405161094991815260200190565b60405180910390a3600182015461096b906001600160a01b031633308a61128e565b505061099660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b5f7f5a28e9363890463c9c0af14a039c4fd0b531a70d4fac0c70c1ed7f14875b49005b546001600160a01b0316919050565b6109d8611011565b6109e0611085565b7f5a28e9363890463c9c0af14a039c4fd0b531a70d4fac0c70c1ed7f14875b4902602052600882901c5f908152604090208054600160ff90941693841b191691151590921b179055565b5050565b7f5a28e9363890463c9c0af14a039c4fd0b531a70d4fac0c70c1ed7f14875b49005f5b8451811015610aae57610a89858281518110610a6f57610a6f6127e9565b60200260200101518360030161111690919063ffffffff16565b610aa65760405163647d843160e11b815260040160405180910390fd5b600101610a51565b506109968686868686611316565b610ac4611011565b610acc611085565b6001600160a01b038216610b0c576040517f391bbb4100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b178383836113b2565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f81158015610b665750825b90505f8267ffffffffffffffff166001148015610b825750303b155b905081158015610b90575080155b15610bc7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610bfb57845468ff00000000000000001916680100000000000000001785555b610c06888888611405565b8315610c5157845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60608151835114610c915781518351604051635b05999160e01b8152600481019290925260248201526044015b60405180910390fd5b5f835167ffffffffffffffff811115610cac57610cac6121b9565b604051908082528060200260200182016040528015610cd5578160200160208202803683370190505b5090505f5b8451811015610d2357602080820286010151610cfe90602080840287010151610596565b828281518110610d1057610d106127e9565b6020908102919091010152600101610cda565b509392505050565b610d33611439565b610d3c826114c7565b610a2a82826114cf565b5f610d4f6115b7565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610d7c611011565b6001600160a01b038116610da3576040516356e7ec5f60e01b815260040160405180910390fd5b610dab611085565b7f5a28e9363890463c9c0af14a039c4fd0b531a70d4fac0c70c1ed7f14875b4901805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e01611011565b6001600160a01b038116610e2857604051634501a91960e01b815260040160405180910390fd5b610e30611085565b807f5a28e9363890463c9c0af14a039c4fd0b531a70d4fac0c70c1ed7f14875b49005b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905550565b610e89611011565b610e925f611600565b565b610a2a33838361167d565b610ea7611011565b610eaf611085565b7f5a28e9363890463c9c0af14a039c4fd0b531a70d4fac0c70c1ed7f14875b4903602052600882901c5f908152604090208054600160ff90941693841b191691151590921b179055565b600883901c5f9081527f5a28e9363890463c9c0af14a039c4fd0b531a70d4fac0c70c1ed7f14875b490360205260409020547f5a28e9363890463c9c0af14a039c4fd0b531a70d4fac0c70c1ed7f14875b49009060ff85161c600116610f725760405163647d843160e11b815260040160405180910390fd5b610996868686868661174f565b610f87611011565b6001600160a01b038116610fc9576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610c88565b61069181611600565b600881901c5f9081527f5a28e9363890463c9c0af14a039c4fd0b531a70d4fac0c70c1ed7f14875b4903602052604081205460ff83161c6001166105d8565b336110437f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610e92576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610c88565b336001600160a01b03167f2218aada03516237ddb3d2451b4ccb7efc7c423d55815d064da80786312706b45f366040516110c09291906127fd565b60405180910390a2565b7f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45007f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4502610b17838261286f565b600881901c5f908152602092909252604090912054600160ff9092161c1690565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805460011901611194576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b5f60405182604081146111b557604181146111f55750611226565b60208581013560ff81901c601b0190915285356040527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052611206565b60408501355f1a6020526040856040375b50845f526020600160805f60015afa5191505f606052806040523d610d23575b638baa579f5f526004601cfd5b6001600160a01b03841661125c57604051632bfa23e760e11b81525f6004820152602401610c88565b604080516001808252602082018690528183019081526060820185905260808201909252906109965f878484876117eb565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f5114166112e257803d873b1517106112e257637939f4245f526004601cfd5b505f60605260405250505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b336001600160a01b038616811480159061137457506001600160a01b038087165f9081527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4501602090815260408083209385168352929052205460ff16155b156113a55760405163711bec9160e11b81526001600160a01b03808316600483015287166024820152604401610c88565b6109968686868686611845565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f5114166113fb57803d853b1517106113fb576390b8ec185f526004601cfd5b505f603452505050565b61140d6118a3565b6114168161190a565b61141e61191b565b6114273361192b565b61142f61193c565b610b178383611944565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806114a957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661149d611a13565b6001600160a01b031614155b15610e925760405163703e46dd60e11b815260040160405180910390fd5b610691611011565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611529575060408051601f3d908101601f191682019092526115269181019061292a565b60015b61155157604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610c88565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146115ad576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610c88565b610b178383611a3a565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e925760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45006001600160a01b0383166116e0576040517fced3e1000000000000000000000000000000000000000000000000000000000081525f6004820152602401610c88565b6001600160a01b038481165f818152600184016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b336001600160a01b03861681148015906117ad57506001600160a01b038087165f9081527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4501602090815260408083209385168352929052205460ff16155b156117de5760405163711bec9160e11b81526001600160a01b03808316600483015287166024820152604401610c88565b6109968686868686611a8f565b6117f785858585611b1b565b6001600160a01b0384161561183e57825133906001036118305760208481015190840151611829838989858589611d66565b5050610996565b610996818787878787611e87565b5050505050565b6001600160a01b03841661186e57604051632bfa23e760e11b81525f6004820152602401610c88565b6001600160a01b03851661189657604051626a0d4560e21b81525f6004820152602401610c88565b61183e85858585856117eb565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610e92576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119126118a3565b61069181611f6e565b6119236118a3565b610e92611f76565b6119336118a3565b61069181611f7e565b610e926118a3565b61194c6118a3565b6001600160a01b03821661197357604051634501a91960e01b815260040160405180910390fd5b6001600160a01b03811661199a576040516356e7ec5f60e01b815260040160405180910390fd5b7f5a28e9363890463c9c0af14a039c4fd0b531a70d4fac0c70c1ed7f14875b490080546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff19918216179091557f5a28e9363890463c9c0af14a039c4fd0b531a70d4fac0c70c1ed7f14875b49018054929093169116179055565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6109c1565b611a4382611f86565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611a8757610b178282611fe2565b610a2a612054565b6001600160a01b038416611ab857604051632bfa23e760e11b81525f6004820152602401610c88565b6001600160a01b038516611ae057604051626a0d4560e21b81525f6004820152602401610c88565b60408051600180825260208201869052818301908152606082018590526080820190925290611b1287878484876117eb565b50505050505050565b805182517f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45009114611b6c5782518251604051635b05999160e01b815260048101929092526024820152604401610c88565b335f5b8451811015611c87576020818102868101820151908601909101516001600160a01b03891615611c39575f828152602086815260408083206001600160a01b038d16845290915290205481811015611c13576040517f03dee4c50000000000000000000000000000000000000000000000000000000081526001600160a01b038b166004820152602481018290526044810183905260648101849052608401610c88565b5f838152602087815260408083206001600160a01b038e16845290915290209082900390555b6001600160a01b03881615611c7d575f828152602086815260408083206001600160a01b038c16845290915281208054839290611c77908490612941565b90915550505b5050600101611b6f565b508351600103611d075760208401515f906020850151909150866001600160a01b0316886001600160a01b0316846001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051611cf8929190918252602082015260400190565b60405180910390a45050610996565b846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611d56929190612960565b60405180910390a4505050505050565b6001600160a01b0384163b156109965760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611daa9089908990889088908890600401612984565b6020604051808303815f875af1925050508015611de4575060408051601f3d908101601f19168201909252611de1918101906129cb565b60015b611e4b573d808015611e11576040519150601f19603f3d011682016040523d82523d5f602084013e611e16565b606091505b5080515f03611e4357604051632bfa23e760e11b81526001600160a01b0386166004820152602401610c88565b805181602001fd5b6001600160e01b0319811663f23a6e6160e01b14611b1257604051632bfa23e760e11b81526001600160a01b0386166004820152602401610c88565b6001600160a01b0384163b156109965760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611ecb90899089908890889088906004016129e6565b6020604051808303815f875af1925050508015611f05575060408051601f3d908101601f19168201909252611f02918101906129cb565b60015b611f32573d808015611e11576040519150601f19603f3d011682016040523d82523d5f602084013e611e16565b6001600160e01b0319811663bc197c8160e01b14611b1257604051632bfa23e760e11b81526001600160a01b0386166004820152602401610c88565b6106886118a3565b6112f06118a3565b610f876118a3565b806001600160a01b03163b5f03611fbb57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610c88565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610e53565b60605f5f846001600160a01b031684604051611ffe9190612a48565b5f60405180830381855af49150503d805f8114612036576040519150601f19603f3d011682016040523d82523d5f602084013e61203b565b606091505b509150915061204b85838361208c565b95945050505050565b3415610e92576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826120a15761209c82612104565b6120fd565b81511580156120b857506001600160a01b0384163b155b156120fa576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610c88565b50805b9392505050565b8051156121145780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461215c575f5ffd5b919050565b5f5f60408385031215612172575f5ffd5b61217b83612146565b946020939093013593505050565b6001600160e01b031981168114610691575f5ffd5b5f602082840312156121ae575f5ffd5b81356120fd81612189565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156121f6576121f66121b9565b604052919050565b5f82601f83011261220d575f5ffd5b8135602083015f5f67ffffffffffffffff84111561222d5761222d6121b9565b50601f8301601f1916602001612242816121cd565b915050828152858383011115612256575f5ffd5b828260208301375f92810160200192909252509392505050565b5f60208284031215612280575f5ffd5b813567ffffffffffffffff811115612296575f5ffd5b6122a2848285016121fe565b949350505050565b5f602082840312156122ba575f5ffd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6120fd60208301846122c1565b5f5f5f5f5f5f60a08789031215612316575f5ffd5b86359550602087013594506040870135935061233460608801612146565b9250608087013567ffffffffffffffff81111561234f575f5ffd5b8701601f8101891361235f575f5ffd5b803567ffffffffffffffff811115612375575f5ffd5b896020828401011115612386575f5ffd5b60208201935080925050509295509295509295565b8035801515811461215c575f5ffd5b5f5f604083850312156123bb575f5ffd5b823591506123cb6020840161239b565b90509250929050565b5f67ffffffffffffffff8211156123ed576123ed6121b9565b5060051b60200190565b5f82601f830112612406575f5ffd5b8135612419612414826123d4565b6121cd565b8082825260208201915060208360051b86010192508583111561243a575f5ffd5b602085015b8381101561245757803583526020928301920161243f565b5095945050505050565b5f5f5f5f5f60a08688031215612475575f5ffd5b61247e86612146565b945061248c60208701612146565b9350604086013567ffffffffffffffff8111156124a7575f5ffd5b6124b3888289016123f7565b935050606086013567ffffffffffffffff8111156124cf575f5ffd5b6124db888289016123f7565b925050608086013567ffffffffffffffff8111156124f7575f5ffd5b612503888289016121fe565b9150509295509295909350565b5f5f5f60608486031215612522575f5ffd5b61252b84612146565b925061253960208501612146565b929592945050506040919091013590565b5f5f5f6060848603121561255c575f5ffd5b61256584612146565b925061257360208501612146565b9150604084013567ffffffffffffffff81111561258e575f5ffd5b61259a868287016121fe565b9150509250925092565b5f5f604083850312156125b5575f5ffd5b823567ffffffffffffffff8111156125cb575f5ffd5b8301601f810185136125db575f5ffd5b80356125e9612414826123d4565b8082825260208201915060208360051b85010192508783111561260a575f5ffd5b6020840193505b828410156126335761262284612146565b825260209384019390910190612611565b9450505050602083013567ffffffffffffffff811115612651575f5ffd5b61265d858286016123f7565b9150509250929050565b5f8151808452602084019350602083015f5b82811015612697578151865260209586019590910190600101612679565b5093949350505050565b602081525f6120fd6020830184612667565b5f5f604083850312156126c4575f5ffd5b6126cd83612146565b9150602083013567ffffffffffffffff8111156126e8575f5ffd5b61265d858286016121fe565b5f60208284031215612704575f5ffd5b6120fd82612146565b5f5f6040838503121561271e575f5ffd5b61272783612146565b91506123cb6020840161239b565b5f5f60408385031215612746575f5ffd5b61274f83612146565b91506123cb60208401612146565b5f5f5f5f5f60a08688031215612771575f5ffd5b61277a86612146565b945061278860208701612146565b93506040860135925060608601359150608086013567ffffffffffffffff8111156124f7575f5ffd5b600181811c908216806127c557607f821691505b6020821081036127e357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b601f821115610b1757805f5260205f20601f840160051c810160208510156128505750805b601f840160051c820191505b8181101561183e575f815560010161285c565b815167ffffffffffffffff811115612889576128896121b9565b61289d8161289784546127b1565b8461282b565b6020601f8211600181146128cf575f83156128b85750848201515b5f19600385901b1c1916600184901b17845561183e565b5f84815260208120601f198516915b828110156128fe57878501518255602094850194600190920191016128de565b508482101561291b57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f6020828403121561293a575f5ffd5b5051919050565b808201808211156105d857634e487b7160e01b5f52601160045260245ffd5b604081525f6129726040830185612667565b828103602084015261204b8185612667565b6001600160a01b03861681526001600160a01b038516602082015283604082015282606082015260a060808201525f6129c060a08301846122c1565b979650505050505050565b5f602082840312156129db575f5ffd5b81516120fd81612189565b6001600160a01b03861681526001600160a01b038516602082015260a060408201525f612a1660a0830186612667565b8281036060840152612a288186612667565b90508281036080840152612a3c81856122c1565b98975050505050505050565b5f82518060208501845e5f92019182525091905056fea164736f6c634300081b000a