97 txs
195 calls
constructor
constructor(address _vrfCoordinator, address _bankroll, bytes32 _vrfKeyHash, uint256 _vrfSubId, uint16 _vrfMinConfirmations, uint32 _vrfGasLimit)
functions
bankroll
viewfunction bankroll() view returns (address)
claimableVRFFee
viewfunction claimableVRFFee() view returns (uint256)
getCurrentUserState
viewfunction getCurrentUserState(address player) view returns (tuple)
getVRFFee
viewfunction getVRFFee(uint256 _gasPrice) view returns (uint256 fee)
owner
viewfunction owner() view returns (address)
s_vrfCoordinator
viewfunction s_vrfCoordinator() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
collectVrfFee
nonpayablefunction collectVrfFee()
play
payablefunction play(uint256 wager, uint32 multiplier, address tokenAddress, bool isOver, uint32 numBets, uint256 stopGain, uint256 stopLoss) payable
rawFulfillRandomWords
nonpayablefunction rawFulfillRandomWords(uint256 requestId, uint256[] randomWords)
refund
nonpayablefunction refund()
setCoordinator
nonpayablefunction setCoordinator(address _vrfCoordinator)
transferOwnership
nonpayablefunction transferOwnership(address to)
events
CoordinatorSet
event CoordinatorSet(address vrfCoordinator)
DiceFulfilled
event DiceFulfilled(address indexed playerAddress, uint256 wager, uint256 payout, address tokenAddress, uint32 multiplier, bool isOver, uint256[] diceOutcomes, uint256[] payouts, uint32 numGames, uint256 rewardAmount)
DiceRefund
event DiceRefund(address indexed player, uint256 wager, address tokenAddress)
OwnershipTransferred
event OwnershipTransferred(address indexed from, address indexed to)
OwnershipTransferRequested
event OwnershipTransferRequested(address indexed from, address indexed to)
errors
OnlyCoordinatorCanFulfill
error OnlyCoordinatorCanFulfill(address have, address want)
OnlyOwnerOrCoordinator
error OnlyOwnerOrCoordinator(address have, address owner, address coordinator)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
ZeroAddress
error ZeroAddress()
creation bytecode
0x6080604052346100315761002061001461016f565b94939093929192610195565b60405161285b6104f3823961285b90f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b90601f01601f191681019081106001600160401b0382111761006d57604052565b610036565b9061008661007f60405190565b928361004c565b565b6001600160a01b031690565b90565b6001600160a01b0381165b0361003157565b9050519061008682610097565b6001600160a01b0381166100a2565b90505190610086826100b6565b806100a2565b90505190610086826100d2565b61ffff81166100a2565b90505190610086826100e5565b63ffffffff81166100a2565b90505190610086826100fc565b909160c0828403126100315761012b83836100a9565b9261013981602085016100c5565b9261014782604083016100d8565b9261009461015884606085016100d8565b9360a061016882608087016100ef565b9401610108565b61018d612d4e8038038061018281610072565b928339810190610115565b909192939495565b9061008695949392916102b2565b906001600160a01b03905b9181191691161790565b61009490610088906001600160a01b031682565b610094906101b8565b610094906101cc565b906101ee6100946101f5926101d5565b82546101a3565b9055565b90600019906101ae565b906102116100946101f59290565b82546101f9565b6100946100946100949290565b906102116100946101f592610218565b9061ffff906101ae565b6102506100946100949261ffff1690565b61ffff1690565b906102676100946101f59261023f565b8254610235565b9065ffffffff00009060101b6101ae565b6102926100946100949263ffffffff1690565b63ffffffff1690565b906102ab6100946101f59261027f565b825461026e565b926102dd6100869695936102d66102e4946102cf6102eb98610308565b60056101de565b6006610203565b6008610225565b6007610257565b600761029b565b6100886100946100949290565b610094906102f2565b61031133610351565b600061031f610088826102ff565b6001600160a01b03831614610342575061033b610086916101d5565b60036101de565b63d92e233d60e01b8152600490fd5b6100869061035f60006102ff565b906103b1565b1561036c57565b60405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f00000000000000006044820152606490fd5b6103f0906103bd61040b565b6100886103ca60006102ff565b916103e96001600160a01b0384166001600160a01b0383161415610365565b60016101de565b6001600160a01b038216036104025750565b6100869061047e565b610086610086610420565b6100946001610218565b61008661042b610416565b6000610225565b1561043957565b60405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606490fd5b610493336001600160a01b0383161415610432565b61049e8160026101de565b6104c16104bb6104b66001546001600160a01b031690565b6101d5565b916101d5565b907fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12786104ec60405190565b600090a356fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80630c657eb0146100eb5780631f330218146100e65780631fe543e3146100e1578063590e1ae3146100dc57806374b0a789146100d757806376fca03d146100d257806379ba5097146100cd57806380cfa527146100c85780638bd16114146100c35780638da5cb5b146100be5780638ea98117146100b95780639eccacf6146100b45763f2fde38b0361000e57610518565b6104fd565b6104d9565b6104b2565b610487565b610448565b61040e565b6103e7565b610317565b6102ff565b6102e6565b61025f565b610174565b60009103126100fb57565b600080fd5b610115916008021c5b6001600160a01b031690565b90565b906101159154610100565b61011560006005610118565b61011590610109906001600160a01b031682565b6101159061012f565b61011590610143565b61015e9061014c565b9052565b6020810192916101729190610155565b565b346100fb576101843660046100f0565b61019b61018f610123565b60405191829182610162565b0390f35b805b036100fb57565b905035906101728261019f565b63ffffffff81166101a1565b90503590610172826101b5565b6101a181610109565b90503590610172826101ce565b8015156101a1565b90503590610172826101e4565b60e0818303126100fb5761020d82826101a8565b9261021b83602084016101c1565b9261022981604085016101d7565b9261023782606083016101ec565b9261011561024884608085016101c1565b9360c06102588260a087016101a8565b94016101a8565b61027961026d3660046101f9565b95949094939193610ade565b604051005b909182601f830112156100fb578135916001600160401b0383116100fb5760200192602083028401116100fb57565b9190916040818403126100fb576102c483826101a8565b9260208201356001600160401b0381116100fb576102e2920161027e565b9091565b346100fb576102796102f93660046102ad565b91610b22565b346100fb5761030f3660046100f0565b610279610f7d565b346100fb576103273660046100f0565b61027961102c565b906020828203126100fb57610115916101d7565b61015e90610109565b80518252610172919061010090819061036a60208201516020860152565b61037960408201516040860152565b61038860608201516060860152565b61039a60808201516080860190610343565b60a0818101516001600160401b03169085015260c08181015163ffffffff169085015260e08181015163ffffffff169085015201511515910152565b61012081019291610172919061034c565b346100fb5761019b6104026103fd36600461032f565b611194565b604051918291826103d6565b346100fb5761041e3660046100f0565b6102796111f5565b610115916008021c81565b906101159154610426565b61011560006004610431565b346100fb576104583660046100f0565b61019b61046361043c565b6040519182918290815260200190565b906020828203126100fb57610115916101a8565b346100fb5761019b61046361049d366004610473565b6112c5565b6020810192916101729190610343565b346100fb576104c23660046100f0565b61019b6104cd611329565b604051918291826104a2565b346100fb576102796104ec36600461032f565b61143f565b61011560006003610118565b346100fb5761050d3660046100f0565b61019b61018f6104f1565b346100fb5761027961052b36600461032f565b61145d565b90610547969594939291610542611470565b610957565b6101726114b0565b61055c6101156101159290565b63ffffffff1690565b0190565b1561057057565b60405162461bcd60e51b815260206004820152601260248201527124b73b30b634b21036bab63a34b83634b2b960711b604482015280606481015b0390fd5b906105b99061014c565b600052602052604060002090565b6101159081565b61011590546105c7565b6101156101156101159290565b156105ec57565b60405162461bcd60e51b815260206004820152601360248201527215d85a5d1a5b99c8159491881c995c5d595cdd606a1b6044820152606490fd5b1561062e57565b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206e756d4265747360881b6044820152606490fd5b6101156101156101159263ffffffff1690565b634e487b7160e01b600052601160045260246000fd5b9190610699565b9290565b918083029281840414901517156106ac57565b610678565b6106be6101156101159290565b6001600160401b031690565b634e487b7160e01b600052604160045260246000fd5b90601f01601f191681019081106001600160401b0382111761070157604052565b6106ca565b9061017261071360405190565b92836106e0565b610115610120610706565b9061015e90610109565b634e487b7160e01b600052600060045260246000fd5b90600019905b9181191691161790565b9061076561011561076c926105d8565b8254610745565b9055565b6101159051610109565b906001600160a01b039061074b565b9061079961011561076c9261014c565b825461077a565b9067ffffffffffffffff60a01b9060a01b61074b565b6106be610115610115926001600160401b031690565b906107dc61011561076c926107b6565b82546107a0565b906001600160e01b03199060e01b61074b565b61055c6101156101159263ffffffff1690565b9061081961011561076c926107f6565b82546107e3565b9063ffffffff9061074b565b9061083c61011561076c926107f6565b8254610820565b9064ff000000009060201b61074b565b9061086361011561076c92151590565b8254610843565b9061093d61010060056101729461088b610885600087015190565b82610755565b6108a2610899602087015190565b60018301610755565b6108b96108b0604087015190565b60028301610755565b6108d06108c7606087015190565b60038301610755565b61091a600482016108ec6108e660808901610770565b82610789565b61090961090360a08901516001600160401b031690565b826107cc565b60c087015163ffffffff1690610809565b019261093661093060e083015163ffffffff1690565b8561082c565b0151151590565b90610853565b906101729161086a565b906105b9906105d8565b93909195946109633390565b9663ffffffff84166109766128b561054f565b111580610abe575b61098790610569565b6109b76109a0600361099a8b60096105af565b016105ce565b6109b16109ad60006105d8565b9190565b146105e5565b63ffffffff83166109c8600061054f565b1080610aa0575b6109d890610627565b6109e184610665565b6109ec908288611539565b6109f583610665565b6109ff908761068e565b610a0990826116ed565b610a12836118ad565b96610a1c436106b1565b92610a2561071a565b97885260208801526040870152610a3d876060880152565b610a4a9060808701610725565b6001600160401b031660a085015263ffffffff1660c084015263ffffffff1660e08301521515610100820152610a818360096105af565b90610a8b91610943565b610a9690600a61094d565b9061017291610789565b506109d8610aae606461054f565b63ffffffff8516111590506109cf565b50610987610ace62970fe061054f565b63ffffffff86161115905061097e565b90610172969594939291610530565b61011590610109565b6101159054610aed565b916020610172929493610b1b60408201966000830190610343565b0190610343565b9190610b3e610b39610b346003610af6565b61014c565b610109565b610b4733610109565b03610b555761017292611c23565b6000610b7b610b67610b346003610af6565b63073e64fd60e21b83523360048401610b00565b036000fd5b610b88611470565b610547610e09565b15610b9757565b60405162461bcd60e51b815260206004820152601760248201527f4e6f742077616974696e672056524620726571756573740000000000000000006044820152606490fd5b6101159060a01c6106be565b6101159054610bdc565b6101156103e86106b1565b6001600160401b03908116911601906001600160401b0382116106ac57565b610115610115610115926001600160401b031690565b15610c3957565b60405162461bcd60e51b8152602060048201526009602482015268546f6f206561726c7960b81b6044820152606490fd5b6101159060e01c61055c565b6101159054610c6a565b6101096101156101159290565b61011590610c80565b6001600160401b03811161070157602090601f01601f19160190565b90610cc4610cbf83610c96565b610706565b918252565b3d15610ce357610cd83d610cb2565b903d6000602084013e565b606090565b15610cef57565b60405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606490fd5b90815260408101929161017291602090610b1b565b916001600160a01b0360089290920291821b911b61074b565b9190610d6561011561076c9361014c565b908354610d3b565b61017291600091610d54565b9160001960089290920291821b911b61074b565b9190610d9e61011561076c936105d8565b908354610d79565b61017291600091610d8d565b600090600590610dc28382610da6565b610dcf8360018301610da6565b610ddc8360028301610da6565b610de98360038301610da6565b8260048201550155565b90600003610e045761017290610db2565b61072f565b610172610e54610f5f336009610f5a610e2561011584846105af565b610f55610f4e6003610e3b8161099a89896105af565b936000998a95610e4d6109ad886105d8565b1415610b90565b60048101610e93610e82610e78610e6a84610be8565b610e72610bf2565b90610bfd565b610e72600a6106b1565b610e8c4391610c1c565b1115610c32565b7f811184abfc406aefe7c0fda372d4232ced365fb0d662c0f4ee2a2a580e16cb0f610ee2610edc610ec58986016105ce565b610ed6610ed186610c76565b610665565b9061068e565b92610af6565b8a88610ef0610b3982610c8d565b610ef984610109565b03610f645780610f0e610b34610f269461014c565b60405160009188905af1610f20610cc9565b50610ce8565b610f2f8b61014c565b92610f45610f3c60405190565b92839283610d26565b0390a2016105ce565b600a61094d565b610d6d565b6105af565b610df3565b5083610f7891610f738461014c565b612154565b610f26565b610172610b80565b610f8d611470565b610547610f986121e1565b610172610fde565b15610fa757565b60405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b6044820152606490fd5b610172600080610fee60046105ce565b611001610ffa836105d8565b6004610755565b61100d610b343361014c565b9061101760405190565b90818003925af1611026610cc9565b50610fa0565b610172610f85565b61103c61071a565b9060008252602080808080808080808a0160008152016000815201600081520160008152016000815201600081520160008152016000905250565b610115611034565b6101159061055c565b610115905461107f565b6101159060201c60ff1690565b6101159054611092565b9061017261118160056110ba61071a565b946110cb6110c7826105ce565b8752565b6110e16110da600183016105ce565b6020880152565b6110f76110f0600283016105ce565b6040880152565b61110d611106600383016105ce565b6060880152565b61112561111c60048301610af6565b60808801610725565b61114461113460048301610be8565b6001600160401b031660a0880152565b61116061115360048301610c76565b63ffffffff1660c0880152565b61117b61116e838301611088565b63ffffffff1660e0880152565b0161109f565b1515610100840152565b610115906110a9565b6111ab610115916111a3611077565b5060096105af565b61118b565b156111b757565b60405162461bcd60e51b815260206004820152601660248201527526bab9ba10313290383937b837b9b2b21037bbb732b960511b6044820152606490fd5b611214611205610b396002610af6565b61120e33610109565b146111b0565b6112406112216001610af6565b61122c336001610789565b610b346112396000610c8d565b6002610789565b6112493361014c565b907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e061127460405190565b600090a3565b6101159060101c61055c565b610115905461127a565b919082018092116106ac57565b634e487b7160e01b600052601260045260246000fd5b905b9081156112c0570490565b61129d565b611319610115916112d4600090565b50610ed66113096112e76201c1386105d8565b92610ed66112f5603c6105d8565b94611303610ed16007611286565b90611290565b9161131460646105d8565b611290565b61132360646105d8565b906112b3565b6101156001610af6565b604090610b1b610172949695939661135360608401986000850190610343565b6020830190610343565b611368610b39611329565b61137133610109565b1415806113b5575b61138657610172906113d6565b6000610b7b611393611329565b6113a0610b346003610af6565b63061db9c160e01b8452903360048501611333565b506113c6610b39610b346003610af6565b6113cf33610109565b1415611379565b60006113e4610b3982610c8d565b6113ed83610109565b14611430575061142b816104cd6114247fd1a6a14209a385a964d036e404cb5cfb71f4000cdb03c9366292430787261be69461014c565b6003610789565b0390a1565b63d92e233d60e01b8152600490fd5b6101729061135d565b610172906114546121e1565b6101729061224c565b61017290611448565b61011560026105d8565b61147a60006105ce565b611482611466565b90811461149457610172906000610755565b633ee5aeb560e01b6000908152600490fd5b61011560016105d8565b6101726114bb6114a6565b6000610755565b905051906101728261019f565b906020828203126100fb57610115916114c2565b6040513d6000823e3d90fd5b919082039182116106ac57565b1561150357565b60405162461bcd60e51b815260206004820152600e60248201526d2a37b79036b0b73c903bb0b3b2b960911b6044820152606490fd5b90611547610b396000610c8d565b61155082610109565b0361159b57506115946109ad61011561017294611323611582611576610b346005610af6565b315b610ed6606e6105d8565b9161158e6127106105d8565b906114ef565b11156114fc565b9160206115ad610b346115de9561014c565b6115ba610b346005610af6565b906115c460405190565b958692839182916370a0823160e01b8352600483016104a2565b03915afa801561163a57610115611594926113236115826109ad946101729860009161160b575b50611578565b61162d915060203d602011611633575b61162581836106e0565b8101906114cf565b38611605565b503d61161b565b6114e3565b90505190610172826101e4565b906020828203126100fb576101159161163f565b1561166757565b60405162461bcd60e51b8152602060048201526012602482015271151bdad95b881b9bdd08185c1c1c9bdd995960721b6044820152606490fd5b156116a857565b60405162461bcd60e51b815260206004820152601c60248201527f5761676572206d7573742062652067726561746572207468616e2030000000006044820152606490fd5b906116fb610b346005610af6565b6117043061014c565b90602061171060405190565b918290632ff5fe7360e21b8252818061172d898860048401610b00565b03915afa801561163a57611749916000916117a5575b50611660565b61175e61175660006105d8565b8314156116a1565b61176b610b396000610c8d565b61177484610109565b0361178e5750610172915061178990346114ef565b6122f7565b61179e61017293610b34346122f7565b3390612350565b6117c7915060203d6020116117cd575b6117bf81836106e0565b81019061164c565b38611743565b503d6117b5565b6101156020610706565b61011560c0610706565b60005b8381106117fb5750506000910152565b81810151838201526020016117eb565b61182c61183560209361056593611820815190565b80835293849260200190565b958691016117e8565b601f01601f191690565b805182526101159160c081019160a09061185e60208201516020850152565b60408181015161ffff169084015260608181015163ffffffff169084015260808181015163ffffffff169084015201519060a081840391015261180b565b60208082526101159291019061183f565b602061198a6000926118bd600090565b506118cb610b346003610af6565b9061196c6118d960066105ce565b916119656118e760086105ce565b916119586118f860075461ffff1690565b61194b6119056007611286565b916119406119296119146117d4565b8f60016119249183019015159052565b6123af565b9761193a6119356117de565b9b8c52565b8d8b0152565b61ffff166040890152565b63ffffffff166060870152565b63ffffffff166080850152565b60a0830152565b6040519485938492839190634d8e1c2f60e11b83526004830161189c565b03925af190811561163a576000916119a0575090565b610115915060203d6020116116335761162581836106e0565b6001600160401b0381116107015760208091020190565b90610cc4610cbf836119b9565b369037565b906101726119f86119f2846119d0565b936119b9565b601f1901602084016119dd565b611a126101156101159290565b64ffffffffff1690565b611a126101156101159263ffffffff1690565b64ffffffffff90811691166112b5565b6101156101156101159264ffffffffff1690565b6001610115910163ffffffff1690565b600160ff1b81146106ac5760000390565b634e487b7160e01b600052603260045260246000fd5b9190811015611a9a576020020190565b611a74565b356101158161019f565b81156112c0570690565b90611abc825190565b811015611a9a576020809102010190565b9190828101926000138015918412918216911516176106ac57565b919080830392600090911280158285131691841216176106ac57565b63ffffffff908116911690039063ffffffff82116106ac57565b611b2b6101156101159290565b62ffffff1690565b6101156101156101159262ffffff1690565b90611b65611b5e611b54845190565b8084529260200190565b9260200190565b9060005b818110611b765750505090565b909192611b93611b8c6001928651815260200190565b9460200190565b929101611b69565b949061010096611bf9611c0693611bf0611bd5986101729d9f9e9c97611c1499611bd9611be39260208f611bd561012082019c6000830152565b0152565b60408d0190610343565b63ffffffff1660608b0152565b15156080890152565b86820360a0880152611b45565b9084820360c0860152611b45565b63ffffffff90971660e0830152565b90611c37611c3283600a61094d565b610af6565b91611c45610b396000610c8d565b611c4e84610109565b1461210d57611c616101158460096105af565b93611c79611c74610e6a60048801610be8565b610c1c565b431161210657600095949384938791611c9f611c9a610ed160048901610c76565b6119e2565b91611cb2611c9a610ed160048a01610c76565b94611ce5611ce0611ccd611cc860058c01611088565b611a1c565b611cdb64170cdc1e00611a05565b611a2f565b611a3f565b99611cfb8b611cf6629896806105d8565b6114ef565b93611d34611d298b611d24611d1e6000611d1760058501611088565b93016105ce565b91610665565b61068e565b6113236127106105d8565b98611d4160048c01610af6565b611d5b61055c6004611d53600061054f565b9e5b01610c76565b63ffffffff8d1610156120bb578e611d846109ad8f611d7f600161011592016105ce565b6105d8565b12156120bb578e611da96109ad8f611da4611d7f600261011593016105ce565b611a63565b1315611f1f578d9e8d9e8e90611e178f611e0d81610ed18f611e0a8f8f611de3611dfa92611de892611ddd611e139b610665565b91611a8a565b611a9f565b611df4629896806105d8565b90611aa9565b91611e0485610665565b90611ab3565b52565b8d611ab3565b5190565b8a111580611f02575b611eef57611e3b8f610695611e138e611e046109ad94610665565b111580611ed0575b611e7a57611e6991611e5d611d7f6000611e6394016105ce565b90611ae8565b9c611a53565b9b9e9d61055c6004611d5b92611d55565b908c6000819f9c9301611e8c906105ce565b611e95916114ef565b611e9e906105d8565b611ea791611acd565b9c611eb191611290565b988b611ebc82610665565b611ec6908d611ab3565b52611e6990611a53565b50611edd6005820161109f565b611ee960005b91151590565b14611e43565b50908c6000819f9c9301611e8c906105ce565b50611f0f6005830161109f565b611f196001611ee3565b14611e20565b9450945097509a505061017298507fc1db7e13cbf6ea3424767f211f101088f76cd5d3baa924fa473fbd1021e652d261209095600099612086610f5596610f5f9b611f8c8e9a5b611303611f7e84611f7960048a01610c76565b611b04565b611d24611d1e8f8a016105ce565b94611fb3611fad611f9e8d88016105ce565b610ed6610ed160048a01610c76565b89612435565b8c8887611fbf8e6105d8565b81036120aa575b611ff59250611fd591506105d8565b611e5d611d7f611fe68f8a016105ce565b610ed6610ed160048c01610c76565b6120016109ad8d6105d8565b138b14612097576120458d61201f61201a6103e8611b1e565b611b33565b908a61203f8f612030908b016105ce565b610ed6610ed160048d01610c76565b916125ae565b928d6120528d88016105ce565b9661207361206d6005612066818501611088565b930161109f565b9261014c565b9a61207d60405190565b998a998a611b9b565b0390a2600a61094d565b60096105af565b6120458d61201f61201a620186a0611b1e565b6120b3926124d1565b8c8887611fc6565b9450945097509a505061017298507fc1db7e13cbf6ea3424767f211f101088f76cd5d3baa924fa473fbd1021e652d261209095600099612086610f5596610f5f9b611f8c8e9a611f66565b5050505050565b50505050565b61212c6121266101159263ffffffff1690565b60e01b90565b6001600160e01b03191690565b916020610172929493611bd560408201966000830190610343565b6121976004926121886101729561216e63a9059cbb612113565b9261217860405190565b9687946020860190815201612139565b602082018103825203836106e0565b612774565b156121a357565b60405162461bcd60e51b815260206004820152601660248201527527b7363c9031b0b63630b1363290313c9037bbb732b960511b6044820152606490fd5b6101726121f1610b396001610af6565b6121fa33610109565b1461219c565b1561220757565b60405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606490fd5b61226861225833610109565b61226183610109565b1415612200565b612273816002610789565b612289612283610b346001610af6565b9161014c565b907fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127861127460405190565b156122bb57565b60405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e74207672662066656560601b6044820152606490fd5b610ffa6101729161232661232161230d3a6112c5565b8093611cf66123198390565b8210156122b4565b6127ff565b61131460046105ce565b604090611bd5610172949695939661135360608401986000850190610343565b90612197906121886101729560049561236c6323b872dd612113565b9361237660405190565b9788956020870190815201612330565b6101157f92fd13387c7fe7befbc38d303d6468778fb9731bc4583f17d92989c6fcfdeaaa61212c565b6101156004916123bd606090565b506123ea6123c9612386565b916123d360405190565b948593602085019081520190511515815260200190565b602082018103825203826106e0565b1561240057565b60405162461bcd60e51b815260206004820152600d60248201526c1c99599d5b990819985a5b1959609a1b6044820152606490fd5b612442610b396000610c8d565b61244b82610109565b0361248a57506000806101729261246b610b34610b34610b346005610af6565b9061247560405190565b90818003925af1612484610cc9565b506123f9565b906124976101729261014c565b6124a4610b346005610af6565b90612154565b604090610b1b61017294969593966124ca60608401986000850190610343565b6020830152565b90916124e0610b346005610af6565b803b156100fb5761251293600080946124f860405190565b968795869485936336012f6160e11b8552600485016124aa565b03925af1801561163a576125235750565b6101729060005b61253481836106e0565b8101906100f0565b503d61252a565b69ffffffffffffffffffff81166101a1565b9050519061017282612543565b919060a0838203126100fb576125788184612555565b9261258682602083016114c2565b9261011561259784604085016114c2565b9360806125a782606087016114c2565b9401612555565b90926000926125bc846105d8565b946125c9610b3986610c8d565b6125d282610109565b146126e3575b6125fe6125f87355d398326f99059ff775485246999027b3197955610109565b91610109565b146126bb575b6126236126176126379361262a9361068e565b611323620186a06105d8565b948561068e565b6113236305f5e1006105d8565b926126446109ad846105d8565b1161264e57505090565b61265b610b346005610af6565b803b156100fb57838391612692938361267360405190565b80968195829461268763f5acc48d60e01b90565b845260048401612139565b03925af1801561163a576126a557505090565b8161011592903d1061253c5761253481836106e0565b935061262a612623612617612637936126d76305f5e1006105d8565b97935093505050612604565b9450612705610b34730567f2323251f0aab15c8dfb1967e4e8a7d42aee61014c565b60a061271060405190565b633fabe5a360e21b815291829060049082905afa801561163a5761273c91600091612742575b506105d8565b946125d8565b612764915060a03d60a01161276d575b61275c81836106e0565b810190612562565b50505090612736565b503d612752565b906000602091612782600090565b50828151910182855af1156114e3573d906000516000926127a56109ad856105d8565b036127eb57506127b48161014c565b3b6127c16109ad846105d8565b145b6127cb575050565b6105ab6127d8839261014c565b635274afe760e01b8352600483016104a2565b6127f86109ad60016105d8565b14156127c3565b61280960006105d8565b81116128125750565b6000806101729261246b610b343361014c56fea2646970667358221220705184a0c4c9d78b55e136af8762ddea938ffd3b7fcf7769263bfbbc1bac87ad64736f6c634300081c0033000000000000000000000000d691f04bc0c9a24edb78af9e005cf85768f694c90000000000000000000000001ea54114aee90f1ab6d05418d33917143286fe58130dba50ad435d4ecc214aad0d5820474137bd68e7e77724144f27c3c377d3d4a890ed8a5f7178ac7d6616acb6b65a346d7a1cae8aab2054240398b3a2fcb710000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000f4240