0 txs
4 calls
constructor
constructor()
functions
nonfungiblePositionManager
viewfunction nonfungiblePositionManager() view returns (address)
onERC721Received
purefunction onERC721Received(address operator, address, uint256 _tokenId, bytes) pure returns (bytes4)
owner
viewfunction owner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
router
viewfunction router() view returns (address)
treasury
viewfunction treasury() view returns (address)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
WETH
viewfunction WETH() view returns (address)
addLiquidity
payablefunction addLiquidity(address tokenA, address tokenB, bool stable, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, uint256 feeAmount) payable returns (uint256 amountA, uint256 amountB, uint256 liquidity)
addLiquidityETH
payablefunction addLiquidityETH(address token, bool stable, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, uint256 feeAmount) payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity)
collect
payablefunction collect(tuple params, uint256 feeAmount) payable returns (uint256 amount0, uint256 amount1)
decreaseLiquidity
payablefunction decreaseLiquidity(tuple params, uint256 feeAmount) payable returns (uint256 amount0, uint256 amount1)
increaseLiquidity
payablefunction increaseLiquidity(tuple params, uint256 feeAmount) payable returns (uint128 liquidity, uint256 amount0, uint256 amount1)
initialize
nonpayablefunction initialize(address _router, address _treasury, address _nonFungiblePositionManager)
mint
payablefunction mint(tuple params, uint256 feeAmount) payable returns (uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1)
removeLiquidity
payablefunction removeLiquidity(address tokenA, address tokenB, bool stable, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, uint256 feeAmount) payable returns (uint256 amountA, uint256 amountB)
removeLiquidityETH
payablefunction removeLiquidityETH(address token, bool stable, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, uint256 feeAmount) payable returns (uint256 amountToken, uint256 amountETH)
renounceOwnership
nonpayablefunction renounceOwnership()
setNonFungiblePositionManager
nonpayablefunction setNonFungiblePositionManager(address _nonfungiblePositionManager)
setRouter
nonpayablefunction setRouter(address _router)
setTreasury
nonpayablefunction setTreasury(address _treasury)
swapExactETHForTokens
payablefunction swapExactETHForTokens(uint256 amountOutMin, tuple[] routes, address to, uint256 deadline, uint256 feeAmount) payable
swapExactTokensForETH
payablefunction swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, tuple[] routes, address to, uint256 deadline, uint256 feeAmount) payable
swapExactTokensForTokens
payablefunction swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, tuple[] routes, address to, uint256 deadline, uint256 feeAmount) payable
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdraw
nonpayablefunction withdraw(address token, uint256 amount, address recipient)
events
Initialized
event Initialized(uint64 version)
NonfungiblePositionManagerSet
event NonfungiblePositionManagerSet(address nonfungiblePositionManager)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RouterSet
event RouterSet(address router)
TreasurySet
event TreasurySet(address treasury)
Upgraded
event Upgraded(address indexed implementation)
Withdrawn
event Withdrawn(address token, uint256 amount, address recipient)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
CollectionFailed
error CollectionFailed()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedCall
error FailedCall()
InsufficientBalance
error InsufficientBalance(uint256 balance, uint256 needed)
InvalidFeeAmount
error InvalidFeeAmount()
InvalidInitialization
error InvalidInitialization()
InvalidRecipient
error InvalidRecipient()
LiquidityAddFailed
error LiquidityAddFailed()
LiquidityDecreaseFailed
error LiquidityDecreaseFailed()
LiquidityRemoveFailed
error LiquidityRemoveFailed()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
SwapFailed
error SwapFailed()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
ZeroAddress
error ZeroAddress()
creation bytecode
0x60a080604052346100c257306080525f5160206132eb5f395f51905f525460ff8160401c166100b3576002600160401b03196001600160401b03821601610060575b60405161322490816100c78239608051818181611ca30152611f130152f35b6001600160401b0319166001600160401b039081175f5160206132eb5f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80610041565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163150b7a02146129dd5750806317389cf51461251657806320190c67146122b2578063328f81a9146120be5780634f1ef28614611e975780635113692a14611cf757806352d1902d14611c9057806353a5513714611b4257806361d027b314611b1957806369328dec14611a735780636fe2e4d5146115ad578063715018a6146115445780638da5cb5b1461150f578063ad3cb1cc146114b3578063ad5c464814611490578063b44a272214611467578063b7e325ed146111da578063c0c53b8b14610f54578063c0d7865514610ee4578063ca67b32014610c20578063e0fa3eb914610997578063e8555f0514610924578063f00e4ff7146104d2578063f0f4426014610450578063f2fde38b14610423578063f887ea40146103fc5763fe17e77d0361000f57366003190160c081126103a65760a0136103245760a4359081156103ee578134106103ee5760015460405163133f757160e31b815260048035908201819052929161018090829060249082906001600160a01b03165afa93841561032757829183956103aa575b506101be90612f6b565b6001546001600160a01b0316803b1561033257826040518092632142170760e11b82528183816101f38a303360048501612cba565b03925af1801561038657908391610391575b505060018060a01b03600154169160405193630624e65f60e11b85528060048601526024356001600160801b0381168091036103325760248601526044359384604487015260408660a481866064359586606484015260843560848401525af19485156103865783968496610350575b508686911191821592610345575b505015610336576001546001600160a01b031690813b15610332576102c383928392604051948580948193632142170760e11b8352333060048501612cba565b03925af180156103275761030f575b50604094610303928492506102f390869033906001600160a01b0316612ff9565b33906001600160a01b0316612ff9565b82519182526020820152f35b61031a828092612ab0565b61032457806102d2565b80fd5b6040513d84823e3d90fd5b8280fd5b635e71d03360e01b8252600482fd5b11159050845f610283565b90965061037691955060403d60401161037f575b61036e8183612ab0565b810190612d15565b94909586610275565b503d610364565b6040513d85823e3d90fd5b8161039b91612ab0565b6103a657815f610205565b5080fd5b6103d29195506101be92506101803d81116103e7575b6103ca8183612ab0565b810190612c14565b505050505050505093925090509194906101b4565b503d6103c0565b62a4671960e71b8152600490fd5b5034610324578060031936011261032457546040516001600160a01b039091168152602090f35b50346103245760203660031901126103245761044d610440612a4b565b610448612fc6565b612efa565b80f35b50346103245760203660031901126103245761046a612a4b565b610472612fc6565b6001600160a01b031680156104c3576020817f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f926001600160601b0360a01b6002541617600255604051908152a180f35b63d92e233d60e01b8252600482fd5b50610140366003190112610324576104e8612a4b565b6104f0612a61565b6104f8612aa1565b9160a4359160c4359160e4356001600160a01b038116929160843591606435919085900361092057610124358015610912578034036109125730861461090357906105456105a692612f6b565b6001600160a01b03169361055b83303388612f8b565b6001600160a01b03169461057184303389612f8b565b895460405163095ea7b360e01b81526001600160a01b0390911660048201526024810184905291602090839081906044820190565b03818d895af19182156108db576105f2926108e6575b50895460405163095ea7b360e01b81526001600160a01b0390911660048201526024810185905291602090839081906044820190565b03818d8a5af19182156108db576060926108be575b5061012460018060a01b038b5416998b6040519b8c948593635a47ddc360e01b85528a60048601528b6024860152151560448501528760648501528860848501528c60a48501528b60c485015260e4840152610104356101048401525af19485156108b357889689988a97610878575b50871015908161086d575b501561085e5791879391602061069b886106c296612cf4565b60405163a9059cbb60e01b8152336004820152602481019190915294859081906044820190565b038188865af19384156107f757886020926106e69261070d97610843575b50612cf4565b60405163a9059cbb60e01b8152336004820152602481019190915293849081906044820190565b038187865af190811561083857849360209261081d575b50835460405163095ea7b360e01b81526001600160a01b0390911660048201526024810185905293849160449183915af191821561038657602092610802575b50825460405163095ea7b360e01b81526001600160a01b0390911660048201526024810184905292839160449183915af180156107f757906107c492916107c8575b50604051938493846040919493926060820195825260208201520152565b0390f35b6107e99060203d6020116107f0575b6107e18183612ab0565b810190612cdc565b50846107a6565b503d6107d7565b6040513d87823e3d90fd5b61081890833d85116107f0576107e18183612ab0565b610764565b61083390833d85116107f0576107e18183612ab0565b610724565b6040513d86823e3d90fd5b61085990853d87116107f0576107e18183612ab0565b6106e0565b63760598e160e01b8852600488fd5b90508710155f610682565b91975095506108a091975060603d6060116108ac575b6108988183612ab0565b810190612edf565b9791969097955f610677565b503d61088e565b6040513d8a823e3d90fd5b6108d69060203d6020116107f0576107e18183612ab0565b610607565b6040513d8c823e3d90fd5b6108fe9060203d6020116107f0576107e18183612ab0565b6105bc565b634e46966960e11b8a5260048afd5b62a4671960e71b8a5260048afd5b8880fd5b50346103245760203660031901126103245761093e612a4b565b610946612fc6565b6001600160a01b031680156104c3576020817ffc16f4d868f580252bff93cba89e723ac15fb82d773c5ff26ee487e8303ee50a926001600160601b0360a01b6001541617600155604051908152a180f35b506109a136612b33565b95929190938615610c1257863403610c12578215610bfe576109c281612d57565b915f198401848111610bea57899291906001600160a01b03906109f3906020906109ed908987612d6b565b01612d57565b1696604051966370a0823160e01b885260018060a01b038316958660048a01526020896024818d5afa988915610ba5578699610bb0575b50610a83919060209082906001600160a01b0316610a4a82303384612f8b565b885460405163095ea7b360e01b81526001600160a01b0390911660048201526024810192909252909384919082908a9082906044820190565b03925af18015610ba5578b938793610ac392610b88575b5060018060a01b03845416956040519a8b988997889663cac88ea960e01b885260048801612ea5565b03925af1918215610b7d57602092610b5d575b506024604051809581936370a0823160e01b835260048301525afa80156107f7578590610b25575b610b089250612cf4565b10610b165761044d90612f6b565b63081ceff360e41b8252600482fd5b506020823d602011610b55575b81610b3f60209383612ab0565b81010312610b5157610b089151610afe565b5f80fd5b3d9150610b32565b610b78903d808a833e610b708183612ab0565b810190612d8f565b610ad6565b6040513d89823e3d90fd5b610ba09060203d6020116107f0576107e18183612ab0565b610a9a565b6040513d88823e3d90fd5b91955097506020813d602011610be2575b81610bce60209383612ab0565b81010312610b515751968b94906020610a2a565b3d9150610bc1565b634e487b7160e01b8a52601160045260248afd5b634e487b7160e01b88526032600452602488fd5b62a4671960e71b8852600488fd5b50610c2a36612b86565b93968496919695939515610ed65784341115610ed6576001600160a01b0383163014610ec757885460405163d4b6846d60e01b81528a92916001600160a01b031690602081600481855afa8015610838578490610e89575b60405163874029d960e01b81526001600160a01b0385811660048301526006602160991b016024830152871515604483015290911660648201529160209150829060849082905afa80156103865786918491610e46575b50610d2f916020916001600160a01b03811690610cf883303385612f8b565b60405163095ea7b360e01b81526001600160a01b039091166004820152602481019290925290928391908290879082906044820190565b03925af198891561038657610d51604098610db0938d9c610e29575b50612f6b565b8354885163d7b0e0a560e01b81526001600160a01b03948516600482015295151560248701526044860197909752606485019a909a526084840188905293811660a484015260c4830198909852909687931691839190829060e4820190565b03925af19182156108385784938593610e02575b508310159081610df7575b5015610de5576040809350519182526020820152f35b600162b1876760e01b03198352600483fd5b90508110155f610dcf565b909250610e1f91935060403d60401161037f5761036e8183612ab0565b929092915f610dc4565b610e419060203d6020116107f0576107e18183612ab0565b610d4b565b9150506020813d602011610e81575b81610e6260209383612ab0565b8101031261033257602086610e79610d2f93612bde565b915091610cd9565b3d9150610e55565b506020813d602011610ebf575b81610ea360209383612ab0565b81010312610ebb57610eb6602091612bde565b610c82565b8380fd5b3d9150610e96565b634e46966960e11b8952600489fd5b62a4671960e71b8952600489fd5b503461032457602036600319011261032457610efe612a4b565b610f06612fc6565b6001600160a01b031680156104c35781546001600160a01b031916811782556040519081527fc6b438e6a8a59579ce6a4406cbd203b740e0d47b458aae6596339bcd40c40d1590602090a180f35b503461032457606036600319011261032457610f6e612a4b565b610f76612a61565b610f7e612a77565b5f5160206131cf5f395f51905f52549260ff8460401c16159367ffffffffffffffff8116801590816111d2575b60011490816111c8575b1590816111bf575b506111b05767ffffffffffffffff1981166001175f5160206131cf5f395f51905f525584611184575b50610fef61311e565b610ff761311e565b610fff61311e565b61100833612efa565b6001600160a01b0316908115801590611172575b8015611160575b1561115157917fc6b438e6a8a59579ce6a4406cbd203b740e0d47b458aae6596339bcd40c40d156020837f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f827ffc16f4d868f580252bff93cba89e723ac15fb82d773c5ff26ee487e8303ee50a9781976001600160601b0360a01b8c5416178b5560018060a01b031695866001600160601b0360a01b600154161760015560018060a01b0316806001600160601b0360a01b6002541617600255604051908152a1604051908152a1604051908152a16110f95780f35b68ff0000000000000000195f5160206131cf5f395f51905f5254165f5160206131cf5f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b63d92e233d60e01b8552600485fd5b506001600160a01b0381161515611023565b506001600160a01b038316151561101c565b68ffffffffffffffffff191668010000000000000001175f5160206131cf5f395f51905f52555f610fe6565b63f92ee8a960e01b8652600486fd5b9050155f610fbd565b303b159150610fb5565b869150610fab565b506111e436612b86565b80989497959291939698156114595780341115611459576112059034612cf4565b946001600160a01b0381169361121d84303388612f8b565b855460405163095ea7b360e01b81526001600160a01b039091166004820152602481018590526020816044818a8a5af18015610b7d57918593918b9c9361143c575b5087546040516302df835360e61b81526001600160a01b03938416600482015293151560248501526044840194909452606483019b909b526084820189905292831660a482015260c4810199909952168760e481875a94606095f194851561038657839684988597611411575b508710159081611406575b50156113f75760206112ec8761131393612cf4565b60405163a9059cbb60e01b8152336004820152602481019190915291829081906044820190565b038186865af18015610386579160209184936113dc575b50825460405163095ea7b360e01b81526001600160a01b0390911660048201526024810185905293849160449183915af19081156113d057916107c49493918793506113b3575b50818111611399575b5050604051938493846040919493926060820195825260208201520152565b6113ac916113a691612cf4565b33613061565b835f61137a565b6113cb9060203d6020116107f0576107e18183612ab0565b611371565b604051903d90823e3d90fd5b6113f290833d85116107f0576107e18183612ab0565b61132a565b63760598e160e01b8352600483fd5b90508710155f6112d7565b919750955061143091975060603d6060116108ac576108988183612ab0565b9791969097955f6112cc565b6114549060203d6020116107f0576107e18183612ab0565b61125f565b62a4671960e71b8552600485fd5b50346103245780600319360112610324576001546040516001600160a01b039091168152602090f35b50346103245780600319360112610324576040516006602160991b018152602090f35b5034610324578060031936011261032457604080516114d28282612ab0565b6005815260208101640352e302e360dc1b81528251938492602084525180928160208601528585015e828201840152601f01601f19168101030190f35b50346103245780600319360112610324575f51602061318f5f395f51905f52546040516001600160a01b039091168152602090f35b503461032457806003193601126103245761155d612fc6565b5f51602061318f5f395f51905f5280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b5036600319016101a081126103a6576101801361032457610184358015611a6557803403611a6557610124356001600160a01b03811692908381036103a657308414611a56576001600160a01b03611603612d41565b16151580611a3d575b156104c3576001600160a01b03611621612d41565b169361163460a435809630903390612f8b565b6001600160a01b03611644612d2b565b169361165760c435809630903390612f8b565b6116ab6020876001600160a01b0361166d612d41565b60015460405163095ea7b360e01b81526001600160a01b03909116600482015260248101939093529193849291909116908290899082906044820190565b03925af180156107f757611a20575b506116d16020866001600160a01b0361166d612d2b565b03925af180156107f757906116eb9291610e295750612f6b565b60015460405163b5007d1f60e01b8152926001600160a01b039182169291611711612a4b565b1660048501526001600160a01b03611727612a61565b1660248501526044358060020b809103611a1c5760448501526064358060020b809103611a1c5760648501526084358060020b809103611a1c5760848501528660a48501528560c485015260e43560e48501526101043561010485015250610124830152610144356101448301526101643560018060a01b038116809103610ebb57610184838560809482946101648401525af19182156113d05780938195829383956119c6575b508084106118fc575b50808410611806575b50506001600160801b0360809460405194855216602084015260408301526060820152f35b8160206001600160a01b03611819612d2b565b16604460018060a01b0360015416604051948593849263095ea7b360e01b845260048401528160248401525af18015610386576118638685946020946118a2946118e65750612cf4565b6001600160a01b03611873612d2b565b60405163a9059cbb60e01b81523360048201526024810193909352919586939190921691839182906044820190565b03925af19081156113d05750946001600160801b03916080966118c7575b50946117e1565b6118df9060203d6020116107f0576107e18183612ab0565b505f6118c0565b61085990863d88116107f0576107e18183612ab0565b8260206001600160a01b0361190f612d41565b16604460018060a01b0360015416604051948593849263095ea7b360e01b845260048401528160248401525af1801561083857611959868694602094611998946118e65750612cf4565b6001600160a01b03611969612d41565b60405163a9059cbb60e01b81523360048201526024810193909352919485939190921691839182906044820190565b03925af1801561038657156117d8576119bf9060203d6020116107f0576107e18183612ab0565b505f6117d8565b96509350935090506080843d608011611a14575b816119e760809383612ab0565b81010312610324578351906119fe60208601612c00565b936060604087015196015192949592935f6117cf565b3d91506119da565b8580fd5b611a389060203d6020116107f0576107e18183612ab0565b6116ba565b506001600160a01b03611a4e612d2b565b16151561160c565b634e46966960e11b8252600482fd5b62a4671960e71b8252600482fd5b503461032457606036600319011261032457611a8d612a4b565b60243590611a99612a77565b91611aa2612fc6565b6001600160a01b038316918215611151577fcbcdbdf10631a43cc99c80acace8232649421c3f4f73919f16013d47c83a687a936060936001600160a01b0390921692908184611b0a57611af6915083613061565b60405192835260208301526040820152a180f35b611b149185612ff9565b611af6565b50346103245780600319360112610324576002546040516001600160a01b039091168152602090f35b50611b4c36612b33565b8096949293959615610c1257803403610c1257611b6890612f6b565b8415611c7c57908691611bd4611b7d83612d57565b8531969060209082906001600160a01b0316611b9b82303384612f8b565b875460405163095ea7b360e01b81526001600160a01b039091166004820152602481019290925290938491908290899082906044820190565b03925af19081156107f75789928692611c5f575b50611c1560018060a01b0383541694886040519b8c988997889663635bf8db60e11b885260048801612ea5565b03925af19283156107f757611c3093611c47575b5031612cf4565b10611c385780f35b63081ceff360e41b8152600490fd5b611c5a903d8088833e610b708183612ab0565b611c29565b611c779060203d6020116107f0576107e18183612ab0565b611be8565b634e487b7160e01b87526032600452602487fd5b50346103245780600319360112610324577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003611ce85760206040515f5160206131af5f395f51905f528152f35b63703e46dd60e11b8152600490fd5b5060a03660031901126103245760043560243567ffffffffffffffff811161033257611d27903690600401612b02565b9190611d31612a77565b92608435938415611e895784341115611e89575f198201828111611e75576001600160a01b0390611d6a906020906109ed908688612d6b565b6040516370a0823160e01b81526001600160a01b03909316600484018190529116938790602084602481895afa938415610327578294611e3c575b50611deb9394611db58934612cf4565b9060018060a01b038454169160405180978195829463240d8e2960e21b84528d6004850152608060248501526084840191612e14565b876044830152606435606483015203925af1918215610b7d57602092610b5d57506024604051809581936370a0823160e01b835260048301525afa80156107f7578590610b2557610b089250612cf4565b915092506020813d602011611e6d575b81611e5960209383612ab0565b81010312610b515751918790611deb611da5565b3d9150611e4c565b634e487b7160e01b87526011600452602487fd5b62a4671960e71b8652600486fd5b50604036600319011261032457611eac612a4b565b6024359067ffffffffffffffff821161033257366023830112156103325781600401359083611eda83612ae6565b93611ee86040519586612ab0565b8385526020850193366024828401011161033257806024602093018637850101526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630811490811561209c575b5061208d57611f4b612fc6565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa869181612055575b50611f8e57634c9c8ce360e01b86526004859052602486fd5b93845f5160206131af5f395f51905f528796036120435750823b15612031575f5160206131af5f395f51905f5280546001600160a01b031916821790558491907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a2805115612016576120129382915190845af461200c613032565b91613149565b5080f35b50505050346120225780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8552600452602484fd5b632a87526960e21b8652600452602485fd5b9091506020813d602011612085575b8161207160209383612ab0565b810103126120815751905f611f75565b8680fd5b3d9150612064565b63703e46dd60e11b8452600484fd5b5f5160206131af5f395f51905f52546001600160a01b0316141590505f611f3e565b50366003190160a081126103a657608013610324576084359081156103ee578134036103ee576120ec612d2b565b6001600160a01b031630146122a35760015460043591906001600160a01b0316803b156103a657816040518092632142170760e11b825281838161213589303360048501612cba565b03925af180156103275790829161228e575b505060015460405163fc6f786560e01b815260048101849052926001600160a01b039182169291612176612a61565b166024850152604435926001600160801b03841690818503610ebb57816044870152606435916001600160801b03831691828403611a1c5787608481886040948760648401525af19586156107f75785978697612267575b5050861115918261225a575b50501561224b576001546001600160a01b031690813b156103325761221a83928392604051948580948193632142170760e11b8352333060048501612cba565b03925af1801561032757612236575b5050610303604093612f6b565b612241828092612ab0565b6103245780612229565b63f0ff962b60e01b8252600482fd5b5084111590505f806121da565b90965061228491975060403d60401161037f5761036e8183612ab0565b969096955f6121ce565b8161229891612ab0565b61032457805f612147565b634e46966960e11b8152600490fd5b50610120366003190112610324576122c8612a4b565b6122d0612a61565b6122d8612aa1565b6084359160a435916064359160c4356001600160a01b03811691908290036125125761010435938415610ed657843403610ed657308314610ec757885460405163d4b6846d60e01b8152986001600160a01b03909116938a929160208b600481895afa9a8b1561083857849b6124d4575b5060405163874029d960e01b81526001600160a01b039182166004820181905295821660248201819052971515604482018190529b909116606482015294602090869060849082905afa948515610386578395612492575b506123f99460209083906001600160a01b03166123c082303384612f8b565b855460405163095ea7b360e01b81526001600160a01b039091166004820152602481019290925290968791908290879082906044820190565b03925af18015610386576040976101049661241892610e295750612f6b565b60018060a01b038354169187519a8b97889663037b79b160e21b885260048801526024870152604486015260648501528860848501528760a485015260c484015260e43560e48401525af19182156108385784938593610e0257508310159081610df7575015610de5576040809350519182526020820152f35b94506020853d6020116124cc575b816124ad60209383612ab0565b81010312610332576020826124c46123f997612bde565b9650506123a1565b3d91506124a0565b909a506020813d60201161250a575b816124f060209383612ab0565b81010312610ebb57612503602091612bde565b9a90612349565b3d91506124e3565b8780fd5b50366003190160e08112610b515760c013610b515760c43580156129cf578034106129cf5760015460405163133f757160e31b8152600480359082018190529161018090829060249082906001600160a01b03165afa928315612990575f915f9461299b575b5061258690612f6b565b6001546001600160a01b0316803b15610b51575f6040518092632142170760e11b82528183816125bb89303360048501612cba565b03925af180156129905761297b575b506001600160a01b031692602435926125e584303388612f8b565b60018060a01b0316604435946125fd86303385612f8b565b60015460405163095ea7b360e01b81526001600160a01b0390911660048201526024810186905260208160448187865af180156108385761295e575b5060015460405163095ea7b360e01b81526001600160a01b0390911660048201526024810187905260208160448187875af18015610838579084939291612941575b506126863447612cf4565b95606060018060a01b036001541660c46040518098819363219f5d1760e01b83528b60048401528660248401528d60448401526064356064840152608435608484015260a43560a48401525af1958615610838578497859686986128f4575b50476126f18282612cf4565b6128db575b50506001546001600160a01b031690813b15611a1c5761273186928392604051948580948193632142170760e11b8352333060048501612cba565b03925af180156107f7579085916128c6575b5050808510612843575b5050858410612778575b5050606093506001600160801b036040519316835260208301526040820152f35b60015460405163095ea7b360e01b81526001600160a01b03909116600482015260248101839052919586929160208360448187855af192831561083857866127f5936127cb9260209661282d5750612cf4565b60405163a9059cbb60e01b8152336004820152602481019190915293849283919082906044820190565b03925af180156107f7576060955061280e575b80612757565b6128269060203d6020116107f0576107e18183612ab0565b505f612808565b61085990873d89116107f0576107e18183612ab0565b60015460405163095ea7b360e01b81526001600160a01b0390911660048201526024810185905260208160448188875af180156107f757926127cb8760209461289294899761282d5750612cf4565b03925af18015610386576128a7575b8061274d565b6128bf9060203d6020116107f0576107e18183612ab0565b505f6128a1565b816128d091612ab0565b610ebb57835f612743565b6128ed916128e891612cf4565b612f6b565b5f806126f6565b9850965094506060873d606011612939575b8161291360609383612ab0565b81010312610ebb5761292487612c00565b9460406020890151980151959795965f6126e5565b3d9150612906565b6129599060203d6020116107f0576107e18183612ab0565b61267b565b6129769060203d6020116107f0576107e18183612ab0565b612639565b6129889194505f90612ab0565b5f925f6125ca565b6040513d5f823e3d90fd5b6129ba91945061258692506101803d81116103e7576103ca8183612ab0565b5050505050505050939250905091939061257c565b62a4671960e71b5f5260045ffd5b34610b51576080366003190112610b51576129f6612a4b565b506129ff612a61565b5060643567ffffffffffffffff8111610b515736602382011215610b5157806004013567ffffffffffffffff8111610b515736910160240111610b5157630a85bd0160e11b8152602090f35b600435906001600160a01b0382168203610b5157565b602435906001600160a01b0382168203610b5157565b604435906001600160a01b0382168203610b5157565b35906001600160a01b0382168203610b5157565b604435908115158203610b5157565b90601f8019910116810190811067ffffffffffffffff821117612ad257604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff8111612ad257601f01601f191660200190565b9181601f84011215610b515782359167ffffffffffffffff8311610b51576020808501948460071b010111610b5157565b60c0600319820112610b515760043591602435916044359067ffffffffffffffff8211610b5157612b6691600401612b02565b90916064356001600160a01b0381168103610b5157906084359060a43590565b610100906003190112610b51576004356001600160a01b0381168103610b5157906024358015158103610b51579060443590606435906084359060a4356001600160a01b0381168103610b51579060c4359060e43590565b51906001600160a01b0382168203610b5157565b51908160020b8203610b5157565b51906001600160801b0382168203610b5157565b919082610180910312610b515781516001600160601b0381168103610b515791612c4060208201612bde565b91612c4d60408301612bde565b91612c5a60608201612bde565b91612c6760808301612bf2565b91612c7460a08201612bf2565b91612c8160c08301612bf2565b91612c8e60e08201612c00565b916101008201519161012081015191612cb7610160612cb06101408501612c00565b9301612c00565b90565b6001600160a01b03918216815291166020820152604081019190915260600190565b90816020910312610b5157518015158103610b515790565b91908203918211612d0157565b634e487b7160e01b5f52601160045260245ffd5b9190826040910312610b51576020825192015190565b6024356001600160a01b0381168103610b515790565b6004356001600160a01b0381168103610b515790565b356001600160a01b0381168103610b515790565b9190811015612d7b5760071b0190565b634e487b7160e01b5f52603260045260245ffd5b602081830312610b515780519067ffffffffffffffff8211610b5157019080601f83011215610b515781519167ffffffffffffffff8311612ad2578260051b9060405193612de06020840186612ab0565b8452602080850192820101928311610b5157602001905b828210612e045750505090565b8151815260209182019101612df7565b916020908281520191905f905b808210612e2e5750505090565b91929091906001600160a01b03612e4485612a8d565b1681526001600160a01b03612e5b60208601612a8d565b1660208201526040840135908115158203610b5157901515604082015260019060809081906001600160a01b03612e9460608901612a8d565b166060820152019401920190612e21565b929093612ecb92608095989796988552602085015260a0604085015260a0840191612e14565b6001600160a01b0390951660608201520152565b90816060910312610b51578051916040602083015192015190565b6001600160a01b03168015612f58575f51602061318f5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b80612f735750565b600254612f8991906001600160a01b0316613061565b565b90612fc190612fb3612f89956040519586936323b872dd60e01b602086015260248501612cba565b03601f198101845283612ab0565b6130a8565b5f51602061318f5f395f51905f52546001600160a01b03163303612fe657565b63118cdaa760e01b5f523360045260245ffd5b60405163a9059cbb60e01b60208201526001600160a01b0390921660248301526044820192909252612f8991612fc18260648101612fb3565b3d1561305c573d9061304382612ae6565b916130516040519384612ab0565b82523d5f602084013e565b606090565b814710613091575f918291829182916001600160a01b03165af1613083613032565b901561308c5750565b613100565b504763cf47918160e01b5f5260045260245260445ffd5b905f602091828151910182855af115612990575f513d6130f757506001600160a01b0381163b155b6130d75750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b600114156130d0565b80511561310f57805190602001fd5b63d6bda27560e01b5f5260045ffd5b60ff5f5160206131cf5f395f51905f525460401c161561313a57565b631afcd79f60e31b5f5260045ffd5b906131545750613100565b81511580613185575b613165575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561315d56fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122089cc1b53124bc41ebe695d3a223642ef631ddef0c596adef5e792cac2884e62364736f6c634300081c0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00