0 txs
0 calls
constructor
constructor(address _nonfungiblePositionManager, address _universalRouter, address _zeroxAllowanceHolder, address _permit2)
functions
factory
viewfunction factory() view returns (address)
nonfungiblePositionManager
viewfunction nonfungiblePositionManager() view returns (address)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
permit2
viewfunction permit2() view returns (address)
universalRouter
viewfunction universalRouter() view returns (address)
vaults
viewfunction vaults(address) view returns (bool)
weth
viewfunction weth() view returns (address)
zeroxAllowanceHolder
viewfunction zeroxAllowanceHolder() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
execute
nonpayablefunction execute(uint256 tokenId, tuple instructions) returns (uint256 newTokenId)
onERC721Received
nonpayablefunction onERC721Received(address, address from, uint256 tokenId, bytes data) returns (bytes4)
renounceOwnership
nonpayablefunction renounceOwnership()
setVault
nonpayablefunction setVault(address _vault)
swap
payablefunction swap(tuple params) payable returns (uint256 amountOut)
swapAndIncreaseLiquidity
payablefunction swapAndIncreaseLiquidity(tuple params) payable returns (uint128 liquidity, uint256 amount0, uint256 amount1)
swapAndMint
payablefunction swapAndMint(tuple params) payable returns (uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data)
events
ChangeRange
event ChangeRange(uint256 indexed tokenId, uint256 newTokenId)
CompoundFees
event CompoundFees(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
Swap
event Swap(address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut)
SwapAndIncreaseLiquidity
event SwapAndIncreaseLiquidity(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1)
SwapAndMint
event SwapAndMint(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1)
VaultSet
event VaultSet(address newVault)
WithdrawAndCollectAndSwap
event WithdrawAndCollectAndSwap(uint256 indexed tokenId, address token, uint256 amount)
errors
AmountError
error AmountError()
ChainlinkPriceError
error ChainlinkPriceError()
CollateralFactorExceedsMax
error CollateralFactorExceedsMax()
CollateralFail
error CollateralFail()
CollateralValueLimit
error CollateralValueLimit()
CollectError
error CollectError()
DailyDebtIncreaseLimit
error DailyDebtIncreaseLimit()
DailyLendIncreaseLimit
error DailyLendIncreaseLimit()
DebtChanged
error DebtChanged()
EtherSendFailed
error EtherSendFailed()
ExceedsMaxReward
error ExceedsMaxReward()
GlobalDebtLimit
error GlobalDebtLimit()
GlobalLendLimit
error GlobalLendLimit()
InsufficientLiquidity
error InsufficientLiquidity()
InterestNotUpdated
error InterestNotUpdated()
InvalidConfig
error InvalidConfig()
InvalidPool
error InvalidPool()
InvalidToken
error InvalidToken()
MinLoanSize
error MinLoanSize()
MissingSwapData
error MissingSwapData()
NeedsRepay
error NeedsRepay()
NoEtherToken
error NoEtherToken()
NoLiquidity
error NoLiquidity()
NoSharesRepayed
error NoSharesRepayed()
NotConfigured
error NotConfigured()
NotEnoughReward
error NotEnoughReward()
NotLiquidatable
error NotLiquidatable()
NotReady
error NotReady()
NotSupportedFeeTier
error NotSupportedFeeTier()
NotSupportedWhatToDo
error NotSupportedWhatToDo()
NotWETH
error NotWETH()
PriceDifferenceExceeded
error PriceDifferenceExceeded()
Reentrancy
error Reentrancy()
SameRange
error SameRange()
SameToken
error SameToken()
SelfSend
error SelfSend()
SequencerDown
error SequencerDown()
SequencerGracePeriodNotOver
error SequencerGracePeriodNotOver()
SequencerUptimeFeedInvalid
error SequencerUptimeFeedInvalid()
SlippageError
error SlippageError()
SwapAmountTooLarge
error SwapAmountTooLarge()
SwapFailed
error SwapFailed()
TooMuchEtherSent
error TooMuchEtherSent()
TransferError
error TransferError()
TransformFailed
error TransformFailed()
TransformNotAllowed
error TransformNotAllowed()
TWAPCheckFailed
error TWAPCheckFailed()
Unauthorized
error Unauthorized()
WrongContract
error WrongContract()
creation bytecode
0x610120604081815234620002a557608082620040a48038038091620000258285620002aa565b833981010312620002a55781516001600160a01b0380821691828103620002a55760209062000056828701620002e4565b906200007260606200006a888a01620002e4565b9801620002e4565b9260018060a01b0319958660015416600155600080549133898416178255895192883391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08480a36312a9293f60e21b83528383600481845afa9283156200029b5790888592849562000250575b50600494166080528a519384809263c45a015560e01b82525afa9283156200024457819362000200575b50505060a05260c05260e0526101009485521690600354161760035551613daa9182620002fa8339608051828181601e01528181610c9e01528181610ce101528181610d2101528181610d7601528181610f8f015281816127f401528181612fa70152613058015260a0518281816101d001526106e4015260c0518281816104d3015281816107290152818161105d0152818161168b0152818161321201528181613272015281816132c00152818161359e0152818161397301526139af015260e051828181610fd4015281816129f801528181612b8c01528181612bc10152612c5b0152518181816104470152612e7e0152f35b9091809350813d83116200023c575b6200021b8183620002aa565b810103126200023957506200023090620002e4565b3880806200010b565b80fd5b503d6200020f565b508851903d90823e3d90fd5b9280929495508391503d831162000293575b6200026e8183620002aa565b810103126200028f576004929188620002888693620002e4565b94620000e1565b8280fd5b503d62000262565b8a513d84823e3d90fd5b600080fd5b601f909101601f19168101906001600160401b03821190821017620002ce57604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203620002a55756fe610120806040526004361015610060575b50361561001c57600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361004e57005b604051635724f38560e01b8152600490fd5b600090813560e01c90816312261ee71461114d57508063150b7a021461100357806335a9e4df14610fbe5780633fc8cef314610f795780636817031b14610f06578063715018a614610ea157806379ba509714610de45780638176835d14610a1b5780638da5cb5b146109f4578063a622ee7c146109b5578063b1902ece14610758578063b44a272214610713578063c45a0155146106ce578063c5f5280a14610476578063d2a5e66d14610431578063dc3253a0146103eb578063e30c3978146103c2578063f2fde38b146103555763fa461e33036100105734610352576060366003190112610352576024356001600160401b0360043560443582811161034e576101719036906004016111a1565b93909285831394858015610345575b1561034157846060918101031261033d5761019a8461118d565b9060206101b460406101ad83890161118d565b9701611304565b6001600160a01b0393841696841691908288101561033657875b7f0000000000000000000000000000000000000000000000000000000000000000918b6040519563cefa779960e01b875285876004818c89165afa96871561032b578992976102ed575b50816040519687019416845216604085015260020b6060840152606083526080830194838610908611176102d7578460c394733d602d80600a3d3981f3363d3d373d3d3d363d7392605597604052855190209360b88601526f5af43d82803e903d91602b57fd5bf3ff60a486015260948501525260d88201526037608c82012060f8820152012090339116036102c6576102bb93156102be5750905b339061371f565b80f35b9050906102b4565b6040516282b42960e81b8152600490fd5b634e487b7160e01b600052604160045260246000fd5b86809298508193503d8311610324575b610307818361124f565b810103126103205761031988916115a3565b9538610218565b8c80fd5b503d6102fd565b6040513d84823e3d90fd5b87926101ce565b8580fd5b8680fd5b50868313610180565b8480fd5b80fd5b50346103525760203660031901126103525761036f611172565b610377612683565b600180546001600160a01b0319166001600160a01b0392831690811790915582549091167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b50346103525780600319360112610352576001546040516001600160a01b039091168152602090f35b503461035257604036600319011261035257602435906001600160401b0382116103525760206104296104213660048601611312565b600435611681565b604051908152f35b50346103525780600319360112610352576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b506003196020368201126106ca576004356001600160401b0391828211610679576101e09082360301126106755760405163133f757160e31b8152600480830135908201819052909290610180906001600160a01b0382866024817f000000000000000000000000000000000000000000000000000000000000000085165afa9586156106bf5791610594969594939188936105689990859861067d575b50908087921697169788928860a484019161052e83611552565b9061055e6024870135938493604489013595869161012460c48c01359b01359b6105588d8d611596565b946126db565b6040519d8e611218565b8d5260208d015260408c01526105806064890161118d565b60608c0152608488013560808c015261118d565b60a08a015260c089015260e485013560e0890152610104850135848111610679576105c590600436918801016112c2565b610100890152610120880152610144840135610140880152610164840135838111610675576105fa90600436918701016112c2565b610160880152610184840135908701526101a48301356101a08701526101c48301359182116103525761067161064a87878761063b36888a016004016112c2565b6101c0840152341515926133ce565b604080516001600160801b0390941684526020840192909252908201529081906060820190565b0390f35b8280fd5b8380fd5b829850879291506106a390853d87116106b8575b61069b818361124f565b8101906115d9565b50505050505050509a92509050919250610514565b503d610691565b6040513d89823e3d90fd5b5080fd5b50346103525780600319360112610352576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346103525780600319360112610352576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b506003199060203683011261035257600435906001600160401b0390818311610352576102a0836004019484360301126103525761079584611552565b60248401906001600160a01b03806107ac84611552565b169116146109a3576107bd85611552565b6107c682611552565b906101448601906107d682611552565b9360a48801359060c4890135926101648a01359584846101c48d0135996107fd8b8b611596565b93610807956126db565b604051996108148b6111fc565b61081d9061118d565b8a526108289061118d565b60208a0152610839604489016112f4565b60408a015261084a60648901611304565b60608a015261085b60848901611304565b60808a015260a089015260c088015261087660e4870161118d565b60e0880152610888610104870161118d565b6101008801526101248601356101208801526108a39061118d565b6101408701526101608601526101848401356101808601526101a4840135838111610675576108d890600436918701016112c2565b6101a08601526101c08501526101e48301356101e08501526102048301358281116106ca5761090d90600436918601016112c2565b6102008501526102248301356102208501526102448301356102408501526102648301358281116106ca5761094890600436918601016112c2565b6102608501526102848301359182116103525760806001600160801b0361098786610978368789016004016112c2565b6102808201523415159061308b565b9293909160405194855216602084015260408301526060820152f35b60405163100dac0560e11b8152600490fd5b50346103525760203660031901126103525760209060ff906040906001600160a01b036109e0611172565b168152600284522054166040519015158152f35b5034610352578060031936011261035257546040516001600160a01b039091168152602090f35b506003196020368201126106ca576001600160401b03600435116106ca57610100906004353603011261035257610a56600435600401611552565b600435602401906001600160a01b03610a6e83611552565b6001600160a01b039092169116146109a357610a8e600435600401611552565b8290819081908180808034610c9a575b806044600435013511610c81575b50610c6e575b508480610c67575b80610c55575b80610c4e575b610c46575b80610c32575b505080610c20575b5080610c0c575b5050610af0600435600401611552565b91610afa82611552565b60043560a4810135903603602219018112156106755760043501906004820135916001600160401b03831161067957602401928236038413610352575093610b82610ba093610b8c9360209760405194610b53866111e1565b6001600160a01b039081168652168885015260043560448101356040860152606401356060850152369161128b565b6080820152612945565b9283610bea575b5060446004350135611573565b80610baf575b50604051908152f35b610be490610bc1608460043501611552565b90610bd0600435600401611552565b610bde60c460043501611566565b92612f97565b38610ba6565b610c069084610bd0610c00608460043501611552565b92611552565b38610b93565b610c199130903390613767565b3880610ae0565b610c2c90303385613767565b38610ad9565b610c3f9130903390613767565b3880610ad1565b849350610acb565b5084610ac6565b506001600160a01b0382161515610ac0565b5084610aba565b610c7a91935085611573565b9138610ab2565b610c9391935060446004350135611573565b9138610aac565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b15610de057604051630d0e30db60e41b81528981600481347f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610dd557610dc2575b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811690851603610d72575034604460043501353411610d60578690610a9e565b6040516307e205e160e41b8152600490fd5b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610db057349034610d60578690610a9e565b6040516392b0337360e01b8152600490fd5b610dcd9197506111ce565b879538610d16565b6040513d8c823e3d90fd5b8880fd5b50346103525780600319360112610352576001546001600160a01b033381831603610e4a576001600160a01b031991821660015582543392811683178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608490fd5b5034610352578060031936011261035257610eba612683565b600180546001600160a01b03199081169091558154908116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461035257602036600319011261035257610f20611172565b610f28612683565b6040516001600160a01b03909116808252907fe7ae49f883c825b05681b3e00e8be6fdea9ed2a8a45e4c6ecb9390fc44cce61590602090a18152600260205260408120805460ff1916600117905580f35b50346103525780600319360112610352576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346103525780600319360112610352576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346103525760803660031901126103525761101d611172565b506024356001600160a01b038082169081830361067957604435906001600160401b0390606435828111610341576110599036906004016111a1565b90917f0000000000000000000000000000000000000000000000000000000000000000169485330361113b573014611129578101602082820312610341578135928311610341576102c0926110ae9201611312565b6110b88184611681565b50015192823b1561034e5791849391846110eb969460405197889586948593635c46a7ef60e11b85523060048601611521565b03925af190811561111d575061110e575b604051630a85bd0160e11b8152602090f35b611117906111ce565b386110fc565b604051903d90823e3d90fd5b604051632797715160e01b8152600490fd5b604051630d348b9b60e41b8152600490fd5b9050346106ca57816003193601126106ca576003546001600160a01b03168152602090f35b600435906001600160a01b038216820361118857565b600080fd5b35906001600160a01b038216820361118857565b9181601f84011215611188578235916001600160401b038311611188576020838186019501011161118857565b6001600160401b0381116102d757604052565b60a081019081106001600160401b038211176102d757604052565b6102a081019081106001600160401b038211176102d757604052565b6101e081019081106001600160401b038211176102d757604052565b602081019081106001600160401b038211176102d757604052565b90601f801991011681019081106001600160401b038211176102d757604052565b6001600160401b0381116102d757601f01601f191660200190565b92919261129782611270565b916112a5604051938461124f565b829481845281830111611188578281602093846000960137010152565b9080601f83011215611188578160206112dd9335910161128b565b90565b35906001600160801b038216820361118857565b359062ffffff8216820361118857565b35908160020b820361118857565b91909161030090818185031261118857604051918201906001600160401b0391838110838211176102d75760405282948135600381101561118857845261135b6020830161118d565b602085015260408201356040850152606082013560608501526080820135608085015260a082013560a085015260c082013583811161118857816113a09184016112c2565b60c085015260e082013560e085015261010080830135908501526101208083013584811161118857826113d49185016112c2565b908501526101406113e68184016112e0565b908501526101606113f88184016112e0565b9085015261018061140a8184016112f4565b908501526101a061141c818401611304565b908501526101c061142e818401611304565b908501526101e06114408184016112e0565b9085015261020080830135908501526102208083013590850152610240808301359085015261026061147381840161118d565b9085015261028061148581840161118d565b908501526102a080830135908115158203611188578501526102c08083013584811161118857826114b79185016112c2565b908501526102e09283830135908111611188576114d492016112c2565b910152565b60005b8381106114ec5750506000910152565b81810151838201526020016114dc565b90602091611515815180928185528580860191016114d9565b601f01601f1916010190565b6001600160a01b0391821681529116602082015260408101919091526080606082018190526112dd929101906114fc565b356001600160a01b03811681036111885790565b3580151581036111885790565b9190820391821161158057565b634e487b7160e01b600052601160045260246000fd5b9190820180921161158057565b51906001600160a01b038216820361118857565b51908160020b820361118857565b51906001600160801b038216820361118857565b9190826101809103126111885781516bffffffffffffffffffffffff81168103611188579161160a602082016115a3565b91611617604083016115a3565b91611624606082016115a3565b91611631608083016115b7565b9161163e60a082016115b7565b9161164b60c083016115b7565b9161165860e082016115c5565b9161010082015191610120810151916112dd61016061167a61014085016115c5565b93016115c5565b919060c0526000917f000000000000000000000000000000000000000000000000000000000000000033600052600260205260ff604060002054166000146125e35760405163ae41abab60e01b8152602081600481335afa908115612392576000916125b1575b5082036102c6575b60405163133f757160e31b815260048101839052610180816024816001600160a01b0386165afa801561239257600090600092600091612580575b50506000806001600160801b036101e060c0510151168061249c575b506001600160801b0361014060c051015116906001600160801b0382146000146124895750506001600160801b03905b6001600160801b0361016060c051015116906001600160801b0382146000146124715750506001600160801b03935b6040516370a0823160e01b8152306004820152946020866024816001600160a01b0388165afa9586156123925760009661243d575b506040516370a0823160e01b8152306004820152916020836024816001600160a01b038a165afa92831561239257600093612409575b50604051938460808101106001600160401b036080870111176102d75760808501604090815289865230602087019081526001600160801b0392831682880190815294831660608801908152825163fc6f786560e01b81529751600489015290516001600160a01b0390811660248901529451831660448801525190911660648601529184916084918391600091165af1948515612392576000926000966123d2575b506040516370a0823160e01b8152306004820152906020826024816001600160a01b0389165afa9182156123925760009261239e575b506040516370a0823160e01b8152306004820152906020826024816001600160a01b038b165afa928315612392578592600094612357575b509061192d91611573565b0361234557859161193d91611573565b03612345578381608060c051015181108015612336575b6123245760c05151600381101561230e57600203611c5257611ad394927faede78842f79342b251fe687b26b9f00d35eec5b0d21d44c283dd01a5ad7c136969492889260018060a01b03602060c05101511660018060a01b0386168114600014611ad9575050611aa9955060018060a01b0361026060c05101511661024060c051015160e060c051015161010060c05101519161012060c05101519361020060c05101519561022060c05101519760405199611a0f8b611218565b8a5260208a015260408901526060880152608087015260018060a01b03881660a087015260c086015260e085015261010084015260006101208401526000610140840152604051611a5f81611234565b600081526101608401526101808301526101a0820152604051611a8181611234565b600081526101c082015260c0516102a001511515926001600160a01b039081169216906133ce565b9092905b604051938493846040919493926001600160801b03606083019616825260208201520152565b0390a25b565b6001600160a01b03871603611bb55750611bad955060018060a01b0361026060c05101511661024060c0510151608060c051015160a060c05101519160c0805101519361020060c05101519561022060c05101519760405199611b3b8b611218565b8a5260208a015260408901526060880152608087015260018060a01b03871660a0870152600060c0870152600060e0870152604051611b7981611234565b600081526101008701526101208601526101408501526101608401526101808301526101a0820152604051611a8181611234565b909290611aad565b92505050611bad9360018060a01b0361026060c05101511661024060c051015161020060c05101519161022060c05101519360405195611bf487611218565b8c87526020870152604086015260608501526080840152600060a0840152600060c0840152600060e0840152604051611c2c81611234565b6000815261010084015260006101208401526000610140840152604051611a5f81611234565b92959791505060c05151600381101561230e5761212f575060c051602001516001600160a01b039081169085168103611e42575062ffffff61018060c051015116610100526101a060c051015160020b926101c060c051015160020b9260018060a01b0361026060c0510151169060018060a01b0361028060c05101511661024060c05101519060e060c05101519361010060c05101519561012060c05101519761020060c05101519961022060c05101519b6102e060c05101519d60405160e052611d1f60e0516111fc565b60018060a01b031660e0515260018060a01b038816602060e051015261010051604060e0510152606060e0510152608060e051015260a060e051015260c060e051015260e08051015261010060e051015261012060e051015260018060a01b031661014060e051015261016060e051015261018060e05101526101a060e051015260006101c060e051015260006101e060e0510152604051611dc081611234565b6000815261020060e051015261022060e051015261024060e051015261026060e0510152604051611df081611234565b6000815261028060e0510152611e116102a060c0510151151560e05161308b565b505050915b7f2d3b242342e1e892c96167e80cea1f82a3961348e1576320d5e93deaa75d36896020604051858152a2565b9193916001600160a01b03851603611fe35762ffffff61018060c05101511660a0526101a060c051015160020b926101c060c051015160020b9260018060a01b0361026060c0510151169060018060a01b0361028060c05101511661024060c051015190608060c05101519360a060c05101519560c0805101519761020060c05101519961022060c05101519b6102e060c05101519d604051608052611ee96080516111fc565b60018060a01b0389166080515260018060a01b03166020608051015260a051604060805101526060608051015260808051015260a0608051015260c0608051015260e060805101526101006080510152610120608051015260018060a01b031661014060805101526000610160608051015260006101806080510152604051611f7181611234565b600081526101a060805101526101c060805101526101e060805101526102006080510152610220608051015261024060805101526102606080510152604051611fb981611234565b600081526102806080510152611fda6102a060c0510151151560805161308b565b50505091611e16565b9261206292611fda9462ffffff61018060c051015116916101a060c051015160020b916101c060c051015160020b9160018060a01b0361026060c0510151169160018060a01b0361028060c0510151169361024060c05101519561020060c05101519761022060c0510151996102e060c05101519b6040519d8e6111fc565b60018060a01b03168d5260018060a01b031660208d015260408c015260608b015260808a015260a089015260c088015260e08701526101008601526101208501526000610140850152600061016085015260006101808501526040516120c781611234565b600081526101a085015260006101c085015260006101e08501526040516120ed81611234565b6000815261020085015261022084015261024083015261026082015260405161211581611234565b600081526102808201526102a060c051015115159061308b565b95939160c09391935151600381101561230e576001036122fc5760c05160200180517ff8aacb16b34d229aa53d44a7759a3741b5c098e099666e51a4ae9d66a5956c43959194906000906001600160a01b0390811690831681146122f457926121d76121ea9460a060c051015160c08051015190604051926121b0846111e1565b6001600160a01b038816845260208401526040830185905260608301526080820152612945565b9390918083106122a0575b505050611596565b83516001600160a01b038381169116146122e35761222d926121d760018060a01b0386511661010060c051015161012060c051015190604051926121b0846111e1565b905b8115158061228d575b61225a575b51604080516001600160a01b0390921682526020820192909252a2565b60c05161026081015182516102a090920151612288929015159185916001600160a01b039081169116612f97565b61223d565b5080516001600160a01b03161515612238565b6122bd6122db9360018060a01b0361026060c05101511692611573565b60c0516102a0015115159290916001600160a01b0390911690612f97565b3880806121e2565b6122ee929150611596565b9061222f565b5050506121ea565b60405163290db76760e01b8152600490fd5b634e487b7160e01b600052602160045260246000fd5b604051634ff64a9f60e01b8152600490fd5b5060e060c05101518610611954565b604051638ad721cb60e01b8152600490fd5b91925092506020813d60201161238a575b816123756020938361124f565b8101031261118857519184919061192d611922565b3d9150612368565b6040513d6000823e3d90fd5b9091506020813d6020116123ca575b816123ba6020938361124f565b81010312611188575190386118ea565b3d91506123ad565b9095506123f891925060403d604011612402575b6123f0818361124f565b8101906136a0565b91909194386118b4565b503d6123e6565b9092506020813d602011612435575b816124256020938361124f565b8101031261118857519138611811565b3d9150612418565b9095506020813d602011612469575b816124596020938361124f565b81010312611188575194386117db565b3d915061244c565b6124839161247e91611596565b6136b6565b936117a6565b6124969161247e91611596565b90611777565b60c0516102408101516040820151606090920151600095508594509091836124ca575b505050509038611747565b9193509193506001600160801b03604051946124e5866111e1565b8986526020860190815260408601928352606086019384526080860194855260405195630624e65f60e11b87525160048701525116602485015251604484015251606483015251608482015260408160a481600060018060a01b0389165af180156123925760009160009161255f575b50388080806124bf565b905061257a915060403d604011612402576123f0818361124f565b38612555565b91505061259e91506101803d610180116106b85761069b818361124f565b505050509650505050915090913861172b565b90506020813d6020116125db575b816125cc6020938361124f565b810103126111885751386116e8565b3d91506125bf565b6040516331a9108f60e11b8152600481018390526001600160a01b03906020816024818686165afa90811561239257600091612649575b501633811415908161263e575b50156116f0576040516282b42960e81b8152600490fd5b905030141538612627565b90506020813d60201161267b575b816126646020938361124f565b8101031261118857612675906115a3565b3861261a565b3d9150612657565b6000546001600160a01b0316330361269757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b90929491946000906000938496859086918794346127e9575b8181116127d6575b50508181116127c3575b5050818111806127b1575b8061279b575b80612785575b612772575b50508061275e575b50508061274a575b50508061273d575050565b611ad79130903390613767565b6127579130903390613767565b3880612732565b61276b9130903390613767565b388061272a565b61277d929650611573565b933880612722565b506001600160a01b03868116908916141561271d565b506001600160a01b038481169089161415612717565b506001600160a01b0388161515612711565b6127ce929650611573565b933880612706565b6127e1929650611573565b9338806126fc565b6001600160a01b03917f00000000000000000000000000000000000000000000000000000000000000008316803b156128cf576040938451630d0e30db60e41b81528c8160048134875af180156128c5576128b6575b508a8116820361286b57505050349181341161285b57506126f4565b516307e205e160e41b8152600490fd5b939591938c8116820361288a57505050349383341161285b57506126f4565b95975090948d16036128a557349585341161285b57506126f4565b85516392b0337360e01b8152600490fd5b6128bf906111ce565b3861283f565b86513d8f823e3d90fd5b8a80fd5b3d156128fe573d906128e482611270565b916128f2604051938461124f565b82523d6000602084013e565b606090565b81601f8201121561118857805161291981611270565b92612927604051948561124f565b81845260208284010111611188576112dd91602080850191016114d9565b6000916000916000906040810151151580612f89575b80612f73575b80612f60575b61296f575050565b80516040516370a0823160e01b8152306004820152929550909350602090829060249082906001600160a01b03165afa90811561239257600091612f2e575b506020838101516040516370a0823160e01b81523060048201529190829060249082906001600160a01b03165afa90811561239257600091612efc575b50608084018051602001517f000000000000000000000000000000000000000000000000000000000000000003612e75575180518101906040818303126111885760208101516001600160a01b03811603611188576040810151916001600160401b03831161118857612a65926020809201920101612903565b80518101906020818303126111885760208101516001600160401b0381116111885760608183018403126111885760405191606083018381106001600160401b038211176102d757604052602082820101516001600160401b03811161118857612ad9906020808701918585010101612903565b835260408282010151936001600160401b0385116111885760208101603f868585010101121561118857602085848401010151946001600160401b0386116102d7578560051b9060405196612b31602084018961124f565b875260208701602084016040848489890101010111611188576040828787010101905b604084848989010101018210612e3c5750505050506020830193845201606001516040808301918252875190880151919291612bba917f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b031661371f565b51915190517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b1561118857604051630d64d59360e21b8152606060048201529290918391612c169060648401906114fc565b600319838203016024840152815180825260208201916020808360051b8301019401926000915b838310612e09575050505060448301939093526000925081900381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561239257612df5575b505b83516040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa908115612dea578691612db7575b50612cd890602493611573565b6020858101516040516370a0823160e01b815230600482015292979294859182906001600160a01b03165afa90811561111d5790612d83575b612d1b9250611573565b9160608101518310612d715760018060a01b0381511690602060018060a01b0391015116907ffa2dda1cc1b86e41239702756b13effbc1a092b5c57e3ad320fbe4f3b13fe23560408051878152866020820152a3565b604051630d4205a160e11b8152600490fd5b506020823d602011612daf575b81612d9d6020938361124f565b8101031261118857612d1b9151612d11565b3d9150612d90565b90506020813d602011612de2575b81612dd26020938361124f565b8101031261118857516024612ccb565b3d9150612dc5565b6040513d88823e3d90fd5b612e009195506111ce565b60009338612c90565b91939695509193602080612e29600193601f198682030187528a516114fc565b9801930193019092879596949293612c3d565b8151906001600160401b0382116111885760208091612e688960408096898e878e019401010101612903565b8152019201919050612b54565b845160408601517f0000000000000000000000000000000000000000000000000000000000000000926000928392612eb79186906001600160a01b03166137a9565b5160208151910182855af1612eca6128d3565b5015612eea578451612ee591906001600160a01b0316613862565b612c92565b60405163081ceff360e41b8152600490fd5b90506020813d602011612f26575b81612f176020938361124f565b810103126111885751386129eb565b3d9150612f0a565b90506020813d602011612f58575b81612f496020938361124f565b810103126111885751386129ae565b3d9150612f3c565b5080516001600160a01b03161515612967565b5060208101516001600160a01b03161515612961565b50608081015151151561295b565b919280613055575b1561304a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b15611188576040518092632e1a7d4d60e01b82528160246000958680948960048401525af1801561303f5761302c575b5081809381925af16130126128d3565b501561301a57565b604051637cd69c3960e11b8152600490fd5b613038909291926111ce565b9038613002565b6040513d85823e3d90fd5b90611ad7929161371f565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811690821614612f9f565b909161309783836138b3565b909162ffffff60408501511660018060a01b038551169060018060a01b0360208701511690606087015160020b608088015160020b610220890151916102408a0151936101208b01519560405197886101808101106001600160401b036101808b0111176102d75761018089016040528852602088015260020b6040870152606086015260808501528660a08501528560c085015260e08401526101008301523061012083015261014082015260006101608201526040519063b5007d1f60e01b825260018060a01b03815116600483015260018060a01b036020820151166024830152604081015160020b6044830152606081015160020b6064830152608081015160020b608483015260a081015160a483015260c081015160c483015260e081015160e483015261010081015161010483015260018060a01b036101208201511661012483015261014081015161014483015261016060018060a01b039101511661016482015260808161018481600060018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19586156123925760009660009260009060009261337c575b508195819785998b60018060a01b03610100830151166102608301519060018060a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561118857826000916132bb6040519485938493635c46a7ef60e11b85523060048601611521565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561239257611ad7997fdbed0571af71402c681d3b0a1f08d80aa2245c9adb30e12d215356c7a274fcf992889261336d575b5061334889604051938493846040919493926001600160801b03606083019616825260208201520152565b0390a260e081015181516020909201516001600160a01b039081169281169116613b7d565b613376906111ce565b3861331d565b9350505095506080813d6080116133c6575b8161339b6080938361124f565b81010312611188578051956133b2602083016115c5565b96606060408401519301519097923861324c565b3d915061338e565b929390919384838560208101516040820151600160a01b600190036060840151166080840151600160a01b6001900360a08601511660c086015160e08701519161010088015193610120890151956101408a0151976101608b0151996101808c01519b6101a001519c6040519e8f91613446836111fc565b600160a01b60019003168252600160a01b600190031690602001528d6040810160009052606001600090528d608081016000905260a0015260c08d015260e08c01526101008b01600090526101208b01526101408a01526101608901526101808801526101a08701526101c08601526101e08501526102008401526102208301526102408201526040516134d981611234565b60008152610260820152816040516134f081611234565b60008152610280830152613503916138b3565b8551906101808701516101a08801516080890151916040519460c086018681106001600160401b038211176102d7576040528552602085018681526040860190858252606087019283526080870193845260a087019485526040519663219f5d1760e01b88525160048801525160248701525160448601525160648501525160848401525160a483015260608260c481600060018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af192831561239257600098600093600095613648575b509084939291611ad7969598849a8c7f1aa7d7662b161a8d4058004091e4c60474753d2f085db526dfb22da59838d0a7878351926136338b604051938493846040919493926001600160801b03606083019616825260208201520152565b0390a2606001516001600160a01b0316613b7d565b99509250909392506060883d606011613698575b816136696060938361124f565b8101031261118857611ad79361367e896115c5565b91604060208b01519a0151929992949593909192936135d5565b3d915061365c565b9190826040910312611188576020825192015190565b6001600160801b03908181116136ca571690565b60405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608490fd5b60405163a9059cbb60e01b60208201526001600160a01b0390921660248301526044820192909252611ad79161376282606481015b03601f19810184528361124f565b613bd0565b6040516323b872dd60e01b60208201526001600160a01b039283166024820152929091166044830152606480830193909352918152611ad791613762826111e1565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301529093906020908590604490829086165afa9384156123925760009461382c575b506137fd61376291611ad795611596565b60405163095ea7b360e01b60208201526001600160a01b03909416602485015260448401528260648101613754565b93506020843d60201161385a575b816138476020938361124f565b81010312611188579251926137fd6137ec565b3d915061383a565b60405163095ea7b360e01b60208201526001600160a01b039092166024830152600060448084019190915282526080820191906001600160401b038311828410176102d757611ad792604052613bd0565b91610140830160018060a01b0392838251169184865116908184146000146139e4575050505060a083019283516101c08201908151116123245761394261393b61394d9286855116908760208701511690516101e0870151906102008801519260405194613920866111e1565b85526020850152604084015260608301526080820152612945565b9651611573565b9460c0830151611596565b80935b856139a1575b8161396057505050565b6020611ad7930190808251169161399a827f0000000000000000000000000000000000000000000000000000000000000000168094613862565b51166137a9565b6139df86828551166139d6847f0000000000000000000000000000000000000000000000000000000000000000168092613862565b838651166137a9565b613956565b6020879496970195878751168114600014613a5a575050505060c08101805161016083019081511161232457613a40613a479187613a5497511690888651169051610180870151906101a08801519260405194613920866111e1565b9251611573565b93849160a0840151611596565b94613950565b929691928015613b64576101608501938451610180870151906101a08801519260405194613a87866111e1565b85526020850152604084015260608301526080820152613aa690612945565b8380849a939a5116985116976101c087019889516101e0890151906102008a01519260405194613ad5866111e1565b85526020850152604084015260608301526080820152613af490612945565b99909160a088015190613b0691611596565b9960c088015190613b1691611596565b988996519051613b2591611596565b90613b2f91611573565b90613b3991611573565b80613b47575b505050613950565b613b5c92848060e08901511691511690612f97565b388080613b3f565b5050935050925060a08301519260c08101518093613950565b9695613b9087939596613b969395611573565b95611573565b9380613bbe575b50505081613bac575b50505050565b613bb593612f97565b38808080613ba6565b613bc89287612f97565b388381613b9d565b60018060a01b03169060405160408101908082106001600160401b038311176102d757613c41916040526020938482527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564858301526000808587829751910182855af1613c3b6128d3565b91613cd7565b805191821591848315613cb3575b505050905015613c5c5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b9193818094500103126106ca57820151908115158203610352575080388084613c4f565b91929015613d395750815115613ceb575090565b3b15613cf45790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015613d4c5750805190602001fd5b60405162461bcd60e51b815260206004820152908190613d709060248301906114fc565b0390fdfea2646970667358221220a91f41374e61539db5ad3a8055825ae4c95fd53fbf2852be78f264e25b74d91164736f6c63430008180033000000000000000000000000827922686190790b37229fd06084350e74485b720000000000000000000000006ff5693b99212da76ad316178a184ab56d299b430000000000000000000000000000000000001ff3684f28c67538d4d072c22734000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3