0 txs
646 calls
constructor
constructor()
functions
crossChainDispatcherOf
viewfunction crossChainDispatcherOf(uint16) view returns (address)
extraCallbackTxNativeFee
viewfunction extraCallbackTxNativeFee(uint256) view returns (uint256)
flashRepayCallbackTxGasLimit
viewfunction flashRepayCallbackTxGasLimit() view returns (uint64)
flashRepaySwapTxGasLimit
viewfunction flashRepaySwapTxGasLimit() view returns (uint64)
isBridgingActive
viewfunction isBridgingActive() view returns (bool)
isDestinationChainSupported
viewfunction isDestinationChainSupported(uint16) view returns (bool)
leverageCallbackTxGasLimit
viewfunction leverageCallbackTxGasLimit() view returns (uint64)
leverageSwapTxGasLimit
viewfunction leverageSwapTxGasLimit() view returns (uint64)
lzBaseGasLimit
viewfunction lzBaseGasLimit() view returns (uint256)
poolRegistry
viewfunction poolRegistry() view returns (address)
sgeth
viewfunction sgeth() view returns (address)
stargateComposer
viewfunction stargateComposer() view returns (address)
stargatePoolIdOf
viewfunction stargatePoolIdOf(address) view returns (uint256)
stargateSlippage
viewfunction stargateSlippage() view returns (uint256)
swapAmountOutMin
viewfunction swapAmountOutMin(uint256) view returns (uint256)
VERSION
viewfunction VERSION() view returns (string)
weth
viewfunction weth() view returns (address)
initialize
nonpayablefunction initialize(address poolRegistry_, address weth_, address sgeth_)
onOFTReceived
nonpayablefunction onOFTReceived(uint16 srcChainId_, bytes, uint64, bytes from_, uint256 amount_, bytes payload_)
retrySwapAndTriggerFlashRepayCallback
payablefunction retrySwapAndTriggerFlashRepayCallback(uint16 srcChainId_, bytes srcAddress_, uint64 nonce_, address token_, uint256 amount_, bytes payload_, uint256 newAmountOutMin_) payable
retrySwapAndTriggerLeverageCallback
payablefunction retrySwapAndTriggerLeverageCallback(uint16 srcChainId_, bytes srcAddress_, uint64 nonce_, uint256 amount_, bytes payload_, uint256 newAmountOutMin_) payable
sgReceive
nonpayablefunction sgReceive(uint16 srcChainId_, bytes srcAddress_, uint256, address token_, uint256 amountLD_, bytes payload_)
toggleBridgingIsActive
nonpayablefunction toggleBridgingIsActive()
toggleDestinationChainIsActive
nonpayablefunction toggleDestinationChainIsActive(uint16 chainId_)
triggerFlashRepaySwap
payablefunction triggerFlashRepaySwap(uint256 requestId_, address account_, address tokenIn_, address tokenOut_, uint256 amountIn_, uint256 amountOutMin_, bytes lzArgs_) payable
triggerLeverageSwap
payablefunction triggerLeverageSwap(uint256 requestId_, address account_, address tokenIn_, address tokenOut_, uint256 amountIn_, uint256 amountOutMin_, bytes lzArgs_) payable
updateCrossChainDispatcherOf
nonpayablefunction updateCrossChainDispatcherOf(uint16 chainId_, address crossChainDispatcher_)
updateFlashRepayCallbackTxGasLimit
nonpayablefunction updateFlashRepayCallbackTxGasLimit(uint64 newFlashRepayCallbackTxGasLimit_)
updateFlashRepaySwapTxGasLimit
nonpayablefunction updateFlashRepaySwapTxGasLimit(uint64 newFlashRepaySwapTxGasLimit_)
updateLeverageCallbackTxGasLimit
nonpayablefunction updateLeverageCallbackTxGasLimit(uint64 newLeverageCallbackTxGasLimit_)
updateLeverageSwapTxGasLimit
nonpayablefunction updateLeverageSwapTxGasLimit(uint64 newLeverageSwapTxGasLimit_)
updateLzBaseGasLimit
nonpayablefunction updateLzBaseGasLimit(uint256 newLzBaseGasLimit_)
updateStargateComposer
nonpayablefunction updateStargateComposer(address newStargateComposer_)
updateStargatePoolIdOf
nonpayablefunction updateStargatePoolIdOf(address token_, uint256 newPoolId_)
updateStargateSlippage
nonpayablefunction updateStargateSlippage(uint256 newStargateSlippage_)
events
BridgingIsActiveUpdated
event BridgingIsActiveUpdated(bool newIsActive)
CrossChainDispatcherUpdated
event CrossChainDispatcherUpdated(uint16 chainId, address oldCrossChainDispatcher, address newCrossChainDispatcher)
DestinationChainIsActiveUpdated
event DestinationChainIsActiveUpdated(uint16 chainId, bool newIsSupported)
FlashRepayCallbackTxGasLimitUpdated
event FlashRepayCallbackTxGasLimitUpdated(uint64 oldCallbackTxGasLimit, uint64 newCallbackTxGasLimit)
FlashRepaySwapTxGasLimitUpdated
event FlashRepaySwapTxGasLimitUpdated(uint64 oldSwapTxGasLimit, uint64 newSwapTxGasLimit)
Initialized
event Initialized(uint8 version)
LeverageCallbackTxGasLimitUpdated
event LeverageCallbackTxGasLimitUpdated(uint64 oldCallbackTxGasLimit, uint64 newCallbackTxGasLimit)
LeverageSwapTxGasLimitUpdated
event LeverageSwapTxGasLimitUpdated(uint64 oldSwapTxGasLimit, uint64 newSwapTxGasLimit)
LzBaseGasLimitUpdated
event LzBaseGasLimitUpdated(uint256 oldLzBaseGasLimit, uint256 newLzBaseGasLimit)
StargateComposerUpdated
event StargateComposerUpdated(address oldStargateComposer, address newStargateComposer)
StargatePoolIdUpdated
event StargatePoolIdUpdated(address indexed token, uint256 oldPoolId, uint256 newPoolId)
StargateSlippageUpdated
event StargateSlippageUpdated(uint256 oldStargateSlippage, uint256 newStargateSlippage)
errors
AddressIsNull
error AddressIsNull()
BridgeTokenNotSupported
error BridgeTokenNotSupported()
BridgingIsPaused
error BridgingIsPaused()
DestinationChainNotAllowed
error DestinationChainNotAllowed()
InvalidFromAddress
error InvalidFromAddress()
InvalidMsgSender
error InvalidMsgSender()
InvalidOperationType
error InvalidOperationType()
InvalidPayload
error InvalidPayload()
InvalidSlippageParam
error InvalidSlippageParam()
NewValueIsSameAsCurrent
error NewValueIsSameAsCurrent()
SenderIsNotGovernor
error SenderIsNotGovernor()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b62000152565b6200002e60ff62000031565b50565b60008054610100900460ff1615620000ca578160ff1660011480156200006a575062000068306200014360201b620026e81760201c565b155b620000c25760405162461bcd60e51b815260206004820152602e602482015260008051602062004bda83398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b506000919050565b60005460ff808416911610620001295760405162461bcd60e51b815260206004820152602e602482015260008051602062004bda83398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620000b9565b506000805460ff191660ff92909216919091179055600190565b6001600160a01b03163b151590565b614a7880620001626000396000f3fe6080604052600436106102075760003560e01c80638a9cadaf11610118578063b71b42ec116100a0578063dfda255f1161006f578063dfda255f14610602578063e3499aa414610638578063e3d47ece14610668578063e7f4c16b1461068f578063ffa1ad74146106b657600080fd5b8063b71b42ec14610582578063b9d81720146105a2578063c0c53b8b146105b5578063d89921cb146105d557600080fd5b8063ab4193e2116100e7578063ab4193e2146104d5578063ab8236f314610502578063ac18fce614610522578063afcff50f14610542578063b2d083c11461056257600080fd5b80638a9cadaf146104555780638ece685714610468578063a6bd364614610488578063a761f5f0146104b557600080fd5b80633413f1c11161019b5780636a46aa381161016a5780636a46aa38146103ca5780636c77d24f146103ea5780636e406753146104005780637b7305d314610420578063833667df1461044057600080fd5b80633413f1c11461035357806339f648bf146103775780633fc8cef31461038a57806362491b35146103aa57600080fd5b80631e492d56116101d75780631e492d56146102ac5780632b80cc52146102cc5780632e369cf2146102f65780633352b6081461031657600080fd5b8062bc9db9146102135780630b211f0f14610228578063147a7d711461026c5780631a607f9a1461028c57600080fd5b3661020e57005b600080fd5b610226610221366004613de4565b6106f4565b005b34801561023457600080fd5b5060075461024f90600160801b90046001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b34801561027857600080fd5b50610226610287366004613ea0565b610c10565b34801561029857600080fd5b506102266102a7366004613f6c565b610d6e565b3480156102b857600080fd5b506102266102c7366004613f85565b610e88565b3480156102d857600080fd5b506008546102e69060ff1681565b6040519015158152602001610263565b34801561030257600080fd5b50610226610311366004613fa2565b610fe3565b34801561032257600080fd5b5060085461033b9061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610263565b34801561035f57600080fd5b5061036960065481565b604051908152602001610263565b610226610385366004613de4565b61113c565b34801561039657600080fd5b50600b5461033b906001600160a01b031681565b3480156103b657600080fd5b5060075461024f906001600160401b031681565b3480156103d657600080fd5b506102266103e5366004613f6c565b61167e565b3480156103f657600080fd5b5061036960055481565b34801561040c57600080fd5b5061022661041b366004613f85565b611798565b34801561042c57600080fd5b5061022661043b366004613fbf565b6118f8565b34801561044c57600080fd5b50610226611a4a565b610226610463366004613feb565b611b51565b34801561047457600080fd5b506102266104833660046140a7565b611d4e565b34801561049457600080fd5b506103696104a3366004613f6c565b600d6020526000908152604090205481565b3480156104c157600080fd5b50600c5461033b906001600160a01b031681565b3480156104e157600080fd5b506103696104f0366004613f6c565b60036020526000908152604090205481565b34801561050e57600080fd5b5061022661051d3660046141a3565b611ec9565b34801561052e57600080fd5b5061022661053d366004613f85565b612033565b34801561054e57600080fd5b5060025461033b906001600160a01b031681565b34801561056e57600080fd5b5061022661057d36600461423f565b612182565b34801561058e57600080fd5b5061022661059d366004613f85565b6122b2565b6102266105b036600461425c565b612417565b3480156105c157600080fd5b506102266105d0366004614303565b6125e1565b3480156105e157600080fd5b506103696105f0366004613fa2565b60096020526000908152604090205481565b34801561060e57600080fd5b5061033b61061d36600461423f565b6004602052600090815260409020546001600160a01b031681565b34801561064457600080fd5b506102e661065336600461423f565b600a6020526000908152604090205460ff1681565b34801561067457600080fd5b5060075461024f90600160c01b90046001600160401b031681565b34801561069b57600080fd5b5060075461024f90600160401b90046001600160401b031681565b3480156106c257600080fd5b506106e760405180604001604052806005815260200164312e332e3160d81b81525081565b60405161026391906143a6565b600260015414156107205760405162461bcd60e51b8152600401610717906143b9565b60405180910390fd5b60026001819055506000336001600160a01b03166316f0115b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561076357600080fd5b505afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b91906143f0565b60025460405163c673bdaf60e01b81526001600160a01b03808416600483015292935091169063c673bdaf9060240160206040518083038186803b1580156107e257600080fd5b505afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a919061440d565b61083757604051633bfe162b60e01b815260040160405180910390fd5b806001600160a01b03166396aaccfe6040518163ffffffff1660e01b815260040160206040518083038186803b15801561087057600080fd5b505afa158015610884573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a891906143f0565b6001600160a01b0316336001600160a01b0316146108d957604051633bfe162b60e01b815260040160405180910390fd5b60085460ff1615806109c95750336001600160a01b03166316f0115b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561091f57600080fd5b505afa158015610933573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095791906143f0565b6001600160a01b0316632b80cc526040518163ffffffff1660e01b815260040160206040518083038186803b15801561098f57600080fd5b505afa1580156109a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c7919061440d565b155b156109e757604051635621fccf60e01b815260040160405180910390fd5b60008890506000806000610a3087878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126f792505050565b925092509250606060008b6001600160a01b0316636d1bb8f76040518163ffffffff1660e01b815260040160206040518083038186803b158015610a7357600080fd5b505afa158015610a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aab91906143f0565b6040516001627dd58f60e11b0319815261ffff871660048201526001600160a01b03919091169063ff0454e29060240160206040518083038186803b158015610af357600080fd5b505afa158015610b07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2b91906143f0565b90506001600160a01b038116610b545760405163fb7566d760e01b815260040160405180910390fd5b61ffff85166000908152600a602052604090205460ff16610b885760405163334dc1fd60e01b815260040160405180910390fd5b8e610b973383838a8f8a61271d565b92505050610bfc6040518061010001604052808e6001600160a01b031681526020018661ffff1681526020018c8152602001348152602001838152602001876001600160a01b03168152602001846001600160401b0316815260200185815250612795565b505060018055505050505050505050505050565b610c1933612a65565b610c3657604051633bfe162b60e01b815260040160405180910390fd5b6000610c7c600087878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050612c009050565b90506001600160a01b0381161580610cb3575061ffff8a166000908152600460205260409020546001600160a01b03828116911614155b15610cd157604051637ab628f960e01b815260040160405180910390fd5b6000610d1284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c6592505050565b905060ff811660021415610d3057610d2b858585612c82565b610d61565b60ff811660011415610d4857610d2b8b868686612deb565b604051630ead561960e11b815260040160405180910390fd5b5050505050505050505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b158015610dbc57600080fd5b505afa158015610dd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df491906143f0565b6001600160a01b0316336001600160a01b031614610e2557604051634b98449160e11b815260040160405180910390fd5b60065481811415610e4957604051630333a68160e41b815260040160405180910390fd5b60408051828152602081018490527f5cac1093ddd8c1e9cbcd89b2f36fa1889e966cc257753af2d160888564fd9818910160405180910390a150600655565b600260009054906101000a90046001600160a01b03166001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b158015610ed657600080fd5b505afa158015610eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0e91906143f0565b6001600160a01b0316336001600160a01b031614610f3f57604051634b98449160e11b815260040160405180910390fd5b6007546001600160401b03600160c01b9091048116908216811415610f7757604051630333a68160e41b815260040160405180910390fd5b604080516001600160401b038084168252841660208201527f7dd9d7c71da5859a7d6e34c00f4889cb529dbbc009a358db124855baa125a4dc910160405180910390a150600780546001600160401b03909216600160c01b026001600160c01b03909216919091179055565b600260009054906101000a90046001600160a01b03166001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b15801561103157600080fd5b505afa158015611045573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106991906143f0565b6001600160a01b0316336001600160a01b03161461109a57604051634b98449160e11b815260040160405180910390fd5b6008546001600160a01b0361010090910481169082168114156110d057604051630333a68160e41b815260040160405180910390fd5b604080516001600160a01b038084168252841660208201527f398baf83f237e7e1e1ce6637c69193c52e8b6382036ceb3c6eba08401e327667910160405180910390a150600880546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6002600154141561115f5760405162461bcd60e51b8152600401610717906143b9565b60026001819055506000336001600160a01b03166316f0115b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111a257600080fd5b505afa1580156111b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111da91906143f0565b60025460405163c673bdaf60e01b81526001600160a01b03808416600483015292935091169063c673bdaf9060240160206040518083038186803b15801561122157600080fd5b505afa158015611235573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611259919061440d565b61127657604051633bfe162b60e01b815260040160405180910390fd5b806001600160a01b03166396aaccfe6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112af57600080fd5b505afa1580156112c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e791906143f0565b6001600160a01b0316336001600160a01b03161461131857604051633bfe162b60e01b815260040160405180910390fd5b60085460ff1615806114085750336001600160a01b03166316f0115b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561135e57600080fd5b505afa158015611372573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139691906143f0565b6001600160a01b0316632b80cc526040518163ffffffff1660e01b815260040160206040518083038186803b1580156113ce57600080fd5b505afa1580156113e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611406919061440d565b155b1561142657604051635621fccf60e01b815260040160405180910390fd5b6000889050600080600061146f87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126f792505050565b925092509250606060008b905060008f905060008b905060008f6001600160a01b0316636d1bb8f76040518163ffffffff1660e01b815260040160206040518083038186803b1580156114c157600080fd5b505afa1580156114d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f991906143f0565b6040516001627dd58f60e11b0319815261ffff8a1660048201526001600160a01b03919091169063ff0454e29060240160206040518083038186803b15801561154157600080fd5b505afa158015611555573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157991906143f0565b6001600160a01b0380861660009081526009602052604090205491925082166115b55760405163fb7566d760e01b815260040160405180910390fd5b61ffff89166000908152600a602052604090205460ff166115e95760405163334dc1fd60e01b815260040160405180910390fd5b806116075760405163029c545360e41b815260040160405180910390fd5b611616338386848e888e613104565b95505050505050610bfc6040518061010001604052808e6001600160a01b031681526020018661ffff1681526020018c8152602001348152602001838152602001876001600160a01b03168152602001846001600160401b0316815260200185815250613185565b600260009054906101000a90046001600160a01b03166001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b1580156116cc57600080fd5b505afa1580156116e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170491906143f0565b6001600160a01b0316336001600160a01b03161461173557604051634b98449160e11b815260040160405180910390fd5b6005548181141561175957604051630333a68160e41b815260040160405180910390fd5b60408051828152602081018490527f83c9ee8eed7101992146d1c75610cc54c1db740210cde12e135fa657a7850854910160405180910390a150600555565b600260009054906101000a90046001600160a01b03166001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b1580156117e657600080fd5b505afa1580156117fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181e91906143f0565b6001600160a01b0316336001600160a01b03161461184f57604051634b98449160e11b815260040160405180910390fd5b6007546001600160401b03600160801b909104811690821681141561188757604051630333a68160e41b815260040160405180910390fd5b604080516001600160401b038084168252841660208201527fce0317145f704f138aad728eeb9d95c91260950871930acca6e659f1b0883364910160405180910390a150600780546001600160401b03909216600160801b0267ffffffffffffffff60801b19909216919091179055565b600260009054906101000a90046001600160a01b03166001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b15801561194657600080fd5b505afa15801561195a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197e91906143f0565b6001600160a01b0316336001600160a01b0316146119af57604051634b98449160e11b815260040160405180910390fd5b6001600160a01b038216600090815260096020526040902054818114156119e957604051630333a68160e41b815260040160405180910390fd5b60408051828152602081018490526001600160a01b038516917ffa622ae921e227a42afec644139331c019f4157c54e93c82dd5f811ba210ac15910160405180910390a2506001600160a01b03909116600090815260096020526040902055565b600260009054906101000a90046001600160a01b03166001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9857600080fd5b505afa158015611aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad091906143f0565b6001600160a01b0316336001600160a01b031614611b0157604051634b98449160e11b815260040160405180910390fd5b60085460405160ff90911615808252907f0269774d3426d7e61b04b7d5129948b9f4edf9b937bb0c657fbb32a94a7996ec9060200160405180910390a16008805460ff1916911515919091179055565b60026001541415611b745760405162461bcd60e51b8152600401610717906143b9565b600260015560085461ffff8a1660009081526004602090815260408083205490516001600160a01b0361010090950485169463ab8236f360e01b938f93611bbe939216910161442f565b60408051601f1981840301815290829052611be692918c908c908c908c908c90602401614475565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050509050600080611c5d87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061336592505050565b50509350935050506000341115611c92576000828152600d602052604081208054349290611c8c9084906144ee565b90915550505b336001600160a01b0382161415611cd35784611cc157604051634c3ce71f60e11b815260040160405180910390fd5b60008281526003602052604090208590555b836001600160a01b031663c0e6ac6c8e8e8e8e30896040518763ffffffff1660e01b8152600401611d0996959493929190614506565b600060405180830381600087803b158015611d2357600080fd5b505af1158015611d37573d6000803e3d6000fd5b505060018055505050505050505050505050505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b158015611d9c57600080fd5b505afa158015611db0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd491906143f0565b6001600160a01b0316336001600160a01b031614611e0557604051634b98449160e11b815260040160405180910390fd5b61ffff82166000908152600460205260409020546001600160a01b03908116908216811415611e4757604051630333a68160e41b815260040160405180910390fd5b6040805161ffff851681526001600160a01b03838116602083015284168183015290517fa0670378b7d4511893529175129417ed82867197a3ea18eb2743483bd4f00c2a9181900360600190a15061ffff91909116600090815260046020526040902080546001600160a01b0319166001600160a01b03909216919091179055565b60085461010090046001600160a01b03163314611ef957604051633bfe162b60e01b815260040160405180910390fd5b600c546001600160a01b0384811691161415611f8757600b60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015611f5f57600080fd5b505af1158015611f73573d6000803e3d6000fd5b5050600b546001600160a01b031695505050505b6000611f938682612c00565b90506001600160a01b0381161580611fca575061ffff87166000908152600460205260409020546001600160a01b03828116911614155b15611fe857604051637ab628f960e01b815260040160405180910390fd5b6000611ff383612c65565b905060ff8116600114156120115761200c8585856133af565b612029565b60ff811660021415610d485761200c88868686613472565b5050505050505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b15801561208157600080fd5b505afa158015612095573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b991906143f0565b6001600160a01b0316336001600160a01b0316146120ea57604051634b98449160e11b815260040160405180910390fd5b6007546001600160401b0390811690821681141561211b57604051630333a68160e41b815260040160405180910390fd5b604080516001600160401b038084168252841660208201527f1701885e1db4da3ff923033aa465855dde857275866d4f132af5384aa880554f910160405180910390a1506007805467ffffffffffffffff19166001600160401b0392909216919091179055565b600260009054906101000a90046001600160a01b03166001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b1580156121d057600080fd5b505afa1580156121e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220891906143f0565b6001600160a01b0316336001600160a01b03161461223957604051634b98449160e11b815260040160405180910390fd5b61ffff81166000818152600a602090815260409182902054825193845260ff1615908301819052917f8e163cf58a9857d50aa7dbb3399e1238f1badbc0c33819a5856cb9201bce5ed9910160405180910390a161ffff919091166000908152600a60205260409020805460ff1916911515919091179055565b600260009054906101000a90046001600160a01b03166001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b15801561230057600080fd5b505afa158015612314573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233891906143f0565b6001600160a01b0316336001600160a01b03161461236957604051634b98449160e11b815260040160405180910390fd5b6007546001600160401b03600160401b90910481169082168114156123a157604051630333a68160e41b815260040160405180910390fd5b604080516001600160401b038084168252841660208201527f8dbd2ecaaca80db9e2e655edc0f1b4df2c87f441eaedf46e0b7b00358d97ad30910160405180910390a150600780546001600160401b03909216600160401b026fffffffffffffffff000000000000000019909216919091179055565b6002600154141561243a5760405162461bcd60e51b8152600401610717906143b9565b6002600181905550600080600061248686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061362692505050565b5050945050935093505061249983612a65565b6124b657604051637c6953f960e01b815260040160405180910390fd5b34156124e0576000828152600d6020526040812080543492906124da9084906144ee565b90915550505b336001600160a01b0382161415612521578361250f57604051634c3ce71f60e11b815260040160405180910390fd5b60008281526003602052604090208490555b61ffff8b166000908152600460209081526040808320549051612550926001600160a01b03909216910161442f565b6040516020818303038152906040529050836001600160a01b031663cfd6528e8d8d8d8d86308f8f8f6040518a63ffffffff1660e01b815260040161259d99989796959493929190614561565b600060405180830381600087803b1580156125b757600080fd5b505af11580156125cb573d6000803e3d6000fd5b5050600180555050505050505050505050505050565b60006125ed6001613675565b90508015612605576000805461ff0019166101001790555b6001600160a01b03841661262c5760405163fb7566d760e01b815260040160405180910390fd5b6126346136fd565b600280546001600160a01b038087166001600160a01b031992831617909255603260065562030d406005557a0b71b000000000000b71b0000000000007a12000000000000b71b0600755600b8054868416908316179055600c80549285169290911691909117905580156126e2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6001600160a01b03163b151590565b60008060008380602001905181019061271091906145db565b9250925092509193909250565b604080516001600160a01b038881166020830152878116828401526060808301889052908616608083015260a0820185905260c08083018590528351808403909101815260e083019093529161277a916002919061010001614613565b60405160208183030381529060405290509695505050505050565b6127b960405180606001604052806000815260200160008152602001606081525090565b60208083015161ffff16600090815260048252604080822054905191926127ec926001600160a01b03909216910161442f565b60408051601f198184030181529190529050600061280a8282612c00565b6001600160a01b031614156128325760405163fb7566d760e01b815260040160405180910390fd5b60405180606001604052808460c001516001600160401b031681526020018460e00151815260200160008560e001511161288657604080516000602082015201604051602081830303815290604052612888565b825b905283516001600160a01b0316600090815260096020526040902054909250806128c55760405163029c545360e41b815260040160405180910390fd5b60006127106006546127106128da919061462f565b86604001516128e99190614646565b6128f39190614665565b6080860151600854600b54885193945091926001600160a01b03610100909204821692908216911614156129a857600b546040808901519051632e1a7d4d60e01b81526001600160a01b0390921691632e1a7d4d916129589160040190815260200190565b600060405180830381600087803b15801561297257600080fd5b505af1158015612986573d6000803e3d6000fd5b505050508660400151876060018181516129a091906144ee565b9052506129dd565b86516129bf906001600160a01b031682600061372e565b604087015187516129dd916001600160a01b0390911690839061372e565b806001600160a01b0316639fbf10fc8860600151896020015187888c60a001518d604001518a8e8e8c6040518b63ffffffff1660e01b8152600401612a2a99989796959493929190614687565b6000604051808303818588803b158015612a4357600080fd5b505af1158015612a57573d6000803e3d6000fd5b505050505050505050505050565b600080826001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612aa157600080fd5b505afa158015612ab5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad991906143f0565b600254604051631a0dd00b60e01b81526001600160a01b038084166004830152929350911690631a0dd00b9060240160206040518083038186803b158015612b2057600080fd5b505afa158015612b34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b58919061440d565b612b655750600092915050565b806001600160a01b0316636d1bb8f76040518163ffffffff1660e01b815260040160206040518083038186803b158015612b9e57600080fd5b505afa158015612bb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bd691906143f0565b6001600160a01b0316836001600160a01b031614612bf75750600092915050565b50600192915050565b6000612c0d8260146144ee565b83511015612c555760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606401610717565b500160200151600160601b900490565b600081806020019051810190612c7b9190614715565b5092915050565b6000806000612cc685858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061387992505050565b9250925092506000836001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612d0757600080fd5b505afa158015612d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d3f91906143f0565b9050612d566001600160a01b03821684600061372e565b612d6a6001600160a01b038216848961372e565b604051636455bf6f60e01b815260048101839052602481018890526001600160a01b03841690636455bf6f90604401602060405180830381600087803b158015612db357600080fd5b505af1158015612dc7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202991906147a7565b6000806000806000806000612e3589898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061362692505050565b96509650965096509650965096506000600860019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015612e9357600080fd5b505afa158015612ea7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ecb91906143f0565b6001600160a01b031663068bcd8d866040518263ffffffff1660e01b8152600401612ef891815260200190565b60206040518083038186803b158015612f1057600080fd5b505afa158015612f24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4891906143f0565b6001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612f8057600080fd5b505afa158015612f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb891906143f0565b600c549091506001600160a01b0380831691161415612fdf5750600b546001600160a01b03165b61305c86886001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561301c57600080fd5b505afa158015613030573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305491906143f0565b838e876138ab565b9a5060008c90506130f5604051806101000160405280846001600160a01b031681526020018361ffff1681526020018e8152602001600d60008b815260200190815260200160002054866130b091906144ee565b81526020016130bf8c8b613a1e565b81526001600160a01b0388166020820152600754600160801b90046001600160401b031660408201526000606090910152612795565b50505050505050505050505050565b604080516001600160a01b0389811660208301528881168284015260608083018990526080830188905290861660a083015260c0820185905260e080830185905283518084039091018152610100830190935291613169916001919061012001614613565b6040516020818303038152906040529050979650505050505050565b60208082015161ffff166000908152600490915260409020546001600160a01b0316806131c55760405163fb7566d760e01b815260040160405180910390fd5b600060028360c001516001600160401b03166005546131e491906144ee565b60e0850151806131f55760006131f7565b845b604051602001613241949392919060f09490941b6001600160f01b03191684526002840192909252602283015260601b6bffffffffffffffffffffffff1916604282015260560190565b604051602081830303815290604052905082600001516001600160a01b0316636d1bb8f76040518163ffffffff1660e01b815260040160206040518083038186803b15801561328f57600080fd5b505afa1580156132a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c791906143f0565b6001600160a01b031663e7f0c59f8460600151308660200151866040516020016132f1919061442f565b60408051601f19818403018152828252908a015160808b015160c08c015160a08d01516001600160e01b031960e08b901b1686526133389796956000908d906004016147c0565b6000604051808303818588803b15801561335157600080fd5b505af1158015612029573d6000803e3d6000fd5b600080600080600080868060200190518101906133829190614715565b805190985061339b91508801602090810190890161483e565b949c939b5091995097509550909350915050565b6000806133bb83613a6f565b90925090506133d56001600160a01b03861683600061372e565b6133e96001600160a01b038616838661372e565b6040516320159ddd60e21b815260048101829052602481018590526001600160a01b03831690638056777490604401602060405180830381600087803b15801561343257600080fd5b505af1158015613446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061346a91906147a7565b505050505050565b60008060008060008061348487613365565b9550955095509550955095506000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156134cb57600080fd5b505afa1580156134df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061350391906143f0565b9050613512858b838c876138ab565b6040516001627dd58f60e11b0319815261ffff8d1660048201529099508b906000906001600160a01b0389169063ff0454e29060240160206040518083038186803b15801561356057600080fd5b505afa158015613574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061359891906143f0565b90506130f5604051806101000160405280856001600160a01b031681526020018461ffff1681526020018d8152602001600d60008b815260200190815260200160002054876135e791906144ee565b81526020016135f7848d8c613aa8565b81526001600160a01b03891660208201526007546001600160401b031660408201526000606090910152613185565b6000806000806000806000878060200190518101906136459190614715565b805190995061365e915089016020908101908a016148a7565b959e949d50929b5090995097509550909350915050565b60008054610100900460ff16156136bc578160ff1660011480156136985750303b155b6136b45760405162461bcd60e51b81526004016107179061491c565b506000919050565b60005460ff8084169116106136e35760405162461bcd60e51b81526004016107179061491c565b506000805460ff191660ff92909216919091179055600190565b600054610100900460ff166137245760405162461bcd60e51b81526004016107179061496a565b61372c613b04565b565b8015806137b75750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e9060440160206040518083038186803b15801561377d57600080fd5b505afa158015613791573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137b591906147a7565b155b6138225760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610717565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052613874908490613b31565b505050565b6000806000838060200190518101906138929190614715565b80519095506127109150850160209081019086016149b5565b60008581526003602052604081205480156138d3576000878152600360205260408120559150815b60025460408051632b3297f960e01b815290516000926001600160a01b031691632b3297f9916004808301926020929190829003018186803b15801561391857600080fd5b505afa15801561392c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061395091906143f0565b90506139676001600160a01b03881682600061372e565b61397b6001600160a01b038816828761372e565b604051636ccb2b0160e01b81526001600160a01b03888116600483015287811660248301526044820187905260648201869052306084830152821690636ccb2b019060a401602060405180830381600087803b1580156139da57600080fd5b505af11580156139ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a1291906147a7565b98975050505050505050565b604080516001600160a01b03841660208201528082018390528151808203830181526060808301909352613a589160019190608001614613565b604051602081830303815290604052905092915050565b60008082806020019051810190613a869190614715565b8051909450613a9f9150840160209081019085016149f8565b91509150915091565b604080516001600160a01b03858116602083015284168183015260608082018490528251808303820181526080830190935291613aeb916002919060a001614613565b60405160208183030381529060405290505b9392505050565b600054610100900460ff16613b2b5760405162461bcd60e51b81526004016107179061496a565b60018055565b6000613b86826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613c039092919063ffffffff16565b8051909150156138745780806020019051810190613ba4919061440d565b6138745760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610717565b6060613c128484600085613c1a565b949350505050565b606082471015613c7b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610717565b6001600160a01b0385163b613cd25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610717565b600080866001600160a01b03168587604051613cee9190614a26565b60006040518083038185875af1925050503d8060008114613d2b576040519150601f19603f3d011682016040523d82523d6000602084013e613d30565b606091505b5091509150613d40828286613d4b565b979650505050505050565b60608315613d5a575081613afd565b825115613d6a5782518084602001fd5b8160405162461bcd60e51b815260040161071791906143a6565b6001600160a01b0381168114613d9957600080fd5b50565b60008083601f840112613dae57600080fd5b5081356001600160401b03811115613dc557600080fd5b602083019150836020828501011115613ddd57600080fd5b9250929050565b60008060008060008060008060e0898b031215613e0057600080fd5b883597506020890135613e1281613d84565b96506040890135613e2281613d84565b95506060890135613e3281613d84565b94506080890135935060a0890135925060c08901356001600160401b03811115613e5b57600080fd5b613e678b828c01613d9c565b999c989b5096995094979396929594505050565b61ffff81168114613d9957600080fd5b6001600160401b0381168114613d9957600080fd5b600080600080600080600080600060c08a8c031215613ebe57600080fd5b8935613ec981613e7b565b985060208a01356001600160401b0380821115613ee557600080fd5b613ef18d838e01613d9c565b909a50985060408c01359150613f0682613e8b565b90965060608b01359080821115613f1c57600080fd5b613f288d838e01613d9c565b909750955060808c0135945060a08c0135915080821115613f4857600080fd5b50613f558c828d01613d9c565b915080935050809150509295985092959850929598565b600060208284031215613f7e57600080fd5b5035919050565b600060208284031215613f9757600080fd5b8135613afd81613e8b565b600060208284031215613fb457600080fd5b8135613afd81613d84565b60008060408385031215613fd257600080fd5b8235613fdd81613d84565b946020939093013593505050565b600080600080600080600080600060e08a8c03121561400957600080fd5b893561401481613e7b565b985060208a01356001600160401b038082111561403057600080fd5b61403c8d838e01613d9c565b909a50985060408c0135915061405182613e8b565b90965060608b01359061406382613d84565b90955060808b0135945060a08b0135908082111561408057600080fd5b5061408d8c828d01613d9c565b9a9d999c50979a9699959894979660c00135949350505050565b600080604083850312156140ba57600080fd5b82356140c581613e7b565b915060208301356140d581613d84565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561411e5761411e6140e0565b604052919050565b60006001600160401b0382111561413f5761413f6140e0565b50601f01601f191660200190565b600082601f83011261415e57600080fd5b813561417161416c82614126565b6140f6565b81815284602083860101111561418657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c087890312156141bc57600080fd5b86356141c781613e7b565b955060208701356001600160401b03808211156141e357600080fd5b6141ef8a838b0161414d565b9650604089013595506060890135915061420882613d84565b9093506080880135925060a0880135908082111561422557600080fd5b5061423289828a0161414d565b9150509295509295509295565b60006020828403121561425157600080fd5b8135613afd81613e7b565b60008060008060008060008060c0898b03121561427857600080fd5b883561428381613e7b565b975060208901356001600160401b038082111561429f57600080fd5b6142ab8c838d01613d9c565b909950975060408b013591506142c082613e8b565b90955060608a0135945060808a013590808211156142dd57600080fd5b506142ea8b828c01613d9c565b999c989b50969995989497949560a00135949350505050565b60008060006060848603121561431857600080fd5b833561432381613d84565b9250602084013561433381613d84565b9150604084013561434381613d84565b809150509250925092565b60005b83811015614369578181015183820152602001614351565b838111156126e25750506000910152565b6000815180845261439281602086016020860161434e565b601f01601f19169290920160200192915050565b602081526000613afd602083018461437a565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60006020828403121561440257600080fd5b8151613afd81613d84565b60006020828403121561441f57600080fd5b81518015158114613afd57600080fd5b60609190911b6bffffffffffffffffffffffff1916815260140190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff8816815260c06020820152600061449260c083018961437a565b6001600160401b03881660408401526001600160a01b03871660608401526080830186905282810360a08401526144ca81858761444c565b9a9950505050505050505050565b634e487b7160e01b600052601160045260246000fd5b60008219821115614501576145016144d8565b500190565b61ffff8716815260a06020820152600061452460a08301878961444c565b6001600160401b03861660408401526001600160a01b03851660608401528281036080840152614554818561437a565b9998505050505050505050565b61ffff8a16815260e06020820152600061457f60e083018a8c61444c565b6001600160401b038916604084015282810360608401526145a0818961437a565b6001600160a01b038816608085015260a0840187905283810360c085015290506145cb81858761444c565b9c9b505050505050505050505050565b6000806000606084860312156145f057600080fd5b83516145fb81613e7b565b60208501516040860151919450925061434381613e8b565b60ff83168152604060208201526000613c12604083018461437a565b600082821015614641576146416144d8565b500390565b6000816000190483118215151615614660576146606144d8565b500290565b60008261468257634e487b7160e01b600052601260045260246000fd5b500490565b600061012061ffff8c1683528a602084015289604084015260018060a01b03891660608401528760808401528660a08401528060c0840152855181840152506020850151610140830152604085015160606101608401526146ec61018084018261437a565b905082810360e0840152614700818661437a565b90508281036101008401526145cb818561437a565b6000806040838503121561472857600080fd5b825160ff8116811461473957600080fd5b60208401519092506001600160401b0381111561475557600080fd5b8301601f8101851361476657600080fd5b805161477461416c82614126565b81815286602083850101111561478957600080fd5b61479a82602083016020860161434e565b8093505050509250929050565b6000602082840312156147b957600080fd5b5051919050565b6001600160a01b038a8116825261ffff8a166020830152610120604083018190526000916147f08483018c61437a565b9150896060850152838203608085015261480a828a61437a565b6001600160401b03891660a086015287821660c086015290861660e085015283810361010085015290506145cb818561437a565b60008060008060008060c0878903121561485757600080fd5b865161486281613d84565b602088015190965061487381613d84565b60408801516060890151919650945061488b81613d84565b809350506080870151915060a087015190509295509295509295565b600080600080600080600060e0888a0312156148c257600080fd5b87516148cd81613d84565b60208901519097506148de81613d84565b80965050604088015194506060880151935060808801516148fe81613d84565b8093505060a0880151915060c0880151905092959891949750929550565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000806000606084860312156149ca57600080fd5b83516149d581613d84565b60208501519093506149e681613d84565b80925050604084015190509250925092565b60008060408385031215614a0b57600080fd5b8251614a1681613d84565b6020939093015192949293505050565b60008251614a3881846020870161434e565b919091019291505056fea264697066735822122045fbecfdd9597c88149fc075f395a597ecaef462f829a71a387bcef105fd16c964736f6c63430008090033496e697469616c697a61626c653a20636f6e747261637420697320616c726561