0 txs
0 calls
constructor
constructor(address _vrswToken, address _minter, address _tokenomicsParams, address _vPairFactory, address _oldStaker)
functions
baseRewardsCoefficient
viewfunction baseRewardsCoefficient(address, address, address) view returns (int256)
baseRewardsCoefficientGlobal
viewfunction baseRewardsCoefficientGlobal(address, address) view returns (int256)
checkLock
viewfunction checkLock(address who) view returns (uint256[] unlockedPositions)
emissionStartTs
viewfunction emissionStartTs() view returns (uint256)
extraRewardsCoefficient
viewfunction extraRewardsCoefficient(address, address, address) view returns (int256)
extraRewardsCoefficientGlobal
viewfunction extraRewardsCoefficientGlobal(address, address) view returns (int256)
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)
STAKE_POSITIONS_LIMIT
viewfunction STAKE_POSITIONS_LIMIT() view returns (uint256)
tokenomicsParams
viewfunction tokenomicsParams() view returns (address)
totalLpStaked
viewfunction totalLpStaked(address) view returns (int256)
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
0x61014080604052346200020b5760a08162005ae7803803809162000024828562000210565b8339810103126200020b57806200003d6004926200024a565b9060206200004d8183016200024a565b6200005b604084016200024a565b6200007760806200006f606087016200024a565b95016200024a565b61012090815260a083905260c09590955260e05260405163925c3e4760e01b815294859182906001600160a01b03165afa928315620001ff57600093620001c3575b506101009283526080526040519061588792836200026084396080518381816118c101526132f3015260a051838181610701015281816110b501528181611c74015281816120680152818161252201528181613bbb0152613e47015260c05183818161108e015281816117cb01528181611c4d0152612041015260e05183818161175d01528181613ed0015281816143f50152818161514a0152818161540001526155aa0152518281816101f2015281816106b801528181610a3401528181610f2f01528181610f8d015281816114e701528181611b7901528181611d8a01528181611f070152818161543801526155e10152518181816113560152818161538e01526156d00152f35b90926020823d8211620001f6575b81620001e06020938362000210565b81010312620001f35750519138620000b9565b80fd5b3d9150620001d1565b6040513d6000823e3d90fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200023457604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200020b5756fe60806040908082526004918236101561001757600080fd5b600091823560e01c908162923c3a146125465750806307546172146124d85780630b6544fb146123bd57806318955d961461220e5780631d7f2b4f14611eef5780631e657a6014611d735780631e795da914611b3d57806322dfa92814611aca5780632653a3b014611a8e57806327a3218014611a1b5780632a3cb074146119e05780632a9dd0ce146119585780632ef56abd146118e55780634fdc61d31461187757806354055086146117ef57806355b696981461178157806358d6b9e2146117135780635e87bcf2146114a65780636562bb601461141f5780636f6eff40146113da578063734aa6e11461137a5780637ce381b91461130c57806386a15e64146112ab5780638988bc69146112005780638d32b926146111775780638e6c84a214610f52578063925c3e4714610efa578063939722ee14610ec15780639af4c2fe14610e4e578063a9e5ee3214610ded578063aedf745e146109f0578063ed158460146108f2578063ef5cfb8c14610674578063f1319e0d14610613578063f6c57861146105c75763fb50dc14146101b057600080fd5b346105c357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105c3576101e66125b7565b926024918235906102197f000000000000000000000000000000000000000000000000000000000000000042101561278d565b73ffffffffffffffffffffffffffffffffffffffff8616938460005260066020948186528360002054918715610568578515158061055f575b15610504578760005280875261027461026e8787600020612755565b506131aa565b6fffffffffffffffffffffffffffffffff90818151168261029c4292828d86015116906131ed565b16116104aa5760600151966102b08c613a34565b8960005282895286600020947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9586820191821161047d57610307916102f591612755565b50918b600052848b5288600020612755565b929092610451578183036103eb575b5050508760005286528360002091825480156103be5701926103388484612755565b929092610393575050917f0e1c0e63444aec2d84a82a760762b2dd87fbe0dcf82ebef4d5e7acd5b4ed8bf59697989160006002858261038b9755826001820155015555610385848261344a565b50613a9c565b51908152a280f35b6000907f4e487b71000000000000000000000000000000000000000000000000000000008252526000fd5b846031847f4e487b7100000000000000000000000000000000000000000000000000000000600052526000fd5b8154835491167fffffffffffffffffffffffffffffffff000000000000000000000000000000009182168117845582549091166fffffffffffffffffffffffffffffffff9091161782556002908190600181015460018501550154910155388080610316565b866000867f4e487b71000000000000000000000000000000000000000000000000000000008252526000fd5b876011877f4e487b7100000000000000000000000000000000000000000000000000000000600052526000fd5b60648484888c8b51937f08c379a00000000000000000000000000000000000000000000000000000000085528401528201527f6c6f636b656400000000000000000000000000000000000000000000000000006044820152fd5b6064826010868a8951937f08c379a00000000000000000000000000000000000000000000000000000000085528401528201527f696e76616c696420706f736974696f6e000000000000000000000000000000006044820152fd5b50828610610252565b606482600c868a8951937f08c379a00000000000000000000000000000000000000000000000000000000085528401528201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152fd5b5080fd5b50346105c35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105c35760209061060a6106056125b7565b613242565b90519015158152f35b50346105c35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105c3578060209273ffffffffffffffffffffffffffffffffffffffff6106646125b7565b1681526007845220549051908152f35b509190346108ef576020927ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc9380853601126108eb576106b26125b7565b906106df7f000000000000000000000000000000000000000000000000000000000000000042101561278d565b6106e98233613b65565b73ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001696818551947e01b0b6000000000000000000000000000000000000000000000000000000008652169788888601528685602481845afa9485156108e15787956108bd575b506107708551612e51565b91875b86518110156107e657808561078b6107e1938a612ecd565b5116338b526003908189528d8b8d20908d5289528a8c20908c528852898b20546107b58388612ecd565b52338b528752888a208c8b528752888a20866107d1838b612ecd565b51168b5287528989812055612ea0565b610773565b50909388908a979694863b156108b9578996949288999694929951998a977f657e3172000000000000000000000000000000000000000000000000000000008952608489019233908a015260248901526080604489015285518092528060a4890196019289905b83821061089a57505050505061087183879387959386809503016064850152612625565b03925af19081156108915750610885575080f35b61088e906128a2565b80f35b513d84823e3d90fd5b8451811688528d9a508c9950968201969382019360019091019061084d565b8980fd5b6108da9195503d8089833e6108d281836128d2565b810190612dcf565b9338610765565b86513d89823e3d90fd5b8280fd5b80fd5b5090346108ef57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108ef573381526020906006825282812090815461093b81612d96565b90610948865192836128d2565b8082528482018094845285842084915b8383106109cb5750505050845193808501918186525180925285850193925b8281106109845785850386f35b835180516fffffffffffffffffffffffffffffffff908116875281840151168684015287810151888701526060908101519086015260809094019392810192600101610977565b6003886001926109de859b98999b6131aa565b81520192019201919096949396610958565b5091346105c357827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105c357610a286125b7565b92602493843591610a5b7f000000000000000000000000000000000000000000000000000000000000000042101561278d565b610a668315156127f2565b610a77610a7283613242565b612d24565b3385526001956020928784528287209573ffffffffffffffffffffffffffffffffffffffff9182811697888a5286528489205490338a528987528a610abe83888d20612771565b500154908215610d9257610ad4828a1115612ee1565b610ade8133613b65565b8a891280158a84038481138216858212841617610d67578e610b0a8f8c818f928b933382525220612771565b5001558b8d5260088a52888d2054908b820392828412169183131617610d3c57899291610b4291898e8e815260088d52205533613d34565b14610b84575b50505050907f0245a43644a6e6bab6b1bff2baab1d7ccdab8816f954c1215005a47d62c1977591610b7a843387612f46565b519283523392a380f35b3389528886528489209283547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94858201918211610d3c5790610bc691612771565b50338b528a8852610bd983888d20612771565b919091610d1257808d918303610cd8575b505050338a528a8752858a20908a8852610c0683888d20612771565b5054168a52865284892055338852888552838820878952855287848120553388528785528388209182548015610cad570192610c428484612771565b929092610c8457505096809888827f0245a43644a6e6bab6b1bff2baab1d7ccdab8816f954c1215005a47d62c1977598999a5501555585949392388080610b48565b8980917f4e487b7100000000000000000000000000000000000000000000000000000000825252fd5b848a6031857f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8084839254167fffffffffffffffffffffffff00000000000000000000000000000000000000008554161784550154910155388b81610bea565b868c80877f4e487b7100000000000000000000000000000000000000000000000000000000825252fd5b868c6011877f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b888e6011897f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b606484600d888b8b51937f08c379a00000000000000000000000000000000000000000000000000000000085528401528201527f6e6f2073756368207374616b65000000000000000000000000000000000000006044820152fd5b50346105c35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105c3578060209273ffffffffffffffffffffffffffffffffffffffff610e3e6125b7565b168152600c845220549051908152f35b50346105c357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105c35780602092610e896125b7565b610e916125df565b73ffffffffffffffffffffffffffffffffffffffff9182168352600b865283832091168252845220549051908152f35b50346105c357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105c3576020905160158152f35b50346105c357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105c357602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b508290346108eb576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261117357823591610fb47f000000000000000000000000000000000000000000000000000000000000000042101561278d565b610fbf8315156127f2565b33855260068252808520610fd581541515612fc6565b610fee6002610fe383612711565b500154851115612ee1565b610ff733613a34565b6002611018611012868361100a86612711565b500154612fad565b92612711565b50015533855284825261103283600161100a848920612711565b3386528583526001611045838820612711565b5001558480526008825261105c8382872054612fad565b858052600883528186205561107033613a9c565b8473ffffffffffffffffffffffffffffffffffffffff6110b38533837f000000000000000000000000000000000000000000000000000000000000000016612f46565b7f00000000000000000000000000000000000000000000000000000000000000001694853b156105c35782517fdb6c5c55000000000000000000000000000000000000000000000000000000008152339181019182526020820186905295869182908490829060400103925af1938415611169577ff8a9c9755132fabe079d616368840a9217e931f5546f744de08c988023b1963b939461115a575b50519283523392a280f35b611163906128a2565b8561114f565b81513d87823e3d90fd5b8380fd5b5090346108ef57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108ef576111af6125b7565b906024359073ffffffffffffffffffffffffffffffffffffffff8093168152806020528381209081548310156108ef57506001916111ec91612771565b509182541691015482519182526020820152f35b50346105c357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105c3576112376125b7565b73ffffffffffffffffffffffffffffffffffffffff1682526006602052808220805460243593908410156108ef575060809261127291612755565b509081549160026001820154910154918051936fffffffffffffffffffffffffffffffff81168552851c60208501528301526060820152f35b50346105c35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105c3578060209273ffffffffffffffffffffffffffffffffffffffff6112fc6125b7565b1681526008845220549051908152f35b50346105c357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105c3576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346105c35760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105c3576020906113ce6113b86125b7565b6113c06125df565b6113c8612602565b91613db8565b95519586525050505050f35b82346108ef576113e9366126a6565b825b8181106113f6578380f35b8061141561141061140b61141a948688613211565b613221565b613a9c565b612ea0565b6113eb565b5082346108eb5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108eb57602092829161145d6125b7565b6114656125df565b61146d612602565b9273ffffffffffffffffffffffffffffffffffffffff809316855287528185852091168452865283832091168252845220549051908152f35b50346105c357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105c3576114dd6125b7565b906024359061150e7f000000000000000000000000000000000000000000000000000000000000000042101561278d565b6115198215156127f2565b611525610a7284613242565b3384526020908482528085208054156116f1575b506115448433613b65565b338552600182528085209373ffffffffffffffffffffffffffffffffffffffff811694858752835281862054801560001461167a575033865285835261159f82872083519061159282612857565b8782528686830152612913565b338652858352818620547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811161164e57338752600184528287208688528452828720555b84865260088352818620548481019087868312911290801582169115161761164e577f36a0e66d72e949e8fb88ba5ca6e646e30a6a135907f820e3869593a6353f669093929161164291878952600885528389205533613d34565b610b7a843033886129b6565b60248760118a7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b338752868452600161168e82858a20612771565b50015490858201918887841291129080158216911516176116c5576116bd600191338a52898752858a20612771565b5001556115e7565b60248860118b7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b815161170d9161170082612857565b8782528785830152612913565b38611539565b50346105c357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105c3576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346105c357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105c3576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346105c35760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105c3578060209261182b6125b7565b6118336125df565b9061183c612602565b9173ffffffffffffffffffffffffffffffffffffffff8092168452600587528185852091168452865283832091168252845220549051908152f35b50346105c357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105c3576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346105c357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105c357806020926119206125b7565b6119286125df565b73ffffffffffffffffffffffffffffffffffffffff91821683526001865283832091168252845220549051908152f35b50346105c35760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105c357806020926119946125b7565b61199c6125df565b906119a5612602565b9173ffffffffffffffffffffffffffffffffffffffff8092168452600387528185852091168452865283832091168252845220549051908152f35b82346108ef576119ef366126a6565b825b8181106119fc578380f35b80611415611a1161140b611a16948688613211565b613a34565b6119f1565b50346105c357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105c35780602092611a566125b7565b611a5e6125df565b73ffffffffffffffffffffffffffffffffffffffff9182168352600a865283832091168252845220549051908152f35b50346105c357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105c35760209051630530e8008152f35b50346105c357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105c35780602092611b056125b7565b611b0d6125df565b73ffffffffffffffffffffffffffffffffffffffff91821683526009865283832091168252845220549051908152f35b508290346108eb57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261117357823592611ba07f000000000000000000000000000000000000000000000000000000000000000042101561278d565b611bab8415156127f2565b338552848352818520805415611d51575b50611bc633613a34565b611bd0843361344a565b90338652858452611bf0856001611be8868a20612711565b500154612cd9565b3387528685526001611c03858920612711565b50015585805260088452611c1a8584882054612cd9565b8680526008855283872055611c2e33613a9c565b8573ffffffffffffffffffffffffffffffffffffffff611c72873033847f0000000000000000000000000000000000000000000000000000000000000000166129b6565b7f00000000000000000000000000000000000000000000000000000000000000001691823b156105c35784517f88386c6e000000000000000000000000000000000000000000000000000000008152339181019182526020820188905292839182908490829060400103925af18015611d4757611d38575b50816fffffffffffffffffffffffffffffffff8251169101519282519485528401528201527f7464e4d4804aa29d3dde1e89ebf6cf12683ba66250dd4c55de4ca4172088bd8f60603392a280f35b611d41906128a2565b85611cea565b83513d88823e3d90fd5b8251611d6d91611d6082612857565b8782528786830152612913565b85611bbc565b50346105c357611d8236612659565b611db19291927f000000000000000000000000000000000000000000000000000000000000000042101561278d565b6fffffffffffffffffffffffffffffffff91611dd98383168015159081611ee0575b5061302b565b611de48415156127f2565b3385526006602052808520611e0860158254611e01811515612fc6565b1115613090565b611e216002611e1683612711565b500154861115612ee1565b611e2a33613a34565b6002611e3582612711565b5001548581039190878712801582851316918412161761164e5791611eda916002611e827fe050df90e44fe7573655dbb19ecb85952a95c7c80c8d9aa583cd751ee293065b979695612711565b50015580611e9084886133e7565b94611e9a33613a9c565b85511694015190519384933397859094939291606092608083019683526fffffffffffffffffffffffffffffffff80921660208401521660408201520152565b0390a280f35b630530e8009150111538611dd3565b5082346108eb57611eff36612659565b611f2e9291927f000000000000000000000000000000000000000000000000000000000000000042101561278d565b6fffffffffffffffffffffffffffffffff611f5481831680151590816121ff575061302b565b611f5f8415156127f2565b338652602092600684528587208054611f7b6015821115613090565b156121d2575b503387528684528587208054156121b0575b50611f9d33613a34565b3387528684526001611fb0878920612711565b50015485810190888783129112908015821691151617612184573388528785526001611fdd888a20612711565b500155611fea83866133e7565b938780526008815286882054908682019189888412911290801582169115161761215857600890898052528688205561202233613a9c565b8673ffffffffffffffffffffffffffffffffffffffff612066873033847f0000000000000000000000000000000000000000000000000000000000000000166129b6565b7f00000000000000000000000000000000000000000000000000000000000000001691823b156105c35787517f88386c6e000000000000000000000000000000000000000000000000000000008152339181019182526020820188905292839182908490829060400103925af180156108e15795611eda9281927f9382e05250357977c97e41a7dedff18f4f4a12bdaabc02b058b34318f7ffc4f39798612149575b5085511694015190519384933397859094939291606092608083019683526fffffffffffffffffffffffffffffffff80921660208401521660408201520152565b612152906128a2565b89612108565b6024896011857f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b6024886011847f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b86516121cc916121bf82612857565b8982528987830152612913565b87611f93565b86516121f9916121e1826128b6565b8982528987830152898983015289606083015261317c565b87611f81565b630530e8009150111588611dd3565b50346105c35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105c35773ffffffffffffffffffffffffffffffffffffffff61225b6125b7565b1682526006602052808220918254908060015b838110612364575061227f81612e51565b91829560015b8581106122a5578651602080825281906122a19082018b612625565b0390f35b6122af8183612755565b506fffffffffffffffffffffffffffffffff80915416906122e16122d38486612755565b509242935460801c906131ed565b1611156122f7575b6122f290612ea0565b612285565b928015612338577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6122f2910193806123308688612ecd565b5290506122e9565b60248360118b7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b61236e8187612755565b506fffffffffffffffffffffffffffffffff80915416906123926122d3848a612755565b1611156123a8575b6123a390612ea0565b61226e565b906123b56123a391612ea0565b91905061239a565b5090346108ef57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108ef579033825260209180835281812090815461240681612d96565b90612413855192836128d2565b8082528582018094845286842084915b83831061248c5750505050835194859481860192828752518093528086019493905b8382106124525786860387f35b8451805173ffffffffffffffffffffffffffffffffffffffff16875283015186840152879650948501949382019360019190910190612445565b6002896001928a9b9897999a516124a281612857565b73ffffffffffffffffffffffffffffffffffffffff86541681528486015483820152815201920192019190979695939497612423565b50346105c357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105c3576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b919050346108eb57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108eb576020926125826125b7565b61258a6125df565b73ffffffffffffffffffffffffffffffffffffffff91821683526002865283832091168252845220548152f35b6004359073ffffffffffffffffffffffffffffffffffffffff821682036125da57565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff821682036125da57565b6044359073ffffffffffffffffffffffffffffffffffffffff821682036125da57565b90815180825260208080930193019160005b828110612645575050505090565b835185529381019392810192600101612637565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60409101126125da57600435906024356fffffffffffffffffffffffffffffffff811681036125da5790565b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126125da5760043567ffffffffffffffff928382116125da57806023830112156125da5781600401359384116125da5760248460051b830101116125da576024019190565b80541561272657600052602060002090600090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8054821015612726576000526003602060002091020190600090565b80548210156127265760005260206000209060011b0190600090565b1561279457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f746f6f206561726c7900000000000000000000000000000000000000000000006044820152fd5b156127f957565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e73756666696369656e7420616d6f756e74000000000000000000000000006044820152fd5b6040810190811067ffffffffffffffff82111761287357604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff811161287357604052565b6080810190811067ffffffffffffffff82111761287357604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761287357604052565b8054680100000000000000008110156128735761293591600182018155612771565b9190916129875760208173ffffffffffffffffffffffffffffffffffffffff60019351167fffffffffffffffffffffffff00000000000000000000000000000000000000008554161784550151910155565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b9290604051927f23b872dd00000000000000000000000000000000000000000000000000000000602085015273ffffffffffffffffffffffffffffffffffffffff809216602485015216604483015260648201526064815260a081019181831067ffffffffffffffff84111761287357612a3292604052612a34565b565b73ffffffffffffffffffffffffffffffffffffffff1690612aa1604051612a5a81612857565b6020938482527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564858301526000808587829751910182855af1612a9b612b59565b91612bb7565b805180612aaf575b50505050565b818491810103126105c357820151908115918215036108ef5750612ad557808080612aa9565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b3d15612bb2573d9067ffffffffffffffff82116128735760405191612ba660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846128d2565b82523d6000602084013e565b606090565b91929015612c325750815115612bcb575090565b3b15612bd45790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015612c455750805190602001fd5b604051907f08c379a000000000000000000000000000000000000000000000000000000000825281602080600483015282519283602484015260005b848110612cc2575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f836000604480968601015201168101030190fd5b818101830151868201604401528593508201612c81565b91909160008382019384129112908015821691151617612cf557565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b15612d2b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f696e76616c6964206c7020746f6b656e000000000000000000000000000000006044820152fd5b91908203918211612cf557565b67ffffffffffffffff81116128735760051b60200190565b519073ffffffffffffffffffffffffffffffffffffffff821682036125da57565b60209081818403126125da5780519067ffffffffffffffff82116125da57019180601f840112156125da578251612e0581612d96565b93612e1360405195866128d2565b818552838086019260051b8201019283116125da578301905b828210612e3a575050505090565b838091612e4684612dae565b815201910190612e2c565b90612e5b82612d96565b612e6860405191826128d2565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0612e968294612d96565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612cf55760010190565b80518210156127265760209160051b010190565b15612ee857565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6e6f7420656e6f75676820746f6b656e730000000000000000000000000000006044820152fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff929092166024830152604480830193909352918152612a3291612fa86064836128d2565b612a34565b81810392916000138015828513169184121617612cf557565b15612fcd57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f6e6f207374616b657300000000000000000000000000000000000000000000006044820152fd5b1561303257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f696e73756666696369656e74206c6f636b206475726174696f6e0000000000006044820152fd5b1561309757565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f7374616b6520706f736974696f6e73206c696d6974206973206578636565646560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152fd5b9190612987578051602082015160801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff91909116178255600290606090604081015160018501550151910155565b908154916801000000000000000083101561287357826131a4916001612a3295018155612755565b9061311b565b906040516131b7816128b6565b60606002829480546fffffffffffffffffffffffffffffffff8116855260801c6020850152600181015460408501520154910152565b9190916fffffffffffffffffffffffffffffffff80809416911601918211612cf557565b91908110156127265760051b0190565b3573ffffffffffffffffffffffffffffffffffffffff811681036125da5790565b73ffffffffffffffffffffffffffffffffffffffff80911690604080517faa6ca8080000000000000000000000000000000000000000000000000000000081528181600481875afa9081156133b757600090819261336e575b5082517f69454b8600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116602482015260208180604481015b0381867f0000000000000000000000000000000000000000000000000000000000000000165afa918215613364575060009161332b575b50161490565b906020823d821161335c575b81613344602093836128d2565b810103126108ef575061335690612dae565b38613325565b3d9150613337565b513d6000823e3d90fd5b91508282813d83116133b0575b61338581836128d2565b810103126108ef57506020816133a8826133a16132ee95612dae565b9201612dae565b92509061329b565b503d61337b565b82513d6000823e3d90fd5b604051906133cf826128b6565b60006060838281528260208201528260408201520152565b9190612a32906133f56133c2565b5033600052600660205260406000209361340f8554615554565b6040519261341c846128b6565b6fffffffffffffffffffffffffffffffff90814216855216602084015260408301526060820152809361317c565b6134526133c2565b5073ffffffffffffffffffffffffffffffffffffffff6000911681526006602052604091828220928354156135db575b61348e61026e85612711565b906134a360608301928284519101519061384b565b6134b46134ae61533e565b8561384b565b908582820192831291129080158216911516176135ae578251908482019186868412911290801582169115161761358157906134ef91613608565b91518484820194851291129080158216911516176135545792613551949261354c928561026e965193613521856128b6565b6fffffffffffffffffffffffffffffffff42168552602085015283015260608201526131a483612711565b612711565b90565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b61360381516135e9816128b6565b84815284602082015284838201528460608201528561317c565b613482565b7f800000000000000000000000000000000000000000000000000000000000000080821490811561372a575b506137005760008112156136f75761365d816000035b60008412156136f0578360000390613734565b917f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116136b9576000917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff911813156136b5575090565b0390565b60449250604051917ffdd8c1d700000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b8390613734565b61365d8161364a565b60046040517fb3c754a3000000000000000000000000000000000000000000000000000000008152fd5b9050821438613634565b670de0b6b3a7640000917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff838309928083029283808610950394808603951461380e57828510156137d257908291096001821901821680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b82606492604051927f7639aaf0000000000000000000000000000000000000000000000000000000008452600484015260248301526044820152fd5b50508092501561381c570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f8000000000000000000000000000000000000000000000000000000000000000808214908115613969575b5061393f576000811215613936576138a0816000035b600084121561392f578360000390613973565b917f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116138f8576000917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff911813156136b5575090565b60449250604051917fcdaa009100000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b8390613973565b6138a08161388d565b60046040517f3406846c000000000000000000000000000000000000000000000000000000008152fd5b9050821438613877565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818309818302918280831092039180830391670de0b6b3a764000095868410156139fe579086910992146139f8577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106699350828211900360ee1b910360121c170290565b50500490565b604491604051917f90638d5000000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b73ffffffffffffffffffffffffffffffffffffffff908181169160008381526020908082526040918282205495825b878110613a74575050505050505050565b613a979082855284845261141587613a8e83898920612771565b50541689613b65565b613a63565b613aa5816143c1565b9073ffffffffffffffffffffffffffffffffffffffff9182821690600082815260208181526040928383205496835b888110613ae657505050505050505050565b613b609087865285855288887fe80cbe02b2d8cc16808f935cff6079782341d4f59921584a1451a05289922a2e8980898b613b328b8b613b288b878620612771565b50541680996150f7565b819483898396949552600284528181208b825284526007828220945220555582519182528a820152a3612ea0565b613ad4565b9190916040908151917e01b0b600000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff80861660049080828701526000978887602481877f0000000000000000000000000000000000000000000000000000000000000000165afa968715613d2a578997613d0e575b50885b8751811015613d02578088888888888f96613cfd978a613c1b85613c12858b612ecd565b51168c89613db8565b9298939a919690949c8682526020600b81528383208c613c3b8c85612ecd565b5116845281528b8484209e1695868452815283832088845281528383208c613c638c85612ecd565b5116845281528383209b8884526009825284842081613c828d86612ecd565b511685528252613cec8585209b888652600584528686208b8752845286862083613cac8388612ecd565b5116875284528686209a808752600a855287872084613ccb8489612ecd565b51168852855287872099875260038552878720908752845286862094612ecd565b511683525220555555555555612ea0565b613bee565b50505050505050509050565b613d239197503d808b833e6108d281836128d2565b9538613beb565b85513d8b823e3d90fd5b7fe80cbe02b2d8cc16808f935cff6079782341d4f59921584a1451a05289922a2e6040613d6a613d63846143c1565b85856150f7565b73ffffffffffffffffffffffffffffffffffffffff809516948560005260026020528360002096169586600052602052818360002060076020528285600020555582519182526020820152a3565b91909273ffffffffffffffffffffffffffffffffffffffff90818516600091818352602096600788526040938481205415156000146143095784517f318a678c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048083019190915292881660248201529189836044817f00000000000000000000000000000000000000000000000000000000000000008b165afa9283156142ff5782936142d0575b508299858352600b815287878420991698898452815286832054938385820395128186128116918613901516176142a45786517f2a2856af0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000891682828581845afa91821561426857849184918794614272575b508a51928380927ffb9d9b4d0000000000000000000000000000000000000000000000000000000082525afa908115614268578591614235575b50613f52613f57928761384b565b613608565b908185039484831281871281169187139015161761415857868452600a81528784208a85528152613f978885205492888652600883528986205490613608565b91848382019384129112908015821691151617614158578197878552600982528085208b86528252613fd88186205496898752600784528287205490613608565b9585878201978812911290801582169115161761420957859a839a879d1692838752600381528287208a8852815282872082885281528287205497848852600282528388208b89528252838820548589528783528489208c8a528352848920848a52835284892054918983820393128184128116918413901516176141dd57906140619161384b565b9787898201998a1291129080158216911516176141b157879980158015614196575b80614184575b614099575b505050505050505050565b909192938781969798999a9b505287825260016140c7858a20828552868b20848c528552868b205490612771565b500154948852600582528388209088528152828720918752528420549184838203931281841281169184139015161761415857906141049161384b565b9282848201948512911290801582169115161761412c5750509038808080808080808061408e565b9060116024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b6024846011857f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b50848852878252838820541515614089565b50848852600182528388208189528252838820541515614083565b6024876011887f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b60248960118a7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b6024856011867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b90508281813d8311614261575b61424c81836128d2565b8101031261425d5751613f52613f44565b8480fd5b503d614242565b89513d87823e3d90fd5b9250925081813d831161429d575b61428a81836128d2565b8101031261425d57828491519238613f0a565b503d614280565b6024836011847f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b9092508981813d83116142f8575b6142e881836128d2565b810103126105c357519138613e78565b503d6142de565b86513d84823e3d90fd5b600b8952848120968616808252968952848120549790951680865260048952848620848752895284862087875289528486205484875260098a528587208888528a528587205482885260058b528688208689528b528688208989528b5286882054868952600a8c528789208a8a528c528789205493895260038c52878920968952958b52868820988852979099529390942054959695919350565b90670de0b6b3a764000091828102928184051490151715612cf557565b90600091600073ffffffffffffffffffffffffffffffffffffffff80921681526020600681526040918281209283549282957f000000000000000000000000000000000000000000000000000000000000000016905b8487106144275750505050505050565b90919293949597600261443a8a89612755565b50015461445861444a8b8a612755565b50916001809301549061384b565b908551917f4df7e3d0000000000000000000000000000000000000000000000000000000008352600492858185818a5afa908115614619578d908a926145e3575b506144a76144b1918d612755565b505460801c6143a4565b8851907fb1373929000000000000000000000000000000000000000000000000000000008252878287818c5afa9182156145d9578b926145a4575b5061450192916144fb91614623565b9061384b565b9182670de0b6b3a76400000192831216614578579061451f9161384b565b9186838201938412911290801582169115161761454c57506145419098612ea0565b959493929190614417565b8560116024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b6024886011857f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b9091508781813d83116145d2575b6145bc81836128d2565b810103126145ce5751906144fb6144ec565b8a80fd5b503d6145b2565b8a513d8d823e3d90fd5b809250878092503d8311614612575b6145fc81836128d2565b8101031261460e57518c6144a7614499565b8880fd5b503d6145f2565b88513d8b823e3d90fd5b8061463d57506000906135515750670de0b6b3a764000090565b90670de0b6b3a76400008103614651575090565b6146669061466161355193614f62565b61384b565b614685565b801561381c576ec097ce7bc90715b34b9f10000000000590565b60008112156146d0577ffffffffffffffffffffffffffffffffffffffffffffffffcc22e87f6eb468eeb81126146ca576146c190600003614685565b6135519061466b565b50600090565b680a688906bd8b000000811215614f3157670de0b6b3a764000080604092831b05907780000000000000000000000000000000000000000000000067ff000000000000008316614e14575b66ff0000000000008316614d0c575b65ff00000000008316614c0c575b64ff000000008316151580614b04575b614a14575b62ff0000831661492c575b61ff00831661484c575b60ff8316614775575b02911c60bf031c90565b6080831661483a575b838316614828575b60208316614816575b60108316614804575b600883166147f2575b600483166147e0575b600283166147ce575b600183161561476b576801000000000000000102831c61476b565b6801000000000000000102831c6147b3565b6801000000000000000302831c6147aa565b6801000000000000000602831c6147a1565b6801000000000000000b02831c614798565b6801000000000000001602831c61478f565b6801000000000000002c02831c614786565b6801000000000000005902831c61477e565b618000831661491a575b6140008316614908575b61200083166148f6575b61100083166148e4575b61080083166148d2575b61040083166148c0575b61020083166148ae575b61010083161561476257680100000000000000b102831c614762565b6801000000000000016302831c614892565b680100000000000002c602831c614888565b6801000000000000058c02831c61487e565b68010000000000000b1702831c614874565b6801000000000000162e02831c61486a565b68010000000000002c5d02831c614860565b680100000000000058b902831c614856565b628000008316614a02575b6240000083166149f0575b6220000083166149de575b6210000083166149cc575b6208000083166149ba575b6204000083166149a8575b620200008316614996575b62010000831615614758576801000000000000b17202831c614758565b680100000000000162e402831c614979565b6801000000000002c5c802831c61496e565b68010000000000058b9102831c614963565b680100000000000b172102831c614958565b68010000000000162e4302831c61494d565b680100000000002c5c8602831c614942565b6801000000000058b90c02831c614937565b63800000008316614af2575b63400000008316614ae0575b63200000008316614ace575b63100000008316614abc575b63080000008316614aaa575b63040000008316614a98575b63020000008316614a86575b630100000083161561474d5768010000000000b1721802831c61474d565b6801000000000162e43002831c614a68565b68010000000002c5c86002831c614a5c565b680100000000058b90c002831c614a50565b6801000000000b17217f02831c614a44565b680100000000162e42ff02831c614a38565b6801000000002c5c85fe02831c614a2c565b68010000000058b90bfc02831c614a20565b6480000000008416614bf8575b6440000000008416614be4575b6420000000008416614bd0575b6410000000008416614bbc575b6408000000008416614ba8575b6404000000008416614b94575b6402000000008416614b80575b6401000000008416156147485790680100000000b17217f802841c90614748565b9068010000000162e42ff102841c90614b5f565b90680100000002c5c85fe302841c90614b52565b906801000000058b90bfce02841c90614b45565b9068010000000b17217fbb02841c90614b38565b906801000000162e42fff002841c90614b2b565b9068010000002c5c8601cc02841c90614b1e565b90680100000058b90c0b4902841c90614b11565b658000000000008316614cfa575b654000000000008316614ce8575b652000000000008316614cd6575b651000000000008316614cc4575b650800000000008316614cb2575b650400000000008316614ca0575b650200000000008316614c8e575b65010000000000831615614738576801000000b17218355102831c614738565b680100000162e430e5a202831c614c6e565b6801000002c5c863b73f02831c614c60565b68010000058b90cf1e6e02831c614c52565b680100000b1721bcfc9a02831c614c44565b68010000162e43f4f83102831c614c36565b680100002c5c89d5ec6d02831c614c28565b6801000058b91b5bc9ae02831c614c1a565b66800000000000008316614e02575b66400000000000008316614df0575b66200000000000008316614dde575b66100000000000008316614dcc575b66080000000000008316614dba575b66040000000000008316614da8575b66020000000000008316614d96575b660100000000000083161561472a5768010000b17255775c0402831c61472a565b6801000162e525ee054702831c614d75565b68010002c5cc37da949202831c614d66565b680100058ba01fb9f96d02831c614d57565b6801000b175effdc76ba02831c614d48565b680100162f3904051fa102831c614d39565b6801002c605e2e8cec5002831c614d2a565b68010058c86da1c09ea202831c614d1b565b6780000000000000008316614f12575b6740000000000000008316614f00575b6720000000000000008316614eee575b6710000000000000008316614edc575b6708000000000000008316614eca575b6704000000000000008316614eb8575b6702000000000000008316614ea6575b67010000000000000083161561471b57680100b1afa5abcbed6102831c61471b565b68010163da9fb33356d802831c614e84565b680102c9a3e778060ee702831c614e74565b6801059b0d31585743ae02831c614e64565b68010b5586cf9890f62a02831c614e54565b6801172b83c7d517adce02831c614e44565b6801306fe0a31b7152df02831c614e34565b5077b504f333f9de648480000000000000000000000000000000614e24565b602490604051907fe69458f90000000000000000000000000000000000000000000000000000000082526004820152fd5b806000808313156150c657670de0b6b3a76400009283811261505857506001925b808305906fffffffffffffffffffffffffffffffff821160071b91821c9167ffffffffffffffff831160061b92831c63ffffffff811160051b90811c61ffff811160041b90811c60ff811160031b90811c91600f831160021b92831c936001978860038711811b96871c11961717171717171781810294811d9082821461504c57506706f05b59d3b20000905b8482136150205750505050500290565b808391020590671bc16d674ec8000082121561503f575b831d90615010565b8091950194831d90615037565b93505093925050020290565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9392508015615099576ec097ce7bc90715b34b9f10000000000591614f83565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526012600452fd5b602483604051907f613f4fba0000000000000000000000000000000000000000000000000000000082526004820152fd5b9092919273ffffffffffffffffffffffffffffffffffffffff809216916000918383526020958387526040926001615144858720828b52838789209616958689528b528688205490612771565b500154907f000000000000000000000000000000000000000000000000000000000000000016918451917fdb1d0fd50000000000000000000000000000000000000000000000000000000083528983600481875afa9283156108e157908a9188946152e8575b506004936151b791614623565b938651938480927f9faa3c910000000000000000000000000000000000000000000000000000000082525afa9182156152de5786926152a9575b5061520092916144fb91614623565b9581845260078152828420549484526002815282842091845252812054918183860393128584128116908685139015161761527c5781838201938412911290801582169115161761524f575090565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526011600452fd5b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b9091508881813d83116152d7575b6152c181836128d2565b810103126152d35751906144fb6151f1565b8580fd5b503d6152b7565b85513d88823e3d90fd5b828193929495503d831161531a575b61530181836128d2565b810103126153165751919089906151b76151aa565b8680fd5b503d6152f7565b51906fffffffffffffffffffffffffffffffff821682036125da57565b600060409081518180602092838101907f8988bc690000000000000000000000000000000000000000000000000000000082523360248201528260448201526044815261538a816128b6565b51907f00000000000000000000000000000000000000000000000000000000000000005afa6153b7612b59565b906154cc575b508251907f6c8ae38c000000000000000000000000000000000000000000000000000000008252808260048173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9384156108915750829361549c575b505061545d7f000000000000000000000000000000000000000000000000000000000000000042612d89565b907f8000000000000000000000000000000000000000000000000000000000000000821461524f57916144fb6154979261355194036143a4565b6157cb565b9080929350813d83116154c5575b6154b481836128d2565b810103126125da5751903880615431565b503d6154aa565b6080818096959496518101031261425d576000839495606094516154ef816128b6565b6154fa858501615321565b8152615507878501615321565b858201526080868501519488830195865201519586910152931380615534575b156153bd57925050505190565b503360005260068252600161554b85600020612711565b50015415615527565b801590811591826157b4575b61567d575b50506040517f6c8ae38c00000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa90811561567157600091615640575b506156067f000000000000000000000000000000000000000000000000000000000000000042612d89565b7f80000000000000000000000000000000000000000000000000000000000000008114612cf557613551916144fb615497926000036143a4565b906020823d8211615669575b81615659602093836128d2565b810103126108ef575051386155db565b3d915061564c565b6040513d6000823e3d90fd5b604080517f8988bc6900000000000000000000000000000000000000000000000000000000602082019081523360248301526044808301949094529281526156c66064826128d2565b60008093819251907f00000000000000000000000000000000000000000000000000000000000000005afa926156fa612b59565b93615707575b5050615565565b6080848051810103126108eb576060908251615722816128b6565b61572e60208701615321565b815261573b848701615321565b60208201526080838701519685830197885201519283910152600014615776575090338152600c602052206157708154612ea0565b90555190565b82129182615793575b505061578f575038808080615700565b5190565b338152600660205220600191506157a990612711565b50015415388061577f565b5033600052600c6020528060406000205410615560565b7ffffffffffffffffffffffffffffffffffffffffffffffffdc0d0570925a462ce81126146ca57680736ea4425c11ac63181121561582057670de0b6b3a76400006714057b7ef767814f613551920205614685565b602490604051907f99bb75410000000000000000000000000000000000000000000000000000000082526004820152fdfea26469706673582212206d980e4cd47cab685476cb617d4b7006743be2fe3560b22c0692ba7cc77ce08764736f6c63430008120033000000000000000000000000a70de8592cd98edc01988d68b5b5bb3cc593fe88000000000000000000000000b4ca9fc69dc07dd9a22fed0e9c7edd0622e699820000000000000000000000007106fba37cd79eff07ae662e729d08fcf8ed9c74000000000000000000000000161bceef7fb69d8f4d3dc55693d22ab33f791d7b0000000000000000000000006c2dba00f8b7308f475dc9525054a02228ac4d21