0 txs
1 call
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)
getMultipliers
viewfunction getMultipliers() view returns (uint16[])
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, address tokenAddress, 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)
OwnershipTransferred
event OwnershipTransferred(address indexed from, address indexed to)
OwnershipTransferRequested
event OwnershipTransferRequested(address indexed from, address indexed to)
SlotsFulfilled
event SlotsFulfilled(address indexed playerAddress, uint256 wager, uint256 payout, address tokenAddress, uint16[] slotIDs, uint256[] multipliers, uint256[] payouts, uint32 numGames, uint256 rewardAmount)
SlotsRefund
event SlotsRefund(address indexed player, uint256 wager, address tokenAddress)
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
0x6080604052346100315761002061001461016f565b949390939291926101e1565b604051612731610e44823961273190f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b90601f01601f191681019081106001600160401b0382111761006d57604052565b610036565b9061008661007f60405190565b928361004c565b565b6001600160a01b031690565b90565b6001600160a01b0381165b0361003157565b9050519061008682610097565b6001600160a01b0381166100a2565b90505190610086826100b6565b806100a2565b90505190610086826100d2565b61ffff81166100a2565b90505190610086826100e5565b63ffffffff81166100a2565b90505190610086826100fc565b909160c0828403126100315761012b83836100a9565b9261013981602085016100c5565b9261014782604083016100d8565b9261009461015884606085016100d8565b9360a061016882608087016100ef565b9401610108565b61018d6135758038038061018281610072565b928339810190610115565b909192939495565b6001600160401b03811161006d5760200290565b6101b561009491610195565b610072565b6101c76100946100949290565b60ff1690565b6101da6100946100949290565b61ffff1690565b906101ef9594939291610adf565b6100866101fc60396101a9565b61021061020960056101ba565b60ff168252565b600361024b61021e826101ba565b60ff166020840181905260408401819052606084018190526080840181905260a0840181905260c0840152565b61049b6104906002926103b2610260856101ba565b60ff1660e08701819052610100870181905261012087018190526101408701819052610160870181905261018087018190526101a087018190526101c087018190526101e08701819052610200870181905261022087018190526102408701819052610260870181905261028087018190526102a087018190526102c087018190526102e08701819052610300870181905261032087018190526103408701819052610360870181905261038087018190526103a087018190526103c087018190526103e08701819052610400870181905261042087018190526104408701819052610460870181905261048087018190526104a087018190526104c087018190526104e08701819052610500870181905261052087018190526105408701819052610560870181905261058087018190526105a087018190526105c087018190526105e08701819052610600870152565b6103d26103bf600a6101ba565b60ff166106208701819052610640870152565b6103f26103df600c6101ba565b60ff166106608701819052610680870152565b6104126103ff60146101ba565b60ff166106a087018190526106c0870152565b61042a61041f602d6101ba565b60ff166106e0870152565b61044261043760646101ba565b60ff16610700870152565b61048061048561045260396101a9565b9561046861046060006101cd565b61ffff168852565b61048061047560016101cd565b61ffff166020890152565b6101cd565b61ffff166040860152565b61ffff166060830152565b6104b36104a860046101cd565b61ffff166080830152565b6104cb6104c060056101cd565b61ffff1660a0830152565b6104e36104d860066101cd565b61ffff1660c0830152565b6104fb6104f060076101cd565b61ffff1660e0830152565b61051461050860086101cd565b61ffff16610100830152565b61052d61052160096101cd565b61ffff16610120830152565b61054661053a600a6101cd565b61ffff16610140830152565b61055f610553600b6101cd565b61ffff16610160830152565b61057861056c600c6101cd565b61ffff16610180830152565b610591610585600d6101cd565b61ffff166101a0830152565b6105aa61059e600e6101cd565b61ffff166101c0830152565b6105c36105b7600f6101cd565b61ffff166101e0830152565b6105dc6105d060106101cd565b61ffff16610200830152565b6105f56105e960116101cd565b61ffff16610220830152565b61060e61060260126101cd565b61ffff16610240830152565b61062761061b60136101cd565b61ffff16610260830152565b61064061063460146101cd565b61ffff16610280830152565b61065961064d60156101cd565b61ffff166102a0830152565b61067261066660166101cd565b61ffff166102c0830152565b61068b61067f60176101cd565b61ffff166102e0830152565b6106a461069860186101cd565b61ffff16610300830152565b6106bd6106b160196101cd565b61ffff16610320830152565b6106d66106ca601a6101cd565b61ffff16610340830152565b6106ef6106e3601b6101cd565b61ffff16610360830152565b6107086106fc601c6101cd565b61ffff16610380830152565b610721610715601d6101cd565b61ffff166103a0830152565b61073a61072e601e6101cd565b61ffff166103c0830152565b610753610747601f6101cd565b61ffff166103e0830152565b61076c61076060206101cd565b61ffff16610400830152565b61078561077960216101cd565b61ffff16610420830152565b61079e61079260226101cd565b61ffff16610440830152565b6107b76107ab60236101cd565b61ffff16610460830152565b6107d06107c460246101cd565b61ffff16610480830152565b6107e96107dd60256101cd565b61ffff166104a0830152565b6108026107f660266101cd565b61ffff166104c0830152565b61081b61080f60276101cd565b61ffff166104e0830152565b61083461082860286101cd565b61ffff16610500830152565b61084d61084160296101cd565b61ffff16610520830152565b61086661085a602a6101cd565b61ffff16610540830152565b61087f610873602b6101cd565b61ffff16610560830152565b61089861088c602c6101cd565b61ffff16610580830152565b6108b16108a5602d6101cd565b61ffff166105a0830152565b6108ca6108be602e6101cd565b61ffff166105c0830152565b6108e36108d7602f6101cd565b61ffff166105e0830152565b6108fc6108f060306101cd565b61ffff16610600830152565b61091561090960726101cd565b61ffff16610620830152565b61092e61092260756101cd565b61ffff16610640830152565b61094761093b60ab6101cd565b61ffff16610660830152565b61096061095460ad6101cd565b61ffff16610680830152565b61097961096d60e46101cd565b61ffff166106a0830152565b61099261098660e56101cd565b61ffff166106c0830152565b6109ac6109a061011d6101cd565b61ffff166106e0830152565b6109c66109ba6101566101cd565b61ffff16610700830152565b6109d16101576101cd565b91610cf2565b906001600160a01b03905b9181191691161790565b61009490610088906001600160a01b031682565b610094906109ec565b61009490610a00565b90610a22610094610a2992610a09565b82546109d7565b9055565b90600019906109e2565b90610a45610094610a299290565b8254610a2d565b6100946100946100949290565b90610a45610094610a2992610a4c565b9061ffff906109e2565b6101da6100946100949261ffff1690565b90610a94610094610a2992610a73565b8254610a69565b9065ffffffff00009060101b6109e2565b610abf6100946100949263ffffffff1690565b63ffffffff1690565b90610ad8610094610a2992610aac565b8254610a9b565b92610b0a610086969593610b03610b1194610afc610b1898610b35565b6005610a12565b6006610a37565b6008610a59565b6007610a84565b6007610ac8565b6100886100946100949290565b61009490610b1f565b610b3e33610b7e565b6000610b4c61008882610b2c565b6001600160a01b03831614610b6f5750610b6861008691610a09565b6003610a12565b63d92e233d60e01b8152600490fd5b61008690610b8c6000610b2c565b90610bde565b15610b9957565b60405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f00000000000000006044820152606490fd5b610c1d90610bea610c38565b610088610bf76000610b2c565b91610c166001600160a01b0384166001600160a01b0383161415610b92565b6001610a12565b6001600160a01b03821603610c2f5750565b61008690610dcf565b610086610086610c4d565b6100946001610a4c565b610086610c58610c43565b6000610a59565b634e487b7160e01b600052601160045260246000fd5b61ffff1661ffff8114610c885760010190565b610c5f565b6100946100946100949261ffff1690565b634e487b7160e01b600052603260045260246000fd5b906039811015610cc5576020020190565b610c9e565b6101da6100946100949260ff1690565b90610ce490610a73565b600052602052604060002090565b909291610d0090600c610a84565b610d0a60006101cd565b6039610d1582610c8d565b1015610d7d5780610d73610d46610d41610d3a610d34610d7896610c8d565b87610cb4565b5160ff1690565b610cca565b610d6e600b610d68610d60610d5a87610c8d565b8b610cb4565b5161ffff1690565b90610cda565b610a84565b610c75565b610d0a565b50509050565b15610d8a57565b60405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606490fd5b610de4336001600160a01b0383161415610d83565b610def816002610a12565b610e12610e0c610e076001546001600160a01b031690565b610a09565b91610a09565b907fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278610e3d60405190565b600090a356fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80630c657eb0146100fb5780631fe543e3146100f6578063590e1ae3146100f157806374b0a789146100ec57806376fca03d146100e757806379873f8a146100e257806379ba5097146100dd57806380cfa527146100d85780638bd16114146100d35780638da5cb5b146100ce5780638ea98117146100c95780639eccacf6146100c4578063ad5dba7d146100bf5763f2fde38b0361000e5761056e565b610557565b6104d7565b6104b3565b61048c565b610461565b610422565b6103e8565b6103c1565b61032b565b610263565b61024b565b61022d565b610184565b600091031261010b57565b600080fd5b610125916008021c5b6001600160a01b031690565b90565b906101259154610110565b61012560006005610128565b61012590610119906001600160a01b031682565b6101259061013f565b61012590610153565b61016e9061015c565b9052565b6020810192916101829190610165565b565b3461010b57610194366004610100565b6101ab61019f610133565b60405191829182610172565b0390f35b805b0361010b57565b90503590610182826101af565b909182601f8301121561010b578135916001600160401b03831161010b57602001926020830284011161010b57565b91909160408184031261010b5761020b83826101b8565b9260208201356001600160401b03811161010b5761022992016101c5565b9091565b3461010b576102466102403660046101f4565b916105bb565b604051005b3461010b5761025b366004610100565b610246610b27565b3461010b57610273366004610100565b610246610bf7565b6101b181610119565b905035906101828261027b565b9060208282031261010b5761012591610284565b61016e90610119565b80518252610182919060c09081906102cb60208201516020860152565b6102da60408201516040860152565b6102e960608201516060860152565b6102fb608082015160808601906102a5565b60a0818101516001600160401b031690850152015163ffffffff16910152565b60e08101929161018291906102ae565b3461010b576101ab610346610341366004610291565b610d07565b6040519182918261031b565b0190565b9061037661036f610365845190565b8084529260200190565b9260200190565b9060005b8181106103875750505090565b9091926103a86103a1600192865161ffff16815260200190565b9460200190565b92910161037a565b602080825261012592910190610356565b3461010b576103d1366004610100565b6101ab6103dc610e01565b604051918291826103b0565b3461010b576103f8366004610100565b610246610eeb565b610125916008021c81565b906101259154610400565b6101256000600461040b565b3461010b57610432366004610100565b6101ab61043d610416565b6040519182918290815260200190565b9060208282031261010b57610125916101b8565b3461010b576101ab61043d61047736600461044d565b610fb8565b60208101929161018291906102a5565b3461010b5761049c366004610100565b6101ab6104a761101c565b6040519182918261047c565b3461010b576102466104c6366004610291565b611132565b61012560006003610128565b3461010b576104e7366004610100565b6101ab61019f6104cb565b63ffffffff81166101b1565b90503590610182826104f2565b919060a08382031261010b5761052181846101b8565b9261052f8260208301610284565b9261012561054084604085016104fe565b93608061055082606087016101b8565b94016101b8565b61024661056536600461050b565b93929092611442565b3461010b57610246610581366004610291565b611464565b61012590610119565b6101259054610586565b9160206101829294936105b4604082019660008301906102a5565b01906102a5565b91906105d76105d26105cd600361058f565b61015c565b610119565b6105e033610119565b036105ee57610182926115d6565b60006106146106006105cd600361058f565b63073e64fd60e21b83523360048401610599565b036000fd5b610621611a61565b6106296109b4565b610182611aa1565b9061063b9061015c565b600052602052604060002090565b6101259081565b6101259054610649565b6101256101256101259290565b1561066e57565b60405162461bcd60e51b815260206004820152601760248201527f4e6f742077616974696e67205652462072657175657374000000000000000000604482015280606481015b0390fd5b6101259060a01c5b6001600160401b031690565b61012590546106b8565b6106c06101256101259290565b6101256103e86106d6565b634e487b7160e01b600052601160045260246000fd5b6001600160401b03908116911601906001600160401b03821161072357565b6106ee565b610125610125610125926001600160401b031690565b1561074557565b60405162461bcd60e51b8152602060048201526009602482015268546f6f206561726c7960b81b6044820152606490fd5b6101259060e01c5b63ffffffff1690565b6101259054610776565b6101256101256101259263ffffffff1690565b8181029291811591840414171561072357565b6101196101256101259290565b610125906107b7565b634e487b7160e01b600052604160045260246000fd5b90601f01601f191681019081106001600160401b0382111761080457604052565b6107cd565b9061018261081660405190565b92836107e3565b6001600160401b03811161080457602090601f01601f19160190565b9061084b6108468361081d565b610809565b918252565b3d1561086a5761085f3d610839565b903d6000602084013e565b606090565b1561087657565b60405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606490fd5b908152604081019291610182916020906105b4565b9061063b9061065a565b916001600160a01b0360089290920291821b911b5b9181191691161790565b91906108fc6101256109049361015c565b9083546108cc565b9055565b610182916000916108eb565b9160001960089290920291821b911b6108e1565b91906109396101256109049361065a565b908354610914565b61018291600091610928565b60009060049061095d8382610941565b61096a8360018301610941565b6109778360028301610941565b6109848360038301610941565b0155565b634e487b7160e01b600052600060045260246000fd5b906000036109af576101829061094d565b610988565b6101826109ff610b0a33610b036109cf610125836009610631565b610afe610af7600383016109e281610650565b9360009889956109f86109f48861065a565b9190565b1415610667565b7f5d30657a1415f2eca4af426a9aff0a5f3875a54ae40c4b1bc524a42765346eb6610a8d610a87610a70886004860195610a6a610a59610a4f610a418a6106cc565b610a496106e3565b90610704565b610a49600a6106d6565b610a634391610728565b111561073e565b01610650565b610a81610a7c86610787565b610791565b906107a4565b9261058f565b610a996105d2886107c4565b610aa282610119565b03610b0f57610ad08780610ab86105cd8d61015c565b60405160009188905af1610aca610850565b5061086f565b610ad98961015c565b92610aef610ae660405190565b928392836108ad565b0390a2610650565b600a6108c2565b610908565b6009610631565b61099e565b610b22838a610b1d8461015c565b611af4565b610ad0565b610182610619565b610b37611a61565b610629610b42611b81565b610182610ba9565b90600019906108e1565b90610b646101256109049261065a565b8254610b4a565b15610b7257565b60405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b6044820152606490fd5b610182600080610bb96004610650565b610bcc610bc58361065a565b6004610b54565b610bd86105cd3361015c565b90610be260405190565b90818003925af1610bf1610850565b50610b6b565b610182610b2f565b61012560e0610809565b610c11610bff565b906000825260208080808080808801600081520160008152016000815201600081520160008152016000905250565b610125610c09565b9061016e90610119565b90610182610cf16004610c63610bff565b94610c74610c7082610650565b8752565b610c8a610c8360018301610650565b6020880152565b610ca0610c9960028301610650565b6040880152565b610cb6610caf60038301610650565b6060880152565b610ccd610cc483830161058f565b60808801610c48565b610ceb610cdb8383016106cc565b6001600160401b031660a0880152565b01610787565b63ffffffff1660c0840152565b61012590610c52565b610d1e61012591610d16610c40565b506009610631565b610cfe565b610125905b61ffff1690565b6101259054610d23565b6101256101256101259261ffff1690565b6001600160401b0381116108045760208091020190565b9061084b61084683610d4a565b369037565b90610182610d89610d8384610d61565b93610d4a565b601f190160208401610d6e565b610d286101256101259290565b6001610125910161ffff1690565b610d286101256101259261ffff1690565b9061063b90610db1565b634e487b7160e01b600052603260045260246000fd5b90610deb825190565b811015610dfc576020809102010190565b610dcc565b610e1b610e16610e11600c610d2f565b610d39565b610d73565b610e256000610d96565b610e32610d28600c610d2f565b61ffff82161015610e7c5780610e72610e57610e52610e7794600b610dc2565b610d2f565b610e69610e6384610d39565b86610de2565b9061ffff169052565b610da3565b610e25565b5090565b15610e8757565b60405162461bcd60e51b815260206004820152601660248201527526bab9ba10313290383937b837b9b2b21037bbb732b960511b6044820152606490fd5b906001600160a01b03906108e1565b90610ee46101256109049261015c565b8254610ec5565b610f0a610efb6105d2600261058f565b610f0433610119565b14610e80565b610f36610f17600161058f565b610f22336001610ed4565b6105cd610f2f60006107c4565b6002610ed4565b610f3f3361015c565b907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0610f6a60405190565b600090a3565b6101259060101c61077e565b6101259054610f70565b9190820180921161072357565b634e487b7160e01b600052601260045260246000fd5b8115610fb3570490565b610f93565b61100c61012591610fc7600090565b50610a81610ffc610fda6201c13861065a565b92610a81610fe8603c61065a565b94610ff6610a7c6007610f7c565b90610f86565b91611007606461065a565b610f86565b611016606461065a565b90610fa9565b610125600161058f565b6040906105b46101829496959396611046606084019860008501906102a5565b60208301906102a5565b61105b6105d261101c565b61106433610119565b1415806110a8575b61107957610182906110c9565b600061061461108661101c565b6110936105cd600361058f565b63061db9c160e01b8452903360048501611026565b506110b96105d26105cd600361058f565b6110c233610119565b141561106c565b60006110d76105d2826107c4565b6110e083610119565b14611123575061111e816104a76111177fd1a6a14209a385a964d036e404cb5cfb71f4000cdb03c9366292430787261be69461015c565b6003610ed4565b0390a1565b63d92e233d60e01b8152600490fd5b61018290611050565b906106299493929161114b611a61565b61131b565b1561115757565b60405162461bcd60e51b815260206004820152601360248201527215d85a5d1a5b99c8159491881c995c5d595cdd606a1b6044820152606490fd5b61077e6101256101259290565b156111a657565b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206e756d4265747360881b6044820152606490fd5b6101259051610119565b9067ffffffffffffffff60a01b9060a01b6108e1565b6106c0610125610125926001600160401b031690565b90611223610125610904926111fd565b82546111e7565b906001600160e01b03199060e01b6108e1565b61077e6101256101259263ffffffff1690565b906112606101256109049261123d565b825461122a565b9061130b60c0600461018294611287611281600087015190565b82610b54565b61129e611295602087015190565b60018301610b54565b6112b56112ac604087015190565b60028301610b54565b6112cc6112c3606087015190565b60038301610b54565b01926112e36112dd608083016111dd565b85610ed4565b6113006112fa60a08301516001600160401b031690565b85611213565b015163ffffffff1690565b90611250565b9061018291611267565b610af79061140f61141f94611402610a6a976113f26101829a9761136061134d60036113443390565b9d8e6009610631565b61135a6109f4600061065a565b14611150565b63ffffffff85166113716000611192565b1080611424575b6113819061119f565b61138b8188611c0a565b6113a66113a061139a87610791565b896107a4565b82611dc6565b6113de6113b286611f86565b996113d76113bf436106d6565b956113d06113cb610bff565b9b8c52565b60208b0152565b6040890152565b6113e9896060890152565b60808701610c48565b6001600160401b031660a0850152565b63ffffffff1660c0830152565b61141a856009610631565b611311565b610ed4565b506113816114326064611192565b63ffffffff871611159050611378565b906101829493929161113b565b6101829061145b611b81565b610182906120d6565b6101829061144f565b6001610125910163ffffffff1690565b9190811015610dfc576020020190565b35610125816101af565b8115610fb3570690565b9190808303926000909112801582851316918412161761072357565b91908281019260001380159184129182169115161761072357565b63ffffffff908116911690039063ffffffff821161072357565b6114ff6101256101259290565b62ffffff1690565b6101256101256101259262ffffff1690565b9061152861036f610365845190565b9060005b8181106115395750505090565b90919261154f6103a16001928651815260200190565b92910161152c565b9360e0956115a7866115b59361159a6115d2986101829d9f9e9c976115c3996115896115909260006101008901980152565b60208d0152565b60408b01906102a5565b88820360608a0152610356565b908682036080880152611519565b9084820360a0860152611519565b63ffffffff90971660c0830152565b0152565b9190926115ec6115e784600a6108c2565b61058f565b906115fa6105d260006107c4565b61160383610119565b14611a5057611616610125836009610631565b9261162e611629610a41600487016106cc565b610728565b4311611a48579460009560009161164d610e16610a7c60048901610787565b91611660610e16610a7c60048a01610787565b94611673610e16610a7c60048b01610787565b9661167e6000611192565b61168d61077e60048c01610787565b63ffffffff82161015611a38576116bc6116a960018c01610650565b6116b560028d01610650565b908961214f565b6118775761170e6116fc6116f76116e46116df6116d886610791565b898b61147d565b61148d565b6116f1610e11600c610d2f565b90611497565b610d96565b610e6961170884610791565b89610de2565b61175461173f610e11610e52600b61173961173161172b88610791565b8d610de2565b5161ffff1690565b90610dc2565b61175161174b84610791565b8b610de2565b52565b61176d61176961176383610791565b8a610de2565b5190565b61177a6109f4600061065a565b1461185057899661178a88610650565b61179383610791565b61179d908b610de2565b516117a7916107a4565b6117b09061065a565b6117b989610650565b6117c29061065a565b6117cb916114a1565b6117d4916114bd565b9b6117de88610650565b6117e783610791565b6117f1908b610de2565b516117fb916107a4565b61180491610f86565b9661180e90610650565b61181782610791565b611821908a610de2565b5161182b916107a4565b61183482610791565b61183e908b610de2565b526118489061146d565b9a959a61167e565b9a95611848906118719061186b6118668d610650565b61065a565b906114a1565b9b61146d565b99925095969792509893505b848861189160048501610787565b9061189b916114d8565b929485936118a885610650565b906118b290610791565b906118bc916107a4565b6118c591610f86565b926118d26004820161058f565b6118db87610650565b6118e760048401610787565b6118f090610791565b6118f9916107a4565b611902916121cf565b83818388611910600061065a565b8414159d60009d6101829f9d8f9b610b0a9f6119ed610b039f6119e6610afe9f7f507f63e68342b81e92d284c88ffe251096edeb27d073c7d5794619dad66421439d611a069b61198d60049561186b61186661197f6119796119e0986119f39d611a235761065a565b93610650565b610a81610a7c8b8901610787565b61199a6109f4600061065a565b1315611a10578b6119da6119b76119b26108086114f2565b611507565b93610a81610a7c896119d36119cd82860161058f565b96610650565b9301610787565b91612348565b98610650565b990161058f565b9a61015c565b996119fd60405190565b98899889611557565b0390a2600a6108c2565b8b6119da6119b76119b2620186a06114f2565b611866611a318d8b0161058f565b828a61226b565b9992509596979250989350611883565b509350505050565b9350505050565b610125600261065a565b611a6b6000610650565b611a73611a57565b908114611a8557610182906000610b54565b633ee5aeb560e01b6000908152600490fd5b610125600161065a565b610182611aac611a97565b6000610b54565b611acc611ac66101259263ffffffff1690565b60e01b90565b6001600160e01b03191690565b9160206101829294936115d2604082019660008301906102a5565b611b37600492611b2861018295611b0e63a9059cbb611ab3565b92611b1860405190565b9687946020860190815201611ad9565b602082018103825203836107e3565b612500565b15611b4357565b60405162461bcd60e51b815260206004820152601660248201527527b7363c9031b0b63630b1363290313c9037bbb732b960511b6044820152606490fd5b610182611b916105d2600161058f565b611b9a33610119565b14611b3c565b90505190610182826101af565b9060208282031261010b5761012591611ba0565b6040513d6000823e3d90fd5b15611bd457565b60405162461bcd60e51b815260206004820152600e60248201526d2a37b79036b0b73c903bb0b3b2b960911b6044820152606490fd5b611c176105d260006107c4565b611c2083610119565b03611c64576101829150611c5d6109f4610125611c50611c436105cd600561058f565b315b610a8161d9da61065a565b6110166305f5e10061065a565b1115611bcd565b6020611c756105cd611ca69461015c565b611c826105cd600561058f565b90611c8c60405190565b948592839182916370a0823160e01b83526004830161047c565b03915afa8015611cfe576109f4610125611c50611c5d9361018296600091611ccf575b50611c45565b611cf1915060203d602011611cf7575b611ce981836107e3565b810190611bad565b38611cc9565b503d611cdf565b611bc1565b8015156101b1565b9050519061018282611d03565b9060208282031261010b5761012591611d0b565b15611d3357565b60405162461bcd60e51b8152602060048201526012602482015271151bdad95b881b9bdd08185c1c1c9bdd995960721b6044820152606490fd5b15611d7457565b60405162461bcd60e51b815260206004820152601c60248201527f5761676572206d7573742062652067726561746572207468616e2030000000006044820152606490fd5b9190820391821161072357565b90611dd46105cd600561058f565b611ddd3061015c565b906020611de960405190565b918290632ff5fe7360e21b82528180611e06898860048401610599565b03915afa8015611cfe57611e2291600091611e7e575b50611d2c565b611e37611e2f600061065a565b831415611d6d565b611e446105d260006107c4565b611e4d84610119565b03611e6757506101829150611e629034611db9565b6125ce565b611e77610182936105cd346125ce565b339061262c565b611ea0915060203d602011611ea6575b611e9881836107e3565b810190611d18565b38611e1c565b503d611e8e565b6101256020610809565b61012560c0610809565b60005b838110611ed45750506000910152565b8181015183820152602001611ec4565b611f05611f0e60209361035293611ef9815190565b80835293849260200190565b95869101611ec1565b601f01601f191690565b805182526101259160c081019160a090611f3760208201516020850152565b60408181015161ffff169084015260608181015163ffffffff169084015260808181015163ffffffff169084015201519060a0818403910152611ee4565b602080825261012592910190611f18565b602061205b600092611f96600090565b50611fa46105cd600361058f565b9061203d611fb26006610650565b91612036611fc06008610650565b91612029611fce6007610d2f565b61201c611fdb6007610f7c565b91612011611fff611fea611ead565b8f6001611ffa9183019015159052565b61268b565b9761200b6113cb611eb7565b8d8b0152565b61ffff166040890152565b63ffffffff166060870152565b63ffffffff166080850152565b60a0830152565b6040519485938492839190634d8e1c2f60e11b835260048301611f75565b03925af1908115611cfe57600091612071575090565b610125915060203d602011611cf757611ce981836107e3565b1561209157565b60405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606490fd5b6120f26120e233610119565b6120eb83610119565b141561208a565b6120fd816002610ed4565b61211361210d6105cd600161058f565b9161015c565b907fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278610f6a60405190565b600160ff1b81146107235760000390565b906101256121659161215f600090565b5061065a565b81121591821561217457505090565b61218e9192506101256121896109f49261065a565b61213e565b131590565b1561219a57565b60405162461bcd60e51b815260206004820152600d60248201526c1c99599d5b990819985a5b1959609a1b6044820152606490fd5b6121dc6105d260006107c4565b6121e582610119565b036122245750600080610182926122056105cd6105cd6105cd600561058f565b9061220f60405190565b90818003925af161221e610850565b50612193565b906122316101829261015c565b61223e6105cd600561058f565b90611af4565b6040906105b46101829496959396612264606084019860008501906102a5565b6020830152565b909161227a6105cd600561058f565b803b1561010b576122ac936000809461229260405190565b968795869485936336012f6160e11b855260048501612244565b03925af18015611cfe576122bd5750565b6101829060005b6122ce81836107e3565b810190610100565b503d6122c4565b69ffffffffffffffffffff81166101b1565b90505190610182826122dd565b919060a08382031261010b5761231281846122ef565b926123208260208301611ba0565b926101256123318460408501611ba0565b9360806123418260608701611ba0565b94016122ef565b90926000926123568461065a565b946123636105d2866107c4565b61236c82610119565b14612470575b6123986123927355d398326f99059ff775485246999027b3197955610119565b91610119565b14612448575b6123bd6123b16123c493611c50936107a4565b611016620186a061065a565b94856107a4565b926123d16109f48461065a565b116123db57505090565b6123e86105cd600561058f565b803b1561010b5783839161241f938361240060405190565b80968195829461241463f5acc48d60e01b90565b845260048401611ad9565b03925af18015611cfe5761243257505090565b8161012592903d106122d6576122ce81836107e3565b9350611c506123bd6123b16123c4936124646305f5e10061065a565b9793509350505061239e565b94506124926105cd730567f2323251f0aab15c8dfb1967e4e8a7d42aee61015c565b60a061249d60405190565b633fabe5a360e21b815291829060049082905afa8015611cfe576124c8916000916124ce575061065a565b94612372565b6124f0915060a03d60a0116124f9575b6124e881836107e3565b8101906122fc565b5050509061215f565b503d6124de565b90600060209161250e600090565b50828151910182855af115611bc1573d906000516000926125316109f48561065a565b0361257757506125408161015c565b3b61254d6109f48461065a565b145b612557575050565b6106b4612564839261015c565b635274afe760e01b83526004830161047c565b6125846109f4600161065a565b141561254f565b1561259257565b60405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e74207672662066656560601b6044820152606490fd5b610bc5610182916126026125fd6125e43a610fb8565b80936125f86125f08390565b82101561258b565b611db9565b6126d5565b6110076004610650565b6040906115d26101829496959396611046606084019860008501906102a5565b90611b3790611b28610182956004956126486323b872dd611ab3565b9361265260405190565b978895602087019081520161260c565b6101257f92fd13387c7fe7befbc38d303d6468778fb9731bc4583f17d92989c6fcfdeaaa611acc565b610125600491612699606090565b506126c66126a5612662565b916126af60405190565b948593602085019081520190511515815260200190565b602082018103825203826107e3565b6126df600061065a565b81116126e85750565b600080610182926122056105cd3361015c56fea2646970667358221220b0637bd396f2022c2e27eb4c1957a730c066ff8a3906181225c04f25298199aa64736f6c634300081c0033000000000000000000000000d691f04bc0c9a24edb78af9e005cf85768f694c90000000000000000000000001ea54114aee90f1ab6d05418d33917143286fe58130dba50ad435d4ecc214aad0d5820474137bd68e7e77724144f27c3c377d3d4a890ed8a5f7178ac7d6616acb6b65a346d7a1cae8aab2054240398b3a2fcb710000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000f4240