0 txs
2 calls
constructor
No constructor.
functions
analysisPayload
purefunction analysisPayload(bytes _swapData) pure returns (uint256 amountIn_, address tokenIn_, address tokenOut_)
DAI
viewfunction DAI() view returns (address)
getAccountData
viewfunction getAccountData() view returns (uint256 col_, uint256 debt_)
getCollateralRatio
viewfunction getCollateralRatio() view returns (uint256 collateralRatio_, bool isOK_)
getNetAssets
viewfunction getNetAssets() view returns (uint256)
hwHLP
viewfunction hwHLP() view returns (address)
isValidSignature
viewfunction isValidSignature(bytes32 _hash, bytes _signature) view returns (bytes4 magic)
lastUpdateTime
viewfunction lastUpdateTime() view returns (uint256)
MAX_PROTOCOL_RATIO
viewfunction MAX_PROTOCOL_RATIO() view returns (uint256)
netAssets
viewfunction netAssets() view returns (uint256)
orderSigner
viewfunction orderSigner() view returns (address)
owner
viewfunction owner() view returns (address)
rebalancer
viewfunction rebalancer() view returns (address)
safeProtocolRatio
viewfunction safeProtocolRatio() view returns (uint256)
USDC
viewfunction USDC() view returns (address)
USDe
viewfunction USDe() view returns (address)
USDT
viewfunction USDT() view returns (address)
vault
viewfunction vault() view returns (address)
VERSION
viewfunction VERSION() view returns (string)
approveRedeem
nonpayablefunction approveRedeem(uint256 _usdeAmount)
borrow
nonpayablefunction borrow(uint256 _amount)
bridgeHwHLP
payablefunction bridgeHwHLP(uint256 shareAmount_, address destReceiver_) payable returns (bytes32 messageId)
claimRewards
nonpayablefunction claimRewards(address _to, uint256 _amount)
depositToHyperWave
nonpayablefunction depositToHyperWave(address _token, uint256 _amount) returns (uint256 shares_)
initialize
nonpayablefunction initialize(bytes _initBytes)
leverage
nonpayablefunction leverage(uint256 _depositAmount, uint256 _leverageAmount, address _intermediateToken, bytes _swapData, uint256 _swapGetMin)
onTransferIn
nonpayablefunction onTransferIn(address _token, uint256 _amount) returns (bool)
renounceOwnership
nonpayablefunction renounceOwnership()
repay
nonpayablefunction repay(uint256 _amount)
swap
nonpayablefunction swap(uint256 _amount, address _tokenIn, bytes _swapData, uint256 _minAmountOut) returns (uint256 amountOut_)
sweep
nonpayablefunction sweep()
transferHwHLP
nonpayablefunction transferHwHLP(uint256 _amount, address _to)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
transferToVault
nonpayablefunction transferToVault(address _token, uint256 _amount)
updateNetAssets
nonpayablefunction updateNetAssets(uint256 _newNetAssets)
updateOrderSigner
nonpayablefunction updateOrderSigner(address _newOrderSigner)
updateRebalancer
nonpayablefunction updateRebalancer(address _newRebalancer)
updateSafeProtocolRatio
nonpayablefunction updateSafeProtocolRatio(uint256 _newRatio)
withdraw
nonpayablefunction withdraw(uint256 _amount, address _to)
events
Borrow
event Borrow(uint256 amount)
BridgeHwHLP
event BridgeHwHLP(uint256 amount, bytes32 messageId)
ClaimRewards
event ClaimRewards(uint256 amount, address receiver)
HwHLPTransferOut
event HwHLPTransferOut(uint256 amount, address receiver)
Initialized
event Initialized(uint64 version)
Leverage
event Leverage(uint256 depositAmount, uint256 leverageAmount)
OnTransferIn
event OnTransferIn(address token, uint256 amount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Repay
event Repay(uint256 amount)
Swap
event Swap(address srcToken, address destToken, uint256 amount, uint256 returnAmount)
TransferToVault
event TransferToVault(address token, uint256 amount)
UpdateNetAssets
event UpdateNetAssets(uint256 oldNetAssets, uint256 newNetAssets)
UpdateOrderSigner
event UpdateOrderSigner(address oldOrderSigner, address newOrderSigner)
UpdateRebalancer
event UpdateRebalancer(address oldRebalancer, address newRebalancer)
UpdateSafeProtocolRatio
event UpdateSafeProtocolRatio(uint256 oldSafeProtocolRatio, uint256 newSafeProtocolRatio)
Withdrawal
event Withdrawal(uint256 amount, address receiver)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
CallerNotRebalancer
error CallerNotRebalancer()
CallerNotVault
error CallerNotVault()
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
FailedInnerCall
error FailedInnerCall()
FailedSweep
error FailedSweep()
IncorrectState
error IncorrectState()
InvalidAdmin
error InvalidAdmin()
InvalidInitialization
error InvalidInitialization()
InvalidRebalancer
error InvalidRebalancer()
InvalidReceiveAddress
error InvalidReceiveAddress()
InvalidSafeProtocolRatio
error InvalidSafeProtocolRatio()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
RatioOutOfRange
error RatioOutOfRange()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UnSupportedOperation
error UnSupportedOperation()
UnsupportedSwapToken
error UnsupportedSwapToken()
creation bytecode
0x60808060405234601557613f1d908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f803560e01c8062f714ce14612ea357806301d22ccd14612e7b5780630370278414612e395780630782d42114612e1c57806308bb5fb014612dea5780631626ba7e14612d5e5780632e6cb2e614612a6f57806335faa41614612a16578063371fd8e6146129555780633eb09ece146127da578063439fab911461227657806356f4edaf146121a55780636ad0ef8614611b1e578063715018a614611ab557806377094e5614611a97578063812af8ec14611a7057806389a3027114611a4857806389a71faa1461197a5780638da5cb5b1461194557806390875443146119165780639a99b4f0146118155780639b72d8a51461179f5780639b920ecb146116d75780639c2ec92314611666578063ace8202614611643578063b046a449146115a6578063b6172bf714610f1a578063c3182bda14610470578063c54e44eb14610441578063c5e0e0cf146103ab578063c5ebeaec14610332578063c8f33c9114610314578063cd377c53146102eb578063d1609502146102bc578063e0bab4c41461028d578063f299f8b314610264578063f2fde38b14610237578063fbfa77cf146102105763ffa1ad74146101c6575f80fd5b3461020d578060031936011261020d576102096040516101e5816130bc565b60038152620312e360ec1b6020820152604051918291602083526020830190613182565b0390f35b80fd5b503461020d578060031936011261020d57546040516001600160a01b039091168152602090f35b503461020d57602036600319011261020d5761026161025461301b565b61025c613671565b613600565b80f35b503461020d578060031936011261020d576005546040516001600160a01b039091168152602090f35b503461020d578060031936011261020d576020604051736b175474e89094c44da98b954eedeac495271d0f8152f35b503461020d578060031936011261020d576020604051734c9edd5852cd905f086c759e8383e09bff1e68b38152f35b503461020d578060031936011261020d57604061030661348c565b825191825215156020820152f35b503461020d578060031936011261020d576020600454604051908152f35b503461020d57602036600319011261020d57600154600435906001600160a01b03163303610399576020816103877fb848ae6b1253b6cb77e81464128ce8bd94d3d524fea54e801e0da869784dca33936139ef565b61038f613a5c565b604051908152a180f35b60405163bd72e29160e01b8152600490fd5b503461020d57602036600319011261020d576103c561301b565b6103cd613671565b803b61042f57600554604080516001600160a01b03808416825284811660208301529293917fd0eaca066dcad6475231b378a5902742964eff4c8a1f2d85a094fb173cf3edc291a116906bffffffffffffffffffffffff60a01b161760055580f35b60405163e9ec812960e01b8152600490fd5b503461020d578060031936011261020d57602060405173dac17f958d2ee523a2206206994597c13d831ec78152f35b503461020d576003199060203683011261020d576004356001600160401b03811161098a576104a3903690600401613045565b9260048410610ec557836004116106035781356001600160e01b0319166371f56acf60e11b810361061f57509091928201906101608383039182011261061b5760e0906104f260048501613031565b506023190112610603576040519060e082018281106001600160401b038211176106075760405261052560248401613031565b825261053360448401613031565b93602083019485526040830193606481013585526084810135606085015260a4810135608085015260c481013560a085015261057160e48201613031565b60c08501526101248101356001600160401b0381116106035783600461059992840101613164565b50610144810135916001600160401b03831161020d57509160046105c39261020995940101613164565b5051925191516001600160a01b03938416939092165b604080519384526001600160a01b0394851660208501529316928201929092529081906060820190565b8280fd5b634e487b7160e01b5f52604160045260245ffd5b8380fd5b63da35bb0d60e01b810361098e575081848101030160e081126106035760a01361098a576040519161065083613072565b6004820135835260248201356020840152604482013560ff8116810361098a5760408401526064820135606084015261068b60848301613031565b608084015260a4820135936001600160401b03851161098a57808301602386850101121561098a576001600160401b03600486850101351161097657604051946106e160206004838701013560051b01876130f2565b838101600481013580885260208801929184870160059290921b016024011161061b57602481860101915b858201600481013560051b0160240183106107ab5750505060c4830135916001600160401b03831161020d575061074a929081019101600401613164565b50604081015190519060031c6001161561078f576102096001600160a01b03606061078582604061077a8861343a565b51510151169561343a565b51510151166105d9565b6102096001600160a01b03604061078582606061077a8861343a565b6001600160401b0383351161097257610180868301843501858801036023190112610972576040516107dc81613072565b61010087840185350186890103602319011261096a576040516107fe816130a0565b87840185350160248101358252604401356fffffffffffffffffffffffffffffffff8116900361096e578784018535016044810135602083015261084490606401613031565b604082015261085a60848635868b010101613031565b606082015261087060a48635868b010101613031565b608082015261088660c48635868b010101613031565b60a082015287840185350160e481013560c083015261010481013560e08301529082526001600160401b03610124909101351161096a576108d887860184890186350161012481013501602401613164565b602082015286830184350161014481013560408301526001600160401b03610164909101351161096a5761091d87860184890186350161016481013501602401613164565b60608201526001600160401b036101848535858a010101351161096a57602091829161095a898801868b0188350161018481013501602401613164565b608082015281520192019161070c565b8580fd5b8680fd5b8480fd5b634e487b7160e01b82526041600452602482fd5b5080fd5b9193909163d85ca17360e01b8103610b0f57508301908382030161010081126106035760a01361098a57604051926109c584613072565b600481013584526024810135602085015260448101356040850152606481013560608501526084810135608085015260c48101356001600160401b03811161061b57826004610a1692840101613164565b5060e4810135906001600160401b03821161061b57610a39929101600401613164565b6020810151806352bbbe2960e01b14610afb5763945bcec960e01b14610a6857631cd4b64760e21b8252600482fd5b905060648101518101600160248083015193015114600114610ae65780604460249201519260051b0101515b8115610aca575b8015610aaf575b61020990919251916105d9565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee610aa2565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee9150610a9b565b90602460449160051b83010151910151610a94565b509050610164610144820151910151610a94565b919291630d00e29960e11b8103610c1057508301918383030191610160831261098a5761012080931261098a576040519283018381106001600160401b03821117610607576040526004840135835260248401356020840152610b7460448501613031565b9160408401928352610b8860648601613031565b946060850195865260808501946084820135865260a482013560a082015260c482013560c082015260e482013560e0820152610100610bca6101048401613031565b910152610144810135916001600160401b03831161020d5750916004610bf69261020995940101613164565b5051925191516001600160a01b03938416939092166105d9565b6371bf692b60e11b8103610d13575083019183830301916101a0831261098a5761016080931261098a576040519283018381106001600160401b0382111761060757604052600484013583526024840135602084015260448401356040840152610c7c60648501613031565b6060840152610c8d60848501613031565b9160808401928352610ca160a48601613031565b9460a0850195865260c085019460c4820135865260e482013560e0820152610104820135610100820152610124820135610120820152610140610ce76101448401613031565b910152610184810135916001600160401b03831161020d5750916004610bf69261020995940101613164565b90939290633a2ecedb60e21b8103610d5e575050506004610d379282019101613372565b5050805160208201516040909201516001600160a01b0391821692909161020991166105d9565b6343b5017b60e11b8103610d7e575050506004610d379282019101613372565b91939091634c3f3ec760e11b03610e74578201908282030190610160821261061b5761014080921261061b576040519182018281106001600160401b0382111761060757604052610dd160048401613031565b8252610ddf60248401613031565b9360208301948552604083019360448101358552606481013560608501526084810135608085015260a481013560a0850152610e1d60c48201613031565b60c0850152610e2e60e48201613031565b60e0850152610104810135610100850152610124810135610120850152610144810135916001600160401b03831161020d5750916004610bf69261020995940101613164565b60405162461bcd60e51b8152602060048201526024808201527f506172615377617043616c6c65723a20556e737570706f727465642073656c6560448201526331ba37b960e11b6064820152608490fd5b60405162461bcd60e51b815260206004820152602760248201527f506172615377617043616c6c65723a20496e76616c69642063616c6c64617461604482015266040d8cadccee8d60cb1b6064820152608490fd5b503461020d5760a036600319011261020d576001600160a01b0360443581811681036112ad576064356001600160401b03811161061b57610f5f903690600401613045565b908360015416330361039957600435611595575b602435610fba575b84610f84613a5c565b7fde65598329a5a506b0865240860eae7975d48fadcbb543933019d2095ba7860b6040805160043581526024356020820152a180f35b610fc56024356139ef565b73dac17f958d2ee523a2206206994597c13d831ec7848416141580611575575b61156357610ff491369161312e565b905f80604051602081019063618c15ed60e11b82526020602482015261102f816110216044820189613182565b03601f1981018352826130f2565b5190305afa9161103d6131c7565b6040516370a0823160e01b815230600482015293602085602481878a165afa9485156112b9575f9561152f575b50156114da576060818051810103126112ad5760208101519061109b6060611094604084016138ed565b92016138ed565b91602435106114835785165f80516020613ec883398151915203611430578416848316036113d857604051636eb1769f60e11b8152306004820152736a000f20005980200259b80c510200304000106860248201526020816044815f80516020613ec88339815191525afa9081156112b9575f916113a6575b505f916111258392602435906131f6565b60405183806020830163095ea7b360e01b94858252736a000f20005980200259b80c51020030400010686024860152604485015260448452611166846130d7565b835190825f80516020613ec88339815191525af16111826131c7565b81611377575b5080611360575b15611317575b505060208151910182736a000f20005980200259b80c51020030400010685af16111bd6131c7565b50156112c4576020602493604051948580926370a0823160e01b825230600483015285165afa9283156112b9575f93611281575b506084356111ff83856131a6565b106112295761121461121a9261121f946131a6565b906136a9565b613901565b505f808080610f7b565b60405162461bcd60e51b815260206004820152602a60248201527f506172615377617043616c6c65723a20496e73756666696369656e74206f75746044820152691c1d5d08185b5bdd5b9d60b21b6064820152608490fd5b9092506020813d6020116112b1575b8161129d602093836130f2565b810103126112ad5751915f6111f1565b5f80fd5b3d9150611290565b6040513d5f823e3d90fd5b60405162461bcd60e51b815260206004820152602560248201527f506172615377617043616c6c65723a205377617020657865637574696f6e2066604482015264185a5b195960da1b6064820152608490fd5b61135461135992604051906020820152736a000f20005980200259b80c5102003040001068602482015285604482015260448152611354816130d7565b613c2a565b5f80611195565b505f80516020613ec88339815191523b151561118f565b805180159250821561138c575b50505f611188565b61139f925060208091830101910161335a565b5f80611384565b90506020813d6020116113d0575b816113c1602093836130f2565b810103126112ad57515f611114565b3d91506113b4565b60405162461bcd60e51b815260206004820152602a60248201527f506172615377617043616c6c65723a2044657374696e6174696f6e20746f6b656044820152690dc40dad2e6dac2e8c6d60b31b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f506172615377617043616c6c65723a20536f7572636520746f6b656e206d69736044820152640dac2e8c6d60db1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602960248201527f506172615377617043616c6c65723a20416d6f756e7420696e2065786365656460448201526873206d6178696d756d60b81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602760248201527f506172615377617043616c6c65723a20416e616c79736973207061796c6f61646044820152660819985a5b195960ca1b6064820152608490fd5b9094506020813d60201161155b575b8161154b602093836130f2565b810103126112ad5751935f61106a565b3d915061153e565b60405163fa789ab760e01b8152600490fd5b50734c9edd5852cd905f086c759e8383e09bff1e68b38484161415610fe5565b6115a0600435613901565b50610f73565b503461020d57602036600319011261020d576115c061301b565b6115c8613671565b6001600160a01b0381811691821561162e57600154604080516001600160a01b0394831685168152929093166020830152917fe2eeab472f89ac267be30e463da684fb96f56cc8e947839361fdf45bf6a3458e91a16001600160a01b0319161760015580f35b6040516001626bbab960e11b03198152600490fd5b503461020d578060031936011261020d576020604051670ca0f82db99b00008152f35b503461020d57602036600319011261020d57600435611683613671565b80156116c5577f4629147ebf0fea0171d6f68be1802a709922ce8bc6517788340afefe3e5e4c4360406003548151908152836020820152a16003554260045580f35b604051630508c93960e41b8152600490fd5b503461020d57604036600319011261020d576004356116f4613005565b6116fc613671565b6001600160a01b0381161561178d5760405163a9059cbb60e01b60208201526001600160a01b0382166024820152604481018390527f7d42df0246f8d64dd4141e75364becd6ac35190663e9c154d45540f40aaa4751929061176a906117658160648101611021565b613b7d565b604080519182526001600160a01b03909216602082015290819081015b0390a180f35b604051631e1d519560e01b8152600490fd5b503461020d57602036600319011261020d576004356117bc613671565b670ca0f82db99b00008111611803577f02031c4c2df2973e7486b6a36d69dedd71289217ca87e06b77fa412947cb040260406002548151908152836020820152a160025580f35b604051633e3591eb60e11b8152600490fd5b503461020d57604036600319011261020d5761182f61301b565b6024359061183b613671565b6001600160a01b0381161561178d5760405163a9059cbb60e01b81526001600160a01b038216600482015260248101839052916020836044818773f3e621395fc714b90da337aa9108771597b4e6965af192831561190b577fba56c3ab1f752776eef60db959a4e6b643e89595315edbbd945e104623fa03ba936118dc575b50604080519182526001600160a01b0390921660208201529081908101611787565b6118fd9060203d602011611904575b6118f581836130f2565b81019061335a565b505f6118ba565b503d6118eb565b6040513d86823e3d90fd5b503461020d578060031936011261020d576020604051739fd7466f987fd4c45a5bbde22ed8aba5bc8d72d18152f35b503461020d578060031936011261020d575f80516020613ea8833981519152546040516001600160a01b039091168152602090f35b503461020d57604036600319011261020d5761199461301b565b6001546001600160a01b0391602435918316330361039957835460405163a9059cbb60e01b60208201529084166001600160a01b03166024820152604480820184905281527fbd641e36a684e9917ba831e1a6fd82514a1d7b6bcc7703fa37a935a9e98d40f393611a129190611a0b6064836130f2565b8316613c55565b611a1e826003546131a6565b60035542600455604080516001600160a01b03909216825260208201929092529081908101611787565b503461020d578060031936011261020d5760206040515f80516020613ec88339815191528152f35b503461020d578060031936011261020d576040611a8b613203565b82519182526020820152f35b503461020d578060031936011261020d576020600254604051908152f35b503461020d578060031936011261020d57611ace613671565b5f80516020613ea883398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461020d57608036600319011261020d57611b38613005565b90604435906001600160401b03821161020d5750611b5a903690600401613164565b6001549091906001600160a01b03163303610399576001600160a01b03811673dac17f958d2ee523a2206206994597c13d831ec714158061217e575b611563576040515f806020830163618c15ed60e11b8152602493602085820152611bc781611021604482018a613182565b5190305afa92611bd56131c7565b6040516370a0823160e01b81523060048201529460208685815f80516020613ec88339815191525afa9586156112b9575f9661214a575b50156120f6576060818051810103126112ad57602081015190611c366060611094604084016138ed565b91600435106120a0576001600160a01b039081169085160361204e576001600160a01b03165f80516020613ec883398151915203611ff7576001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee148015611e66575b5f91829115611e60576004355b60208251920190736a000f20005980200259b80c51020030400010685af1611cc86131c7565b5015611e0e576040516370a0823160e01b81523060048201529060208282815f80516020613ec88339815191525afa9182156112b9575f92611dda575b50606435611d1385846131a6565b10611d8357506080611d486020947ffa2dda1cc1b86e41239702756b13effbc1a092b5c57e3ad320fbe4f3b13fe235936131a6565b604080516001600160a01b0390951685525f80516020613ec883398151915286860152600435908501526060840181905292a1604051908152f35b608490602a6040519162461bcd60e51b8352602060048401528201527f506172615377617043616c6c65723a20496e73756666696369656e74206f75746044820152691c1d5d08185b5bdd5b9d60b21b6064820152fd5b9091506020813d602011611e06575b81611df6602093836130f2565b810103126112ad5751905f611d05565b3d9150611de9565b60849060256040519162461bcd60e51b8352602060048401528201527f506172615377617043616c6c65723a205377617020657865637574696f6e2066604482015264185a5b195960da1b6064820152fd5b81611ca2565b604051636eb1769f60e11b8152306004820152736a000f20005980200259b80c51020030400010688482018190529291906020816044816001600160a01b038a165afa9081156112b9575f91611fbf575b50905f93611eca859493600435906131f6565b906040519085806020840163095ea7b360e01b95868252848c870152604486015260448552611ef8856130d7565b845190826001600160a01b038e165af1611f106131c7565b81611f90575b5080611f7d575b15611f2f575b50505091509150611c95565b611f7592611f66916040519160208301528982015286604482015260448152611f57816130d7565b6001600160a01b038a16613c55565b6001600160a01b038816613c55565b5f8080611f23565b506001600160a01b0389163b1515611f1d565b8051801592508215611fa5575b50505f611f16565b611fb8925060208091830101910161335a565b5f80611f9d565b929190506020833d602011611fef575b81611fdc602093836130f2565b810103126112ad5791519091905f611eb7565b3d9150611fcf565b60405162461bcd60e51b815260206004820152602a818401527f506172615377617043616c6c65723a2044657374696e6174696f6e20746f6b656044820152690dc40dad2e6dac2e8c6d60b31b6064820152608490fd5b60405162461bcd60e51b8152602060048201526025818501527f506172615377617043616c6c65723a20536f7572636520746f6b656e206d69736044820152640dac2e8c6d60db1b6064820152608490fd5b60405162461bcd60e51b8152602060048201526029818601527f506172615377617043616c6c65723a20416d6f756e7420696e2065786365656460448201526873206d6178696d756d60b81b6064820152608490fd5b60405162461bcd60e51b8152602060048201526027818501527f506172615377617043616c6c65723a20416e616c79736973207061796c6f61646044820152660819985a5b195960ca1b6064820152608490fd5b9095506020813d602011612176575b81612166602093836130f2565b810103126112ad5751945f611c0c565b3d9150612159565b506001600160a01b038116734c9edd5852cd905f086c759e8383e09bff1e68b31415611b96565b503461020d57604036600319011261020d576121bf61301b565b90546001600160a01b039160243591831633036122645761222b7f062da72b38d21d7e3e03c3fadd2657b56825f0daa8cede05226b526a3b05580193604051906323b872dd60e01b602083015233602483015230604483015284606483015260648252611a0b82613072565b612237826003546131f6565b60035542600455604080516001600160a01b039290921682526020820192909252a1602060405160018152f35b60405163edd7338f60e01b8152600490fd5b50346112ad576020806003193601126112ad576001600160401b03906004358281116112ad576122aa903690600401613045565b92907ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0093845460ff8160401c1615938116801590816127d2575b60011490816127c8575b1590816127bf575b506127ad5767ffffffffffffffff198116600117865560809183918561278e575b50810103126112ad5761232981613031565b612334848301613031565b91612346606060408301359201613031565b6001600160a01b0393841693929091908316670ca0f82db99b0000821161180357801561277c57841561162e5783600554163b61042f5761239190612389613b3c565b61025c613b3c565b5f6003556bffffffffffffffffffffffff60a01b9384600154161760015533845f5416175f556002554260045516906005541617600555730c9a3dd6b8f28529d72d7f9ce918d493519ee383803b156112ad57604051636a27f72d60e11b8152306004820152734f36bebf5ddb4b804f9c72644aee82bad165bffc602480830182905290916044905f81838183895af180156112b957612769575b50833b1561275a57876040516330da145b60e21b81523060048201528181848183733c75c170671acb394804dfaf63e4f9891c1216259a8b8a8401525af1801561275e57612746575b505060405190636eb1769f60e11b938483523060048401528084840152739fd7466f987fd4c45a5bbde22ed8aba5bc8d72d19088848481855afa9384156112b9575f94612717575b505f199182850180951161270457604051905f808c840163095ea7b360e01b98898252868b870152888601528785526124f5856130d7565b84519082855af1906125056131c7565b826126d1575b50816126c6575b501561269a575b505060405194855230600486015285848601525f80516020613ec88339815191529088868481855afa9586156112b9575f9661266b575b508501809511612658575f80604051968a88019086825289888a01528589015284885261257c886130d7565b87519082855af19061258c6131c7565b82612625575b508161261a575b50156125ed575b50505050506125ad578280f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29168ff000000000000000019815416905560405160018152a15f808280f35b612610946113549360405193898501528301525f818301528152611354816130d7565b5f808080806125a0565b90503b15155f612599565b809192505190898215928315612640575b505050905f612592565b612650935082018101910161335a565b5f8981612636565b83634e487b7160e01b5f5260116004525ffd5b9095508881813d8311612693575b61268381836130f2565b810103126112ad5751945f612550565b503d612679565b6117656126bf9260405190878d830152888201525f86820152858152611765816130d7565b5f80612519565b90503b15155f612512565b8091925051908c82159283156126ec575b505050905f61250b565b6126fc935082018101910161335a565b5f8c816126e2565b85634e487b7160e01b5f5260116004525ffd5b9093508881813d831161273f575b61272f81836130f2565b810103126112ad5751925f6124bd565b503d612725565b61274f9061308d565b61275a57875f612475565b8780fd5b6040513d84823e3d90fd5b61277491985061308d565b5f965f61242c565b604051630b5eba9f60e41b8152600490fd5b68ffffffffffffffffff1916680100000000000000011787555f612317565b60405163f92ee8a960e01b8152600490fd5b9050155f6122f6565b303b1591506122ee565b8591506122e4565b346112ad576020806003193601126112ad576001546001600160a01b0316330361039957604051636eb1769f60e11b815230600482015273e3490297a08d6fc8da46edb7b6142e4f461b62d36024820181905291734c9edd5852cd905f086c759e8383e09bff1e68b3918181604481865afa80156112b9575f90612926575b6128679150600435906131f6565b90604051925f8083860163095ea7b360e01b95868252886024890152604488015260448752612895876130d7565b86519082855af1906128a56131c7565b826128f3575b50816128e8575b50156128ba57005b6128e6936128e1926040519283015260248201525f6044820152604481526128e1816130d7565b613bf8565b005b90503b1515856128b2565b80919250519083821592831561290e575b50505090866128ab565b61291e935082018101910161335a565b868381612904565b508181813d831161294e575b61293c81836130f2565b810103126112ad576128679051612859565b503d612932565b346112ad576020806003193601126112ad5760015460043591906001600160a01b031633036103995760405163acb7081560e01b81526004810183905230602482015281816044815f733c75c170671acb394804dfaf63e4f9891c1216255af180156112b9576129ec575b507fa6ffc78a660e4971a47a0f916a0abae483804e6f42c9292ed06aa64f8fe4623091604051908152a1005b8190813d8311612a0f575b612a0181836130f2565b810103126112ad57826129c0565b503d6129f7565b346112ad575f3660031901126112ad57612a2e613671565b5f80808060018060a01b035f80516020613ea8833981519152541647905af1612a556131c7565b5015612a5d57005b604051631ea982a560e21b8152600490fd5b60403660031901126112ad57600435612a86613005565b60015490916001600160a01b0391821633036103995760405192612aa9846130bc565b6002845260209361060f60f31b8582015260405193612ac785613072565b61769f85528086860193168352604085019473eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8652606081019362030d4085526080820193845260405193636eb1769f60e11b855230600486015273fa9d7d4709716b90cd5013fd88fb17aeedd24bc493846024870152604498739fd7466f987fd4c45a5bbde22ed8aba5bc8d72d1938b888c81885afa9485156112b9578b8b968e9a5f91612d15575b50948a9b938a82946001600160401b03979463ffffffff9e612b8b8d612c2d9d9c6131f6565b91604051935f8084870163095ea7b360e01b968782528960248a015285890152848852612bb7886130d7565b87519082855af190612bc76131c7565b82612ce2575b5081612cd7575b5015612ca9575b50505050506040519e8f9c8d9b8c9b63a69559d160e01b8d5260048d0152604060248d01525116908a01525116606488015251166084860152511660a48401525160a060c484015260e4830190613182565b039134905af19182156112b9575f92612c79575b5060407f94a079855b54c8071cd62ee86b824387fdf793b4ab258d75febb04c8deba934a9181519081528385820152a1604051908152f35b9091508281813d8311612ca2575b612c9181836130f2565b810103126112ad5751906040612c41565b503d612c87565b612ccd94611765936040519384015260248301525f818301528152611765816130d7565b8a8f5f8f82612bdb565b90503b15155f612bd4565b809192505190848215928315612cfd575b505050905f612bcd565b612d0d935082018101910161335a565b5f8481612cf3565b949a929750505082819a9295949a3d8311612d57575b612d3581836130f2565b810103126112ad57905190978b978a959394919390928c9063ffffffff612b65565b503d612d2b565b346112ad5760403660031901126112ad576024356001600160401b0381116112ad57612da6612d9e612d97612daf933690600401613045565b369161312e565b600435613a7f565b90929192613ab9565b6005546001600160a01b03918216911603612de2576020630b135d3f60e11b5b6040516001600160e01b03199091168152f35b60205f612dcf565b346112ad575f3660031901126112ad5762127500612e0a600454426131a6565b116116c5576020600354604051908152f35b346112ad575f3660031901126112ad576020600354604051908152f35b346112ad5760403660031901126112ad57612e5261301b565b6001546001600160a01b0316330361039957612e73602091602435906136a9565b604051908152f35b346112ad575f3660031901126112ad576001546040516001600160a01b039091168152602090f35b346112ad5760403660031901126112ad57600435612ebf613005565b612ec7613671565b5f198214612f8b575b604051632d182be560e21b8152600481018390526001600160a01b03821660248201523060448201526020816064815f734f36bebf5ddb4b804f9c72644aee82bad165bffc5af180156112b957612f60575b50604080519283526001600160a01b039190911660208301527fd964a27d45f595739c13d8b1160b57491050cacf3a2e5602207277d6228f64ee91a1005b602090813d8311612f84575b612f7681836130f2565b810103126112ad5782612f22565b503d612f6c565b60405163ce96cb7760e01b8152306004820152909150602081602481734f36bebf5ddb4b804f9c72644aee82bad165bffc5afa9081156112b9575f91612fd3575b5090612ed0565b90506020813d602011612ffd575b81612fee602093836130f2565b810103126112ad575182612fcc565b3d9150612fe1565b602435906001600160a01b03821682036112ad57565b600435906001600160a01b03821682036112ad57565b35906001600160a01b03821682036112ad57565b9181601f840112156112ad578235916001600160401b0383116112ad57602083818601950101116112ad57565b60a081019081106001600160401b0382111761060757604052565b6001600160401b03811161060757604052565b61010081019081106001600160401b0382111761060757604052565b604081019081106001600160401b0382111761060757604052565b608081019081106001600160401b0382111761060757604052565b90601f801991011681019081106001600160401b0382111761060757604052565b6001600160401b03811161060757601f01601f191660200190565b92919261313a82613113565b9161314860405193846130f2565b8294818452818301116112ad578281602093845f960137010152565b9080601f830112156112ad5781602061317f9335910161312e565b90565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b919082039182116131b357565b634e487b7160e01b5f52601160045260245ffd5b3d156131f1573d906131d882613113565b916131e660405193846130f2565b82523d5f602084013e565b606090565b919082018092116131b357565b604080516370a0823160e01b81523060048201526020929190734f36bebf5ddb4b804f9c72644aee82bad165bffc908481602481855afa908115613350579085915f91613321575b5060248451809481936303d1689d60e11b835260048301525afa908115613317575f916132ea575b50815163d283e75f60e01b815230600482015290938082602481733c75c170671acb394804dfaf63e4f9891c1216255afa9283156132e157505f926132b757505090565b90809250813d83116132da575b6132ce81836130f2565b810103126112ad575190565b503d6132c4565b513d5f823e3d90fd5b90508381813d8311613310575b61330181836130f2565b810103126112ad57515f613273565b503d6132f7565b82513d5f823e3d90fd5b82819392503d8311613349575b61333881836130f2565b810103126112ad578490515f61324b565b503d61332e565b83513d5f823e3d90fd5b908160209103126112ad575180151581036112ad5790565b90916060828403126112ad576001600160401b039180358381116112ad578101610100818603126112ad57604051906133aa826130a0565b6133b381613031565b82526133c160208201613031565b602083015260408101356040830152606081013560608301526080810135608083015260a081013560a08301526133fa60c08201613031565b60c083015260e0810135908582116112ad5761341891879101613164565b60e08201529360208201359360408301359081116112ad5761317f9201613164565b8051156134475760200190565b634e487b7160e01b5f52603260045260245ffd5b818102929181159184041417156131b357565b8115613478570490565b634e487b7160e01b5f52601260045260245ffd5b613494613203565b90604051632b9a19db60e21b91828252620f424092836004840152739fd7466f987fd4c45a5bbde22ed8aba5bc8d72d160248401526103489182604485015260209373360204d8e924eb04045af63b3ed36c1db6bd333d938582606481885afa9384156112b95786925f956135cd575b50606490604051968793849283528a60048401525f80516020613ec8833981519152602484015260448301525afa9283156112b95785945f94613596575b505061355993916135529161345b565b049361345b565b04908061356d5750505f905b816002541190565b670de0b6b3a7640000918281029281840414901517156131b3576135909161346e565b90613565565b819550809294503d83116135c6575b6135af81836130f2565b810103126112ad5791518392909181613552613542565b503d6135a5565b8381949296503d83116135f9575b6135e581836130f2565b810103126112ad5760648692519490613504565b503d6135db565b6001600160a01b03908116908115613659575f80516020613ea883398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b604051631e4fbdf760e01b81525f6004820152602490fd5b5f80516020613ea8833981519152546001600160a01b0316330361369157565b60405163118cdaa760e01b8152336004820152602490fd5b620f42408083029083820414831517156131b35760408051634104b9ed60e11b81526001600160a01b03909316600484018190529093909260209283826024817378e3ac5bf48dcaf1835e7f9861542c0d43d0b03e5afa9081156138e3575f916138b2575b613718925061346e565b90845190636eb1769f60e11b8252306004830152739fd7466f987fd4c45a5bbde22ed8aba5bc8d72d1806024840152604492858185818a5afa80156138a85783905f90613877575b61376a92506131f6565b908751905f8088840163095ea7b360e01b9586825284602487015288860152878552613795856130d7565b845190828c5af16137a46131c7565b81613847575b508061383d575b15613804575b505050855194630efe6a8b60e01b86526004860152602485015283015280826064815f73fa9d7d4709716b90cd5013fd88fb17aeedd24bc45af19283156132e157505f926132b757505090565b6138359261382f918a51918983015260248201525f86820152858152613829816130d7565b88613c55565b86613c55565b5f80806137b7565b50873b15156137b1565b8051801592508990831561385f575b5050505f6137aa565b61386f935082018101910161335a565b5f8881613856565b50508581813d83116138a1575b61388e81836130f2565b810103126112ad578261376a9151613760565b503d613884565b88513d5f823e3d90fd5b90508382813d83116138dc575b6138c981836130f2565b810103126112ad5761371891519061370e565b503d6138bf565b86513d5f823e3d90fd5b51906001600160a01b03821682036112ad57565b5f198114613977575b604051636e553f6560e01b815260048101919091523060248201526020816044815f734f36bebf5ddb4b804f9c72644aee82bad165bffc5af19081156112b9575f91613954575090565b90506020813d60201161396f575b816132ce602093836130f2565b3d9150613962565b506040516370a0823160e01b8152306004820152602081602481739fd7466f987fd4c45a5bbde22ed8aba5bc8d72d15afa9081156112b9575f916139bc575b5061390a565b90506020813d6020116139e7575b816139d7602093836130f2565b810103126112ad575160206139b6565b3d91506139ca565b604051630967fa2960e31b815260048101919091523060248201526020816044815f733c75c170671acb394804dfaf63e4f9891c1216255af180156112b957613a355750565b602090813d8311613a55575b613a4b81836130f2565b810103126112ad57565b503d613a41565b613a6461348c565b905015613a6d57565b6040516348bce5fd60e11b8152600490fd5b8151919060418303613aaf57613aa89250602082015190606060408401519301515f1a90613c7d565b9192909190565b50505f9160029190565b6004811015613b285780613acb575050565b60018103613ae55760405163f645eedf60e01b8152600490fd5b60028103613b065760405163fce698f760e01b815260048101839052602490fd5b600314613b105750565b602490604051906335e2f38360e21b82526004820152fd5b634e487b7160e01b5f52602160045260245ffd5b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c1615613b6b57565b604051631afcd79f60e31b8152600490fd5b613baf5f8083516020739fd7466f987fd4c45a5bbde22ed8aba5bc8d72d1950182865af1613ba96131c7565b90613cff565b8051908115159182613bdd575b5050613bc55750565b60249060405190635274afe760e01b82526004820152fd5b613bf0925060208091830101910161335a565b155f80613bbc565b613baf5f8083516020734c9edd5852cd905f086c759e8383e09bff1e68b3950182865af1613c246131c7565b90613d82565b613baf5f80835160205f80516020613ec8833981519152950182865af1613c4f6131c7565b90613df3565b5f80613baf9260018060a01b03169360208151910182865af1613c766131c7565b9083613e56565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411613cf4579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156112b9575f516001600160a01b03811615613cea57905f905f90565b505f906001905f90565b5050505f9160039190565b909190613d285750805115613d1657805190602001fd5b604051630a12f52160e11b8152600490fd5b9080511580613d65575b613d395790565b604051639996b31560e01b8152739fd7466f987fd4c45a5bbde22ed8aba5bc8d72d16004820152602490fd5b50739fd7466f987fd4c45a5bbde22ed8aba5bc8d72d13b15613d32565b909190613d995750805115613d1657805190602001fd5b9080511580613dd6575b613daa5790565b604051639996b31560e01b8152734c9edd5852cd905f086c759e8383e09bff1e68b36004820152602490fd5b50734c9edd5852cd905f086c759e8383e09bff1e68b33b15613da3565b909190613e0a5750805115613d1657805190602001fd5b9080511580613e40575b613e1b5790565b604051639996b31560e01b81525f80516020613ec88339815191526004820152602490fd5b505f80516020613ec88339815191523b15613e14565b90613e6b5750805115613d1657805190602001fd5b81511580613e9e575b613e7c575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b15613e7456fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48a2646970667358221220b3419ca38aa1477e0ca2c8556896cd869f7613f4720f7bb7f89084d8f4c96b5864736f6c63430008190033