0 txs
0 calls
constructor
constructor(address _token, address _adminAddress, address _operatorAddress, address _keeperAddress, uint256 _intervalSeconds, uint256 _bufferSeconds, uint256 _minBetAmount, uint256 _oracleUpdateAllowance, uint256 _treasuryFee)
functions
adminAddress
viewfunction adminAddress() view returns (address)
bufferSeconds
viewfunction bufferSeconds() view returns (uint256)
claimable
viewfunction claimable(uint256 epoch, address user) view returns (bool)
currentEpoch
viewfunction currentEpoch() view returns (uint256)
genesisLockOnce
viewfunction genesisLockOnce() view returns (bool)
genesisStartOnce
viewfunction genesisStartOnce() view returns (bool)
getUserRounds
viewfunction getUserRounds(address user, uint256 cursor, uint256 size) view returns (uint256[], tuple[], uint256)
getUserRoundsLength
viewfunction getUserRoundsLength(address user) view returns (uint256)
intervalSeconds
viewfunction intervalSeconds() view returns (uint256)
keeperAddress
viewfunction keeperAddress() view returns (address)
ledger
viewfunction ledger(uint256, address) view returns (uint8 position, uint256 amount, bool claimed)
MAX_TREASURY_FEE
viewfunction MAX_TREASURY_FEE() view returns (uint256)
minBetAmount
viewfunction minBetAmount() view returns (uint256)
operatorAddress
viewfunction operatorAddress() view returns (address)
oracleLatestRoundId
viewfunction oracleLatestRoundId() view returns (uint256)
oracleUpdateAllowance
viewfunction oracleUpdateAllowance() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
refundable
viewfunction refundable(uint256 epoch, address user) view returns (bool)
rounds
viewfunction rounds(uint256) view returns (uint256 epoch, uint256 startTimestamp, uint256 lockTimestamp, uint256 closeTimestamp, int256 lockPrice, int256 closePrice, uint256 lockOracleId, uint256 closeOracleId, uint256 totalAmount, uint256 bullAmount, uint256 bearAmount, uint256 rewardBaseCalAmount, uint256 rewardAmount, bool oracleCalled)
token
viewfunction token() view returns (address)
treasuryAmount
viewfunction treasuryAmount() view returns (uint256)
treasuryFee
viewfunction treasuryFee() view returns (uint256)
userRounds
viewfunction userRounds(address, uint256) view returns (uint256)
betBear
nonpayablefunction betBear(uint256 epoch, uint256 _amount)
betBull
nonpayablefunction betBull(uint256 epoch, uint256 _amount)
claim
nonpayablefunction claim(uint256[] epochs)
claimTreasury
nonpayablefunction claimTreasury()
executeRound
nonpayablefunction executeRound(uint80 currentRoundId, int256 currentPrice)
genesisLockRound
nonpayablefunction genesisLockRound(uint80 currentRoundId, int256 currentPrice)
genesisStartRound
nonpayablefunction genesisStartRound()
pause
nonpayablefunction pause()
recoverToken
nonpayablefunction recoverToken(address _token, uint256 _amount)
renounceOwnership
nonpayablefunction renounceOwnership()
setAdmin
nonpayablefunction setAdmin(address _adminAddress)
setBufferAndIntervalSeconds
nonpayablefunction setBufferAndIntervalSeconds(uint256 _bufferSeconds, uint256 _intervalSeconds)
setKeeper
nonpayablefunction setKeeper(address _keeperAddress)
setMinBetAmount
nonpayablefunction setMinBetAmount(uint256 _minBetAmount)
setOperator
nonpayablefunction setOperator(address _operatorAddress)
setOracleUpdateAllowance
nonpayablefunction setOracleUpdateAllowance(uint256 _oracleUpdateAllowance)
setTreasuryFee
nonpayablefunction setTreasuryFee(uint256 _treasuryFee)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
events
BetBear
event BetBear(address indexed sender, uint256 indexed epoch, uint256 amount)
BetBull
event BetBull(address indexed sender, uint256 indexed epoch, uint256 amount)
Claim
event Claim(address indexed sender, uint256 indexed epoch, uint256 amount)
EndRound
event EndRound(uint256 indexed epoch, uint256 indexed roundId, int256 price)
LockRound
event LockRound(uint256 indexed epoch, uint256 indexed roundId, int256 price)
NewAdminAddress
event NewAdminAddress(address indexed admin)
NewBufferAndIntervalSeconds
event NewBufferAndIntervalSeconds(uint256 bufferSeconds, uint256 intervalSeconds)
NewKeeperAddress
event NewKeeperAddress(address indexed keeper)
NewMinBetAmount
event NewMinBetAmount(uint256 indexed epoch, uint256 minBetAmount)
NewOperatorAddress
event NewOperatorAddress(address indexed operator)
NewOracleUpdateAllowance
event NewOracleUpdateAllowance(uint256 oracleUpdateAllowance)
NewTreasuryFee
event NewTreasuryFee(uint256 indexed epoch, uint256 treasuryFee)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Pause
event Pause(uint256 indexed epoch)
Paused
event Paused(address account)
RewardsCalculated
event RewardsCalculated(uint256 indexed epoch, uint256 rewardBaseCalAmount, uint256 rewardAmount, uint256 treasuryAmount)
StartRound
event StartRound(uint256 indexed epoch)
TokenRecovery
event TokenRecovery(address indexed token, uint256 amount)
TreasuryClaim
event TreasuryClaim(uint256 amount)
Unpause
event Unpause(uint256 indexed epoch)
Unpaused
event Unpaused(address account)
errors
No errors.
creation bytecode
0x60a06040526002805461ffff191690553480156200001c57600080fd5b5060405162004d6d38038062004d6d8339810160408190526200003f916200017b565b6200004a336200012b565b6000805460ff60a01b19169055600180556103e8811115620000b25760405162461bcd60e51b815260206004820152601560248201527f54726561737572792066656520746f6f20686967680000000000000000000000604482015260640160405180910390fd5b60609890981b6001600160601b0319166080526002805462010000600160b01b031916620100006001600160a01b03998a1602179055600380546001600160a01b0319908116978916979097179055600480549096169490961693909317909355600655600591909155600755600c556008556200022e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008060008060008060008060006101208a8c0312156200019a578485fd5b8951620001a78162000215565b60208b0151909950620001ba8162000215565b60408b0151909850620001cd8162000215565b60608b0151909750620001e08162000215565b8096505060808a0151945060a08a0151935060c08a0151925060e08a015191506101008a015190509295985092959850929598565b6001600160a01b03811681146200022b57600080fd5b50565b60805160601c614afd62000270600039600081816107260152818161084b01528181610ba501528181610f9d01528181611b2b015261308c0152614afd6000f3fe608060405234801561001057600080fd5b50600436106102e85760003560e01c80637d1cd04f11610191578063cc32d176116100e3578063f2b3c80911610097578063fa968eea11610071578063fa968eea14610718578063fc0c546a14610721578063fc6f94681461074857600080fd5b8063f2b3c809146106ea578063f2fde38b146106f3578063f7fdec281461070657600080fd5b8063dd1f7596116100c8578063dd1f7596146106c5578063eaba2361146106d8578063ec324703146106e157600080fd5b8063cc32d176146106a9578063cf2f5039146106b257600080fd5b8063951fd60011610145578063b29a81401161011f578063b29a814014610663578063b3ab15fb14610676578063b67a85bd1461068957600080fd5b8063951fd6001461061b578063a0c7f71c1461063d578063a1d2f6ea1461065057600080fd5b8063890dc76611610176578063890dc766146105025780638c65c81f146105155780638da5cb5b146105fd57600080fd5b80637d1cd04f146104f15780638456cb59146104fa57600080fd5b8063605540111161024a5780637285c58b116101fe57806376671808116101d857806376671808146104c257806377e741c7146104cb5780637bf41254146104de57600080fd5b80637285c58b1461044e578063740e10471461049c578063748747e6146104af57600080fd5b80636c1885931161022f5780636c18859314610420578063704b6c0214610433578063715018a61461044657600080fd5b806360554011146104045780636ba4c1381461040d57600080fd5b8063368acb09116102a15780633f4ba83a116102865780633f4ba83a146103d1578063452fd75a146103d95780635c975abb146103e157600080fd5b8063368acb09146103b55780633923e1b4146103be57600080fd5b80630f74174f116102d25780630f74174f1461030a578063127effb21461032c578063273867d41461037157600080fd5b80623bdc74146102ed5780630e89e5a4146102f7575b600080fd5b6102f561076e565b005b6102f56103053660046147d4565b6108b9565b6002546103179060ff1681565b60405190151581526020015b60405180910390f35b60035461034c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610323565b6103a761037f366004614685565b73ffffffffffffffffffffffffffffffffffffffff166000908152600f602052604090205490565b604051908152602001610323565b6103a760095481565b6102f56103cc3660046147d4565b610cb1565b6102f5611092565b6102f56111c3565b60005474010000000000000000000000000000000000000000900460ff16610317565b6103a7600c5481565b6102f561041b366004614701565b611350565b6102f561042e366004614791565b611b5c565b6102f5610441366004614685565b611cb3565b6102f5611e50565b61048d61045c3660046147a9565b600d60209081526000928352604080842090915290825290208054600182015460029092015460ff91821692911683565b60405161032393929190614919565b6102f56104aa3660046147f5565b611e62565b6102f56104bd366004614685565b61202d565b6103a7600a5481565b6102f56104d9366004614791565b6121c2565b6103176104ec3660046147a9565b612317565b6103a760065481565b6102f56124e2565b6102f56105103660046147d4565b6125eb565b610593610523366004614791565b600e60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a8b0154600b8c0154600c8d0154600d909d01549b9c9a9b999a98999798969795969495939492939192909160ff168e565b604080519e8f5260208f019d909d529b8d019a909a5260608c019890985260808b019690965260a08a019490945260c089019290925260e088015261010087015261012086015261014085015261016084015261018083015215156101a08201526101c001610323565b60005473ffffffffffffffffffffffffffffffffffffffff1661034c565b61062e6106293660046146cf565b612772565b60405161032393929190614877565b61031761064b3660046147a9565b612b53565b6102f561065e3660046147f5565b612dc4565b6102f56106713660046146a6565b612fe1565b6102f5610684366004614685565b6131db565b60045461034c9073ffffffffffffffffffffffffffffffffffffffff1681565b6103a760085481565b6102f56106c0366004614791565b613370565b6103a76106d33660046146a6565b61345c565b6103a760055481565b6103a7600b5481565b6103a76103e881565b6102f5610701366004614685565b61348d565b60025461031790610100900460ff1681565b6103a760075481565b61034c7f000000000000000000000000000000000000000000000000000000000000000081565b60025461034c9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b610776613544565b60025462010000900473ffffffffffffffffffffffffffffffffffffffff163314806107b9575060035473ffffffffffffffffffffffffffffffffffffffff1633145b610824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e6f742061646d696e2f6f70657261746f72000000000000000000000000000060448201526064015b60405180910390fd5b60098054600090915560025461087a9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081169162010000900416836135b8565b6040518181527fb9197c6b8e21274bd1e2d9c956a88af5cfee510f630fab3f046300f88b4223619060200160405180910390a1506108b760018055565b565b6108c1613691565b6108c9613544565b333b15610932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f436f6e7472616374206e6f7420616c6c6f776564000000000000000000000000604482015260640161081b565b33321461099b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f50726f787920636f6e7472616374206e6f7420616c6c6f776564000000000000604482015260640161081b565b600a548214610a06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f42657420697320746f6f206561726c792f6c6174650000000000000000000000604482015260640161081b565b610a0f82613716565b610a75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f526f756e64206e6f74206265747461626c650000000000000000000000000000604482015260640161081b565b600754811015610b07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f42657420616d6f756e74206d7573742062652067726561746572207468616e2060448201527f6d696e426574416d6f756e740000000000000000000000000000000000000000606482015260840161081b565b6000828152600d6020908152604080832033845290915290206001015415610b8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f43616e206f6e6c7920626574206f6e63652070657220726f756e640000000000604482015260640161081b565b610bcd73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084613781565b6000828152600e602052604090206008810154829190610bee90839061498e565b6008820155600a810154610c0390839061498e565b600a8201556000848152600d602090815260408083203380855290835281842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081178255808201889055600f855283862080549182018155865294849020909401889055905185815287927f0d8c1fe3e67ab767116a81f122b83c2557a8c2564019cb7c4f83de1aeb1f1f0d91015b60405180910390a3505050610cad60018055565b5050565b610cb9613691565b610cc1613544565b333b15610d2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f436f6e7472616374206e6f7420616c6c6f776564000000000000000000000000604482015260640161081b565b333214610d93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f50726f787920636f6e7472616374206e6f7420616c6c6f776564000000000000604482015260640161081b565b600a548214610dfe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f42657420697320746f6f206561726c792f6c6174650000000000000000000000604482015260640161081b565b610e0782613716565b610e6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f526f756e64206e6f74206265747461626c650000000000000000000000000000604482015260640161081b565b600754811015610eff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f42657420616d6f756e74206d7573742062652067726561746572207468616e2060448201527f6d696e426574416d6f756e740000000000000000000000000000000000000000606482015260840161081b565b6000828152600d6020908152604080832033845290915290206001015415610f83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f43616e206f6e6c7920626574206f6e63652070657220726f756e640000000000604482015260640161081b565b610fc573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084613781565b6000828152600e602052604090206008810154829190610fe690839061498e565b60088201556009810154610ffb90839061498e565b60098201556000848152600d602090815260408083203380855290835281842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681556001808201889055600f855283862080549182018155865294849020909401889055905185815287927f438122d8cff518d18388099a5181f0d17a12b4f1b55faedf6e4a6acee0060c129101610c99565b61109a6137e5565b60025462010000900473ffffffffffffffffffffffffffffffffffffffff163314806110dd575060035473ffffffffffffffffffffffffffffffffffffffff1633145b806110ff575060045473ffffffffffffffffffffffffffffffffffffffff1633145b611165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4e6f742061646d696e2f6f70657261746f722f6b656570657200000000000000604482015260640161081b565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169055611195613869565b600a546040517faaa520fdd7d2c83061d632fa017b0432407e798818af63ea908589fceda39ab790600090a2565b6111cb613691565b60045473ffffffffffffffffffffffffffffffffffffffff16331480611208575060035473ffffffffffffffffffffffffffffffffffffffff1633145b61126e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4e6f74206b65657065722f6f70657261746f7200000000000000000000000000604482015260640161081b565b600254610100900460ff1615611306576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f43616e206f6e6c792072756e2067656e657369735374617274526f756e64206f60448201527f6e63650000000000000000000000000000000000000000000000000000000000606482015260840161081b565b600a5461131490600161498e565b600a819055611322906138e6565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b611358613544565b333b156113c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f436f6e7472616374206e6f7420616c6c6f776564000000000000000000000000604482015260640161081b565b33321461142a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f50726f787920636f6e7472616374206e6f7420616c6c6f776564000000000000604482015260640161081b565b6000805b82811015611b0a57600e6000858584818110611473577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135815260200190815260200160002060010154600014156114f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f526f756e6420686173206e6f7420737461727465640000000000000000000000604482015260640161081b565b600e6000858584818110611533577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013581526020019081526020016000206003015442116115b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f526f756e6420686173206e6f7420656e64656400000000000000000000000000604482015260640161081b565b6000600e60008686858181106115f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60209081029290920135835250810191909152604001600020600d015460ff161561188157611661858584818110611654577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013533612b53565b6116c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4e6f7420656c696769626c6520666f7220636c61696d00000000000000000000604482015260640161081b565b6000600e6000878786818110611706577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201358152602001908152602001600020604051806101c001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201548152602001600b8201548152602001600c8201548152602001600d820160009054906101000a900460ff1615151515815250509050806101600151816101800151600d600089898881811061180f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461186f91906149df565b61187991906149a6565b9150506119c6565b6118ca8585848181106118bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013533612317565b611930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e6f7420656c696769626c6520666f7220726566756e64000000000000000000604482015260640161081b565b600d600086868581811061196d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490505b6001600d6000878786818110611a05577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602090810292909201358352508181019290925260409081016000908120338252909252902060020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055611a65818461498e565b9250848483818110611aa0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201353373ffffffffffffffffffffffffffffffffffffffff167f34fcbac0073d7c3d388e51312faf357774904998eeb8fca628b9e6f65ee1cbf783604051611aef91815260200190565b60405180910390a35080611b0281614a5f565b91505061142e565b508015611b5257611b5273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633836135b8565b50610cad60018055565b611b646137e5565b60025462010000900473ffffffffffffffffffffffffffffffffffffffff16331480611ba7575060035473ffffffffffffffffffffffffffffffffffffffff1633145b611c0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e6f742061646d696e2f6f70657261746f720000000000000000000000000000604482015260640161081b565b80611c74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d757374206265207375706572696f7220746f20300000000000000000000000604482015260640161081b565b6007819055600a546040518281527f90eb87c560a0213754ceb3a7fa3012f01acab0a35602c1e1995adf69dabc9d50906020015b60405180910390a250565b60025462010000900473ffffffffffffffffffffffffffffffffffffffff16331480611cf6575060035473ffffffffffffffffffffffffffffffffffffffff1633145b611d5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e6f742061646d696e2f6f70657261746f720000000000000000000000000000604482015260640161081b565b73ffffffffffffffffffffffffffffffffffffffff8116611dd9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f43616e6e6f74206265207a65726f206164647265737300000000000000000000604482015260640161081b565b600280547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040517f137b621413925496477d46e5055ac0d56178bdd724ba8bf843afceef18268ba390600090a250565b611e58613964565b6108b760006139e5565b611e6a613691565b60045473ffffffffffffffffffffffffffffffffffffffff163314611eeb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74206b656570657200000000000000000000000000000000000000000000604482015260640161081b565b600254610100900460ff168015611f04575060025460ff165b611fb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f43616e206f6e6c792072756e2061667465722067656e6573697353746172745260448201527f6f756e6420616e642067656e657369734c6f636b526f756e642069732074726960648201527f6767657265640000000000000000000000000000000000000000000000000000608482015260a40161081b565b69ffffffffffffffffffff8216600b819055600a54611fd59183613a5a565b611ffa6001600a54611fe79190614a1c565b8369ffffffffffffffffffff1683613cb3565b6120116001600a5461200c9190614a1c565b613f20565b600a5461201f90600161498e565b600a819055610cad906140d1565b60025462010000900473ffffffffffffffffffffffffffffffffffffffff16331480612070575060035473ffffffffffffffffffffffffffffffffffffffff1633145b6120d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e6f742061646d696e2f6f70657261746f720000000000000000000000000000604482015260640161081b565b73ffffffffffffffffffffffffffffffffffffffff8116612153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f43616e6e6f74206265207a65726f206164647265737300000000000000000000604482015260640161081b565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f08e852e92293423835a76ae180bcdffded8a537e30eccf6ffeda77be7297cc4390600090a250565b6121ca6137e5565b60025462010000900473ffffffffffffffffffffffffffffffffffffffff1633148061220d575060035473ffffffffffffffffffffffffffffffffffffffff1633145b612273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e6f742061646d696e2f6f70657261746f720000000000000000000000000000604482015260640161081b565b6103e88111156122df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f54726561737572792066656520746f6f20686967680000000000000000000000604482015260640161081b565b6008819055600a546040518281527fb1c4ee38d35556741133da7ff9b6f7ab0fa88d0406133126ff128f635490a85790602001611ca8565b6000828152600d6020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152808220815160608101909252805483929190829060ff166001811115612393577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60018111156123cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b815260018281015460208084019190915260029384015460ff908116151560409485015260008a8152600e835284902084516101c08101865281548152938101549284019290925293810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a820154610140820152600b820154610160820152600c820154610180820152600d909101549091161580156101a0830181905292935090916124ac57508160400151155b80156124c8575060055481606001516124c5919061498e565b42115b80156124d75750602082015115155b925050505b92915050565b6124ea613691565b60025462010000900473ffffffffffffffffffffffffffffffffffffffff1633148061252d575060035473ffffffffffffffffffffffffffffffffffffffff1633145b8061254f575060045473ffffffffffffffffffffffffffffffffffffffff1633145b6125b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4e6f742061646d696e2f6f70657261746f722f6b656570657200000000000000604482015260640161081b565b6125bd6142d2565b600a546040517f68b095021b1f40fe513109f513c66692f0b3219aee674a69f4efc57badb8201d90600090a2565b6125f36137e5565b60025462010000900473ffffffffffffffffffffffffffffffffffffffff16331480612636575060035473ffffffffffffffffffffffffffffffffffffffff1633145b61269c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e6f742061646d696e2f6f70657261746f720000000000000000000000000000604482015260640161081b565b80821061272b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f6275666665725365636f6e6473206d75737420626520696e666572696f72207460448201527f6f20696e74657276616c5365636f6e6473000000000000000000000000000000606482015260840161081b565b6005829055600681905560408051838152602081018390527fe60149e0431fec12df63dfab5fce2a9cefe9a4d3df5f41cb626f579ae1f2b91a910160405180910390a15050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600f6020526040812054606091829184906127aa908790614a1c565b8111156127e55773ffffffffffffffffffffffffffffffffffffffff87166000908152600f60205260409020546127e2908790614a1c565b90505b60008167ffffffffffffffff811115612827577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612850578160200160208202803683370190505b50905060008267ffffffffffffffff811115612895577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156128fe57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816128b35790505b50905060005b83811015612b345773ffffffffffffffffffffffffffffffffffffffff8a166000908152600f6020526040902061293b828b61498e565b81548110612972577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001548382815181106129b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001018181525050600d60008483815181106129ff577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020908102919091018101518252818101929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff8e168252909252908190208151606081019092528054829060ff166001811115612a86577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6001811115612abe577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b81526001820154602082015260029091015460ff1615156040909101528251839083908110612b16577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101819052508080612b2c90614a5f565b915050612904565b508181612b41858b61498e565b95509550955050505093509350939050565b6000828152600d6020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152808220815160608101909252805483929190829060ff166001811115612bcf577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6001811115612c07577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b815260018281015460208084019190915260029384015460ff908116151560409485015260008a8152600e835284902084516101c081018652815481529381015492840192909252938101549282019290925260038201546060820152600482015460808201819052600583015460a08301819052600684015460c0840152600784015460e084015260088401546101008401526009840154610120840152600a840154610140840152600b840154610160840152600c840154610180840152600d9093015490931615156101a08201529293501415612cec576000925050506124dc565b806101a001518015612d015750602082015115155b8015612d0f57508160400151155b80156124d7575080608001518160a00151138015612d665750600082516001811115612d64577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b145b806124d7575080608001518160a001511280156124d75750600182516001811115612dba577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1495945050505050565b612dcc613691565b60045473ffffffffffffffffffffffffffffffffffffffff163314612e4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74206b656570657200000000000000000000000000000000000000000000604482015260640161081b565b600254610100900460ff16612ee4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f43616e206f6e6c792072756e2061667465722067656e6573697353746172745260448201527f6f756e6420697320747269676765726564000000000000000000000000000000606482015260840161081b565b60025460ff1615612f77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f43616e206f6e6c792072756e2067656e657369734c6f636b526f756e64206f6e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161081b565b69ffffffffffffffffffff8216600b819055600a54612f969183613a5a565b600a54612fa490600161498e565b600a819055612fb2906138e6565b5050600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60025462010000900473ffffffffffffffffffffffffffffffffffffffff16331480613024575060035473ffffffffffffffffffffffffffffffffffffffff1633145b61308a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e6f742061646d696e2f6f70657261746f720000000000000000000000000000604482015260640161081b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f43616e6e6f742062652070726564696374696f6e20746f6b656e20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161081b565b61318773ffffffffffffffffffffffffffffffffffffffff831633836135b8565b8173ffffffffffffffffffffffffffffffffffffffff167f14f11966a996e0629572e51064726d2057a80fbd34efc066682c06a71dbb6e98826040516131cf91815260200190565b60405180910390a25050565b60025462010000900473ffffffffffffffffffffffffffffffffffffffff1633148061321e575060035473ffffffffffffffffffffffffffffffffffffffff1633145b613284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e6f742061646d696e2f6f70657261746f720000000000000000000000000000604482015260640161081b565b73ffffffffffffffffffffffffffffffffffffffff8116613301576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f43616e6e6f74206265207a65726f206164647265737300000000000000000000604482015260640161081b565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fc47d127c07bdd56c5ccba00463ce3bd3c1bca71b4670eea6e5d0c02e4aa156e290600090a250565b6133786137e5565b60025462010000900473ffffffffffffffffffffffffffffffffffffffff163314806133bb575060035473ffffffffffffffffffffffffffffffffffffffff1633145b613421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e6f742061646d696e2f6f70657261746f720000000000000000000000000000604482015260640161081b565b600c8190556040518181527f93ccaceac092ffb842c46b8718667a13a80e9058dcd0bd403d0b47215b30da079060200160405180910390a150565b600f602052816000526040600020818154811061347857600080fd5b90600052602060002001600091509150505481565b613495613964565b73ffffffffffffffffffffffffffffffffffffffff8116613538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161081b565b613541816139e5565b50565b600260015414156135b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161081b565b6002600155565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905261368c9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152614341565b505050565b60005474010000000000000000000000000000000000000000900460ff16156108b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161081b565b6000818152600e60205260408120600101541580159061374657506000828152600e602052604090206002015415155b801561376257506000828152600e602052604090206001015442115b80156124dc5750506000908152600e6020526040902060020154421090565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526137df9085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161360a565b50505050565b60005474010000000000000000000000000000000000000000900460ff166108b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015260640161081b565b6138716137e5565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6000818152600e6020526040902042600182018190556006546139089161498e565b60028083019190915560065461391d916149df565b613927904261498e565b600382015581815560006008820181905560405183917f939f42374aa9bf1d8d8cd56d8a9110cb040cd8dfeae44080c6fcf2645e51b45291a25050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081b565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000838152600e6020526040902060010154613af8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f43616e206f6e6c79206c6f636b20726f756e6420616674657220726f756e642060448201527f6861732073746172746564000000000000000000000000000000000000000000606482015260840161081b565b6000838152600e6020526040902060020154421015613b99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f43616e206f6e6c79206c6f636b20726f756e64206166746572206c6f636b546960448201527f6d657374616d7000000000000000000000000000000000000000000000000000606482015260840161081b565b6005546000848152600e6020526040902060020154613bb8919061498e565b421115613c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f43616e206f6e6c79206c6f636b20726f756e642077697468696e20627566666560448201527f725365636f6e6473000000000000000000000000000000000000000000000000606482015260840161081b565b6000838152600e60205260409020600654613c62904261498e565b60038201556004810182905560068101839055604051828152839085907f482e76a65b448a42deef26e99e58fb20c85e26f075defff8df6aa80459b39006906020015b60405180910390a350505050565b6000838152600e6020526040902060020154613d51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f43616e206f6e6c7920656e6420726f756e6420616674657220726f756e64206860448201527f6173206c6f636b65640000000000000000000000000000000000000000000000606482015260840161081b565b6000838152600e6020526040902060030154421015613df2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f43616e206f6e6c7920656e6420726f756e6420616674657220636c6f7365546960448201527f6d657374616d7000000000000000000000000000000000000000000000000000606482015260840161081b565b6005546000848152600e6020526040902060030154613e11919061498e565b421115613ea0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f43616e206f6e6c7920656e6420726f756e642077697468696e2062756666657260448201527f5365636f6e647300000000000000000000000000000000000000000000000000606482015260840161081b565b6000838152600e6020526040908190206005810183905560078101849055600d810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790559051839085907fb6ff1fe915db84788cbbbc017f0d2bef9485fad9fd0bd8ce9340fde0d8410dd890613ca59086815260200190565b6000818152600e60205260409020600b0154158015613f4e57506000818152600e60205260409020600c0154155b613fb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f526577617264732063616c63756c617465640000000000000000000000000000604482015260640161081b565b6000818152600e602052604081206004810154600582015491929182918291131561402a576009840154925082613ff15783600801549150614013565b612710600854856008015461400691906149df565b61401091906149a6565b91505b8184600801546140239190614a1c565b905061405f565b83600401548460050154121561405257600a840154925082613ff15783600801549150614013565b5050506008810154600090815b600b8401839055600c84018190556009805483919060009061408290849061498e565b9091555050604080518481526020810183905290810183905285907f6dfdfcb09c8804d0058826cd2539f1acfbe3cb887c9be03d928035bce0f1a58d9060600160405180910390a25050505050565b600254610100900460ff16614168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f43616e206f6e6c792072756e2061667465722067656e6573697353746172745260448201527f6f756e6420697320747269676765726564000000000000000000000000000000606482015260840161081b565b600e6000614177600284614a1c565b81526020019081526020016000206003015460001415614219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f43616e206f6e6c7920737461727420726f756e6420616674657220726f756e6460448201527f206e2d322068617320656e646564000000000000000000000000000000000000606482015260840161081b565b600e6000614228600284614a1c565b8152602001908152602001600020600301544210156142c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f43616e206f6e6c79207374617274206e657720726f756e64206166746572207260448201527f6f756e64206e2d3220636c6f736554696d657374616d70000000000000000000606482015260840161081b565b613541816138e6565b6142da613691565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586138bc3390565b60006143a3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166144509092919063ffffffff16565b90508051600014806143c45750808060200190518101906143c49190614771565b61368c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161081b565b606061445f8484600085614467565b949350505050565b6060824710156144f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161081b565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051614522919061485b565b60006040518083038185875af1925050503d806000811461455f576040519150601f19603f3d011682016040523d82523d6000602084013e614564565b606091505b509150915061457587838387614580565b979650505050505050565b6060831561461357825161460c5773ffffffffffffffffffffffffffffffffffffffff85163b61460c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161081b565b508161445f565b61445f83838151156146285781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081b919061493d565b803573ffffffffffffffffffffffffffffffffffffffff8116811461468057600080fd5b919050565b600060208284031215614696578081fd5b61469f8261465c565b9392505050565b600080604083850312156146b8578081fd5b6146c18361465c565b946020939093013593505050565b6000806000606084860312156146e3578081fd5b6146ec8461465c565b95602085013595506040909401359392505050565b60008060208385031215614713578182fd5b823567ffffffffffffffff8082111561472a578384fd5b818501915085601f83011261473d578384fd5b81358181111561474b578485fd5b8660208260051b850101111561475f578485fd5b60209290920196919550909350505050565b600060208284031215614782578081fd5b8151801515811461469f578182fd5b6000602082840312156147a2578081fd5b5035919050565b600080604083850312156147bb578182fd5b823591506147cb6020840161465c565b90509250929050565b600080604083850312156147e6578182fd5b50508035926020909101359150565b60008060408385031215614807578182fd5b823569ffffffffffffffffffff811681146146c1578283fd5b60028110614857577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b6000825161486d818460208701614a33565b9190910192915050565b60608082528451828201819052600091906020906080850190828901855b828110156148b157815184529284019290840190600101614895565b50505084810382860152865180825287830191830190855b818110156149025783516148de848251614820565b808601518487015260409081015115159084015292840192918501916001016148c9565b505080945050505050826040830152949350505050565b606081016149278286614820565b8360208301528215156040830152949350505050565b602081526000825180602084015261495c816040850160208701614a33565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600082198211156149a1576149a1614a98565b500190565b6000826149da577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a1757614a17614a98565b500290565b600082821015614a2e57614a2e614a98565b500390565b60005b83811015614a4e578181015183820152602001614a36565b838111156137df5750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614a9157614a91614a98565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220f2c8827db34e9f627749c069a7c8b2a21e8d3c585c7511e30f579006efca7c1464736f6c634300080400330000000000000000000000002f2a2543b76a4166549f7aab2e75bef0aefc5b0f000000000000000000000000a4c0028748d8f534e6d7bab20d9b696f750f114d000000000000000000000000a4c0028748d8f534e6d7bab20d9b696f750f114d0000000000000000000000009e7fbd2d1cf3963a924df1266187c066288d08ea000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000038d7ea4c68000000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000000012c