0 txs
1 call
constructor
constructor((address router, address roleStore, address dataStore, address eventEmitter, address oracle, address orderVault, address orderHandler, address swapHandler, address externalHandler, address multichainVault) params, address _glvDepositHandler, address _glvWithdrawalHandler, address _glvVault)
functions
dataStore
viewfunction dataStore() view returns (address)
digests
viewfunction digests(bytes32) view returns (bool)
eventEmitter
viewfunction eventEmitter() view returns (address)
externalHandler
viewfunction externalHandler() view returns (address)
glvDepositHandler
viewfunction glvDepositHandler() view returns (address)
glvVault
viewfunction glvVault() view returns (address)
glvWithdrawalHandler
viewfunction glvWithdrawalHandler() view returns (address)
multichainVault
viewfunction multichainVault() view returns (address)
oracle
viewfunction oracle() view returns (address)
orderHandler
viewfunction orderHandler() view returns (address)
orderVault
viewfunction orderVault() view returns (address)
roleStore
viewfunction roleStore() view returns (address)
router
viewfunction router() view returns (address)
swapHandler
viewfunction swapHandler() view returns (address)
createGlvDeposit
nonpayablefunction createGlvDeposit(tuple relayParams, address account, uint256 srcChainId, tuple transferRequests, tuple params) returns (bytes32)
createGlvWithdrawal
nonpayablefunction createGlvWithdrawal(tuple relayParams, address account, uint256 srcChainId, tuple transferRequests, tuple params) returns (bytes32)
multicall
payablefunction multicall(bytes[] data) payable returns (bytes[] results)
sendNativeToken
payablefunction sendNativeToken(address receiver, uint256 amount) payable
sendTokens
payablefunction sendTokens(address token, address receiver, uint256 amount) payable
sendWnt
payablefunction sendWnt(address receiver, uint256 amount) payable
events
TokenTransferReverted
event TokenTransferReverted(string reason, bytes returndata)
errors
DeadlinePassed
error DeadlinePassed(uint256 currentTimestamp, uint256 deadline)
DisabledFeature
error DisabledFeature(bytes32 key)
EmptyHoldingAddress
error EmptyHoldingAddress()
EmptyReceiver
error EmptyReceiver()
EmptyTokenTranferGasLimit
error EmptyTokenTranferGasLimit(address token)
InsufficientRelayFee
error InsufficientRelayFee(uint256 requiredRelayFee, uint256 availableFeeAmount)
InvalidDestinationChainId
error InvalidDestinationChainId(uint256 desChainId)
InvalidExternalCalls
error InvalidExternalCalls(uint256 sendTokensLength, uint256 sendAmountsLength)
InvalidPermitSpender
error InvalidPermitSpender(address spender, address expectedSpender)
InvalidSrcChainId
error InvalidSrcChainId(uint256 srcChainId)
InvalidTransferRequestsLength
error InvalidTransferRequestsLength()
InvalidUserDigest
error InvalidUserDigest(bytes32 digest)
MaxRelayFeeSwapForSubaccountExceeded
error MaxRelayFeeSwapForSubaccountExceeded(uint256 feeUsd, uint256 maxFeeUsd)
NonEmptyExternalCallsForSubaccountOrder
error NonEmptyExternalCallsForSubaccountOrder()
TokenPermitsNotAllowedForMultichain
error TokenPermitsNotAllowedForMultichain()
TokenTransferError
error TokenTransferError(address token, address receiver, uint256 amount)
UnexpectedRelayFeeToken
error UnexpectedRelayFeeToken(address feeToken, address expectedFeeToken)
UnsupportedRelayFeeToken
error UnsupportedRelayFeeToken(address feeToken, address expectedFeeToken)
creation bytecode
0x61028060405234801561001157600080fd5b50604051614fa9380380614fa983398101604081905261003091610638565b8380608001518160c001518260a001518360e0015184610100015189600001518a602001518b604001518c60600151828961006f6100f060201b60201c565b6001600160a01b0390811660c05290811660a052908116608052600160005590811660e052908116610100529384166101209081529184166101405283166101605295821661018052509283166101a0529082166101c05281166101e052920151821661020052509283166102205290821661026052166102405250610748565b600080806100fd4661028f565b1561014957507361ace8fba7b80aef8ed67f37cb60be00180872ad9273368165b2afb95fae8cec409efa59d5091f9875a5925073038479687b7bc7943313bffd524a4acc96b3f9be9150565b610152466102b7565b1561019e575073b16a1dbe755f992636705fdbb3a8678a657eb3ea927322dcc39b2ac376862183dd35a1664798dafc7da6925073ba4082f4961c8fb76231995c967cd9aa40f321b59150565b6101a7466102d5565b156101f357507342120a1417a091a52a8d4590e28fc6c0f61e56329273aced988c5b5fe3f11848c728d9a5f66cf34c9e73925073bbce89acdd86d0130bdc3f1fe37c3aedd79fc1f49150565b6101fc466102f3565b15610248575073abcc9b596420a9e9172fd5938620e265a0f9df929273b539068872230f20456cf38ec52ef2f91af4ae499250738598806401a63ddf52473f1b3c55bc9e33e2d73b9150565b5073cd565435e0d2109fefde337a66491541df0d142092738ace64cea52b409f930f60b516f65197fad4b056925073c7739c195618d314c08e8626c98f8573e4e436349150565b600081610e3514806102a2575081610e34145b156102af57506001919050565b506000919050565b60008161014414806102a2575081610118036102af57506001919050565b600081612b7414806102a2575081610ab5036102af57506001919050565b60008160011480610304575081600a145b8061030f5750816019145b8061031a575081601e145b806103255750816038145b806103305750816064145b8061033b575081606d145b806103465750816089145b8061035157508160b7145b8061035c57508160e9145b8061036757508160fa145b8061037357508161013a145b8061037f575081610440145b8061038b57508161044d145b8061039757508161046f145b806103a3575081610504145b806103af575081610505145b806103bb5750816106c1145b806103c7575081610725145b806103d3575081610729145b806103df5750816107f7145b806103eb575081610ec0145b806103f757508161106a145b806104035750816118fe145b8061040f575081612105145b8061041b5750816127d8145b80610427575081614737145b80610433575081614739145b8061043f5750816162ef145b8061044b57508161868b145b8061045757508161a1ef145b8061046357508161a455145b8061046f57508161a4b1145b8061047b57508161a86a145b8061048757508161e708145b8061049457508162013882145b806104a1575081620138d4145b806104ae57508162013e31145b806104bb57508162014a34145b806104c85750816201b254145b806104d55750816203ade0145b806104e257508162066eee145b806104ef575081620a045c145b806104fc57508162133e40145b80610509575081625c2359145b806105165750816276adf1145b8061052357508162aa36a7145b8061053057508162aa37dc145b8061053e5750816301bf4933145b8061054c575081630426e649145b8061055a5750816305535072145b8061056857508163059d7131145b8061057657508163075b3dcf145b80610584575081630a0c71fd145b80610592575081630d3b745e145b806105a0575081633b4c8eb9145b806105ae5750816352415249145b806105bc57508163bc1392a6145b806105cb5750816412dbe91402145b806102a25750816414865d0f05036102af57506001919050565b919050565b60405161014081016001600160401b038111828210171561061b57634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146105e557600080fd5b6000806000808486036101a081121561065057600080fd5b61014081121561065f57600080fd5b506106686105ea565b61067186610621565b815261067f60208701610621565b602082015261069060408701610621565b60408201526106a160608701610621565b60608201526106b260808701610621565b60808201526106c360a08701610621565b60a08201526106d460c08701610621565b60c08201526106e560e08701610621565b60e08201526106f76101008701610621565b61010082015261070a6101208701610621565b610120820152935061071f6101408601610621565b925061072e6101608601610621565b915061073d6101808601610621565b905092959194509250565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051610200516102205161024051610260516146b56108f46000396000818161017901526105cf0152600081816101ee0152818161059001526112170152600081816102bf015261126b01526000818161027601528181611ecd01528181612126015281816121be01528181612590015261264b0152600081816101ba015281816117d2015261182e01526000818161036e0152610ad70152600081816103a20152610aaf0152600061042a0152600081816103d601528181611bae01528181611ea50152818161219c015261262a0152600081816102f3015281816105650152818161077a015281816107c401528181610a1701528181610a6c01528181611022015281816111ec01528181611d4e01528181611e7d015281816121040152818161217a01526126090152600081816104710152818161094601526115a80152600061024201526000818161033a01528181610b3601528181610bdb01528181611a710152611bcf01526000505060005050600061208301526146b56000f3fe6080604052600436106100ef5760003560e01c806301ac4293146100f45780630770d887146101395780632d0a7f6f146101675780632e944bd6146101a8578063351fb079146101dc578063358ef332146102105780634a4a7b0414610230578063528a65f41461026457806353ead2d3146102985780636045a360146102ad578063660d0d67146102e15780637d39aaf1146103155780637dc0d1d0146103285780638a53aaac1461035c57806393845e46146103905780639ff78c30146103c4578063ac9650d8146103f8578063b584830514610418578063e6d66ac81461044c578063f887ea401461045f575b600080fd5b34801561010057600080fd5b5061012461010f366004612c45565b60016020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561014557600080fd5b50610159610154366004612f5b565b610493565b604051908152602001610130565b34801561017357600080fd5b5061019b7f000000000000000000000000000000000000000000000000000000000000000081565b60405161013091906130af565b3480156101b457600080fd5b5061019b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156101e857600080fd5b5061019b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561021c57600080fd5b5061015961022b3660046131af565b610689565b34801561023c57600080fd5b5061019b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561027057600080fd5b5061019b7f000000000000000000000000000000000000000000000000000000000000000081565b6102ab6102a63660046132dc565b610764565b005b3480156102b957600080fd5b5061019b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102ed57600080fd5b5061019b7f000000000000000000000000000000000000000000000000000000000000000081565b6102ab6103233660046132dc565b6107ae565b34801561033457600080fd5b5061019b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561036857600080fd5b5061019b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561039c57600080fd5b5061019b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d057600080fd5b5061019b7f000000000000000000000000000000000000000000000000000000000000000081565b61040b610406366004613308565b6107ea565b6040516101309190613429565b34801561042457600080fd5b5061019b7f000000000000000000000000000000000000000000000000000000000000000081565b6102ab61045a36600461343c565b6108fe565b34801561046b57600080fd5b5061019b7f000000000000000000000000000000000000000000000000000000000000000081565b600061049d6109b4565b8585856000805a90506104ae610a12565b60006104b8610a46565b90506104c78187878787610b0c565b600073c72390b4b667a0cb378b2dd85cfbf7bd61593b10637a34aa388e8c8c6040518463ffffffff1660e01b815260040161050493929190613a79565b602060405180830381865af4158015610521573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105459190613ba8565b90506105538d8d838e610c53565b61055e8c8b8d610d95565b60006105897f0000000000000000000000000000000000000000000000000000000000000000610ea7565b90506105cd7f00000000000000000000000000000000000000000000000000000000000000008b60800151836001600160a01b0316610f549092919063ffffffff16565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166398d782ee8e8e8d6040518463ffffffff1660e01b815260040161061d93929190613bc1565b6020604051808303816000875af115801561063c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106609190613ba8565b9850505061067081838787610faa565b5050505050506106806001600055565b95945050505050565b60006106936109b4565b8585856000805a90506106a4610a12565b60006106ae610a46565b90506106bd8187878787610b0c565b600073c72390b4b667a0cb378b2dd85cfbf7bd61593b10634bbc148b8e8c8c6040518463ffffffff1660e01b81526004016106fa93929190613ccd565b602060405180830381865af4158015610717573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073b9190613ba8565b90506107498d8d838e610c53565b6107558c8c8c8c6111d8565b97505061067081838787610faa565b61076c6109b4565b610775826112f3565b6107a07f0000000000000000000000000000000000000000000000000000000000000000838361131d565b6107aa6001600055565b5050565b6107b66109b4565b6107bf826112f3565b6107a07f00000000000000000000000000000000000000000000000000000000000000008383611429565b6060816001600160401b0381111561080457610804612cae565b60405190808252806020026020018201604052801561083757816020015b60608152602001906001900390816108225790505b50905060005b828110156108f6576000803086868581811061085b5761085b613e25565b905060200281019061086d9190613e3b565b60405161087b929190613e81565b600060405180830381855af49150503d80600081146108b6576040519150601f19603f3d011682016040523d82523d6000602084013e6108bb565b606091505b5091509150816108ce576108ce816114ac565b808484815181106108e1576108e1613e25565b6020908102919091010152505060010161083d565b505b92915050565b6109066109b4565b61090f826112f3565b6040516303704f0f60e31b81526001600160a01b0384811660048301523360248301819052848216604484015260648301849052917f000000000000000000000000000000000000000000000000000000000000000090911690631b82787890608401600060405180830381600087803b15801561098c57600080fd5b505af11580156109a0573d6000803e3d6000fd5b50505050506109af6001600055565b505050565b600260005403610a0b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b6002600055565b610a447f0000000000000000000000000000000000000000000000000000000000000000610a3f306114e5565b61156e565b565b6040805160808101825260008082526020820181905291810182905260608101919091527f00000000000000000000000000000000000000000000000000000000000000006000610a9682610ea7565b604080516080810182526001600160a01b0394851681527f0000000000000000000000000000000000000000000000000000000000000000851660208201527f00000000000000000000000000000000000000000000000000000000000000008516918101919091529216606083015250919050565b610b168480613e91565b610b1f90613ed8565b6040516331e999fd60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c7a667f490610b6b908490600401614030565b600060405180830381600087803b158015610b8557600080fd5b505af1158015610b99573d6000803e3d6000fd5b50610bb49250610baf9150506040870187614087565b611599565b610bcc8484610bc660208901896140d0565b856116ea565b610bd98686868686611903565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031662ccf1556040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c3357600080fd5b505af1158015610c47573d6000803e3d6000fd5b50505050505050505050565b610c758160e086013560a0870135610c6e6040890189614087565b9050611d0a565b604051638a3b3d6f60e01b81526004810182905260009073c72390b4b667a0cb378b2dd85cfbf7bd61593b1090638a3b3d6f90602401602060405180830381865af4158015610cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cec9190613ba8565b90506000610d14828560405161190160f01b8152600281019290925260228201526042902090565b9050610d1f81611e0c565b73c72390b4b667a0cb378b2dd85cfbf7bd61593b1063bead67858383610d4860c08b018b613e3b565b8a6040518663ffffffff1660e01b8152600401610d699594939291906140e6565b60006040518083038186803b158015610d8157600080fd5b505af4158015610c47573d6000803e3d6000fd5b610da2602083018361413d565b9050610dae838061413d565b9050141580610dd65750610dc5604083018361413d565b9050610dd1838061413d565b905014155b15610df45760405163b0731c3f60e01b815260040160405180910390fd5b60005b610e01838061413d565b9050811015610ea157610e9984610e18858061413d565b84818110610e2857610e28613e25565b9050602002016020810190610e3d9190614186565b610e4a602087018761413d565b85818110610e5a57610e5a613e25565b9050602002016020810190610e6f9190614186565b610e7c604088018861413d565b86818110610e8c57610e8c613e25565b9050602002013586611e5d565b600101610df7565b50505050565b6000816001600160a01b03166321f8a721604051602001610edf9060208082526003908201526215d39560ea1b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401610f1391815260200190565b602060405180830381865afa158015610f30573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f891906141a3565b6109af8363a9059cbb60e01b8484604051602401610f739291906141c0565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611f6f565b60008085606001516001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401610fdd91906130af565b602060405180830381865afa158015610ffa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101e9190613ba8565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637ae1cfca61105833612044565b6040518263ffffffff1660e01b815260040161107691815260200190565b602060405180830381865afa158015611093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b791906141d9565b6111ae5760006110c63361207f565b15905080156111755786516060880151604051630e22a74960e31b81526001600160a01b0392831660048201529116602482015260448101879052366064820152608481018390527349eaeafa626011ede0b9852e567dfcf8b62aba88906371153a489060a401602060405180830381865af415801561114a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116e9190613ba8565b92506111ac565b61117d6120ca565b9250818311156111a4578282604051639cd7629560e01b8152600401610a029291906141f6565b6111ac6120d3565b505b6111b8828261421a565b905080156111d0576111d086606001518583866120ff565b505050505050565b60006111e5858486610d95565b60006112107f0000000000000000000000000000000000000000000000000000000000000000610ea7565b90506112547f00000000000000000000000000000000000000000000000000000000000000008460400151836001600160a01b0316610f549092919063ffffffff16565b604051633898804960e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e2620124906112a49089908990889060040161422d565b6020604051808303816000875af11580156112c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e79190613ba8565b9150505b949350505050565b6001600160a01b03811661131a5760405163d551823d60e01b815260040160405180910390fd5b50565b8060000361132a57505050565b611333826112f3565b6000836001600160a01b031663bd02d0f5604051602001611385906020808252601f908201527f4e41544956455f544f4b454e5f5452414e534645525f4741535f4c494d495400604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016113b991815260200190565b602060405180830381865afa1580156113d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fa9190613ba8565b90506000806000806000868887f190508015611417575050505050565b611422858585611429565b5050505050565b8060000361143657505050565b61143f826112f3565b600061144a84610ea7565b9050806001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561148757600080fd5b505af115801561149b573d6000803e3d6000fd5b5050505050610ea18482858561222d565b6000806114b883612477565b9150915080156114dc578160405162461bcd60e51b8152600401610a029190614373565b6109af83612507565b60006040516020016115239060208082526018908201527711d054d31154d4d7d191505515549157d11254d05093115160421b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b038416908201526060015b604051602081830303815290604052805190602001209050919050565b6115788282612510565b156107aa5760405163dd70e0c960e01b815260048101829052602401610a02565b60008190036115a6575050565b7f000000000000000000000000000000000000000000000000000000000000000060005b82811015610ea15760008484838181106115e6576115e6613e25565b905061010002018036038101906115fd9190614386565b9050826001600160a01b031681602001516001600160a01b03161461163d57806020015183604051633c0ac19960e01b8152600401610a02929190614419565b60e0810151815160208301516040808501516060860151608087015160a088015160c0890151945163d505accf60e01b81526001600160a01b03978816600482015295871660248701526044860193909352606485019190915260ff16608484015260a483015260c482015291169063d505accf9060e401600060405180830381600087803b1580156116cf57600080fd5b505af19250505080156116e0575060015b50506001016115ca565b6116f7604083018361413d565b159050610ea157801561171d576040516328f773e960e01b815260040160405180910390fd5b611727828061413d565b1590508061174e575061173d602083018361413d565b9050611749838061413d565b905014155b156117875761175d828061413d565b905061176c602084018461413d565b60405163ec7fd38560e01b8152610a029392506004016141f6565b60005b611794838061413d565b90508110156118235761181b856117ab858061413d565b848181106117bb576117bb613e25565b90506020020160208101906117d09190614186565b7f00000000000000000000000000000000000000000000000000000000000000006117fe602088018861413d565b8681811061180e5761180e613e25565b9050602002013588611e5d565b60010161178a565b506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663d59922b0611860604085018561413d565b61186d606087018761413d565b61187a608089018961413d565b61188760a08b018b61413d565b6040518963ffffffff1660e01b81526004016118aa989796959493929190614433565b600060405180830381600087803b1580156118c457600080fd5b505af11580156118d8573d6000803e3d6000fd5b50505050610ea184848480608001906118f1919061413d565b6118fe60a088018861413d565b612583565b61190c3361207f565b8015611935575084606001516001600160a01b0316611929612708565b6001600160a01b031614155b1561196257611942612708565b8560600151604051630d0fcc0b60e01b8152600401610a02929190614419565b61196f6060850185613e91565b61197d90604081019061413d565b159050611c4f578015611b5657600085600001516001600160a01b031663bd02d0f56040516020016119ee9060208082526025908201527f4d41585f52454c41595f4645455f535741505f5553445f464f525f535542414360408201526410d3d5539560da1b606082015260800190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611a2291815260200190565b602060405180830381865afa158015611a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a639190613ba8565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016635dcf7194611aa36060890189613e91565b611ab1906020810190614186565b6040518263ffffffff1660e01b8152600401611acd91906130af565b6040805180830381865afa158015611ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0d91906144df565b60200151611b1e6060880188613e91565b60200135611b2c919061452f565b905081811115611b53578082604051631808e37f60e31b8152600401610a029291906141f6565b50505b611b9183611b676060870187613e91565b611b75906020810190614186565b6020880151611b876060890189613e91565b6020013586611e5d565b73c72390b4b667a0cb378b2dd85cfbf7bd61593b1063cbb114e7867f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611bfb60608a018a613e91565b6040518563ffffffff1660e01b8152600401611c1a9493929190614546565b60006040518083038186803b158015611c3257600080fd5b505af4158015611c46573d6000803e3d6000fd5b50505050611422565b6060808601516001600160a01b031690611c6b90860186613e91565b611c79906020810190614186565b6001600160a01b031603611ccf57611c946060850185613e91565b6020013515611cca57611cca83611cae6060870187613e91565b611cbc906020810190614186565b30611b876060890189613e91565b611422565b611cdc6060850185613e91565b611cea906020810190614186565b85606001516040516374a488a760e11b8152600401610a02929190614419565b468314611d2d576040516330ddda8b60e21b815260048101849052602401610a02565b8015611d4c57604051637344d98160e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637ae1cfca611d8486612714565b6040518263ffffffff1660e01b8152600401611da291815260200190565b602060405180830381865afa158015611dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de391906141d9565b611e0357604051632c9bcbdd60e01b815260048101859052602401610a02565b610ea182612779565b60008181526001602052604090205460ff1615611e3f57604051630820e04560e11b815260048101829052602401610a02565b6000908152600160208190526040909120805460ff19169091179055565b611e66836112f3565b6040516313bc4d6960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f00000000000000000000000000000000000000000000000000000000000000008116604483015280861660648301528087166084830152841660a482015260c4810183905260e48101829052731158e639da58fd104908343ef3f42a79d54d2918906313bc4d69906101040160006040518083038186803b158015611f5057600080fd5b505af4158015611f64573d6000803e3d6000fd5b505050505050505050565b6000611fc4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661279e9092919063ffffffff16565b9050805160001480611fe5575080806020019051810190611fe591906141d9565b6109af5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610a02565b6000604051602001611523906020808252601590820152741254d7d49153105657d1915157d15610d315511151605a1b604082015260600190565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036120c257506001919050565b506000919050565b601f1936013590565b610a4436604719013560601c6120e76120ca565b6120ef612708565b6001600160a01b031691906127ad565b61214b7f0000000000000000000000000000000000000000000000000000000000000000857f00000000000000000000000000000000000000000000000000000000000000008561222d565b6040516315ff6d2d60e01b8152731158e639da58fd104908343ef3f42a79d54d2918906315ff6d2d906121ec907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000908a908a9089906004016145a0565b602060405180830381865af4158015612209573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114229190613ba8565b8015610ea15761223c826112f3565b6000846001600160a01b031663bd02d0f5612256866127fc565b6040518263ffffffff1660e01b815260040161227491815260200190565b602060405180830381865afa158015612291573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b59190613ba8565b9050806000036122da5783604051634fe14bfd60e11b8152600401610a0291906130af565b60006122e88585858561283a565b50905080156122f8575050610ea1565b6000866001600160a01b03166321f8a72160405160200161233c906020808252600f908201526e484f4c44494e475f4144445245535360881b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161237091815260200190565b602060405180830381865afa15801561238d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b191906141a3565b90506001600160a01b0381166123da57604051633a6de2f560e21b815260040160405180910390fd5b6000806123e98884888861283a565b9150915081156123fd575050505050610ea1565b600061240882612477565b5090507fc9f14d9a0a9b46470c7c0b6c508f8283abaab7f795f153953c58cd4250824dae818360405161243c9291906145db565b60405180910390a160405163012f3b8f60e71b81526001600160a01b03808b1660048301528916602482015260448101889052606401610a02565b6060600060448351101561249e575050604080516020810190915260008082529092909150565b60006124ab846020015190565b90506307b9e43360e51b6001600160e01b03198216016124ea57600484019350838060200190518101906124df9190614600565b946001945092505050565b600060405180602001604052806000815250909250925050915091565b80518060208301fd5b604051633d70e7e560e11b8152600481018290526000906001600160a01b03841690637ae1cfca90602401602060405180830381865afa158015612558573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257c91906141d9565b9392505050565b60005b818110156126ff577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168383838181106125ca576125ca613e25565b90506020020160208101906125df9190614186565b6001600160a01b0316036126f757731158e639da58fd104908343ef3f42a79d54d29186315ff6d2d7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089898781811061267c5761267c613e25565b90506020020160208101906126919190614186565b8c8c6040518763ffffffff1660e01b81526004016126b4969594939291906145a0565b602060405180830381865af41580156126d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f59190613ba8565b505b600101612586565b50505050505050565b60331936013560601c90565b6000604051602001612751906020808252601790820152761254d7d4d490d7d0d210525397d25117d1539050931151604a1b604082015260600190565b60405160208183030381529060405280519060200120826040516020016115519291906141f6565b8042111561131a57428160405163041f95d160e51b8152600401610a029291906141f6565b60606112eb84846000856129a9565b806000036127ba57505050565b6001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146127f2576109af6001600160a01b0384168383610f54565b6109af8282612a84565b6000604051602001611523906020808252601890820152771513d2d15397d514905394d1915497d1d054d7d31253525560421b604082015260600190565b60006060600063a9059cbb60e01b868660405160240161285b9291906141c0565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050509050600080886001600160a01b031686846040516128ac919061466d565b60006040518083038160008787f1925050503d80600081146128ea576040519150601f19603f3d011682016040523d82523d6000602084013e6128ef565b606091505b5091509150811561299757805160000361295457612915896001600160a01b0316612b9a565b6129545760006040518060400160405280601481526020017310d85b1b081d1bc81b9bdb8b58dbdb9d1c9858dd60621b815250945094505050506129a0565b6000815111801561297657508080602001905181019061297491906141d9565b155b15612989576000945092506129a0915050565b6001945092506129a0915050565b60009450925050505b94509492505050565b606082471015612a0a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610a02565b600080866001600160a01b03168587604051612a26919061466d565b60006040518083038185875af1925050503d8060008114612a63576040519150601f19603f3d011682016040523d82523d6000602084013e612a68565b606091505b5091509150612a7987838387612ba9565b979650505050505050565b80471015612ad45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610a02565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612b21576040519150601f19603f3d011682016040523d82523d6000602084013e612b26565b606091505b50509050806109af5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610a02565b6001600160a01b03163b151590565b60608315612c16578251600003612c0f57612bc385612b9a565b612c0f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a02565b50816112eb565b6112eb8383815115612c2b5781518083602001fd5b8060405162461bcd60e51b8152600401610a029190614373565b600060208284031215612c5757600080fd5b5035919050565b60006101008284031215612c7157600080fd5b50919050565b6001600160a01b038116811461131a57600080fd5b8035612c9781612c77565b919050565b600060608284031215612c7157600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715612ce657612ce6612cae565b60405290565b60405161012081016001600160401b0381118282101715612ce657612ce6612cae565b604051606081016001600160401b0381118282101715612ce657612ce6612cae565b60405161010081016001600160401b0381118282101715612ce657612ce6612cae565b604051601f8201601f191681016001600160401b0381118282101715612d7c57612d7c612cae565b604052919050565b60006001600160401b03821115612d9d57612d9d612cae565b5060051b60200190565b600082601f830112612db857600080fd5b8135612dcb612dc682612d84565b612d54565b8082825260208201915060208360051b860101925085831115612ded57600080fd5b602085015b83811015612e13578035612e0581612c77565b835260209283019201612df2565b5095945050505050565b600060e08284031215612e2f57600080fd5b612e37612cc4565b9050612e4282612c8c565b8152612e5060208301612c8c565b6020820152612e6160408301612c8c565b6040820152612e7260608301612c8c565b6060820152612e8360808301612c8c565b608082015260a08201356001600160401b03811115612ea157600080fd5b612ead84828501612da7565b60a08301525060c08201356001600160401b03811115612ecc57600080fd5b612ed884828501612da7565b60c08301525092915050565b801515811461131a57600080fd5b8035612c9781612ee4565b600082601f830112612f0e57600080fd5b8135612f1c612dc682612d84565b8082825260208201915060208360051b860101925085831115612f3e57600080fd5b602085015b83811015612e13578035835260209283019201612f43565b600080600080600060a08688031215612f7357600080fd5b85356001600160401b03811115612f8957600080fd5b612f9588828901612c5e565b9550506020860135612fa681612c77565b93506040860135925060608601356001600160401b03811115612fc857600080fd5b612fd488828901612c9c565b92505060808601356001600160401b03811115612ff057600080fd5b860160e0818903121561300257600080fd5b61300a612cc4565b81356001600160401b0381111561302057600080fd5b61302c8a828501612e1d565b825250602082810135908201526040808301359082015261304f60608301612ef2565b60608201526080828101359082015260a0808301359082015260c08201356001600160401b0381111561308157600080fd5b61308d8a828501612efd565b60c08301525080925050509295509295909350565b6001600160a01b03169052565b6001600160a01b0391909116815260200190565b600061012082840312156130d657600080fd5b6130de612cec565b90506130e982612c8c565b81526130f760208301612c8c565b602082015261310860408301612c8c565b604082015261311960608301612c8c565b606082015261312a60808301612c8c565b608082015261313b60a08301612c8c565b60a082015261314c60c08301612c8c565b60c082015260e08201356001600160401b0381111561316a57600080fd5b61317684828501612da7565b60e0830152506101008201356001600160401b0381111561319657600080fd5b6131a284828501612da7565b6101008301525092915050565b600080600080600060a086880312156131c757600080fd5b85356001600160401b038111156131dd57600080fd5b6131e988828901612c5e565b95505060208601356131fa81612c77565b93506040860135925060608601356001600160401b0381111561321c57600080fd5b61322888828901612c9c565b92505060808601356001600160401b0381111561324457600080fd5b860160e0818903121561325657600080fd5b61325e612cc4565b81356001600160401b0381111561327457600080fd5b6132808a8285016130c3565b8252506020828101359082015260408083013590820152606080830135908201526132ad60808301612ef2565b60808201526132be60a08301612ef2565b60a082015260c08201356001600160401b0381111561308157600080fd5b600080604083850312156132ef57600080fd5b82356132fa81612c77565b946020939093013593505050565b6000806020838503121561331b57600080fd5b82356001600160401b0381111561333157600080fd5b8301601f8101851361334257600080fd5b80356001600160401b0381111561335857600080fd5b8560208260051b840101111561336d57600080fd5b6020919091019590945092505050565b60005b83811015613398578181015183820152602001613380565b50506000910152565b600081518084526133b981602086016020860161337d565b601f01601f19169290920160200192915050565b600082825180855260208501945060208160051b8301016020850160005b8381101561341d57601f198584030188526134078383516133a1565b60209889019890935091909101906001016133eb565b50909695505050505050565b60208152600061257c60208301846133cd565b60008060006060848603121561345157600080fd5b833561345c81612c77565b9250602084013561346c81612c77565b929592945050506040919091013590565b60008235605e1983360301811261349357600080fd5b90910192915050565b6000808335601e198436030181126134b357600080fd5b83016020810192503590506001600160401b038111156134d257600080fd5b8060051b36038213156134e457600080fd5b9250929050565b81835260208301925060008160005b8481101561352b57813561350d81612c77565b6001600160a01b0316865260209586019591909101906001016134fa565b5093949350505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e1984360301811261357557600080fd5b83016020810192503590506001600160401b0381111561359457600080fd5b8036038213156134e457600080fd5b60008383855260208501945060208460051b8201018360005b8681101561341d57838303601f190188526135d7828761355e565b6135e2858284613535565b60209a8b019a909550939093019250506001016135bc565b6000613606828361349c565b606085526136186060860182846134eb565b915050613628602084018461349c565b858303602087015261363b8382846134eb565b9250505061364c604084018461349c565b858303604087015261365f8382846135a3565b9695505050505050565b6000823560be1983360301811261349357600080fd5b81835260006001600160fb1b0383111561369857600080fd5b8260051b80836020870137939093016020019392505050565b60006136bd828361349c565b60c085526136cf60c0860182846134eb565b9150506136df602084018461349c565b85830360208701526136f283828461367f565b92505050613703604084018461349c565b85830360408701526137168382846134eb565b92505050613727606084018461349c565b858303606087015261373a8382846135a3565b9250505061374b608084018461349c565b858303608087015261375e8382846134eb565b9250505061376f60a084018461349c565b85830360a087015261365f8382846134eb565b6000808335601e1984360301811261379957600080fd5b83016020810192503590506001600160401b038111156137b857600080fd5b8060081b36038213156134e457600080fd5b803560ff81168114612c9757600080fd5b81835260208301925060008160005b8481101561352b5781356137fd81612c77565b6001600160a01b03168652602082013561381681612c77565b6001600160a01b031660208701526040828101359087015260608083013590870152613844608083016137ca565b60ff16608087015260a0828101359087015260c0808301359087015261386c60e08301612c8c565b61387960e08801826130a2565b506101009586019591909101906001016137ea565b6000813561389b81612c77565b6001600160a01b03168352602082810135908401526138bd604083018361349c565b606060408601526106806060860182846134eb565b60006138de828361347d565b61010084526138f16101008501826135fa565b90506139006020840184613669565b848203602086015261391282826136b1565b9150506139226040840184613782565b85830360408701526139358382846137db565b92505050613946606084018461347d565b8482036060860152613958828261388e565b6080858101359087015260a08086013590870152915061397d905060c084018461355e565b85830360c0870152613990838284613535565b60e095860135969095019590955250919392505050565b60006139b3828361349c565b606085526139c56060860182846134eb565b9150506139d5602084018461349c565b85830360208701526139e88382846134eb565b925050506139f9604084018461349c565b858303604087015261365f83828461367f565b600081518084526020840193506020830160005b8281101561352b5781516001600160a01b0316865260209586019590910190600101613a20565b600081518084526020840193506020830160005b8281101561352b578151865260209586019590910190600101613a5b565b606081526000613a8c60608301866138d2565b8281036020840152613a9e81866139a7565b90508281036040840152835160e0825260018060a01b0381511660e083015260018060a01b0360208201511661010083015260018060a01b036040820151166101208301526060810151613af66101408401826130a2565b506080810151613b0a6101608401826130a2565b5060a081015160e0610180840152613b266101c0840182613a0c565b905060c0820151915060df19838203016101a0840152613b468183613a0c565b91505060208501516020830152604085015160408301526060850151613b70606084018215159052565b506080850151608083015260a085015160a083015260c085015182820360c0840152613b9c8282613a47565b98975050505050505050565b600060208284031215613bba57600080fd5b5051919050565b6001600160a01b038481168252602080830185905260606040808501829052855160e083870152805185166101408701529283015184166101608601528201519092166101808401529081015160009190613c206101a08501826130a2565b506080810151613c346101c08501826130a2565b5060a081015160e06101e0850152613c50610220850182613a0c565b905060c0820151915061013f1984820301610200850152613c718183613a0c565b91505060208401516080840152604084015160a08401526060840151613c9b60c085018215159052565b50608084015160e084015260a084015161010084015260c0840151838203605f1901610120850152612a798282613a47565b606081526000613ce060608301866138d2565b8281036020840152613cf281866139a7565b90508281036040840152835160e08252613d1060e0830182516130a2565b6020810151613d236101008401826130a2565b506040810151613d376101208401826130a2565b506060810151613d4b6101408401826130a2565b506080810151613d5f6101608401826130a2565b5060a0810151613d736101808401826130a2565b5060c0810151613d876101a08401826130a2565b5060e08101516101206101c0840152613da4610200840182613a0c565b9050610100820151915060df19838203016101e0840152613dc58183613a0c565b9150506020850151602083015260408501516040830152606085015160608301526080850151613df9608084018215159052565b5060a0850151613e0d60a084018215159052565b5060c085015182820360c0840152613b9c8282613a47565b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112613e5257600080fd5b8301803591506001600160401b03821115613e6c57600080fd5b6020019150368190038213156134e457600080fd5b8183823760009101908152919050565b60008235605e19833603018112613ea757600080fd5b9190910192915050565b60006001600160401b03821115613eca57613eca612cae565b50601f01601f191660200190565b600060608236031215613eea57600080fd5b613ef2612d0f565b82356001600160401b03811115613f0857600080fd5b613f1436828601612da7565b82525060208301356001600160401b03811115613f3057600080fd5b613f3c36828601612da7565b60208301525060408301356001600160401b03811115613f5b57600080fd5b830136601f820112613f6c57600080fd5b8035613f7a612dc682612d84565b8082825260208201915060208360051b850101925036831115613f9c57600080fd5b602084015b838110156140205780356001600160401b03811115613fbf57600080fd5b850136603f820112613fd057600080fd5b6020810135613fe1612dc682613eb1565b818152366040848401011115613ff657600080fd5b81604084016020830137600060208383010152808652505050602083019250602081019050613fa1565b5060408501525091949350505050565b60208152600082516060602084015261404c6080840182613a0c565b90506020840151601f198483030160408501526140698282613a0c565b9150506040840151601f1984830301606085015261068082826133cd565b6000808335601e1984360301811261409e57600080fd5b8301803591506001600160401b038211156140b857600080fd5b6020019150600881901b36038213156134e457600080fd5b6000823560be19833603018112613ea757600080fd5b85815284602082015260a06040820152600061410660a083018587613535565b6001600160a01b0393909316606083015250808203608090910152600481526318d85b1b60e21b6020820152604001949350505050565b6000808335601e1984360301811261415457600080fd5b8301803591506001600160401b0382111561416e57600080fd5b6020019150600581901b36038213156134e457600080fd5b60006020828403121561419857600080fd5b813561257c81612c77565b6000602082840312156141b557600080fd5b815161257c81612c77565b6001600160a01b03929092168252602082015260400190565b6000602082840312156141eb57600080fd5b815161257c81612ee4565b918252602082015260400190565b634e487b7160e01b600052601160045260246000fd5b818103818111156108f8576108f8614204565b60018060a01b0384168152826020820152606060408201526000825160e0606084015261425f610140840182516130a2565b60208101516142726101608501826130a2565b5060408101516142866101808501826130a2565b50606081015161429a6101a08501826130a2565b5060808101516142ae6101c08501826130a2565b5060a08101516142c26101e08501826130a2565b5060c08101516142d66102008501826130a2565b5060e08101516101206102208501526142f3610260850182613a0c565b9050610100820151915061013f19848203016102408501526143158183613a0c565b91505060208401516080840152604084015160a0840152606084015160c0840152608084015161434960e085018215159052565b5060a0840151151561010084015260c0840151838203605f1901610120850152612a798282613a47565b60208152600061257c60208301846133a1565b600061010082840312801561439a57600080fd5b5060006143a5612d31565b83356143b081612c77565b81526143be60208501612c8c565b602082015260408481013590820152606080850135908201526143e3608085016137ca565b608082015260a0848101359082015260c080850135908201819052915061440c60e08501612c8c565b60e0820152949350505050565b6001600160a01b0392831681529116602082015260400190565b608081526000614447608083018a8c6134eb565b82810360208401528088825260208201905060208960051b8301018a60005b8b8110156144a457848303601f19018452614481828e61355e565b61448c858284613535565b60209687019690955093909301925050600101614466565b505084810360408601526144b981898b6134eb565b9250505082810360608401526144d08185876134eb565b9b9a5050505050505050505050565b600060408284031280156144f257600080fd5b50604080519081016001600160401b038111828210171561451557614515612cae565b604052825181526020928301519281019290925250919050565b80820281158282048414176108f8576108f8614204565b84516001600160a01b0390811682526020808701518216908301526040808701518216908301526060808701518216908301528481166080830152831660a082015260e060c0820181905260009061365f9083018461388e565b6001600160a01b039687168152948616602086015292851660408501529084166060840152909216608082015260a081019190915260c00190565b6040815260006145ee60408301856133a1565b828103602084015261068081856133a1565b60006020828403121561461257600080fd5b81516001600160401b0381111561462857600080fd5b8201601f8101841361463957600080fd5b8051614647612dc682613eb1565b81815285602083850101111561465c57600080fd5b61068082602083016020860161337d565b60008251613ea781846020870161337d56fea2646970667358221220b83d0c04e15a39a83e5d186550d88ea8c27a122f54011b9f10df08f6aed129d264736f6c634300081d00330000000000000000000000007452c558d45f8afc8c83dae62c3f8a5be19c71f60000000000000000000000003c3d99fd298f679dbc2cecd132b4ec4d0f5e6e72000000000000000000000000fd70de6b91282d8017aa4e741e9ae325cab992d8000000000000000000000000c8ee91a54287db53897056e12d9819156d3822fb0000000000000000000000007f01614ca5198ec979b1aad1daf0de7e0a215bdf00000000000000000000000031ef83a530fde1b38ee9a18093a333d8bbbc40d500000000000000000000000004315e233c1c6ffa61080b76e29d5e8a1f7b4a35000000000000000000000000db2ab9566732710d02b23325f79a8832118b97c5000000000000000000000000389cef541397e872dc04421f166b5bc2e0b374a5000000000000000000000000ceaadfaf6a8c489b250e407987877c5fdfcdbe6e000000000000000000000000bb4c47cdfb90e281caae873c9531a25ebe2ed3430000000000000000000000007a74946892569fd488012d015436a5a9cbf37bef000000000000000000000000393053b58f9678c9c28c2ce941ff6cac49c3f8f9