0 txs
0 calls
constructor
constructor(address _convexLPToken, string _name, string _symbol)
functions
ADMIN_ROLE
viewfunction ADMIN_ROLE() view returns (bytes32)
allowance
viewfunction allowance(address, address) view returns (uint256)
asset
viewfunction asset() view returns (address)
balanceOf
viewfunction balanceOf(address) view returns (uint256)
convertToAssets
viewfunction convertToAssets(uint256 shares) view returns (uint256)
convertToParameterAssets
viewfunction convertToParameterAssets(uint256 amountOfShares, uint256 amountOfAssets) view returns (uint256)
convertToShares
viewfunction convertToShares(uint256 assets) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
EXECUTIVE_ROLE_2
viewfunction EXECUTIVE_ROLE_2() view returns (bytes32)
EXECUTIVE_ROLE
viewfunction EXECUTIVE_ROLE() view returns (bytes32)
getAddressExecutive
viewfunction getAddressExecutive() view returns (address)
getAddressExecutive2
viewfunction getAddressExecutive2() view returns (address)
getAddressZapper
viewfunction getAddressZapper() view returns (address)
getAdjustInEthProportion
viewfunction getAdjustInEthProportion() view returns (uint256)
getAdjustOutEthProportion
viewfunction getAdjustOutEthProportion() view returns (uint256)
getFeePercentage
viewfunction getFeePercentage() view returns (uint256)
getMaxEthOwnershipProportion
viewfunction getMaxEthOwnershipProportion() view returns (uint256)
getMinAmountOfEthToAdjustIn
viewfunction getMinAmountOfEthToAdjustIn() view returns (uint256)
getMinCoolDownForAdjustOut
viewfunction getMinCoolDownForAdjustOut() view returns (uint256)
getMinEthAmountForDoHardWork
viewfunction getMinEthAmountForDoHardWork() view returns (uint256)
getMinEthAmountInPool
viewfunction getMinEthAmountInPool() view returns (uint256)
getMinEthBalanceProportion
viewfunction getMinEthBalanceProportion() view returns (uint256)
getMinIdleEthForAction
viewfunction getMinIdleEthForAction() view returns (uint256)
getMinUnderlyingValue
viewfunction getMinUnderlyingValue() view returns (uint256)
getPullOutMinEthAmountModifier
viewfunction getPullOutMinEthAmountModifier() view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getStrategyZapper
viewfunction getStrategyZapper() view returns (address)
getTreasuryAddress
viewfunction getTreasuryAddress() view returns (address)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isPoolHealthy
viewfunction isPoolHealthy() view returns (bool, bool)
maxDeposit
viewfunction maxDeposit(address) view returns (uint256)
maxMint
viewfunction maxMint(address) view returns (uint256)
maxRedeem
viewfunction maxRedeem(address owner) view returns (uint256)
maxWithdraw
viewfunction maxWithdraw(address owner) view returns (uint256)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address) view returns (uint256)
paused
viewfunction paused() view returns (bool)
previewAdjustIn
viewfunction previewAdjustIn() view returns (uint256 _outputUnderlying, uint256 _amountOfEthToAdjust)
previewAdjustOut
viewfunction previewAdjustOut() view returns (uint256 _outputEthAmount)
previewDeposit
viewfunction previewDeposit(uint256 assets) view returns (uint256)
previewDoHardWork
viewfunction previewDoHardWork() view returns (uint256 _minOutputEth, uint256 _minOutputLP)
previewMint
viewfunction previewMint(uint256 shares) view returns (uint256)
previewRedeem
viewfunction previewRedeem(uint256 shares) view returns (uint256)
previewWithdraw
viewfunction previewWithdraw(uint256 assets) view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
totalAssets
viewfunction totalAssets() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
ZAPPER_ROLE
viewfunction ZAPPER_ROLE() view returns (bytes32)
acceptAdminRole
nonpayablefunction acceptAdminRole()
adjustIn
nonpayablefunction adjustIn(uint256 _minAmountOfLP)
adjustOut
nonpayablefunction adjustOut(uint256 _minOutputEthAmount)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
deposit
nonpayablefunction deposit(uint256 assets, address receiver) returns (uint256)
depositAndStake
nonpayablefunction depositAndStake(uint256 assets, address receiver) returns (uint256 shares)
depositWithoutShares
nonpayablefunction depositWithoutShares(uint256 _initialAmount)
doHardWork
nonpayablefunction doHardWork(uint256 _minETHAmount, uint256 _minCurveLPAmount)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address _curvePool, address _convexBoosterPool, address _convexRewardPool, uint256 _convexPoolId)
mint
nonpayablefunction mint(uint256 shares, address receiver) returns (uint256)
permit
nonpayablefunction permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
redeem
nonpayablefunction redeem(uint256 shares, address receiver, address owner) returns (uint256)
redeemAndUnstake
nonpayablefunction redeemAndUnstake(uint256 shares, address receiver, address owner) returns (uint256 assets)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setAdjustInEthProportion
nonpayablefunction setAdjustInEthProportion(uint256 _adjustInProportion)
setAdjustOutEthProportion
nonpayablefunction setAdjustOutEthProportion(uint256 _adjustOutProportion)
setAdmin
nonpayablefunction setAdmin(address newAdmin)
setExecutive
nonpayablefunction setExecutive(address newExecutive)
setExecutive2
nonpayablefunction setExecutive2(address newExecutive2)
setFeePercentage
nonpayablefunction setFeePercentage(uint256 _newFeePerc)
setMaxEthOwnershipProportion
nonpayablefunction setMaxEthOwnershipProportion(uint256 _maxOwnershipProportion)
setMinAmountOfEthToAdjustIn
nonpayablefunction setMinAmountOfEthToAdjustIn(uint256 _minAmountOfEthToAdjustIn)
setMinCoolDownForAdjustOut
nonpayablefunction setMinCoolDownForAdjustOut(uint256 _minCoolDownForAdjustOut)
setMinEthAmountForDoHardWork
nonpayablefunction setMinEthAmountForDoHardWork(uint256 _minEthAmountForDoHardWork)
setMinEthAmountInPool
nonpayablefunction setMinEthAmountInPool(uint256 _minAmountInPool)
setMinEthBalanceProportion
nonpayablefunction setMinEthBalanceProportion(uint256 _minBalanceProportion)
setMinIdleEthForAction
nonpayablefunction setMinIdleEthForAction(uint256 _minIdleEthForAction)
setMinUnderlyingValue
nonpayablefunction setMinUnderlyingValue(uint256 _minUnderlyingValue)
setPullOutMinEthAmountModifier
nonpayablefunction setPullOutMinEthAmountModifier(uint256 _pullOutMinModifier)
setTreasury
nonpayablefunction setTreasury(address _newTreasury)
setTreasuryAddress
nonpayablefunction setTreasuryAddress(address _treasuryAddress)
setZapper
nonpayablefunction setZapper(address newZapper)
setZapperAddress
nonpayablefunction setZapperAddress(address _zapperAddress)
sunset
nonpayablefunction sunset()
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
unSunset
nonpayablefunction unSunset()
withdraw
nonpayablefunction withdraw(uint256 assets, address receiver, address owner) returns (uint256)
events
AdjustedIn
event AdjustedIn(uint256 _outputUnderlying, uint256 _amountOfEthAdjusted)
Approval
event Approval(address indexed owner, address indexed spender, uint256 amount)
Deposit
event Deposit(address indexed caller, address indexed owner, uint256 assets, uint256 shares)
HardWorkDone
event HardWorkDone(uint256 crvAmount, uint256 cvxAmount, uint256 ethAmountBeforeFee, uint256 ethAmountAfterFee, uint256 convexLPTokens)
Paused
event Paused(address account)
PullOutDone
event PullOutDone(bool pullAll, uint256 convexLPTokens, uint256 ethAmount, uint256 minEthAmount)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
Transfer
event Transfer(address indexed from, address indexed to, uint256 amount)
Unpaused
event Unpaused(address account)
Withdraw
event Withdraw(address indexed caller, address indexed receiver, address indexed owner, uint256 assets, uint256 shares)
errors
No errors.
creation bytecode
0x610100604052601e600e556032600f5568056bc75e2d6310000060105560146011556050601255600a601355674563918244f40000601455670de0b6b3a76400006015556706f05b59d3b2000060165566038d7ea4c6800060175560006018556000601955615460601a55600a601b5560006027553480156200008157600080fd5b50604051620059cc380380620059cc833981016040819052620000a491620003bf565b8282828181846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200010e919062000449565b60006200011c848262000504565b5060016200012b838262000504565b5060ff81166080524660a05262000141620001b9565b60c052505050506001600160a01b0391821660e0525060016006556007805460ff19169055602180546001600160a01b031916918516919091179055620001b07fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775620001aa3390565b62000255565b5050506200064e565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051620001ed9190620005d0565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60008281526008602090815260408083206001600160a01b038516845290915290205460ff16620002f65760008281526008602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620002b53390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200032257600080fd5b81516001600160401b03808211156200033f576200033f620002fa565b604051601f8301601f19908116603f011681019082821181831017156200036a576200036a620002fa565b816040528381526020925086838588010111156200038757600080fd5b600091505b83821015620003ab57858201830151818301840152908201906200038c565b600093810190920192909252949350505050565b600080600060608486031215620003d557600080fd5b83516001600160a01b0381168114620003ed57600080fd5b60208501519093506001600160401b03808211156200040b57600080fd5b620004198783880162000310565b935060408601519150808211156200043057600080fd5b506200043f8682870162000310565b9150509250925092565b6000602082840312156200045c57600080fd5b815160ff811681146200046e57600080fd5b9392505050565b600181811c908216806200048a57607f821691505b602082108103620004ab57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004ff57600081815260208120601f850160051c81016020861015620004da5750805b601f850160051c820191505b81811015620004fb57828155600101620004e6565b5050505b505050565b81516001600160401b03811115620005205762000520620002fa565b620005388162000531845462000475565b84620004b1565b602080601f831160018114620005705760008415620005575750858301515b600019600386901b1c1916600185901b178555620004fb565b600085815260208120601f198616915b82811015620005a15788860151825594840194600190910190840162000580565b5085821015620005c05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808354620005e08162000475565b60018281168015620005fb5760018114620006115762000642565b60ff198416875282151583028701945062000642565b8760005260208060002060005b85811015620006395781548a8201529084019082016200061e565b50505082870194505b50929695505050505050565b60805160a05160c05160e0516153366200069660003960008181610820015281816134ea0152613ab3015260006116ef015260006116ba015260006107a501526153366000f3fe6080604052600436106104f05760003560e01c80637ecebe001161028c578063cd29e20b1161015a578063dd62ed3e116100cc578063f03adf8911610085578063f03adf8914610f9b578063f0f4426014610fb0578063f218b43314610fd0578063f6655d2814610fe5578063f6d9925a14610ffa578063fa5986a01461102657600080fd5b8063dd62ed3e14610edd578063de468a4914610f15578063df8a541714610f2a578063e002460414610f48578063e030428314610f66578063ef8b30f714610f7b57600080fd5b8063d537092f1161011e578063d537092f14610e12578063d547741f14610e32578063d89785ad14610e52578063d904b97914610e67578063d905777e14610e87578063d927355614610ebd57600080fd5b8063cd29e20b14610d5e578063ce96cb7714610d7e578063ceff2dad14610d9e578063cf756fdf14610dd2578063d505accf14610df257600080fd5b8063a217fddf116101fe578063b7bd6569116101b7578063b7bd656914610cd4578063ba08765214610ce9578063ba98da9614610d09578063bcaa89e314610d1e578063c63d75b614610857578063c6e6f59214610d3e57600080fd5b8063a217fddf14610c1d578063a9059cbb14610c32578063ae06c1b714610c52578063aecf62f014610c72578063b3d7f6b914610c94578063b460af9414610cb457600080fd5b806394bf804d1161025057806394bf804d14610b7357806395d89b4114610b935780639658bb5c14610ba8578063972ae18214610bc857806398c5142114610be85780639a6dbfa214610bfd57600080fd5b80637ecebe0014610ac757806380bddc2014610af457806384025d1a14610b145780638c3d730114610b3e57806391d1485414610b5357600080fd5b80633644e515116103c95780634e4b63261161033b5780636e553f65116102f45780636e553f6514610a03578063704b6c0214610a2357806370a0823114610a4357806375b238fc14610a7057806379838b9b14610a925780637c7bf3cb14610aa757600080fd5b80634e4b63261461094b5780634e844f091461096b57806356cff8091461098b578063579ba520146109ab5780635c975abb146109cb5780636605bfda146109e357600080fd5b8063420c8d4c1161038d578063420c8d4c146108795780634243517514610899578063459ae061146108b95780634b662b5a146108d75780634cdad506146108f75780634d4e3e0c1461091757600080fd5b80633644e515146107d957806336568abe146107ee57806338d52e0f1461080e5780633ae50c3a14610842578063402d267d1461085757600080fd5b806318160ddd11610462578063295daaa311610426578063295daaa31461070b5780632b2be7e51461072b5780632ba5c7c9146107495780632f2ff15d1461075e578063313059e61461077e578063313ce5671461079357600080fd5b806318160ddd146106705780631b5879121461068657806321ccc8e1146106a657806323b872dd146106bb578063248a9ca3146106db57600080fd5b806307a2d13a116104b457806307a2d13a146105a957806308aaeb11146105c9578063095ea7b3146105e95780630a28a4771461060957806311efbf6114610629578063135e93201461063e57600080fd5b806301e1d114146104fc57806301ffc9a714610520578063026164ad146105505780630599529d1461056757806306fdde031461058757600080fd5b366104f757005b600080fd5b34801561050857600080fd5b506027545b6040519081526020015b60405180910390f35b34801561052c57600080fd5b5061054061053b36600461499d565b611046565b6040519015158152602001610517565b34801561055c57600080fd5b5061056561107d565b005b34801561057357600080fd5b506105656105823660046149c7565b6110c4565b34801561059357600080fd5b5061059c611372565b6040516105179190614a04565b3480156105b557600080fd5b5061050d6105c43660046149c7565b611400565b3480156105d557600080fd5b506105656105e43660046149c7565b61142e565b3480156105f557600080fd5b50610540610604366004614a4c565b611467565b34801561061557600080fd5b5061050d6106243660046149c7565b6114d3565b34801561063557600080fd5b50601b5461050d565b34801561064a57600080fd5b506025546001600160a01b03165b6040516001600160a01b039091168152602001610517565b34801561067c57600080fd5b5061050d60025481565b34801561069257600080fd5b506105656106a1366004614a78565b6114f4565b3480156106b257600080fd5b5060105461050d565b3480156106c757600080fd5b506105406106d6366004614a95565b61154a565b3480156106e757600080fd5b5061050d6106f63660046149c7565b60009081526008602052604090206001015490565b34801561071757600080fd5b5061050d610726366004614ad6565b61162a565b34801561073757600080fd5b50600b546001600160a01b0316610658565b34801561075557600080fd5b50610565611650565b34801561076a57600080fd5b50610565610779366004614af8565b61168c565b34801561078a57600080fd5b5060125461050d565b34801561079f57600080fd5b506107c77f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610517565b3480156107e557600080fd5b5061050d6116b6565b3480156107fa57600080fd5b50610565610809366004614af8565b611711565b34801561081a57600080fd5b506106587f000000000000000000000000000000000000000000000000000000000000000081565b34801561084e57600080fd5b5060175461050d565b34801561086357600080fd5b5061050d610872366004614a78565b5060001990565b34801561088557600080fd5b506105656108943660046149c7565b6117dc565b3480156108a557600080fd5b506105656108b4366004614a78565b611815565b3480156108c557600080fd5b50600a546001600160a01b0316610658565b3480156108e357600080fd5b506105656108f2366004614a78565b6118fb565b34801561090357600080fd5b5061050d6109123660046149c7565b61198e565b34801561092357600080fd5b5061050d7fd624b04b6a86de88625cc0780256b85157c5a615db56d1357e0a97a30fde276781565b34801561095757600080fd5b5061050d610966366004614b28565b611999565b34801561097757600080fd5b506105656109863660046149c7565b6119ba565b34801561099757600080fd5b506105656109a63660046149c7565b6119f3565b3480156109b757600080fd5b506105656109c6366004614a78565b611a2c565b3480156109d757600080fd5b5060075460ff16610540565b3480156109ef57600080fd5b506105656109fe366004614a78565b611b13565b348015610a0f57600080fd5b5061050d610a1e366004614af8565b611b69565b348015610a2f57600080fd5b50610565610a3e366004614a78565b611c27565b348015610a4f57600080fd5b5061050d610a5e366004614a78565b60036020526000908152604090205481565b348015610a7c57600080fd5b5061050d6000805160206152e183398151915281565b348015610a9e57600080fd5b5060135461050d565b348015610ab357600080fd5b50610565610ac23660046149c7565b611cdf565b348015610ad357600080fd5b5061050d610ae2366004614a78565b60056020526000908152604090205481565b348015610b0057600080fd5b50610565610b0f3660046149c7565b611d18565b348015610b2057600080fd5b50610b29611d51565b60408051928352602083019190915201610517565b348015610b4a57600080fd5b50610565611e87565b348015610b5f57600080fd5b50610540610b6e366004614af8565b611f59565b348015610b7f57600080fd5b5061050d610b8e366004614af8565b611f84565b348015610b9f57600080fd5b5061059c611fcf565b348015610bb457600080fd5b50610565610bc33660046149c7565b611fdc565b348015610bd457600080fd5b50610565610be33660046149c7565b612045565b348015610bf457600080fd5b5060145461050d565b348015610c0957600080fd5b50610565610c18366004614ad6565b61210c565b348015610c2957600080fd5b5061050d600081565b348015610c3e57600080fd5b50610540610c4d366004614a4c565b612232565b348015610c5e57600080fd5b50610565610c6d3660046149c7565b601b55565b348015610c7e57600080fd5b5061050d6000805160206152a183398151915281565b348015610ca057600080fd5b5061050d610caf3660046149c7565b612298565b348015610cc057600080fd5b5061050d610ccf366004614b28565b6122b8565b348015610ce057600080fd5b5060155461050d565b348015610cf557600080fd5b5061050d610d04366004614b28565b612303565b348015610d1557600080fd5b5060115461050d565b348015610d2a57600080fd5b50610565610d393660046149c7565b6123c2565b348015610d4a57600080fd5b5061050d610d593660046149c7565b6123fb565b348015610d6a57600080fd5b50610565610d793660046149c7565b61241c565b348015610d8a57600080fd5b5061050d610d99366004614a78565b612455565b348015610daa57600080fd5b5061050d7f24a2df134ed27e6c6dee256f1af39c27a3e7fceb92d60a69bf237bd98d7cc18781565b348015610dde57600080fd5b50610565610ded366004614b6a565b612477565b348015610dfe57600080fd5b50610565610e0d366004614bca565b612887565b348015610e1e57600080fd5b5061050d610e2d366004614af8565b612acb565b348015610e3e57600080fd5b50610565610e4d366004614af8565b612af6565b348015610e5e57600080fd5b50601a5461050d565b348015610e7357600080fd5b50610565610e823660046149c7565b612b1b565b348015610e9357600080fd5b5061050d610ea2366004614a78565b6001600160a01b031660009081526003602052604090205490565b348015610ec957600080fd5b50610565610ed83660046149c7565b612b54565b348015610ee957600080fd5b5061050d610ef8366004614c3b565b600460209081526000928352604080842090915290825290205481565b348015610f2157600080fd5b50600e5461050d565b348015610f3657600080fd5b506009546001600160a01b0316610658565b348015610f5457600080fd5b50601c546001600160a01b0316610658565b348015610f7257600080fd5b5060165461050d565b348015610f8757600080fd5b5061050d610f963660046149c7565b612b8d565b348015610fa757600080fd5b50610b29612b98565b348015610fbc57600080fd5b50610565610fcb366004614a78565b611b47565b348015610fdc57600080fd5b50600f5461050d565b348015610ff157600080fd5b5061050d612bd7565b34801561100657600080fd5b5061100f612c1d565b604080519215158352901515602083015201610517565b34801561103257600080fd5b506105656110413660046149c7565b612d27565b60006001600160e01b03198216637965db0b60e01b148061107757506301ffc9a760e01b6001600160e01b03198316145b92915050565b6110956000805160206152e183398151915233611f59565b6110ba5760405162461bcd60e51b81526004016110b190614c69565b60405180910390fd5b6110c2612d60565b565b6110dc6000805160206152a183398151915233611f59565b6110f85760405162461bcd60e51b81526004016110b190614c96565b611100612dba565b60008061110b612c1d565b915091508161115c5760405162461bcd60e51b815260206004820152601b60248201527f706f6f6c2062616c616e6365206973206e6f74206865616c746879000000000060448201526064016110b1565b806111b75760405162461bcd60e51b815260206004820152602560248201527f6f776e65727368697020696e2074686520706f6f6c2061626f766520746872656044820152641cda1bdb1960da1b60648201526084016110b1565b601a546018546111c79042614ce3565b1161120b5760405162461bcd60e51b815260206004820152601460248201527318d85b9b9bdd0818591a9d5cdd081a5b881e595d60621b60448201526064016110b1565b6000611215612e13565b5090506000611222612ef4565b9050600061122f83612f88565b9050600061123d8383614ce3565b60255490915081906001600160a01b0316318181101561125b578091505b60155482116112b65760405162461bcd60e51b815260206004820152602160248201527f616d6f756e7420746f2061646a757374206973206c657373207468616e206d696044820152603760f91b60648201526084016110b1565b6025546040516304d328df60e41b8152600481018490526001600160a01b0390911690634d328df090602401600060405180830381600087803b1580156112fc57600080fd5b505af1158015611310573d6000803e3d6000fd5b505050506000611320838b612fa5565b60408051828152602081018690529192507fa9971ea00d44cc80a7bcb2be78dcba01c9714ab8db609ea6f898fbaa487b8e44910160405180910390a150505050505050505061136f6001600655565b50565b6000805461137f90614cf6565b80601f01602080910402602001604051908101604052809291908181526020018280546113ab90614cf6565b80156113f85780601f106113cd576101008083540402835291602001916113f8565b820191906000526020600020905b8154815290600101906020018083116113db57829003601f168201915b505050505081565b60025460009080156114255761142061141860275490565b849083613284565b611427565b825b9392505050565b6114466000805160206152e183398151915233611f59565b6114625760405162461bcd60e51b81526004016110b190614c69565b601655565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906114c29086815260200190565b60405180910390a350600192915050565b600254600090801561142557611420816114ec60275490565b8591906132a2565b61150c6000805160206152e183398151915233611f59565b6115285760405162461bcd60e51b81526004016110b190614c69565b602580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001981146115a6576115818382614ce3565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020526040812080548592906115ce908490614ce3565b90915550506001600160a01b03808516600081815260036020526040908190208054870190555190918716906000805160206152c1833981519152906116179087815260200190565b60405180910390a3506001949350505050565b600254600090801561164657611641848483613284565b611648565b835b949350505050565b6116686000805160206152e183398151915233611f59565b6116845760405162461bcd60e51b81526004016110b190614c69565b6110c26132c8565b6000828152600860205260409020600101546116a781613301565b6116b1838361330b565b505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146116ec576116e7613391565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6117296000805160206152e183398151915233611f59565b156117765760405162461bcd60e51b815260206004820152601b60248201527f41646d696e2063616e74207573652072656e6f756e6365526f6c65000000000060448201526064016110b1565b6001600160a01b03811633146117ce5760405162461bcd60e51b815260206004820181905260248201527f63616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c6660448201526064016110b1565b6117d8828261342b565b5050565b6117f46000805160206152e183398151915233611f59565b6118105760405162461bcd60e51b81526004016110b190614c69565b600e55565b61182d6000805160206152e183398151915233611f59565b6118495760405162461bcd60e51b81526004016110b190614c69565b600b546001600160a01b0390811690821681036118a85760405162461bcd60e51b815260206004820152601c60248201527f4e6577205a6170706572206d75737420626520646966666572656e740000000060448201526064016110b1565b6118c06000805160206152a18339815191528361330b565b6118d86000805160206152a18339815191528261342b565b50600980546001600160a01b0319166001600160a01b0392909216919091179055565b6119136000805160206152e183398151915233611f59565b61192f5760405162461bcd60e51b81526004016110b190614c69565b6009546001600160a01b0390811690821681036118a85760405162461bcd60e51b815260206004820152601f60248201527f4e657720457865637574697665206d75737420626520646966666572656e740060448201526064016110b1565b600061107782611400565b60006119a3612dba565b6119ae848484612303565b90506114276001600655565b6119d26000805160206152e183398151915233611f59565b6119ee5760405162461bcd60e51b81526004016110b190614c69565b601555565b611a0b6000805160206152e183398151915233611f59565b611a275760405162461bcd60e51b81526004016110b190614c69565b601355565b611a446000805160206152e183398151915233611f59565b611a605760405162461bcd60e51b81526004016110b190614c69565b600a546001600160a01b039081169082168103611abf5760405162461bcd60e51b815260206004820181905260248201527f4e65772045786563757469766532206d75737420626520646966666572656e7460448201526064016110b1565b611ae97f24a2df134ed27e6c6dee256f1af39c27a3e7fceb92d60a69bf237bd98d7cc1878361330b565b6118d87f24a2df134ed27e6c6dee256f1af39c27a3e7fceb92d60a69bf237bd98d7cc1878261342b565b611b2b6000805160206152e183398151915233611f59565b611b475760405162461bcd60e51b81526004016110b190614c69565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000611b836000805160206152e183398151915233611f59565b80611bb35750611bb37fd624b04b6a86de88625cc0780256b85157c5a615db56d1357e0a97a30fde276733611f59565b80611bd15750611bd16000805160206152a183398151915233611f59565b611c1d5760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f742041646d696e206f722053656c66000000000060448201526064016110b1565b6114278383613492565b611c3f6000805160206152e183398151915233611f59565b611c5b5760405162461bcd60e51b81526004016110b190614c69565b336001600160a01b03821603611cb35760405162461bcd60e51b815260206004820152601b60248201527f6e65772061646d696e206d75737420626520646966666572656e74000000000060448201526064016110b1565b600c80546001600160a01b03929092166001600160a01b0319928316179055600d805490911633179055565b611cf76000805160206152e183398151915233611f59565b611d135760405162461bcd60e51b81526004016110b190614c69565b601755565b611d306000805160206152e183398151915233611f59565b611d4c5760405162461bcd60e51b81526004016110b190614c69565b601455565b600080600080611d5f612c1d565b915091506000601a5460185442611d769190614ce3565b119050821580611d84575081155b80611d8d575080155b15611d9f575060009485945092505050565b6000611da9612e13565b5090506000611db6612ef4565b90506000611dc383612f88565b90506000611dd18383614ce3565b60255490915081906001600160a01b03163181811015611def578091505b602254604080518082018252848152600060208201819052915163ed8e84f360e01b815291926001600160a01b03169163ed8e84f391611e3491600190600401614d53565b602060405180830381865afa158015611e51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e759190614d70565b9c929b50919950505050505050505050565b600c546001600160a01b03161580611ea85750600d546001600160a01b0316155b15611eea5760405162461bcd60e51b81526020600482015260126024820152713737903737b6b4b730ba32b21030b236b4b760711b60448201526064016110b1565b600c54336001600160a01b03909116036110c257611f166000805160206152e18339815191523361330b565b600d54611f3b906000805160206152e1833981519152906001600160a01b031661342b565b600c80546001600160a01b0319908116909155600d80549091169055565b60009182526008602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60405162461bcd60e51b815260206004820152601760248201527f6d696e74206d6574686f64206e6f7420616c6c6f77656400000000000000000060448201526000906064016110b1565b6001805461137f90614cf6565b6000811161203a5760405162461bcd60e51b815260206004820152602560248201527f696e697469616c20616d6f756e74206d75737420626520677265617465722074604482015264068616e20360dc1b60648201526084016110b1565b6117d8816000611b69565b61205d6000805160206152a183398151915233611f59565b6120795760405162461bcd60e51b81526004016110b190614c96565b612081612dba565b60008061208c612c1d565b9150915081158061209b575080155b6120d95760405162461bcd60e51b815260206004820152600f60248201526e706f6f6c206973206865616c74687960881b60448201526064016110b1565b816120e7576120e78361356c565b801580156120f25750815b15612100576121008361359f565b505061136f6001600655565b6121246000805160206152a183398151915233611f59565b6121405760405162461bcd60e51b81526004016110b190614c96565b600080600061214e8561361c565b92509250925060165481116121be5760405162461bcd60e51b815260206004820152603060248201527f65746820616d6f756e742066726f6d2072657761726473206c6573732074686160448201526f6e206d696e20746f206f70657261746560801b60648201526084016110b1565b60006121c98261392e565b905060006121d78287612fa5565b604080518781526020810187905290810185905260608101849052608081018290529091507f36c6b6569ae53e147326578fb4198f206c4ba3f0a98e8e78e7cc5de86f1648b09060a00160405180910390a150505050505050565b33600090815260036020526040812080548391908390612253908490614ce3565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133906000805160206152c1833981519152906114c29086815260200190565b6002546000908015611425576114206122b060275490565b8490836132a2565b60405162461bcd60e51b815260206004820152601b60248201527f7769746864726177206d6574686f64206e6f7420616c6c6f776564000000000060448201526000906064016110b1565b600061231d6000805160206152e183398151915233611f59565b8061234d575061234d7fd624b04b6a86de88625cc0780256b85157c5a615db56d1357e0a97a30fde276733611f59565b8061236b575061236b6000805160206152a183398151915233611f59565b6123b75760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f742041646d696e206f722053656c66000000000060448201526064016110b1565b61164884848461398e565b6123da6000805160206152e183398151915233611f59565b6123f65760405162461bcd60e51b81526004016110b190614c69565b601155565b6002546000908015611425576114208161241460275490565b859190613284565b6124346000805160206152e183398151915233611f59565b6124505760405162461bcd60e51b81526004016110b190614c69565b601255565b6001600160a01b03811660009081526003602052604081205461107790611400565b61248f6000805160206152e183398151915233611f59565b6124ab5760405162461bcd60e51b81526004016110b190614c69565b601c54600160a01b900460ff16156125055760405162461bcd60e51b815260206004820152601c60248201527f636f6e747261637420616c726561647920696e697469616c697a65640000000060448201526064016110b1565b602280546001600160a01b038087166001600160a01b0319928316179092556023805486841690831617905560248054858416908316179055601e8054821673d533a949740bb3306d119cc777fa900ba034cd52179055601f80548216734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b17905560208054821673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790556026839055601d805490911673e592427a0aece92de3edee1f18e0157c0586156417905560215460405163095ea7b360e01b815291169063095ea7b3906125fb908590600019906004016001600160a01b03929092168252602082015260400190565b6020604051808303816000875af115801561261a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263e9190614d89565b5060205460405163095ea7b360e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600482015260001960248201526001600160a01b039091169063095ea7b3906044016020604051808303816000875af11580156126a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c99190614d89565b50601e54601d5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015612720573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127449190614d89565b50601f54601d5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801561279b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127bf9190614d89565b5060225460235460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015612816573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283a9190614d89565b50600a601b55601c80546001600160a01b0319163317905561285c6108f23390565b61286533611a2c565b61286e33611815565b5050601c805460ff60a01b1916600160a01b1790555050565b428410156128d75760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016110b1565b600060016128e36116b6565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa1580156129ef573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590612a255750876001600160a01b0316816001600160a01b0316145b612a625760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b60448201526064016110b1565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b6000612ad5612dba565b612add613ada565b6000612ae98484611b69565b9150506110776001600655565b600082815260086020526040902060010154612b1181613301565b6116b1838361342b565b612b336000805160206152e183398151915233611f59565b612b4f5760405162461bcd60e51b81526004016110b190614c69565b600f55565b612b6c6000805160206152e183398151915233611f59565b612b885760405162461bcd60e51b81526004016110b190614c69565b601055565b6000611077826123fb565b60405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a5b5c1b195b595b9d1959608a1b604482015260009081906064016110b1565b6000806000612be4612c1d565b9150915081612bfc57612bf5613b20565b9250505090565b818015612c07575080155b15612c1457612bf5613b30565b60009250505090565b600080600080612c2b612e13565b90925090506000612c3c8284614dab565b90506000612c48613b99565b9150506000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612caf9190614dbe565b9050601260ff82161015612ce5576000612cca826012614ddb565b9050612cd781600a614ed8565b612ce19086614ee7565b9450505b6000612cf18685613c89565b600e5490915081116000612d03612ef4565b90506000612d11828a613ca1565b600f54939c93119a509198505050505050505050565b612d3f6000805160206152e183398151915233611f59565b612d5b5760405162461bcd60e51b81526004016110b190614c69565b601a55565b612d68613ada565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612d9d3390565b6040516001600160a01b03909116815260200160405180910390a1565b600260065403612e0c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016110b1565b6002600655565b6000806000602260009054906101000a90046001600160a01b03166001600160a01b03166314f059796040518163ffffffff1660e01b81526004016040805180830381865afa158015612e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8e9190614f41565b80516020820151919250908115801590612ea757508015155b612eea5760405162461bcd60e51b8152602060048201526014602482015273139bc81b1a5c5d5a591a5d1e481a5b881c1bdbdb60621b60448201526064016110b1565b9094909350915050565b600080612f0060275490565b905080600003612f1257600091505090565b60225460405163cc2b27d760e01b815260048101839052600060248201819052916001600160a01b03169063cc2b27d7906044015b602060405180830381865afa158015612f64573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114279190614d70565b600080612f99600f54601254613cae565b90506114278382613cae565b6022546040805180820182528481526000602082018190529151630b4c7e4d60e01b815291926001600160a01b031691630b4c7e4d918691612fec91908690600401614fd7565b6000604051808303818588803b15801561300557600080fd5b505af1158015613019573d6000803e3d6000fd5b50506022546040516370a0823160e01b8152306004820152600094506001600160a01b0390911692506370a082319150602401602060405180830381865afa158015613069573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308d9190614d70565b9050828110156131055760405162461bcd60e51b815260206004820152603860248201527f4375727665204c5020746f6b656e20616d6f756e74206973206c65737320746860448201527f616e20746865206d696e696d756d20737065636966696564000000000000000060648201526084016110b1565b6023546026546040516321d0683360e11b8152600481019190915260248101839052600060448201526001600160a01b03909116906343a0d066906064016020604051808303816000875af1158015613162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131869190614d89565b506021546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156131d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131f49190614d70565b905080602760008282546132089190614dab565b90915550506024805460405163534a7e1d60e11b8152600481018490526001600160a01b039091169163a694fc3a91016020604051808303816000875af1158015613257573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061327b9190614d89565b50949350505050565b600082600019048411830215820261329b57600080fd5b5091020490565b60008260001904841183021582026132b957600080fd5b50910281810615159190040190565b6132d0613cbc565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33612d9d565b61136f8133613d05565b6133158282611f59565b6117d85760008281526008602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561334d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516133c39190614ff2565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6134358282611f59565b156117d85760008281526008602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600061349d83612b8d565b9050806000036134dd5760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f53484152455360a81b60448201526064016110b1565b6135126001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086613d5e565b61351c8282613de8565b60408051848152602081018390526001600160a01b0384169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7910160405180910390a36110778382613e42565b600060175460275461357e9190614ce3565b905061358a8183613ecc565b806027546135989190614ce3565b6027555050565b60006135a9612ef4565b905060006135b982601154613cae565b905060006135c78284614ce3565b90506014548110156135e1576135dc8461356c565b613616565b60006135f1602754601154613cae565b90506135fd8186613ecc565b806027600082825461360f9190614ce3565b9091555050505b50505050565b6000806000602460009054906101000a90046001600160a01b03166001600160a01b0316633d18b9126040518163ffffffff1660e01b81526004016020604051808303816000875af1158015613676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061369a9190614d89565b50601e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156136e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137089190614d70565b601f546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015613756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377a9190614d70565b9050600082118061378b5750600081115b6137d75760405162461bcd60e51b815260206004820152601960248201527f6e6f207265776172647320746f207265636f6d706f756e64200000000000000060448201526064016110b1565b6137e28260006141da565b6137ed816000614382565b6020546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015613836573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061385a9190614d70565b9050868110156138c25760405162461bcd60e51b815260206004820152602d60248201527f45544820616d6f756e74206973206c657373207468616e20746865206d696e6960448201526c1b5d5b481cdc1958da599a5959609a1b60648201526084016110b1565b602054604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561390857600080fd5b505af115801561391c573d6000803e3d6000fd5b50949993985091965091945050505050565b60008061393d83601b54613cae565b9050600061394b8285614ce3565b601c546040519192506001600160a01b03169083156108fc029084906000818181858888f19350505050158015613986573d6000803e3d6000fd5b509392505050565b6000336001600160a01b038316146139fe576001600160a01b038216600090815260046020908152604080832033845290915290205460001981146139fc576139d78582614ce3565b6001600160a01b03841660009081526004602090815260408083203384529091529020555b505b613a078461198e565b905080600003613a475760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f41535345545360a81b60448201526064016110b1565b613a51818561464e565b613a5b82856146d8565b60408051828152602081018690526001600160a01b03808516929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a46114276001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016848361473a565b60075460ff16156110c25760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016110b1565b60275460009081611427826147b2565b600080613b3b612ef4565b90506000613b4b82601154613cae565b90506000613b598284614ce3565b9050601454811015613b7557613b6d613b20565b935050505090565b6000613b85602754601154613cae565b9050613b90816147b2565b94505050505090565b60225460405163c661065760e01b815260006004820181905291829182916001600160a01b03169063c661065790602401602060405180830381865afa158015613be7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c0b9190615091565b60225460405163c661065760e01b8152600160048201529192506000916001600160a01b039091169063c661065790602401602060405180830381865afa158015613c5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c7e9190615091565b919491935090915050565b600081613c97606485614ee7565b61142791906150ae565b6000806116488484613c89565b60006064613c978385614ee7565b60075460ff166110c25760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016110b1565b613d0f8282611f59565b6117d857613d1c816147ef565b613d27836020614801565b604051602001613d389291906150d0565b60408051601f198184030181529082905262461bcd60e51b82526110b191600401614a04565b60006040516323b872dd60e01b81528460048201528360248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080613de15760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b60448201526064016110b1565b5050505050565b8060026000828254613dfa9190614dab565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481526000805160206152c183398151915291015b60405180910390a35050565b6024805460405163534a7e1d60e11b8152600481018590526001600160a01b039091169163a694fc3a91016020604051808303816000875af1158015613e8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eb09190614d89565b508160276000828254613ec39190614dab565b90915550505050565b600082602754613edc9190614ce3565b9050601754811015613f4d5760405162461bcd60e51b815260206004820152603460248201527f616d6f756e7420746f2070756c6c206f757420776f756c64206c65617665206c604482015273195cdcc81d1a185b881b5a5b88185b1b1bddd95960621b60648201526084016110b1565b60248054604051631c683a1b60e11b8152600481018690526000928101929092526001600160a01b0316906338d07436906044016020604051808303816000875af1158015613fa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fc49190614d89565b50602354602654604051630441a3e760e41b81526001600160a01b039092169163441a3e7091614001918790600401918252602082015260400190565b6020604051808303816000875af1158015614020573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140449190614d89565b506022546017546000916001600160a01b031690631a4d01d2906140689087614ce3565b6040516001600160e01b031960e084901b168152600481019190915260006024820152604481018690526064016020604051808303816000875af11580156140b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140d89190614d70565b90508281116141355760405162461bcd60e51b8152602060048201526024808201527f616d6f756e7420746f2070756c6c206f7574206973206c657373207468616e20604482015263036b4b7160e51b60648201526084016110b1565b6025546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561416f573d6000803e3d6000fd5b5060006017546027546141829190614ce3565b60408051918714808352602083018890529082018490526060820186905291507f1f36b536bb8a607f82109586f99920578d84f5271ec2be7c8d9d5d3dd527c5619060800160405180910390a1505042601855505050565b6040805160028082526060820183526000926020830190803683375050601e5482519293506001600160a01b03169183915060009061421b5761421b614fc1565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061426357614263614fc1565b6001600160a01b039283166020918202929092010152601d546040805161010081019091528351919092169163414bf38991819085906000906142a8576142a8614fc1565b60200260200101516001600160a01b03168152602001846001815181106142d1576142d1614fc1565b6020908102919091018101516001600160a01b03168252610bb8908201523060408201526060016143044261012c614dab565b815260200186815260200185815260200160006001600160a01b03168152506040518263ffffffff1660e01b815260040161433f9190615145565b6020604051808303816000875af115801561435e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136169190614d70565b6040805160028082526060820183526000926020830190803683375050601f5482519293506001600160a01b0316918391506000906143c3576143c3614fc1565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061440b5761440b614fc1565b6001600160a01b039283166020918202929092010152601f54601d5460405163095ea7b360e01b81529083166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801561446f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144939190614d89565b50601d60009054906101000a90046001600160a01b03166001600160a01b031663414bf389604051806101000160405280846000815181106144d7576144d7614fc1565b60200260200101516001600160a01b031681526020018460018151811061450057614500614fc1565b6020908102919091018101516001600160a01b031682526127109082015230604082015260600161453442620493e0614dab565b815260200186815260200185815260200160006001600160a01b03168152506040518263ffffffff1660e01b815260040161456f9190615145565b6020604051808303816000875af19250505080156145aa575060408051601f3d908101601f191682019092526145a791810190614d70565b60015b613616576145b66151ae565b806308c379a0036145e657506145ca6151ca565b806145d557506145e8565b80604051602001613d389190615254565b505b3d808015614612576040519150601f19603f3d011682016040523d82523d6000602084013e614617565b606091505b5060405162461bcd60e51b815260206004820152600b60248201526a14ddd85c0819985a5b195960aa1b60448201526064016110b1565b60248054604051631c683a1b60e11b8152600481018590526000928101929092526001600160a01b0316906338d07436906044016020604051808303816000875af11580156146a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146c59190614d89565b508160276000828254613ec39190614ce3565b6001600160a01b03821660009081526003602052604081208054839290614700908490614ce3565b90915550506002805482900390556040518181526000906001600160a01b038416906000805160206152c183398151915290602001613e36565b600060405163a9059cbb60e01b8152836004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806136165760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b60448201526064016110b1565b60225460405163cc2b27d760e01b8152600481018390526000602482018190529182916001600160a01b039091169063cc2b27d790604401612f47565b60606110776001600160a01b03831660145b60606000614810836002614ee7565b61481b906002614dab565b67ffffffffffffffff81111561483357614833614efe565b6040519080825280601f01601f19166020018201604052801561485d576020820181803683370190505b509050600360fc1b8160008151811061487857614878614fc1565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106148a7576148a7614fc1565b60200101906001600160f81b031916908160001a90535060006148cb846002614ee7565b6148d6906001614dab565b90505b600181111561494e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061490a5761490a614fc1565b1a60f81b82828151811061492057614920614fc1565b60200101906001600160f81b031916908160001a90535060049490941c9361494781615289565b90506148d9565b5083156114275760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016110b1565b6000602082840312156149af57600080fd5b81356001600160e01b03198116811461142757600080fd5b6000602082840312156149d957600080fd5b5035919050565b60005b838110156149fb5781810151838201526020016149e3565b50506000910152565b6020815260008251806020840152614a238160408501602087016149e0565b601f01601f19169190910160400192915050565b6001600160a01b038116811461136f57600080fd5b60008060408385031215614a5f57600080fd5b8235614a6a81614a37565b946020939093013593505050565b600060208284031215614a8a57600080fd5b813561142781614a37565b600080600060608486031215614aaa57600080fd5b8335614ab581614a37565b92506020840135614ac581614a37565b929592945050506040919091013590565b60008060408385031215614ae957600080fd5b50508035926020909101359150565b60008060408385031215614b0b57600080fd5b823591506020830135614b1d81614a37565b809150509250929050565b600080600060608486031215614b3d57600080fd5b833592506020840135614b4f81614a37565b91506040840135614b5f81614a37565b809150509250925092565b60008060008060808587031215614b8057600080fd5b8435614b8b81614a37565b93506020850135614b9b81614a37565b92506040850135614bab81614a37565b9396929550929360600135925050565b60ff8116811461136f57600080fd5b600080600080600080600060e0888a031215614be557600080fd5b8735614bf081614a37565b96506020880135614c0081614a37565b955060408801359450606088013593506080880135614c1e81614bbb565b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215614c4e57600080fd5b8235614c5981614a37565b91506020830135614b1d81614a37565b60208082526013908201527221b0b63632b91034b9903737ba1020b236b4b760691b604082015260600190565b60208082526017908201527f43616c6c6572206973206e6f7420457865637574697665000000000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561107757611077614ccd565b600181811c90821680614d0a57607f821691505b602082108103614d2a57634e487b7160e01b600052602260045260246000fd5b50919050565b8060005b6002811015613616578151845260209384019390910190600101614d34565b60608101614d618285614d30565b82151560408301529392505050565b600060208284031215614d8257600080fd5b5051919050565b600060208284031215614d9b57600080fd5b8151801515811461142757600080fd5b8082018082111561107757611077614ccd565b600060208284031215614dd057600080fd5b815161142781614bbb565b60ff828116828216039081111561107757611077614ccd565b600181815b80851115614e2f578160001904821115614e1557614e15614ccd565b80851615614e2257918102915b93841c9390800290614df9565b509250929050565b600082614e4657506001611077565b81614e5357506000611077565b8160018114614e695760028114614e7357614e8f565b6001915050611077565b60ff841115614e8457614e84614ccd565b50506001821b611077565b5060208310610133831016604e8410600b8410161715614eb2575081810a611077565b614ebc8383614df4565b8060001904821115614ed057614ed0614ccd565b029392505050565b600061142760ff841683614e37565b808202811582820484141761107757611077614ccd565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715614f3a57614f3a614efe565b6040525050565b600060408284031215614f5357600080fd5b82601f830112614f6257600080fd5b6040516040810181811067ffffffffffffffff82111715614f8557614f85614efe565b8060405250806040840185811115614f9c57600080fd5b845b81811015614fb6578051835260209283019201614f9e565b509195945050505050565b634e487b7160e01b600052603260045260246000fd5b60608101614fe58285614d30565b8260408301529392505050565b600080835481600182811c91508083168061500e57607f831692505b6020808410820361502d57634e487b7160e01b86526022600452602486fd5b818015615041576001811461505657615083565b60ff1986168952841515850289019650615083565b60008a81526020902060005b8681101561507b5781548b820152908501908301615062565b505084890196505b509498975050505050505050565b6000602082840312156150a357600080fd5b815161142781614a37565b6000826150cb57634e487b7160e01b600052601260045260246000fd5b500490565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516151088160178501602088016149e0565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516151398160288401602088016149e0565b01602801949350505050565b81516001600160a01b03908116825260208084015182169083015260408084015162ffffff16908301526060808401518216908301526080808401519083015260a0838101519083015260c0808401519083015260e09283015116918101919091526101000190565b600060033d11156151c75760046000803e5060005160e01c5b90565b600060443d10156151d85790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561520857505050505090565b82850191508151818111156152205750505050505090565b843d870101602082850101111561523a5750505050505090565b61524960208286010187614f14565b509095945050505050565b6c029bbb0b8103330b4b632b21d1609d1b81526000825161527c81600d8501602087016149e0565b91909101600d0192915050565b60008161529857615298614ccd565b50600019019056fee4eefbff6f5adc6b3fe0d11f14a3859decb3df1f4c82933fc6c1f8b498cc4a7dddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a26469706673582212201603200fea0d2b8aebfae8316db714169f8dd007cd0f322a639c8c3ac74ac8f764736f6c634300081200330000000000000000000000001ff2f5ac73cc4dc06705f48cfbf503f440bdbf6d000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000001d47617572647261696c6564206d7345544820436f6e76657820506f6f6c0000000000000000000000000000000000000000000000000000000000000000000009676376786d734554480000000000000000000000000000000000000000000000