0 txs
0 calls
constructor
constructor(address _wiseLendingAddress, address _pendleChildTokenAddress, address _pendleRouter, address _entryAsset, address _pendleSy, address _underlyingMarket, address _routerStatic, address _dexAddress, uint256 _collateralFactor, address _powerFarmNFTs)
functions
AAVE_HUB
viewfunction AAVE_HUB() view returns (address)
allowEnter
viewfunction allowEnter() view returns (bool)
associatedPt
viewfunction associatedPt() view returns (address)
associatedYt
viewfunction associatedYt() view returns (address)
availableNFTCount
viewfunction availableNFTCount() view returns (uint256)
availableNFTs
viewfunction availableNFTs(uint256) view returns (uint256)
collateralFactor
viewfunction collateralFactor() view returns (uint256)
collateralFactorRole
viewfunction collateralFactorRole() view returns (address)
FARM_ASSET
viewfunction FARM_ASSET() view returns (address)
farmData
viewfunction farmData(uint256) view returns (uint256 wiseLendingNFT, uint256 leverage, uint256 amount, uint256 amountAfterMintFee, uint256 timestamp)
farmingKeys
viewfunction farmingKeys(uint256) view returns (uint256)
getLeverageAmount
purefunction getLeverageAmount(uint256 _initialAmount, uint256 _leverage) pure returns (uint256)
getLiveDebtRatio
viewfunction getLiveDebtRatio(uint256 _nftId) view returns (uint256)
getNewBorrowRate
viewfunction getNewBorrowRate(uint256 _borrowAmount, bool _isAave) view returns (uint256)
getPositionBorrowETH
viewfunction getPositionBorrowETH(uint256 _nftId) view returns (uint256)
getTokenAmountEquivalentInFarmAsset
viewfunction getTokenAmountEquivalentInFarmAsset(uint256 _nftId) view returns (uint256)
getTotalWeightedCollateralETH
viewfunction getTotalWeightedCollateralETH(uint256 _nftId) view returns (uint256)
isAave
viewfunction isAave(uint256) view returns (bool)
isOwner
viewfunction isOwner(uint256 _keyId, address _owner) view returns (bool)
isPt
viewfunction isPt() view returns (bool)
isShutdown
viewfunction isShutdown() view returns (bool)
master
viewfunction master() view returns (address)
MAX_LEVERAGE
viewfunction MAX_LEVERAGE() view returns (uint256)
minDepositEthAmount
viewfunction minDepositEthAmount() view returns (uint256)
PENDLE_CHILD
viewfunction PENDLE_CHILD() view returns (address)
PENDLE_LIMIT_ROUTER_ADDRESS
viewfunction PENDLE_LIMIT_ROUTER_ADDRESS() view returns (address)
PENDLE_MARKET
viewfunction PENDLE_MARKET() view returns (address)
PENDLE_ROUTER
viewfunction PENDLE_ROUTER() view returns (address)
PENDLE_SY
viewfunction PENDLE_SY() view returns (address)
POOL_ASSET_AAVE
viewfunction POOL_ASSET_AAVE() view returns (address)
proposedMaster
viewfunction proposedMaster() view returns (address)
PT_ORACLE_PENDLE
viewfunction PT_ORACLE_PENDLE() view returns (address)
reservedKeys
viewfunction reservedKeys(address) view returns (uint256)
sendingProgress
viewfunction sendingProgress() view returns (bool)
specialDepegCase
viewfunction specialDepegCase() view returns (bool)
totalMinted
viewfunction totalMinted() view returns (uint256)
totalReserved
viewfunction totalReserved() view returns (uint256)
UNISWAP_V2_POOL
viewfunction UNISWAP_V2_POOL() view returns (address)
UNISWAP_V3_POOL
viewfunction UNISWAP_V3_POOL() view returns (address)
UNISWAP_V3_ROUTER
viewfunction UNISWAP_V3_ROUTER() view returns (address)
whiteListedExternalContracts
viewfunction whiteListedExternalContracts(address) view returns (bool)
WISE_LENDING
viewfunction WISE_LENDING() view returns (address)
WISE_POOL
viewfunction WISE_POOL() view returns (address)
changeMinDeposit
nonpayablefunction changeMinDeposit(uint256 _newMinDeposit)
changePendleRouter
nonpayablefunction changePendleRouter(address _newPendleRouter, address _newLimitRouter)
changeUniV2Pool
nonpayablefunction changeUniV2Pool(address _univ2Pool)
changeUniV3Pool
nonpayablefunction changeUniV3Pool(address _uniV3Pool)
claimOwnership
nonpayablefunction claimOwnership()
enterFarm
nonpayablefunction enterFarm(bytes _callData, bool _isAave, uint256 _amount, uint256 _leverage, uint256 _allowedSpread) returns (uint256)
enterFarmETH
payablefunction enterFarmETH(bytes _callData, bool _isAave, uint256 _leverage, uint256 _allowedSpread) payable returns (uint256)
exitFarm
nonpayablefunction exitFarm(bytes _callData, uint256 _keyId, uint256 _allowedSpread, bool _ethBack)
initiliaze
nonpayablefunction initiliaze(address _wethAddress)
liquidatePartiallyFromToken
nonpayablefunction liquidatePartiallyFromToken(uint256 _nftId, uint256 _nftIdLiquidator, uint256 _shareAmountToPay) returns (uint256 paybackAmount, uint256 receivingAmount)
manuallyPaybackShares
nonpayablefunction manuallyPaybackShares(uint256 _keyId, uint256 _paybackShares)
manuallyWithdrawShares
nonpayablefunction manuallyWithdrawShares(uint256 _keyId, uint256 _withdrawShares)
mintReserved
nonpayablefunction mintReserved() returns (uint256)
onERC721Received
nonpayablefunction onERC721Received(address _operator, address _from, uint256 _tokenId, bytes _data) returns (bytes4)
proposeOwner
nonpayablefunction proposeOwner(address _proposedOwner)
receiveFlashLoan
nonpayablefunction receiveFlashLoan(address[] _flashloanToken, uint256[] _flashloanAmounts, uint256[] _feeAmounts, bytes _userData)
renounceOwnership
nonpayablefunction renounceOwnership()
revokeCollateralFactorRole
nonpayablefunction revokeCollateralFactorRole()
setCollateralFactor
nonpayablefunction setCollateralFactor(uint256 _newCollateralFactor)
setSpecialDepegCase
nonpayablefunction setSpecialDepegCase(bool _state)
setWhiteListForContracts
nonpayablefunction setWhiteListForContracts(address[] _whiteList, bool[] _isWhiteListed)
shutDownFarm
nonpayablefunction shutDownFarm(bool _state)
uniswapV2Call
nonpayablefunction uniswapV2Call(address sender, uint256 amount0, uint256 amount1, bytes data)
uniswapV3FlashCallback
nonpayablefunction uniswapV3FlashCallback(uint256 _fee0, uint256 _fee1, bytes _data)
events
ERC721Received
event ERC721Received(address operator, address from, uint256 tokenId, bytes _data)
FarmEntry
event FarmEntry(uint256 indexed keyId, uint256 indexed wiseLendingNFT, uint256 indexed leverage, uint256 amount, uint256 amountAfterMintFee, uint256 timestamp)
FarmExit
event FarmExit(uint256 indexed keyId, uint256 indexed wiseLendingNFT, uint256 amount, uint256 timestamp)
FarmStatus
event FarmStatus(bool indexed state, uint256 timestamp)
ManualPaybackShares
event ManualPaybackShares(uint256 indexed keyId, uint256 indexed wiseLendingNFT, uint256 amount, uint256 timestamp)
ManualWithdrawShares
event ManualWithdrawShares(uint256 indexed keyId, uint256 indexed wiseLendingNFT, uint256 amount, uint256 timestamp)
MasterProposed
event MasterProposed(address indexed proposer, address indexed proposedMaster)
MinDepositChange
event MinDepositChange(uint256 minDepositEthAmount, uint256 timestamp)
RegistrationFarm
event RegistrationFarm(uint256 nftId, uint256 timestamp)
RenouncedOwnership
event RenouncedOwnership(address indexed previousMaster)
errors
AlreadyInitializedWeth
error AlreadyInitializedWeth(address WETH)
AlreadyReserved
error AlreadyReserved()
AmountTooSmall
error AmountTooSmall()
BadDebt
error BadDebt(uint256 amount)
CallFailed
error CallFailed()
DebtRatioTooHigh
error DebtRatioTooHigh()
GenericAccessDenied
error GenericAccessDenied()
GenericAmountTooSmall
error GenericAmountTooSmall()
GenericDebtRatioTooHigh
error GenericDebtRatioTooHigh()
GenericDebtRatioTooLow
error GenericDebtRatioTooLow()
GenericInvalidParam
error GenericInvalidParam()
GenericLevergeTooHigh
error GenericLevergeTooHigh()
GenericNotBalancerVaultOrSelf
error GenericNotBalancerVaultOrSelf()
GenericNotSender
error GenericNotSender()
GenericNotV2Pair
error GenericNotV2Pair(address, address)
GenericNotV3Pair
error GenericNotV3Pair(address, address)
GenericSendingOnGoing
error GenericSendingOnGoing()
GenericTooManyShares
error GenericTooManyShares()
InvalidKey
error InvalidKey()
NotMaster
error NotMaster()
NotProposed
error NotProposed()
NoValue
error NoValue()
SendValueFailed
error SendValueFailed()
TooMuchValueLost
error TooMuchValueLost()
creation bytecode
0x60806040526064610019670de0b6b3a76400006060610aa1565b6100239190610aca565b600555610039670de0b6b3a7640000600f610aa1565b602455348015610047575f5ffd5b5060405161591438038061591483398101604081905261006691610b04565b8989898989898989898989898989898989898989808a8a8a8a8a8a8a8a8a60016001600160a01b038a1615151461009d575f6100fd565b886001600160a01b031663040141e56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100fd9190610bb1565b338061011c5760405163f2365b5b60e01b815260040160405180910390fd5b5f80546001600160a01b03199081166001600160a01b039384161790915560028054909116928216929092179091558916156106c957601a80546001600160a01b03199081166001600160a01b03868116919091179092556019805482168784161790556017805482168884161790556018805482168a841617905560138054909116918416919091179055465f19016101d757601680546001600160a01b031916735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f1790555b600980546001600160a01b038089166001600160a01b031992831617909255600a80548b84169083168117909155600b805483169091179055600e8054928c16929091168217905560408051637cc97da560e01b81529051637cc97da5916004808201926020929091908290030181865afa158015610258573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061027c9190610bb1565b600f80546001600160a01b039283166001600160a01b0319918216179091556011805490911673ba12222222228d8ba445958a75a0704d566bf2c8179055600e5460408051630f9f234d60e01b815290519190921691630f9f234d9160048083019260209291908290030181865afa1580156102fa573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031e9190610bb1565b601080546001600160a01b0319166001600160a01b03928316179055600e546040805163040141e560e01b81529051919092169163040141e59160048083019260209291908290030181865afa15801561037a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061039e9190610bb1565b601c80546001600160a01b0319166001600160a01b039283161790556010546040805163730e695d60e01b81529051919092169163730e695d9160048083019260209291908290030181865afa1580156103fa573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061041e9190610bb1565b600d80546001600160a01b0319166001600160a01b039290921691821790556040805163205d6b8760e21b81529051638175ae1c916004808201926020929091908290030181865afa158015610476573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049a9190610bb1565b601d80546001600160a01b039283166001600160a01b03199182168117909255600c80548216909217909155600d54601e8054909216908316179055600e5460408051637c854ec760e01b815290519190921691637c854ec79160048083019260209291908290030181865afa158015610516573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061053a9190610bb1565b601280546001600160a01b0319166001600160a01b039283161790556003829055600d546040805163040141e560e01b815290519190921691634d8e459791839163040141e59160048083019260209291908290030181865afa1580156105a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c79190610bb1565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610609573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062d9190610bb1565b601f80546001600160a01b03929092166001600160a01b0319928316179055601b80548216731fd95db7b7c0067de8d45c0cb35d59796adfd187179055600880549091166dc9b3e2c3ec88b1b4c0cd853f4321179055666a94d74f4300006004555f1946016106c9576729a2241af62c0000600455601b80546001600160a01b0319167366a1096c6366b2529274df4f5d8247827fe4cea81790555b5050505050505050508060285f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505050505050505050505f6001600160a01b03168a6001600160a01b03161461072f57602080546001600160a01b031916331790555b505050505050505050503360205f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550601c5f9054906101000a90046001600160a01b031660065f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550601f5f9054906101000a90046001600160a01b031660075f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506107e28a6107f160201b60201c565b50505050505050505050610c06565b6020545f90600160a81b900460ff16151560011461081a57600a546001600160a01b0316610827565b6025546001600160a01b03165b905061083581835f1961097d565b602054600160a81b900460ff16151560011461085c576019546001600160a01b0316610869565b6025546001600160a01b03165b600754909150610884906001600160a01b0316835f1961097d565b6006546008546108a2916001600160a01b0390811691165f1961097d565b6008546108bb9082906001600160a01b03165f1961097d565b6018546108d49082906001600160a01b03165f1961097d565b602054600160a81b900460ff1615155f0361090757601954600a54610907916001600160a01b0390811691165f1961097d565b60065461091f906001600160a01b0316835f1961097d565b600654600d5461093d916001600160a01b0390811691165f1961097d565b60065460185461095b916001600160a01b0390811691165f1961097d565b602654601854610979916001600160a01b0390811691165f1961097d565b5050565b6001600160a01b03821661099057505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b179091526109e69185916109ec16565b50505050565b5f5f5f846001600160a01b031684604051610a079190610bd1565b5f604051808303815f865af19150503d805f8114610a40576040519150601f19603f3d011682016040523d82523d5f602084013e610a45565b606091505b50915091505f81515f1480610a69575081806020019051810190610a699190610be7565b90508215155f03610a78575f5ffd5b828015610a825750805b8015610a9757505f866001600160a01b03163b115b9695505050505050565b8082028115828204841417610ac457634e487b7160e01b5f52601160045260245ffd5b92915050565b5f82610ae457634e487b7160e01b5f52601260045260245ffd5b500490565b80516001600160a01b0381168114610aff575f5ffd5b919050565b5f5f5f5f5f5f5f5f5f5f6101408b8d031215610b1e575f5ffd5b610b278b610ae9565b9950610b3560208c01610ae9565b9850610b4360408c01610ae9565b9750610b5160608c01610ae9565b9650610b5f60808c01610ae9565b9550610b6d60a08c01610ae9565b9450610b7b60c08c01610ae9565b9350610b8960e08c01610ae9565b92506101008b01519150610ba06101208c01610ae9565b90509295989b9194979a5092959850565b5f60208284031215610bc1575f5ffd5b610bca82610ae9565b9392505050565b5f82518060208501845e5f920191825250919050565b5f60208284031215610bf7575f5ffd5b81518015158114610bca575f5ffd5b614d0180610c135f395ff3fe6080604052600436106102f6575f3560e01c8063019dbb631461035957806302eb092a1461038e57806303926baf146103ba5780630764b9af146103d95780630f61ac82146103f857806310d1e85c14610417578063150b7a02146104365780631bb288e71461046e5780631e183b7a1461049b57806323a3c5af146104ba57806326f4e37d146104da57806327a4986b146104f95780632c5ebc831461052457806331418fb614610543578063328132a21461056257806338271bf6146105815780633c97b00d146105af57806341c64a2f146105ce57806344b6b11c146105ed5780634b2a12da1461060c5780634cacc9371461062b5780634e71e0c81461064a5780634f3823d11461065e578063525fbf211461067d57806359adab9e1461069c5780635a5d096c146106af5780635aa6d763146106ce5780635ba6b948146106ed5780636016f12d1461070c578063614b57c31461072c5780636195af6a1461074b578063627ba5c514610779578063715018a614610798578063730e695d146107ac57806376c4b7db146107cb57806377314b37146107e0578063798501a9146107ff57806385dfb4891461081e5780639532ba85146108495780639a8a8c53146108695780639b45ec97146108965780639ef2e82d146108ab5780639f29e7e0146108ca5780639f6cb4dd146108e9578063a1c44ae014610908578063a2309ff814610927578063a799566c1461093c578063a96bb61114610950578063b56453e41461096f578063b5c221571461098e578063b5ed298a146109ad578063b68e65a8146109cc578063bb62efbc146109eb578063bf86d69014610a0a578063c27d98fc14610a2a578063c71b0e1c14610a49578063c7aebf5114610a5e578063ca3a341a14610a73578063d18f838f14610a92578063d3573a3314610b02578063d653a1f514610b21578063df011c4114610b40578063e9b2e0d714610b55578063e9cbafb014610b80578063ec8c890414610b9f578063ee97f7f314610bb3578063f04f270714610bd1575f5ffd5b3661035557601c546001600160a01b0316330361030f57005b600254600160a01b900460ff16151560010361033e57604051631976c42360e01b815260040160405180910390fd5b5f54610353906001600160a01b031634610bf0565b005b5f5ffd5b348015610364575f5ffd5b5060025461037990600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b348015610399575f5ffd5b50600a546103ad906001600160a01b031681565b6040516103859190614021565b3480156103c5575f5ffd5b506103536103d4366004614049565b610ca9565b3480156103e4575f5ffd5b506008546103ad906001600160a01b031681565b348015610403575f5ffd5b506019546103ad906001600160a01b031681565b348015610422575f5ffd5b506103536104313660046140a8565b610cdd565b348015610441575f5ffd5b5061045561045036600461410c565b610fe9565b6040516001600160e01b03199091168152602001610385565b348015610479575f5ffd5b5061048d61048836600461415c565b61103b565b604051908152602001610385565b3480156104a6575f5ffd5b506103536104b5366004614180565b6110ac565b3480156104c5575f5ffd5b5060205461037990600160a81b900460ff1681565b3480156104e5575f5ffd5b506103536104f4366004614180565b6110d2565b348015610504575f5ffd5b5061048d61051336600461415c565b602c6020525f908152604090205481565b34801561052f575f5ffd5b506006546103ad906001600160a01b031681565b34801561054e575f5ffd5b5061035361055d36600461419b565b61112d565b34801561056d575f5ffd5b506026546103ad906001600160a01b031681565b34801561058c575f5ffd5b5061037961059b366004614049565b60236020525f908152604090205460ff1681565b3480156105ba575f5ffd5b506018546103ad906001600160a01b031681565b3480156105d9575f5ffd5b506013546103ad906001600160a01b031681565b3480156105f8575f5ffd5b506015546103ad906001600160a01b031681565b348015610617575f5ffd5b5061035361062636600461415c565b611174565b348015610636575f5ffd5b506103536106453660046141d2565b6111be565b348015610655575f5ffd5b5061035361123e565b348015610669575f5ffd5b506007546103ad906001600160a01b031681565b348015610688575f5ffd5b5061048d61069736600461415c565b611259565b61048d6106aa3660046142ae565b611303565b3480156106ba575f5ffd5b506103796106c9366004614308565b61134b565b3480156106d9575f5ffd5b5061048d6106e836600461432b565b6113fd565b3480156106f8575f5ffd5b506103536107073660046141d2565b611455565b348015610717575f5ffd5b5060025461037990600160b01b900460ff1681565b348015610737575f5ffd5b506025546103ad906001600160a01b031681565b348015610756575f5ffd5b5061037961076536600461415c565b60226020525f908152604090205460ff1681565b348015610784575f5ffd5b5061035361079336600461441f565b6114fa565b3480156107a3575f5ffd5b5061035361157b565b3480156107b7575f5ffd5b50600d546103ad906001600160a01b031681565b3480156107d6575f5ffd5b5061048d602b5481565b3480156107eb575f5ffd5b506103536107fa3660046144e2565b6115c7565b34801561080a575f5ffd5b5061048d610819366004614540565b61170e565b348015610829575f5ffd5b5061048d610838366004614049565b602d6020525f908152604090205481565b348015610854575f5ffd5b5060205461037990600160b01b900460ff1681565b348015610874575f5ffd5b50610888610883366004614563565b611720565b60405161038592919061458c565b3480156108a1575f5ffd5b5061048d60245481565b3480156108b6575f5ffd5b50601b546103ad906001600160a01b031681565b3480156108d5575f5ffd5b506020546103ad906001600160a01b031681565b3480156108f4575f5ffd5b50610353610903366004614049565b611751565b348015610913575f5ffd5b5061048d6109223660046141d2565b61177b565b348015610932575f5ffd5b5061048d60295481565b348015610947575f5ffd5b50610353611799565b34801561095b575f5ffd5b5061048d61096a36600461415c565b6117b3565b34801561097a575f5ffd5b50600e546103ad906001600160a01b031681565b348015610999575f5ffd5b506103536109a836600461415c565b611835565b3480156109b8575f5ffd5b506103536109c7366004614049565b611842565b3480156109d7575f5ffd5b50602f546103ad906001600160a01b031681565b3480156109f6575f5ffd5b506017546103ad906001600160a01b031681565b348015610a15575f5ffd5b5060025461037990600160a81b900460ff1681565b348015610a35575f5ffd5b506014546103ad906001600160a01b031681565b348015610a54575f5ffd5b5061048d602a5481565b348015610a69575f5ffd5b5061048d60045481565b348015610a7e575f5ffd5b5061048d610a8d36600461415c565b6118bc565b348015610a9d575f5ffd5b50610ada610aac36600461415c565b60216020525f9081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a001610385565b348015610b0d575f5ffd5b506001546103ad906001600160a01b031681565b348015610b2c575f5ffd5b50610353610b3b366004614049565b61195c565b348015610b4b575f5ffd5b5061048d60035481565b348015610b60575f5ffd5b5061048d610b6f36600461415c565b602e6020525f908152604090205481565b348015610b8b575f5ffd5b50610353610b9a36600461459a565b6119ae565b348015610baa575f5ffd5b5061048d611b63565b348015610bbe575f5ffd5b505f546103ad906001600160a01b031681565b348015610bdc575f5ffd5b50610353610beb366004614643565b611b83565b80471015610c115760405163617ab12d60e11b815260040160405180910390fd5b6002805460ff60a01b1916600160a01b1790556040515f906001600160a01b0384169083908381818185875af1925050503d805f8114610c6c576040519150601f19603f3d011682016040523d82523d5f602084013e610c71565b606091505b50506002805460ff60a01b1916905590508015155f03610ca45760405163120086e360e11b815260040160405180910390fd5b505050565b610cb1611bf5565b601480546001600160a01b039092166001600160a01b03199283168117909155602f8054909216179055565b5f336001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3e9190614758565b90505f336001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d7d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610da19190614758565b60165460405163e6a4390560e01b81529192505f916001600160a01b039091169063e6a4390590610dd89086908690600401614773565b602060405180830381865afa158015610df3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e179190614758565b6014549091506001600160a01b03163314610e5257338160405163d36d48d360e01b8152600401610e49929190614773565b60405180910390fd5b6001600160a01b0388163014610e7b5760405163d949d27360e01b815260040160405180910390fd5b6040805160018082528183019092525f9160208083019080368337505060065482519293506001600160a01b0316918391505f90610ebb57610ebb61478d565b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092525f918160200160208202803683370190505090508815610f035788610f05565b875b815f81518110610f1757610f1761478d565b60209081029190910101526040805160018082528183019092525f91816020016020820280368337019050509050610f67825f81518110610f5a57610f5a61478d565b6020026020010151611c21565b815f81518110610f7957610f7961478d565b602090810291909101015260405163f04f270760e01b8152309063f04f270790610faf908690869086908e908e9060040161483c565b5f604051808303815f87803b158015610fc6575f5ffd5b505af1158015610fd8573d5f5f3e3d5ffd5b505050505050505050505050505050565b5f7fa05d90f300156ad1b545bc5d8197024456f21d22a708f5af04dd293e3d6052518686868686604051611021959493929190614889565b60405180910390a150630a85bd0160e11b95945050505050565b5f670de0b6b3a7640000600354611092602060159054906101000a900460ff161515600115151461107757600a546001600160a01b0316611084565b6025546001600160a01b03165b61108d86611c51565b611c9c565b61109c91906148d0565b6110a691906148e7565b92915050565b6110b4611bf5565b60208054911515600160b01b0260ff60b01b19909216919091179055565b6110da611bf5565b6002805460ff60a81b1916600160a81b831515908102919091179091556040514281527fb9c62307336e3148a6afd10d350797a6544eb07ddfb98cf05f49a4cd55d863639060200160405180910390a250565b611135611bf5565b601880546001600160a01b038085166001600160a01b031992831617909255600880548484169216919091179055600e546111709116611d0d565b5050565b61117c611bf5565b60048190556040517f6d41ef415406b2fbd2e8e6c2fa40f471038209962c13e3e9280a9bdf3219983c906111b3908390429061458c565b60405180910390a150565b6111c6611e95565b6111ce611ead565b6111d6612008565b5f828152602c60205260409020546111ee9082612083565b602c5f8381526020019081526020015f2054827fa30b3c2ccf1776c70e08f1e8f7d7eb571fe975803f15f61c7526e7947d7504ff834260405161123292919061458c565b60405180910390a35050565b6112466120de565b5f80546001600160a01b03191633179055565b5f5f6112a0602060159054906101000a900460ff161515600115151461128a57600a546001600160a01b0316611297565b6025546001600160a01b03165b61108d85611c51565b90505f6112ac846118bc565b9050808210156112dc576112c08282614906565b604051631309868760e11b8152600401610e4991815260200190565b6006546112fb906001600160a01b03166112f68385614906565b61210b565b949350505050565b5f61130c611e95565b61131461213d565b61131c611ead565b611324612008565b61132d34612153565b611342858561133a6121ba565b3487876122cf565b95945050505050565b6001600160a01b0381165f908152602d6020526040812054839003611372575060016110a6565b6028546040516331a9108f60e11b8152600481018590526001600160a01b03848116921690636352211e90602401602060405180830381865afa1580156113bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113df9190614758565b6001600160a01b0316036113f5575060016110a6565b505f92915050565b5f611406611e95565b61140e61213d565b611416611ead565b61141e612008565b600654611436906001600160a01b03163330876122f5565b61144b86866114436121ba565b8787876122cf565b9695505050505050565b61145d611e95565b611465611ead565b61146d612008565b8161147781612367565b5f838152602c602052604090205461148f8184612381565b6114988161244e565b15155f036114b957604051632595e55760e21b815260040160405180910390fd5b80847f54f4c57f40abbe4603bbaf72e5e1d421b094a958865111157f36f674a40cd69a85426040516114ec92919061458c565b60405180910390a350505050565b611502611bf5565b5f5b8251811015610ca45761157360238483815181106115245761152461478d565b602002602001015184848151811061153e5761153e61478d565b60200260200101516001600160a01b039091165f9081526020929092526040909120805491151560ff19909216919091179055565b600101611504565b611583611bf5565b5f80546001600160a01b0319908116825560018054909116905560405133917f6172baf984ea013d88b784409f46655b96ba7f2ff91bca1ac9bcd27b113e6eb091a2565b6115cf611e95565b6115d7611ead565b6115df612008565b826115e981612367565b5f848152602c60209081526040808320805490849055338452602d9092529091205485900361162657335f908152602d6020526040812055611680565b6028546040516390901aa360e01b8152600481018790526001600160a01b03909116906390901aa3906024015f604051808303815f87803b158015611669575f5ffd5b505af115801561167b573d5f5f3e3d5ffd5b505050505b80602e5f602b5f815461169290614919565b9182905550815260208082019290925260409081015f9081209390935583835260229091529020546116cb90879060ff168387876124a9565b80857f79b2e2d00a00811102e4c45a3a4d9866abcbe9f9471572632098aab13aedb52a86426040516116fe92919061458c565b60405180910390a3505050505050565b5f611719838361250b565b9392505050565b5f5f61172a611e95565b611732611ead565b61173a612008565b6117458585856126d8565b91509150935093915050565b611759611bf5565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b5f670de0b6b3a764000061178f83856148d0565b61171991906148e7565b6117a16128bb565b602080546001600160a01b0319169055565b5f81815260226020526040812054819060ff166117d8576117d3836128d3565b6117e1565b6117e183612949565b9050805f036117f257505f92915050565b5f6117fc8461103b565b9050805f0361180e57505f9392505050565b80670de0b6b3a7640000611821866118bc565b61182b91906148d0565b6112fb91906148e7565b61183d6128bb565b600355565b61184a611bf5565b6001600160a01b0381166118715760405163f2365b5b60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b03831690811790915560405133907f322fd6444c59daffa82e4689b7685b6fafc6109a1eff8a6ca10c5a8e3206cda1905f90a350565b5f5f5f6118c8846128d3565b905080156118dc576118d984612980565b91505b5f6118e685612949565b90505f81156118fb576118f8866129b2565b90505b5f831561191b57600654611918906001600160a01b031686611c9c565b90505b815f0361192c579695505050505050565b6007545f90611944906001600160a01b031684611c9c565b90506119508183614931565b98975050505050505050565b6002546001600160a01b031661198857600280546001600160a01b0319166001600160a01b0383161790555b60025460405163e7a9f7db60e01b8152610e49916001600160a01b031690600401614021565b6015546001600160a01b031633146119ea5760155460405163f50e080b60e01b8152610e499133916001600160a01b0390911690600401614773565b600254600160b01b900460ff1615155f03611a185760405163075c82fd60e31b815260040160405180910390fd5b6040805160018082528183019092525f9160208083019080368337505060065482519293506001600160a01b0316918391505f90611a5857611a5861478d565b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092525f91816020016020820280368337019050509050602754815f81518110611aa957611aa961478d565b60209081029190910101526040805160018082528183019092525f918160200160208202803683370190505090508615611ae35786611ae5565b855b815f81518110611af757611af761478d565b602090810291909101015260405163f04f270760e01b8152309063f04f270790611b2d908690869086908b908b9060040161483c565b5f604051808303815f87803b158015611b44575f5ffd5b505af1158015611b56573d5f5f3e3d5ffd5b5050505050505050505050565b335f818152602d60205260408120549091611b7e91906129e4565b905090565b611b8e845133612aa7565b611bef81845f81518110611ba457611ba461478d565b6020026020010151845f81518110611bbe57611bbe61478d565b6020026020010151865f81518110611bd857611bd861478d565b6020026020010151611bea9190614931565b612b50565b50505050565b5f546001600160a01b03163303611c0857565b604051635a7617f960e11b815260040160405180910390fd5b5f816103e5611c32826103e86148d0565b611c3c91906148e7565b611c469190614906565b6110a6906001614931565b5f6110a6602060159054906101000a900460ff1615156001151514611c8157600a546001600160a01b0316611c8e565b6025546001600160a01b03165b611c9784612bbf565b612c44565b600f54604051630e8f811d60e41b81525f916001600160a01b03169063e8f811d090611cce9086908690600401614944565b602060405180830381865afa158015611ce9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611719919061495d565b6020545f90600160a81b900460ff161515600114611d3657600a546001600160a01b0316611d43565b6025546001600160a01b03165b9050611d5181835f19612c76565b602054600160a81b900460ff161515600114611d78576019546001600160a01b0316611d85565b6025546001600160a01b03165b600754909150611da0906001600160a01b0316835f19612c76565b600654600854611dbe916001600160a01b0390811691165f19612c76565b600854611dd79082906001600160a01b03165f19612c76565b601854611df09082906001600160a01b03165f19612c76565b602054600160a81b900460ff1615155f03611e2357601954600a54611e23916001600160a01b0390811691165f19612c76565b600654611e3b906001600160a01b0316835f19612c76565b600654600d54611e59916001600160a01b0390811691165f19612c76565b600654601854611e77916001600160a01b0390811691165f19612c76565b602654601854611170916001600160a01b0390811691165f19612c76565b602054611eab90600160b81b900460ff16612ca8565b565b600254600160a01b900460ff161515600103611edc5760405163075c82fd60e31b815260040160405180910390fd5b600e5f9054906101000a90046001600160a01b03166001600160a01b031663019dbb636040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f2c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f509190614974565b1515600103611f725760405163075c82fd60e31b815260040160405180910390fd5b600d5f9054906101000a90046001600160a01b03166001600160a01b0316631786ef6d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fc2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fe69190614974565b1515600103611eab5760405163075c82fd60e31b815260040160405180910390fd5b60065461201d906001600160a01b0316612ccb565b600754612032906001600160a01b0316612ccb565b600a546001600160a01b03161561205857600a54611eab906001600160a01b0316612ccb565b602054600160a81b900460ff161515600103611eab57602554611eab906001600160a01b0316612ccb565b6006545f838152602260205260409020546001600160a01b039091169060ff1615156001036120ba57506007546001600160a01b03165b5f6120c58284612d24565b90506120d3823330846122f5565b611bef848385612d56565b6001546001600160a01b031633036120f257565b6040516379543eaf60e11b815260040160405180910390fd5b600f546040516326a7a5ed60e21b81525f916001600160a01b031690639a9e97b490611cce9086908690600401614944565b600254611eab90600160a81b900460ff16612ca8565b60025f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b1580156121a0575f5ffd5b505af11580156121b2573d5f5f3e3d5ffd5b505050505050565b5f602b545f036122a4576012546040805163c814d2d160e01b815290515f926001600160a01b03169163c814d2d1916004808301926020929190829003018187875af115801561220c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612230919061495d565b905061223b81612dca565b601254601e5460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392612271929116908590600401614944565b5f604051808303815f87803b158015612288575f5ffd5b505af115801561229a573d5f5f3e3d5ffd5b5092949350505050565b602b8054602e915f9190826122b88361498f565b9190505581526020019081526020015f2054905090565b5f6122de878787878787612e5b565b6122ea85878587612ede565b979650505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526123609085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612f1b565b5050505050565b612371813361134b565b151560011461237e575f5ffd5b50565b5f6123c4602060159054906101000a900460ff16151560011515146123b157600a546001600160a01b03166123be565b6025546001600160a01b03165b83612c44565b905061240983602060159054906101000a900460ff16151560011515146123f657600a546001600160a01b0316612403565b6025546001600160a01b03165b84612fcf565b9050610ca4602060159054906101000a900460ff161515600115151461243a57600a546001600160a01b0316612447565b6025546001600160a01b03165b3383613043565b5f81815260226020526040812054819060ff166124735761246e836128d3565b61247c565b61247c83612949565b9050805f0361248e5750600192915050565b612497836118bc565b6124a08461103b565b10159392505050565b5f84156124be576124b984612949565b6124c7565b6124c7846128d3565b90505f85156124de576124d9856129b2565b6124e7565b6124e785612980565b905061250285825f6124f889612bbf565b8689898d8f613062565b50505050505050565b5f80600183151514612528576006546001600160a01b0316612535565b6007546001600160a01b03165b600e54604051630aae234760e21b81529192505f916001600160a01b0390911690632ab88d1c9061256a908590600401614021565b602060405180830381865afa158015612585573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125a9919061495d565b600e5460405163cfdc148f60e01b81529192505f916001600160a01b039091169063cfdc148f906125de908690600401614021565b602060405180830381865afa1580156125f9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061261d919061495d565b905080821115612632575f93505050506110a6565b5f8161263e8885614906565b61265090670de0b6b3a76400006148d0565b61265a91906148e7565b61266c90670de0b6b3a7640000614906565b90505f612678856133ce565b5190505f612685866133ce565b6080015190505f6126968484614906565b6126a090846148d0565b905080846126b6670de0b6b3a7640000856148d0565b6126c091906148d0565b6126ca91906148e7565b9a9950505050505050505050565b5f5f6126e38561346a565b5f8581526022602052604081205460ff16151560011461270e576006546001600160a01b031661271b565b6007546001600160a01b03165b90506127278185612d24565b5f878152602260205260408120549194509060ff16151560011461277957670de0b6b3a76400006706f05b59d3b20000612760896128d3565b61276a91906148d0565b61277491906148e7565b6127a8565b670de0b6b3a76400006706f05b59d3b2000061279489612949565b61279e91906148d0565b6127a891906148e7565b9050808511156127cb5760405163e73233fd60e01b815260040160405180910390fd5b600e546020546001600160a01b0390911690637fb668c490899089903390879060ff600160a81b90910416151560011461281057600a546001600160a01b031661281d565b6025546001600160a01b03165b6040516001600160e01b031960e088901b168152600481019590955260248501939093526001600160a01b0391821660448501528116606484015216608482015260a4810187905260c4810188905260e4016020604051808303815f875af115801561288b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128af919061495d565b92505050935093915050565b602054611eab906001600160a01b0316331415612ca8565b600e54600654604051632a145e2560e01b81525f926001600160a01b0390811692632a145e259261290a92879216906004016149a4565b602060405180830381865afa158015612925573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110a6919061495d565b600e54600754604051632a145e2560e01b81525f926001600160a01b0390811692632a145e259261290a92879216906004016149a4565b5f5f61298b836128d3565b905080156129ac576006546129a9906001600160a01b031682612d24565b91505b50919050565b5f5f6129bd83612949565b9050805f036129ce57505f92915050565b6007546129a9906001600160a01b031682612d24565b5f825f03612a0557604051630eda9c3d60e31b815260040160405180910390fd5b6001600160a01b038083165f908152602d6020526040808220919091556028549051634ef969ed60e01b8152911690634ef969ed90612a4a9085908790600401614944565b5f604051808303815f87803b158015612a61575f5ffd5b505af1158015612a73573d5f5f3e3d5ffd5b505060298054925090505f612a8783614919565b9091555050602a8054905f612a9b8361498f565b90915550929392505050565b600254600160b01b900460ff1615155f03612ad55760405163075c82fd60e31b815260040160405180910390fd5b6002805460ff60b01b191690555f829003612b0357604051631e5edc1560e31b815260040160405180910390fd5b6001600160a01b03811673ba12222222228d8ba445958a75a0704d566bf2c814611170576001600160a01b0381163014611170576040516324ee9bf560e11b815260040160405180910390fd5b5f5f5f5f5f5f5f5f5f8b806020019051810190612b6d91906149bb565b9850985098509850985098509850985098505f881115612bae57612ba081838b8b8f612b999190614931565b8e8a6134ae565b505050505050505050505050565b612ba0818a888a8e8a8a8a8a61371d565b6020545f90600160a81b900460ff1615158103612c0d57600e54600a5460405163951e435d60e01b81526001600160a01b039283169263951e435d9261290a928792909116906004016149a4565b600e5460255460405163951e435d60e01b81526001600160a01b039283169263951e435d9261290a928792909116906004016149a4565b600e546040516365d5787760e01b81525f916001600160a01b0316906365d5787790611cce9086908690600401614944565b6001600160a01b038216612c8957505050565b611bef8363095ea7b360e01b8484604051602401612329929190614944565b80151560010361237e5760405163075c82fd60e31b815260040160405180910390fd5b600e54604051631ff631c360e11b81526001600160a01b0390911690633fec638690612cfb908490600401614021565b5f604051808303815f87803b158015612d12575f5ffd5b505af1158015612360573d5f5f3e3d5ffd5b600e546040516386b47ce160e01b81525f916001600160a01b0316906386b47ce190611cce9086908690600401614944565b600e54604051633d00726360e01b81526001600160a01b0390911690633d00726390612d8a90869086908690600401614a9a565b6020604051808303815f875af1158015612da6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bef919061495d565b600e54604051631ace8bcf60e31b815260048101839052600160248201526001600160a01b039091169063d6745e78906044015f604051808303815f87803b158015612e14575f5ffd5b505af1158015612e26573d5f5f3e3d5ffd5b505050507f96e42d3257b3918e5d21803481411046445d8f5ae52841ae17000a2f5cd9919081426040516111b392919061458c565b602454821115612e7e57604051633a4eb5e560e11b815260040160405180910390fd5b5f612e89848461177b565b9050612e9481613898565b15155f03612eb55760405163e35477cd60e01b815260040160405180910390fd5b61250285612ec38684614906565b865f5f87602060149054906101000a900460ff168d8f613062565b5f5f612eea33876138be565b5f878152602260205260409020805460ff1916871515179055905061134281878686612f1583611259565b42613930565b5f5f5f846001600160a01b031684604051612f369190614ab9565b5f604051808303815f865af19150503d805f8114612f6f576040519150601f19603f3d011682016040523d82523d5f602084013e612f74565b606091505b50915091505f81515f1480612f98575081806020019051810190612f989190614974565b90508215155f03612fa7575f5ffd5b828015612fb15750805b801561144b57505f866001600160a01b03163b119695505050505050565b600e546040516330b9df9160e21b81525f916001600160a01b03169063c2e77e449061300390879087908790600401614a9a565b6020604051808303815f875af115801561301f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112fb919061495d565b611bef8363a9059cbb60e01b8484604051602401612329929190614944565b6040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337505060065484519293506001600160a01b0316918491505f906130c4576130c461478d565b60200260200101906001600160a01b031690816001600160a01b03168152505089815f815181106130f7576130f761478d565b60209081029190910101526002805460ff60b01b1916600160b01b1790556014546001600160a01b0316156131cf5760145f9054906101000a90046001600160a01b03166001600160a01b031663022c0d9f5f8c308f8e8e8e8e338f8f8f60405160200161316d99989796959493929190614afd565b6040516020818303038152906040526040518563ffffffff1660e01b815260040161319b9493929190614b5d565b5f604051808303815f87803b1580156131b2575f5ffd5b505af11580156131c4573d5f5f3e3d5ffd5b5050505050506133c3565b6015546001600160a01b03161561334e5760278a905560155460065460408051630dfe168160e01b815290516001600160a01b039384169363490e6cbc9330939116918591630dfe16819160048083019260209291908290030181865afa15801561323c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132609190614758565b6001600160a01b031614613274575f613276565b8c5b6006546015546040805163d21220a760e01b815290516001600160a01b03938416939092169163d21220a7916004808201926020929091908290030181865afa1580156132c5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132e99190614758565b6001600160a01b0316146132fd575f6132ff565b8d5b8f8e8e8e8e338f8f8f60405160200161332099989796959493929190614afd565b6040516020818303038152906040526040518563ffffffff1660e01b815260040161319b9493929190614b89565b60115f9054906101000a90046001600160a01b03166001600160a01b0316635c38449e3084848f8e8e8e8e338f8f8f60405160200161339599989796959493929190614afd565b6040516020818303038152906040526040518563ffffffff1660e01b8152600401610faf9493929190614bb5565b505050505050505050565b6133fb6040518060a001604052805f81526020015f81526020015f81526020015f81526020015f81525090565b600e546040516349622c4960e01b81526001600160a01b03909116906349622c499061342b908590600401614021565b60a060405180830381865afa158015613446573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110a69190614bfe565b602054600160b01b900460ff1615156001036134835750565b61348c8161244e565b151560010361237e5760405163cc71476d60e01b815260040160405180910390fd5b6006545f906134c6906001600160a01b031685611c9c565b90505f6134e1602060159054906101000a900460ff166139d5565b90505f6134ef896001613a02565b6020549091508190600160a81b900460ff1615155f0361360957600b546040516325ca070560e11b8152600481018490526001600160a01b0390911690634b940e0a9060240160408051808303815f875af1158015613550573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135749190614c6a565b50600e54604051636eb1769f60e11b81529192506001600160a01b038086169263dd62ed3e926135ab923092911690600401614773565b602060405180830381865afa1580156135c6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135ea919061495d565b5f0361360957600e546136099084906001600160a01b03165f19612c76565b5f670de0b6b3a76400008661361e8685611c9c565b61362891906148d0565b61363291906148e7565b9050848110156136555760405163d20a9c9560e01b815260040160405180910390fd5b600e54604051636987b14960e11b81526001600160a01b039091169063d30f629290613689908c9088908790600401614a9a565b6020604051808303815f875af11580156136a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136c9919061495d565b506136d58a8a89613b0d565b6136de8961244e565b15155f036136ff57604051636c62feb960e11b815260040160405180910390fd5b600654611b56906001600160a01b0316613717613b89565b89613043565b613728818989613be6565b6020545f9061374090600160a81b900460ff166139d5565b90505f61378482602060159054906101000a900460ff16151560011515146137775761108d61377285611c978f612bbf565b613c41565b61108d84611c978e612bbf565b602054909150600160a81b900460ff1615156001036137ae576137a88a838a612fcf565b506137ba565b6137b88a89613cd4565b505b5f6137c58c5f613a02565b6006549091505f90670de0b6b3a76400009089906137ec906001600160a01b031685611c9c565b6137f691906148d0565b61380091906148e7565b9050828110156138235760405163d20a9c9560e01b815260040160405180910390fd5b601c546006546001600160a01b03908116911614806138525750601f546006546001600160a01b039081169116145b156138605761386082613d35565b85151560010361387e57613875828a89613d66565b505050506133c3565b613889828a89613e04565b50505050505050505050505050565b6009545f9081906138b2906001600160a01b031684611c9c565b60045411159392505050565b6001600160a01b0382165f908152602d6020526040812054156138f4576040516343d9a50360e11b815260040160405180910390fd5b5f6138fd613ebf565b6001600160a01b0385165f908152602d60209081526040808320849055838352602c909152902084905591505092915050565b6040805160a08101825286815260208082018781528284018781526060808501888152608086018881525f8e815260218752889020875181559451600186015592516002850155516003840155905160049092019190915583518781529182018690529281018490529091869188918a917faa27558e5219d1a6088de4c80bdd26623b70f4424b74f61e9848796442c5a1a8910160405180910390a450505050505050565b5f6001821515146139f157600a546001600160a01b03166110a6565b50506025546001600160a01b031690565b5f613a2d8383601b60149054906101000a9004801561401902176001600160401b031663ffffffff16565b5f5f613a3885613ed5565b9150915081613a5a57604051633204506f60e01b815260040160405180910390fd5b613a62613f60565b15156001148015613a815750602054600160a81b900460ff1615156001145b80613ac55750602054600160a81b900460ff1615156001148015613ac55750613ab06323f8ef1160e11b613fcb565b613ac3613abe876020015190565b613fcb565b145b15613aeb575f81806020019051810190613adf9190614c6a565b5093506110a692505050565b5f81806020019051810190613b009190614c8c565b5090979650505050505050565b821515600103613b5057600d5460065460405163c7c5c4a760e01b81526001600160a01b039283169263c7c5c4a792612d8a928792909116908690600401614a9a565b600e5460065460405163c7c5c4a760e01b81526001600160a01b039283169263c7c5c4a792612d8a928792909116908690600401614a9a565b602f545f906001600160a01b031615613bac5750602f546001600160a01b031690565b6015546001600160a01b031615613bcd57506015546001600160a01b031690565b5073ba12222222228d8ba445958a75a0704d566bf2c890565b821515600103613c2957600d54600654604051633d00726360e01b81526001600160a01b0392831692633d00726392612d8a928792909116908690600401614a9a565b600654610ca49083906001600160a01b031683612d56565b600b5460408051634b51db4d60e11b815290515f926001600160a01b03169163fe88136e91859184916396a3b69a916004808201926020929091908290030181865afa158015613c93573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613cb7919061495d565b6040518363ffffffff1660e01b815260040161290a92919061458c565b600b54600a545f916001600160a01b0390811691637d0fedaa91613cfb9187911686612fcf565b6040518263ffffffff1660e01b8152600401613d1991815260200190565b6020604051808303815f875af1158015611ce9573d5f5f3e3d5ffd5b600254604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401612cfb565b613d6f82612153565b6014545f906001600160a01b031615613d93576014546001600160a01b0316613da0565b6015546001600160a01b03165b600654909150613df1906001600160a01b031673ba12222222228d8ba445958a75a0704d566bf2c7193301613de95773ba12222222228d8ba445958a75a0704d566bf2c8613deb565b825b85613043565b611bef82613dff8587614906565b610bf0565b601c546006546001600160a01b03918216911603613e2557613e2583612153565b6014545f906001600160a01b031615613e49576014546001600160a01b0316613e56565b6015546001600160a01b03165b600654909150613e9f906001600160a01b031673ba12222222228d8ba445958a75a0704d566bf2c7193301613de95773ba12222222228d8ba445958a75a0704d566bf2c8613deb565b600654611bef906001600160a01b031683613eba8688614906565b613043565b5f613ec8614000565b602954611b7e9190614931565b6020805460ff60b81b1916600160b81b1790556018546040515f916060916001600160a01b0390911690613f0a908590614ab9565b5f604051808303815f865af19150503d805f8114613f43576040519150601f19603f3d011682016040523d82523d5f602084013e613f48565b606091505b506020805460ff60b81b191690559094909350915050565b60195460408051630bc4ed8360e21b815290515f926001600160a01b031691632f13b60c9160048083019260209291908290030181865afa158015613fa7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7e9190614974565b6040516001600160e01b0319821660208201525f90602401604051602081830303815290604052805190602001209050919050565b5f602a5f815461400f90614919565b9182905550919050565b611eab614cb7565b6001600160a01b0391909116815260200190565b6001600160a01b038116811461237e575f5ffd5b5f60208284031215614059575f5ffd5b813561171981614035565b5f5f83601f840112614074575f5ffd5b5081356001600160401b0381111561408a575f5ffd5b6020830191508360208285010111156140a1575f5ffd5b9250929050565b5f5f5f5f5f608086880312156140bc575f5ffd5b85356140c781614035565b9450602086013593506040860135925060608601356001600160401b038111156140ef575f5ffd5b6140fb88828901614064565b969995985093965092949392505050565b5f5f5f5f5f60808688031215614120575f5ffd5b853561412b81614035565b9450602086013561413b81614035565b93506040860135925060608601356001600160401b038111156140ef575f5ffd5b5f6020828403121561416c575f5ffd5b5035919050565b801515811461237e575f5ffd5b5f60208284031215614190575f5ffd5b813561171981614173565b5f5f604083850312156141ac575f5ffd5b82356141b781614035565b915060208301356141c781614035565b809150509250929050565b5f5f604083850312156141e3575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561422e5761422e6141f2565b604052919050565b5f6001600160401b0382111561424e5761424e6141f2565b50601f01601f191660200190565b5f82601f83011261426b575f5ffd5b813561427e61427982614236565b614206565b818152846020838601011115614292575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f608085870312156142c1575f5ffd5b84356001600160401b038111156142d6575f5ffd5b6142e28782880161425c565b94505060208501356142f381614173565b93969395505050506040820135916060013590565b5f5f60408385031215614319575f5ffd5b8235915060208301356141c781614035565b5f5f5f5f5f60a0868803121561433f575f5ffd5b85356001600160401b03811115614354575f5ffd5b6143608882890161425c565b955050602086013561437181614173565b94979496505050506040830135926060810135926080909101359150565b5f6001600160401b038211156143a7576143a76141f2565b5060051b60200190565b5f82601f8301126143c0575f5ffd5b81356143ce6142798261438f565b8082825260208201915060208360051b8601019250858311156143ef575f5ffd5b602085015b8381101561441557803561440781614173565b8352602092830192016143f4565b5095945050505050565b5f5f60408385031215614430575f5ffd5b82356001600160401b03811115614445575f5ffd5b8301601f81018513614455575f5ffd5b80356144636142798261438f565b8082825260208201915060208360051b850101925087831115614484575f5ffd5b6020840193505b828410156144af57833561449e81614035565b82526020938401939091019061448b565b945050505060208301356001600160401b038111156144cc575f5ffd5b6144d8858286016143b1565b9150509250929050565b5f5f5f5f608085870312156144f5575f5ffd5b84356001600160401b0381111561450a575f5ffd5b6145168782880161425c565b9450506020850135925060408501359150606085013561453581614173565b939692955090935050565b5f5f60408385031215614551575f5ffd5b8235915060208301356141c781614173565b5f5f5f60608486031215614575575f5ffd5b505081359360208301359350604090920135919050565b918252602082015260400190565b5f5f5f5f606085870312156145ad575f5ffd5b843593506020850135925060408501356001600160401b038111156145d0575f5ffd5b6145dc87828801614064565b95989497509550505050565b5f82601f8301126145f7575f5ffd5b81356146056142798261438f565b8082825260208201915060208360051b860101925085831115614626575f5ffd5b602085015b8381101561441557803583526020928301920161462b565b5f5f5f5f60808587031215614656575f5ffd5b84356001600160401b0381111561466b575f5ffd5b8501601f8101871361467b575f5ffd5b80356146896142798261438f565b8082825260208201915060208360051b8501019250898311156146aa575f5ffd5b6020840193505b828410156146d55783356146c481614035565b8252602093840193909101906146b1565b965050505060208501356001600160401b038111156146f2575f5ffd5b6146fe878288016145e8565b93505060408501356001600160401b03811115614719575f5ffd5b614725878288016145e8565b92505060608501356001600160401b03811115614740575f5ffd5b61474c8782880161425c565b91505092959194509250565b5f60208284031215614768575f5ffd5b815161171981614035565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602084019350602083015f5b828110156147da5781516001600160a01b03168652602095860195909101906001016147b3565b5093949350505050565b5f8151808452602084019350602083015f5b828110156147da5781518652602095860195909101906001016147f6565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f61484e60808301886147a1565b828103602084015261486081886147e4565b9050828103604084015261487481876147e4565b90508281036060840152611950818587614814565b6001600160a01b03868116825285166020820152604081018490526080606082018190525f906122ea9083018486614814565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176110a6576110a66148bc565b5f8261490157634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156110a6576110a66148bc565b5f6001820161492a5761492a6148bc565b5060010190565b808201808211156110a6576110a66148bc565b6001600160a01b03929092168252602082015260400190565b5f6020828403121561496d575f5ffd5b5051919050565b5f60208284031215614984575f5ffd5b815161171981614173565b5f8161499d5761499d6148bc565b505f190190565b9182526001600160a01b0316602082015260400190565b5f5f5f5f5f5f5f5f5f6101208a8c0312156149d4575f5ffd5b895160208b015160408c015160608d015160808e015160a08f0151949d50929b5090995097509550614a0581614035565b60c08b0151909450614a1681614173565b60e08b0151909350614a2781614173565b6101008b01519092506001600160401b03811115614a43575f5ffd5b8a01601f81018c13614a53575f5ffd5b8051614a6161427982614236565b8181528d6020838501011115614a75575f5ffd5b8160208401602083015e5f602083830101528093505050509295985092959850929598565b9283526001600160a01b03919091166020830152604082015260600190565b5f82518060208501845e5f920191825250919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b89815288602082015287604082015286606082015285608082015260018060a01b03851660a082015283151560c082015282151560e08201526101206101008201525f614b4e610120830184614acf565b9b9a5050505050505050505050565b84815283602082015260018060a01b0383166040820152608060608201525f61144b6080830184614acf565b60018060a01b0385168152836020820152826040820152608060608201525f61144b6080830184614acf565b6001600160a01b03851681526080602082018190525f90614bd8908301866147a1565b8281036040840152614bea81866147e4565b905082810360608401526122ea8185614acf565b5f60a0828403128015614c0f575f5ffd5b5060405160a081016001600160401b0381118282101715614c3257614c326141f2565b604090815283518252602080850151908301528381015190820152606080840151908201526080928301519281019290925250919050565b5f5f60408385031215614c7b575f5ffd5b505080516020909101519092909150565b5f5f5f60608486031215614c9e575f5ffd5b5050815160208301516040909301519094929350919050565b634e487b7160e01b5f52605160045260245ffdfea2646970667358221220e15b26da285ad3876ff55885b4e17388c912d960fb8fea9957a9d9f54374be7764736f6c634300081c00330000000000000000000000009034a49587bd2c1af27598e0f04f30db66c87ebf000000000000000000000000ae81394074eec63f6353bd049393eb16e6922de2000000000000000000000000888888888889758f76e7103c6cbf23abbf58f94600000000000000000000000035751007a407ca6feffe80b3cb397736d2cf4dbe000000000000000000000000a6c895eb332e91c5b3d00b7baeeaae478cc502da000000000000000000000000bf5e60ddf654085f80dae9dd33ec0e345773e1f8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d2f13f7789f0000000000000000000000000000cb1f66ec1a01c6964885d1512a74ea9b8ed62a0f