0 txs
2.3k calls
constructor
constructor()
functions
accRPT
viewfunction accRPT() view returns (uint256)
activeStakedTokenBalance
viewfunction activeStakedTokenBalance() view returns (uint256)
getPendingRewards
viewfunction getPendingRewards(address _staker) view returns (uint256 _reward)
getStakeInfo
viewfunction getStakeInfo(address _staker) view returns (uint256 _stakedAmount, uint256 _withdrawalsCount, uint256 _pendingWithdrawalAmount, uint256 _completedWithdrawalAmount)
getStaker
viewfunction getStaker(address _staker) view returns (tuple)
getWithdrawals
viewfunction getWithdrawals(address _staker) view returns (tuple[])
lastInteractionFor
viewfunction lastInteractionFor(address) view returns (uint256)
lastRPTFor
viewfunction lastRPTFor(address) view returns (uint256)
main
viewfunction main() view returns (address)
minStake
viewfunction minStake() view returns (uint256)
owner
viewfunction owner() view returns (address)
pendingRewardFor
viewfunction pendingRewardFor(address) view returns (uint256)
periodPoolReward
viewfunction periodPoolReward() view returns (uint256)
poolReward
viewfunction poolReward() view returns (uint256)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
realtimeAccRPT
viewfunction realtimeAccRPT() view returns (uint256)
rewardDebtFor
viewfunction rewardDebtFor(address) view returns (uint256)
stakedTokenBalance
viewfunction stakedTokenBalance() view returns (uint256)
stakers
viewfunction stakers(address) view returns (uint256 stakedAmount)
timeConfig
viewfunction timeConfig() view returns (uint32 cooldown, uint32 periodDuration, uint64 periodStartTime, uint64 lastRPTUpdate)
token
viewfunction token() view returns (address)
cancelUnstake
nonpayablefunction cancelUnstake(uint256 _requestId, address _staker)
claimRewards
nonpayablefunction claimRewards(address _staker)
initialize
nonpayablefunction initialize(address _token, uint32 _cooldown, uint256 _minStake, address _main)
refillRewardPool
nonpayablefunction refillRewardPool(uint256 amount, uint32 period, address admin)
renounceOwnership
nonpayablefunction renounceOwnership()
requestUnstake
nonpayablefunction requestUnstake(uint256 _amount, uint256 delay, address _staker)
setCooldown
nonpayablefunction setCooldown(uint32 _cooldown)
setMain
nonpayablefunction setMain(address _main)
setMinStake
nonpayablefunction setMinStake(uint256 _minStake)
setStakers
nonpayablefunction setStakers(address[] _Mstakers, uint256[] _MstakedAmounts, tuple[][] _Mwithdrawals)
stake
nonpayablefunction stake(uint256 _amount, address _staker)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unstake
nonpayablefunction unstake(uint256 _requestId, address _staker)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdraw
nonpayablefunction withdraw(address _beneficiary)
withdrawToken
nonpayablefunction withdrawToken(address _beneficiary, address _token)
events
AccAccRPTUpdated
event AccAccRPTUpdated(uint256 newRPT, uint256 timestamp)
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
CooldownSet
event CooldownSet(uint256 _cooldown)
Initialized
event Initialized(uint8 version)
MainSet
event MainSet(address _main)
MinStakeSet
event MinStakeSet(uint256 _minStake)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RewardPoolRefilled
event RewardPoolRefilled(uint256 amount)
RewardsClaimed
event RewardsClaimed(address indexed staker, uint256 rewardAmount)
TokensStaked
event TokensStaked(address indexed staker, uint256 amount)
TokensUnstaked
event TokensUnstaked(address indexed staker, uint256 amount)
TokensUnstakeRequested
event TokensUnstakeRequested(address indexed staker, uint256 amount, uint256 requestId)
UpdatedWaitingPeriod
event UpdatedWaitingPeriod(uint256 oldWaitingPeriod, uint256 newWaitingPeriod)
Upgraded
event Upgraded(address indexed implementation)
WithdrawalCancelled
event WithdrawalCancelled(address indexed staker, uint256 amount, uint256 requestId)
errors
CooldownPeriodActive
error CooldownPeriodActive()
FailedToWithdrawEth
error FailedToWithdrawEth(address owner, address target, uint256 value)
InvalidAmount
error InvalidAmount()
InvalidPeriod
error InvalidPeriod()
NothingToWithdraw
error NothingToWithdraw()
UnauthorizedAccess
error UnauthorizedAccess()
creation bytecode
0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516136796200012d60003960008181610ae501528181610b2501528181610d9501528181610dd50152818161104b0152818161108b01526111be01526136796000f3fe6080604052600436106102295760003560e01c80638c80fd9011610123578063cbb93606116100ab578063f6ed20171161006f578063f6ed2017146106e7578063f8718c5a14610707578063fa86112b14610727578063fc0c546a14610754578063fef10b951461077457600080fd5b8063cbb936061461062d578063dffeadd01461065a578063e052b83e1461067a578063ef5cfb8c146106a7578063f2fde38b146106c757600080fd5b8063a23c44b1116100f2578063a23c44b114610553578063a4ab833814610580578063bb673386146105a0578063bdbc37e9146105c0578063c3453153146105ed57600080fd5b80638c80fd90146104bf5780638da5cb5b146104df5780638f9fdf0d146105115780639168ae721461052657600080fd5b806351cff8d9116101b15780637de9b72a116101755780637de9b72a146103cc578063801161b0146103e25780638381e1821461040257806389bcede11461042257806389bfe5491461044257600080fd5b806351cff8d91461034c57806352d1902d1461036c578063715018a6146103815780637acb7757146103965780637cd9c1f0146103b657600080fd5b80633659cfe6116101f85780633659cfe6146102b6578063375b3c0a146102d65780633a2b643a146102ec5780633aeac4e1146103195780634f1ef2861461033957600080fd5b80631b5b5705146102355780631e75ec0a1461025e578063292512d4146102805780632fbb3c8f1461029657600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024b60cd5481565b6040519081526020015b60405180910390f35b34801561026a57600080fd5b5061027e610279366004612f41565b61078a565b005b34801561028c57600080fd5b5061024b60d05481565b3480156102a257600080fd5b5061027e6102b136600461303f565b610adb565b3480156102c257600080fd5b5061027e6102d1366004613090565b610d8b565b3480156102e257600080fd5b5061024b60cb5481565b3480156102f857600080fd5b5061030c610307366004613090565b610e53565b60405161025591906130b4565b34801561032557600080fd5b5061027e61033436600461311c565b610ef2565b61027e610347366004613155565b611041565b34801561035857600080fd5b5061027e610367366004613090565b6110fa565b34801561037857600080fd5b5061024b6111b1565b34801561038d57600080fd5b5061027e611264565b3480156103a257600080fd5b5061027e6103b13660046131fc565b611278565b3480156103c257600080fd5b5061024b60d15481565b3480156103d857600080fd5b5061024b60cc5481565b3480156103ee57600080fd5b5061027e6103fd366004613090565b611467565b34801561040e57600080fd5b5061027e61041d3660046131fc565b611515565b34801561042e57600080fd5b5061027e61043d366004613221565b61171a565b34801561044e57600080fd5b5060c9546104889063ffffffff808216916401000000008104909116906001600160401b03600160401b8204811691600160801b90041684565b6040805163ffffffff95861681529490931660208501526001600160401b0391821692840192909252166060820152608001610255565b3480156104cb57600080fd5b5061027e6104da366004613261565b611902565b3480156104eb57600080fd5b506033546001600160a01b03165b6040516001600160a01b039091168152602001610255565b34801561051d57600080fd5b5061024b611961565b34801561053257600080fd5b5061024b610541366004613090565b60d66020526000908152604090205481565b34801561055f57600080fd5b5061057361056e366004613090565b611abf565b604051610255919061327a565b34801561058c57600080fd5b5061027e61059b3660046132eb565b611b86565b3480156105ac57600080fd5b5061027e6105bb3660046131fc565b611e0b565b3480156105cc57600080fd5b5061024b6105db366004613090565b60d26020526000908152604090205481565b3480156105f957600080fd5b5061060d610608366004613090565b61204f565b604080519485526020850193909352918301526060820152608001610255565b34801561063957600080fd5b5061024b610648366004613090565b60d56020526000908152604090205481565b34801561066657600080fd5b5060ce546104f9906001600160a01b031681565b34801561068657600080fd5b5061024b610695366004613090565b60d36020526000908152604090205481565b3480156106b357600080fd5b5061027e6106c2366004613090565b61219c565b3480156106d357600080fd5b5061027e6106e2366004613090565b61228f565b3480156106f357600080fd5b5061024b610702366004613090565b612305565b34801561071357600080fd5b5061027e610722366004613319565b6123bf565b34801561073357600080fd5b5061024b610742366004613090565b60d46020526000908152604090205481565b34801561076057600080fd5b5060ca546104f9906001600160a01b031681565b34801561078057600080fd5b5061024b60cf5481565b610792612431565b81518351146107ff5760405162461bcd60e51b815260206004820152602e60248201527f545374616b653a204d69736d6174636820696e207374616b65727320616e642060448201526d7374616b656420616d6f756e747360901b60648201526084015b60405180910390fd5b80518351146108645760405162461bcd60e51b815260206004820152602b60248201527f545374616b653a204d69736d6174636820696e207374616b65727320616e642060448201526a7769746864726177616c7360a81b60648201526084016107f6565b60008060005b8551811015610aa357600086828151811061088757610887613334565b6020026020010151905060008683815181106108a5576108a5613334565b6020026020010151905060008684815181106108c3576108c3613334565b6020026020010151905060006001600160a01b0316836001600160a01b03160361092f5760405162461bcd60e51b815260206004820152601e60248201527f545374616b653a20496e76616c6964207374616b65722061646472657373000060448201526064016107f6565b6001600160a01b038316600090815260d6602052604090208290556109548287613360565b95506109608286613360565b9450826001600160a01b03167fb539ca1e5c8d398ddf1c41c30166f33404941683be4683319b57669a93dad4ef8360405161099d91815260200190565b60405180910390a260005b8151811015610a8c5760008282815181106109c5576109c5613334565b6020908102919091018101516001600160a01b038716600090815260d6835260408082208151608081018352600191820180548083528688015183890190815285880151958401958652606080890180511515918601918252838701855593885298909620925160049091029092019182559351918101919091559051600282015592516003909301805460ff1916931515939093179092559051909150610a79576040810151610a769089613360565b97505b5080610a8481613373565b9150506109a8565b505050508080610a9b90613373565b91505061086a565b508160cc6000828254610ab69190613360565b925050819055508060cd6000828254610acf9190613360565b90915550505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610b235760405162461bcd60e51b81526004016107f69061338c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b5561248b565b6001600160a01b031614610b7b5760405162461bcd60e51b81526004016107f6906133d8565b600054610100900460ff1615808015610b9b5750600054600160ff909116105b80610bb55750303b158015610bb5575060005460ff166001145b610c185760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107f6565b6000805460ff191660011790558015610c3b576000805461ff0019166101001790555b610c436124a7565b610c4b6124d6565b6001600160a01b038516610ca15760405162461bcd60e51b815260206004820152601960248201527f545374616b653a20746f6b656e2063616e6e6f7420626520300000000000000060448201526064016107f6565b6001600160a01b038216610cf25760405162461bcd60e51b81526020600482015260186024820152770545374616b653a206d61696e2063616e6e6f7420626520360441b60448201526064016107f6565b60ca80546001600160a01b038088166001600160a01b03199283161790925560c9805463ffffffff881663ffffffff1990911617905560cb85905560ce8054928516929091169190911790558015610d84576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610dd35760405162461bcd60e51b81526004016107f69061338c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e0561248b565b6001600160a01b031614610e2b5760405162461bcd60e51b81526004016107f6906133d8565b610e34816124fd565b60408051600080825260208201909252610e5091839190612505565b50565b6001600160a01b038116600090815260d660209081526040808320600101805482518185028101850190935280835260609492939192909184015b82821015610ee7576000848152602090819020604080516080810182526004860290920180548352600180820154848601526002820154928401929092526003015460ff16151560608301529083529092019101610e8e565b505050509050919050565b610efa612431565b60ca546000906001600160a01b0390811690831603610f9c5760cf5460cc546040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015610f5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f819190613424565b610f8b919061343d565b610f95919061343d565b9050611007565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610fe0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110049190613424565b90505b8060000361102857604051630686827b60e51b815260040160405180910390fd5b61103c6001600160a01b0383168483612670565b505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036110895760405162461bcd60e51b81526004016107f69061338c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166110bb61248b565b6001600160a01b0316146110e15760405162461bcd60e51b81526004016107f6906133d8565b6110ea826124fd565b6110f682826001612505565b5050565b611102612431565b47600081900361112557604051630686827b60e51b815260040160405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611172576040519150601f19603f3d011682016040523d82523d6000602084013e611177565b606091505b505090508061103c57604051639d11f56360e01b81523360048201526001600160a01b0384166024820152604481018390526064016107f6565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112515760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016107f6565b506000805160206135fd83398151915290565b61126c612431565b61127660006126d3565b565b60ce546001600160a01b031633146112a25760405162461bcd60e51b81526004016107f690613450565b60c9546001600160a01b038216600090815260d460205260409020546112ce9163ffffffff1690613360565b4210156112ee5760405163998d019b60e01b815260040160405180910390fd5b6001600160a01b0381166113145760405162461bcd60e51b81526004016107f690613475565b60cb548210156113375760405163162908e360e11b815260040160405180910390fd5b61133f612725565b6001600160a01b038116600090815260d6602052604081208054849290611367908490613360565b925050819055508160cc60008282546113809190613360565b925050819055508160cd60008282546113999190613360565b90915550506001600160a01b038116600090815260d5602052604090205460d154670de0b6b3a7640000916113cd9161343d565b6113d790846134a1565b6113e191906134b8565b6001600160a01b038216600090815260d2602052604081208054909190611409908490613360565b90915550506001600160a01b038116600081815260d4602052604090819020429055517fb539ca1e5c8d398ddf1c41c30166f33404941683be4683319b57669a93dad4ef9061145b9085815260200190565b60405180910390a25050565b61146f612431565b6001600160a01b0381166114c05760405162461bcd60e51b81526020600482015260186024820152770545374616b653a206d61696e2063616e6e6f7420626520360441b60448201526064016107f6565b60ce80546001600160a01b0319166001600160a01b0383169081179091556040519081527fce2a95399de015bbfc63256cba86786b0b37a1f4637af4076398ec7219bbbef6906020015b60405180910390a150565b60ce546001600160a01b0316331461153f5760405162461bcd60e51b81526004016107f690613450565b6001600160a01b0381166115655760405162461bcd60e51b81526004016107f690613475565b6001600160a01b038116600090815260d660205260409020600101805483106115c45760405162461bcd60e51b8152602060048201526011602482015270125b9d985b1a59081c995c5d595cdd1259607a1b60448201526064016107f6565b6001600160a01b038216600090815260d6602052604081206001018054859081106115f1576115f1613334565b60009182526020909120600490910201600381015490915060ff16156116455760405162461bcd60e51b81526020600482015260096024820152682bb4ba34323930bbb760b91b60448201526064016107f6565b806001015442101561168a5760405162461bcd60e51b815260206004820152600e60248201526d15d85a5d1a5b99c81c195c9a5bd960921b60448201526064016107f6565b6000816002015490508060cc60008282546116a5919061343d565b909155505060038201805460ff1916600117905560ca546116d0906001600160a01b03168583612670565b836001600160a01b03167f9845e367b683334e5c0b12d7b81721ac518e649376fa65e3d68324e8f34f26798260405161170b91815260200190565b60405180910390a25050505050565b60ce546001600160a01b031633146117445760405162461bcd60e51b81526004016107f690613450565b826000036117655760405163162908e360e11b815260040160405180910390fd5b8163ffffffff1660000361178c576040516302e8f35960e31b815260040160405180910390fd5b60c9546117b790640100000000810463ffffffff1690600160401b90046001600160401b03166134da565b6001600160401b0316421080156117df575060c954600160401b90046001600160401b031615155b156117fd576040516302e8f35960e31b815260040160405180910390fd5b60c954640100000000900463ffffffff1660000361183b5760c9805467ffffffffffffffff60801b1916600160801b426001600160401b0316021790555b8260cf600082825461184d9190613360565b909155505060d083905561185f612725565b60c980546fffffffffffffffffffffffff000000001916600160401b426001600160401b03160267ffffffff0000000019161764010000000063ffffffff858116919091029190911790915560ca546118ca916001600160a01b039091169083903090879061289916565b6040518381527f15b25a836dabc3b6d94fcda160691deac33c1d07ab4ea4c801dceeda7d66b2ae9060200160405180910390a1505050565b60ce546001600160a01b0316331461192c5760405162461bcd60e51b81526004016107f690613450565b60cb8190556040518181527fa70bd512f7108f78a924d05836f49963c6d8583e3d39f5b6412eb5be70e8432a9060200161150a565b60c9546000904290829061199390640100000000810463ffffffff1690600160401b90046001600160401b03166134da565b9050806001600160401b03166000036119af5760009250505090565b60c9546001600160401b03808316600160801b9092041611156119d65760d1549250505090565b600060cd546000146119ea5760cd546119ed565b60015b90506000826001600160401b0316846001600160401b031611611a2c5760c954611a2790600160801b90046001600160401b031685613501565b611a49565b60c954611a4990600160801b90046001600160401b031684613501565b6001600160401b03169050600060c960000160049054906101000a900463ffffffff1663ffffffff168260d054611a8091906134a1565b611a9290670de0b6b3a76400006134a1565b611a9c91906134b8565b9050611aa883826134b8565b60d154611ab59190613360565b9550505050505090565b6040805180820190915260008152606060208201526001600160a01b038216600090815260d66020908152604080832081518083018352815481526001820180548451818702810187019095528085529195929486810194939192919084015b82821015611b78576000848152602090819020604080516080810182526004860290920180548352600180820154848601526002820154928401929092526003015460ff16151560608301529083529092019101611b1f565b505050915250909392505050565b60ce546001600160a01b03163314611bb05760405162461bcd60e51b81526004016107f690613450565b6001600160a01b038116611bd65760405162461bcd60e51b81526004016107f690613475565b82600003611bf75760405163162908e360e11b815260040160405180910390fd5b6001600160a01b038116600090815260d6602052604090205483811015611c315760405163162908e360e11b815260040160405180910390fd5b611c39612725565b60d1546001600160a01b038316600090815260d56020526040812054611c5f908361343d565b9050670de0b6b3a7640000611c7482856134a1565b611c7e91906134b8565b6001600160a01b038516600090815260d3602052604081208054909190611ca6908490613360565b90915550506001600160a01b038416600090815260d6602052604081208054889290611cd390849061343d565b925050819055508560cd6000828254611cec919061343d565b90915550506001600160a01b038416600090815260d66020908152604091829020825160808101909352600101805483529182918101611d2c8942613360565b815260208082018b90526000604092830181905284546001808201875595825290829020845160049092020190815590830151938101939093558101516002830155606001516003909101805460ff1916911515919091179055611d8e611961565b6001600160a01b038616600081815260d5602090815260408083209490945560d490529190912042905581547fc47ad1c970f9b63b419592d16703ec809ff560670689f2904665ca378def1dbf908990611dea9060019061343d565b6040805192835260208301919091520160405180910390a250505050505050565b60ce546001600160a01b03163314611e355760405162461bcd60e51b81526004016107f690613450565b6001600160a01b038116611e5b5760405162461bcd60e51b81526004016107f690613475565b6001600160a01b038116600090815260d66020526040902060010180548310611ebe5760405162461bcd60e51b8152602060048201526015602482015274125b9d985b1a59081dda5d1a191c985dd85b081251605a1b60448201526064016107f6565b6000818481548110611ed257611ed2613334565b60009182526020909120600490910201600381015490915060ff1615611f265760405162461bcd60e51b81526020600482015260096024820152682bb4ba34323930bbb760b91b60448201526064016107f6565b60038101805460ff191660011790556002810154611f42612725565b6001600160a01b038416600090815260d6602052604081208054839290611f6a908490613360565b925050819055508060cd6000828254611f839190613360565b90915550506001600160a01b038416600090815260d5602052604090205460d154670de0b6b3a764000091611fb79161343d565b611fc190836134a1565b611fcb91906134b8565b6001600160a01b038516600090815260d2602052604081208054909190611ff3908490613360565b90915550506001600160a01b038416600081815260d46020908152604091829020429055600285015482519081529081018890527f609802616efe88a6b73a266ced98c5dfd07c25e64549e620527605107ea30e81910161170b565b6001600160a01b038116600090815260d6602052604081208054600190910154909180805b6001600160a01b038616600090815260d66020526040902060010154811015612194576001600160a01b038616600090815260d6602052604090206001018054829081106120c4576120c4613334565b600091825260209091206003600490920201015460ff161515600103612135576001600160a01b038616600090815260d66020526040902060010180548290811061211157612111613334565b9060005260206000209060040201600201548261212e9190613360565b9150612182565b6001600160a01b038616600090815260d66020526040902060010180548290811061216257612162613334565b9060005260206000209060040201600201548361217f9190613360565b92505b8061218c81613373565b915050612074565b509193509193565b60ce546001600160a01b031633146121c65760405162461bcd60e51b81526004016107f690613450565b60006121d0611961565b905060006121dd83612305565b9050806000036121ec57505050565b60ca54612203906001600160a01b03168483612670565b6001600160a01b038316600090815260d26020908152604080832083905560d3825280832083905560d5909152812083905560cf805483929061224790849061343d565b90915550506040518181526001600160a01b038416907ffc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe9060200160405180910390a2505050565b612297612431565b6001600160a01b0381166122fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107f6565b610e50816126d3565b6001600160a01b038116600090815260d6602052604081205481612327611961565b6001600160a01b038516600090815260d56020526040902054909150670de0b6b3a764000090612357908361343d565b61236190846134a1565b61236b91906134b8565b6001600160a01b038516600090815260d360205260409020549093506123919084613360565b6001600160a01b038516600090815260d260205260409020549093506123b7908461343d565b949350505050565b60ce546001600160a01b031633146123e95760405162461bcd60e51b81526004016107f690613450565b60c9805463ffffffff191663ffffffff83169081179091556040519081527ff4f81c8df394c367119ef9185e49924fbc14f33668d8c0fe5a767cc822858ae29060200161150a565b6033546001600160a01b031633146112765760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f6565b6000805160206135fd833981519152546001600160a01b031690565b600054610100900460ff166124ce5760405162461bcd60e51b81526004016107f690613521565b6112766128d7565b600054610100900460ff166112765760405162461bcd60e51b81526004016107f690613521565b610e50612431565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156125385761103c83612907565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612592575060408051601f3d908101601f1916820190925261258f91810190613424565b60015b6125f55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016107f6565b6000805160206135fd83398151915281146126645760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016107f6565b5061103c8383836129a3565b6040516001600160a01b03831660248201526044810182905261103c90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526129c8565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60c954429060009061275590640100000000810463ffffffff1690600160401b90046001600160401b03166134da565b90506001600160401b0381161580612781575060c9546001600160401b03808316600160801b90920416115b8061278c575060cd54155b15612795575050565b6000816001600160401b0316836001600160401b0316116127d25760c9546127cd90600160801b90046001600160401b031684613501565b6127ef565b60c9546127ef90600160801b90046001600160401b031683613501565b6001600160401b03169050600060c960000160049054906101000a900463ffffffff1663ffffffff168260d05461282691906134a1565b61283890670de0b6b3a76400006134a1565b61284291906134b8565b905060cd548161285291906134b8565b60d160008282546128639190613360565b909155505060c980546001600160401b03909516600160801b0267ffffffffffffffff60801b1990951694909417909355505050565b6040516001600160a01b03808516602483015283166044820152606481018290526128d19085906323b872dd60e01b9060840161269c565b50505050565b600054610100900460ff166128fe5760405162461bcd60e51b81526004016107f690613521565b611276336126d3565b6001600160a01b0381163b6129745760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016107f6565b6000805160206135fd83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6129ac83612a9d565b6000825111806129b95750805b1561103c576128d18383612add565b6000612a1d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612b0b9092919063ffffffff16565b9050805160001480612a3e575080806020019051810190612a3e919061356c565b61103c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107f6565b612aa681612907565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060612b02838360405180606001604052806027815260200161361d60279139612b1a565b90505b92915050565b60606123b78484600085612b92565b6060600080856001600160a01b031685604051612b3791906135ad565b600060405180830381855af49150503d8060008114612b72576040519150601f19603f3d011682016040523d82523d6000602084013e612b77565b606091505b5091509150612b8886838387612c6d565b9695505050505050565b606082471015612bf35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016107f6565b600080866001600160a01b03168587604051612c0f91906135ad565b60006040518083038185875af1925050503d8060008114612c4c576040519150601f19603f3d011682016040523d82523d6000602084013e612c51565b606091505b5091509150612c6287838387612c6d565b979650505050505050565b60608315612cdc578251600003612cd5576001600160a01b0385163b612cd55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107f6565b50816123b7565b6123b78383815115612cf15781518083602001fd5b8060405162461bcd60e51b81526004016107f691906135c9565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715612d4357612d43612d0b565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612d7157612d71612d0b565b604052919050565b60006001600160401b03821115612d9257612d92612d0b565b5060051b60200190565b6001600160a01b0381168114610e5057600080fd5b600082601f830112612dc257600080fd5b81356020612dd7612dd283612d79565b612d49565b82815260059290921b84018101918181019086841115612df657600080fd5b8286015b84811015612e115780358352918301918301612dfa565b509695505050505050565b8015158114610e5057600080fd5b600082601f830112612e3b57600080fd5b81356020612e4b612dd283612d79565b82815260059290921b84018101918181019086841115612e6a57600080fd5b8286015b84811015612e115780356001600160401b03811115612e8d5760008081fd5b8701603f81018913612e9f5760008081fd5b848101356040612eb1612dd283612d79565b82815260079290921b8301810191878101908c841115612ed15760008081fd5b938201935b83851015612f30576080858e031215612eef5760008081fd5b612ef7612d21565b85358152898601358a8201528386013584820152606080870135612f1a81612e1c565b9082015282526080949094019390880190612ed6565b875250505092840192508301612e6e565b600080600060608486031215612f5657600080fd5b83356001600160401b0380821115612f6d57600080fd5b818601915086601f830112612f8157600080fd5b81356020612f91612dd283612d79565b82815260059290921b8401810191818101908a841115612fb057600080fd5b948201945b83861015612fd7578535612fc881612d9c565b82529482019490820190612fb5565b97505087013592505080821115612fed57600080fd5b612ff987838801612db1565b9350604086013591508082111561300f57600080fd5b5061301c86828701612e2a565b9150509250925092565b803563ffffffff8116811461303a57600080fd5b919050565b6000806000806080858703121561305557600080fd5b843561306081612d9c565b935061306e60208601613026565b925060408501359150606085013561308581612d9c565b939692955090935050565b6000602082840312156130a257600080fd5b81356130ad81612d9c565b9392505050565b6020808252825182820181905260009190848201906040850190845b81811015613110578351805184526020808201519085015260408082015190850152606090810151151590840152608083019385019392506001016130d0565b50909695505050505050565b6000806040838503121561312f57600080fd5b823561313a81612d9c565b9150602083013561314a81612d9c565b809150509250929050565b6000806040838503121561316857600080fd5b823561317381612d9c565b91506020838101356001600160401b038082111561319057600080fd5b818601915086601f8301126131a457600080fd5b8135818111156131b6576131b6612d0b565b6131c8601f8201601f19168501612d49565b915080825287848285010111156131de57600080fd5b80848401858401376000848284010152508093505050509250929050565b6000806040838503121561320f57600080fd5b82359150602083013561314a81612d9c565b60008060006060848603121561323657600080fd5b8335925061324660208501613026565b9150604084013561325681612d9c565b809150509250925092565b60006020828403121561327357600080fd5b5035919050565b60208082528251828201528281015160408084015280516060840181905260009291820190839060808601905b80831015612e1157835180518352602080820151908401526040808201519084015260609081015115159083015260808201915084840193506001830192506132a7565b60008060006060848603121561330057600080fd5b8335925060208401359150604084013561325681612d9c565b60006020828403121561332b57600080fd5b612b0282613026565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115612b0557612b0561334a565b6000600182016133855761338561334a565b5060010190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121561343657600080fd5b5051919050565b81810381811115612b0557612b0561334a565b6020808252600b908201526a6e6f74206d61696e20434160a81b604082015260600190565b60208082526012908201527105374616b65722063616e6e6f7420626520360741b604082015260600190565b8082028115828204841417612b0557612b0561334a565b6000826134d557634e487b7160e01b600052601260045260246000fd5b500490565b6001600160401b038181168382160190808211156134fa576134fa61334a565b5092915050565b6001600160401b038281168282160390808211156134fa576134fa61334a565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561357e57600080fd5b81516130ad81612e1c565b60005b838110156135a457818101518382015260200161358c565b50506000910152565b600082516135bf818460208701613589565b9190910192915050565b60208152600082518060208401526135e8816040850160208701613589565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122041581b66c2a066ce0dd8548aca949b7e691d1b4868035e62bd6411898a7b35c164736f6c63430008130033