22 txs
4.3k calls
constructor
constructor(address entropyAddress, address payoutTokenAddress)
functions
claims
viewfunction claims(uint64) view returns (address requester, uint256 roundId, uint256 payout)
defaultBoxProbBp
viewfunction defaultBoxProbBp(uint256) view returns (uint256)
defaultValueShareBp
viewfunction defaultValueShareBp(uint256) view returns (uint256)
entropy
viewfunction entropy() view returns (address)
getEntropyFee
viewfunction getEntropyFee() view returns (uint256)
getRoundPayoutRemaining
viewfunction getRoundPayoutRemaining(uint256 roundId) view returns (uint256)
getRoundTiers
viewfunction getRoundTiers(uint256 roundId) view returns (tuple[])
manager
viewfunction manager() view returns (address)
MAX_BOXES_PER_REQUEST
viewfunction MAX_BOXES_PER_REQUEST() view returns (uint256)
owner
viewfunction owner() view returns (address)
payoutToken
viewfunction payoutToken() view returns (address)
requests
viewfunction requests(uint64) view returns (address requester, uint256 roundId, uint256 count, bool claimed)
rounds
viewfunction rounds(uint256) view returns (uint256 roundId, uint256 totalBoxes, uint256 totalPayout, uint256 availableToReserve, bool initialized)
seeds
viewfunction seeds(uint64) view returns (bytes32)
totalClaimedPerRound
viewfunction totalClaimedPerRound(uint256) view returns (uint256)
totalClaimedPerUser
viewfunction totalClaimedPerUser(uint256, address) view returns (uint256)
totalPaidPerRound
viewfunction totalPaidPerRound(uint256) view returns (uint256)
totalPaidToUser
viewfunction totalPaidToUser(uint256, address) view returns (uint256)
_entropyCallback
nonpayablefunction _entropyCallback(uint64 sequence, address provider, bytes32 randomNumber)
claimPayment
nonpayablefunction claimPayment(uint64 sequenceNumber)
deleteRound
nonpayablefunction deleteRound(uint256 roundId)
initRound
nonpayablefunction initRound(uint256 roundId, uint256 totalBoxes, uint256 totalPayout)
reclaimETH
nonpayablefunction reclaimETH(address to, uint256 amount)
reclaimRemainingPayout
nonpayablefunction reclaimRemainingPayout(uint256 roundId, address to) returns (uint256 reclaimedAmount)
renounceOwnership
nonpayablefunction renounceOwnership()
requestLootboxes
payablefunction requestLootboxes(uint256 roundId, address requester, uint256 count) payable returns (uint64 sequenceNumber)
rescueTokens
nonpayablefunction rescueTokens(address token, uint256 amount)
setManager
nonpayablefunction setManager(address managerAddress)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateDefaultConfigs
nonpayablefunction updateDefaultConfigs(uint256[] boxProbBp, uint256[] valueShareBp)
events
DefaultConfigsUpdated
event DefaultConfigsUpdated()
EntropyFulfilled
event EntropyFulfilled(uint64 indexed seq, address indexed provider, bytes32 seed)
LootClaimed
event LootClaimed(uint64 indexed seq, address indexed claimer, uint256 roundId, uint256[] payouts)
LootRequested
event LootRequested(uint64 indexed seq, address indexed requester, uint256 roundId, uint256 count)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PaymentClaimed
event PaymentClaimed(uint64 indexed seq, address indexed claimer, uint256 roundId, uint256 payout)
ReclaimRemainingPayout
event ReclaimRemainingPayout(uint256 indexed roundId, address indexed to, uint256 reclaimedTokenAmount)
RoundInitialized
event RoundInitialized(uint256 indexed roundId, uint256 totalBoxes, uint256 totalPayout)
TiersConfigured
event TiersConfigured(uint256 indexed roundId)
errors
NoBoxesAvailable
error NoBoxesAvailable()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60c060405234801561000f575f5ffd5b506040516148a03803806148a083398181016040528101906100319190610323565b335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a2575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100999190610370565b60405180910390fd5b6100b18161020460201b60201c565b50600180819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161011e906103e3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161018c9061044b565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250505050610469565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102f2826102c9565b9050919050565b610302816102e8565b811461030c575f5ffd5b50565b5f8151905061031d816102f9565b92915050565b5f5f60408385031215610339576103386102c5565b5b5f6103468582860161030f565b92505060206103578582860161030f565b9150509250929050565b61036a816102e8565b82525050565b5f6020820190506103835f830184610361565b92915050565b5f82825260208201905092915050565b7f656e74726f70792061646472207a65726f0000000000000000000000000000005f82015250565b5f6103cd601183610389565b91506103d882610399565b602082019050919050565b5f6020820190508181035f8301526103fa816103c1565b9050919050565b7f746f6b656e2061646472207a65726f00000000000000000000000000000000005f82015250565b5f610435600f83610389565b915061044082610401565b602082019050919050565b5f6020820190508181035f83015261046281610429565b9050919050565b60805160a0516143e56104bb5f395f818161086c01528181610cbd01528181610e58015281816110a90152611f2e01525f81816109a00152818161106001528181611fc801526121d701526143e55ff3fe6080604052600436106101cc575f3560e01c80637910c3c9116100f6578063b2b261d211610094578063d0ebdbe711610063578063d0ebdbe7146106d9578063dba1771214610701578063f2ea43871461072b578063f2fde38b14610767576101cc565b8063b2b261d2146105fd578063bb92e82514610625578063c2f1c30714610661578063c6e5e1aa1461069d576101cc565b80638f532dbf116100d05780638f532dbf14610521578063a9fe2c9914610549578063acc361b114610585578063ae7d9660146105c1576101cc565b80637910c3c91461047b5780638c65c81f146104b75780638da5cb5b146104f7576101cc565b8063411010ec1161016e57806352a5f1f81161013d57806352a5f1f8146103e55780635391945f1461040d578063573761981461043d578063715018a614610465576101cc565b8063411010ec1461032857806347ce07cc14610367578063481c6a75146103915780634efa82b6146103bb576101cc565b806335dfdef3116101aa57806335dfdef314610274578063379654711461029c5780633b9c0fdc146102c45780633c370ebd146102ec576101cc565b806319af6b17146101d057806327adb7d71461020c5780632d971e631461024a575b5f5ffd5b3480156101db575f5ffd5b506101f660048036038101906101f19190612d94565b61078f565b6040516102039190612de1565b60405180910390f35b348015610217575f5ffd5b50610232600480360381019061022d9190612e37565b610958565b60405161024193929190612e71565b60405180910390f35b348015610255575f5ffd5b5061025e61099d565b60405161026b9190612de1565b60405180910390f35b34801561027f575f5ffd5b5061029a60048036038101906102959190612ea6565b610a42565b005b3480156102a7575f5ffd5b506102c260048036038101906102bd9190612e37565b610c12565b005b3480156102cf575f5ffd5b506102ea60048036038101906102e59190612ef6565b610f08565b005b3480156102f7575f5ffd5b50610312600480360381019061030d9190612ef6565b610fc9565b60405161031f9190612de1565b60405180910390f35b348015610333575f5ffd5b5061034e60048036038101906103499190612e37565b611007565b60405161035e9493929190612f3b565b60405180910390f35b348015610372575f5ffd5b5061037b61105e565b6040516103889190612fd9565b60405180910390f35b34801561039c575f5ffd5b506103a5611082565b6040516103b29190612ff2565b60405180910390f35b3480156103c6575f5ffd5b506103cf6110a7565b6040516103dc919061302b565b60405180910390f35b3480156103f0575f5ffd5b5061040b60048036038101906104069190613077565b6110cb565b005b610427600480360381019061042291906130c7565b6111c3565b6040516104349190613126565b60405180910390f35b348015610448575f5ffd5b50610463600480360381019061045e919061313f565b611267565b005b348015610470575f5ffd5b5061047961129e565b005b348015610486575f5ffd5b506104a1600480360381019061049c9190612d94565b6112b1565b6040516104ae9190612de1565b60405180910390f35b3480156104c2575f5ffd5b506104dd60048036038101906104d89190612ef6565b6112d1565b6040516104ee95949392919061317d565b60405180910390f35b348015610502575f5ffd5b5061050b61130f565b6040516105189190612ff2565b60405180910390f35b34801561052c575f5ffd5b506105476004803603810190610542919061322f565b611336565b005b348015610554575f5ffd5b5061056f600480360381019061056a9190612ef6565b6115b1565b60405161057c9190612de1565b60405180910390f35b348015610590575f5ffd5b506105ab60048036038101906105a69190612ef6565b6115c6565b6040516105b89190612de1565b60405180910390f35b3480156105cc575f5ffd5b506105e760048036038101906105e29190612ef6565b6115e6565b6040516105f49190612de1565b60405180910390f35b348015610608575f5ffd5b50610623600480360381019061061e91906132e8565b6115fb565b005b348015610630575f5ffd5b5061064b60048036038101906106469190612d94565b611761565b6040516106589190612de1565b60405180910390f35b34801561066c575f5ffd5b5061068760048036038101906106829190612e37565b611781565b6040516106949190613335565b60405180910390f35b3480156106a8575f5ffd5b506106c360048036038101906106be9190612ef6565b611796565b6040516106d09190613458565b60405180910390f35b3480156106e4575f5ffd5b506106ff60048036038101906106fa9190613478565b61182d565b005b34801561070c575f5ffd5b506107156118e6565b6040516107229190612de1565b60405180910390f35b348015610736575f5ffd5b50610751600480360381019061074c9190612ef6565b6118eb565b60405161075e9190612de1565b60405180910390f35b348015610772575f5ffd5b5061078d60048036038101906107889190613478565b61190b565b005b5f61079861198f565b5f60065f8581526020019081526020015f209050806005015f9054906101000a900460ff166107fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f3906134fd565b60405180910390fd5b5f8160020154905060025f8681526020019081526020015f2054816108219190613548565b92505f8303610865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085c906135c5565b60405180910390fd5b6108b084847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611a169092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16857f7fbe80fc045042c2c90eba2b8ac2d6ea8b498f1cde4dcfea6b1d21d0e7d00c60856040516108f79190612de1565b60405180910390a360065f8681526020019081526020015f205f5f82015f9055600182015f9055600282015f9055600382015f9055600482015f61093b9190612c46565b600582015f6101000a81549060ff02191690555050505092915050565b6007602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638204b67a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a07573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2b9190613628565b6fffffffffffffffffffffffffffffffff16905090565b610a4a61198f565b5f8203610a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a839061369d565b60405180910390fd5b5f8103610ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac590613705565b60405180910390fd5b5f600a8054905003610b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0c9061376d565b60405180910390fd5b5f8390505f60065f8381526020019081526020015f209050806005015f9054906101000a900460ff1615610b7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b75906137d5565b60405180910390fd5b81815f01819055508381600101819055508281600201819055508381600301819055506001816005015f6101000a81548160ff021916908315150217905550817f984917a0a0fe4e02ef7ad194cb0292b5d8753a694115b6b109562161b2988cff8585604051610bef9291906137f3565b60405180910390a2610c02818585611a95565b610c0b83611f26565b5050505050565b610c1a611f76565b5f60075f8367ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f2090505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f826002015490505f8103610cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca990613864565b60405180910390fd5b5f836001015490505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d149190612ff2565b602060405180830381865afa158015610d2f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d539190613896565b9050808311610d625782610d64565b805b925060075f8767ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205f5f82015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182015f9055600282015f905550505f8314610e9d578260055f8481526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610e2391906138c1565b925050819055508260035f8481526020019081526020015f205f828254610e4a91906138c1565b92505081905550610e9c84847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611a169092919063ffffffff16565b5b8373ffffffffffffffffffffffffffffffffffffffff168667ffffffffffffffff167f3014a34b3d00c6c31b7749b785098fa3e16f4d3011590095e45b5d99d724e9478486604051610ef09291906137f3565b60405180910390a35050505050610f05611fbc565b50565b610f1061198f565b5f60065f8381526020019081526020015f209050806005015f9054906101000a900460ff16610f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6b906134fd565b60405180910390fd5b60065f8381526020019081526020015f205f5f82015f9055600182015f9055600282015f9055600382015f9055600482015f610fb09190612c46565b600582015f6101000a81549060ff021916905550505050565b5f5f60065f8481526020019081526020015f20905060025f8481526020019081526020015f20548160020154610fff9190613548565b915050919050565b6008602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002015490806003015f9054906101000a900460ff16905084565b7f000000000000000000000000000000000000000000000000000000000000000081565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f6110d4611fc5565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113b9061393e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a9906139cc565b60405180910390fd5b6111bd848484611fec565b50505050565b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124a90613a34565b60405180910390fd5b61125e84848461207d565b90509392505050565b61126f61198f565b61129a33828473ffffffffffffffffffffffffffffffffffffffff16611a169092919063ffffffff16565b5050565b6112a661198f565b6112af5f6123be565b565b6005602052815f5260405f20602052805f5260405f205f91509150505481565b6006602052805f5260405f205f91509050805f015490806001015490806002015490806003015490806005015f9054906101000a900460ff16905085565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61133e61198f565b5f73ffffffffffffffffffffffffffffffffffffffff16600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036113cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c490613a9c565b60405180910390fd5b818190508484905014611415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140c90613b04565b60405180910390fd5b5f848490500361145a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145190613b6c565b60405180910390fd5b5f8484905090505f5f90505f5f90505f5f90505b838110156114cf5787878281811061148957611488613b8a565b5b905060200201358361149b91906138c1565b92508585828181106114b0576114af613b8a565b5b90506020020135826114c291906138c1565b915080600101905061146e565b506127108214611514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150b90613c01565b60405180910390fd5b6127108114611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f90613c69565b60405180910390fd5b8686600a9190611569929190612c67565b508484600b919061157b929190612c67565b507f7c3c6561e60e2662f0257d45bfaaead398f83b9588bae9ba4c8b3cec3a288fcb60405160405180910390a150505050505050565b6003602052805f5260405f205f915090505481565b600b81815481106115d5575f80fd5b905f5260205f20015f915090505481565b6002602052805f5260405f205f915090505481565b61160361198f565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166890613cd1565b60405180910390fd5b478111156116b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ab90613d39565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff16826040516116d990613d84565b5f6040518083038185875af1925050503d805f8114611713576040519150601f19603f3d011682016040523d82523d5f602084013e611718565b606091505b505090508061175c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175390613de2565b60405180910390fd5b505050565b6004602052815f5260405f20602052805f5260405f205f91509150505481565b6009602052805f5260405f205f915090505481565b606060065f8381526020019081526020015f20600401805480602002602001604051908101604052809291908181526020015f905b82821015611822578382905f5260205f2090600402016040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015481525050815260200190600101906117cb565b505050509050919050565b61183561198f565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189a90613e4a565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b603281565b600a81815481106118fa575f80fd5b905f5260205f20015f915090505481565b61191361198f565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611983575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161197a9190612ff2565b60405180910390fd5b61198c816123be565b50565b61199761247f565b73ffffffffffffffffffffffffffffffffffffffff166119b561130f565b73ffffffffffffffffffffffffffffffffffffffff1614611a14576119d861247f565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611a0b9190612ff2565b60405180910390fd5b565b611a90838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401611a49929190613e68565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612486565b505050565b826004015f611aa49190612c46565b5f600a8054905090505f5f90505f8267ffffffffffffffff811115611acc57611acb613e8f565b5b604051908082528060200260200182016040528015611afa5781602001602082028036833780820191505090505b5090505f5f90505b83811015611b7c575f612710600a8381548110611b2257611b21613b8a565b5b905f5260205f20015488611b369190613ebc565b611b409190613f2a565b905080838381518110611b5657611b55613b8a565b5b6020026020010181815250508084611b6e91906138c1565b935050806001019050611b02565b505f8286611b8a9190613548565b90505f811115611c27575f5f90505f600190505b85811015611bf557600a8281548110611bba57611bb9613b8a565b5b905f5260205f200154600a8281548110611bd757611bd6613b8a565b5b905f5260205f2001541115611bea578091505b806001019050611b9e565b5081838281518110611c0a57611c09613b8a565b5b60200260200101818151611c1e91906138c1565b91508181525050505b5f5f90505f8567ffffffffffffffff811115611c4657611c45613e8f565b5b604051908082528060200260200182016040528015611c745781602001602082028036833780820191505090505b5090505f5f90505b86811015611cf6575f612710600b8381548110611c9c57611c9b613b8a565b5b905f5260205f2001548a611cb09190613ebc565b611cba9190613f2a565b905080838381518110611cd057611ccf613b8a565b5b6020026020010181815250508084611ce891906138c1565b935050806001019050611c7c565b505f8288611d049190613548565b90505f811115611da1575f5f90505f600190505b88811015611d6f57600b8281548110611d3457611d33613b8a565b5b905f5260205f200154600b8281548110611d5157611d50613b8a565b5b905f5260205f2001541115611d64578091505b806001019050611d18565b5081838281518110611d8457611d83613b8a565b5b60200260200101818151611d9891906138c1565b91508181525050505b5f5f90505b87811015611ee9575f868281518110611dc257611dc1613b8a565b5b602002602001015190505f5f8211611dda575f611e01565b81858481518110611dee57611ded613b8a565b5b6020026020010151611e009190613f2a565b5b90508c6004016040518060800160405280838152602001600a8681548110611e2c57611e2b613b8a565b5b905f5260205f2001548152602001600b8681548110611e4e57611e4d613b8a565b5b905f5260205f200154815260200184815250908060018154018082558091505060019003905f5260205f2090600402015f909190919091505f820151815f015560208201518160010155604082015181600201556060820151816003015550505f5f90505f5f90505b83811015611eda578282611ecb91906138c1565b91508080600101915050611eb7565b50505050806001019050611da6565b50895f01547f6c294f714ba8b08784431e9d0089b7c8b4ec97c23fa411d13e3d9131130794fb60405160405180910390a250505050505050505050565b611f733330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612521909392919063ffffffff16565b50565b600260015403611fb2576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b60018081905550565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b8060095f8567ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f208190555061201f836125a3565b8173ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167f2a09b01beb06e159725b191b6a1af189fda67edbe7894829d9602fe76b3d668d836040516120709190613335565b60405180910390a3505050565b5f5f821415801561208f575060328211155b6120ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c590613fa4565b60405180910390fd5b5f8490505f60065f8381526020019081526020015f209050806005015f9054906101000a900460ff16612136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212d9061400c565b60405180910390fd5b5f816003015403612173576040517f458ae95900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806003015484111561218757806003015493505b5f61219061099d565b9050803410156121d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cc90614074565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637b43155d826040518263ffffffff1660e01b815260040160206040518083038185885af1158015612240573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061226591906140a6565b935084826003015f82825461227a9190613548565b9250508190555060405180608001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018681526020015f151581525060085f8667ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201556060820151816003015f6101000a81548160ff0219169083151502179055509050508573ffffffffffffffffffffffffffffffffffffffff168467ffffffffffffffff167f21d954649f76fe7ae909e6d97ba45faf4cc009fca8ec5fe8e764a6ff1802a7fa85886040516123ac9291906137f3565b60405180910390a35050509392505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f5f60205f8451602086015f885af1806124a5576040513d5f823e3d81fd5b3d92505f519150505f82146124be5760018114156124d9565b5f8473ffffffffffffffffffffffffffffffffffffffff163b145b1561251b57836040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016125129190612ff2565b60405180910390fd5b50505050565b61259d848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401612556939291906140d1565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612486565b50505050565b5f60085f8367ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f2090505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f826001015490505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265e90614150565b60405180910390fd5b826003015f9054906101000a900460ff16156126b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126af906141b8565b60405180910390fd5b5f60095f8667ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205490505f5f1b8103612725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271c90614220565b60405180910390fd5b5f60065f8481526020019081526020015f209050806005015f9054906101000a900460ff16612789576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127809061400c565b60405180910390fd5b5f856002015490505f8167ffffffffffffffff8111156127ac576127ab613e8f565b5b6040519080825280602002602001820160405280156127da5781602001602082028036833780820191505090505b5090505f60075f8a67ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f20905086815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508581600101819055505f5f90505b83811015612a7a575f868260405160200161287092919061427e565b604051602081830303815290604052805190602001205f1c90505f6128958783612afe565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81036129455760018b6003015f6101000a81548160ff0219169083151502179055508973ffffffffffffffffffffffffffffffffffffffff168c67ffffffffffffffff167f3525beebd202b53f76fc20196a2c75e7eabf58d53fe2f422c91b9906622c8b728b8860405161292d929190614351565b60405180910390a35050505050505050505050612afb565b600187600401828154811061295d5761295c613b8a565b5b905f5260205f2090600402016003015f82825461297a9190613548565b925050819055505f87600401828154811061299857612997613b8a565b5b905f5260205f2090600402015f01549050808685815181106129bd576129bc613b8a565b5b60200260200101818152505080856002015f8282546129dc91906138c1565b925050819055508060045f8c81526020019081526020015f205f8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612a3e91906138c1565b925050819055508060025f8c81526020019081526020015f205f828254612a6591906138c1565b92505081905550505050806001019050612854565b506001886003015f6101000a81548160ff0219169083151502179055508673ffffffffffffffffffffffffffffffffffffffff168967ffffffffffffffff167f3525beebd202b53f76fc20196a2c75e7eabf58d53fe2f422c91b9906622c8b728885604051612aea929190614351565b60405180910390a350505050505050505b50565b5f5f5f846004018054905090505f5f90505b81811015612b5657856004018181548110612b2e57612b2d613b8a565b5b905f5260205f2090600402016003015483612b4991906138c1565b9250806001019050612b10565b505f8203612b88577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92505050612c40565b5f8285612b95919061437f565b90505f5f5f90505b83811015612c17575f886004018281548110612bbc57612bbb613b8a565b5b905f5260205f2090600402016003015490505f8103612bdb5750612c0c565b8083612be791906138c1565b841015612bfc57819650505050505050612c40565b8083612c0891906138c1565b9250505b806001019050612b9d565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9450505050505b92915050565b5080545f8255600402905f5260205f2090810190612c649190612cb2565b50565b828054828255905f5260205f20908101928215612ca1579160200282015b82811115612ca0578235825591602001919060010190612c85565b5b509050612cae9190612ce4565b5090565b5b80821115612ce0575f5f82015f9055600182015f9055600282015f9055600382015f905550600401612cb3565b5090565b5b80821115612cfb575f815f905550600101612ce5565b5090565b5f5ffd5b5f5ffd5b5f819050919050565b612d1981612d07565b8114612d23575f5ffd5b50565b5f81359050612d3481612d10565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d6382612d3a565b9050919050565b612d7381612d59565b8114612d7d575f5ffd5b50565b5f81359050612d8e81612d6a565b92915050565b5f5f60408385031215612daa57612da9612cff565b5b5f612db785828601612d26565b9250506020612dc885828601612d80565b9150509250929050565b612ddb81612d07565b82525050565b5f602082019050612df45f830184612dd2565b92915050565b5f67ffffffffffffffff82169050919050565b612e1681612dfa565b8114612e20575f5ffd5b50565b5f81359050612e3181612e0d565b92915050565b5f60208284031215612e4c57612e4b612cff565b5b5f612e5984828501612e23565b91505092915050565b612e6b81612d59565b82525050565b5f606082019050612e845f830186612e62565b612e916020830185612dd2565b612e9e6040830184612dd2565b949350505050565b5f5f5f60608486031215612ebd57612ebc612cff565b5b5f612eca86828701612d26565b9350506020612edb86828701612d26565b9250506040612eec86828701612d26565b9150509250925092565b5f60208284031215612f0b57612f0a612cff565b5b5f612f1884828501612d26565b91505092915050565b5f8115159050919050565b612f3581612f21565b82525050565b5f608082019050612f4e5f830187612e62565b612f5b6020830186612dd2565b612f686040830185612dd2565b612f756060830184612f2c565b95945050505050565b5f819050919050565b5f612fa1612f9c612f9784612d3a565b612f7e565b612d3a565b9050919050565b5f612fb282612f87565b9050919050565b5f612fc382612fa8565b9050919050565b612fd381612fb9565b82525050565b5f602082019050612fec5f830184612fca565b92915050565b5f6020820190506130055f830184612e62565b92915050565b5f61301582612fa8565b9050919050565b6130258161300b565b82525050565b5f60208201905061303e5f83018461301c565b92915050565b5f819050919050565b61305681613044565b8114613060575f5ffd5b50565b5f813590506130718161304d565b92915050565b5f5f5f6060848603121561308e5761308d612cff565b5b5f61309b86828701612e23565b93505060206130ac86828701612d80565b92505060406130bd86828701613063565b9150509250925092565b5f5f5f606084860312156130de576130dd612cff565b5b5f6130eb86828701612d26565b93505060206130fc86828701612d80565b925050604061310d86828701612d26565b9150509250925092565b61312081612dfa565b82525050565b5f6020820190506131395f830184613117565b92915050565b5f5f6040838503121561315557613154612cff565b5b5f61316285828601612d80565b925050602061317385828601612d26565b9150509250929050565b5f60a0820190506131905f830188612dd2565b61319d6020830187612dd2565b6131aa6040830186612dd2565b6131b76060830185612dd2565b6131c46080830184612f2c565b9695505050505050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126131ef576131ee6131ce565b5b8235905067ffffffffffffffff81111561320c5761320b6131d2565b5b602083019150836020820283011115613228576132276131d6565b5b9250929050565b5f5f5f5f6040858703121561324757613246612cff565b5b5f85013567ffffffffffffffff81111561326457613263612d03565b5b613270878288016131da565b9450945050602085013567ffffffffffffffff81111561329357613292612d03565b5b61329f878288016131da565b925092505092959194509250565b5f6132b782612d3a565b9050919050565b6132c7816132ad565b81146132d1575f5ffd5b50565b5f813590506132e2816132be565b92915050565b5f5f604083850312156132fe576132fd612cff565b5b5f61330b858286016132d4565b925050602061331c85828601612d26565b9150509250929050565b61332f81613044565b82525050565b5f6020820190506133485f830184613326565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61338081612d07565b82525050565b608082015f82015161339a5f850182613377565b5060208201516133ad6020850182613377565b5060408201516133c06040850182613377565b5060608201516133d36060850182613377565b50505050565b5f6133e48383613386565b60808301905092915050565b5f602082019050919050565b5f6134068261334e565b6134108185613358565b935061341b83613368565b805f5b8381101561344b57815161343288826133d9565b975061343d836133f0565b92505060018101905061341e565b5085935050505092915050565b5f6020820190508181035f83015261347081846133fc565b905092915050565b5f6020828403121561348d5761348c612cff565b5b5f61349a84828501612d80565b91505092915050565b5f82825260208201905092915050565b7f726f756e64206e6f7420696e69740000000000000000000000000000000000005f82015250565b5f6134e7600e836134a3565b91506134f2826134b3565b602082019050919050565b5f6020820190508181035f830152613514816134db565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61355282612d07565b915061355d83612d07565b92508282039050818111156135755761357461351b565b5b92915050565b7f6e6f7468696e6720746f20636c61696d000000000000000000000000000000005f82015250565b5f6135af6010836134a3565b91506135ba8261357b565b602082019050919050565b5f6020820190508181035f8301526135dc816135a3565b9050919050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b613607816135e3565b8114613611575f5ffd5b50565b5f81519050613622816135fe565b92915050565b5f6020828403121561363d5761363c612cff565b5b5f61364a84828501613614565b91505092915050565b7f746f74616c426f7865733e3000000000000000000000000000000000000000005f82015250565b5f613687600c836134a3565b915061369282613653565b602082019050919050565b5f6020820190508181035f8301526136b48161367b565b9050919050565b7f746f74616c5061796f75743e30000000000000000000000000000000000000005f82015250565b5f6136ef600d836134a3565b91506136fa826136bb565b602082019050919050565b5f6020820190508181035f83015261371c816136e3565b9050919050565b7f64656661756c742070726f6273206e6f742073657400000000000000000000005f82015250565b5f6137576015836134a3565b915061376282613723565b602082019050919050565b5f6020820190508181035f8301526137848161374b565b9050919050565b7f726f756e6420616c726561647920696e697469616c697a6564000000000000005f82015250565b5f6137bf6019836134a3565b91506137ca8261378b565b602082019050919050565b5f6020820190508181035f8301526137ec816137b3565b9050919050565b5f6040820190506138065f830185612dd2565b6138136020830184612dd2565b9392505050565b7f6e6f20636c61696d0000000000000000000000000000000000000000000000005f82015250565b5f61384e6008836134a3565b91506138598261381a565b602082019050919050565b5f6020820190508181035f83015261387b81613842565b9050919050565b5f8151905061389081612d10565b92915050565b5f602082840312156138ab576138aa612cff565b5b5f6138b884828501613882565b91505092915050565b5f6138cb82612d07565b91506138d683612d07565b92508282019050808211156138ee576138ed61351b565b5b92915050565b7f456e74726f70792061646472657373206e6f74207365740000000000000000005f82015250565b5f6139286017836134a3565b9150613933826138f4565b602082019050919050565b5f6020820190508181035f8301526139558161391c565b9050919050565b7f4f6e6c7920456e74726f70792063616e2063616c6c20746869732066756e63745f8201527f696f6e0000000000000000000000000000000000000000000000000000000000602082015250565b5f6139b66023836134a3565b91506139c18261395c565b604082019050919050565b5f6020820190508181035f8301526139e3816139aa565b9050919050565b7f6e6f74206d616e616765720000000000000000000000000000000000000000005f82015250565b5f613a1e600b836134a3565b9150613a29826139ea565b602082019050919050565b5f6020820190508181035f830152613a4b81613a12565b9050919050565b7f6d616e61676572206e6f742073657400000000000000000000000000000000005f82015250565b5f613a86600f836134a3565b9150613a9182613a52565b602082019050919050565b5f6020820190508181035f830152613ab381613a7a565b9050919050565b7f6c656e677468206d69736d6174636800000000000000000000000000000000005f82015250565b5f613aee600f836134a3565b9150613af982613aba565b602082019050919050565b5f6020820190508181035f830152613b1b81613ae2565b9050919050565b7f656d7074792070726f626162696c6974696573000000000000000000000000005f82015250565b5f613b566013836134a3565b9150613b6182613b22565b602082019050919050565b5f6020820190508181035f830152613b8381613b4a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f626f782070726f622073756d206d7573742062652031303030300000000000005f82015250565b5f613beb601a836134a3565b9150613bf682613bb7565b602082019050919050565b5f6020820190508181035f830152613c1881613bdf565b9050919050565b7f76616c75652073686172652073756d206d7573742062652031303030300000005f82015250565b5f613c53601d836134a3565b9150613c5e82613c1f565b602082019050919050565b5f6020820190508181035f830152613c8081613c47565b9050919050565b7f696e76616c696420746f000000000000000000000000000000000000000000005f82015250565b5f613cbb600a836134a3565b9150613cc682613c87565b602082019050919050565b5f6020820190508181035f830152613ce881613caf565b9050919050565b7f696e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f613d236014836134a3565b9150613d2e82613cef565b602082019050919050565b5f6020820190508181035f830152613d5081613d17565b9050919050565b5f81905092915050565b50565b5f613d6f5f83613d57565b9150613d7a82613d61565b5f82019050919050565b5f613d8e82613d64565b9150819050919050565b7f455448207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f613dcc6013836134a3565b9150613dd782613d98565b602082019050919050565b5f6020820190508181035f830152613df981613dc0565b9050919050565b7f6e6f742076616c696420616464726573730000000000000000000000000000005f82015250565b5f613e346011836134a3565b9150613e3f82613e00565b602082019050919050565b5f6020820190508181035f830152613e6181613e28565b9050919050565b5f604082019050613e7b5f830185612e62565b613e886020830184612dd2565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f613ec682612d07565b9150613ed183612d07565b9250828202613edf81612d07565b91508282048414831517613ef657613ef561351b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613f3482612d07565b9150613f3f83612d07565b925082613f4f57613f4e613efd565b5b828204905092915050565b7f696e76616c696420636f756e74000000000000000000000000000000000000005f82015250565b5f613f8e600d836134a3565b9150613f9982613f5a565b602082019050919050565b5f6020820190508181035f830152613fbb81613f82565b9050919050565b7f726f756e64206e6f7420696e697469616c697a656400000000000000000000005f82015250565b5f613ff66015836134a3565b915061400182613fc2565b602082019050919050565b5f6020820190508181035f83015261402381613fea565b9050919050565b7f696e73756666696369656e7420666565000000000000000000000000000000005f82015250565b5f61405e6010836134a3565b91506140698261402a565b602082019050919050565b5f6020820190508181035f83015261408b81614052565b9050919050565b5f815190506140a081612e0d565b92915050565b5f602082840312156140bb576140ba612cff565b5b5f6140c884828501614092565b91505092915050565b5f6060820190506140e45f830186612e62565b6140f16020830185612e62565b6140fe6040830184612dd2565b949350505050565b7f756e6b6e6f776e207265717565737400000000000000000000000000000000005f82015250565b5f61413a600f836134a3565b915061414582614106565b602082019050919050565b5f6020820190508181035f8301526141678161412e565b9050919050565b7f616c726561647920636c61696d656400000000000000000000000000000000005f82015250565b5f6141a2600f836134a3565b91506141ad8261416e565b602082019050919050565b5f6020820190508181035f8301526141cf81614196565b9050919050565b7f656e74726f7079206e6f742066756c66696c6c656400000000000000000000005f82015250565b5f61420a6015836134a3565b9150614215826141d6565b602082019050919050565b5f6020820190508181035f830152614237816141fe565b9050919050565b5f819050919050565b61425861425382613044565b61423e565b82525050565b5f819050919050565b61427861427382612d07565b61425e565b82525050565b5f6142898285614247565b6020820191506142998284614267565b6020820191508190509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6142dd8383613377565b60208301905092915050565b5f602082019050919050565b5f6142ff826142a9565b61430981856142b3565b9350614314836142c3565b805f5b8381101561434457815161432b88826142d2565b9750614336836142e9565b925050600181019050614317565b5085935050505092915050565b5f6040820190506143645f830185612dd2565b818103602083015261437681846142f5565b90509392505050565b5f61438982612d07565b915061439483612d07565b9250826143a4576143a3613efd565b5b82820690509291505056fea264697066735822122099ab36e8fc9da0c63a956708c7f81f20e3e62c550640b9ce63339db3cf034b0d64736f6c634300081e00330000000000000000000000006e7d74fa7d5c90fef9f0512987605a6d546181bb000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda02913