0 txs
2 calls
constructor
constructor(address _curveAddressProvider, address _addyRegistry)
functions
ADDY_REGISTRY
viewfunction ADDY_REGISTRY() view returns (address)
canGovern
viewfunction canGovern(address _address) view returns (bool)
CURVE_META_REGISTRY
viewfunction CURVE_META_REGISTRY() view returns (address)
CURVE_REGISTRIES
viewfunction CURVE_REGISTRIES() view returns (tuple)
getAccessForLego
viewfunction getAccessForLego(address _user) view returns (address, string, uint256)
getAddLiqAmountsIn
viewfunction getAddLiqAmountsIn(address _pool, address _tokenA, address _tokenB, uint256 _availAmountA, uint256 _availAmountB) view returns (uint256, uint256, uint256)
getBestSwapAmountIn
viewfunction getBestSwapAmountIn(address _tokenIn, address _tokenOut, uint256 _amountOut) view returns (address, uint256)
getBestSwapAmountOut
viewfunction getBestSwapAmountOut(address _tokenIn, address _tokenOut, uint256 _amountIn) view returns (address, uint256)
getCoreRouterPool
viewfunction getCoreRouterPool() view returns (address)
getDeepestLiqPool
viewfunction getDeepestLiqPool(address _tokenA, address _tokenB) view returns (tuple)
getLpToken
viewfunction getLpToken(address _pool) view returns (address)
getPoolForLpToken
viewfunction getPoolForLpToken(address _lpToken) view returns (address)
getPriceUnsafe
viewfunction getPriceUnsafe(address _pool, address _targetToken, address _oracleRegistry) view returns (uint256)
getPriceUnsafe
viewfunction getPriceUnsafe(address _pool, address _targetToken) view returns (uint256)
getRegistries
viewfunction getRegistries() view returns (address[])
getRemoveLiqAmountsOut
viewfunction getRemoveLiqAmountsOut(address _pool, address _tokenA, address _tokenB, uint256 _lpAmount) view returns (uint256, uint256)
getSwapAmountIn
viewfunction getSwapAmountIn(address _pool, address _tokenIn, address _tokenOut, uint256 _amountOut) view returns (uint256)
getSwapAmountOut
viewfunction getSwapAmountOut(address _pool, address _tokenIn, address _tokenOut, uint256 _amountIn) view returns (uint256)
govChangeDelay
viewfunction govChangeDelay() view returns (uint256)
governance
viewfunction governance() view returns (address)
hasClaimableRewards
viewfunction hasClaimableRewards(address _user) view returns (bool)
hasPendingGovChange
viewfunction hasPendingGovChange() view returns (bool)
isActivated
viewfunction isActivated() view returns (bool)
legoId
viewfunction legoId() view returns (uint256)
MAX_GOV_CHANGE_DELAY
viewfunction MAX_GOV_CHANGE_DELAY() view returns (uint256)
MIN_GOV_CHANGE_DELAY
viewfunction MIN_GOV_CHANGE_DELAY() view returns (uint256)
pendingGov
viewfunction pendingGov() view returns (tuple)
activate
nonpayablefunction activate(bool _shouldActivate)
addLiquidity
nonpayablefunction addLiquidity(uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, int24 _tickLower, int24 _tickUpper, uint256 _amountA, uint256 _amountB, uint256 _minAmountA, uint256 _minAmountB, uint256 _minLpAmount, address _recipient, address _oracleRegistry) returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256)
addLiquidity
nonpayablefunction addLiquidity(uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, int24 _tickLower, int24 _tickUpper, uint256 _amountA, uint256 _amountB, uint256 _minAmountA, uint256 _minAmountB, uint256 _minLpAmount, address _recipient) returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256)
cancelGovernanceChange
nonpayablefunction cancelGovernanceChange()
changeGovernance
nonpayablefunction changeGovernance(address _newGov)
claimRewards
nonpayablefunction claimRewards(address _user, address _market, address _rewardToken, uint256 _rewardAmount, bytes32 _proof)
confirmGovernanceChange
nonpayablefunction confirmGovernanceChange()
recoverFunds
nonpayablefunction recoverFunds(address _asset, address _recipient) returns (bool)
removeLiquidity
nonpayablefunction removeLiquidity(uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, address _lpToken, uint256 _liqToRemove, uint256 _minAmountA, uint256 _minAmountB, address _recipient, address _oracleRegistry) returns (uint256, uint256, uint256, uint256, uint256, bool)
removeLiquidity
nonpayablefunction removeLiquidity(uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, address _lpToken, uint256 _liqToRemove, uint256 _minAmountA, uint256 _minAmountB, address _recipient) returns (uint256, uint256, uint256, uint256, uint256, bool)
setGovernanceChangeDelay
nonpayablefunction setGovernanceChangeDelay(uint256 _numBlocks)
setLegoId
nonpayablefunction setLegoId(uint256 _legoId) returns (bool)
swapTokens
nonpayablefunction swapTokens(uint256 _amountIn, uint256 _minAmountOut, address[] _tokenPath, address[] _poolPath, address _recipient, address _oracleRegistry) returns (uint256, uint256, uint256, uint256)
swapTokens
nonpayablefunction swapTokens(uint256 _amountIn, uint256 _minAmountOut, address[] _tokenPath, address[] _poolPath, address _recipient) returns (uint256, uint256, uint256, uint256)
events
CurveActivated
event CurveActivated(bool isActivated)
CurveFundsRecovered
event CurveFundsRecovered(address indexed asset, address indexed recipient, uint256 amount)
CurveLegoIdSet
event CurveLegoIdSet(uint256 legoId)
CurveLiquidityAdded
event CurveLiquidityAdded(address indexed sender, address indexed tokenA, address indexed tokenB, uint256 amountA, uint256 amountB, uint256 lpAmountReceived, uint256 usdValue, address recipient)
CurveLiquidityRemoved
event CurveLiquidityRemoved(address sender, address indexed pool, address indexed tokenA, address indexed tokenB, uint256 amountA, uint256 amountB, address lpToken, uint256 lpAmountBurned, uint256 usdValue, address recipient)
CurveSwap
event CurveSwap(address indexed sender, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut, uint256 usdValue, uint256 numTokens, address recipient)
GovChangeCancelled
event GovChangeCancelled(address indexed cancelledGov, uint256 initiatedBlock, uint256 confirmBlock)
GovChangeConfirmed
event GovChangeConfirmed(address indexed prevGov, address indexed newGov, uint256 initiatedBlock, uint256 confirmBlock)
GovChangeDelaySet
event GovChangeDelaySet(uint256 delayBlocks)
GovChangeInitiated
event GovChangeInitiated(address indexed prevGov, address indexed newGov, uint256 confirmBlock)
errors
No errors.
creation bytecode
0x615be651503461043b576020615f485f395f518060a01c61043b57610140526020615f685f395f518060a01c61043b5761016052610140511561004757610160511515610049565b5f5b1561043b5761016051615be65260016007555f60405261016051606052604036608037610074610345565b6101405163493f4f746101805260076101a0526020610180602461019c845afa6100a0573d5f5f3e3d5ffd5b3d602081183d602010021880610180016101a01161043b57610180518060a01c61043b576101c052506101c0905051615b06526101405163493f4f7461018052600c6101a0526020610180602461019c845afa6100ff573d5f5f3e3d5ffd5b3d602081183d602010021880610180016101a01161043b57610180518060a01c61043b576101c052506101c09050516103c0526101405163493f4f746101e052600d6102005260206101e060246101fc845afa61015e573d5f5f3e3d5ffd5b3d602081183d6020100218806101e0016102001161043b576101e0518060a01c61043b5761022052506102209050516103e0526101405163493f4f7461024052600b610260526020610240602461025c845afa6101bd573d5f5f3e3d5ffd5b3d602081183d602010021880610240016102601161043b57610240518060a01c61043b576102805250610280905051610400526101405163493f4f746102a05260066102c05260206102a060246102bc845afa61021c573d5f5f3e3d5ffd5b3d602081183d6020100218806102a0016102c01161043b576102a0518060a01c61043b576102e052506102e0905051610420526101405163493f4f74610300526003610320526020610300602461031c845afa61027b573d5f5f3e3d5ffd5b3d602081183d602010021880610300016103201161043b57610300518060a01c61043b576103405250610340905051610440526101405163493f4f74610360526012610380526020610360602461037c845afa6102da573d5f5f3e3d5ffd5b3d602081183d602010021880610360016103801161043b57610360518060a01c61043b576103a052506103a0905051610460525f6006905b8060051b6103c001518160051b606001615ac60152600101818118610312575050615ac661043f61000039615c06610000f35b6040511561035457600161035a565b60605115155b1561043b576040511561036d576040515f555b6060511561037c576060516005555b6040608060c05e60c051610391576001610396565b60e051155b15610410576060511561043b5760605163ed860576610100526020610100600461011c845afa6103c8573d5f5f3e3d5ffd5b60203d1061043b5761010090505160c05260605163c55728b0610100526020610100600461011c845afa6103fe573d5f5f3e3d5ffd5b60203d1061043b5761010090505160e0525b60e05160c051101561043b5760c051615ac65260e051615ae652606051156104395760c0516004555b565b5f80fd5f3560e01c60056005600583060261596501601b395f5160088160ff16838360181c0260181c0660031b8260081c61ffff1601601839505f51818160201c14600336111615612d2b578061fffe16361034826001160217615961578060101c61ffff16565b6004358060a01c615961576102605260206102605161016052610088610280612dff565b610280f35b600354151560405260206040f35b6004358060a01c61596157610160526100b56101e0612d2f565b6101e0805160208160051b0180836101805e505050335f6101e0525f610180516002811161596157801561010a57905b8060051b6101a0015183186100ff5760016101e05261010a565b6001018181186100e5575b50506101e051905015615961576101605160016101e0525f610180516002811161596157801561015a57905b8060051b6101a00151831861014f575f6101e05261015a565b600101818118610136575b50506101e05190501561596157610160513b156159615761017c6101e0612e5e565b6101e0511561018f576101605115615961575b4360045480820182811061596157905090506101e05261016051600155436002556101e051600355610160515f547fa8e5a115434955f3c91f53089861da9b575399fbfbc1fc8b345ae6a18b0f193e6101e051610200526020610200a3005b60015460405260025460605260035460805260405115615961576080511561021b5760805143101561021d565b5f5b15615961576040513318615961575f5460a0526040515f555f6001555f6002555f60035560405160a0517fb5dfe18540f75a87f8c7963e7f4942e9392be572b787d486d7868ac53a5bdf5b6040606060c05e604060c0a3005b3361016052610286610260612dff565b61026051156159615760015461026052600254610280526003546102a0526102a05115615961575f6001555f6002555f600355610260517f4301277e72c59c5071608882749a82a210817721ba94066744cea89211d3838060406102806102c05e60406102c0a2005b600354615961573361016052610306610260612dff565b6102605115615961576020615ac65f395f516004351015610327575f610336565b6020615ae65f395f5160043511155b15615961576004356004557fb8d7f2c6802e04bfd3abb436c2b7b52bd4b37872b53bd1150146816d66ac7de2600435610260526020610260a1005b5f5460405260206040f35b60015460405260025460605260035460805260606040f35b60045460405260206040f35b6020615ac660403960206040f35b6020615ae660403960206040f35b602080604052806040015f6020615b066101e03960016101c0525f6101c0518084528060051b5f82600a811161596157801561041257905b8060051b6101e001518160051b6020890101526001018181186103f4575b5050820160200191505090509050810190506040f35b6004358060a01c6159615760405260605f60605280608052806060015f81528051806020830101601f825f03163682375050601f19601f825160200101169050810190505f60a0526060f35b5f610c205261048e565b60a4358060a01c61596157610c20525b60443560040160058135116159615780355f81600581116159615780156104d757905b8060051b6020850101358060a01c615961578160051b610ac001526001018181186104b1575b505080610aa052505060643560040160048135116159615780355f816004811161596157801561052957905b8060051b6020850101358060a01c615961578160051b610b800152600101818118610503575b505080610b605250506084358060a01c61596157610c00526007541561596157610aa051610c4052610b6051610c60526002610c40511061596157610c405160018103818111615961579050610c60511861596157610aa05115615961575f60051b610ac00151610c8052610c405160018103818111615961579050610aa0518110156159615760051b610ac00151610ca052610c80516370a08231610ce05230610d00526020610ce06024610cfc845afa6105e7573d5f5f3e3d5ffd5b60203d1061596157610ce0905051610cc052600435610c80516370a08231610d005233610d20526020610d006024610d1c845afa610627573d5f5f3e3d5ffd5b60203d1061596157610d0090505180828118828410021890509050610ce052610ce0511561596157610c80516323b872dd610d005233610d205230610d4052610ce051610d60526020610d006064610d1c5f855af1610688573d5f5f3e3d5ffd5b3d61069f57803b15615961576001610d80526106c9565b3d602081183d602010021880610d0001610d201161596157610d00518060011c61596157610d8052505b610d809050511561596157610ce051610c80516370a08231610d005230610d20526020610d006024610d1c845afa610703573d5f5f3e3d5ffd5b60203d1061596157610d0090505180828118828410021890509050610ce0526020615b06610d0039610ce051610d20525f610c4051600181038181116159615790506005811161596157801561082f57905b80610d4052610d4051610aa0518110156159615760051b610ac00151610d6052610d405160018101818110615961579050610aa0518110156159615760051b610ac00151610d8052610d4051610b60518110156159615760051b610b800151610da052610c0051610dc052610c405160028103818111615961579050610d405110156107e15730610dc0525b610da05161080052610d605161082052610d805161084052610d205161086052610dc05161088052610d00516108a05261081c610de061333b565b610de051610d2052600101818118610755575b5050610d2051610d4052602435610d40511061596157610c80516370a08231610d805230610da0526020610d806024610d9c845afa610870573d5f5f3e3d5ffd5b60203d1061596157610d80905051610d60525f610d8052610cc051610d6051111561094a57610d6051610cc0518082038281116159615790509050610d8052610c805163a9059cbb610da05233610dc052610d8051610de0526020610da06044610dbc5f855af16108e3573d5f5f3e3d5ffd5b3d6108fa57803b15615961576001610e0052610924565b3d602081183d602010021880610da001610dc01161596157610da0518060011c61596157610e0052505b610e009050511561596157610ce051610d80518082038281116159615790509050610ce0525b610c8051604052610ce051606052610ca051608052610d405160a052600160c052610c205160e05261097d610dc0613819565b610dc051610da052610ca051610c8051337f78ab8653aadeb22d8dba97e3fd9cda7a2a22da381f9fe4585d117bbfa1d24f74610ce051610dc052610d4051610de052610da051610e0052610c4051610e2052610c0051610e405260a0610dc0a4610ce051610dc052610d4051610de0526040610d80610e005e6080610dc0f35b5f6108c052610a18565b610184358060a01c615961576108c0525b6024358060a01c61596157610800526044358060a01c61596157610820526064358060a01c61596157610840526084358060020b8118615961576108605260a4358060020b81186159615761088052610164358060a01c615961576108a05260075415615961576108205115610a9357610840511515610a95565b5f5b156159615761084051610820511461596157610820516370a082316109005230610920526020610900602461091c845afa610ad2573d5f5f3e3d5ffd5b60203d10615961576109009050516108e052610840516370a082316109205230610940526020610920602461093c845afa610b0f573d5f5f3e3d5ffd5b60203d10615961576109209050516109005260c435610820516370a082316109405233610960526020610940602461095c845afa610b4f573d5f5f3e3d5ffd5b60203d106159615761094090505180828118828410021890509050610920526109205115610cce57610820516323b872dd6109405233610960523061098052610920516109a0526020610940606461095c5f855af1610bb0573d5f5f3e3d5ffd5b3d610bc757803b156159615760016109c052610bf1565b3d602081183d602010021880610940016109601161596157610940518060011c615961576109c052505b6109c0905051156159615761092051610820516370a082316109405230610960526020610940602461095c845afa610c2b573d5f5f3e3d5ffd5b60203d106159615761094090505180828118828410021890509050610920526108205163095ea7b361094052610800516109605261092051610980526020610940604461095c5f855af1610c81573d5f5f3e3d5ffd5b3d610c9857803b156159615760016109a052610cc2565b3d602081183d602010021880610940016109601161596157610940518060011c615961576109a052505b6109a090505115615961575b60e435610840516370a082316109605233610980526020610960602461097c845afa610cfc573d5f5f3e3d5ffd5b60203d106159615761096090505180828118828410021890509050610940526109405115610e7b57610840516323b872dd610960523361098052306109a052610940516109c0526020610960606461097c5f855af1610d5d573d5f5f3e3d5ffd5b3d610d7457803b156159615760016109e052610d9e565b3d602081183d602010021880610960016109801161596157610960518060011c615961576109e052505b6109e0905051156159615761094051610840516370a082316109605230610980526020610960602461097c845afa610dd8573d5f5f3e3d5ffd5b60203d106159615761096090505180828118828410021890509050610940526108405163095ea7b3610960526108005161098052610940516109a0526020610960604461097c5f855af1610e2e573d5f5f3e3d5ffd5b3d610e4557803b156159615760016109c052610e6f565b3d602081183d602010021880610960016109801161596157610960518060011c615961576109c052505b6109c090505115615961575b6109205115610e8b576001610e92565b6109405115155b15615961576020615b066109603960606108006104605e610960516104c052610ebc610a2061305e565b610a2060a0816109805e505f610a205260016109e05118610f0f5760a061098060405e604061092060e05e61014435610120526108a05161014052610f02610a4061398a565b610a4051610a2052611081565b60026109e05118610f525760a061098060405e604061092060e05e61014435610120526108a05161014052610f45610a40613c50565b610a4051610a2052611081565b60086109e05118610f955760a061098060405e604061092060e05e61014435610120526108a05161014052610f88610a40613cd1565b610a4051610a2052611081565b60046109e05118610fd85760a061098060405e604061092060e05e61014435610120526108a05161014052610fcb610a40613d5e565b610a4051610a2052611081565b60106109e05118611046576109605163e4d332a9610a405261098051610a60526020610a406024610a5c845afa611011573d5f5f3e3d5ffd5b3d602081183d602010021880610a4001610a601161596157610a40518060011c61596157610a805250610a8090505115611048565b5f5b156110815760a061098060405e604061092060e05e61014435610120526108a05161014052611078610aa0613deb565b610aa051610a20525b610a205115615961575f610a40526109205115611218576108205163095ea7b3610a605261080051610a80525f610aa0526020610a606044610a7c5f855af16110cc573d5f5f3e3d5ffd5b3d6110e357803b15615961576001610ac05261110d565b3d602081183d602010021880610a6001610a801161596157610a60518060011c61596157610ac052505b610ac09050511561596157610820516370a08231610a805230610aa0526020610a806024610a9c845afa611143573d5f5f3e3d5ffd5b60203d1061596157610a80905051610a60526108e051610a6051111561121857610a60516108e0518082038281116159615790509050610a40526108205163a9059cbb610a805233610aa052610a4051610ac0526020610a806044610a9c5f855af16111b1573d5f5f3e3d5ffd5b3d6111c857803b15615961576001610ae0526111f2565b3d602081183d602010021880610a8001610aa01161596157610a80518060011c61596157610ae052505b610ae0905051156159615761092051610a40518082038281116159615790509050610920525b5f610a605261094051156113a6576108405163095ea7b3610a805261080051610aa0525f610ac0526020610a806044610a9c5f855af161125a573d5f5f3e3d5ffd5b3d61127157803b15615961576001610ae05261129b565b3d602081183d602010021880610a8001610aa01161596157610a80518060011c61596157610ae052505b610ae09050511561596157610840516370a08231610aa05230610ac0526020610aa06024610abc845afa6112d1573d5f5f3e3d5ffd5b60203d1061596157610aa0905051610a805261090051610a805111156113a657610a8051610900518082038281116159615790509050610a60526108405163a9059cbb610aa05233610ac052610a6051610ae0526020610aa06044610abc5f855af161133f573d5f5f3e3d5ffd5b3d61135657803b15615961576001610b0052611380565b3d602081183d602010021880610aa001610ac01161596157610aa0518060011c61596157610b0052505b610b00905051156159615761094051610a60518082038281116159615790509050610940525b6108205160405261092051606052610840516080526109405160a0525f60c0526108c05160e0526113d8610aa0613819565b610aa051610a80526108405161082051337f4cf5f6ae64ebfb55c3e6af3fc2d2cc5ddbebf174a7e538b6aba9820aa94f2f976040610920610aa05e610a2051610ae052610a8051610b00526108a051610b205260a0610aa0a4610a2051610aa05261092051610ac05261094051610ae052610a8051610b00526040610a40610b205e5f610b605260e0610aa0f35b5f6108a052611481565b610124358060a01c615961576108a0525b6024358060a01c61596157610800526044358060a01c61596157610820526064358060a01c61596157610840526084358060a01c6159615761086052610104358060a01c6159615761088052600754156159615761082051156114e55760016114ec565b6108405115155b15615961576108405161082051146159615761082051156108c0526108c05161151957610840511561151c565b60015b6108e052610860516370a082316109205230610940526020610920602461093c845afa61154b573d5f5f3e3d5ffd5b60203d10615961576109209050516109005260a435610860516370a082316109405233610960526020610940602461095c845afa61158b573d5f5f3e3d5ffd5b60203d10615961576109409050518082811882841002189050905061092052610920511561596157610860516323b872dd6109405233610960523061098052610920516109a0526020610940606461095c5f855af16115ec573d5f5f3e3d5ffd5b3d61160357803b156159615760016109c05261162d565b3d602081183d602010021880610940016109601161596157610940518060011c615961576109c052505b6109c0905051156159615761092051610860516370a082316109405230610960526020610940602461095c845afa611667573d5f5f3e3d5ffd5b60203d106159615761094090505180828118828410021890509050610920526108605163095ea7b361094052610800516109605261092051610980526020610940604461095c5f855af16116bd573d5f5f3e3d5ffd5b3d6116d457803b156159615760016109a0526116fe565b3d602081183d602010021880610940016109601161596157610940518060011c615961576109a052505b6109a090505115615961576020615b066109403960606108006104605e610940516104c05261172e610a0061305e565b610a0060a0816109605e50604036610a003760016109c051186117e3576108e0516117965760a061096060405e6109205160e052604060c461010037610880516101405261177d610a406140d3565b610a40604081610a805e506040610a80610a005e611ae5565b60a06109606101205e6108c0516101c052610920516101e052604060c46102003761088051610240526117ca610a40614005565b610a40604081610a805e506040610a80610a005e611ae5565b60026109c05118611886576108e0516118395760a061096060405e6109205160e052604060c4610100376108805161014052611820610a40614324565b610a40604081610a805e506040610a80610a005e611ae5565b60a06109606101205e6108c0516101c052610920516101e052604060c461020037610880516102405261186d610a4061425e565b610a40604081610a805e506040610a80610a005e611ae5565b60086109c05118611939576108e0516118ec5760a061096060405e6109205160e05261082051610100526108405161012052604060c46101403761088051610180526118d3610a406144b5565b610a40604081610a805e506040610a80610a005e611ae5565b60a06109606101205e6108c0516101c052610920516101e052604060c4610200376108805161024052611920610a406143ea565b610a40604081610a805e506040610a80610a005e611ae5565b60046109c051186119dc576108e05161198f5760a061096060405e6109205160e052604060c4610100376108805161014052611976610a40614779565b610a40604081610a805e506040610a80610a005e611ae5565b60a06109606101205e6108c0516101c052610920516101e052604060c46102003761088051610240526119c3610a406146ae565b610a40604081610a805e506040610a80610a005e611ae5565b60106109c05118611a4a576109405163e4d332a9610a405261096051610a60526020610a406024610a5c845afa611a15573d5f5f3e3d5ffd5b3d602081183d602010021880610a4001610a601161596157610a40518060011c61596157610a805250610a8090505115611a4c565b5f5b15611ae5576108e051611a9c5760a061096060405e6109205160e052604060c4610100376108805161014052611a83610aa061490d565b610aa0604081610ae05e506040610ae0610a005e611ae5565b60a06109606101205e6108c0516101c052610920516101e052604060c4610200376108805161024052611ad0610aa061483f565b610aa0604081610ae05e506040610ae0610a005e5b610a005115611af5576001611afc565b610a205115155b15615961576108605163095ea7b3610a405261080051610a60525f610a80526020610a406044610a5c5f855af1611b35573d5f5f3e3d5ffd5b3d611b4c57803b15615961576001610aa052611b76565b3d602081183d602010021880610a4001610a601161596157610a40518060011c61596157610aa052505b610aa09050511561596157610860516370a08231610a605230610a80526020610a606024610a7c845afa611bac573d5f5f3e3d5ffd5b60203d1061596157610a60905051610a40525f610a605261090051610a40511115611c8657610a4051610900518082038281116159615790509050610a60526108605163a9059cbb610a805233610aa052610a6051610ac0526020610a806044610a9c5f855af1611c1f573d5f5f3e3d5ffd5b3d611c3657803b15615961576001610ae052611c60565b3d602081183d602010021880610a8001610aa01161596157610a80518060011c61596157610ae052505b610ae0905051156159615761092051610a60518082038281116159615790509050610920525b61082051604052610a005160605261084051608052610a205160a0525f60c0526108a05160e052611cb8610aa0613819565b610aa051610a80526108405161082051610800517f1a9e97919e194da1d9a5bcb235ef191c9382aae1875a17afe3f34858aa1da13e33610aa0526040610a00610ac05e61086051610b005261092051610b2052610a8051610b405261088051610b605260e0610aa0a46040610a00610aa05e610a8051610ae05261092051610b0052610a6051610b2052610a60511515610b405260c0610aa0f35b6004358060a01c615961576040526024358060a01c615961576060526044358060a01c61596157608052005b6004358060a01c615961576040525f60605260206060f35b6004358060a01c6159615760405260206020615b065f395f516337951049606052604051608052602060606024607c845afa611dd5573d5f5f3e3d5ffd5b3d602081183d602010021880606001608011615961576060518060a01c6159615760a0525060a09050f35b6004358060a01c6159615760405260206020615b065f395f5163bdf475c3606052604051608052602060606024607c845afa611e3e573d5f5f3e3d5ffd5b3d602081183d602010021880606001608011615961576060518060a01c6159615760a0525060a09050f35b5f60405260206040f35b6004358060a01c61596157610a60526024358060a01c61596157610a80526020615b06610aa039610aa05163a064072b611120526040610a606111405e610680611120604461113c845afa611eca573d5f5f3e3d5ffd5b3d61068081183d610680100218806111200161114011615961576111206111205161112001106159615761112051611120018161112001815160051b6020018201116159615760328151116159615780515f8160328111615961578015611f5357905b8060051b6020850101518060a01c615961578160051b6117e00152600101818118611f2d575b5050806117c0525050506117c09050805160208160051b018083610ac05e505050610ac051611f8d5760a0366111203760a061112061208d565b608036611120376040610a6060405e610ac05160208160051b0180610ac060805e5050610aa0516106e052611fc36111a0614c23565b6111a06080816112205e5060806112206111205e61112051611ff05760a0366111a03760a06111a061208d565b61112051611220526111205163ddca3f436111a05260206111a060046111bc845afa61201e573d5f5f3e3d5ffd5b60203d10615961576111a0905051620f424081049050611240526111805161126052610aa05163940494f16111e052611120516112005260206111e060246111fc845afa61206e573d5f5f3e3d5ffd5b60203d10615961576111e0905051611280526006546112a05260a06112205bf35b6004358060a01c6159615762012d80526024358060a01c6159615762012da0526040604062012d8060405e6044356080526120cc62012dc0614dfc565b62012dc0f35b6004358060a01c615961576040526024358060a01c615961576060526044358060a01c615961576080526020615bc65f395f5163ebf113f06164c052604060606164e05e606435616520526164406164c060646164dc845afa612137573d5f5f3e3d5ffd5b3d61644081183d616440100218806164c0016164e011615961576164c06164c0516164c00110615961576164c0516164c001816164c001815160081b6020018201116159615760648151116159615780515f816064811161596157801561222957905b8060081b6020850101856164c001610100820111615961578160081b61c94001815181526020820151602082015260408201518060011c6159615760408201526060820151606082015260808201518060a01c61596157608082015260a082015160a082015260c082015160c082015260e08201518060081c6159615760e0820152505060010181811861219a575b50508061c9205250505061c9209050805160208160081b01808360a05e5050505f6164c0525f60a0516064811161596157801561229557905b8060081b60c001610100816164e05e50616560516040511861228a57505060206165406122a2565b600101818118612262575b50505f6164e05260206164e05bf35b6004358060a01c6159615762012d80526024358060a01c6159615762012da0526044356122d25760016122d8565b60443519155b15612314575f62012dc0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62012de052604062012dc06123a9565b5f604052604062012d8060605e60443560a05261233362012de0614fa6565b62012de05162012dc05262012dc0516123595760403662012de037604062012de06123a9565b60403662012de037606062012d8060405e61237662012e20614dfc565b62012e2060408162012e605e50604062012e6062012de05e62012de05162012e205262012dc05162012e4052604062012e205bf35b6004358060a01c61596157610160526024358060a01c61596157610180526044358060a01c615961576101a0526064356123e65760016123ec565b60643519155b15612420577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101c05260206101c061243f565b6020606061016060405e60643560a05261243b6101c0614fa6565b6101c05bf35b6004358060a01c61596157610800526024358060a01c61596157610820526044358060a01c61596157610840526020615b066108603960806108006104605e61248b61092061305e565b61092060a0816108805e50610860516392e3cc2d610a205261080051610a4052610100610a206024610a3c845afa6124c5573d5f5f3e3d5ffd5b6101003d1061596157610a209050610100816109205e506108a05160088110156159615760051b6109200151610a20526108c05160088110156159615760051b6109200151610a4052610a205161251d576001612523565b610a4051155b1561253957606036610a60376060610a606126ff565b604036610a60376040606460a0376040610a2060e05e61255a610aa06150ba565b610aa08051610a60526020810151610a8052505f610aa05260016108e051186125a55760a061088060405e6040610a6060e05e612598610ac0615148565b610ac051610aa0526126d7565b60026108e051186125d85760a061088060405e6040610a6060e05e6125cb610ac0615401565b610ac051610aa0526126d7565b60086108e0511861260b5760a061088060405e6040610a6060e05e6125fe610ac061547e565b610ac051610aa0526126d7565b60046108e0511861263e5760a061088060405e6040610a6060e05e612631610ac06154f5565b610ac051610aa0526126d7565b60106108e051186126ac576108605163e4d332a9610ac05261088051610ae0526020610ac06024610adc845afa612677573d5f5f3e3d5ffd5b3d602081183d602010021880610ac001610ae01161596157610ac0518060011c61596157610b005250610b00905051156126ae565b5f5b156126d75760a061088060405e6040610a6060e05e6126ce610b20615572565b610b2051610aa0525b610aa0516126f057606036610ac0376060610ac06126ff565b6060610a60610ac05e6060610ac05bf35b6004358060a01c61596157610800526024358060a01c61596157610820526044358060a01c61596157610840526020615b066108603960806108006104605e61274b61092061305e565b61092060a0816108805e50610820511561276a5761084051151561276c565b5f5b156127a557604060a061088060405e604061082060e05e60643561012052610860516101405261279d61092061571d565b610920612a1e565b5f610920526108a05161094052610820516127c3576108c051610940525b60016108e05118612822576108805163cc2b27d761096052606435610980526109405180607f1c615961576109a0526020610960604461097c845afa61280b573d5f5f3e3d5ffd5b60203d1061596157610960905051610920526129ec565b60026108e051186128795761088051634fb08c5e6109605260643561098052610940516109a0526020610960604461097c845afa612862573d5f5f3e3d5ffd5b60203d1061596157610960905051610920526129ec565b60086108e051186128d05761088051634fb08c5e6109605260643561098052610940516109a0526020610960604461097c845afa6128b9573d5f5f3e3d5ffd5b60203d1061596157610960905051610920526129ec565b60046108e051186129275761088051634fb08c5e6109605260643561098052610940516109a0526020610960604461097c845afa612910573d5f5f3e3d5ffd5b60203d1061596157610960905051610920526129ec565b60106108e05118612995576108605163e4d332a96109605261088051610980526020610960602461097c845afa612960573d5f5f3e3d5ffd5b3d602081183d602010021880610960016109801161596157610960518060011c615961576109a052506109a090505115612997565b5f5b156129ec576108805163cc2b27d76109c0526064356109e0526109405180607f1c61596157610a005260206109c060446109dc845afa6129d9573d5f5f3e3d5ffd5b60203d10615961576109c0905051610920525b61092051610960525f6109805261082051612a0f575f6109605261092051610980525b60406109606109a05e60406109a05bf35b5f608052612a38565b6044358060a01c615961576080525b6004358060a01c615961576040526024358060a01c615961576060525f60a052602060a0f35b6004358060a01c61596157610260526024358060a01c61596157610280523361016052612a8c6102a0612dff565b6102a0511561596157610260516370a082316102c052306102e05260206102c060246102dc845afa612ac0573d5f5f3e3d5ffd5b60203d10615961576102c09050516102a05261028051612ae1576001612ae7565b61026051155b612af5576102a05115612af8565b60015b15612b0c575f6102e05260206102e0612bcb565b6102605163a9059cbb6102c05260406102806102e05e60206102c060446102dc5f855af1612b3c573d5f5f3e3d5ffd5b3d612b5357803b1561596157600161032052612b7d565b3d602081183d6020100218806102c0016102e011615961576102c0518060011c6159615761032052505b610320905051156159615761028051610260517f99fca77364f9ac1a598998cea2fa17c5d41a47484d47aa59457978d1e98b64796102a0516102c05260206102c0a360016102c05260206102c05bf35b6020615be65f395f516347be091a6040526002606052602060406024605c845afa612bfa573d5f5f3e3d5ffd5b3d602081183d602010021880604001606011615961576040518060a01c61596157608052506080905051331861596157600654604052604051612c3e576001612c47565b60043560405118155b15615961576004356006557f705a5f3df58d5b231655bd9003357b034889e29b59b581ae74637c0143208b4960043560605260206060a1600160605260206060f35b6004358060011c61596157610260523361016052612ca8610280612dff565b610280511561596157610260516007557f25da29bfc96a6986c83600a9ca761dd152a40d74be7c98ec4254a01d3e72477061026051610280526020610280a1005b6020615b0660403960206040f35b60c0615b2660403960c06040f35b60065460405260206040f35b60075460405260206040f35b6020615be660403960206040f35b5f5ffd5b5f6040525f5460a05260a05115612d5f57604051600181116159615760a0518160051b6060015260018101604052505b60055460c05260c05115612deb5760c051635aa6e675610100526020610100600461011c845afa612d92573d5f5f3e3d5ffd5b3d602081183d602010021880610100016101201161596157610100518060a01c61596157610140525061014090505160e05260e05115612deb57604051600181116159615760e0518160051b6060015260018101604052505b60405160208160051b01806040845e505050565b61016051612e0e6101e0612d2f565b6101e05f610240525f815160028111615961578015612e4f57905b8060051b6020840101518418612e4457600161024052612e4f565b600101818118612e29575b50506102405190509050815250565b60055415815250565b60605163308d1b6d6101c0526040516101e0526101406101c060246101dc845afa612e94573d5f5f3e3d5ffd5b3d61014081183d610140100218806101c0016103001161596157806101c00161030011615961576101c0518060a01c61596157610320526101e0518060a01c6159615761034052610200518060a01c6159615761036052610220518060a01c6159615761038052610240518060a01c615961576103a052610260518060a01c615961576103c052610280518060a01c615961576103e0526102a0518060a01c61596157610400526102c0518060a01c61596157610420526102e0518060a01c61596157610440525061032090506101408160805e506060516384e1710d6101e0526080516102005260206101e060246101fc845afa612f95573d5f5f3e3d5ffd5b3d602081183d6020100218806101e00161020011615961576101e0518060a01c6159615761022052506102209050516101c05260c0615b266101e0395f6102a0526101e0516101c05118612fee5760016102a052613055565b610200516101c051186130065760026102a052613055565b610220516101c0511861301e5760046102a052613055565b610240516101c051186130365760086102a052613055565b610260516101c0511861304e5760106102a052613055565b60206102a0525b6102a051815250565b6104c05163619ea8066104e052610460516105005260206104e060246104fc845afa61308c573d5f5f3e3d5ffd5b3d602081183d6020100218806104e00161050011615961576104e0518060011c61596157610520525061052090505115615961576104c051639ac90d3d6105e05261046051610600526101006105e060246105fc845afa6130ef573d5f5f3e3d5ffd5b3d61010081183d610100100218806105e0016106e01161596157806105e0016106e011615961576105e0518060a01c6159615761070052610600518060a01c6159615761072052610620518060a01c6159615761074052610640518060a01c6159615761076052610660518060a01c6159615761078052610680518060a01c615961576107a0526106a0518060a01c615961576107c0526106c0518060a01c615961576107e052506107009050610100816104e05e5061048051156131ef57610480515f6105e0525f6008905b8060051b6104e0015183186131d65760016105e0526131e1565b6001018181186131bc575b50506105e051905015615961575b6104a05115613239576104a0515f6105e0525f6008905b8060051b6104e0015183186132205760016105e05261322b565b600101818118613206575b50506105e051905015615961575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6105e0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610600525f610620525f6008905b8060051b6104e001516106405261064051156132f3576104805161064051186132bd57610620516105e0526132d3565b6104a05161064051186132d35761062051610600525b61062051600181018181106159615790506106205260010181811861328d575b50506104605181526105e0516020820152610600516040820152610460516040526104c051606052613326610640612e67565b61064051606082015261062051608082015250565b5f6108c05260606108006104605e6108a0516104c05261335c61098061305e565b61098060a0816108e05e506108205163095ea7b361098052610800516109a052610860516109c0526020610980604461099c5f855af161339e573d5f5f3e3d5ffd5b3d6133b557803b156159615760016109e0526133df565b3d602081183d602010021880610980016109a01161596157610980518060011c615961576109e052505b6109e0905051156159615760016109405118613468576108005163ddc1f59d610980526109005180607f1c615961576109a0526109205180607f1c615961576109c052610860516109e0525f610a005261088051610a2052602061098060a461099c5f855af1613451573d5f5f3e3d5ffd5b60203d10615961576109809050516108c052613787565b600261094051186134cf576108005163a64833a06109805260406109006109a05e610860516109e0525f610a005261088051610a2052602061098060a461099c5f855af16134b8573d5f5f3e3d5ffd5b60203d10615961576109809050516108c052613787565b600461094051186134e15760016134ea565b60086109405118155b61372d576010610940511861364a576108a05163e4d332a961098052610800516109a0526020610980602461099c845afa613527573d5f5f3e3d5ffd5b3d602081183d602010021880610980016109a01161596157610980518060011c615961576109c052506109c09050516135cd576108005163ddc1f59d610980526109005180607f1c615961576109a0526109205180607f1c615961576109c052610860516109e0525f610a005261088051610a2052602061098060a461099c5f855af16135b6573d5f5f3e3d5ffd5b60203d10615961576109809050516108c052613787565b602080610a4052600f6109e0527f4e6f7420496d706c656d656e7465640000000000000000000000000000000000610a00526109e081610a400160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610a205280600401610a3cfd5b6108005163394747c56109805260406109006109a05e610860516109e052604036610a0037602061098060a461099c5f855af1613689573d5f5f3e3d5ffd5b60203d10615961576109809050516108c052306108805114613787576108405163a9059cbb61098052610880516109a0526108c0516109c0526020610980604461099c5f855af16136dc573d5f5f3e3d5ffd5b3d6136f357803b156159615760016109e05261371d565b3d602081183d602010021880610980016109a01161596157610980518060011c615961576109e052505b6109e09050511561596157613787565b6108005163ce7d65036109805260406109006109a05e610860516109e052604036610a003761088051610a4052602061098060c461099c5f855af1613774573d5f5f3e3d5ffd5b60203d10615961576109809050516108c0525b6108205163095ea7b361098052610800516109a0525f6109c0526020610980604461099c5f855af16137bb573d5f5f3e3d5ffd5b3d6137d257803b156159615760016109e0526137fc565b3d602081183d602010021880610980016109a01161596157610980518060011c615961576109e052505b6109e090505115615961576108c05115615961576108c051815250565b60e0516101005260e05161388c576020615be65f395f516347be091a610120526004610140526020610120602461013c845afa613858573d5f5f3e3d5ffd5b3d602081183d602010021880610120016101401161596157610120518060a01c615961576101605250610160905051610100525b5f61012052604051156138a35760605115156138a5565b5f5b156138eb576101005163c660d11261014052604060406101605e6020610140604461015c845afa6138d8573d5f5f3e3d5ffd5b60203d1061596157610140905051610120525b5f61014052608051156139025760a0511515613904565b5f5b1561394a576101005163c660d11261016052604060806101805e6020610160604461017c845afa613937573d5f5f3e3d5ffd5b60203d1061596157610160905051610140525b60c05161396f5761012051610140518082018281106159615790509050815250613988565b6101205161014051808281188284110218905090508152505b565b5f61016052600260c05118613a78576040366101a03760026101805260e051606051610180518110156159615760051b6101a0015261010051608051610180518110156159615760051b6101a0015260405163a7256d096101e0526060806102005280610200015f610180518083528060051b5f8260028111615961578015613a2d57905b8060051b6101a001518160051b602088010152600101818118613a0f575b5050820160200191505090508101905060406101206102205e5060206101e060c46101fc5f855af1613a61573d5f5f3e3d5ffd5b60203d10615961576101e090505161016052613c47565b600360c05118613b61576060366101a03760036101805260e051606051610180518110156159615760051b6101a0015261010051608051610180518110156159615760051b6101a0015260405163a7256d09610200526060806102205280610220015f610180518083528060051b5f8260038111615961578015613b1657905b8060051b6101a001518160051b602088010152600101818118613af8575b5050820160200191505090508101905060406101206102405e50602061020060e461021c5f855af1613b4a573d5f5f3e3d5ffd5b60203d106159615761020090505161016052613c47565b600460c05118613c47576080366101a03760046101805260e051606051610180518110156159615760051b6101a0015261010051608051610180518110156159615760051b6101a0015260405163a7256d09610220526060806102405280610240015f610180518083528060051b5f8260048111615961578015613bff57905b8060051b6101a001518160051b602088010152600101818118613be1575b5050820160200191505090508101905060406101206102605e50602061022061010461023c5f855af1613c34573d5f5f3e3d5ffd5b60203d1061596157610220905051610160525b61016051815250565b6040366101603760e05160605160028110156159615760051b61016001526101005160805160028110156159615760051b6101600152604051630c3e4b546101a05260406101606101c05e60406101206102005e60206101a060846101bc5f855af1613cbe573d5f5f3e3d5ffd5b60203d10615961576101a0905051815250565b6040366101603760e05160605160028110156159615760051b61016001526101005160805160028110156159615760051b6101600152604051637328333b6101a05260406101606101c05e61012051610200525f61022052610140516102405260206101a060a46101bc5f855af1613d4b573d5f5f3e3d5ffd5b60203d10615961576101a0905051815250565b6060366101603760e05160605160038110156159615760051b61016001526101005160805160038110156159615760051b6101600152604051635cecb5f76101c05260606101606101e05e61012051610240525f61026052610140516102805260206101c060c46101dc5f855af1613dd8573d5f5f3e3d5ffd5b60203d10615961576101c0905051815250565b5f61016052600260c05118613e7f576040366101803760e05160605160028110156159615760051b61018001526101005160805160028110156159615760051b6101800152604051630c3e4b546101c05260406101806101e05e60406101206102205e60206101c060846101dc5f855af1613e68573d5f5f3e3d5ffd5b60203d10615961576101c090505161016052613f99565b600360c05118613f0e576060366101803760e05160605160038110156159615760051b61018001526101005160805160038110156159615760051b61018001526040516375b96abc6101e05260606101806102005e60406101206102605e60206101e060a46101fc5f855af1613ef7573d5f5f3e3d5ffd5b60203d10615961576101e090505161016052613f99565b600460c05118613f99576080366101803760e05160605160048110156159615760051b61018001526101005160805160048110156159615760051b610180015260405163cb4950646102005260806101806102205e60406101206102a05e602061020060c461021c5f855af1613f86573d5f5f3e3d5ffd5b60203d1061596157610200905051610160525b61016051815250565b60605160e05260a0516101005260405115613fc55760805160e05260c051610100525b60e051815261010051602082015250565b604036608037604051613fee57606051608052613ff5565b60605160a0525b608051815260a051602082015250565b604036610260376101c05160405261014051606052610160516080526102005160a0526102205160c05261403a6102a0613fa2565b6102a0805161026052602081015161028052506101205163081579a56102c0526101e0516102e0526102605180607f1c61596157610300526102805161032052610240516103405260206102c060846102dc5f855af161409c573d5f5f3e3d5ffd5b60203d10615961576102c09050516102a0526101c0516040526102a0516060526140c76102c0613fd6565b6102c0604081835e5050565b600260c05118615961576040366101803760026101605261010051606051610160518110156159615760051b610180015261012051608051610160518110156159615760051b6101800152604051632969e04a61022052608060e05161024052806102605280610240015f610160518083528060051b5f826002811161596157801561417957905b8060051b61018001518160051b60208801015260010181811861415b575b5050820160200191505090508101905061014051610280525f6102a05250608061022060e461023c5f855af16141b1573d5f5f3e3d5ffd5b3d608081183d6080100218806102200161024011615961576102206102205161022001106159615761022051610220018161022001815160051b60200182011161596157600281511161596157805160208160051b0180836103205e505050506103209050805160208160051b0180836101c05e5050506060516101c0518110156159615760051b6101e0015181526080516101c0518110156159615760051b6101e00151602082015250565b604036610260376101c05160405261014051606052610160516080526102005160a0526102205160c0526142936102a0613fa2565b6102a08051610260526020810151610280525061012051630fbcee6e6102c0526101e0516102e05261026051610300526102805161032052610240516103405260206102c060846102dc5f855af16142ed573d5f5f3e3d5ffd5b60203d10615961576102c09050516102a0526101c0516040526102a0516060526143186102c0613fd6565b6102c0604081835e5050565b600260c0511861596157604036610160376101005160605160028110156159615760051b61016001526101205160805160028110156159615760051b6101600152604051633eb1719f6101e05260e0516102005260406101606102205e610140516102605260406101e060846101fc5f855af16143a3573d5f5f3e3d5ffd5b60403d10615961576101e090506040816101a05e5060605160028110156159615760051b6101a00151815260805160028110156159615760051b6101a00151602082015250565b604036610260376101c05160405261014051606052610160516080526102005160a0526102205160c05261441f6102a0613fa2565b6102a080516102605260208101516102805250610120516307329bcd6102c0526101e0516102e052610260516103005261028051610320525f61034052610240516103605260206102c060a46102dc5f855af161447e573d5f5f3e3d5ffd5b60203d10615961576102c09050516102a0526101c0516040526102a0516060526144a96102c0613fd6565b6102c0604081835e5050565b600260c0511861596157610100516370a082316101c052610180516101e05260206101c060246101dc845afa6144ed573d5f5f3e3d5ffd5b60203d10615961576101c09050516101a052610120516370a082316101e052610180516102005260206101e060246101fc845afa61452d573d5f5f3e3d5ffd5b60203d10615961576101e09050516101c0526040366101e0376101405160605160028110156159615760051b6101e001526101605160805160028110156159615760051b6101e00152604051631808e84a6102205260e0516102405260406101e06102605e5f6102a052610180516102c052803b15615961575f61022060a461023c5f855af16145bf573d5f5f3e3d5ffd5b505f61022052610100516370a082316102605261018051610280526020610260602461027c845afa6145f3573d5f5f3e3d5ffd5b60203d1061596157610260905051610240526101a05161024051111561462e57610240516101a0518082038281116159615790509050610220525b5f61026052610120516370a082316102a052610180516102c05260206102a060246102bc845afa614661573d5f5f3e3d5ffd5b60203d10615961576102a0905051610280526101c05161028051111561469c57610280516101c0518082038281116159615790509050610260525b61022051815261026051602082015250565b604036610260376101c05160405261014051606052610160516080526102005160a0526102205160c0526146e36102a0613fa2565b6102a080516102605260208101516102805250610120516307329bcd6102c0526101e0516102e052610260516103005261028051610320525f61034052610240516103605260206102c060a46102dc5f855af1614742573d5f5f3e3d5ffd5b60203d10615961576102c09050516102a0526101c0516040526102a05160605261476d6102c0613fd6565b6102c0604081835e5050565b606036610160376101005160605160038110156159615760051b61016001526101205160805160038110156159615760051b6101600152604051635cd347806102205260e0516102405260606101606102605e5f6102c052610140516102e0525f61030052606061022060e461023c5f855af16147f8573d5f5f3e3d5ffd5b60603d106159615761022090506060816101c05e5060605160038110156159615760051b6101c00151815260805160038110156159615760051b6101c00151602082015250565b604036610260376101c05160405261014051606052610160516080526102005160a0526102205160c0526148746102a0613fa2565b6102a0805161026052602081015161028052506101205163081579a56102c0526101e0516102e0526102605180607f1c61596157610300526102805161032052610240516103405260206102c060846102dc5f855af16148d6573d5f5f3e3d5ffd5b60203d10615961576102c09050516102a0526101c0516040526102a0516060526149016102c0613fd6565b6102c0604081835e5050565b60403661016037600260c051186149dd576040366101a0376101005160605160028110156159615760051b6101a001526101205160805160028110156159615760051b6101a00152604051633eb1719f6102205260e0516102405260406101a06102605e610140516102a0526040610220608461023c5f855af1614993573d5f5f3e3d5ffd5b60403d106159615761022090506040816101e05e5060605160028110156159615760051b6101e001516101605260805160028110156159615760051b6101e0015161018052614c11565b600360c05118614aa6576060366101a0376101005160605160038110156159615760051b6101a001526101205160805160038110156159615760051b6101a00152604051632da5dc216102605260e0516102805260606101a06102a05e6101405161030052606061026060a461027c5f855af1614a5c573d5f5f3e3d5ffd5b60603d106159615761026090506060816102005e5060605160038110156159615760051b61020001516101605260805160038110156159615760051b610200015161018052614c11565b600460c05118614b6f576080366101a0376101005160605160048110156159615760051b6101a001526101205160805160048110156159615760051b6101a0015260405163b2fdb76f6102a05260e0516102c05260806101a06102e05e610140516103605260806102a060c46102bc5f855af1614b25573d5f5f3e3d5ffd5b60803d10615961576102a090506080816102205e5060605160048110156159615760051b61022001516101605260805160048110156159615760051b610220015161018052614c11565b6020806102205260306101a0527f6d65746120706f6f6c3a20706f6f6c73206265796f6e6420342d636f696e20616101c0527f7265206e6f7420737570706f72746564000000000000000000000000000000006101e0526101a0816102200160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610200528060040161021cfd5b61016051815261018051602082015250565b608036610700375f60805160328111615961578015614dd657905b8061078052610780516080518110156159615760051b60a001516107a0526107a05115614dcb576106e0516392e3cc2d6108c0526107a0516108e0526101006108c060246108dc845afa614c94573d5f5f3e3d5ffd5b6101003d10615961576108c09050610100816107c05e506107c05115614dcb576060366108c0376106e05163eb85226d610920526107a0516109405260405161096052606051610980526060610920606461093c845afa614cf7573d5f5f3e3d5ffd5b3d606081183d6060100218806109200161098011615961576109205180600f0b8118615961576109a0526109405180600f0b8118615961576109c052610960518060011c615961576109e052506109a09050606081610a005e506060610a006108c05e6108c051600781115f8212176159615760051b6107c001516108e051600781115f8212176159615760051b6107c0015180820182811061596157905090506109205261076051610920511115614dcb576107a051610700526108c051610720526108e0516107405261092051610760525b600101818118614c3e575b505061070051815261072051602082015261074051604082015261076051606082015250565b60403660a0376020615bc65f395f5163ebf113f061650052606060406165205e616440616500606461651c845afa614e36573d5f5f3e3d5ffd5b3d61644081183d616440100218806165000161652011615961576165006165005161650001106159615761650051616500018161650001815160081b6020018201116159615760648151116159615780515f8160648111615961578015614f2857905b8060081b60208501018561650001610100820111615961578160081b61c98001815181526020820151602082015260408201518060011c6159615760408201526060820151606082015260808201518060a01c61596157608082015260a082015160a082015260c082015160c082015260e08201518060081c6159615760e08201525050600101818118614e99575b50508061c9605250505061c9609050805160208160081b01808360e05e5050505f60e05160648111615961578015614f9457905b8060081b61010001610100816165005e5060c051616560511115614f89576165605160c0526165805160a0525b600101818118614f5c575b505060a051815260c051602082015250565b6020615bc65f395f5163ca1751fa60e052604060606101005e602060e0604460fc845afa614fd6573d5f5f3e3d5ffd5b60203d106159615760e090505160c05260c051614ff6575f815250615089565b60605163313ce567610100526020610100600461011c845afa61501b573d5f5f3e3d5ffd5b3d602081183d602010021880610100016101201161596157610100518060081c61596157610140525061014090505160e05260a05160e051604d81116159615780600a0a9050808202811583838304141715615961579050905060c051801561596157808204905090508152505b565b604051608051808202811583838304141715615961579050905060605180156159615780820490509050815250565b60a0516101205260a05160405260e051606052610100516080526150df61016061508b565b610160516101405260c0516101405111156151365760c0516040526101005160605260e05160805261511261018061508b565b610180516101605260a051610160511161513657610160516101205260c051610140525b61012051815261014051602082015250565b5f61012052600260c05118615232576040366101603760026101405260e051606051610140518110156159615760051b610160015261010051608051610140518110156159615760051b6101600152604051633db06dd86101a0526040806101c052806101c0015f610140518083528060051b5f82600281116159615780156151eb57905b8060051b61016001518160051b6020880101526001018181186151cd575b5050820160200191505090508101905060016101e0525060206101a060a46101bc845afa61521b573d5f5f3e3d5ffd5b60203d10615961576101a0905051610120526153f8565b600360c05118615317576060366101603760036101405260e051606051610140518110156159615760051b610160015261010051608051610140518110156159615760051b6101600152604051633db06dd86101c0526040806101e052806101e0015f610140518083528060051b5f82600381116159615780156152d057905b8060051b61016001518160051b6020880101526001018181186152b2575b505082016020019150509050810190506001610200525060206101c060c46101dc845afa615300573d5f5f3e3d5ffd5b60203d10615961576101c0905051610120526153f8565b600460c051186153f8576080366101603760046101405260e051606051610140518110156159615760051b610160015261010051608051610140518110156159615760051b6101600152604051633db06dd86101e0526040806102005280610200015f610140518083528060051b5f82600481116159615780156153b557905b8060051b61016001518160051b602088010152600101818118615397575b505082016020019150509050810190506001610220525060206101e060e46101fc845afa6153e5573d5f5f3e3d5ffd5b60203d10615961576101e0905051610120525b61012051815250565b6040366101203760e05160605160028110156159615760051b61012001526101005160805160028110156159615760051b610120015260405163ed8e84f36101605260406101206101805e60016101c0526020610160606461017c845afa61546b573d5f5f3e3d5ffd5b60203d1061596157610160905051815250565b6040366101203760e05160605160028110156159615760051b61012001526101005160805160028110156159615760051b6101200152604051638d8ea7276101605260406101206101805e6020610160604461017c845afa6154e2573d5f5f3e3d5ffd5b60203d1061596157610160905051815250565b6060366101203760e05160605160038110156159615760051b61012001526101005160805160038110156159615760051b6101200152604051633883e1196101805260606101206101a05e6001610200526020610180608461019c845afa61555f573d5f5f3e3d5ffd5b60203d1061596157610180905051815250565b5f61012052600260c05118615602576040366101403760e05160605160028110156159615760051b61014001526101005160805160028110156159615760051b610140015260405163ed8e84f36101805260406101406101a05e60016101e0526020610180606461019c845afa6155eb573d5f5f3e3d5ffd5b60203d106159615761018090505161012052615714565b600360c0511861568d576060366101403760e05160605160038110156159615760051b61014001526101005160805160038110156159615760051b6101400152604051633883e1196101a05260606101406101c05e60016102205260206101a060846101bc845afa615676573d5f5f3e3d5ffd5b60203d10615961576101a090505161012052615714565b600460c05118615714576080366101403760e05160605160048110156159615760051b61014001526101005160805160048110156159615760051b610140015260405163cf701ff76101c05260806101406101e05e60016102605260206101c060a46101dc845afa615701573d5f5f3e3d5ffd5b60203d10615961576101c0905051610120525b61012051815250565b600360c05110615776577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208201525061595f565b610140516392e3cc2d6102605260405161028052610100610260602461027c845afa6157a4573d5f5f3e3d5ffd5b6101003d10615961576102609050610100816101605e5060605160088110156159615760051b61016001516102605260805160088110156159615760051b610160015161028052610260516157fa576001615800565b61028051155b15615854577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208201525061595f565b6101405163379510496102c0526040516102e05260206102c060246102dc845afa615881573d5f5f3e3d5ffd5b3d602081183d6020100218806102c0016102e011615961576102c0518060a01c6159615761030052506103009050516102a0526102a0516318160ddd6102e05260206102e060046102fc845afa6158da573d5f5f3e3d5ffd5b60203d10615961576102e09050516102c052610120516102605180820281158383830414171561596157905090506102c051801561596157808204905090506102e052610120516102805180820281158383830414171561596157905090506102c05180156159615780820490509050610300526102e0518152610300516020820152505b565b5f80fd06865a3609046b59ee090295597e0902d55a7e09002e59c6052abd8a261d970025b6ff49341d7f00258aadf9ac1d5300a532f4bdc7047e00c570b422bf1e73004535884e5a03bc000553aa43070064002525240810037c0005a9f70155208f006559ad5d182a200045ed86057603a000056d15bcdd22a400653f561eff008d000504c388ae14700145ab96e0792bcd0025366836cc02760005d56e9c3e2701008559b76fe42d0500056e4fd9c801ee0005bec9a127244100a502bc29fa20d2008599572d6f009b0025dd4260a3047400a5cd3758fc0a0701a5af90b6b31e690005a908dc8002ef002524ae6a272a5e0045605725912a290065c55728b003ae00054a8c1fb42d1100050f6da63c1e000025ce5e84a32c890025f40b16970394000594b51d372d1d0005e21bbc522ce900053d17dd7b23ab00855aa6e67503710005971f0c31146601252f7ab0da04280025c2b8851b2cf70005e9c9c0ca09fd01858558204b5fe874e59cc25acb40d039d1b0ac2dfa5965390a0d23dbd680eb197f5e3530195ac686181918481828184818481848190140a16576797065728300040100430000000000000000000000005ffe7fb82894076ecb99a30d6a32e969e6e35e980000000000000000000000007bcd6d471d1a068012a79347c7a944d1df01a1ae