0 txs
0 calls
constructor
constructor(address _vrswToken, address _minter, address _tokenomicsParams, address _vPairFactory, address _oldStaker)
functions
checkLock
viewfunction checkLock(address who) view returns (uint256[] unlockedPositions)
emissionStartTs
viewfunction emissionStartTs() view returns (uint256)
isPoolValid
viewfunction isPoolValid(address pool) view returns (bool)
LOCK_DURATION_LIMIT
viewfunction LOCK_DURATION_LIMIT() view returns (uint256)
lpStakeIndex
viewfunction lpStakeIndex(address, address) view returns (uint256)
lpStakes
viewfunction lpStakes(address, uint256) view returns (address lpToken, int256 amount)
minter
viewfunction minter() view returns (address)
mu
viewfunction mu(address, address) view returns (int256)
oldStaker
viewfunction oldStaker() view returns (address)
positionMigrationCounter
viewfunction positionMigrationCounter(address) view returns (uint256)
rewards
viewfunction rewards(address, address, address) view returns (int256)
rewardsCoefficient
viewfunction rewardsCoefficient(address, address, address) view returns (int256)
rewardsCoefficientGlobal
viewfunction rewardsCoefficientGlobal(address, address) view returns (int256)
STAKE_POSITIONS_LIMIT
viewfunction STAKE_POSITIONS_LIMIT() view returns (uint256)
tokenomicsParams
viewfunction tokenomicsParams() view returns (address)
totalMu
viewfunction totalMu(address) view returns (int256)
totalRewardTokensAvailable
viewfunction totalRewardTokensAvailable(address, address) view returns (int256)
viewLpStakes
viewfunction viewLpStakes() view returns (tuple[] _lpStakes)
viewRewards
viewfunction viewRewards(address who, address lpToken, address rewardToken) view returns (uint256)
viewVrswStakes
viewfunction viewVrswStakes() view returns (tuple[] _vrswStakes)
vPairFactory
viewfunction vPairFactory() view returns (address)
vrswStakes
viewfunction vrswStakes(address, uint256) view returns (uint128 startTs, uint128 lockDuration, int256 discountFactor, int256 amount)
vrswToken
viewfunction vrswToken() view returns (address)
claimRewards
nonpayablefunction claimRewards(address lpToken)
lockStakedVrsw
nonpayablefunction lockStakedVrsw(uint256 amount, uint128 lockDuration)
lockVrsw
nonpayablefunction lockVrsw(uint256 amount, uint128 lockDuration)
stakeLp
nonpayablefunction stakeLp(address lpToken, uint256 amount)
stakeVrsw
nonpayablefunction stakeVrsw(uint256 amount)
triggerStateUpdateAfter
nonpayablefunction triggerStateUpdateAfter(address[] wallets)
triggerStateUpdateBefore
nonpayablefunction triggerStateUpdateBefore(address[] wallets)
unlockVrsw
nonpayablefunction unlockVrsw(address who, uint256 position)
unstakeLp
nonpayablefunction unstakeLp(address lpToken, uint256 amount)
unstakeVrsw
nonpayablefunction unstakeVrsw(uint256 amount)
events
LockStakedVrsw
event LockStakedVrsw(address indexed who, uint256 amount, uint128 lockDuration, uint128 startTs, uint256 discountFactor)
LockVrsw
event LockVrsw(address indexed who, uint256 amount, uint128 lockDuration, uint128 startTs, uint256 discountFactor)
MuChanged
event MuChanged(address indexed who, address indexed pool, uint256 mu, uint256 totalMu)
StakeLp
event StakeLp(address indexed who, address indexed lpToken, uint256 amount)
StakeVrsw
event StakeVrsw(address indexed who, uint256 amount, uint128 startTs, uint256 discountFactor)
UnlockVrsw
event UnlockVrsw(address indexed who, uint256 amount)
UnstakeLp
event UnstakeLp(address indexed who, address indexed lpToken, uint256 amount)
UnstakeVrsw
event UnstakeVrsw(address indexed who, uint256 amount)
errors
PRBMath__MulDiv18Overflow
error PRBMath__MulDiv18Overflow(uint256 x, uint256 y)
PRBMath__MulDivOverflow
error PRBMath__MulDivOverflow(uint256 x, uint256 y, uint256 denominator)
PRBMathSD59x18__DivInputTooSmall
error PRBMathSD59x18__DivInputTooSmall()
PRBMathSD59x18__DivOverflow
error PRBMathSD59x18__DivOverflow(int256 x, int256 y)
PRBMathSD59x18__Exp2InputTooBig
error PRBMathSD59x18__Exp2InputTooBig(int256 x)
PRBMathSD59x18__ExpInputTooBig
error PRBMathSD59x18__ExpInputTooBig(int256 x)
PRBMathSD59x18__LogInputTooSmall
error PRBMathSD59x18__LogInputTooSmall(int256 x)
PRBMathSD59x18__MulInputTooSmall
error PRBMathSD59x18__MulInputTooSmall()
PRBMathSD59x18__MulOverflow
error PRBMathSD59x18__MulOverflow(int256 x, int256 y)
creation bytecode
0x6101408060405234620002045760a081620055a4803803809162000024828562000209565b8339810103126200020457806200003d60049262000243565b9060206200004d81830162000243565b6200005b6040840162000243565b6200007760806200006f6060870162000243565b950162000243565b61012090815260a083905260c09590955260e05260405163925c3e4760e01b815294859182906001600160a01b03165afa928315620001f857600093620001bc575b506101009283526080526040519061534b92836200025984396080518381816117b901526130ac015260a0518381816106e5015281816110b001528181611a7501528181611e6b015281816122f7015281816139730152613bb8015260c0518381816110890152818161174b01528181611a4e0152611e44015260e0518381816116dd01528181613e8b01528181614c2501528181614eae01526150590152518281816101d10152818161069c01528181610a1801528181610f4701528181610fa4015281816114660152818161198b01528181611bbb01528181611d3801528181614ee601526150900152518181816112eb01528181614e3c01526151820152f35b90926020823d8211620001ef575b81620001d96020938362000209565b81010312620001ec5750519138620000b9565b80fd5b3d9150620001ca565b6040513d6000823e3d90fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200022d57604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203620002045756fe60806040908082526004918236101561001757600080fd5b600091823560e01c908162923c3a1461231b5750806307546172146122ad5780630b6544fb1461219257806318955d9614611fe55780631d7f2b4f14611d205780631e657a6014611ba45780631e795da91461194f5780632653a3b0146119135780632a3cb074146118d85780632a9dd0ce146118505780632ef56abd146117dd5780634fdc61d31461176f57806355b696981461170157806358d6b9e2146116935780635e87bcf2146114255780636b8bd439146113b25780636f6eff401461136d578063734aa6e11461130f5780637ce381b9146112a15780638988bc69146111f65780638d32b9261461116d5780638e6c84a214610f6a578063925c3e4714610f12578063939722ee14610ed95780639af4c2fe14610e66578063a5b4787c14610ddf578063a9e5ee3214610d7e578063aedf745e146109d4578063ed158460146108d6578063ef5cfb8c14610658578063f1319e0d146105f7578063f6c57861146105ab5763fb50dc141461018f57600080fd5b346105a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a7576101c561238c565b926024918235906101f87f0000000000000000000000000000000000000000000000000000000000000000421015612562565b73ffffffffffffffffffffffffffffffffffffffff8616938460005260209360058552826000205490861561054c5784151580610543575b156104e857866000526005865261025361024d868660002061252a565b50612f63565b6fffffffffffffffffffffffffffffffff90818151168261027b4292828c8601511690612fa6565b161161048d57606001519561028f8b6137ed565b886000526005885285600020937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94858201918211610460576102e8916102d59161252a565b50918a60005260058a528760002061252a565b929092610434578183036103ce575b50505086600052600586528360002091825480156103a157019261031b848461252a565b929092610376575050917f0e1c0e63444aec2d84a82a760762b2dd87fbe0dcf82ebef4d5e7acd5b4ed8bf59697989160006002858261036e97558260018201550155556103688482613203565b50613855565b51908152a280f35b6000907f4e487b71000000000000000000000000000000000000000000000000000000008252526000fd5b846031847f4e487b7100000000000000000000000000000000000000000000000000000000600052526000fd5b8154835491167fffffffffffffffffffffffffffffffff000000000000000000000000000000009182168117845582549091166fffffffffffffffffffffffffffffffff90911617825560029081906001810154600185015501549101553880806102f7565b856000857f4e487b71000000000000000000000000000000000000000000000000000000008252526000fd5b866011867f4e487b7100000000000000000000000000000000000000000000000000000000600052526000fd5b6064836006878b8a51937f08c379a00000000000000000000000000000000000000000000000000000000085528401528201527f6c6f636b656400000000000000000000000000000000000000000000000000006044820152fd5b606490601084888751937f08c379a00000000000000000000000000000000000000000000000000000000085528401528201527f696e76616c696420706f736974696f6e000000000000000000000000000000006044820152fd5b50818510610230565b606490600c84888751937f08c379a00000000000000000000000000000000000000000000000000000000085528401528201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152fd5b5080fd5b50346105a75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a7576020906105ee6105e961238c565b612ffb565b90519015158152f35b50346105a75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a7578060209273ffffffffffffffffffffffffffffffffffffffff61064861238c565b1681526006845220549051908152f35b509190346108d3576020927ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc9380853601126108cf5761069661238c565b906106c37f0000000000000000000000000000000000000000000000000000000000000000421015612562565b6106cd823361391e565b73ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001696818551947e01b0b6000000000000000000000000000000000000000000000000000000008652169788888601528685602481845afa9485156108c55787956108a1575b506107548551612c0a565b91875b86518110156107ca57808561076f6107c5938a612c86565b5116338b526003908189528d8b8d20908d5289528a8c20908c528852898b20546107998388612c86565b52338b528752888a208c8b528752888a20866107b5838b612c86565b51168b5287528989812055612c59565b610757565b50909388908a979694863b1561089d578996949288999694929951998a977f657e3172000000000000000000000000000000000000000000000000000000008952608489019233908a015260248901526080604489015285518092528060a4890196019289905b83821061087e575050505050610855838793879593868095030160648501526123fa565b03925af19081156108755750610869575080f35b61087290612677565b80f35b513d84823e3d90fd5b8451811688528d9a508c99509682019693820193600190910190610831565b8980fd5b6108be9195503d8089833e6108b681836126a7565b810190612b88565b9338610749565b86513d89823e3d90fd5b8280fd5b80fd5b5090346108d357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108d3573381526020906005825282812090815461091f81612b4f565b9061092c865192836126a7565b8082528482018094845285842084915b8383106109af5750505050845193808501918186525180925285850193925b8281106109685785850386f35b835180516fffffffffffffffffffffffffffffffff90811687528184015116868401528781015188870152606090810151908601526080909401939281019260010161095b565b6003886001926109c2859b98999b612f63565b8152019201920191909694939661093c565b5091346105a757827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a757610a0c61238c565b92602493843591610a3f7f0000000000000000000000000000000000000000000000000000000000000000421015612562565b610a4a8315156125c7565b610a5b610a5683612ffb565b612aae565b3385526001956020928784528287209573ffffffffffffffffffffffffffffffffffffffff9182811697888a5286528489205490338a528987528a610aa283888d20612546565b500154908215610d2357610ab8828a1115612c9a565b610ac2813361391e565b8882038b8a1283821281169084831390151617610cf857899291610afe918e610af58f8c818f928b933382525220612546565b50015533613aa6565b14610b40575b50505050907f0245a43644a6e6bab6b1bff2baab1d7ccdab8816f954c1215005a47d62c1977591610b36843387612cff565b519283523392a380f35b3389528886528489209283547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94858201918211610cf85790610b8291612546565b50338b528a8852610b9583888d20612546565b919091610cce57808d918303610c94575b505050338a528a8752858a20908a8852610bc283888d20612546565b5054168a52865284892055338852888552838820878952855287848120553388528785528388209182548015610c69570192610bfe8484612546565b929092610c4057505096809888827f0245a43644a6e6bab6b1bff2baab1d7ccdab8816f954c1215005a47d62c1977598999a5501555585949392388080610b04565b8980917f4e487b7100000000000000000000000000000000000000000000000000000000825252fd5b848a6031857f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8084839254167fffffffffffffffffffffffff00000000000000000000000000000000000000008554161784550154910155388b81610ba6565b868c80877f4e487b7100000000000000000000000000000000000000000000000000000000825252fd5b868c6011877f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b606484600d888b8b51937f08c379a00000000000000000000000000000000000000000000000000000000085528401528201527f6e6f2073756368207374616b65000000000000000000000000000000000000006044820152fd5b50346105a75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a7578060209273ffffffffffffffffffffffffffffffffffffffff610dcf61238c565b1681526009845220549051908152f35b5082346108cf5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108cf576020928291610e1d61238c565b610e256123b4565b610e2d6123d7565b9273ffffffffffffffffffffffffffffffffffffffff809316855287528185852091168452865283832091168252845220549051908152f35b50346105a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a75780602092610ea161238c565b610ea96123b4565b73ffffffffffffffffffffffffffffffffffffffff91821683526008865283832091168252845220549051908152f35b50346105a757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a7576020905160158152f35b50346105a757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a757602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b508290346108cf5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108cf57813591610fcb7f0000000000000000000000000000000000000000000000000000000000000000421015612562565b610fd68315156125c7565b3384526005602052818420610fed81541515612d7f565b6110066002610ffb836124e6565b500154851115612c9a565b61100f336137ed565b600261103061102a8683611022866124e6565b500154612d66565b926124e6565b5001553384528360205261104b8360016110228588206124e6565b33855284602052600161105f8487206124e6565b50015561106b33613855565b8373ffffffffffffffffffffffffffffffffffffffff6110ae8533837f000000000000000000000000000000000000000000000000000000000000000016612cff565b7f00000000000000000000000000000000000000000000000000000000000000001691823b156105a75783517fdb6c5c55000000000000000000000000000000000000000000000000000000008152339181019182526020820186905292839182908490829060400103925af1801561116357611154575b50519081527ff8a9c9755132fabe079d616368840a9217e931f5546f744de08c988023b1963b60203392a280f35b61115d90612677565b83611126565b82513d86823e3d90fd5b5090346108d357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108d3576111a561238c565b906024359073ffffffffffffffffffffffffffffffffffffffff8093168152806020528381209081548310156108d357506001916111e291612546565b509182541691015482519182526020820152f35b50346105a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a75761122d61238c565b73ffffffffffffffffffffffffffffffffffffffff1682526005602052808220805460243593908410156108d357506080926112689161252a565b509081549160026001820154910154918051936fffffffffffffffffffffffffffffffff81168552851c60208501528301526060820152f35b50346105a757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a7576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346105a75760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a75760209061136361134d61238c565b6113556123b4565b61135d6123d7565b91613b2a565b9351938452505050f35b82346108d35761137c3661247b565b825b818110611389578380f35b806113a86113a361139e6113ad948688612fca565b612fda565b613855565b612c59565b61137e565b50346105a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a757806020926113ed61238c565b6113f56123b4565b73ffffffffffffffffffffffffffffffffffffffff91821683526007865283832091168252845220549051908152f35b50346105a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a75761145c61238c565b906024359061148d7f0000000000000000000000000000000000000000000000000000000000000000421015612562565b6114988215156125c7565b6114a4610a5684612ffb565b338452602090848252808520805415611671575b506114c3843361391e565b338552600182528085209373ffffffffffffffffffffffffffffffffffffffff81169485875283528186205480156000146115cf575033865285835261151e8287208351906115118261262c565b87825286868301526126e8565b338652858352818620547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081116115a3577f36a0e66d72e949e8fb88ba5ca6e646e30a6a135907f820e3869593a6353f66909495969750906115979133895260018552838920888a528552838920555b33613aa6565b610b368430338861278b565b60248760118a7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b33875286845260016115e382858a20612546565b5001549085820191888784129112908015821691151617611645577f36a0e66d72e949e8fb88ba5ca6e646e30a6a135907f820e3869593a6353f6690959697985090600161163d6115979493338c528b8852868c20612546565b500155611591565b60248860118b7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b815161168d916116808261262c565b87825287858301526126e8565b386114b8565b50346105a757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a7576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346105a757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a7576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346105a757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a7576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346105a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a7578060209261181861238c565b6118206123b4565b73ffffffffffffffffffffffffffffffffffffffff91821683526001865283832091168252845220549051908152f35b50346105a75760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a7578060209261188c61238c565b6118946123b4565b9061189d6123d7565b9173ffffffffffffffffffffffffffffffffffffffff8092168452600387528185852091168452865283832091168252845220549051908152f35b82346108d3576118e73661247b565b825b8181106118f4578380f35b806113a861190961139e61190e948688612fca565b6137ed565b6118e9565b50346105a757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a75760209051630530e8008152f35b508290346108cf57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112611ba0578235926119b27f0000000000000000000000000000000000000000000000000000000000000000421015612562565b6119bd8415156125c7565b338552848352818520805415611b7e575b506119d8336137ed565b6119e28433613203565b9033865285845260016119f68488206124e6565b50015485810190878783129112908015821691151617611b52573387528685526001611a238589206124e6565b500155611a2f33613855565b8573ffffffffffffffffffffffffffffffffffffffff611a73873033847f00000000000000000000000000000000000000000000000000000000000000001661278b565b7f00000000000000000000000000000000000000000000000000000000000000001691823b156105a75784517f88386c6e000000000000000000000000000000000000000000000000000000008152339181019182526020820188905292839182908490829060400103925af18015611b4857611b39575b50816fffffffffffffffffffffffffffffffff8251169101519282519485528401528201527f7464e4d4804aa29d3dde1e89ebf6cf12683ba66250dd4c55de4ca4172088bd8f60603392a280f35b611b4290612677565b85611aeb565b83513d88823e3d90fd5b6024876011847f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8251611b9a91611b8d8261262c565b87825287868301526126e8565b856119ce565b8380fd5b50346105a757611bb33661242e565b611be29291927f0000000000000000000000000000000000000000000000000000000000000000421015612562565b6fffffffffffffffffffffffffffffffff91611c0a8383168015159081611d11575b50612de4565b611c158415156125c7565b3385526005602052808520611c3960158254611c32811515612d7f565b1115612e49565b611c526002611c47836124e6565b500154861115612c9a565b611c5b336137ed565b6002611c66826124e6565b500154858103919087871280158285131691841216176115a35791611d0b916002611cb37fe050df90e44fe7573655dbb19ecb85952a95c7c80c8d9aa583cd751ee293065b9796956124e6565b50015580611cc184886131a0565b94611ccb33613855565b85511694015190519384933397859094939291606092608083019683526fffffffffffffffffffffffffffffffff80921660208401521660408201520152565b0390a280f35b630530e8009150111538611c04565b5082346108cf57611d303661242e565b611d5f9291927f0000000000000000000000000000000000000000000000000000000000000000421015612562565b6fffffffffffffffffffffffffffffffff611d858183168015159081611fd65750612de4565b611d908415156125c7565b3386526020600581528587208054611dab6015821115612e49565b15611fa9575b50338752868152858720805415611f87575b50611dcd336137ed565b3387528681526001611de08789206124e6565b5001549085820191888784129112908015821691151617611f5b578790338252526001611e0e8789206124e6565b500155611e1b82856131a0565b92611e2533613855565b8673ffffffffffffffffffffffffffffffffffffffff611e69873033847f00000000000000000000000000000000000000000000000000000000000000001661278b565b7f00000000000000000000000000000000000000000000000000000000000000001691823b156105a75787517f88386c6e000000000000000000000000000000000000000000000000000000008152339181019182526020820188905292839182908490829060400103925af180156108c55795611d0b9281927f9382e05250357977c97e41a7dedff18f4f4a12bdaabc02b058b34318f7ffc4f39798611f4c575b5085511694015190519384933397859094939291606092608083019683526fffffffffffffffffffffffffffffffff80921660208401521660408201520152565b611f5590612677565b89611f0b565b6024886011877f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8651611fa391611f968261262c565b89825289848301526126e8565b87611dc3565b8651611fd091611fb88261268b565b89825289848301528989830152896060830152612f35565b87611db1565b630530e8009150111588611c04565b50346105a75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a75773ffffffffffffffffffffffffffffffffffffffff61203261238c565b1682526005602052808220918254908060015b838110612139575061205682612c0a565b9460015b84811061207a578551602080825281906120769082018a6123fa565b0390f35b612084818361252a565b506fffffffffffffffffffffffffffffffff80915416906120b66120a8848661252a565b509242935460801c90612fa6565b1611156120cc575b6120c790612c59565b61205a565b92801561210d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6120c791019380612105868a612c86565b5290506120be565b60248360118a7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b612143818761252a565b506fffffffffffffffffffffffffffffffff80915416906121676120a8848a61252a565b16111561217d575b61217890612c59565b612045565b9161218a61217891612c59565b92905061216f565b5090346108d357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108d357903382526020918083528181209081546121db81612b4f565b906121e8855192836126a7565b8082528582018094845286842084915b8383106122615750505050835194859481860192828752518093528086019493905b8382106122275786860387f35b8451805173ffffffffffffffffffffffffffffffffffffffff1687528301518684015287965094850194938201936001919091019061221a565b6002896001928a9b9897999a516122778161262c565b73ffffffffffffffffffffffffffffffffffffffff865416815284860154838201528152019201920191909796959394976121f8565b50346105a757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a7576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b919050346108cf57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108cf5760209261235761238c565b61235f6123b4565b73ffffffffffffffffffffffffffffffffffffffff91821683526002865283832091168252845220548152f35b6004359073ffffffffffffffffffffffffffffffffffffffff821682036123af57565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff821682036123af57565b6044359073ffffffffffffffffffffffffffffffffffffffff821682036123af57565b90815180825260208080930193019160005b82811061241a575050505090565b83518552938101939281019260010161240c565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60409101126123af57600435906024356fffffffffffffffffffffffffffffffff811681036123af5790565b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126123af5760043567ffffffffffffffff928382116123af57806023830112156123af5781600401359384116123af5760248460051b830101116123af576024019190565b8054156124fb57600052602060002090600090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80548210156124fb576000526003602060002091020190600090565b80548210156124fb5760005260206000209060011b0190600090565b1561256957565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f746f6f206561726c7900000000000000000000000000000000000000000000006044820152fd5b156125ce57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e73756666696369656e7420616d6f756e74000000000000000000000000006044820152fd5b6040810190811067ffffffffffffffff82111761264857604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff811161264857604052565b6080810190811067ffffffffffffffff82111761264857604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761264857604052565b8054680100000000000000008110156126485761270a91600182018155612546565b91909161275c5760208173ffffffffffffffffffffffffffffffffffffffff60019351167fffffffffffffffffffffffff00000000000000000000000000000000000000008554161784550151910155565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b9290604051927f23b872dd00000000000000000000000000000000000000000000000000000000602085015273ffffffffffffffffffffffffffffffffffffffff809216602485015216604483015260648201526064815260a081019181831067ffffffffffffffff8411176126485761280792604052612809565b565b73ffffffffffffffffffffffffffffffffffffffff169061287660405161282f8161262c565b6020938482527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564858301526000808587829751910182855af161287061292e565b9161298c565b805180612884575b50505050565b818491810103126105a757820151908115918215036108d357506128aa5780808061287e565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b3d15612987573d9067ffffffffffffffff8211612648576040519161297b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846126a7565b82523d6000602084013e565b606090565b91929015612a0757508151156129a0575090565b3b156129a95790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015612a1a5750805190602001fd5b604051907f08c379a000000000000000000000000000000000000000000000000000000000825281602080600483015282519283602484015260005b848110612a97575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f836000604480968601015201168101030190fd5b818101830151868201604401528593508201612a56565b15612ab557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f696e76616c6964206c7020746f6b656e000000000000000000000000000000006044820152fd5b91908203918211612b2057565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b67ffffffffffffffff81116126485760051b60200190565b519073ffffffffffffffffffffffffffffffffffffffff821682036123af57565b60209081818403126123af5780519067ffffffffffffffff82116123af57019180601f840112156123af578251612bbe81612b4f565b93612bcc60405195866126a7565b818552838086019260051b8201019283116123af578301905b828210612bf3575050505090565b838091612bff84612b67565b815201910190612be5565b90612c1482612b4f565b612c2160405191826126a7565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0612c4f8294612b4f565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612b205760010190565b80518210156124fb5760209160051b010190565b15612ca157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6e6f7420656e6f75676820746f6b656e730000000000000000000000000000006044820152fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff92909216602483015260448083019390935291815261280791612d616064836126a7565b612809565b81810392916000138015828513169184121617612b2057565b15612d8657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f6e6f207374616b657300000000000000000000000000000000000000000000006044820152fd5b15612deb57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f696e73756666696369656e74206c6f636b206475726174696f6e0000000000006044820152fd5b15612e5057565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f7374616b6520706f736974696f6e73206c696d6974206973206578636565646560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152fd5b919061275c578051602082015160801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff91909116178255600290606090604081015160018501550151910155565b90815491680100000000000000008310156126485782612f5d9160016128079501815561252a565b90612ed4565b90604051612f708161268b565b60606002829480546fffffffffffffffffffffffffffffffff8116855260801c6020850152600181015460408501520154910152565b9190916fffffffffffffffffffffffffffffffff80809416911601918211612b2057565b91908110156124fb5760051b0190565b3573ffffffffffffffffffffffffffffffffffffffff811681036123af5790565b73ffffffffffffffffffffffffffffffffffffffff80911690604080517faa6ca8080000000000000000000000000000000000000000000000000000000081528181600481875afa908115613170576000908192613127575b5082517f69454b8600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116602482015260208180604481015b0381867f0000000000000000000000000000000000000000000000000000000000000000165afa91821561311d57506000916130e4575b50161490565b906020823d8211613115575b816130fd602093836126a7565b810103126108d3575061310f90612b67565b386130de565b3d91506130f0565b513d6000823e3d90fd5b91508282813d8311613169575b61313e81836126a7565b810103126108d357506020816131618261315a6130a795612b67565b9201612b67565b925090613054565b503d613134565b82513d6000823e3d90fd5b604051906131888261268b565b60006060838281528260208201528260408201520152565b9190612807906131ae61317b565b503360005260056020526040600020936131c88554615002565b604051926131d58461268b565b6fffffffffffffffffffffffffffffffff908142168552166020840152604083015260608201528093612f35565b61320b61317b565b5073ffffffffffffffffffffffffffffffffffffffff600091168152600560205260409182822092835415613394575b61324761024d856124e6565b9061325c606083019282845191015190613604565b61326d613267614dec565b85613604565b90858282019283129112908015821691151617613367578251908482019186868412911290801582169115161761333a57906132a8916133c1565b915184848201948512911290801582169115161761330d579261330a9492613305928561024d9651936132da8561268b565b6fffffffffffffffffffffffffffffffff4216855260208501528301526060820152612f5d836124e6565b6124e6565b90565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6133bc81516133a28161268b565b848152846020820152848382015284606082015285612f35565b61323b565b7f80000000000000000000000000000000000000000000000000000000000000008082149081156134e3575b506134b95760008112156134b057613416816000035b60008412156134a95783600003906134ed565b917f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311613472576000917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9118131561346e575090565b0390565b60449250604051917ffdd8c1d700000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b83906134ed565b61341681613403565b60046040517fb3c754a3000000000000000000000000000000000000000000000000000000008152fd5b90508214386133ed565b670de0b6b3a7640000917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83830992808302928380861095039480860395146135c7578285101561358b57908291096001821901821680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b82606492604051927f7639aaf0000000000000000000000000000000000000000000000000000000008452600484015260248301526044820152fd5b5050809250156135d5570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f8000000000000000000000000000000000000000000000000000000000000000808214908115613722575b506136f85760008112156136ef57613659816000035b60008412156136e857836000039061372c565b917f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116136b1576000917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9118131561346e575090565b60449250604051917fcdaa009100000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b839061372c565b61365981613646565b60046040517f3406846c000000000000000000000000000000000000000000000000000000008152fd5b9050821438613630565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818309818302918280831092039180830391670de0b6b3a764000095868410156137b7579086910992146137b1577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106699350828211900360ee1b910360121c170290565b50500490565b604491604051917f90638d5000000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b73ffffffffffffffffffffffffffffffffffffffff908181169160008381526020908082526040918282205495825b87811061382d575050505050505050565b613850908285528484526113a88761384783898920612546565b5054168961391e565b61381c565b61385e81613e57565b9073ffffffffffffffffffffffffffffffffffffffff9182821690600082815260208181526040928383205496835b88811061389f57505050505050505050565b6139199087865285855288887fe80cbe02b2d8cc16808f935cff6079782341d4f59921584a1451a05289922a2e8980898b6138eb8b8b6138e18b878620612546565b5054168099614bd2565b819483898396949552600284528181208b825284526006828220945220555582519182528a820152a3612c59565b61388d565b91909160409081517e01b0b600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80861690600482818501526000958685602481867f0000000000000000000000000000000000000000000000000000000000000000165afa948515613a9c578795613a80575b50865b8551811015613a74578088888888888f886139d38b92846139ca613a6f9c89612c86565b51169088613b2a565b93929991979095878352602090600882528c816139f38787209286612c86565b5116855282528484209a8116808552968252848420898552825284842081613a1b8f86612c86565b51168552825284842098808552600783528d82613a3b8888209287612c86565b511686528352858520978552600383528585209085528252613a608d86862094612c86565b51168352522055555555612c59565b6139a6565b50505050505050509050565b613a959195503d8089833e6108b681836126a7565b93386139a3565b81513d89823e3d90fd5b7fe80cbe02b2d8cc16808f935cff6079782341d4f59921584a1451a05289922a2e6040613adc613ad584613e57565b8585614bd2565b73ffffffffffffffffffffffffffffffffffffffff809516948560005260026020528360002096169586600052602052818360002060066020528285600020555582519182526020820152a3565b919273ffffffffffffffffffffffffffffffffffffffff9182811690600090828252602060068152604090818420541515600014613dd05781517f318a678c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600480830191909152938a1660248201529181836044817f00000000000000000000000000000000000000000000000000000000000000008c165afa928315613dc6578593613d93575b5082998686526007835288828720911690818752835281862054938787526008845282872082885284528287205490878282039212818312811691831390151617613d67578787526006845282872054613c42916133c1565b93868582019586129112908015821691151617613d3b578398849a1692838752600381528287208888528152828720828852815282872054978488526002825283882081895282528388205494885286825283882090885281528287209187525284205491848382039312818412811691841390151617613d0f5790613cc791613604565b92828482019485129112908015821691151617613ce357505090565b9060116024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b6024846011857f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b6024866011877f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b6024876011887f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b9092508181813d8311613dbf575b613dab81836126a7565b81010312613dbb57519138613be9565b8480fd5b503d613da1565b81513d87823e3d90fd5b9497915092946008855280848420921691828452855283832054961693848352600481528383208684528152838320828452815283832054958084526007825284842083855282528484205495845260038252848420908452815283832091835252205490919293565b90670de0b6b3a764000091828102928184051490151715612b2057565b60009060009073ffffffffffffffffffffffffffffffffffffffff80911682526020600581526040908184209182549185947f000000000000000000000000000000000000000000000000000000000000000016905b838610613f0b57505050505050670de0b6b3a764000091818382019384129112908015821691151617613ede575090565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526011600452fd5b9091929394966002613f1d898861252a565b500154613f3b613f2d8a8961252a565b509160018093015490613604565b908551917f4df7e3d0000000000000000000000000000000000000000000000000000000008352600492858185818a5afa9081156140f4578b916140c3575b50613f92613f888d8c61252a565b505460801c613e3a565b8851907fb1373929000000000000000000000000000000000000000000000000000000008252878287818c5afa9182156140b9578d92614084575b50613fe29291613fdc916140fe565b90613604565b9182670de0b6b3a76400000192831216614058579061400091613604565b9188838201938412911290801582169115161761402c57506140229097612c59565b9493929190613ead565b8760116024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b60248a6011857f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b9091508781813d83116140b2575b61409c81836126a7565b810103126140ae575190613fdc613fcd565b8c80fd5b503d614092565b8a513d8f823e3d90fd5b90508581813d83116140ed575b6140da81836126a7565b810103126140e9575138613f7a565b8a80fd5b503d6140d0565b88513d8d823e3d90fd5b80614118575060009061330a5750670de0b6b3a764000090565b90670de0b6b3a7640000810361412c575090565b6141419061413c61330a93614a3d565b613604565b614160565b80156135d5576ec097ce7bc90715b34b9f10000000000590565b60008112156141ab577ffffffffffffffffffffffffffffffffffffffffffffffffcc22e87f6eb468eeb81126141a55761419c90600003614160565b61330a90614146565b50600090565b680a688906bd8b000000811215614a0c57670de0b6b3a764000080604092831b05907780000000000000000000000000000000000000000000000067ff0000000000000083166148ef575b66ff00000000000083166147e7575b65ff000000000083166146e7575b64ff0000000083161515806145df575b6144ef575b62ff00008316614407575b61ff008316614327575b60ff8316614250575b02911c60bf031c90565b60808316614315575b838316614303575b602083166142f1575b601083166142df575b600883166142cd575b600483166142bb575b600283166142a9575b6001831615614246576801000000000000000102831c614246565b6801000000000000000102831c61428e565b6801000000000000000302831c614285565b6801000000000000000602831c61427c565b6801000000000000000b02831c614273565b6801000000000000001602831c61426a565b6801000000000000002c02831c614261565b6801000000000000005902831c614259565b61800083166143f5575b61400083166143e3575b61200083166143d1575b61100083166143bf575b61080083166143ad575b610400831661439b575b6102008316614389575b61010083161561423d57680100000000000000b102831c61423d565b6801000000000000016302831c61436d565b680100000000000002c602831c614363565b6801000000000000058c02831c614359565b68010000000000000b1702831c61434f565b6801000000000000162e02831c614345565b68010000000000002c5d02831c61433b565b680100000000000058b902831c614331565b6280000083166144dd575b6240000083166144cb575b6220000083166144b9575b6210000083166144a7575b620800008316614495575b620400008316614483575b620200008316614471575b62010000831615614233576801000000000000b17202831c614233565b680100000000000162e402831c614454565b6801000000000002c5c802831c614449565b68010000000000058b9102831c61443e565b680100000000000b172102831c614433565b68010000000000162e4302831c614428565b680100000000002c5c8602831c61441d565b6801000000000058b90c02831c614412565b638000000083166145cd575b634000000083166145bb575b632000000083166145a9575b63100000008316614597575b63080000008316614585575b63040000008316614573575b63020000008316614561575b63010000008316156142285768010000000000b1721802831c614228565b6801000000000162e43002831c614543565b68010000000002c5c86002831c614537565b680100000000058b90c002831c61452b565b6801000000000b17217f02831c61451f565b680100000000162e42ff02831c614513565b6801000000002c5c85fe02831c614507565b68010000000058b90bfc02831c6144fb565b64800000000084166146d3575b64400000000084166146bf575b64200000000084166146ab575b6410000000008416614697575b6408000000008416614683575b640400000000841661466f575b640200000000841661465b575b6401000000008416156142235790680100000000b17217f802841c90614223565b9068010000000162e42ff102841c9061463a565b90680100000002c5c85fe302841c9061462d565b906801000000058b90bfce02841c90614620565b9068010000000b17217fbb02841c90614613565b906801000000162e42fff002841c90614606565b9068010000002c5c8601cc02841c906145f9565b90680100000058b90c0b4902841c906145ec565b6580000000000083166147d5575b6540000000000083166147c3575b6520000000000083166147b1575b65100000000000831661479f575b65080000000000831661478d575b65040000000000831661477b575b650200000000008316614769575b65010000000000831615614213576801000000b17218355102831c614213565b680100000162e430e5a202831c614749565b6801000002c5c863b73f02831c61473b565b68010000058b90cf1e6e02831c61472d565b680100000b1721bcfc9a02831c61471f565b68010000162e43f4f83102831c614711565b680100002c5c89d5ec6d02831c614703565b6801000058b91b5bc9ae02831c6146f5565b668000000000000083166148dd575b664000000000000083166148cb575b662000000000000083166148b9575b661000000000000083166148a7575b66080000000000008316614895575b66040000000000008316614883575b66020000000000008316614871575b66010000000000008316156142055768010000b17255775c0402831c614205565b6801000162e525ee054702831c614850565b68010002c5cc37da949202831c614841565b680100058ba01fb9f96d02831c614832565b6801000b175effdc76ba02831c614823565b680100162f3904051fa102831c614814565b6801002c605e2e8cec5002831c614805565b68010058c86da1c09ea202831c6147f6565b67800000000000000083166149ed575b67400000000000000083166149db575b67200000000000000083166149c9575b67100000000000000083166149b7575b67080000000000000083166149a5575b6704000000000000008316614993575b6702000000000000008316614981575b6701000000000000008316156141f657680100b1afa5abcbed6102831c6141f6565b68010163da9fb33356d802831c61495f565b680102c9a3e778060ee702831c61494f565b6801059b0d31585743ae02831c61493f565b68010b5586cf9890f62a02831c61492f565b6801172b83c7d517adce02831c61491f565b6801306fe0a31b7152df02831c61490f565b5077b504f333f9de6484800000000000000000000000000000006148ff565b602490604051907fe69458f90000000000000000000000000000000000000000000000000000000082526004820152fd5b80600080831315614ba157670de0b6b3a764000092838112614b3357506001925b808305906fffffffffffffffffffffffffffffffff821160071b91821c9167ffffffffffffffff831160061b92831c63ffffffff811160051b90811c61ffff811160041b90811c60ff811160031b90811c91600f831160021b92831c936001978860038711811b96871c11961717171717171781810294811d90828214614b2757506706f05b59d3b20000905b848213614afb5750505050500290565b808391020590671bc16d674ec80000821215614b1a575b831d90614aeb565b8091950194831d90614b12565b93505093925050020290565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9392508015614b74576ec097ce7bc90715b34b9f10000000000591614a5e565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526012600452fd5b602483604051907f613f4fba0000000000000000000000000000000000000000000000000000000082526004820152fd5b9092919273ffffffffffffffffffffffffffffffffffffffff809216916000918383526020958387526040926001614c1f858720828b52838789209616958689528b528688205490612546565b500154907f000000000000000000000000000000000000000000000000000000000000000016918451917fdb1d0fd50000000000000000000000000000000000000000000000000000000083528983600481875afa9283156108c557908a918894614d96575b50600493614c92916140fe565b938651938480927f9faa3c910000000000000000000000000000000000000000000000000000000082525afa918215614d8c578692614d57575b50614cdb9291613fdc916140fe565b95818452600681528284205494845260028152828420918452528120549181838603931285841281169086851390151617614d2a57818382019384129112908015821691151617613ede575090565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b9091508881813d8311614d85575b614d6f81836126a7565b81010312614d81575190613fdc614ccc565b8580fd5b503d614d65565b85513d88823e3d90fd5b828193929495503d8311614dc8575b614daf81836126a7565b81010312614dc4575191908990614c92614c85565b8680fd5b503d614da5565b51906fffffffffffffffffffffffffffffffff821682036123af57565b600060409081518180602092838101907f8988bc6900000000000000000000000000000000000000000000000000000000825233602482015282604482015260448152614e388161268b565b51907f00000000000000000000000000000000000000000000000000000000000000005afa614e6561292e565b90614f7a575b508251907f6c8ae38c000000000000000000000000000000000000000000000000000000008252808260048173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa93841561087557508293614f4a575b5050614f0b7f000000000000000000000000000000000000000000000000000000000000000042612b13565b907f80000000000000000000000000000000000000000000000000000000000000008214613ede5791613fdc614f459261330a9403613e3a565b61528f565b9080929350813d8311614f73575b614f6281836126a7565b810103126123af5751903880614edf565b503d614f58565b60808180969594965181010312613dbb57600083949560609451614f9d8161268b565b614fa8858501614dcf565b8152614fb5878501614dcf565b858201526080868501519488830195865201519586910152931380614fe2575b15614e6b57925050505190565b5033600052600582526001614ff9856000206124e6565b50015415614fd5565b80158015918183615278575b61512c575b5050506040517f6c8ae38c00000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115615120576000916150ef575b506150b57f000000000000000000000000000000000000000000000000000000000000000042612b13565b7f80000000000000000000000000000000000000000000000000000000000000008114612b205761330a91613fdc614f4592600003613e3a565b906020823d8211615118575b81615108602093836126a7565b810103126108d35750513861508a565b3d91506150fb565b6040513d6000823e3d90fd5b604080517f8988bc6900000000000000000000000000000000000000000000000000000000602082019081523360248301526044808301949094529281529091906151786064826126a7565b60008092819251907f00000000000000000000000000000000000000000000000000000000000000005afa936151ac61292e565b946151b9575b5050615013565b6080858051810103126105a75760609083516151d48161268b565b6151e060208801614dcf565b81526151ed858801614dcf565b6020820152608083880151978683019889520151928391015260001461522a57509091503381526009602052206152248154612c59565b90555190565b8361526d575b508261524c575b5050615248575038808080806151b2565b5190565b33815260056020522060019150615262906124e6565b500154153880615237565b819350139138615230565b50336000526009602052806040600020541061500e565b7ffffffffffffffffffffffffffffffffffffffffffffffffdc0d0570925a462ce81126141a557680736ea4425c11ac6318112156152e457670de0b6b3a76400006714057b7ef767814f61330a920205614160565b602490604051907f99bb75410000000000000000000000000000000000000000000000000000000082526004820152fdfea2646970667358221220cb75d46db4e1fa13ed19e09e9dc9befa2deab4e2c3bc35ce4b3792541308505b64736f6c63430008120033000000000000000000000000a70de8592cd98edc01988d68b5b5bb3cc593fe8800000000000000000000000084649108e6485dcd565d0cf7eba67d9efae3037e00000000000000000000000081ee625f257d67e29d109d7f4fe18547ae2dce74000000000000000000000000161bceef7fb69d8f4d3dc55693d22ab33f791d7b0000000000000000000000006c2dba00f8b7308f475dc9525054a02228ac4d21