6 txs
8 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)
getRoundTiers
viewfunction getRoundTiers(uint256 index) 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)
_entropyCallback
nonpayablefunction _entropyCallback(uint64 sequence, address provider, bytes32 randomNumber)
claimLoot
nonpayablefunction claimLoot(uint64 sequenceNumber)
claimPayment
nonpayablefunction claimPayment(uint64 sequenceNumber)
initRound
nonpayablefunction initRound(uint256 roundId, uint256 totalBoxes, uint256 totalPayout)
reclaimETH
nonpayablefunction reclaimETH(address to, uint256 amount)
reclaimUnreserved
nonpayablefunction reclaimUnreserved(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)
RoundInitialized
event RoundInitialized(uint256 indexed roundId, uint256 totalBoxes, uint256 totalPayout)
TiersConfigured
event TiersConfigured(uint256 indexed roundId)
UnreservedReclaimed
event UnreservedReclaimed(uint256 indexed roundId, address indexed to, uint256 unreservedBoxes, uint256 reclaimedTokenAmount)
errors
NoBoxesAvailable
error NoBoxesAvailable()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60c060405234801561000f575f5ffd5b5060405161409b38038061409b83398181016040528101906100319190610323565b335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a2575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100999190610370565b60405180910390fd5b6100b18161020460201b60201c565b50600180819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161011e906103e3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161018c9061044b565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250505050610469565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102f2826102c9565b9050919050565b610302816102e8565b811461030c575f5ffd5b50565b5f8151905061031d816102f9565b92915050565b5f5f60408385031215610339576103386102c5565b5b5f6103468582860161030f565b92505060206103578582860161030f565b9150509250929050565b61036a816102e8565b82525050565b5f6020820190506103835f830184610361565b92915050565b5f82825260208201905092915050565b7f656e74726f70792061646472207a65726f0000000000000000000000000000005f82015250565b5f6103cd601183610389565b91506103d882610399565b602082019050919050565b5f6020820190508181035f8301526103fa816103c1565b9050919050565b7f746f6b656e2061646472207a65726f00000000000000000000000000000000005f82015250565b5f610435600f83610389565b915061044082610401565b602082019050919050565b5f6020820190508181035f83015261046281610429565b9050919050565b60805160a051613be06104bb5f395f81816108ae01528181610bcb01528181610cdd01528181610e2f0152611e2001525f818161064401528181610de601528181611eba01526120c00152613be05ff3fe608060405260043610610165575f3560e01c8063715018a6116100d0578063c2f1c30711610089578063dba1771211610063578063dba1771214610546578063f2ea438714610570578063f2fde38b146105ac578063f9f8a050146105d457610165565b8063c2f1c307146104a6578063c6e5e1aa146104e2578063d0ebdbe71461051e57610165565b8063715018a61461039a5780638c65c81f146103b05780638da5cb5b146103f05780638f532dbf1461041a578063acc361b114610442578063b2b261d21461047e57610165565b806347ce07cc1161012257806347ce07cc1461029c578063481c6a75146102c65780634efa82b6146102f057806352a5f1f81461031a5780635391945f14610342578063573761981461037257610165565b806327adb7d7146101695780632d971e63146101a75780632f541c45146101d157806335dfdef31461020d5780633796547114610235578063411010ec1461025d575b5f5ffd5b348015610174575f5ffd5b5061018f600480360381019061018a919061270d565b6105fc565b60405161019e9392919061278f565b60405180910390f35b3480156101b2575f5ffd5b506101bb610641565b6040516101c891906127c4565b60405180910390f35b3480156101dc575f5ffd5b506101f760048036038101906101f29190612831565b6106e6565b60405161020491906127c4565b60405180910390f35b348015610218575f5ffd5b50610233600480360381019061022e919061286f565b610950565b005b348015610240575f5ffd5b5061025b6004803603810190610256919061270d565b610b20565b005b348015610268575f5ffd5b50610283600480360381019061027e919061270d565b610d8d565b60405161029394939291906128d9565b60405180910390f35b3480156102a7575f5ffd5b506102b0610de4565b6040516102bd9190612977565b60405180910390f35b3480156102d1575f5ffd5b506102da610e08565b6040516102e79190612990565b60405180910390f35b3480156102fb575f5ffd5b50610304610e2d565b60405161031191906129c9565b60405180910390f35b348015610325575f5ffd5b50610340600480360381019061033b9190612a15565b610e51565b005b61035c60048036038101906103579190612a65565b610f49565b6040516103699190612ac4565b60405180910390f35b34801561037d575f5ffd5b5061039860048036038101906103939190612add565b610fed565b005b3480156103a5575f5ffd5b506103ae611024565b005b3480156103bb575f5ffd5b506103d660048036038101906103d19190612b1b565b611037565b6040516103e7959493929190612b46565b60405180910390f35b3480156103fb575f5ffd5b50610404611075565b6040516104119190612990565b60405180910390f35b348015610425575f5ffd5b50610440600480360381019061043b9190612bf8565b61109c565b005b34801561044d575f5ffd5b5061046860048036038101906104639190612b1b565b611317565b60405161047591906127c4565b60405180910390f35b348015610489575f5ffd5b506104a4600480360381019061049f9190612cb1565b611337565b005b3480156104b1575f5ffd5b506104cc60048036038101906104c7919061270d565b61149d565b6040516104d99190612cfe565b60405180910390f35b3480156104ed575f5ffd5b5061050860048036038101906105039190612b1b565b6114b2565b6040516105159190612e21565b60405180910390f35b348015610529575f5ffd5b50610544600480360381019061053f9190612e41565b611549565b005b348015610551575f5ffd5b5061055a611602565b60405161056791906127c4565b60405180910390f35b34801561057b575f5ffd5b5061059660048036038101906105919190612b1b565b611607565b6040516105a391906127c4565b60405180910390f35b3480156105b7575f5ffd5b506105d260048036038101906105cd9190612e41565b611627565b005b3480156105df575f5ffd5b506105fa60048036038101906105f5919061270d565b6116ab565b005b6003602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638204b67a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106ab573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106cf9190612eb1565b6fffffffffffffffffffffffffffffffff16905090565b5f6106ef6116be565b5f60025f8581526020019081526020015f209050806005015f9054906101000a900460ff16610753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074a90612f36565b60405180910390fd5b5f816003015490505f811161079d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079490612f9e565b60405180910390fd5b5f5f90505f5f90505f846004018054905090505f5f90505b8181101561085d578560040181815481106107d3576107d2612fbc565b5b905f5260205f209060040201600301548660040182815481106107f9576107f8612fbc565b5b905f5260205f2090600402015f01546108129190613016565b8461081d9190613057565b935085600401818154811061083557610834612fbc565b5b905f5260205f20906004020160030154836108509190613057565b92508060010190506107b5565b505f8203610872575f9550505050505061094a565b838261087e9190613057565b848461088a9190613016565b61089491906130b7565b95505f85600301819055505f8611156108f3576108f287877f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166117459092919063ffffffff16565b5b8673ffffffffffffffffffffffffffffffffffffffff16887f9103784d7a92fbfdc96f82221c7fd465c60427108b5c87d564e1672adecf3e1e868960405161093c9291906130e7565b60405180910390a350505050505b92915050565b6109586116be565b5f820361099a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099190613158565b60405180910390fd5b5f81036109dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d3906131c0565b60405180910390fd5b5f60068054905003610a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1a90613228565b60405180910390fd5b5f8390505f60025f8381526020019081526020015f209050806005015f9054906101000a900460ff1615610a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8390613290565b60405180910390fd5b81815f01819055508381600101819055508281600201819055508381600301819055506001816005015f6101000a81548160ff021916908315150217905550817f984917a0a0fe4e02ef7ad194cb0292b5d8753a694115b6b109562161b2988cff8585604051610afd9291906130e7565b60405180910390a2610b108185856117c4565b610b1983611e18565b5050505050565b610b28611e68565b5f60035f8367ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f2090505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f826002015490505f8103610bc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb7906132f8565b60405180910390fd5b5f836001015490505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c229190612990565b602060405180830381865afa158015610c3d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c61919061332a565b9050808311610c705782610c72565b805b925060035f8767ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205f5f82015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182015f9055600282015f905550505f8314610d2257610d2184847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166117459092919063ffffffff16565b5b8373ffffffffffffffffffffffffffffffffffffffff168667ffffffffffffffff167f3014a34b3d00c6c31b7749b785098fa3e16f4d3011590095e45b5d99d724e9478486604051610d759291906130e7565b60405180910390a35050505050610d8a611eae565b50565b6004602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002015490806003015f9054906101000a900460ff16905084565b7f000000000000000000000000000000000000000000000000000000000000000081565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f610e5a611eb7565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec19061339f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2f9061342d565b60405180910390fd5b610f43848484611ede565b50505050565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd090613495565b60405180910390fd5b610fe4848484611f66565b90509392505050565b610ff56116be565b61102033828473ffffffffffffffffffffffffffffffffffffffff166117459092919063ffffffff16565b5050565b61102c6116be565b6110355f6122a7565b565b6002602052805f5260405f205f91509050805f015490806001015490806002015490806003015490806005015f9054906101000a900460ff16905085565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6110a46116be565b5f73ffffffffffffffffffffffffffffffffffffffff1660085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112a906134fd565b60405180910390fd5b81819050848490501461117b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117290613565565b60405180910390fd5b5f84849050036111c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b7906135cd565b60405180910390fd5b5f8484905090505f5f90505f5f90505f5f90505b83811015611235578787828181106111ef576111ee612fbc565b5b90506020020135836112019190613057565b925085858281811061121657611215612fbc565b5b90506020020135826112289190613057565b91508060010190506111d4565b50612710821461127a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127190613635565b60405180910390fd5b61271081146112be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b59061369d565b60405180910390fd5b8686600691906112cf929190612605565b508484600791906112e1929190612605565b507f7c3c6561e60e2662f0257d45bfaaead398f83b9588bae9ba4c8b3cec3a288fcb60405160405180910390a150505050505050565b60078181548110611326575f80fd5b905f5260205f20015f915090505481565b61133f6116be565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a490613705565b60405180910390fd5b478111156113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e79061376d565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1682604051611415906137b8565b5f6040518083038185875af1925050503d805f811461144f576040519150601f19603f3d011682016040523d82523d5f602084013e611454565b606091505b5050905080611498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148f90613816565b60405180910390fd5b505050565b6005602052805f5260405f205f915090505481565b606060025f8381526020019081526020015f20600401805480602002602001604051908101604052809291908181526020015f905b8282101561153e578382905f5260205f2090600402016040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015481525050815260200190600101906114e7565b505050509050919050565b6115516116be565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b69061387e565b60405180910390fd5b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b603281565b60068181548110611616575f80fd5b905f5260205f20015f915090505481565b61162f6116be565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361169f575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016116969190612990565b60405180910390fd5b6116a8816122a7565b50565b6116b3611e68565b6116bb611eae565b50565b6116c6612368565b73ffffffffffffffffffffffffffffffffffffffff166116e4611075565b73ffffffffffffffffffffffffffffffffffffffff161461174357611707612368565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161173a9190612990565b60405180910390fd5b565b6117bf838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb858560405160240161177892919061389c565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061236f565b505050565b826004015f6117d39190612650565b5f60068054905090505f5f90505f8267ffffffffffffffff8111156117fb576117fa6138c3565b5b6040519080825280602002602001820160405280156118295781602001602082028036833780820191505090505b5090505f5f90505b838110156118ea575f6127106006838154811061185157611850612fbc565b5b905f5260205f200154886118659190613016565b61186f91906130b7565b90506118b06040518060400160405280600c81526020017f626f7820636f756e74733a2000000000000000000000000000000000000000008152508261240a565b808383815181106118c4576118c3612fbc565b5b60200260200101818152505080846118dc9190613057565b935050806001019050611831565b505f82866118f891906138f0565b90505f811115611995575f5f90505f600190505b85811015611963576006828154811061192857611927612fbc565b5b905f5260205f2001546006828154811061194557611944612fbc565b5b905f5260205f2001541115611958578091505b80600101905061190c565b508183828151811061197857611977612fbc565b5b6020026020010181815161198c9190613057565b91508181525050505b6119df6040518060400160405280601681526020017f546f74616c2061737369676e656420626f7865733a200000000000000000000081525082856119da9190613057565b61240a565b5f5f90505f8567ffffffffffffffff8111156119fe576119fd6138c3565b5b604051908082528060200260200182016040528015611a2c5781602001602082028036833780820191505090505b5090505f5f90505b86811015611aed575f61271060078381548110611a5457611a53612fbc565b5b905f5260205f2001548a611a689190613016565b611a7291906130b7565b905080838381518110611a8857611a87612fbc565b5b602002602001018181525050611ad36040518060400160405280601781526020017f56616c7565205368617265732070657220546965723a200000000000000000008152508261240a565b8084611adf9190613057565b935050806001019050611a34565b505f8288611afb91906138f0565b90505f811115611b98575f5f90505f600190505b88811015611b665760078281548110611b2b57611b2a612fbc565b5b905f5260205f20015460078281548110611b4857611b47612fbc565b5b905f5260205f2001541115611b5b578091505b806001019050611b0f565b5081838281518110611b7b57611b7a612fbc565b5b60200260200101818151611b8f9190613057565b91508181525050505b5f5f90505b87811015611ddb575f868281518110611bb957611bb8612fbc565b5b602002602001015190505f5f8211611bd1575f611bf8565b81858481518110611be557611be4612fbc565b5b6020026020010151611bf791906130b7565b5b9050611c396040518060400160405280600d81526020017f5061792070657220626f783a20000000000000000000000000000000000000008152508261240a565b8c600401604051806080016040528083815260200160068681548110611c6257611c61612fbc565b5b905f5260205f200154815260200160078681548110611c8457611c83612fbc565b5b905f5260205f200154815260200184815250908060018154018082558091505060019003905f5260205f2090600402015f909190919091505f820151815f015560208201518160010155604082015181600201556060820151816003015550505f5f90505f5f90505b83811015611d10578282611d019190613057565b91508080600101915050611ced565b50611d506040518060400160405280601681526020017f546f74616c20626f7865732070657220746965723a20000000000000000000008152508461240a565b611d8f6040518060400160405280601781526020017f546f74616c207061796f75742070657220746965723a200000000000000000008152508261240a565b611dcd6040518060400160405280601a81526020017f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0000000000008152506124a6565b505050806001019050611b9d565b50895f01547f6c294f714ba8b08784431e9d0089b7c8b4ec97c23fa411d13e3d9131130794fb60405160405180910390a250505050505050505050565b611e653330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661253f909392919063ffffffff16565b50565b600260015403611ea4576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b60018081905550565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b8060055f8567ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167f2a09b01beb06e159725b191b6a1af189fda67edbe7894829d9602fe76b3d668d83604051611f599190612cfe565b60405180910390a3505050565b5f5f8214158015611f78575060328211155b611fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fae9061396d565b60405180910390fd5b5f8490505f60025f8381526020019081526020015f209050806005015f9054906101000a900460ff1661201f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612016906139d5565b60405180910390fd5b5f81600301540361205c576040517f458ae95900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806003015484111561207057806003015493505b5f612079610641565b9050803410156120be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b590613a3d565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637b43155d826040518263ffffffff1660e01b815260040160206040518083038185885af1158015612129573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061214e9190613a6f565b935084826003015f82825461216391906138f0565b9250508190555060405180608001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018681526020015f151581525060045f8667ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201556060820151816003015f6101000a81548160ff0219169083151502179055509050508573ffffffffffffffffffffffffffffffffffffffff168467ffffffffffffffff167f21d954649f76fe7ae909e6d97ba45faf4cc009fca8ec5fe8e764a6ff1802a7fa85886040516122959291906130e7565b60405180910390a35050509392505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f5f60205f8451602086015f885af18061238e576040513d5f823e3d81fd5b3d92505f519150505f82146123a75760018114156123c2565b5f8473ffffffffffffffffffffffffffffffffffffffff163b145b1561240457836040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016123fb9190612990565b60405180910390fd5b50505050565b6124a28282604051602401612420929190613afa565b6040516020818303038152906040527fb60e72cc000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125c1565b5050565b61253c816040516024016124ba9190613b28565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125c1565b50565b6125bb848573ffffffffffffffffffffffffffffffffffffffff166323b872dd86868660405160240161257493929190613b48565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061236f565b50505050565b6125d8816125d06125db6125fa565b63ffffffff16565b50565b5f6a636f6e736f6c652e6c6f6790505f5f835160208501845afa505050565b612671819050919050565b828054828255905f5260205f2090810192821561263f579160200282015b8281111561263e578235825591602001919060010190612623565b5b50905061264c919061267b565b5090565b5080545f8255600402905f5260205f209081019061266e9190612696565b50565b612679613b7d565b565b5b80821115612692575f815f90555060010161267c565b5090565b5b808211156126c4575f5f82015f9055600182015f9055600282015f9055600382015f905550600401612697565b5090565b5f5ffd5b5f5ffd5b5f67ffffffffffffffff82169050919050565b6126ec816126d0565b81146126f6575f5ffd5b50565b5f81359050612707816126e3565b92915050565b5f60208284031215612722576127216126c8565b5b5f61272f848285016126f9565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61276182612738565b9050919050565b61277181612757565b82525050565b5f819050919050565b61278981612777565b82525050565b5f6060820190506127a25f830186612768565b6127af6020830185612780565b6127bc6040830184612780565b949350505050565b5f6020820190506127d75f830184612780565b92915050565b6127e681612777565b81146127f0575f5ffd5b50565b5f81359050612801816127dd565b92915050565b61281081612757565b811461281a575f5ffd5b50565b5f8135905061282b81612807565b92915050565b5f5f60408385031215612847576128466126c8565b5b5f612854858286016127f3565b92505060206128658582860161281d565b9150509250929050565b5f5f5f60608486031215612886576128856126c8565b5b5f612893868287016127f3565b93505060206128a4868287016127f3565b92505060406128b5868287016127f3565b9150509250925092565b5f8115159050919050565b6128d3816128bf565b82525050565b5f6080820190506128ec5f830187612768565b6128f96020830186612780565b6129066040830185612780565b61291360608301846128ca565b95945050505050565b5f819050919050565b5f61293f61293a61293584612738565b61291c565b612738565b9050919050565b5f61295082612925565b9050919050565b5f61296182612946565b9050919050565b61297181612957565b82525050565b5f60208201905061298a5f830184612968565b92915050565b5f6020820190506129a35f830184612768565b92915050565b5f6129b382612946565b9050919050565b6129c3816129a9565b82525050565b5f6020820190506129dc5f8301846129ba565b92915050565b5f819050919050565b6129f4816129e2565b81146129fe575f5ffd5b50565b5f81359050612a0f816129eb565b92915050565b5f5f5f60608486031215612a2c57612a2b6126c8565b5b5f612a39868287016126f9565b9350506020612a4a8682870161281d565b9250506040612a5b86828701612a01565b9150509250925092565b5f5f5f60608486031215612a7c57612a7b6126c8565b5b5f612a89868287016127f3565b9350506020612a9a8682870161281d565b9250506040612aab868287016127f3565b9150509250925092565b612abe816126d0565b82525050565b5f602082019050612ad75f830184612ab5565b92915050565b5f5f60408385031215612af357612af26126c8565b5b5f612b008582860161281d565b9250506020612b11858286016127f3565b9150509250929050565b5f60208284031215612b3057612b2f6126c8565b5b5f612b3d848285016127f3565b91505092915050565b5f60a082019050612b595f830188612780565b612b666020830187612780565b612b736040830186612780565b612b806060830185612780565b612b8d60808301846128ca565b9695505050505050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f840112612bb857612bb7612b97565b5b8235905067ffffffffffffffff811115612bd557612bd4612b9b565b5b602083019150836020820283011115612bf157612bf0612b9f565b5b9250929050565b5f5f5f5f60408587031215612c1057612c0f6126c8565b5b5f85013567ffffffffffffffff811115612c2d57612c2c6126cc565b5b612c3987828801612ba3565b9450945050602085013567ffffffffffffffff811115612c5c57612c5b6126cc565b5b612c6887828801612ba3565b925092505092959194509250565b5f612c8082612738565b9050919050565b612c9081612c76565b8114612c9a575f5ffd5b50565b5f81359050612cab81612c87565b92915050565b5f5f60408385031215612cc757612cc66126c8565b5b5f612cd485828601612c9d565b9250506020612ce5858286016127f3565b9150509250929050565b612cf8816129e2565b82525050565b5f602082019050612d115f830184612cef565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612d4981612777565b82525050565b608082015f820151612d635f850182612d40565b506020820151612d766020850182612d40565b506040820151612d896040850182612d40565b506060820151612d9c6060850182612d40565b50505050565b5f612dad8383612d4f565b60808301905092915050565b5f602082019050919050565b5f612dcf82612d17565b612dd98185612d21565b9350612de483612d31565b805f5b83811015612e14578151612dfb8882612da2565b9750612e0683612db9565b925050600181019050612de7565b5085935050505092915050565b5f6020820190508181035f830152612e398184612dc5565b905092915050565b5f60208284031215612e5657612e556126c8565b5b5f612e638482850161281d565b91505092915050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b612e9081612e6c565b8114612e9a575f5ffd5b50565b5f81519050612eab81612e87565b92915050565b5f60208284031215612ec657612ec56126c8565b5b5f612ed384828501612e9d565b91505092915050565b5f82825260208201905092915050565b7f726f756e64206e6f7420696e69740000000000000000000000000000000000005f82015250565b5f612f20600e83612edc565b9150612f2b82612eec565b602082019050919050565b5f6020820190508181035f830152612f4d81612f14565b9050919050565b7f6e6f20756e7265736572766564000000000000000000000000000000000000005f82015250565b5f612f88600d83612edc565b9150612f9382612f54565b602082019050919050565b5f6020820190508181035f830152612fb581612f7c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61302082612777565b915061302b83612777565b925082820261303981612777565b915082820484148315176130505761304f612fe9565b5b5092915050565b5f61306182612777565b915061306c83612777565b925082820190508082111561308457613083612fe9565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6130c182612777565b91506130cc83612777565b9250826130dc576130db61308a565b5b828204905092915050565b5f6040820190506130fa5f830185612780565b6131076020830184612780565b9392505050565b7f746f74616c426f7865733e3000000000000000000000000000000000000000005f82015250565b5f613142600c83612edc565b915061314d8261310e565b602082019050919050565b5f6020820190508181035f83015261316f81613136565b9050919050565b7f746f74616c5061796f75743e30000000000000000000000000000000000000005f82015250565b5f6131aa600d83612edc565b91506131b582613176565b602082019050919050565b5f6020820190508181035f8301526131d78161319e565b9050919050565b7f64656661756c742070726f6273206e6f742073657400000000000000000000005f82015250565b5f613212601583612edc565b915061321d826131de565b602082019050919050565b5f6020820190508181035f83015261323f81613206565b9050919050565b7f726f756e6420616c726561647920696e697469616c697a6564000000000000005f82015250565b5f61327a601983612edc565b915061328582613246565b602082019050919050565b5f6020820190508181035f8301526132a78161326e565b9050919050565b7f6e6f20636c61696d0000000000000000000000000000000000000000000000005f82015250565b5f6132e2600883612edc565b91506132ed826132ae565b602082019050919050565b5f6020820190508181035f83015261330f816132d6565b9050919050565b5f81519050613324816127dd565b92915050565b5f6020828403121561333f5761333e6126c8565b5b5f61334c84828501613316565b91505092915050565b7f456e74726f70792061646472657373206e6f74207365740000000000000000005f82015250565b5f613389601783612edc565b915061339482613355565b602082019050919050565b5f6020820190508181035f8301526133b68161337d565b9050919050565b7f4f6e6c7920456e74726f70792063616e2063616c6c20746869732066756e63745f8201527f696f6e0000000000000000000000000000000000000000000000000000000000602082015250565b5f613417602383612edc565b9150613422826133bd565b604082019050919050565b5f6020820190508181035f8301526134448161340b565b9050919050565b7f6e6f74206d616e616765720000000000000000000000000000000000000000005f82015250565b5f61347f600b83612edc565b915061348a8261344b565b602082019050919050565b5f6020820190508181035f8301526134ac81613473565b9050919050565b7f6d616e61676572206e6f742073657400000000000000000000000000000000005f82015250565b5f6134e7600f83612edc565b91506134f2826134b3565b602082019050919050565b5f6020820190508181035f830152613514816134db565b9050919050565b7f6c656e677468206d69736d6174636800000000000000000000000000000000005f82015250565b5f61354f600f83612edc565b915061355a8261351b565b602082019050919050565b5f6020820190508181035f83015261357c81613543565b9050919050565b7f656d7074792070726f626162696c6974696573000000000000000000000000005f82015250565b5f6135b7601383612edc565b91506135c282613583565b602082019050919050565b5f6020820190508181035f8301526135e4816135ab565b9050919050565b7f626f782070726f622073756d206d7573742062652031303030300000000000005f82015250565b5f61361f601a83612edc565b915061362a826135eb565b602082019050919050565b5f6020820190508181035f83015261364c81613613565b9050919050565b7f76616c75652073686172652073756d206d7573742062652031303030300000005f82015250565b5f613687601d83612edc565b915061369282613653565b602082019050919050565b5f6020820190508181035f8301526136b48161367b565b9050919050565b7f696e76616c696420746f000000000000000000000000000000000000000000005f82015250565b5f6136ef600a83612edc565b91506136fa826136bb565b602082019050919050565b5f6020820190508181035f83015261371c816136e3565b9050919050565b7f696e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f613757601483612edc565b915061376282613723565b602082019050919050565b5f6020820190508181035f8301526137848161374b565b9050919050565b5f81905092915050565b50565b5f6137a35f8361378b565b91506137ae82613795565b5f82019050919050565b5f6137c282613798565b9150819050919050565b7f455448207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f613800601383612edc565b915061380b826137cc565b602082019050919050565b5f6020820190508181035f83015261382d816137f4565b9050919050565b7f6e6f742076616c696420616464726573730000000000000000000000000000005f82015250565b5f613868601183612edc565b915061387382613834565b602082019050919050565b5f6020820190508181035f8301526138958161385c565b9050919050565b5f6040820190506138af5f830185612768565b6138bc6020830184612780565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f6138fa82612777565b915061390583612777565b925082820390508181111561391d5761391c612fe9565b5b92915050565b7f696e76616c696420636f756e74000000000000000000000000000000000000005f82015250565b5f613957600d83612edc565b915061396282613923565b602082019050919050565b5f6020820190508181035f8301526139848161394b565b9050919050565b7f726f756e64206e6f7420696e697469616c697a656400000000000000000000005f82015250565b5f6139bf601583612edc565b91506139ca8261398b565b602082019050919050565b5f6020820190508181035f8301526139ec816139b3565b9050919050565b7f696e73756666696369656e7420666565000000000000000000000000000000005f82015250565b5f613a27601083612edc565b9150613a32826139f3565b602082019050919050565b5f6020820190508181035f830152613a5481613a1b565b9050919050565b5f81519050613a69816126e3565b92915050565b5f60208284031215613a8457613a836126c8565b5b5f613a9184828501613a5b565b91505092915050565b5f81519050919050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613acc82613a9a565b613ad68185612edc565b9350613ae6818560208601613aa4565b613aef81613ab2565b840191505092915050565b5f6040820190508181035f830152613b128185613ac2565b9050613b216020830184612780565b9392505050565b5f6020820190508181035f830152613b408184613ac2565b905092915050565b5f606082019050613b5b5f830186612768565b613b686020830185612768565b613b756040830184612780565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52605160045260245ffdfea2646970667358221220955e1091b71e02bfa720d86d79daf4462635b4dffe6dcb98b3c580aae71baeba64736f6c634300081e00330000000000000000000000006e7d74fa7d5c90fef9f0512987605a6d546181bb000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda02913