0 txs
24 calls
constructor
constructor()
functions
configStorage
viewfunction configStorage() view returns (address)
getPendingDeposit
viewfunction getPendingDeposit(bytes32 _key) view returns (tuple)
getPendingWithdrawal
viewfunction getPendingWithdrawal(bytes32 _key) view returns (tuple)
gmxV2DepositHandler
viewfunction gmxV2DepositHandler() view returns (address)
gmxV2DepositVault
viewfunction gmxV2DepositVault() view returns (address)
gmxV2ExchangeRouter
viewfunction gmxV2ExchangeRouter() view returns (address)
gmxV2WithdrawalHandler
viewfunction gmxV2WithdrawalHandler() view returns (address)
gmxV2WithdrawalVault
viewfunction gmxV2WithdrawalVault() view returns (address)
owner
viewfunction owner() view returns (address)
vaultStorage
viewfunction vaultStorage() view returns (address)
weth
viewfunction weth() view returns (address)
afterDepositCancellation
nonpayablefunction afterDepositCancellation(bytes32 _key, tuple, tuple)
afterDepositExecution
nonpayablefunction afterDepositExecution(bytes32 _key, tuple, tuple _eventData)
afterWithdrawalCancellation
nonpayablefunction afterWithdrawalCancellation(bytes32 _key, tuple, tuple)
afterWithdrawalExecution
nonpayablefunction afterWithdrawalExecution(bytes32 _key, tuple, tuple _eventData)
claimETH
nonpayablefunction claimETH()
createDepositOrders
nonpayablefunction createDepositOrders(tuple[] _depositParams, uint256 _executionFee) returns (bytes32[] _gmxOrderKeys)
createWithdrawalOrders
nonpayablefunction createWithdrawalOrders(tuple[] _withdrawParams, uint256 _executionFee) returns (bytes32[] _gmxOrderKeys)
initialize
nonpayablefunction initialize(address _weth, address _vaultStorage, address _configStorage, address _gmxV2ExchangeRouter, address _gmxV2DepositVault, address _gmxV2DepositHandler, address _gmxV2WithdrawalVault, address _gmxV2WithdrawalHandler)
renounceOwnership
nonpayablefunction renounceOwnership()
setGmxV2DepositHandler
nonpayablefunction setGmxV2DepositHandler(address _gmxV2DepositHandler)
setGmxV2DepositVault
nonpayablefunction setGmxV2DepositVault(address _gmxV2DepositVault)
setGmxV2ExchangeRouter
nonpayablefunction setGmxV2ExchangeRouter(address _gmxV2ExchangeRouter)
setGmxV2WithdrawalHandler
nonpayablefunction setGmxV2WithdrawalHandler(address _gmxV2WithdrawalHandler)
setGmxV2WithdrawalVault
nonpayablefunction setGmxV2WithdrawalVault(address _gmxV2WithdrawalVault)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
Initialized
event Initialized(uint8 version)
LogDepositCancelled
event LogDepositCancelled(bytes32 gmxOrderKey, (address market, address longToken, uint256 longTokenAmount, address shortToken, uint256 shortTokenAmount, uint256 minMarketTokens, uint256 gasLimit) depositParam, uint256 returnedLongTokens, uint256 returnedShortTokens)
LogDepositCreated
event LogDepositCreated(bytes32 gmxOrderKey, (address market, address longToken, uint256 longTokenAmount, address shortToken, uint256 shortTokenAmount, uint256 minMarketTokens, uint256 gasLimit) depositParam)
LogDepositSucceed
event LogDepositSucceed(bytes32 gmxOrderKey, (address market, address longToken, uint256 longTokenAmount, address shortToken, uint256 shortTokenAmount, uint256 minMarketTokens, uint256 gasLimit) depositParam, uint256 receivedMarketTokens)
LogSetGmxV2DepositHandler
event LogSetGmxV2DepositHandler(address oldGmxV2DepositHandler, address newGmxV2DepositHandler)
LogSetGmxV2DepositVault
event LogSetGmxV2DepositVault(address oldGmxV2DepositVault, address newGmxV2DepositVault)
LogSetGmxV2ExchangeRouter
event LogSetGmxV2ExchangeRouter(address oldGmxV2ExchangeRouter, address newGmxV2ExchangeRouter)
LogSetGmxV2WithdrawalHandler
event LogSetGmxV2WithdrawalHandler(address oldGmxV2WithdrawalHandler, address newGmxV2WithdrawalHandler)
LogSetGmxV2WithdrawalVault
event LogSetGmxV2WithdrawalVault(address oldGmxV2WithdrawalVault, address newGmxV2WithdrawalVault)
LogWithdrawalCancelled
event LogWithdrawalCancelled(bytes32 gmxOrderKey, (address market, uint256 amount, uint256 minLongTokenAmount, uint256 minShortTokenAmount, uint256 gasLimit) withdrawParam, uint256 returnedMarketTokens)
LogWithdrawalCreated
event LogWithdrawalCreated(bytes32 gmxOrderKey, (address market, uint256 amount, uint256 minLongTokenAmount, uint256 minShortTokenAmount, uint256 gasLimit) withdrawParam)
LogWithdrawalSucceed
event LogWithdrawalSucceed(bytes32 gmxOrderKey, (address market, uint256 amount, uint256 minLongTokenAmount, uint256 minShortTokenAmount, uint256 gasLimit) withdrawParam, uint256 receivedLongTokens, uint256 receivedShortTokens)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
errors
IRebalanceHLPv2Service_AmountIsZero
error IRebalanceHLPv2Service_AmountIsZero()
IRebalanceHLPv2Service_BadPullAmount
error IRebalanceHLPv2Service_BadPullAmount()
IRebalanceHLPv2Service_InvalidAddress
error IRebalanceHLPv2Service_InvalidAddress()
IRebalanceHLPv2Service_KeyNotFound
error IRebalanceHLPv2Service_KeyNotFound()
IRebalanceHLPv2Service_Unauthorized
error IRebalanceHLPv2Service_Unauthorized()
IRebalanceHLPv2Service_ZeroGmReceived
error IRebalanceHLPv2Service_ZeroGmReceived()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61463f80620000f46000396000f3fe6080604052600436106101345760003560e01c8062fe9ad4146101405780633fc8cef3146101765780634099ccdb14610196578063443b1786146101b65780634ef189b8146101d657806367272999146101f857806367bcfbbe1461020d578063715018a61461023a5780637331e5d41461024f5780638987d3af1461026f5780638a29e2de1461028f5780638da5cb5b146102af57806391be6cf6146102c4578063a02ba64d146102e4578063a224323b14610304578063a7d31cc014610324578063a89278e614610344578063a8d86f4714610364578063ab8d854f14610384578063b8b865c6146103a4578063bafd24c4146103c4578063c3fa402b146103e4578063d0fe00db14610404578063d92070fd14610431578063ee8a47671461045e578063f2fde38b1461047e57600080fd5b3661013b57005b600080fd5b34801561014c57600080fd5b50606554610160906001600160a01b031681565b60405161016d919061270a565b60405180910390f35b34801561018257600080fd5b50606754610160906001600160a01b031681565b3480156101a257600080fd5b50606854610160906001600160a01b031681565b3480156101c257600080fd5b50606654610160906001600160a01b031681565b3480156101e257600080fd5b506101f66101f1366004613b2f565b61049e565b005b34801561020457600080fd5b506101f6610901565b34801561021957600080fd5b5061022d610228366004613cb9565b61094c565b60405161016d9190613d33565b34801561024657600080fd5b506101f6610e1c565b34801561025b57600080fd5b50606954610160906001600160a01b031681565b34801561027b57600080fd5b50606b54610160906001600160a01b031681565b34801561029b57600080fd5b506101f66102aa366004613d84565b610e30565b3480156102bb57600080fd5b50610160610fcf565b3480156102d057600080fd5b506101f66102df366004613e2d565b610fde565b3480156102f057600080fd5b506101f66102ff366004613b2f565b611076565b34801561031057600080fd5b506101f661031f366004613e4a565b6113fd565b34801561033057600080fd5b5061022d61033f366004613f99565b611898565b34801561035057600080fd5b506101f661035f366004613e2d565b611c58565b34801561037057600080fd5b506101f661037f366004613e2d565b611cf0565b34801561039057600080fd5b506101f661039f366004613e2d565b611d88565b3480156103b057600080fd5b506101f66103bf366004613e2d565b611e20565b3480156103d057600080fd5b50606c54610160906001600160a01b031681565b3480156103f057600080fd5b506101f66103ff366004613e4a565b611eb8565b34801561041057600080fd5b5061042461041f366004613ffd565b612126565b60405161016d919061404c565b34801561043d57600080fd5b5061045161044c366004613ffd565b612186565b60405161016d91906140b2565b34801561046a57600080fd5b50606a54610160906001600160a01b031681565b34801561048a57600080fd5b506101f6610499366004613e2d565b6121ff565b606a546001600160a01b031633146104c9576040516308d2ae7d60e31b815260040160405180910390fd5b6000838152606d6020908152604091829020825160e08101845281546001600160a01b039081168252600183015481169382018490526002830154948201949094526003820154909316606084015260048101546080840152600581015460a08401526006015460c0830152158061054c575060608101516001600160a01b0316155b1561056a57604051630e6d93a960e11b815260040160405180910390fd5b6040810151600090156106ea5760655460208301516040808501519051631de6622360e11b81526001600160a01b0390931692633bccc446926105b19290916004016140c0565b600060405180830381600087803b1580156105cb57600080fd5b505af11580156105df573d6000803e3d6000fd5b50506065546040850151602086015161060994506001600160a01b03908116935090911690612275565b606554602083015160405163f0ca5ad560e01b81526001600160a01b039092169163f0ca5ad59161063c9160040161270a565b6020604051808303816000875af115801561065b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067f91906140d9565b606554602084015160405163112076bb60e21b81529293506001600160a01b0390911691634481daec916106b79185906004016140c0565b600060405180830381600087803b1580156106d157600080fd5b505af11580156106e5573d6000803e3d6000fd5b505050505b6080820151156108675760655460608301516080840151604051631de6622360e11b81526001600160a01b0390931692633bccc4469261072e9290916004016140c0565b600060405180830381600087803b15801561074857600080fd5b505af115801561075c573d6000803e3d6000fd5b50506065546080850151602086015161078694506001600160a01b03908116935090911690612275565b606554606083015160405163f0ca5ad560e01b81526001600160a01b039092169163f0ca5ad5916107b99160040161270a565b6020604051808303816000875af11580156107d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fc91906140d9565b606554606084015160405163112076bb60e21b81529293506001600160a01b0390911691634481daec916108349185906004016140c0565b600060405180830381600087803b15801561084e57600080fd5b505af1158015610862573d6000803e3d6000fd5b505050505b6000858152606d602052604080822080546001600160a01b031990811682556001820180548216905560028201849055600382018054909116905560048101839055600581018390556006019190915582810151608084015191517fbae19cbe8af86f379ded99dccc7bcd588ee6cd16484d031ff530262e6235ac78926108f29289928792906140f2565b60405180910390a15050505050565b6109096122d0565b610911610fcf565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610949573d6000803e3d6000fd5b50565b60665460405162019dd360ee1b81526060916001600160a01b031690636774c0009061097e903090339060040161411b565b60006040518083038186803b15801561099657600080fd5b505afa1580156109aa573d6000803e3d6000fd5b50859250829150506001600160401b038111156109c9576109c961271e565b6040519080825280602002602001820160405280156109f2578160200160208202803683370190505b5091506109fd61267a565b6000805b83811015610e1157878782818110610a1b57610a1b614135565b905060e00201803603810190610a31919061414b565b604081015190935015610b1c576065546020840151604080860151905163052d2fed60e31b81526001600160a01b03909316926329697f6892610a789290916004016140c0565b600060405180830381600087803b158015610a9257600080fd5b505af1158015610aa6573d6000803e3d6000fd5b5050606554602086015160695460408089015190516301826f6f60e41b81526001600160a01b039485169650631826f6f09550610ae994909216916004016141cc565b600060405180830381600087803b158015610b0357600080fd5b505af1158015610b17573d6000803e3d6000fd5b505050505b608083015115610c04576065546060840151608085015160405163052d2fed60e31b81526001600160a01b03909316926329697f6892610b609290916004016140c0565b600060405180830381600087803b158015610b7a57600080fd5b505af1158015610b8e573d6000803e3d6000fd5b5050606554606086015160695460808801516040516301826f6f60e41b81526001600160a01b039485169650631826f6f09550610bd194909216916004016141cc565b600060405180830381600087803b158015610beb57600080fd5b505af1158015610bff573d6000803e3d6000fd5b505050505b606954606754610c23916001600160a01b03918216913391168961232f565b606854604080516101808101825230808252602080830191909152600082840181905287516001600160a01b039081166060808601919091528984015182166080860152890151811660a08501528451828152808401865260c085015284518281529283019094529290931692635b4e95619260e0830191905081526020018660a0015181526020016000151581526020018981526020018660c001518152506040518263ffffffff1660e01b8152600401610cdf9190614234565b6020604051808303816000875af1158015610cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2291906140d9565b915081858281518110610d3757610d37614135565b6020908102919091018101919091526000838152606d8252604090819020855181546001600160a01b03199081166001600160a01b0392831617835593870151600183018054861691831691909117905586830151600283015560608701516003830180549095169116179092556080850151600483015560a0850151600583015560c0850151600690920191909155517f81c34051a9778cc3c6f2b3a9048eb8c7cb853f61dd972a23023f63e92b22f8bb90610df79084908690614325565b60405180910390a180610e098161433a565b915050610a01565b505050509392505050565b610e246122d0565b610e2e6000612356565b565b600054610100900460ff1615808015610e505750600054600160ff909116105b80610e715750610e5f306123a8565b158015610e71575060005460ff166001145b610ed95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610efc576000805461ff0019166101001790555b610f046123b7565b606780546001600160a01b03199081166001600160a01b038c8116919091179092556065805482168b84161790556066805482168a8416179055606880548216898416179055606980548216888416179055606a80548216878416179055606b80548216868416179055606c80549091169184169190911790558015610fc4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6033546001600160a01b031690565b610fe66122d0565b6001600160a01b03811661100d576040516361a7f9bf60e01b815260040160405180910390fd5b6068546040517f9620f1dab35ad8c9a7d762b294b324f7e5b1462a9402d1f6aaaa2530c28549f79161104c916001600160a01b0390911690849061411b565b60405180910390a1606880546001600160a01b0319166001600160a01b0392909216919091179055565b606a546001600160a01b031633146110a1576040516308d2ae7d60e31b815260040160405180910390fd5b6000838152606d6020908152604091829020825160e08101845281546001600160a01b039081168252600183015481169382018490526002830154948201949094526003820154909316606084015260048101546080840152600581015460a08401526006015460c08301521580611124575060608101516001600160a01b0316155b1561114257604051630e6d93a960e11b815260040160405180910390fd5b600082602001516000015160008151811061115f5761115f614135565b60200260200101516020015190508060000361118e576040516321a93ca160e21b815260040160405180910390fd5b60655482516111aa916001600160a01b03918216911683612275565b606554825160405163f0ca5ad560e01b81526001600160a01b039092169163f0ca5ad5916111da9160040161270a565b6020604051808303816000875af11580156111f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121d91906140d9565b50606554825160405163112076bb60e21b81526001600160a01b0390921691634481daec916112509185906004016140c0565b600060405180830381600087803b15801561126a57600080fd5b505af115801561127e573d6000803e3d6000fd5b505050506040820151156112f95760655460208301516040808501519051631de6622360e11b81526001600160a01b0390931692633bccc446926112c69290916004016140c0565b600060405180830381600087803b1580156112e057600080fd5b505af11580156112f4573d6000803e3d6000fd5b505050505b6080820151156113705760655460608301516080840151604051631de6622360e11b81526001600160a01b0390931692633bccc4469261133d9290916004016140c0565b600060405180830381600087803b15801561135757600080fd5b505af115801561136b573d6000803e3d6000fd5b505050505b7f44be2c2fb4013303d5a410e8923f866e7c14f3abacad9141fc7eec0c353ae4918583836040516113a393929190614361565b60405180910390a1505050600091825250606d6020526040812080546001600160a01b0319908116825560018201805482169055600282018390556003820180549091169055600481018290556005810182905560060155565b606c546001600160a01b03163314611428576040516308d2ae7d60e31b815260040160405180910390fd5b6000838152606e6020908152604091829020825160a08101845281546001600160a01b03168082526001830154938201939093526002820154938101939093526003810154606084015260040154608083015261149857604051630e6d93a960e11b815260040160405180910390fd5b60008260200151600001516000815181106114b5576114b5614135565b60200260200101516020015190506000811115611634576065548351518051611517926001600160a01b03169184916000906114f3576114f3614135565b6020026020010151602001516001600160a01b03166122759092919063ffffffff16565b60655483515180516001600160a01b039092169163f0ca5ad5919060009061154157611541614135565b6020026020010151602001516040518263ffffffff1660e01b8152600401611569919061270a565b6020604051808303816000875af1158015611588573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ac91906140d9565b5060655483515180516001600160a01b0390921691634481daec91906000906115d7576115d7614135565b602002602001015160200151836040518363ffffffff1660e01b81526004016116019291906140c0565b600060405180830381600087803b15801561161b57600080fd5b505af115801561162f573d6000803e3d6000fd5b505050505b600083602001516000015160018151811061165157611651614135565b602002602001015160200151905060008111156117b2576065548451518051611691926001600160a01b031691849160019081106114f3576114f3614135565b60655484515180516001600160a01b039092169163f0ca5ad5919060019081106116bd576116bd614135565b6020026020010151602001516040518263ffffffff1660e01b81526004016116e5919061270a565b6020604051808303816000875af1158015611704573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172891906140d9565b5060655484515180516001600160a01b0390921691634481daec9190600190811061175557611755614135565b602002602001015160200151836040518363ffffffff1660e01b815260040161177f9291906140c0565b600060405180830381600087803b15801561179957600080fd5b505af11580156117ad573d6000803e3d6000fd5b505050505b60655483516020850151604051631de6622360e11b81526001600160a01b0390931692633bccc446926117e99290916004016140c0565b600060405180830381600087803b15801561180357600080fd5b505af1158015611817573d6000803e3d6000fd5b5050506000878152606e602052604080822080546001600160a01b031916815560018101839055600281018390556003810183905560040191909155517f1c946a689c0438ef362815e717c0cb1a243bbe3ae42503dfb8bf49d167d2ac469150611888908890869086908690614385565b60405180910390a1505050505050565b60665460405162019dd360ee1b81526060916001600160a01b031690636774c000906118ca903090339060040161411b565b60006040518083038186803b1580156118e257600080fd5b505afa1580156118f6573d6000803e3d6000fd5b50859250829150506001600160401b038111156119155761191561271e565b60405190808252806020026020018201604052801561193e578160200160208202803683370190505b5091506119496126d2565b6000805b83811015610e115787878281811061196757611967614135565b905060a0020180360381019061197d91906143ac565b6065548151602083015160405163052d2fed60e31b81529396506001600160a01b03909216926329697f68926119b692916004016140c0565b600060405180830381600087803b1580156119d057600080fd5b505af11580156119e4573d6000803e3d6000fd5b50506065548551606b5460208801516040516301826f6f60e41b81526001600160a01b039485169650631826f6f09550611a2494909216916004016141cc565b600060405180830381600087803b158015611a3e57600080fd5b505af1158015611a52573d6000803e3d6000fd5b5050606b54606754611a7593506001600160a01b0390811692503391168961232f565b6068546040805161016081018252308082526020820152600091810182905285516001600160a01b0390811660608301529092169163ad23c5a1916080820190604051908082528060200260200182016040528015611ade578160200160208202803683370190505b5081526020016000604051908082528060200260200182016040528015611b0f578160200160208202803683370190505b508152602001866040015181526020018660600151815260200160001515815260200189815260200186608001518152506040518263ffffffff1660e01b8152600401611b5c9190614424565b6020604051808303816000875af1158015611b7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9f91906140d9565b915081858281518110611bb457611bb4614135565b6020908102919091018101919091526000838152606e8252604090819020855181546001600160a01b0319166001600160a01b03909116178155918501516001830155848101516002830155606085015160038301556080850151600490920191909155517fa44e003b1ff1b37bd37910e5e096c4fcc46a3fd8f4d63ec08199718f1953f2bb90611c4890849086906144f8565b60405180910390a160010161194d565b611c606122d0565b6001600160a01b038116611c87576040516361a7f9bf60e01b815260040160405180910390fd5b606b546040517fb50812f759b0b3fecee3737c10fef929d8442529fd6368a4c76711741fe6c0a591611cc6916001600160a01b0390911690849061411b565b60405180910390a1606b80546001600160a01b0319166001600160a01b0392909216919091179055565b611cf86122d0565b6001600160a01b038116611d1f576040516361a7f9bf60e01b815260040160405180910390fd5b606c546040517f56911f17c391f2db7cd90e06708eb471d6b69163984d20d87f4017db6059f86d91611d5e916001600160a01b0390911690849061411b565b60405180910390a1606c80546001600160a01b0319166001600160a01b0392909216919091179055565b611d906122d0565b6001600160a01b038116611db7576040516361a7f9bf60e01b815260040160405180910390fd5b606a546040517f2cb2cafe269dabd636b54e1f9b67c5f2b87a6645771f60ab84282fb1524681bc91611df6916001600160a01b0390911690849061411b565b60405180910390a1606a80546001600160a01b0319166001600160a01b0392909216919091179055565b611e286122d0565b6001600160a01b038116611e4f576040516361a7f9bf60e01b815260040160405180910390fd5b6069546040517f4649ba73d13910960a800c4cb4b40aae0079630deb2d0967e5921a9dbafdf5f091611e8e916001600160a01b0390911690849061411b565b60405180910390a1606980546001600160a01b0319166001600160a01b0392909216919091179055565b606c546001600160a01b03163314611ee3576040516308d2ae7d60e31b815260040160405180910390fd5b6000838152606e6020908152604091829020825160a08101845281546001600160a01b031680825260018301549382019390935260028201549381019390935260038101546060840152600401546080830152611f5357604051630e6d93a960e11b815260040160405180910390fd5b60655481516020830151604051631de6622360e11b81526001600160a01b0390931692633bccc44692611f8a9290916004016140c0565b600060405180830381600087803b158015611fa457600080fd5b505af1158015611fb8573d6000803e3d6000fd5b505060655460208401518451611fdf94506001600160a01b03908116935090911690612275565b606554815160405163f0ca5ad560e01b81526000926001600160a01b03169163f0ca5ad591612011919060040161270a565b6020604051808303816000875af1158015612030573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205491906140d9565b606554835160405163112076bb60e21b81529293506001600160a01b0390911691634481daec916120899185906004016140c0565b600060405180830381600087803b1580156120a357600080fd5b505af11580156120b7573d6000803e3d6000fd5b5050506000868152606e602052604080822080546001600160a01b031916815560018101839055600281018390556003810183905560040191909155517f63b0d91c1a5939fa88d0277597632e4ac9773ecf45a145d8ae9db2d8ee462c1391506108f29087908590859061450c565b61212e6126d2565b506000908152606e6020908152604091829020825160a08101845281546001600160a01b0316815260018201549281019290925260028101549282019290925260038201546060820152600490910154608082015290565b61218e61267a565b506000908152606d6020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116938201939093526002820154938101939093526003810154909116606083015260048101546080830152600581015460a08301526006015460c082015290565b6122076122d0565b6001600160a01b03811661226c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ed0565b61094981612356565b6122cb8363a9059cbb60e01b84846040516024016122949291906140c0565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526123e6565b505050565b336122d9610fcf565b6001600160a01b031614610e2e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ed0565b612350846323b872dd60e01b858585604051602401612294939291906141cc565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03163b151590565b600054610100900460ff166123de5760405162461bcd60e51b8152600401610ed09061452e565b610e2e6124b8565b600061243b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166124e89092919063ffffffff16565b8051909150156122cb57808060200190518101906124599190614579565b6122cb5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610ed0565b600054610100900460ff166124df5760405162461bcd60e51b8152600401610ed09061452e565b610e2e33612356565b60606124f78484600085612501565b90505b9392505050565b6060824710156125625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610ed0565b600080866001600160a01b0316858760405161257e91906145ba565b60006040518083038185875af1925050503d80600081146125bb576040519150601f19603f3d011682016040523d82523d6000602084013e6125c0565b606091505b50915091506125d1878383876125de565b925050505b949350505050565b6060831561264b578251600003612644576125f8856123a8565b6126445760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ed0565b50816125d6565b6125d683838151156126605781518083602001fd5b8060405162461bcd60e51b8152600401610ed091906145d6565b6040518060e0016040528060006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081525090565b6040518060a0016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156127565761275661271e565b60405290565b60405160e081016001600160401b03811182821017156127565761275661271e565b604051606081016001600160401b03811182821017156127565761275661271e565b60405161012081016001600160401b03811182821017156127565761275661271e565b604051601f8201601f191681016001600160401b03811182821017156127eb576127eb61271e565b604052919050565b6001600160a01b038116811461094957600080fd5b8035612813816127f3565b919050565b60006001600160401b038211156128315761283161271e565b5060051b60200190565b600082601f83011261284c57600080fd5b8135602061286161285c83612818565b6127c3565b82815260059290921b8401810191818101908684111561288057600080fd5b8286015b848110156128a4578035612897816127f3565b8352918301918301612884565b509695505050505050565b600060c082840312156128c157600080fd5b60405160c081016001600160401b03811182821017156128e3576128e361271e565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201525092915050565b801515811461094957600080fd5b60006020828403121561294857600080fd5b604051602081016001600160401b038111828210171561296a5761296a61271e565b604052905080823561297b81612928565b905292915050565b600082601f83011261299457600080fd5b81356001600160401b038111156129ad576129ad61271e565b6129c0601f8201601f19166020016127c3565b8181528460208386010111156129d557600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112612a0357600080fd5b81356020612a1361285c83612818565b82815260059290921b84018101918181019086841115612a3257600080fd5b8286015b848110156128a45780356001600160401b0380821115612a565760008081fd5b908801906040828b03601f1901811315612a705760008081fd5b612a78612734565b8784013583811115612a8a5760008081fd5b612a988d8a83880101612983565b825250908301359082821115612aae5760008081fd5b612abc8c898487010161283b565b818901528652505050918301918301612a36565b60006040808385031215612ae357600080fd5b612aeb612734565b915082356001600160401b0380821115612b0457600080fd5b818501915085601f830112612b1857600080fd5b81356020612b2861285c83612818565b82815260059290921b84018101918181019089841115612b4757600080fd5b8286015b84811015612bc657803586811115612b635760008081fd5b8701808c03601f1901891315612b795760008081fd5b612b81612734565b8582013588811115612b935760008081fd5b612ba18e8883860101612983565b8252509089013590612bb2826127f3565b808601919091528352918301918301612b4b565b5087525086810135945082851115612bdd57600080fd5b612be9888689016129f2565b81870152505050505092915050565b600082601f830112612c0957600080fd5b81356020612c1961285c83612818565b828152600592831b8501820192828201919087851115612c3857600080fd5b8387015b85811015612d2d5780356001600160401b0380821115612c5c5760008081fd5b908901906040828c03601f1901811315612c765760008081fd5b612c7e612734565b8884013583811115612c905760008081fd5b612c9e8e8b83880101612983565b8252508184013583811115612cb35760008081fd5b8085019450508c603f850112612ccb57600092508283fd5b888401359250612cdd61285c84612818565b83815292861b8401820192898101908e851115612cfa5760008081fd5b948301945b84861015612d185785358252948a0194908a0190612cff565b828b0152508752505050928401928401612c3c565b5090979650505050505050565b60006040808385031215612d4d57600080fd5b612d55612734565b915082356001600160401b0380821115612d6e57600080fd5b818501915085601f830112612d8257600080fd5b81356020612d9261285c83612818565b82815260059290921b84018101918181019089841115612db157600080fd5b8286015b84811015612e2357803586811115612dcd5760008081fd5b8701808c03601f1901891315612de35760008081fd5b612deb612734565b8582013588811115612dfd5760008081fd5b612e0b8e8883860101612983565b82525090890135858201528352918301918301612db5565b5087525086810135945082851115612e3a57600080fd5b612be988868901612bf8565b600082601f830112612e5757600080fd5b81356020612e6761285c83612818565b828152600592831b8501820192828201919087851115612e8657600080fd5b8387015b85811015612d2d5780356001600160401b0380821115612eaa5760008081fd5b908901906040828c03601f1901811315612ec45760008081fd5b612ecc612734565b8884013583811115612ede5760008081fd5b612eec8e8b83880101612983565b8252508184013583811115612f015760008081fd5b8085019450508c603f850112612f1957600092508283fd5b888401359250612f2b61285c84612818565b83815292861b8401820192898101908e851115612f485760008081fd5b948301945b84861015612f665785358252948a0194908a0190612f4d565b828b0152508752505050928401928401612e8a565b60006040808385031215612f8e57600080fd5b612f96612734565b915082356001600160401b0380821115612faf57600080fd5b818501915085601f830112612fc357600080fd5b81356020612fd361285c83612818565b82815260059290921b84018101918181019089841115612ff257600080fd5b8286015b848110156130645780358681111561300e5760008081fd5b8701808c03601f19018913156130245760008081fd5b61302c612734565b858201358881111561303e5760008081fd5b61304c8e8883860101612983565b82525090890135858201528352918301918301612ff6565b508752508681013594508285111561307b57600080fd5b612be988868901612e46565b600082601f83011261309857600080fd5b813560206130a861285c83612818565b828152600592831b85018201928282019190878511156130c757600080fd5b8387015b85811015612d2d5780356001600160401b03808211156130eb5760008081fd5b908901906040828c03601f19018113156131055760008081fd5b61310d612734565b888401358381111561311f5760008081fd5b61312d8e8b83880101612983565b82525081840135838111156131425760008081fd5b8085019450508c603f85011261315a57600092508283fd5b88840135925061316c61285c84612818565b83815292861b8401820192898101908e8511156131895760008081fd5b948301945b848610156131b357853593506131a384612928565b838252948a0194908a019061318e565b828b01525087525050509284019284016130cb565b600060408083850312156131db57600080fd5b6131e3612734565b915082356001600160401b03808211156131fc57600080fd5b818501915085601f83011261321057600080fd5b8135602061322061285c83612818565b82815260059290921b8401810191818101908984111561323f57600080fd5b8286015b848110156132be5780358681111561325b5760008081fd5b8701808c03601f19018913156132715760008081fd5b613279612734565b858201358881111561328b5760008081fd5b6132998e8883860101612983565b82525090890135906132aa82612928565b808601919091528352918301918301613243565b50875250868101359450828511156132d557600080fd5b612be988868901613087565b600082601f8301126132f257600080fd5b8135602061330261285c83612818565b828152600592831b850182019282820191908785111561332157600080fd5b8387015b85811015612d2d5780356001600160401b03808211156133455760008081fd5b908901906040828c03601f190181131561335f5760008081fd5b613367612734565b88840135838111156133795760008081fd5b6133878e8b83880101612983565b825250818401358381111561339c5760008081fd5b8085019450508c603f8501126133b457600092508283fd5b8884013592506133c661285c84612818565b83815292861b8401820192898101908e8511156133e35760008081fd5b948301945b848610156134015785358252948a0194908a01906133e8565b828b0152508752505050928401928401613325565b6000604080838503121561342957600080fd5b613431612734565b915082356001600160401b038082111561344a57600080fd5b818501915085601f83011261345e57600080fd5b8135602061346e61285c83612818565b82815260059290921b8401810191818101908984111561348d57600080fd5b8286015b848110156134ff578035868111156134a95760008081fd5b8701808c03601f19018913156134bf5760008081fd5b6134c7612734565b85820135888111156134d95760008081fd5b6134e78e8883860101612983565b82525090890135858201528352918301918301613491565b508752508681013594508285111561351657600080fd5b612be9888689016132e1565b600082601f83011261353357600080fd5b8135602061354361285c83612818565b82815260059290921b8401810191818101908684111561356257600080fd5b8286015b848110156128a4576001600160401b03813581101561358457600080fd5b813588016040818b03601f1901121561359c57600080fd5b6135a4612734565b86820135838111156135b557600080fd5b6135c38c8983860101612983565b8252506040820135838111156135d857600080fd5b8083019250508a603f8301126135ed57600080fd5b868201356135fd61285c82612818565b81815260059190911b830160400190888101908d83111561361d57600080fd5b604085015b8381101561365557868135111561363857600080fd5b6136488f60408335890101612983565b8352918a01918a01613622565b50838a0152505085525050918301918301613566565b6000604080838503121561367e57600080fd5b613686612734565b915082356001600160401b038082111561369f57600080fd5b818501915085601f8301126136b357600080fd5b813560206136c361285c83612818565b82815260059290921b840181019181810190898411156136e257600080fd5b8286015b84811015613772578035868111156136fe5760008081fd5b8701808c03601f19018913156137145760008081fd5b61371c612734565b858201358881111561372e5760008081fd5b61373c8e8883860101612983565b82525089820135888111156137515760008081fd5b61375f8e8883860101612983565b82880152508452509183019183016136e6565b508752508681013594508285111561378957600080fd5b612be988868901613522565b600082601f8301126137a657600080fd5b813560206137b661285c83612818565b82815260059290921b840181019181810190868411156137d557600080fd5b8286015b848110156128a4576001600160401b0381358110156137f757600080fd5b813588016040818b03601f1901121561380f57600080fd5b613817612734565b868201358381111561382857600080fd5b6138368c8983860101612983565b82525060408201358381111561384b57600080fd5b8083019250508a603f83011261386057600080fd5b8682013561387061285c82612818565b81815260059190911b830160400190888101908d83111561389057600080fd5b604085015b838110156138c85786813511156138ab57600080fd5b6138bb8f60408335890101612983565b8352918a01918a01613895565b50838a01525050855250509183019183016137d9565b600060408083850312156138f157600080fd5b6138f9612734565b915082356001600160401b038082111561391257600080fd5b818501915085601f83011261392657600080fd5b8135602061393661285c83612818565b82815260059290921b8401810191818101908984111561395557600080fd5b8286015b848110156139e5578035868111156139715760008081fd5b8701808c03601f19018913156139875760008081fd5b61398f612734565b85820135888111156139a15760008081fd5b6139af8e8883860101612983565b82525089820135888111156139c45760008081fd5b6139d28e8883860101612983565b8288015250845250918301918301613959565b50875250868101359450828511156139fc57600080fd5b612be988868901613795565b600060e08284031215613a1a57600080fd5b613a2261275c565b905081356001600160401b0380821115613a3b57600080fd5b613a4785838601612ad0565b83526020840135915080821115613a5d57600080fd5b613a6985838601612d3a565b60208401526040840135915080821115613a8257600080fd5b613a8e85838601612f7b565b60408401526060840135915080821115613aa757600080fd5b613ab3858386016131c8565b60608401526080840135915080821115613acc57600080fd5b613ad885838601613416565b608084015260a0840135915080821115613af157600080fd5b613afd8583860161366b565b60a084015260c0840135915080821115613b1657600080fd5b50613b23848285016138de565b60c08301525092915050565b600080600060608486031215613b4457600080fd5b8335925060208401356001600160401b0380821115613b6257600080fd5b8186019150610100808389031215613b7957600080fd5b613b8161277e565b833583811115613b9057600080fd5b8401610120818b031215613ba357600080fd5b613bab6127a0565b613bb482612808565b8152613bc260208301612808565b6020820152613bd360408301612808565b6040820152613be460608301612808565b6060820152613bf560808301612808565b6080820152613c0660a08301612808565b60a0820152613c1760c08301612808565b60c082015260e082013585811115613c2e57600080fd5b613c3a8c82850161283b565b60e0830152508382013585811115613c5157600080fd5b613c5d8c82850161283b565b8286015250825250613c7289602086016128af565b6020820152613c848960e08601612936565b604082015280955050506040860135915080821115613ca257600080fd5b50613caf86828701613a08565b9150509250925092565b600080600060408486031215613cce57600080fd5b83356001600160401b0380821115613ce557600080fd5b818601915086601f830112613cf957600080fd5b813581811115613d0857600080fd5b87602060e083028501011115613d1d57600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015613d6b57835183529284019291840191600101613d4f565b50909695505050505050565b6001600160a01b03169052565b600080600080600080600080610100898b031215613da157600080fd5b8835613dac816127f3565b97506020890135613dbc816127f3565b96506040890135613dcc816127f3565b95506060890135613ddc816127f3565b94506080890135613dec816127f3565b935060a0890135613dfc816127f3565b925060c0890135613e0c816127f3565b915060e0890135613e1c816127f3565b809150509295985092959890939650565b600060208284031215613e3f57600080fd5b81356124fa816127f3565b600080600060608486031215613e5f57600080fd5b8335925060208401356001600160401b0380821115613e7d57600080fd5b908501906101008288031215613e9257600080fd5b613e9a61277e565b823582811115613ea957600080fd5b830160e0818a031215613ebb57600080fd5b613ec361275c565b613ecc82612808565b8152613eda60208301612808565b6020820152613eeb60408301612808565b6040820152613efc60608301612808565b6060820152613f0d60808301612808565b608082015260a082013584811115613f2457600080fd5b613f308b82850161283b565b60a08301525060c082013584811115613f4857600080fd5b613f548b82850161283b565b60c083015250825250613f6a88602085016128af565b6020820152613f7c8860e08501612936565b6040820152809450506040860135915080821115613ca257600080fd5b600080600060408486031215613fae57600080fd5b83356001600160401b0380821115613fc557600080fd5b818601915086601f830112613fd957600080fd5b813581811115613fe857600080fd5b87602060a083028501011115613d1d57600080fd5b60006020828403121561400f57600080fd5b5035919050565b80516001600160a01b03168252602080820151908301526040808201519083015260608082015190830152608090810151910152565b60a0810161405a8284614016565b92915050565b60018060a01b0380825116835280602083015116602084015260408201516040840152806060830151166060840152506080810151608083015260a081015160a083015260c081015160c08301525050565b60e0810161405a8284614060565b6001600160a01b03929092168252602082015260400190565b6000602082840312156140eb57600080fd5b5051919050565b84815261014081016141076020830186614060565b610100820193909352610120015292915050565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b600052603260045260246000fd5b600060e0828403121561415d57600080fd5b61416561275c565b8235614170816127f3565b81526020830135614180816127f3565b602082015260408381013590820152606083013561419d816127f3565b806060830152506080830135608082015260a083013560a082015260c083013560c08201528091505092915050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600081518084526020808501945080840160005b838110156142295781516001600160a01b031687529582019590820190600101614204565b509495945050505050565b60208152614246602082018351613d77565b6000602083015161425a6040840182613d77565b50604083015161426d6060840182613d77565b5060608301516142806080840182613d77565b50608083015161429360a0840182613d77565b5060a08301516142a660c0840182613d77565b5060c08301516101808060e08501526142c36101a08501836141f0565b915060e0850151610100601f1986850301818701526142e284836141f0565b908701516101208781019190915287015190935090506101406143088187018315159052565b860151610160868101919091529095015193019290925250919050565b82815261010081016124fa6020830184614060565b60006001820161435a57634e487b7160e01b600052601160045260246000fd5b5060010190565b83815261012081016143766020830185614060565b82610100830152949350505050565b848152610100810161439a6020830186614016565b60c082019390935260e0015292915050565b600060a082840312156143be57600080fd5b60405160a081016001600160401b03811182821017156143e0576143e061271e565b60405282356143ee816127f3565b80825250602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b60208152614436602082018351613d77565b6000602083015161444a6040840182613d77565b50604083015161445d6060840182613d77565b5060608301516144706080840182613d77565b5060808301516101608060a085015261448d6101808501836141f0565b915060a0850151601f198584030160c08601526144aa83826141f0565b92505060c085015160e085015260e08501516101008181870152808701519150506101206144db8187018315159052565b860151610140868101919091529095015193019290925250919050565b82815260c081016124fa6020830184614016565b83815260e081016145206020830185614016565b8260c0830152949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561458b57600080fd5b81516124fa81612928565b60005b838110156145b1578181015183820152602001614599565b50506000910152565b600082516145cc818460208701614596565b9190910192915050565b60208152600082518060208401526145f5816040850160208701614596565b601f01601f1916919091016040019291505056fea264697066735822122094156ebf837822043a4eed589113173b21d0395404462a22ed82e0f1141bd97364736f6c63430008120033