0 txs
0 calls
constructor
No constructor.
functions
ADDRESS_PROVIDER
viewfunction ADDRESS_PROVIDER() view returns (address)
booster
viewfunction booster() view returns (address)
collateralToken
viewfunction collateralToken() view returns (address)
convexPoolId
viewfunction convexPoolId() view returns (uint256)
convexRewards
viewfunction convexRewards() view returns (address)
convexToken
viewfunction convexToken() view returns (address)
CRV_MINTER
viewfunction CRV_MINTER() view returns (address)
curveGauge
viewfunction curveGauge() view returns (address)
curveLp
viewfunction curveLp() view returns (address)
curvePool
viewfunction curvePool() view returns (address)
curvePoolZap
viewfunction curvePoolZap() view returns (address)
depositAndStake
viewfunction depositAndStake() view returns (address)
feeCollector
viewfunction feeCollector() view returns (address)
GAUGE_FACTORY
viewfunction GAUGE_FACTORY() view returns (address)
getUnderlyingTokens
viewfunction getUnderlyingTokens() view returns (address[])
governor
viewfunction governor() view returns (address)
isActive
viewfunction isActive() view returns (bool)
isReservedToken
viewfunction isReservedToken(address token_) view returns (bool)
keepers
viewfunction keepers() view returns (address[])
lpBalanceHere
viewfunction lpBalanceHere() view returns (uint256 _lpHere)
lpBalanceHereAndStaked
viewfunction lpBalanceHereAndStaked() view returns (uint256 _lpHereAndStaked)
lpBalanceStaked
viewfunction lpBalanceStaked() view returns (uint256 _total)
masterOracle
viewfunction masterOracle() view returns (address)
NAME
viewfunction NAME() view returns (string)
pool
viewfunction pool() view returns (address)
poolAccountant
viewfunction poolAccountant() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
receiptToken
viewfunction receiptToken() view returns (address)
slippage
viewfunction slippage() view returns (uint256)
swapper
viewfunction swapper() view returns (address)
tvl
viewfunction tvl() view returns (uint256)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
VERSION
purefunction VERSION() pure returns (string)
withdrawOneCoin
viewfunction withdrawOneCoin() view returns (bool)
addKeeper
nonpayablefunction addKeeper(address keeperAddress_)
approveToken
nonpayablefunction approveToken(uint256 approvalAmount_)
claimRewards
nonpayablefunction claimRewards()
initialize
nonpayablefunction initialize(tuple params_, address booster_, uint256 convexPoolId_)
rebalance
nonpayablefunction rebalance() returns (uint256 _profit, uint256 _loss, uint256 _payback)
removeKeeper
nonpayablefunction removeKeeper(address keeperAddress_)
swapToCollateral
nonpayablefunction swapToCollateral(address tokenIn_, uint256 minAmountOut_) returns (uint256 _amountOut)
sweep
nonpayablefunction sweep(address fromToken_)
toggleWithdrawOneCoinFlag
nonpayablefunction toggleWithdrawOneCoinFlag()
updateFeeCollector
nonpayablefunction updateFeeCollector(address feeCollector_)
updateMasterOracle
nonpayablefunction updateMasterOracle(address newMasterOracle_)
updateSlippage
nonpayablefunction updateSlippage(uint256 newSlippage_)
updateSwapper
nonpayablefunction updateSwapper(address swapper_)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdraw
nonpayablefunction withdraw(uint256 amount_)
events
Initialized
event Initialized(uint64 version)
MasterOracleUpdated
event MasterOracleUpdated(address oldMasterOracle, address newMasterOracle)
SlippageUpdated
event SlippageUpdated(uint256 oldSlippage, uint256 newSlippage)
UpdatedFeeCollector
event UpdatedFeeCollector(address oldFeeCollector, address newFeeCollector)
UpdatedSwapper
event UpdatedSwapper(address oldSwapper, address newSwapper)
Upgraded
event Upgraded(address indexed implementation)
WithdrawOneCoinToggled
event WithdrawOneCoinToggled(bool newValue)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressIsNull
error AddressIsNull()
BoosterDepositFailed
error BoosterDepositFailed()
CanNotSweepToken
error CanNotSweepToken()
CurveGaugeIsNull
error CurveGaugeIsNull()
CurveLpIsNull
error CurveLpIsNull()
CurvePoolZapIsNull
error CurvePoolZapIsNull()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedCall
error FailedCall()
FeeCollectorNotSet
error FeeCollectorNotSet()
IncorrectLpToken
error IncorrectLpToken()
InsufficientBalance
error InsufficientBalance(uint256 balance, uint256 needed)
InvalidCollateral
error InvalidCollateral()
InvalidInitialization
error InvalidInitialization()
InvalidSlippage
error InvalidSlippage()
InvalidStrategy
error InvalidStrategy()
NotAllowedToSendEther
error NotAllowedToSendEther()
NotEnoughAmountOut
error NotEnoughAmountOut()
NotInitializing
error NotInitializing()
OnlyOneEthAllowedInUnderlying
error OnlyOneEthAllowedInUnderlying()
RewardClaimFailed
error RewardClaimFailed()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
SlippageTooHigh
error SlippageTooHigh()
Unauthorized
error Unauthorized()
UnstakeFromConvexFailed
error UnstakeFromConvexFailed()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051615fd96100fd600039600081816122290152818161225201526123d70152615fd96000f3fe6080604052600436106103225760003560e01c80637d7c2a1c116101a5578063c965fa8a116100ec578063e5328e0611610095578063ec78e8321161006f578063ec78e83214610a3d578063edb13ecb14610a52578063ee330ee314610a67578063ffa1ad7414610a8757600080fd5b8063e5328e06146109fe578063e89133b214610a13578063eaada38214610a2857600080fd5b8063d95bd6c9116100c6578063d95bd6c9146109bf578063de603fdc146109d4578063e529ee95146109e957600080fd5b8063c965fa8a1461096a578063d2c35ce81461097f578063d3033c391461099f57600080fd5b8063b2016bd41161014e578063c166f3cb11610128578063c166f3cb14610920578063c415b95c14610940578063c6def0761461095557600080fd5b8063b2016bd4146108e1578063be933ae6146108f6578063c12d636b1461090b57600080fd5b8063a3f4df7e1161017f578063a3f4df7e14610856578063abc9b45e14610878578063ad3cb1cc1461089857600080fd5b80637d7c2a1c146107ef578063951dc22c1461081f5780639fd395401461084157600080fd5b8063372500ab116102695780634f1ef2861161021257806374db9ad4116101ec57806374db9ad41461079d57806379054cc9146107c5578063795dae66146107da57600080fd5b80634f1ef2861461076057806352d1902d1461077357806366519bd61461078857600080fd5b80634032b72b116102435780634032b72b146106f8578063440d7248146107185780634a2b9e071461073857600080fd5b8063372500ab146106a05780633ac9fc11146106b55780633e032a3b146106d557600080fd5b80631ef1314f116102cb578063280718e2116102a5578063280718e2146106565780632b3297f91461066b5780632e1a7d4d1461068057600080fd5b80631ef1314f14610607578063218751b21461061c57806322f3e2d41461063157600080fd5b806315b0d496116102fc57806315b0d496146105aa57806316f0115b146105ca5780631848effa146105df57600080fd5b806301681a62146105385780630c340a241461055857806314ae9f2e1461058a57600080fd5b36610533576000610331610acd565b604080516102008101825282546001600160a01b0390811682526001840154811660208084019190915260028501548216838501526003850154821660608401526004850154821660808401526005850154821660a08401526006850154821660c08401526007850154821660e084015260088501549091166101008301526009840154610120830152600a840154610140830152600b84018054845181840281018401909552808552929493610160860193909283018282801561041f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610401575b5050509183525050600c919091015460ff8082161515602084015261010082048116151560408401526201000082048116151560608401526301000000909104161515608090910152805160a082015191925090336001600160a01b038316148015906104955750336001600160a01b03821614155b156104cc576040517fe765476500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216330361053157806001600160a01b031663d0e30db0476040518263ffffffff1660e01b81526004016000604051808303818588803b15801561051757600080fd5b505af115801561052b573d6000803e3d6000fd5b50505050505b005b600080fd5b34801561054457600080fd5b50610531610553366004615639565b610b2f565b34801561056457600080fd5b5061056d610cb9565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561059657600080fd5b506105316105a5366004615639565b610d29565b3480156105b657600080fd5b506105316105c5366004615656565b610d76565b3480156105d657600080fd5b5061056d610e3a565b3480156105eb57600080fd5b5061056d735ffe7fb82894076ecb99a30d6a32e969e6e35e9881565b34801561061357600080fd5b50610531610e56565b34801561062857600080fd5b5061056d610ef0565b34801561063d57600080fd5b50610646610f09565b6040519015158152602001610581565b34801561066257600080fd5b5061056d610fa7565b34801561067757600080fd5b5061056d610fc3565b34801561068c57600080fd5b5061053161069b366004615656565b610fdf565b3480156106ac57600080fd5b50610531611160565b3480156106c157600080fd5b506105316106d0366004615656565b611192565b3480156106e157600080fd5b506106ea6111c6565b604051908152602001610581565b34801561070457600080fd5b50610531610713366004615639565b6111d9565b34801561072457600080fd5b50610646610733366004615639565b611226565b34801561074457600080fd5b5061056d73abc000d88f23bb45525e447528dbf656a9d55bf581565b61053161076e366004615749565b61126d565b34801561077f57600080fd5b506106ea611288565b34801561079457600080fd5b5061056d6112b7565b3480156107a957600080fd5b5061056d73d061d61a4d941c39e5453435b6345dc261c2fce081565b3480156107d157600080fd5b5061056d6112c1565b3480156107e657600080fd5b506106ea6112cb565b3480156107fb57600080fd5b5061080461133f565b60408051938452602084019290925290820152606001610581565b34801561082b57600080fd5b5061083461137f565b60405161058191906157f2565b34801561084d57600080fd5b50610646611394565b34801561086257600080fd5b5061086b6113b1565b6040516105819190615829565b34801561088457600080fd5b50610531610893366004615639565b61144c565b3480156108a457600080fd5b5061086b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156108ed57600080fd5b5061056d611524565b34801561090257600080fd5b5061056d61152e565b34801561091757600080fd5b5061056d61154a565b34801561092c57600080fd5b5061053161093b366004615895565b611591565b34801561094c57600080fd5b5061056d611805565b34801561096157600080fd5b5061056d61180f565b34801561097657600080fd5b506106ea611819565b34801561098b57600080fd5b5061053161099a366004615639565b611823565b3480156109ab57600080fd5b506105316109ba366004615639565b6118fb565b3480156109cb57600080fd5b506108346119d3565b3480156109e057600080fd5b506106ea611a3d565b3480156109f557600080fd5b506106ea611ac3565b348015610a0a57600080fd5b506106ea611ad6565b348015610a1f57600080fd5b5061056d611af0565b348015610a3457600080fd5b5061056d611afa565b348015610a4957600080fd5b5061056d611b16565b348015610a5e57600080fd5b5061056d611b1c565b348015610a7357600080fd5b506106ea610a823660046159b4565b611b26565b348015610a9357600080fd5b5060408051808201909152600581527f352e352e30000000000000000000000000000000000000000000000000000000602082015261086b565b60008060ff19610afe60017fbab41e3047bd82ac921d110ce90c261faaf0692d942b70fdb1fe065d060ad3786159f6565b604051602001610b1091815260200190565b60408051601f1981840301815291905280516020909101201692915050565b610b4433610b3b611df3565b60050190611e24565b610b60576040516282b42960e81b815260040160405180910390fd5b6000610b6a611805565b90506001600160a01b038116610bac576040517fb4b53f4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bb4611524565b6001600160a01b0316826001600160a01b03161480610bd75750610bd782611226565b15610bf55760405163b92ab52360e01b815260040160405180910390fd5b7fffffffffffffffffffffffff11111111111111111111111111111111111111126001600160a01b03831601610c3357610c2f8147611e49565b5050565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9e9190615a09565b9050610cb46001600160a01b0384168383611efd565b505050565b6000610cc3610e3a565b6001600160a01b0316630c340a246040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d249190615a22565b905090565b610d31610cb9565b6001600160a01b0316336001600160a01b031614610d61576040516282b42960e81b815260040160405180910390fd5b610c2f81610d6d611df3565b60050190611f71565b610d7e610cb9565b6001600160a01b0316336001600160a01b031614610dae576040516282b42960e81b815260040160405180910390fd5b6127108110610de9576040517f334ee9a100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610df3610acd565b600981015460408051918252602082018590529192507f07af09e2b23ebab5dd29fa2271d6ca4795031f308caf26ca605f4a719ffeed61910160405180910390a160090155565b6000610e44611df3565b600101546001600160a01b0316919050565b610e6233610b3b611df3565b610e7e576040516282b42960e81b815260040160405180910390fd5b6000610e88610acd565b600c810154604051630100000090910460ff16158082529192507f84d6c3a244edb3ffef8942c77ef1ae9b9a4e5d6fbad41240137530449cac56d09060200160405180910390a1600c909101805491151563010000000263ff00000019909216919091179055565b6000610efa610acd565b546001600160a01b0316919050565b600080610f14610e3a565b6040517f228bfd9f0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03919091169063228bfd9f9060240161012060405180830381865afa158015610f74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f989190615a3f565b50969998505050505050505050565b6000610fb1610acd565b600201546001600160a01b0316919050565b6000610fcd611df3565b600401546001600160a01b0316919050565b610fe7610e3a565b6001600160a01b0316336001600160a01b031614611017576040516282b42960e81b815260040160405180910390fd5b6000611021611df3565b805460018201546040516370a0823160e01b81523060048201529293506001600160a01b039182169291169060009083906370a0823190602401602060405180830381865afa158015611078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109c9190615a09565b90508481106110be576110b96001600160a01b0384168387611efd565b611159565b6110d06110cb82876159f6565b611f86565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111389190615a09565b9050611159826111488784611fea565b6001600160a01b0386169190611efd565b5050505050565b61116c33610b3b611df3565b611188576040516282b42960e81b815260040160405180910390fd5b611190611ffa565b565b61119e33610b3b611df3565b6111ba576040516282b42960e81b815260040160405180910390fd5b6111c3816121dc565b50565b60006111d0610acd565b60090154905090565b6111e1610cb9565b6001600160a01b0316336001600160a01b031614611211576040516282b42960e81b815260040160405180910390fd5b610c2f8161121d611df3565b60050190612209565b6000611230611b1c565b6001600160a01b0316826001600160a01b031614806112675750611252611524565b6001600160a01b0316826001600160a01b0316145b92915050565b61127561221e565b61127e826122ac565b610c2f82826122e4565b60006112926123cc565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6000610fcd610acd565b6000610fb1612415565b60006112d5611b1c565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa15801561131b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d249190615a09565b600080600061135033610b3b611df3565b61136c576040516282b42960e81b815260040160405180910390fd5b611374612446565b925092509250909192565b6060610d2461138c611df3565b6005016127cd565b600061139e610acd565b600c01546301000000900460ff16919050565b60606113bb611df3565b60070180546113c990615ab3565b80601f01602080910402602001604051908101604052809291908181526020018280546113f590615ab3565b80156114425780601f1061141757610100808354040283529160200191611442565b820191906000526020600020905b81548152906001019060200180831161142557829003601f168201915b5050505050905090565b611454610cb9565b6001600160a01b0316336001600160a01b031614611484576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0381166114ab5760405163fb7566d760e01b815260040160405180910390fd5b60006114b5610acd565b6006810154604080516001600160a01b03928316815291851660208301529192507fc96bca3f57d35a1057a3357bced51fac157918147faa56845639671c516ec69c910160405180910390a160060180546001600160a01b0319166001600160a01b0392909216919091179055565b6000610efa611df3565b6000611538610acd565b600301546001600160a01b0316919050565b6000611554610e3a565b6001600160a01b031663c12d636b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d00573d6000803e3d6000fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115dc5750825b905060008267ffffffffffffffff1660011480156115f95750303b155b905081158015611607575080155b156116255760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561165957845468ff00000000000000001916680100000000000000001785555b611662886127da565b6001600160a01b0387166116895760405163fb7566d760e01b815260040160405180910390fd5b6040517f1526fe270000000000000000000000000000000000000000000000000000000081526004810187905260009081906001600160a01b038a1690631526fe279060240160c060405180830381865afa1580156116ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117109190615aed565b5050935050509150611720611b16565b6001600160a01b0316826001600160a01b03161461176a576040517f89e981ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611774612415565b6001810180546001600160a01b03808e166001600160a01b03199283161790925560028301805495909216941693909317909255506003018790555083156117fb57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b6000611538611df3565b6000610e44612415565b60006112d56112c1565b61182b610cb9565b6001600160a01b0316336001600160a01b03161461185b576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0381166118825760405163fb7566d760e01b815260040160405180910390fd5b600061188c611df3565b6003810154604080516001600160a01b03928316815291851660208301529192507f0f06062680f9bd68e786e9980d9bb03d73d5620fc3b345e417b6eacb310b9706910160405180910390a160030180546001600160a01b0319166001600160a01b0392909216919091179055565b611903610cb9565b6001600160a01b0316336001600160a01b031614611933576040516282b42960e81b815260040160405180910390fd5b6001600160a01b03811661195a5760405163fb7566d760e01b815260040160405180910390fd5b6000611964611df3565b6004810154604080516001600160a01b03928316815291851660208301529192507f6c953b7ec311055c20b96a42cea31e89528e375b1bf953a503db40854b3188fe910160405180910390a160040180546001600160a01b0319166001600160a01b0392909216919091179055565b60606119dd610acd565b600b0180548060200260200160405190810160405280929190818152602001828054801561144257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611a16575050505050905090565b6000611a47611819565b611a4f611b1c565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190615a09565b610d249190615b74565b6000611acd612415565b60030154905090565b6000611ae8611ae3611a3d565b612e73565b611a4f611524565b6000610efa612415565b6000611b04610acd565b600601546001600160a01b0316919050565b6000610d245b6000610e44610acd565b6000611b3433610b3b611df3565b611b50576040516282b42960e81b815260040160405180910390fd5b6000611b5a611df3565b805460048201549192506001600160a01b03908116918116908616821480611b865750611b8686611226565b15611ba45760405163b92ab52360e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015611beb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0f9190615a09565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038916906370a0823190602401602060405180830381865afa158015611c59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7d9190615a09565b90508015611d38576040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03848116602483015289169063dd62ed3e90604401602060405180830381865afa158015611cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0e9190615a09565b811115611d2b57611d2b6001600160a01b038916846000196133fd565b611d368885836134bb565b505b6040516370a0823160e01b815230600482015282906001600160a01b038616906370a0823190602401602060405180830381865afa158015611d7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da29190615a09565b611dac91906159f6565b955086861015611de8576040517f8edbf6d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505092915050565b60008060ff19610afe60017f2406840ad5584694fd0fd68ca814242285d2c2d94aaaee51ccea0b7e08ea3d5c6159f6565b6001600160a01b038116600090815260018301602052604081205415155b9392505050565b80471015611e91576040517fcf479181000000000000000000000000000000000000000000000000000000008152476004820152602481018290526044015b60405180910390fd5b600080836001600160a01b03168360405160006040518083038185875af1925050503d8060008114611edf576040519150601f19603f3d011682016040523d82523d6000602084013e611ee4565b606091505b509150915081611ef757611ef781613570565b50505050565b6040516001600160a01b03838116602483015260448201839052610cb491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506135b2565b6000611e42836001600160a01b03841661363c565b6000611f906112cb565b90506000611f9c611819565b611fa69083615b74565b90506000611fd0611fb683612e73565b611fc08487615b87565b611fca9190615b9e565b83611fea565b905080600003611fe05750505050565b611ef7838261372f565b6000828218828410028218611e42565b6000612004610fa7565b905046600103612080576040516335313c2160e11b81526001600160a01b038216600482015273d061d61a4d941c39e5453435b6345dc261c2fce090636a62784290602401600060405180830381600087803b15801561206357600080fd5b505af1158015612077573d6000803e3d6000fd5b50505050612188565b6040517f4b9203790000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015273abc000d88f23bb45525e447528dbf656a9d55bf590634b92037990602401602060405180830381865afa1580156120f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121159190615bc0565b15612188576040516335313c2160e11b81526001600160a01b038216600482015273abc000d88f23bb45525e447528dbf656a9d55bf590636a62784290602401600060405180830381600087803b15801561216f57600080fd5b505af1158015612183573d6000803e3d6000fd5b505050505b806001600160a01b031663e6f1daf26040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156121c357600080fd5b505af19250505080156121d4575060015b156111c35750565b6121e58161397d565b6111c36121f061180f565b826121f9611b1c565b6001600160a01b031691906133fd565b6000611e42836001600160a01b038416613c13565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061228e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612282613c62565b6001600160a01b031614155b156111905760405163703e46dd60e11b815260040160405180910390fd5b6122b4610cb9565b6001600160a01b0316336001600160a01b0316146111c3576040516282b42960e81b815260040160405180910390fd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561233e575060408051601f3d908101601f1916820190925261233b91810190615a09565b60015b61236657604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611e88565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146123c2576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611e88565b610cb48383613c8a565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111905760405163703e46dd60e11b815260040160405180910390fd5b60008060ff19610afe60017f01191ad2b9c93519c7c8e8e1a3356cfaca04cd0a8d159aa7f8e90f91b5cdf0ef6159f6565b600080600080612454610e3a565b6040517fd53ddc260000000000000000000000000000000000000000000000000000000081523060048201529091506000906001600160a01b0383169063d53ddc2690602401602060405180830381865afa1580156124b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124db9190615a09565b6040517f9f2b28330000000000000000000000000000000000000000000000000000000081523060048201529091506000906001600160a01b03841690639f2b283390602401602060405180830381865afa15801561253e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125629190615a09565b9050600061256e611524565b9050600061257a6112cb565b90506000612586611819565b6125909083615b74565b9050600061259d82612e73565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038616906370a0823190602401602060405180830381865afa1580156125e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260b9190615a09565b905060006126198383615b74565b9050868111156126345761262d87826159f6565b9b50612641565b61263e81886159f6565b9a505b600061264d898e615b74565b90508281111561270557600061266384836159f6565b90506000612685866126758985615b87565b61267f9190615b9e565b88611fea565b9050801561270257612697888261372f565b6040516370a0823160e01b81523060048201526001600160a01b038a16906370a0823190602401602060405180830381865afa1580156126db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ff9190615a09565b94505b50505b61270f838a611fea565b9a508a831161271f576000612732565b61273261272c8c856159f6565b8e611fea565b6040517f05bed04600000000000000000000000000000000000000000000000000000000815260048101829052602481018e9052604481018d9052909d506001600160a01b038b16906305bed04690606401600060405180830381600087803b15801561279e57600080fd5b505af11580156127b2573d6000803e3d6000fd5b505050506127be613ce0565b50505050505050505050909192565b60606000611e4283613e48565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156128255750825b905060008267ffffffffffffffff1660011480156128425750303b155b905081158015612850575080155b1561286e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156128a257845468ff00000000000000001916680100000000000000001785555b6128bc866000015187602001516001896101200151613ea4565b60408601516001600160a01b031615806128e1575060808601516001600160a01b0316155b806128f7575060e08601516001600160a01b0316155b8061290e57506101008601516001600160a01b0316155b1561292c5760405163fb7566d760e01b815260040160405180910390fd5b60405163124fd3dd60e21b815260076004820152600090735ffe7fb82894076ecb99a30d6a32e969e6e35e989063493f4f7490602401602060405180830381865afa15801561297f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a39190615a22565b60408089015190517f379510490000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291925060009190831690633795104990602401602060405180830381865afa158015612a0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a329190615a22565b90506001600160a01b038116612a74576040517f02de52d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408881015190517fdaf297b90000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009184169063daf297b990602401602060405180830381865afa158015612adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aff9190615a22565b90506001600160a01b038116612b41576040517f1edbf35700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612b4b610acd565b90506000612b62858c604001518d60e0015161408e565b600c8601805460ff1916831515179055600a860183905583519094508490612b9390600b8801906020870190615540565b50505050508a604001518260000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550838260010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550828260020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a606001518260030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a608001518260040160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a60e001518260050160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a61010001518260060160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a60c0015182600901819055508a60a0015182600c0160016101000a81548160ff02191690831515021790555081600c0160009054906101000a900460ff1615612d935760608b01516001600160a01b0316612d54576040517fb7fb9bcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608b01516007830180546001600160a01b039283166001600160a01b03199182161790915560408d0151600885018054919093169116179055612dba565b60408b01516007830180546001600160a01b0319166001600160a01b039092169190911790555b808015612dd3575060608b01516001600160a01b031615155b15612e035760608b01516007830180546001600160a01b0319166001600160a01b03909216919091179055612e1b565b600c8201805462ff0000191662010000831515021790555b50505050508315612e6b57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b600081600003612e8557506000919050565b60405163124fd3dd60e21b815260076004820152600090735ffe7fb82894076ecb99a30d6a32e969e6e35e989063493f4f7490602401602060405180830381865afa158015612ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612efc9190615a22565b90506000612f08611524565b90506000612f14610ef0565b60405163940494f160e01b81526001600160a01b03808316600483015291925060009185169063940494f190602401602060405180830381865afa158015612f60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f849190615a09565b604051639ac90d3d60e01b81526001600160a01b038481166004830152919250600091861690639ac90d3d9060240161010060405180830381865afa158015612fd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff59190615bdd565b6040516392e3cc2d60e01b81526001600160a01b0385811660048301529192506000918716906392e3cc2d9060240161010060405180830381865afa158015613042573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130669190615c47565b90506000613072611b1c565b6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130d39190615a09565b9050886130de614460565b1561337e57825160009083906130f49084615b87565b6130fe9190615b9e565b855190915061310e908983614476565b613118908b615b74565b995082846001602002015161312d9084615b87565b6131379190615b9e565b60208601516040517fbdf475c30000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301529294509091600091908c169063bdf475c390602401602060405180830381865afa1580156131a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131c89190615a22565b9050816001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613208573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061322c9190615a09565b60405163940494f160e01b81526001600160a01b038381166004830152919650908c169063940494f190602401602060405180830381865afa158015613276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061329a9190615a09565b604051639ac90d3d60e01b81526001600160a01b038381166004830152919950908c1690639ac90d3d9060240161010060405180830381865afa1580156132e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133099190615bdd565b6040516392e3cc2d60e01b81526001600160a01b038381166004830152919850908c16906392e3cc2d9060240161010060405180830381865afa158015613354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133789190615c47565b95505050505b60005b858110156133ef5760008385836008811061339e5761339e615c9e565b60200201516133ad9085615b87565b6133b79190615b9e565b90506133da8683600881106133ce576133ce615c9e565b60200201518a83614476565b6133e4908c615b74565b9a5050600101613381565b505050505050505050919050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261347c8482614566565b611ef7576040516001600160a01b038481166024830152600060448301526134b191869182169063095ea7b390606401611f2a565b611ef784826135b2565b60006134c5610fc3565b6040517f6ccb2b010000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152858116602483015260448201859052600160648301523060848301529190911690636ccb2b019060a4016020604051808303816000875af1158015613544573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135689190615a09565b949350505050565b8051156135805780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080602060008451602086016000885af1806135d5576040513d6000823e3d81fd5b50506000513d915081156135ed5780600114156135fa565b6001600160a01b0384163b155b15611ef7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611e88565b600081815260018301602052604081205480156137255760006136606001836159f6565b8554909150600090613674906001906159f6565b90508082146136d957600086600001828154811061369457613694615c9e565b90600052602060002001549050808760000184815481106136b7576136b7615c9e565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806136ea576136ea615cb4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050611267565b6000915050611267565b818111156137495761374961374483836159f6565b6145b5565b6000613753611524565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561379d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137c19190615a09565b905060006137d76137d0611b1c565b8486614476565b905060006137e36119d3565b80519091506137f28187614686565b60005b818110156138c557600083828151811061381157613811615c9e565b60200260200101519050866001600160a01b0316816001600160a01b03160361383a57506138bd565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015613881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138a59190615a09565b905080156138ba576138b88289836134bb565b505b50505b6001016137f5565b506040516370a0823160e01b8152306004820152839085906001600160a01b038816906370a0823190602401602060405180830381865afa15801561390e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139329190615a09565b61393c91906159f6565b1015613974576040517f850c6f7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b61398681614b47565b6000613990610acd565b604080516102008101825282546001600160a01b0390811682526001840154811660208084019190915260028501548216838501526003850154821660608401526004850154821660808401526005850154821660a08401526006850154821660c08401526007850154821660e084015260088501549091166101008301526009840154610120830152600a840154610140830152600b840180548451818402810184019095528085529294936101608601939092830182828015613a7e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613a60575b5050509183525050600c919091015460ff8082161515602084015261010082048116151560408401526201000082048116151560608085019190915263010000009092041615156080909201919091528101519091506001600160a01b031615613b0857613b0881606001518383602001516001600160a01b03166133fd9092919063ffffffff16565b6000613b12610fc3565b61016083015180519192509060005b81811015613b88576000838281518110613b3d57613b3d615c9e565b60200260200101519050613b658588836001600160a01b03166133fd9092919063ffffffff16565b6080860151613b7f906001600160a01b03831690896133fd565b50600101613b21565b50604080850151608086015191517f1d2747d40000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260016024820152911690631d2747d490604401600060405180830381600087803b158015613bf657600080fd5b505af1925050508015613c07575060015b15611159575050505050565b6000818152600183016020526040812054613c5a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611267565b506000611267565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610efa565b613c9382614b72565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115613cd857610cb48282614be9565b610c2f614c5f565b613ce8614c97565b613cf0614c9f565b6000613cfa611b1c565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015613d40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d649190615a09565b905080156111c357613d7461180f565b6001600160a01b03166343a0d066613d8a611ac3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152600481019190915260248101849052600160448201526064016020604051808303816000875af1158015613dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e129190615bc0565b6111c3576040517f3fb65bab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081600001805480602002602001604051908101604052809291908181526020018280548015613e9857602002820191906000526020600020905b815481526020019060010190808311613e84575b50505050509050919050565b613eac614d8e565b613eb4614df5565b6001600160a01b0384161580613ed157506001600160a01b038316155b80613ee357506001600160a01b038216155b15613f015760405163fb7566d760e01b815260040160405180910390fd5b6000613f0b611df3565b9050848160010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f989190615a22565b81546001600160a01b03199081166001600160a01b03928316178355600283018054909116858316179055604080517f0c340a24000000000000000000000000000000000000000000000000000000008152905191871691630c340a24916004808201926020929091908290030181865afa15801561401b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403f9190615a22565b6003820180546001600160a01b03199081166001600160a01b0393841617909155600483018054909116918616919091179055600781016140808382615d12565b50612e6b6005820133612209565b606060008060008061409e611524565b6040517f0a700c080000000000000000000000000000000000000000000000000000000081526001600160a01b0389811660048301529192506000918a1690630a700c0890602401602060405180830381865afa158015614103573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141279190615a09565b90508067ffffffffffffffff8111156141425761414261566f565b60405190808252806020026020018201604052801561416b578160200160208202803683370190505b506040517fa77576ef0000000000000000000000000000000000000000000000000000000081526001600160a01b038a811660048301529197506000918b169063a77576ef9060240161010060405180830381865afa1580156141d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141f69190615bdd565b9050600019955060005b828110156142d45781816008811061421a5761421a615c9e565b602002015188828151811061423157614231615c9e565b6001600160a01b039283166020918202929092010152841682826008811061425b5761425b615c9e565b60200201516001600160a01b031614806142c3575073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee82826008811061429757614297615c9e565b60200201516001600160a01b03161480156142c35750886001600160a01b0316846001600160a01b0316145b156142cc578096505b600101614200565b508186111561430f576040517fd1ef4cea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fe4d332a90000000000000000000000000000000000000000000000000000000081526001600160a01b038a811660048301528b169063e4d332a990602401602060405180830381865afa15801561436e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143929190615bc0565b94508415801561444a5750604051639ac90d3d60e01b81526001600160a01b038a811660048301528b1690639ac90d3d9060240161010060405180830381865afa1580156143e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144089190615bdd565b866008811061441957614419615c9e565b60200201516001600160a01b031681876008811061443957614439615c9e565b60200201516001600160a01b031614155b1561445457600193505b50505093509350935093565b600061446a610acd565b600c015460ff16919050565b6000826001600160a01b0316846001600160a01b031603614498575080611e42565b6127106144a36111c6565b6144af906127106159f6565b6144b7611afa565b6040517fb64663840000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152878116602483015260448201879052919091169063b646638490606401602060405180830381865afa158015614527573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061454b9190615a09565b6145559190615b87565b61455f9190615b9e565b9050611e42565b6000806000806020600086516020880160008a5af192503d915060005190508280156145ab5750811561459c57806001146145ab565b6000866001600160a01b03163b115b9695505050505050565b80156111c3576145c36112c1565b6040517fc32e720200000000000000000000000000000000000000000000000000000000815260048101839052600060248201526001600160a01b03919091169063c32e7202906044016020604051808303816000875af115801561462c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146509190615bc0565b6111c3576040517fcba458bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000614690610acd565b604080516102008101825282546001600160a01b0390811682526001840154811660208084019190915260028501548216838501526003850154821660608401526004850154821660808401526005850154821660a08401526006850154821660c08401526007850154821660e084015260088501549091166101008301526009840154610120830152600a840154610140830152600b84018054845181840281018401909552808552929493610160860193909283018282801561477e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311614760575b5050509183525050600c919091015460ff8082161515602084015261010082048116151560408401526201000082048116151560608085019190915263010000009092041615156080909201919091528151908201516101e08301519293509091156147ee576111598385614dfd565b826101a00151156148c05760008567ffffffffffffffff8111156148145761481461566f565b60405190808252806020026020018201604052801561483d578160200160208202803683370190505b506040517fd40ddb8c0000000000000000000000000000000000000000000000000000000081529091506001600160a01b0384169063d40ddb8c906148889088908590600401615e03565b600060405180830381600087803b1580156148a257600080fd5b505af11580156148b6573d6000803e3d6000fd5b5050505050611159565b84600203614978576148d06155a5565b6001600160a01b03821615614944576040516316cd8e2760e21b81526001600160a01b03831690635b36389c9061490d9088908590600401615e1c565b600060405180830381600087803b15801561492757600080fd5b505af115801561493b573d6000803e3d6000fd5b50505050614972565b6040516316cd8e2760e21b81526001600160a01b03841690635b36389c906148889088908590600401615e1c565b50611159565b84600303614a27576149886155c3565b6001600160a01b038216156149e0576040517f8fa892a60000000000000000000000000000000000000000000000000000000081526001600160a01b03831690638fa892a69061490d90869089908690600401615e77565b6040517fecb586a50000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063ecb586a5906148889088908590600401615e9b565b8460040361115957614a376155e1565b6001600160a01b03821615614ac6576040517fad5cc9180000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063ad5cc91890614a8f90869089908690600401615ed2565b600060405180830381600087803b158015614aa957600080fd5b505af1158015614abd573d6000803e3d6000fd5b50505050612e6b565b6040517f7d49d8750000000000000000000000000000000000000000000000000000000081526001600160a01b03841690637d49d87590614b0d9088908590600401615ef6565b600060405180830381600087803b158015614b2757600080fd5b505af1158015614b3b573d6000803e3d6000fd5b50505050505050505050565b6000614b51611df3565b60018101548154919250610c2f916001600160a01b039081169116846133fd565b806001600160a01b03163b600003614ba857604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611e88565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051614c069190615f0a565b600060405180830381855af49150503d8060008114614c41576040519150601f19603f3d011682016040523d82523d6000602084013e614c46565b606091505b5091509150614c56858383614fa2565b95945050505050565b3415611190576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611190615017565b6000614ca9610fa7565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015614cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614d179190615a09565b90508015610c2f576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b03831690632e1a7d4d90602401600060405180830381600087803b158015614d7a57600080fd5b505af1158015612e6b573d6000803e3d6000fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611190576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611190614d8e565b6101408201516060830151600191906001600160a01b031615614eb357606084015184516040517f29ed28620000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052600f84900b6044820152606481018590529116906329ed2862906084015b600060405180830381600087803b158015614e9657600080fd5b505af1158015614eaa573d6000803e3d6000fd5b50505050611ef7565b836101c0015115614f1f5783516040517f517a55a300000000000000000000000000000000000000000000000000000000815260048101859052600f83900b602482015260448101849052600160648201526001600160a01b039091169063517a55a390608401614e7c565b83516040517f1a4d01d200000000000000000000000000000000000000000000000000000000815260048101859052600f83900b6024820152604481018490526001600160a01b0390911690631a4d01d290606401600060405180830381600087803b158015614f8e57600080fd5b505af11580156117fb573d6000803e3d6000fd5b606082614fb757614fb282613570565b611e42565b8151158015614fce57506001600160a01b0384163b155b15615010576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611e88565b5080611e42565b6000615021610acd565b604080516102008101825282546001600160a01b0390811682526001840154811660208084019190915260028501548216838501526003850154821660608401526004850154821660808401526005850154821660a08401526006850154821660c08401526007850154821660e084015260088501549091166101008301526009840154610120830152600a840154610140830152600b84018054845181840281018401909552808552929493610160860193909283018282801561510f57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116150f1575b5050509183525050600c919091015460ff8082161515602084015261010082048116151560408401526201000082048116151560608085019190915263010000009092041615156080909201919091529091506000808061516f85615228565b929650909450925090508015615186575050505050565b5083608001516001600160a01b03166326a38e64828660e0015187602001518860400151896101600151518a61016001518a8a8d6101c001518e6101a001518f61010001516040518c63ffffffff1660e01b81526004016151f09a99989796959493929190615f26565b6000604051808303818588803b15801561520957600080fd5b505af115801561521d573d6000803e3d6000fd5b505050505050505050565b60408051600880825261012082019092526060916000918291829182916020820161010080368337505050610160870151519091506000908190600190825b8181101561552f5760008b6101600151828151811061528857615288615c9e565b6020026020010151905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316816001600160a01b0316036154515784156152f7576040517faa49921600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a08c01516040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa158015615340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906153649190615a09565b88848151811061537657615376615c9e565b602002602001018181525050806001600160a01b0316632e1a7d4d8985815181106153a3576153a3615c9e565b60200260200101516040518263ffffffff1660e01b81526004016153c991815260200190565b600060405180830381600087803b1580156153e357600080fd5b505af11580156153f7573d6000803e3d6000fd5b5050505087838151811061540d5761540d615c9e565b6020026020010151955061543f818e602001518a868151811061543257615432615c9e565b6020026020010151614476565b6154499088615b74565b9650506154ff565b6040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa158015615495573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906154b99190615a09565b8783815181106154cb576154cb615c9e565b6020026020010181815250506154f2818d6020015189858151811061543257615432615c9e565b6154fc9087615b74565b95505b600087838151811061551357615513615c9e565b6020026020010151111561552657600093505b50600101615267565b509399929850909650945092505050565b828054828255906000526020600020908101928215615595579160200282015b8281111561559557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190615560565b506155a19291506155ff565b5090565b60405180604001604052806002906020820280368337509192915050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b5b808211156155a15760008155600101615600565b6001600160a01b03811681146111c357600080fd5b803561563481615614565b919050565b60006020828403121561564b57600080fd5b8135611e4281615614565b60006020828403121561566857600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051610140810167ffffffffffffffff811182821017156156a9576156a961566f565b60405290565b604051610100810167ffffffffffffffff811182821017156156a9576156a961566f565b600067ffffffffffffffff808411156156ee576156ee61566f565b604051601f8501601f19908116603f011681019082821181831017156157165761571661566f565b8160405280935085815286868601111561572f57600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561575c57600080fd5b823561576781615614565b9150602083013567ffffffffffffffff81111561578357600080fd5b8301601f8101851361579457600080fd5b6157a3858235602084016156d3565b9150509250929050565b60008151808452602080850194506020840160005b838110156157e75781516001600160a01b0316875295820195908201906001016157c2565b509495945050505050565b602081526000611e4260208301846157ad565b60005b83811015615820578181015183820152602001615808565b50506000910152565b6020815260008251806020840152615848816040850160208701615805565b601f01601f19169190910160400192915050565b80151581146111c357600080fd5b80356156348161585c565b600082601f83011261588657600080fd5b611e42838335602085016156d3565b6000806000606084860312156158aa57600080fd5b833567ffffffffffffffff808211156158c257600080fd5b9085019061014082880312156158d757600080fd5b6158df615685565b6158e883615629565b81526158f660208401615629565b602082015261590760408401615629565b604082015261591860608401615629565b606082015261592960808401615629565b608082015261593a60a0840161586a565b60a082015260c083013560c082015261595560e08401615629565b60e0820152610100615968818501615629565b90820152610120838101358381111561598057600080fd5b61598c8a828701615875565b8284015250508095505050506159a460208501615629565b9150604084013590509250925092565b600080604083850312156159c757600080fd5b82356159d281615614565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115611267576112676159e0565b600060208284031215615a1b57600080fd5b5051919050565b600060208284031215615a3457600080fd5b8151611e4281615614565b60008060008060008060008060006101208a8c031215615a5e57600080fd5b8951615a698161585c565b8099505060208a0151975060408a0151965060608a0151955060808a0151945060a08a0151935060c08a0151925060e08a015191506101008a015190509295985092959850929598565b600181811c90821680615ac757607f821691505b602082108103615ae757634e487b7160e01b600052602260045260246000fd5b50919050565b60008060008060008060c08789031215615b0657600080fd5b8651615b1181615614565b6020880151909650615b2281615614565b6040880151909550615b3381615614565b6060880151909450615b4481615614565b6080880151909350615b5581615614565b60a0880151909250615b668161585c565b809150509295509295509295565b80820180821115611267576112676159e0565b8082028115828204841417611267576112676159e0565b600082615bbb57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215615bd257600080fd5b8151611e428161585c565b6000610100808385031215615bf157600080fd5b83601f840112615c0057600080fd5b615c086156af565b908301908085831115615c1a57600080fd5b845b83811015615c3d578051615c2f81615614565b835260209283019201615c1c565b5095945050505050565b6000610100808385031215615c5b57600080fd5b83601f840112615c6a57600080fd5b615c726156af565b908301908085831115615c8457600080fd5b845b83811015615c3d578051835260209283019201615c86565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b601f821115610cb4576000816000526020600020601f850160051c81016020861015615cf35750805b601f850160051c820191505b81811015612e6b57828155600101615cff565b815167ffffffffffffffff811115615d2c57615d2c61566f565b615d4081615d3a8454615ab3565b84615cca565b602080601f831160018114615d755760008415615d5d5750858301515b600019600386901b1c1916600185901b178555612e6b565b600085815260208120601f198616915b82811015615da457888601518255948401946001909101908401615d85565b5085821015615dc25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008151808452602080850194506020840160005b838110156157e757815187529582019590820190600101615de7565b8281526040602082015260006135686040830184615dd2565b8281526060810160208083018460005b6002811015615e4957815183529183019190830190600101615e2c565b505050509392505050565b8060005b6003811015611ef7578151845260209384019390910190600101615e58565b6001600160a01b03841681526020810183905260a081016135686040830184615e54565b82815260808101611e426020830184615e54565b8060005b6004811015611ef7578151845260209384019390910190600101615eb3565b6001600160a01b03841681526020810183905260c081016135686040830184615eaf565b82815260a08101611e426020830184615eaf565b60008251615f1c818460208701615805565b9190910192915050565b60006101406001600160a01b03808e168452808d166020850152808c1660408501528a6060850152816080850152615f608285018b6157ad565b915083820360a0850152615f74828a615dd2565b60c085019890985295151560e0840152505091151561010083015290911661012090910152969550505050505056fea2646970667358221220ab698503170b7fa78b26f05d0bd7023e78e408836698f6f52318b5ce6fdd020d64736f6c63430008190033