0 txs
24 calls
constructor
constructor()
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
allowedClosers
viewfunction allowedClosers(address) view returns (bool)
allowedSenders
viewfunction allowedSenders(address) view returns (bool)
allUsers
viewfunction allUsers(uint256) view returns (address)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
burner
viewfunction burner(address) view returns (bool)
debtAdjustmentValues
viewfunction debtAdjustmentValues(address) view returns (uint256 debtAdjustment, uint256 time, uint256 debtValueRatio)
decimals
viewfunction decimals() view returns (uint8)
depositRecord
viewfunction depositRecord(bytes32) view returns (address user, uint256 depositedAmount, uint256 receivedMarketTokens, uint256 shortTokenBorrowed, uint256 longTokenBorrowed, uint256 feesPaid, bool success, uint16 leverageMultiplier, address longToken)
DTVLimit
viewfunction DTVLimit() view returns (uint256)
DTVSlippage
viewfunction DTVSlippage() view returns (uint256)
feeConfiguration
viewfunction feeConfiguration() view returns (uint256 withdrawalFee, uint256 liquidatorsRewardPercentage, address feeReceiver, address longTokenWaterFeeReceiver, address shortTokenWaterFeeReceiver, uint256 fixedFeeSplit, uint256 gmxOpenCloseFees)
getAllUsers
viewfunction getAllUsers() view returns (address[])
getEstimatedCurrentPosition
viewfunction getEstimatedCurrentPosition(uint256 _positionID, address _user) view returns (uint256 currentValueInUSDC, uint256 previousValueInUSDC)
getEstimatedGMPrice
viewfunction getEstimatedGMPrice(address _longToken) view returns (uint256)
getPositionOpenTimestamp
viewfunction getPositionOpenTimestamp(address _user, uint256 _positionId) view returns (uint256)
getTotalOpenPosition
viewfunction getTotalOpenPosition(address _user) view returns (uint256)
getUpdatedDebt
viewfunction getUpdatedDebt(uint256 _positionID, address _user) view returns (uint256, uint256, uint256)
gmxAddresses
viewfunction gmxAddresses() view returns (address depositHandler, address withdrawalHandler, address depositVault, address withdrawVault, address gmxRouter, address exchangeRouter)
gmxPoolAddresses
viewfunction gmxPoolAddresses(address) view returns (address longToken, address shortToken, address marketToken, address indexToken, address longTokenVault, address shortTokenVault)
inCloseProcess
viewfunction inCloseProcess(address, uint256) view returns (bool)
isKeeperClosingPosition
viewfunction isKeeperClosingPosition(bytes32) view returns (bool)
isUser
viewfunction isUser(address) view returns (bool)
isWhitelistedAsset
viewfunction isWhitelistedAsset(address) view returns (bool)
keeper
viewfunction keeper() view returns (address)
MCPID
viewfunction MCPID() view returns (uint256)
mFeePercent
viewfunction mFeePercent() view returns (uint256)
mFeeReceiver
viewfunction mFeeReceiver() view returns (address)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
positionDebt
viewfunction positionDebt(address, uint256) view returns (uint256 longDebtValue, uint256 shortDebtValue)
positionInfo
viewfunction positionInfo(address, uint256) view returns (uint256 deposit, uint256 position, uint256 price, uint256 closedPositionValue, uint256 closePNL, address user, uint32 positionId, address liquidator, uint16 leverageMultiplier, bool closed, bool liquidated, address longToken)
strategyAddresses
viewfunction strategyAddresses() view returns (address USDC, address MasterChef, address WaterContract, address VodkaHandler, address WETH, address WaterLendingHandler, address univ3Router)
strategyMisc
viewfunction strategyMisc() view returns (uint256 MAX_LEVERAGE, uint256 MIN_LEVERAGE, uint256 DECIMAL, uint256 MAX_BPS)
symbol
viewfunction symbol() view returns (string)
timeAdjustment
viewfunction timeAdjustment() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
userDebtAdjustmentValue
viewfunction userDebtAdjustmentValue(address, uint256) view returns (uint256 longDebtValue, uint256 shortDebtValue)
userDepositKeyRecords
viewfunction userDepositKeyRecords(address, uint256) view returns (bytes32)
userWithdrawKeyRecords
viewfunction userWithdrawKeyRecords(address, uint256) view returns (bytes32)
vaultMaturityTime
viewfunction vaultMaturityTime() view returns (uint256)
withdrawRecord
viewfunction withdrawRecord(bytes32) view returns (address user, uint256 returnedUSDC, uint256 positionID, bool success, bool isLiquidation, address longToken, uint256 returnedLongAmount, address liquidator)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
burn
nonpayablefunction burn(uint256 amount)
burnFrom
nonpayablefunction burnFrom(address account, uint256 amount)
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
fulfillClosePosition
nonpayablefunction fulfillClosePosition(bytes32 _key, uint256 _returnedLongAmount, uint256 _returnedUSDC, uint256 _profit) returns (bool)
fulfillLiquidation
nonpayablefunction fulfillLiquidation(bytes32 _key, uint256 _returnedLongAmount, uint256 _returnedUSDC) returns (bool)
fulfillOpenPosition
nonpayablefunction fulfillOpenPosition(bytes32 key, uint256 _receivedTokens) returns (bool)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
increaseLeverageUserPOD
nonpayablefunction increaseLeverageUserPOD(address _user, uint256 _positionID, uint256 podAmount)
initialize
nonpayablefunction initialize(address _waterLendingHandler)
renounceOwnership
nonpayablefunction renounceOwnership()
requestClosePosition
payablefunction requestClosePosition(uint256 _positionID, address _user) payable
requestLiquidatePosition
payablefunction requestLiquidatePosition(address _user, uint256 _positionID) payable
requestOpenPosition
payablefunction requestOpenPosition(uint256 _amount, uint16 _leverage, address _longAsset) payable
setAllowed
nonpayablefunction setAllowed(address _sender, bool _allowed)
setAssetWhitelist
nonpayablefunction setAssetWhitelist(address _asset, address _longToken, address _shortToken, address _marketToken, address _indexToken, bool _status, address _longTokenVault, address _shortTokenVault)
setCloser
nonpayablefunction setCloser(address _closer, bool _allowed)
setDTVLimit
nonpayablefunction setDTVLimit(uint256 _DTVLimit, uint256 _DTVSlippage)
setMFeePercent
nonpayablefunction setMFeePercent(uint256 _mFeePercent, address _mFeeReceiver)
setProtocolFee
nonpayablefunction setProtocolFee(address _feeReceiver, uint256 _withdrawalFee, address _longTokenWaterFeeReceiver, address _shortTokenWaterFeeReceiver, uint256 _liquidatorsRewardPercentage, uint256 _fixedFeeSplit, uint256 _gmxOpenCloseFees)
setVaultMaturityTime
nonpayablefunction setVaultMaturityTime(uint256 _timeInSeconds)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Deposited
event Deposited(address indexed depositer, uint256 depositTokenAmount, uint256 createdAt, uint256 GMXMarketAmount, address longToken, uint256 _positionID)
Initialized
event Initialized(uint8 version)
Liquidated
event Liquidated(address indexed user, uint256 indexed positionId, address liquidator, uint256 amount, uint256 reward)
Liquidation
event Liquidation(address indexed liquidator, address indexed borrower, uint256 positionId, uint256 liquidatedAmount, uint256 outputAmount, uint256 time)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
ProtocolFeeChanged
event ProtocolFeeChanged(address newFeeReceiver, uint256 newWithdrawalFee, address newLongVaultWaterFeeReceiver, address newShortVaultWaterFeeReceiver, uint256 liquidatorsRewardPercentage, uint256 gmxFees)
SetAllowedSenders
event SetAllowedSenders(address indexed sender, bool allowed)
SetBurner
event SetBurner(address indexed burner, bool allowed)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unpaused
event Unpaused(address account)
WithdrawalFulfilled
event WithdrawalFulfilled(address indexed user, uint256 amount, uint256 time, uint256 returnedUSDC, uint256 waterProfit, uint256 leverageUserProfit, address longToken, uint256 positionID, uint256 gmTokenWithdrawnAmount)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615def80620000f36000396000f3fe6080604052600436106102f85760003560e01c806306fdde031461040b578063095ea7b3146104365780630c243aa4146104665780630c71c943146104945780630df7b5ca146104ec578063100e196d1461050357806318160ddd146105985780631c9fbd38146105ad57806322c3a752146105cd57806323b872dd146105ed578063313ce5671461060d578063351bdfc714610629578063395093511461067e5780633edf0bf21461069e5780634209fff1146106cf57806342966c68146107005780634697f05d146107205780634a548e34146107405780634af0344b14610757578063546fcf391461078557806355c4347b1461085657806358c76b12146108765780635c975abb146108895780635fdf030f146108a157806364586284146108b45780636625fb261461097257806370a0823114610992578063715018a6146109b2578063778cf1ec146109c757806379cc6790146109de57806379ce97c0146109fe5780637bb1701414610a1e5780637c3b532314610a355780637dd6b58a14610a555780637e85648414610a91578063862a820814610ac25780638da5cb5b14610ae25780638defc95714610af75780639137be7a14610b2e57806395d89b4114610b4e57806398c47e8c14610b635780639b374eef14610bea5780639c735fbb14610c0a578063a2bdedf414610cb2578063a457c2d714610cd2578063a9059cbb14610cf2578063ab1dc42714610d12578063aced166114610d43578063b9b1e4da14610d64578063ba50b9fb14610d84578063bb67f74a14610dc9578063be9cdf6e14610dfa578063c4d66de814610e1a578063cf9379c214610e3a578063d0e6a91714610e4d578063dd62ed3e14610e64578063de87eb5014610e84578063de91a5e514610ec8578063e04ac7a914610f00578063e2842d7914610f37578063ed4fec7314610f59578063f019b3f314610f70578063f2fde38b14610f90578063f4abf03714610fb0578063fadbcf4814610fd0578063fe37aa2114611001578063fe7eb67e1461102157600080fd5b3661040657610134546001600160a01b03163314806103225750610135546001600160a01b031633145b61035d5760405162461bcd60e51b815260206004820152600760248201526609cdee840cedaf60cb1b60448201526064015b60405180910390fd5b61013d5460408051630bf05d7560e31b815290516001600160a01b0390921691635f82eba8916004808201926020929091908290030181865afa1580156103a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103cc91906152a1565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610404573d6000803e3d6000fd5b005b600080fd5b34801561041757600080fd5b50610420611041565b60405161042d91906152e2565b60405180910390f35b34801561044257600080fd5b50610456610451366004615315565b6110d3565b604051901515815260200161042d565b34801561047257600080fd5b50610486610481366004615315565b6110ed565b60405190815260200161042d565b3480156104a057600080fd5b506104d16104af366004615341565b6101596020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161042d565b3480156104f857600080fd5b5061048661014a5481565b34801561050f57600080fd5b5061013a5461013b5461013c5461013d5461013e5461013f546101405461054f966001600160a01b03908116968116958116948116938116928116911687565b604080516001600160a01b039889168152968816602088015294871694860194909452918516606085015284166080840152831660a083015290911660c082015260e00161042d565b3480156105a457600080fd5b5060cb54610486565b3480156105b957600080fd5b506104046105c8366004615379565b61111f565b3480156105d957600080fd5b506104046105e83660046153b2565b611153565b3480156105f957600080fd5b506104566106083660046153d4565b611168565b34801561061957600080fd5b506040516012815260200161042d565b34801561063557600080fd5b50610669610644366004615315565b6101576020908152600092835260408084209091529082529020805460019091015482565b6040805192835260208301919091520161042d565b34801561068a57600080fd5b50610456610699366004615315565b61120c565b3480156106aa57600080fd5b506104566106b9366004615415565b6101916020526000908152604090205460ff1681565b3480156106db57600080fd5b506104566106ea366004615341565b6101546020526000908152604090205460ff1681565b34801561070c57600080fd5b5061040461071b366004615415565b61122e565b34801561072c57600080fd5b5061040461073b366004615379565b61126b565b34801561074c57600080fd5b506104866101485481565b34801561076357600080fd5b5061018d54610778906001600160a01b031681565b60405161042d919061542e565b34801561079157600080fd5b506108006107a0366004615415565b61014e6020526000908152604090208054600182015460028301546003840154600485015460058601546006909601546001600160a01b039586169694959394929391929160ff82169161ffff6101008204169163010000009091041689565b604080516001600160a01b039a8b16815260208101999099528801969096526060870194909452608086019290925260a0850152151560c084015261ffff1660e08301529091166101008201526101200161042d565b34801561086257600080fd5b506104d1610871366004615442565b61129f565b610404610884366004615315565b61150f565b34801561089557600080fd5b5060975460ff16610456565b6104046108af366004615442565b6119c8565b3480156108c057600080fd5b506109266108cf366004615415565b610150602052600090815260409020805460018201546002830154600384015460048501546005909501546001600160a01b03948516959394929360ff808416946101008504909116936201000090048116921688565b604080516001600160a01b03998a168152602081019890985287019590955292151560608601529015156080850152841660a084015260c083015290911660e08201526101000161042d565b34801561097e57600080fd5b5061066961098d366004615442565b61203a565b34801561099e57600080fd5b506104866109ad366004615341565b612164565b3480156109be57600080fd5b5061040461217f565b3480156109d357600080fd5b506104866101495481565b3480156109ea57600080fd5b506104046109f9366004615315565b612193565b348015610a0a57600080fd5b50610669610a19366004615315565b6121a8565b348015610a2a57600080fd5b5061048661018c5481565b348015610a4157600080fd5b50610486610a50366004615315565b6121e5565b348015610a6157600080fd5b50610456610a70366004615315565b61015860209081526000928352604080842090915290825290205460ff1681565b348015610a9d57600080fd5b50610456610aac366004615341565b6101906020526000908152604090205460ff1681565b348015610ace57600080fd5b50610456610add3660046153b2565b612202565b348015610aee57600080fd5b50610778612943565b348015610b0357600080fd5b50610486610b12366004615341565b6001600160a01b0316600090815261014c602052604090205490565b348015610b3a57600080fd5b50610456610b49366004615467565b612952565b348015610b5a57600080fd5b50610420612ee6565b348015610b6f57600080fd5b5061012d5461012e5461012f5461013054610131546101325461013354610ba79695946001600160a01b039081169481169316919087565b6040805197885260208801969096526001600160a01b03948516958701959095529183166060860152909116608084015260a083015260c082015260e00161042d565b348015610bf657600080fd5b50610404610c05366004615499565b612ef5565b348015610c1657600080fd5b50610c70610c25366004615341565b610156602052600090815260409020805460018201546002830154600384015460048501546005909501546001600160a01b0394851695938516949283169391831692918216911686565b604080516001600160a01b03978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c00161042d565b348015610cbe57600080fd5b50610778610ccd366004615415565b612fcd565b348015610cde57600080fd5b50610456610ced366004615315565b612ff8565b348015610cfe57600080fd5b50610456610d0d366004615315565b613073565b348015610d1e57600080fd5b50610456610d2d366004615341565b6101556020526000908152604090205460ff1681565b348015610d4f57600080fd5b5061014654610778906001600160a01b031681565b348015610d7057600080fd5b50610404610d7f366004615442565b6130d5565b348015610d9057600080fd5b50610134546101355461013654610137546101385461013954610c70956001600160a01b03908116958116948116938116928116911686565b348015610dd557600080fd5b50610456610de4366004615341565b6101536020526000908152604090205460ff1681565b348015610e0657600080fd5b50610456610e153660046154ce565b613104565b348015610e2657600080fd5b50610404610e35366004615341565b613434565b610404610e483660046154fa565b6135eb565b348015610e5957600080fd5b5061048661018e5481565b348015610e7057600080fd5b50610486610e7f366004615543565b613b5e565b348015610e9057600080fd5b50610486610e9f366004615315565b6001600160a01b0391909116600090815261018f60209081526040808320938352929052205490565b348015610ed457600080fd5b50610ee8610ee3366004615315565b613b89565b60405161042d9c9b9a99989796959493929190615571565b348015610f0c57600080fd5b5061014154610142546101435461014454610f279392919084565b60405161042d94939291906155f4565b348015610f4357600080fd5b50610f4c613c2a565b60405161042d9190615653565b348015610f6557600080fd5b506104866101475481565b348015610f7c57600080fd5b50610404610f8b366004615666565b613c8c565b348015610f9c57600080fd5b50610404610fab366004615341565b613d4b565b348015610fbc57600080fd5b50610404610fcb366004615415565b613dc1565b348015610fdc57600080fd5b50610456610feb366004615341565b6101526020526000908152604090205460ff1681565b34801561100d57600080fd5b5061040461101c3660046156d4565b613dcf565b34801561102d57600080fd5b5061048661103c366004615341565b613f45565b606060cc80546110509061577d565b80601f016020809104026020016040519081016040528092919081815260200182805461107c9061577d565b80156110c95780601f1061109e576101008083540402835291602001916110c9565b820191906000526020600020905b8154815290600101906020018083116110ac57829003601f168201915b5050505050905090565b6000336110e1818585613fc3565b60019150505b92915050565b610151602052816000526040600020818154811061110a57600080fd5b90600052602060002001600091509150505481565b6111276140e8565b6001600160a01b0391909116600090815261019060205260409020805460ff1916911515919091179055565b61115b6140e8565b6101499190915561014a55565b6001600160a01b03831660009081526101526020526040812054339060ff16806111ab57506001600160a01b0384166000908152610152602052604090205460ff165b806111cf57506001600160a01b0381166000908152610152602052604090205460ff165b6111eb5760405162461bcd60e51b8152600401610354906157b7565b6111f6858285614147565b6112018585856141bb565b506001949350505050565b6000336110e181858561121f8383613b5e565b6112299190615802565b613fc3565b336000908152610153602052604090205460ff1661125e5760405162461bcd60e51b815260040161035490615815565b6112683382614354565b50565b6112736140e8565b6001600160a01b0391909116600090815261015260205260409020805460ff1916911515919091179055565b6001600160a01b038116600090815261014c60205260408120805482918291829190879081106112d1576112d1615842565b60009182526020808320604080516101808101825260089490940290910180548452600181015484840152600281015484830152600381015460608501526004810154608085015260058101546001600160a01b0380821660a0870152600160a01b9182900463ffffffff1660c0870152600683015480821660e088015291820461ffff16610100870152600160b01b820460ff9081161515610120880152600160b81b909204909116151561014086015260079091015481166101608501528916845261014d9091528220805491935090889081106113b3576113b3615842565b9060005260206000209060020201604051806040016040529081600082015481526020016001820154815250509050816101200151806113f557508161014001515b1561140c5760008060009450945094505050611508565b6000611418888861203a565b506101435461013d5461016086015160405163bf3810a960e01b81526001600160a01b03918216600482015260016024820152939450600093620f42409392919091169063bf3810a990604401602060405180830381865afa158015611482573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a69190615858565b85516114b29190615871565b6114bc9190615888565b6114c69190615888565b905060008360200151826114da9190615802565b905060008361014160020154836114f19190615871565b6114fb9190615888565b9850909650919450505050505b9250925092565b611517614473565b610146546001600160a01b031633146115605760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9025b2b2b832b960a91b6044820152606401610354565b6001600160a01b038216600090815261014c6020526040812080548390811061158b5761158b615842565b600091825260208083206007600890930201918201546001600160a01b0390811684526101568252604093849020845160c0810186528154831681526001820154831693810193909352600281015482169483019490945260038401548116606083015260048401548116608083015260059093015490921660a083015291506116168184866144cc565b6006820154600160b81b900460ff16156116425760405162461bcd60e51b8152600401610354906158aa565b6001600160a01b03841660009081526101586020908152604080832086845290915290205460ff16156116875760405162461bcd60e51b8152600401610354906158d6565b60058201546001600160a01b03166116d25760405162461bcd60e51b815260206004820152600e60248201526d14995c5d595cdd0808595e1a5cdd60921b6044820152606401610354565b60006116de848661129f565b505090506103e861014a54610149546116f79190615871565b6117019190615888565b8110156117455760405162461bcd60e51b8152602060048201526012602482015271151a1c995cda1bdb1908085c995858da195960721b6044820152606401610354565b600183015461013d546007850154604051637afd544960e11b81526001600160a01b039283169263f5faa892926117819291169060040161542e565b602060405180830381865afa15801561179e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c291906158f7565b1561184657610133546117d6906003615871565b3410156117f55760405162461bcd60e51b815260040161035490615914565b61014654610133546001600160a01b03909116906108fc90611818906002615871565b6040518115909202916000818181858888f19350505050158015611840573d6000803e3d6000fd5b50611869565b610133543410156118695760405162461bcd60e51b81526004016103549061593f565b600061187c848361012d600601546145ff565b6101395460405163ad23c5a160e01b81529192506000916001600160a01b039091169063ad23c5a1906118b3908590600401615966565b6020604051808303816000875af11580156118d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f69190615858565b60008181526101506020908152604080832080546001600160a01b03808f166001600160a01b031992831681178455600284018f905560038401805461ff0019811661010090811783556005909601805490951633179094556007909e015462010000921691909102610100600160b01b031990921691909117909117909a558983526101518252808320805460018181018355918552838520019490945598825261015881528882208a8352905296909620805460ff1916909617909555506119c4935061487692505050565b5050565b6001600160a01b038116600090815261014c6020526040902054829082908210611a345760405162461bcd60e51b815260206004820152601e60248201527f566f646b613a20706f736974696f6e4944206973206e6f742076616c696400006044820152606401610354565b611a3c614473565b6001600160a01b038316600090815261014c60205260408120805486908110611a6757611a67615842565b906000526020600020906008020190508060060160179054906101000a900460ff16158015611aa257506006810154600160b01b900460ff16155b611abe5760405162461bcd60e51b815260040161035490615a3a565b6000816001015411611b0b5760405162461bcd60e51b81526020600482015260166024820152750a0dee6d2e8d2dedc40d2e640dcdee840cadcdeeaced60531b6044820152606401610354565b60058101546001600160a01b0316331480611b365750336000908152610190602052604090205460ff165b611b6d5760405162461bcd60e51b815260206004820152600860248201526708585b1b1bddd95960c21b6044820152606401610354565b6001600160a01b03841660009081526101586020908152604080832088845290915290205460ff1615611bb25760405162461bcd60e51b8152600401610354906158d6565b61013d546007820154604051637afd544960e11b81526001600160a01b039283169263f5faa89292611be99291169060040161542e565b602060405180830381865afa158015611c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2a91906158f7565b15611cae5761013354611c3e906003615871565b341015611c5d5760405162461bcd60e51b815260040161035490615914565b61014654610133546001600160a01b03909116906108fc90611c80906002615871565b6040518115909202916000818181858888f19350505050158015611ca8573d6000803e3d6000fd5b50611cd1565b61013354341015611cd15760405162461bcd60e51b81526004016103549061593f565b336000908152610190602052604081205460ff1615611d5f5761018e546001600160a01b038616600090815261018f602090815260408083208a8452909152902054611d1d9190615802565b421015611d5b5760405162461bcd60e51b815260206004820152600c60248201526b214d6174757265206461746560a01b6044820152606401610354565b5060015b60078201546001600160a01b0390811660009081526101566020908152604091829020825160c0810184528154851681526001820154851692810192909252600281015484169282019290925260038201548316606082015260048201548316608082015260059091015490911660a0820152611ddd8188886144cc565b6000611de9888861129f565b505090506103e86101495461014a54611e029190615871565b611e0c9190615888565b8110611e485760405162461bcd60e51b815260206004820152600b60248201526a3634b8bab4b230ba34b7b760a91b6044820152606401610354565b6000611e5f83866001015461012d600601546145ff565b6101395460405163ad23c5a160e01b81529192506000916001600160a01b039091169063ad23c5a190611e96908590600401615966565b6020604051808303816000875af1158015611eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed99190615858565b90508415611efc57600081815261019160205260409020805460ff191660011790555b600061015060008381526020019081526020016000209050898160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a81600201819055508660070160009054906101000a90046001600160a01b03168160030160026101000a8154816001600160a01b0302191690836001600160a01b0316021790555061015160008b6001600160a01b03166001600160a01b03168152602001908152602001600020829080600181540180825580915050600190039060005260206000200160009091909190915055600161015860008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008d815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050506120346001606555565b50505050565b6001600160a01b038116600090815261014c602052604081208054829182918690811061206957612069615842565b60009182526020918290206040805161018081018252600893909302909101805483526001810154938301849052600281015491830191909152600381015460608301526004810154608083015260058101546001600160a01b0380821660a0850152600160a01b9182900463ffffffff1660c0850152600683015480821660e086015291820461ffff16610100850152600160b01b820460ff9081161515610120860152600160b81b9092049091161515610140840152600790910154166101608201819052909250612146919061214190613f45565b61487d565b6121588260200151836040015161487d565b92509250509250929050565b6001600160a01b0316600090815260c9602052604090205490565b6121876140e8565b61219160006148ac565b565b61219e823383614147565b6119c48282614354565b61014d60205281600052604060002081815481106121c557600080fd5b600091825260209091206002909102018054600190910154909250905082565b61014f602052816000526040600020818154811061110a57600080fd5b61013d546000906001600160a01b031633146122305760405162461bcd60e51b815260040161035490615815565b600083815261014e6020526040902080546001600160a01b0316806122675760405162461bcd60e51b815260040161035490615a6f565b6002820184905560408051610180810182526001840154808252602082018790526101435460068601546000948401928992916103e8916122b191610100900461ffff1690615871565b6122bb9190615888565b6122ca9064e8d4a51000615871565b6122d49190615871565b6122de9190615888565b815260006020808301829052604080840183905287546001600160a01b03908116606086015287811680855261014c84528285205463ffffffff16608087015260a0860185905260068a015461010080820461ffff1660c089015260e08801879052870186905263010000009004909116610120909501949094528051808201825260048901548152600389015481840190815285855261014d845282852080546001808201835591875285872084516002909202019081559151910155938352610154909152812054929350909160ff1615159003612420576001600160a01b038316600081815261015460205260408120805460ff19166001908117909155610145805491820181559091527fed95984add84c4014c7f9d66a1b73e788e2db64f5763fa861ad52da204f71b2b0180546001600160a01b03191690911790555b600061015660008660060160039054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206040518060c00160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016004820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016005820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152505090506040518060400160405280610159600084608001516001600160a01b03166001600160a01b0316815260200190815260200160002060000154815260200161015960008460a001516001600160a01b03166001600160a01b031681526020019081526020016000206000015481525061015760008760000160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020600061014c6000886001600160a01b03166001600160a01b0316815260200190815260200160002080549050815260200190815260200160002060008201518160000155602082015181600101559050504261018f6000866001600160a01b03166001600160a01b03168152602001908152602001600020600061014c6000886001600160a01b03166001600160a01b031681526020019081526020016000208054905081526020019081526020016000208190555061014c6000856001600160a01b03166001600160a01b03168152602001908152602001600020839080600181540180825580915050600190039060005260206000209060080201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060c08201518160050160146101000a81548163ffffffff021916908363ffffffff16021790555060e08201518160060160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506101008201518160060160146101000a81548161ffff021916908361ffff1602179055506101208201518160060160166101000a81548160ff0219169083151502179055506101408201518160060160176101000a81548160ff0219169083151502179055506101608201518160070160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505061288f8486600201546148fe565b60068501805460ff1916600190811791829055845160028801546001600160a01b03808916600081815261014c602052604090205490957f445a258ec42b2ccd7322bc2c33fdd067e59c45379be7af06d3fa187926b28814954294936301000000909204909116916129019190615a90565b604080519586526020860194909452928401919091526001600160a01b03166060830152608082015260a00160405180910390a2506001979650505050505050565b6033546001600160a01b031690565b61013d546000906001600160a01b031633146129805760405162461bcd60e51b815260040161035490615815565b60008581526101506020908152604080832080546001600160a01b0316845261014c90925282206002820154815492939281106129bf576129bf615842565b90600052602060002090600802019050612a116040518060c00160405280600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b82546001600160a01b0316600090815261014d60205260408120600285015481548110612a4057612a40615842565b600091825260208083206003888101546201000090046001600160a01b03908116865261015684526040808720815160c08101835281548416815260018201548416818801526002808301548516828501529482015484166060820152600482015484166080820152600590910154831660a08201528b5490921687526101588552808720838c01548852909452929094205492909302909201925060ff16612afb5760405162461bcd60e51b815260040161035490615aa3565b600385015460ff1615612b395760405162461bcd60e51b815260206004820152600660248201526518db1bdcd95960d21b6044820152606401610354565b84546001850154612b53916001600160a01b0316906149ad565b60028501546001858101548188018b9055600488018c905560038801546201000090046001600160a01b031660a08701528654918501549091612b9591615802565b606086015260068601805460ff60b01b1916600160b01b17905560038701805460ff1916600117905560008915612c9357608086018a905261013254600090606490612be390612710615871565b60068a015461013254612c0191600160a01b900461ffff1690615871565b612c0b9190615802565b612c159190615888565b9050612710818860800151612c2a9190615871565b612c349190615888565b602088015261018c5461271090612c4b908d615871565b612c559190615888565b9150818760200151612c679190615802565b8760800151612c769190615a90565b6040880152602080880151865191870151612c919290614a64565b505b600086608001518660010154612ca99190615802565b89600101541015612ceb57508754600688018054600163ff00000160a01b0319166001600160a01b0390921691909117600160b81b1790556001880154612d4c565b8660400151876080015187600101548b60010154612d099190615a90565b612d139190615a90565b612d1d9190615802565b808852602088015160018b01548492612d3591615a90565b612d3f9190615a90565b612d499190615a90565b90505b612d578e828f614b65565b8115612d7c5761018d5461013a54612d7c916001600160a01b03918216911684614da4565b6006880154600160b81b900460ff1615612da25760009950505050505050505050612ede565b61012d5460009015612e07576101445461012d54895160009291612dc591615871565b612dcf9190615888565b61012f546020890151919250612df2916001600160a01b03908116911683614da4565b8851612dff908290615a90565b915050612e0b565b5086515b89546020870151612e29916001600160a01b03918216911683614da4565b60018a015460038a0181905560058a015460208a01516040808c015160a08d015191516001600160a01b03909416947f5034e0a50aae35fc5080dff531f6729be4904139c9bc6afbe5d5c9b96dc6ddc394612ec7948894429491928e908e9097885260208801969096526040870194909452606086019290925260808501526001600160a01b031660a084015260c083015260e08201526101000190565b60405180910390a260019a50505050505050505050505b949350505050565b606060cd80546110509061577d565b612efd6140e8565b6001600160a01b038316600090815261014c60205260408120805484908110612f2857612f28615842565b906000526020600020906008020190508060060160179054906101000a900460ff16158015612f6357506006810154600160b01b900460ff16155b612f7f5760405162461bcd60e51b815260040161035490615a3a565b60058101546001600160a01b0316612fa95760405162461bcd60e51b815260040161035490615a6f565b81816001016000828254612fbd9190615802565b90915550612034905084836148fe565b6101458181548110612fde57600080fd5b6000918252602090912001546001600160a01b0316905081565b600033816130068286613b5e565b9050838110156130665760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610354565b6112018286868403613fc3565b336000818152610152602052604081205490919060ff16806130ae57506001600160a01b0384166000908152610152602052604090205460ff165b6130ca5760405162461bcd60e51b8152600401610354906157b7565b6110e18185856141bb565b6130dd6140e8565b61018d80546001600160a01b0319166001600160a01b039290921691909117905561018c55565b61013d546000906001600160a01b031633146131325760405162461bcd60e51b815260040161035490615815565b60008481526101506020908152604080832080546001600160a01b0316845261014c909252822060028201548154929392811061317157613171615842565b6000918252602080832085546001600160a01b0316845261014d9091526040832060028601548154600890940290920194509181106131b2576131b2615842565b60009182526020808320604080518082018252600294850290920180548352600190810154838501526003808a01546001600160a01b036201000090910481168852610156865296839020835160c08101855281548916815281840154891696810196909652958601548716928501929092529084015485166060840152600484015485166080840152600590930154841660a083015286830189905586549286015490945090926132659216906149ad565b6006830154600160b81b900460ff16156132915760405162461bcd60e51b8152600401610354906158aa565b83546001600160a01b03166000908152610158602090815260408083206002880154845290915290205460ff166132da5760405162461bcd60e51b815260040161035490615aa3565b60018381015460068501805461ffff60b01b191661010160b01b17905560038601805460ff191690921790915560208301518711156133c557826020015185600101600082825461332b9190615a90565b90915550506101445461012e5460018701546000929161334a91615871565b6133549190615888565b600587015461013a54919250613377916001600160a01b03908116911683614da4565b60008187600101546133899190615a90565b905080156133af57865460208501516133af916001600160a01b03918216911683614da4565b6133be8b86602001518c614b65565b50506133d0565b6133d089888a614b65565b8454600286015460018701546040516001600160a01b039093169233927fc70fd1eb40d7ae44a5425c09dece5a023b47277356e005b6caef1600cfc7334e9261341d9287919042906155f4565b60405180910390a350600198975050505050505050565b600054610100900460ff16158080156134545750600054600160ff909116105b80613475575061346330614dfa565b158015613475575060005460ff166001145b6134d85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610354565b6000805460ff1916600117905580156134fb576000805461ff0019166101001790555b61013f80546001600160a01b0319166001600160a01b038416179055670de0b6b3a764000061014b819055612710610141556107d06101425561014355620186a061014455613548614e09565b613550614e38565b613558614e67565b6135a2604051806040016040528060098152602001682b37b235b0ab19222760b91b81525060405180604001604052806007815260200166158c91139413d160ca1b815250614e96565b80156119c4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6135f3614ec7565b6101425461ffff83161080159061361157506101415461ffff831611155b6136495760405162461bcd60e51b8152602060048201526009602482015268216c6576657261676560b81b6044820152606401610354565b6000831161368a5760405162461bcd60e51b815260206004820152600e60248201526d616d6f756e74206973207a65726f60901b6044820152606401610354565b6001600160a01b0381166000908152610155602052604090205460ff166136e25760405162461bcd60e51b815260206004820152600c60248201526b085dda1a5d195b1a5cdd195960a21b6044820152606401610354565b6101335434146137045760405162461bcd60e51b81526004016103549061593f565b61013a5461371d906001600160a01b0316333086614f0d565b6001600160a01b03818116600090815261015660209081526040808320815160c081018352815486168082526001830154871694820194909452600282015486168184015260038201548616606082015260048083015487166080830152600590920154861660a082015261013f54925163035af68360e61b815291820189905261ffff88166024830152604482019390935287949293928392169063d6bda0c09060640160408051808303816000875af11580156137e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138049190615ac5565b610138548551929450909250613827916001600160a01b03908116911684614f2e565b61013854613857906001600160a01b03166138428684615802565b60208601516001600160a01b03169190614f2e565b61013954835161013654604051631cdacd5960e31b81526001600160a01b039384169363e6d66ac8936138939390929116908790600401615ae9565b600060405180830381600087803b1580156138ad57600080fd5b505af11580156138c1573d6000803e3d6000fd5b5050610139546020860151610136546001600160a01b03928316945063e6d66ac893509091166138f18886615802565b6040518463ffffffff1660e01b815260040161390f93929190615ae9565b600060405180830381600087803b15801561392957600080fd5b505af115801561393d573d6000803e3d6000fd5b50506101395461013654604051637d39aaf160e01b81526001600160a01b039283169450637d39aaf19350349261397a9216908390600401615b0d565b6000604051808303818588803b15801561399357600080fd5b505af11580156139a7573d6000803e3d6000fd5b5050604080516101808101825230815261013d546001600160a01b039081166020808401919091523383850152898401518216606084015289518216608084015289810151821660a084015283516000808252818301865260c08501919091528451818152918201855260e08401919091526101008301819052610120830181905261013354610140840152621e8480610160840152610139549351635b4e956160e01b81529296509450919091169150635b4e956190613a6c908590600401615b3c565b6020604051808303816000875af1158015613a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aaf9190615858565b600081815261014e6020908152604080832060018082019b909b556003810197909755600487019790975534600587015585546001600160a01b0319163390811787556006909601805498516001600160a01b03166301000000026301000000600160b81b031961ffff909d16610100029c909c16610100600160b81b0319909916989098179a909a17909655928552505061014f865290822080549384018155825293902001919091555050565b6001600160a01b03918216600090815260ca6020908152604080832093909416825291909152205490565b61014c6020528160005260406000208181548110613ba657600080fd5b6000918252602090912060089091020180546001820154600283015460038401546004850154600586015460068701546007909701549598509396509194909391926001600160a01b038082169363ffffffff600160a01b9384900416938083169361ffff908204169260ff600160b01b8304811693600160b81b9093041691168c565b60606101458054806020026020016040519081016040528092919081815260200182805480156110c957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613c65575050505050905090565b613c946140e8565b61012f80546001600160a01b038981166001600160a01b0319928316811790935561012d89905561013080548983169084168117909155610131805492891692909316821790925561012e86905561013285905561013384905560408051938452602084018a905283019190915260608201526080810184905260a081018290527fd41053a4175bbcb84e9ecff42adbb2376e6f4a172437a00dfb37114ff282c70e9060c00160405180910390a150505050505050565b613d536140e8565b6001600160a01b038116613db85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610354565b611268816148ac565b613dc96140e8565b61018e55565b613dd76140e8565b6001600160a01b0388811660009081526101566020908152604080832080546001600160a01b03199081168d871617825560018201805482168d881617905560028201805482168c881690811790915560038301805483168c891617905561015590945293829020805460ff191689151517905560048082018054861689881617905560058201805490951695871695909517909355516370a0823160e01b81529192909163a9059cbb91339184916370a0823191613e989130910161542e565b602060405180830381865afa158015613eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ed99190615858565b6040518363ffffffff1660e01b8152600401613ef6929190615b0d565b6020604051808303816000875af1158015613f15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f3991906158f7565b50505050505050505050565b61013d54604051633a2cb99f60e01b815260009182916001600160a01b0390911690633a2cb99f90613f7b90869060040161542e565b602060405180830381865afa158015613f98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fbc9190615858565b9392505050565b6001600160a01b0383166140255760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610354565b6001600160a01b0382166140865760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610354565b6001600160a01b03838116600081815260ca602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b336140f1612943565b6001600160a01b0316146121915760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610354565b60006141538484613b5e565b9050600019811461203457818110156141ae5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610354565b6120348484848403613fc3565b6001600160a01b03831661421f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610354565b6001600160a01b0382166142815760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610354565b6001600160a01b038316600090815260c96020526040902054818110156142f95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610354565b6001600160a01b03808516600081815260c960205260408082208686039055928616808252908390208054860190559151600080516020615d9a833981519152906143479086815260200190565b60405180910390a3612034565b6001600160a01b0382166143b45760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610354565b6001600160a01b038216600090815260c96020526040902054818110156144285760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610354565b6001600160a01b038316600081815260c960209081526040808320868603905560cb8054879003905551858152919291600080516020615d9a83398151915291016140db565b505050565b6002606554036144c55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610354565b6002606555565b6001600160a01b038116600090815261014d602052604081208054849081106144f7576144f7615842565b600091825260208083206001600160a01b038681168552610157835260408086208987528452808620805460019091015460808c0151841688526101599095528187205460a08c0151909316875295205460029490940290910194509091838211156145a0578454849061456c908490615871565b6145769190615888565b85556001600160a01b0386166000908152610157602090815260408083208a845290915290208290555b828111156145f557828186600101546145b99190615871565b6145c39190615888565b6001808701919091556001600160a01b0387166000908152610157602090815260408083208b84529091529020018190555b5050505050505050565b604080516101608101825260008082526020820181905281830181905260608083018290526080830181905260a083015260c0820181905260e08201819052610100820181905261012082018190526101408201528482015161013854925163095ea7b360e01b815291926001600160a01b039182169263095ea7b39261468c9216908790600401615b0d565b6020604051808303816000875af11580156146ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146cf91906158f7565b506101395461013754604051637d39aaf160e01b81526001600160a01b0392831692637d39aaf192869261470b92909116908390600401615b0d565b6000604051808303818588803b15801561472457600080fd5b505af1158015614738573d6000803e3d6000fd5b505061013954604088810151610137549151631cdacd5960e31b81526001600160a01b03938416965063e6d66ac8955061477d94509092909116908890600401615ae9565b600060405180830381600087803b15801561479757600080fd5b505af11580156147ab573d6000803e3d6000fd5b5050604080516101608101825261013d546001600160a01b0390811680835260208301523382840152918801519091166060820152915050608081016000604051908082528060200260200182016040528015614812578160200160208202803683370190505b5081526020016000604051908082528060200260200182016040528015614843578160200160208202803683370190505b5081526020016000815260200160008152602001600015158152602001838152602001621e848081525090509392505050565b6001606555565b600064e8d4a51000670de0b6b3a76400006148988486615871565b6148a29190615888565b613fbc9190615888565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166149545760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610354565b8060cb60008282546149669190615802565b90915550506001600160a01b038216600081815260c96020908152604080832080548601905551848152600080516020615d9a833981519152910160405180910390a35050565b61013b546001600160a01b03161561219e5760006149ca83612164565b90508181106149dd5761446e8383614354565b6149e78382614354565b60006149f38284615a90565b61013b54610147546040516362e69a4d60e11b815260048101919091526001600160a01b0387811660248301526044820184905292935091169063c5cd349a90606401600060405180830381600087803b158015614a5057600080fd5b505af11580156145f5573d6000803e3d6000fd5b6000614a71600285615888565b90506000614a7f8286615a90565b61013d54909150614a9d906001600160a01b03858116911684614da4565b61013d5460405163076f1ef160e41b8152600481018490526001600160a01b038581166024830152868116604483015230606483015260009216906376f1ef10906084016020604051808303816000875af1158015614b00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b249190615858565b61013054909150614b42906001600160a01b03878116911683614da4565b61013154614b5d906001600160a01b03868116911684614da4565b505050505050565b6000838152610150602090815260408083208151610100808201845282546001600160a01b039081168084526001850154848801526002850154848701908152600386015460ff808216151560608801529481049094161515608086015262010000909304821660a0850152600485015460c08501526005909401541660e083015291855261014d909352908320905181549293928110614c0857614c08615842565b600091825260208083206040805180820182526002948502909201805483526001908101548385015260a0808901516001600160a01b039081168852610156865296839020835160c0810185528154891681529281015488169583018690529586015487169282019290925260038501548616606082015260048501548616608082015260059094015490941693830184905293509091614caa919087614f2e565b60808101518151614cc7916001600160a01b039091169086614f2e565b60a0810151602083015160405163015cb0a560e01b81526001600160a01b039092169163015cb0a591614d07918990600401918252602082015260400190565b600060405180830381600087803b158015614d2157600080fd5b505af1158015614d35573d6000803e3d6000fd5b505050506080810151825160405163015cb0a560e01b81526001600160a01b039092169163015cb0a591614d76918890600401918252602082015260400190565b600060405180830381600087803b158015614d9057600080fd5b505af1158015613f39573d6000803e3d6000fd5b61446e8363a9059cbb60e01b8484604051602401614dc3929190615b0d565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614fcc565b6001600160a01b03163b151590565b600054610100900460ff16614e305760405162461bcd60e51b815260040161035490615c2d565b6121916150a1565b600054610100900460ff16614e5f5760405162461bcd60e51b815260040161035490615c2d565b6121916150d1565b600054610100900460ff16614e8e5760405162461bcd60e51b815260040161035490615c2d565b612191615104565b600054610100900460ff16614ebd5760405162461bcd60e51b815260040161035490615c2d565b6119c4828261512b565b60975460ff16156121915760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610354565b612034846323b872dd60e01b858585604051602401614dc393929190615ae9565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015614f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614fa29190615858565b90506120348463095ea7b360e01b85614fbb8686615802565b604051602401614dc3929190615b0d565b6000615021826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661516b9092919063ffffffff16565b905080516000148061504257508080602001905181019061504291906158f7565b61446e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610354565b600054610100900460ff166150c85760405162461bcd60e51b815260040161035490615c2d565b612191336148ac565b600054610100900460ff166150f85760405162461bcd60e51b815260040161035490615c2d565b6097805460ff19169055565b600054610100900460ff166148765760405162461bcd60e51b815260040161035490615c2d565b600054610100900460ff166151525760405162461bcd60e51b815260040161035490615c2d565b60cc61515e8382615cbe565b5060cd61446e8282615cbe565b6060612ede848460008585600080866001600160a01b031685876040516151929190615d7d565b60006040518083038185875af1925050503d80600081146151cf576040519150601f19603f3d011682016040523d82523d6000602084013e6151d4565b606091505b50915091506151e5878383876151f0565b979650505050505050565b6060831561525d5782516000036152565761520a85614dfa565b6152565760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610354565b5081612ede565b612ede83838151156152725781518083602001fd5b8060405162461bcd60e51b815260040161035491906152e2565b6001600160a01b038116811461126857600080fd5b6000602082840312156152b357600080fd5b8151613fbc8161528c565b60005b838110156152d95781810151838201526020016152c1565b50506000910152565b60208152600082518060208401526153018160408501602087016152be565b601f01601f19169190910160400192915050565b6000806040838503121561532857600080fd5b82356153338161528c565b946020939093013593505050565b60006020828403121561535357600080fd5b8135613fbc8161528c565b6001600160a01b03169052565b801515811461126857600080fd5b6000806040838503121561538c57600080fd5b82356153978161528c565b915060208301356153a78161536b565b809150509250929050565b600080604083850312156153c557600080fd5b50508035926020909101359150565b6000806000606084860312156153e957600080fd5b83356153f48161528c565b925060208401356154048161528c565b929592945050506040919091013590565b60006020828403121561542757600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6000806040838503121561545557600080fd5b8235915060208301356153a78161528c565b6000806000806080858703121561547d57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000606084860312156154ae57600080fd5b83356154b98161528c565b95602085013595506040909401359392505050565b6000806000606084860312156154e357600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561550f57600080fd5b83359250602084013561ffff8116811461552857600080fd5b915060408401356155388161528c565b809150509250925092565b6000806040838503121561555657600080fd5b82356155618161528c565b915060208301356153a78161528c565b8c8152602081018c9052604081018b9052606081018a9052608081018990526001600160a01b0388811660a083015263ffffffff881660c0830152861660e082015261ffff851661010082015283151561012082015282151561014082015261018081016155e361016083018461535e565b9d9c50505050505050505050505050565b93845260208401929092526040830152606082015260800190565b600081518084526020808501945080840160005b838110156156485781516001600160a01b031687529582019590820190600101615623565b509495945050505050565b602081526000613fbc602083018461560f565b600080600080600080600060e0888a03121561568157600080fd5b873561568c8161528c565b96506020880135955060408801356156a38161528c565b945060608801356156b38161528c565b9699959850939660808101359560a0820135955060c0909101359350915050565b600080600080600080600080610100898b0312156156f157600080fd5b88356156fc8161528c565b9750602089013561570c8161528c565b9650604089013561571c8161528c565b9550606089013561572c8161528c565b9450608089013561573c8161528c565b935060a089013561574c8161536b565b925060c089013561575c8161528c565b915060e089013561576c8161528c565b809150509295985092959890939650565b600181811c9082168061579157607f821691505b6020821081036157b157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601b908201527a115490cc8c0e881d1c985b9cd9995c881b9bdd08185b1b1bddd959602a1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156110e7576110e76157ec565b6020808252601390820152722737ba1030b63637bbb2b2103a3790313ab93760691b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561586a57600080fd5b5051919050565b80820281158282048414176110e7576110e76157ec565b6000826158a557634e487b7160e01b600052601260045260246000fd5b500490565b602080825260129082015271105b1c9958591e481b1a5c5d5a59185d195960721b604082015260600190565b6020808252600790820152666f6e676f696e6760c81b604082015260600190565b60006020828403121561590957600080fd5b8151613fbc8161536b565b602080825260119082015270566f646b6156323a2021666565202a203360781b604082015260600190565b6020808252600d908201526c566f646b6156323a202166656560981b604082015260600190565b6020815261597860208201835161535e565b6000602083015161598c604084018261535e565b50604083015161599f606084018261535e565b5060608301516159b2608084018261535e565b5060808301516101608060a08501526159cf61018085018361560f565b915060a0850151601f198584030160c08601526159ec838261560f565b92505060c085015160e085015260e0850151610100818187015280870151915050610120615a1d8187018315159052565b860151610140868101919091529095015193019290925250919050565b6020808252818101527f506f736974696f6e20697320636c6f736564206f72206c697175696461746564604082015260600190565b6020808252600790820152660808599bdd5b9960ca1b604082015260600190565b818103818111156110e7576110e76157ec565b602080825260089082015267216f6e676f696e6760c01b604082015260600190565b60008060408385031215615ad857600080fd5b505080516020909101519092909150565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052604160045260246000fd5b60208152615b4e60208201835161535e565b60006020830151615b62604084018261535e565b506040830151615b75606084018261535e565b506060830151615b88608084018261535e565b506080830151615b9b60a084018261535e565b5060a0830151615bae60c084018261535e565b5060c08301516101808060e0850152615bcb6101a085018361560f565b915060e0850151610100601f198685030181870152615bea848361560f565b90870151610120878101919091528701519093509050610140615c108187018315159052565b860151610160868101919091529095015193019290925250919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b601f82111561446e57600081815260208120601f850160051c81016020861015615c9f5750805b601f850160051c820191505b81811015614b5d57828155600101615cab565b81516001600160401b03811115615cd757615cd7615b26565b615ceb81615ce5845461577d565b84615c78565b602080601f831160018114615d205760008415615d085750858301515b600019600386901b1c1916600185901b178555614b5d565b600085815260208120601f198616915b82811015615d4f57888601518255948401946001909101908401615d30565b5085821015615d6d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251615d8f8184602087016152be565b919091019291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205534c13faca4cbd152ff4c79d7e091e63882f5a7486261a69ff4df16dc4b78cb64736f6c63430008130033