15 txs
16 calls
constructor
constructor(address _stakeApy, address _tokenAddress, address _usdToken, address _oracleContract, address _networkAddress, address _commissionContract)
functions
calculateTokenEarned
viewfunction calculateTokenEarned(uint256 _stakeId, uint256 totalUsdClaimDecimal) view returns (uint256, uint256, uint256, uint256)
calculateUsdEarnedMulti
viewfunction calculateUsdEarnedMulti(uint256[] _stakeIds) view returns (uint256)
calculateUsdEarnedStake
viewfunction calculateUsdEarnedStake(uint256 _stakeId) view returns (uint256)
canStakeByMixed
viewfunction canStakeByMixed() view returns (bool)
canStakeByUsd
viewfunction canStakeByUsd() view returns (bool)
checkCanClaim
viewfunction checkCanClaim(uint256 _stakeId) view returns (bool)
commissionContract
viewfunction commissionContract() view returns (address)
directCommission
viewfunction directCommission(address) view returns (uint256)
getDetailNativeTokenClaim
viewfunction getDetailNativeTokenClaim(address _tokenAddress) view returns (tuple)
getDetailStake
viewfunction getDetailStake(uint256 _stakeId) view returns (tuple)
getLatestPrice
viewfunction getLatestPrice(address _token) view returns (int256)
getStakePool
viewfunction getStakePool(uint256 _poolId) view returns (tuple)
getTokenUsdPrice
viewfunction getTokenUsdPrice(address _token) view returns (uint256)
listAddressNative
viewfunction listAddressNative(address) view returns (bool)
maticAddress
viewfunction maticAddress() view returns (address)
maxLevelDirectCommission
viewfunction maxLevelDirectCommission() view returns (uint256)
maxLevelInterestCommission
viewfunction maxLevelInterestCommission() view returns (uint8)
nativeTokens
viewfunction nativeTokens(address) view returns (bool isCalculateByOracle, address priceFeed, address oracleAddress, uint256 tokenDecimal)
networkAddress
viewfunction networkAddress() view returns (address)
openSwap
viewfunction openSwap() view returns (bool)
oracleContract
viewfunction oracleContract() view returns (address)
owner
viewfunction owner() view returns (address)
percentSwapByStakeMixed
viewfunction percentSwapByStakeMixed() view returns (uint256)
percentSwapByStakeUsd
viewfunction percentSwapByStakeUsd() view returns (uint256)
percentSwapToBurnByStakeMixed
viewfunction percentSwapToBurnByStakeMixed() view returns (uint256)
percentSwapToBurnByStakeUsd
viewfunction percentSwapToBurnByStakeUsd() view returns (uint256)
percentSwapUsdByStakeMixed
viewfunction percentSwapUsdByStakeMixed() view returns (uint256)
percentSwapUsdByStakeUsd
viewfunction percentSwapUsdByStakeUsd() view returns (uint256)
priceFeedDecimal
viewfunction priceFeedDecimal() view returns (uint256)
stakeApy
viewfunction stakeApy() view returns (address)
stakeIndex
viewfunction stakeIndex() view returns (uint256)
stakeTokenPoolLength
viewfunction stakeTokenPoolLength() view returns (uint256)
swapContract
viewfunction swapContract() view returns (address)
systemWallet
viewfunction systemWallet() view returns (address)
token
viewfunction token() view returns (address)
tokenClaimPercent
viewfunction tokenClaimPercent() view returns (uint256)
tokenDecimal
viewfunction tokenDecimal() view returns (uint256)
usdPercentMixed
viewfunction usdPercentMixed() view returns (uint256)
usdtDecimal
viewfunction usdtDecimal() view returns (uint256)
usdToken
viewfunction usdToken() view returns (address)
claim
nonpayablefunction claim(uint256 _stakeId)
claimAll
nonpayablefunction claimAll(uint256[] _stakeIds)
recoverLostBNB
nonpayablefunction recoverLostBNB()
renounceOwnership
nonpayablefunction renounceOwnership()
setCanStakeByAction
nonpayablefunction setCanStakeByAction(bool _canStakeByUsd, bool _canStakeByMixed)
setClaimTokenPercent
nonpayablefunction setClaimTokenPercent(uint256 _tokenPercent)
setCommissionAddress
nonpayablefunction setCommissionAddress(address _commissionContract)
setDirectCommission
nonpayablefunction setDirectCommission(address[] _wallets, uint256[] _directCommissions)
setDirectCommissionPercent
nonpayablefunction setDirectCommissionPercent(uint8 _level, uint16 _percent, uint256 _condition)
setMaxLevelCommission
nonpayablefunction setMaxLevelCommission(uint256 _maxLevelDirectCommission, uint8 _maxLevelInterestCommission)
setNativeTokenInfo
nonpayablefunction setNativeTokenInfo(address _address, bool _isActive, bool _useOracle, address _priceFeed, address _oracleContract, uint256 _tokenDecimal)
setNativeTokenPayCommission
nonpayablefunction setNativeTokenPayCommission(address _tokenAddress, bool _isCalculateByOracle, address _priceFeed, address _oracleAddress)
setNetworkAddress
nonpayablefunction setNetworkAddress(address _address)
setOpenSwap
nonpayablefunction setOpenSwap(bool _isOpen)
setOracleAddress
nonpayablefunction setOracleAddress(address _oracleAddress)
setStakeApy
nonpayablefunction setStakeApy(address _stakeApy)
setStakePool
nonpayablefunction setStakePool(uint256 _poolId, uint256 _duration, bool _isPayRef, bool _isPayProfit, bool _isPayCommission, bool _isPayRanking)
setSwapContract
nonpayablefunction setSwapContract(address _swapAddress)
setSwapPercentByStakeMixed
nonpayablefunction setSwapPercentByStakeMixed(uint256 _percentSwapByStakeMixed, uint256 _percentSwapToBurnByStakeMixed, uint256 _percentSwapUsdByStakeMixed)
setSwapPercentByStakeUsd
nonpayablefunction setSwapPercentByStakeUsd(uint256 _percentSwapByStakeUsd, uint256 _percentSwapToBurnByStakeUsd, uint256 _percentSwapUsdByStakeUsd)
setSystemWallet
nonpayablefunction setSystemWallet(address _newSystemWallet)
setTokenAddress
nonpayablefunction setTokenAddress(address _tokenAddress)
setUsdAddress
nonpayablefunction setUsdAddress(address _usdToken)
setUsdPercentMixed
nonpayablefunction setUsdPercentMixed(uint256 _usdPercentMixed)
stakeMixed
nonpayablefunction stakeMixed(uint256 _poolId, uint256 _usdStakeValue, address _nativeToken)
stakeUsd
nonpayablefunction stakeUsd(uint256 _poolId, uint256 _usdStakeValue, address _nativeToken)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateUnlockTime
nonpayablefunction updateUnlockTime(uint256 _stakeId, uint256 _unlockTime)
withdraw
nonpayablefunction withdraw(uint256 _stakeId)
withdrawTokenEmergency
nonpayablefunction withdrawTokenEmergency(address _token, uint256 _amount)
events
Claimed
event Claimed(uint256 indexed id, address indexed staker, uint256 claimAmount)
Harvested
event Harvested(uint256 indexed id)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Staked
event Staked(uint256 indexed id, uint256 poolId, address indexed staker, uint256 stakeValue, uint256 startTime, uint256 unlockTime)
errors
No errors.
creation bytecode
0x60806040526001808055670de0b6b3a764000060029081556305f5e100600355620f4240600455600591909155600680546001600160a81b03191674d45e7a14dd38376dc3862f5dac3dc4532b2b67ba0c179055600e80546001600160a01b0319169055600f5560006010556018805461ffff19166101011790556101f46019819055601a55601b805460ff191690556014601c8190556032601d8190556050601e55601f919091556020556028602155348015620000bd57600080fd5b506040516200630738038062006307833981016040819052620000e09162000356565b620000eb33620002e9565b600d80546001600160a01b03199081166001600160a01b0388811691909117909255600980548216848416179055600780548216868416179055600b80548216898416179055600c80548216878416179055600a8054909116848316179055600e54166000908152601460205260409020805460ff191660011790556200026b601160205260007f4ad3b33220dddc71b994a52d72c06b10862965f7d926534c05c00fb7e819e7b78190556101687f4ad3b33220dddc71b994a52d72c06b10862965f7d926534c05c00fb7e819e7b8557f4ad3b33220dddc71b994a52d72c06b10862965f7d926534c05c00fb7e819e7bb80546201010163ffffffff1991821681179092556001928390527f17bc176d2408558f6e4111feebc3cab4e16b63e967be91cde721f4c8a488b552929092556102d07f17bc176d2408558f6e4111feebc3cab4e16b63e967be91cde721f4c8a488b553557f17bc176d2408558f6e4111feebc3cab4e16b63e967be91cde721f4c8a488b5568054909216179055565b620002a9600160005260136020527f4155c2f711f2cdd34f8262ab8fb9b7020a700fe7b6948222152f7670d1fdf34d805461ffff1916610258179055565b620002dd6001600090815260156020527f27739e4bb5e6f8b5e4b57a047dca8767cc9b982a011081e086cbb0dfa9de818d55565b505050505050620003d7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200035157600080fd5b919050565b60008060008060008060c087890312156200037057600080fd5b6200037b8762000339565b95506200038b6020880162000339565b94506200039b6040880162000339565b9350620003ab6060880162000339565b9250620003bb6080880162000339565b9150620003cb60a0880162000339565b90509295509295509295565b615f2080620003e76000396000f3fe6080604052600436106104085760003560e01c80635e59c8ce11610213578063babdf7c511610123578063daddc9bd116100ab578063eda08a261161007a578063eda08a2614610e4e578063f2fde38b14610e6e578063f897a22b14610e8e578063fa2289c614610eae578063fc0c546a14610eda57600080fd5b8063daddc9bd14610d18578063dd4b9a9f14610d37578063e472453614610d57578063ec1406ea14610e2e57600080fd5b8063d259ab42116100f2578063d259ab4214610c82578063d430073a14610ca2578063d69e1bad14610cc2578063d6b1fb5a14610ce2578063da8909e514610cf857600080fd5b8063babdf7c514610b89578063bece753214610b9f578063c2c3225814610bbf578063c86726f614610bff57600080fd5b80638da5cb5b116101a6578063941d82d611610175578063941d82d614610af957806397e3b78114610b0f5780639a4c6ea414610b245780639fe0a72214610b44578063ad7d3a7214610b6457600080fd5b80638da5cb5b14610a6b5780638ea8303114610a895780638f78e4d414610aa957806390ed722d14610ac957600080fd5b8063715018a6116101e2578063715018a6146109f657806373c574ba14610a0b578063782faff214610a2b57806378e220d314610a4b57600080fd5b80635e59c8ce146109765780635fefbabd1461099657806368127b71146109b65780636b9c76a3146109d657600080fd5b806331fbfb6311610319578063435ab3cb116102a15780635b03c97f116102705780635b03c97f146108f05780635b535f9f146109065780635caed029146109265780635d14aa421461093c5780635e049a4e1461095657600080fd5b8063435ab3cb14610877578063466e515c1461088d5780634c69c00f146108ba578063572a2bbf146108da57600080fd5b80633986731e116102e85780633986731e146107d75780633d5cff60146107f75780633d61aba81461081757806340fff80c146108375780634354bd601461085757600080fd5b806331fbfb6314610753578063362efc3d1461078b57806336a29aa1146107a1578063379607f5146107b757600080fd5b806316345f181161039c57806328c778201161036b57806328c77820146106a657806329115ff2146106c65780632e1a7d4d146106f05780633068f5691461071057806330de7ab71461072657600080fd5b806316345f18146106305780631783c900146106505780631a4d24281461067057806326a4e8d21461068657600080fd5b806309c54a0b116103d857806309c54a0b1461049f5780630a2d4453146104b55780630a8a7c06146104d557806311b0a2051461061a57600080fd5b8062593bcf14610414578063023e1321146104475780630388bf1e1461046957806305f5dc951461047f57600080fd5b3661040f57005b600080fd5b34801561042057600080fd5b5061043461042f3660046154cd565b610efa565b6040519081526020015b60405180910390f35b34801561045357600080fd5b506104676104623660046154f8565b610fac565b005b34801561047557600080fd5b5061043460035481565b34801561048b57600080fd5b5061046761049a3660046154cd565b610fc7565b3480156104ab57600080fd5b50610434601a5481565b3480156104c157600080fd5b506104346104d0366004615515565b611058565b3480156104e157600080fd5b506105b16104f0366004615515565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152506000908152601160209081526040918290208251610100808201855282548252600183015493820193909352600282015493810193909352600381015460608401526004015460ff808216151560808501529181048216151560a08401526201000081048216151560c08401526301000000900416151560e082015290565b60405161043e91906000610100820190508251825260208301516020830152604083015160408301526060830151606083015260808301511515608083015260a0830151151560a083015260c0830151151560c083015260e0830151151560e083015292915050565b34801561062657600080fd5b5061043460205481565b34801561063c57600080fd5b5061043461064b3660046154cd565b61149c565b34801561065c57600080fd5b5061046761066b36600461554f565b61156d565b34801561067c57600080fd5b50610434600f5481565b34801561069257600080fd5b506104676106a13660046154cd565b6115a9565b3480156106b257600080fd5b506104676106c13660046155f9565b6115f9565b3480156106d257600080fd5b506018546106e09060ff1681565b604051901515815260200161043e565b3480156106fc57600080fd5b5061046761070b366004615515565b6116b6565b34801561071c57600080fd5b5061043460195481565b34801561073257600080fd5b506104346107413660046154cd565b60176020526000908152604090205481565b34801561075f57600080fd5b50600e54610773906001600160a01b031681565b6040516001600160a01b03909116815260200161043e565b34801561079757600080fd5b5061043460045481565b3480156107ad57600080fd5b50610434601c5481565b3480156107c357600080fd5b506104676107d2366004615515565b611c0b565b3480156107e357600080fd5b506104676107f236600461568f565b611c42565b34801561080357600080fd5b50610467610812366004615515565b611cc9565b34801561082357600080fd5b506104676108323660046156ff565b611cd6565b34801561084357600080fd5b506104676108523660046154cd565b611de7565b34801561086357600080fd5b506104676108723660046154cd565b611e77565b34801561088357600080fd5b50610434601d5481565b34801561089957600080fd5b506108ad6108a8366004615515565b611f06565b60405161043e919061572b565b3480156108c657600080fd5b506104676108d53660046154cd565b61202a565b3480156108e657600080fd5b50610434601f5481565b3480156108fc57600080fd5b50610434601e5481565b34801561091257600080fd5b506104676109213660046157d2565b61207a565b34801561093257600080fd5b5061043460025481565b34801561094857600080fd5b50601b546106e09060ff1681565b34801561096257600080fd5b506104676109713660046157fe565b612090565b34801561098257600080fd5b506104676109913660046154cd565b6120b3565b3480156109a257600080fd5b506104676109b136600461582a565b612133565b3480156109c257600080fd5b50600b54610773906001600160a01b031681565b3480156109e257600080fd5b506104676109f13660046157d2565b6121bd565b348015610a0257600080fd5b506104676121d3565b348015610a1757600080fd5b506106e0610a26366004615515565b6121e7565b348015610a3757600080fd5b50610467610a46366004615515565b612331565b348015610a5757600080fd5b50610434610a663660046155f9565b61233e565b348015610a7757600080fd5b506000546001600160a01b0316610773565b348015610a9557600080fd5b50600854610773906001600160a01b031681565b348015610ab557600080fd5b50610467610ac43660046158a3565b612393565b348015610ad557600080fd5b506106e0610ae43660046154cd565b60146020526000908152604090205460ff1681565b348015610b0557600080fd5b5061043460105481565b348015610b1b57600080fd5b506104676123b4565b348015610b3057600080fd5b50610467610b3f366004615911565b6123ea565b348015610b5057600080fd5b50610467610b5f36600461597d565b6124b9565b348015610b7057600080fd5b506006546107739061010090046001600160a01b031681565b348015610b9557600080fd5b5061043460055481565b348015610bab57600080fd5b50600754610773906001600160a01b031681565b348015610bcb57600080fd5b50610bdf610bda3660046158a3565b612b1c565b60408051948552602085019390935291830152606082015260800161043e565b348015610c0b57600080fd5b50610c50610c1a3660046154cd565b60166020526000908152604090208054600182015460029092015460ff8216926001600160a01b03610100909304831692169084565b60405161043e949392919093151584526001600160a01b03928316602085015291166040830152606082015260800190565b348015610c8e57600080fd5b50610467610c9d3660046154cd565b612d03565b348015610cae57600080fd5b50610467610cbd3660046159b6565b612d8d565b348015610cce57600080fd5b50600a54610773906001600160a01b031681565b348015610cee57600080fd5b5061043460215481565b348015610d0457600080fd5b50600954610773906001600160a01b031681565b348015610d2457600080fd5b506018546106e090610100900460ff1681565b348015610d4357600080fd5b50610467610d52366004615a12565b612e99565b348015610d6357600080fd5b50610deb610d723660046154cd565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b039586168252601681529084902084519283018552805460ff81161515845261010090048616918301919091526001810154909416928101929092526002909201549181019190915290565b604080518251151581526020808401516001600160a01b03908116918301919091528383015116918101919091526060918201519181019190915260800161043e565b348015610e3a57600080fd5b50610467610e493660046154cd565b612ec5565b348015610e5a57600080fd5b50610467610e6936600461597d565b612f76565b348015610e7a57600080fd5b50610467610e893660046154cd565b613936565b348015610e9a57600080fd5b50600c54610773906001600160a01b031681565b348015610eba57600080fd5b50600654610ec89060ff1681565b60405160ff909116815260200161043e565b348015610ee657600080fd5b50600d54610773906001600160a01b031681565b600d546000906001600160a01b0383811691161415610f2257610f1c826139af565b92915050565b6001600160a01b038083166000908152601660209081526040918290208251608081018452815460ff811615158083526101009091048616938201939093526001820154909416928401929092526002909101546060830152610f92576000610f8a8461149c565b949350505050565b610fa0838260400151613a55565b9392505050565b919050565b610fb4613af6565b601b805460ff1916911515919091179055565b610fcf613af6565b6001600160a01b0381166110365760405162461bcd60e51b815260206004820152602360248201527f434f4d4d495353494f4e3a20494e56414c4944204e4554574f524b204144445260448201526245535360e81b60648201526084015b60405180910390fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60008181526012602090815260408083208151610180810183528154815260018201546001600160a01b03908116948201949094526002820154928101929092526003810154606083015260048101546080830152600581015460a0830152600681015460c0830152600781015460e08301526008810154610100808401919091526009820154610120840152600a9091015460ff8116158015610140850152919004909216610160820152906111125750600092915050565b600b546040808301519051635325f64f60e11b815260009283926001600160a01b039091169163a64bec9e9161114e9160040190815260200190565b60206040518083038186803b15801561116657600080fd5b505afa15801561117a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119e9190615a4b565b90506000805b8281101561147057600b546040868101519051635e15f0df60e11b815260048101919091526000916001600160a01b03169063bc2be1be9060240160006040518083038186803b1580156111f757600080fd5b505afa15801561120b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112339190810190615a64565b828151811061124457611244615aea565b6020908102919091010151600b546040808901519051639067b67760e01b81529293506000926001600160a01b0390921691639067b6779161128c9160040190815260200190565b60006040518083038186803b1580156112a457600080fd5b505afa1580156112b8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112e09190810190615a64565b83815181106112f1576112f1615aea565b6020908102919091010151600b546040898101519051635d416d0960e01b815260048101919091529192506001600160a01b031690635d416d099060240160006040518083038186803b15801561134757600080fd5b505afa15801561135b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113839190810190615a64565b838151811061139457611394615aea565b6020026020010151935086608001518210156113b45786608001516113b6565b815b9150600087606001516000146113e157428860600151106113d757426113e3565b87606001516113e3565b425b905081156113ff57808211156113f95780611401565b81611401565b805b915081831161145a57620186a06301da9c008960c001518786866114259190615b16565b61142f9190615b2d565b6114399190615b2d565b6114439190615b4c565b61144d9190615b4c565b6114579088615b6e565b96505b505050808061146890615b86565b9150506111a4565b508360e001518311611483576000611492565b60e08401516114929084615b16565b9695505050505050565b6001600160a01b0380821660009081526016602090815260408083208151608081018352815460ff811615158252610100900486169381018490526001820154909516858301526002015460608501528051633fabe5a360e21b815290519293928491839163feaf968c9160048082019260a092909190829003018186803b15801561152757600080fd5b505afa15801561153b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155f9190615bbb565b509198975050505050505050565b611575613af6565b60ff9092166000908152601360209081526040808320805461ffff90951661ffff1990951694909417909355601590522055565b6115b1613af6565b6001600160a01b0381166115d75760405162461bcd60e51b815260040161102d90615c0b565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b60015460011461161b5760405162461bcd60e51b815260040161102d90615c4e565b6000600155805161166e5760405162461bcd60e51b815260206004820152601f60248201527f544f4b454e205354414b453a20494e56414c4944205354414b45204c49535400604482015260640161102d565b60005b81518110156116ae5761169c82828151811061168f5761168f615aea565b6020026020010151613b50565b806116a681615b86565b915050611671565b505060018055565b6001546001146116d85760405162461bcd60e51b815260040161102d90615c4e565b600060018181558282526012602090815260409283902083516101808101855281548152928101546001600160a01b039081169284018390526002820154948401949094526003810154606084015260048101546080840152600581015460a0840152600681015460c0840152600781015460e08401526008810154610100808501919091526009820154610120850152600a9091015460ff81161515610140850152049092166101608201529033146117e45760405162461bcd60e51b815260206004820152602760248201527f5354414b453a204f4e4c59204f574e4552204f46205354414b452043414e20576044820152664954484452415760c81b606482015260840161102d565b8061014001511561182f5760405162461bcd60e51b81526020600482015260156024820152745354414b453a2057495448445241572046414c534560581b604482015260640161102d565b428160600151116116ae5761184382613b50565b60408082015160c080840151600086815260126020908152858220600a01805460ff191660019081179091558583526011825286832087516101008181018a528254825292820154938101939093526002810154838901526003810154606084015260049081015460ff818116151560808601529281048316151560a08501526201000081048316151596840196909652630100000090950416151560e0820152600754600d54965163049eca8760e11b815295969395919492936001600160a01b039182169363093d950e93611921939290921691889101615c7d565b60206040518083038186803b15801561193957600080fd5b505afa15801561194d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119719190615a4b565b90508015611bff57600d546040516370a0823160e01b815230600482015282916001600160a01b0316906370a082319060240160206040518083038186803b1580156119bc57600080fd5b505afa1580156119d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f49190615a4b565b1015611a685760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e205354414b494e473a204e4f5420454e4f55474820544f4b454e2060448201527f42414c414e434520544f205041592055534552205354414b452056414c554500606482015260840161102d565b600d54602086015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb91611a9d918590600401615c7d565b602060405180830381600087803b158015611ab757600080fd5b505af1158015611acb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aef9190615c96565b611b615760405162461bcd60e51b815260206004820152603c60248201527f5354414b494e473a20554e41424c4520544f205452414e5346455220434f4d4d60448201527f495353494f4e205041594d454e5420544f205354414b45205553455200000000606482015260840161102d565b8160a0015115611bd3576009546020860151604051632351afaf60e21b81526001600160a01b0390921691638d46bebc91611ba0918790600401615c7d565b600060405180830381600087803b158015611bba57600080fd5b505af1158015611bce573d6000803e3d6000fd5b505050505b60405186907f8e55ccfc9778ff8eba1646d765cf1982537ce0f9257054a17b48aad74525018390600090a25b50505050505060018055565b600154600114611c2d5760405162461bcd60e51b815260040161102d90615c4e565b6000600155611c3b81613b50565b5060018055565b611c4a613af6565b600086815260116020526040812087815560018082018890556004909101805461ffff191687151561ff00191617610100871515021763ffff00001916620100008615150263ff000000191617630100000085151502179055611cae908890615b6e565b9050600f54811115611cc057600f8190555b50505050505050565b611cd1613af6565b601a55565b611cde613af6565b60008111611d1f5760405162461bcd60e51b815260206004820152600e60248201526d1253959053125108105353d5539560921b604482015260640161102d565b60405163a9059cbb60e01b81526001600160a01b0383169063a9059cbb90611d4d9033908590600401615c7d565b602060405180830381600087803b158015611d6757600080fd5b505af1158015611d7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9f9190615c96565b611de35760405162461bcd60e51b815260206004820152601560248201527421a0a72727aa102ba4aa24222920ab902a27a5a2a760591b604482015260640161102d565b5050565b611def613af6565b6001600160a01b038116611e555760405162461bcd60e51b815260206004820152602760248201527f4d41524b4554504c4143453a20494e56414c494420434f4d4d495353494f4e206044820152664144445245535360c81b606482015260840161102d565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b611e7f613af6565b6001600160a01b038116611ee45760405162461bcd60e51b815260206004820152602660248201527f4d41524b4554504c4143453a20494e56414c4944205354414b4520415059204160448201526544445245535360d01b606482015260840161102d565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b611f7e6040518061018001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b031681525090565b506000908152601260209081526040918290208251610180810184528154815260018201546001600160a01b03908116938201939093526002820154938101939093526003810154606084015260048101546080840152600581015460a0840152600681015460c0840152600781015460e08401526008810154610100808501919091526009820154610120850152600a9091015460ff81161515610140850152041661016082015290565b612032613af6565b6001600160a01b0381166120585760405162461bcd60e51b815260040161102d90615c0b565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b612082613af6565b601f92909255602055602155565b612098613af6565b6005919091556006805460ff191660ff909216919091179055565b6120bb613af6565b6001600160a01b0381166121115760405162461bcd60e51b815260206004820181905260248201527f4d41524b4554504c4143453a20494e56414c4944205553442041444452455353604482015260640161102d565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b61213b613af6565b6001600160a01b039586166000908152601460209081526040808320805460ff191698151598909817909755601690529490942080546001600160a81b031916931515610100600160a81b03191693909317610100928616929092029190911782556001820180546001600160a01b0319169190941617909255600290910155565b6121c5613af6565b601c92909255601d55601e55565b6121db613af6565b6121e560006143eb565b565b60008181526012602090815260408083208151610180810183528154815260018201546001600160a01b039081169482018590526002830154938201939093526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e08201526008820154610100808301919091526009830154610120830152600a9092015460ff8116151561014083015291909104909116610160820152908261229d85611058565b600954604051637f6408d360e01b815291925082916001600160a01b0390911690637f6408d3906122d49086908590600401615c7d565b60206040518083038186803b1580156122ec57600080fd5b505afa158015612300573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123249190615a4b565b9190911495945050505050565b612339613af6565b601955565b600080805b835181101561238c5761236e84828151811061236157612361615aea565b6020026020010151611058565b6123789083615b6e565b91508061238481615b86565b915050612343565b5092915050565b61239b613af6565b6000828152601260205260409020918255600390910155565b6123bc613af6565b604051339081904780156108fc02916000818181858888f19350505050158015611de3573d6000803e3d6000fd5b6123f2613af6565b8281146124255760405162461bcd60e51b81526020600482015260016024820152604960f81b604482015260640161102d565b60005b63ffffffff81168411156124b25782828263ffffffff1681811061244e5761244e615aea565b905060200201356017600087878563ffffffff1681811061247157612471615aea565b905060200201602081019061248691906154cd565b6001600160a01b03168152602081019190915260400160002055806124aa81615cb3565b915050612428565b5050505050565b6001546001146124db5760405162461bcd60e51b815260040161102d90615c4e565b600060015560185460ff166125245760405162461bcd60e51b815260206004820152600f60248201526e10d85b89dd081cdd185ad9481d5cd9608a1b604482015260640161102d565b600082116125745760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e2030000000604482015260640161102d565b6001600160a01b03811660009081526014602052604090205460ff16806125c35760405162461bcd60e51b8152602060048201526003602482015262249d2760e91b604482015260640161102d565b600084815260116020908152604080832081516101008082018452825482526001830154828601526002830154828501526003830154606083015260049283015460ff808216151560808501529181048216151560a08401526201000081048216151560c08401526301000000900416151560e0820152600a548351636158993b60e11b8152339381019390935292519094936001600160a01b039093169263c2b132769260248082019391829003018186803b15801561268357600080fd5b505afa158015612697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126bb9190615cd7565b90506001600160a01b0381166126f95760405162461bcd60e51b815260206004820152600360248201526213929560ea1b604482015260640161102d565b600c546040516370a0823160e01b815233600482015286916001600160a01b0316906370a082319060240160206040518083038186803b15801561273c57600080fd5b505afa158015612750573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127749190615a4b565b10156127925760405162461bcd60e51b815260040161102d90615cf4565b600c54604051636eb1769f60e11b815233600482015230602482015286916001600160a01b03169063dd62ed3e9060440160206040518083038186803b1580156127db57600080fd5b505afa1580156127ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128139190615a4b565b10156128315760405162461bcd60e51b815260040161102d90615d3c565b600c546040516323b872dd60e01b8152336004820152306024820152604481018790526001600160a01b03909116906323b872dd90606401602060405180830381600087803b15801561288357600080fd5b505af1158015612897573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128bb9190615c96565b6128d75760405162461bcd60e51b815260040161102d90615d73565b6000600454600254876128ea9190615b2d565b6128f49190615b4c565b90508260a0015115612912576129123382836000876080015161443b565b601b5460ff16801561292e57506008546001600160a01b031615155b15612b0257601f5415612b0257602154601f54600090606490612952908490615b6e565b61295c908a615b2d565b6129669190615b4c565b600c5460085460405163a9059cbb60e01b81529293506001600160a01b039182169263a9059cbb9261299e9216908590600401615c7d565b602060405180830381600087803b1580156129b857600080fd5b505af11580156129cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f09190615c96565b612a215760405162461bcd60e51b815260206004820152600260248201526122a960f11b604482015260640161102d565b600854601f54602054604051637e0867cb60e11b815260048101929092526024820152604481018a90526001600160a01b039091169063fc10cf9690606401600060405180830381600087803b158015612a7a57600080fd5b505af1158015612a8e573d6000803e3d6000fd5b50506008546040516326e6c68560e11b8152600481018690526001600160a01b038b81166024830152604482018d90529091169250634dcd8d0a9150606401600060405180830381600087803b158015612ae757600080fd5b505af1158015612afb573d6000803e3d6000fd5b5050505050505b8251612b0f908683614552565b5050600180555050505050565b600080808084612b3757506000925082915081905080612cfa565b60008681526012602090815260408083208151610180810183528154815260018201546001600160a01b03908116948201949094526002820154928101929092526003810154606083015260048101546080830152600581015460a0830152600681015460c0830152600781015460e08301526008810154610100808401919091526009820154610120840152600a9091015460ff81161515610140840152049091166101608201819052601a5491929091908080808415612c95576103e8612c00868e615b2d565b612c0a9190615b4c565b600754600d5460405163049eca8760e11b81529296506001600160a01b039182169263093d950e92612c429216908890600401615c7d565b60206040518083038186803b158015612c5a57600080fd5b505afa158015612c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c929190615a4b565b92505b6000601a546103e8612ca79190615b16565b90508015612ceb576103e8612cbc828f615b2d565b612cc69190615b4c565b9250612cd187610efa565b600354612cde9085615b2d565b612ce89190615b4c565b91505b50929950909750955093505050505b92959194509250565b612d0b613af6565b6001600160a01b038116612d6b5760405162461bcd60e51b815260206004820152602160248201527f4d41524b4554504c4143453a20494e56414c49442053574150204144445245536044820152605360f81b606482015260840161102d565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b612d95613af6565b6001600160a01b0384166000908152601660205260409020805460ff19168415801591909117909155612e07576001600160a01b0384811660009081526016602052604090208054610100600160a81b031916815560010180546001600160a01b031916918316919091179055612e93565b6001600160a01b038216612e5d5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420707269636520666565642061646472657373000000000000604482015260640161102d565b6001600160a01b038085166000908152601660205260409020805491841661010002610100600160a81b03199092169190911790555b50505050565b612ea1613af6565b6018805461ffff191692151561ff0019169290921761010091151591909102179055565b612ecd613af6565b6001600160a01b03811615801590612ef857506006546001600160a01b038281166101009092041614155b612f4e5760405162461bcd60e51b815260206004820152602160248201527f434f4d4d495353494f4e3a20494e56414c49442053595354454d2057414c4c456044820152601560fa1b606482015260840161102d565b600680546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600154600114612f985760405162461bcd60e51b815260040161102d90615c4e565b6000600155601854610100900460ff16612fe85760405162461bcd60e51b815260206004820152601160248201527010d85b89dd081cdd185ad9481b5a5e1959607a1b604482015260640161102d565b600082116130385760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e2030000000604482015260640161102d565b6001600160a01b03811660009081526014602052604090205460ff16806130875760405162461bcd60e51b8152602060048201526003602482015262249d2760e91b604482015260640161102d565b600084815260116020908152604080832081516101008082018452825482526001830154828601526002830154828501526003830154606083015260049283015460ff808216151560808501529181048216151560a08401526201000081048216151560c08401526301000000900416151560e0820152600a548351636158993b60e11b8152339381019390935292519094936001600160a01b039093169263c2b132769260248082019391829003018186803b15801561314757600080fd5b505afa15801561315b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317f9190615cd7565b90506001600160a01b0381166131bd5760405162461bcd60e51b815260206004820152600360248201526213929560ea1b604482015260640161102d565b60195460006131ce826103e8615b16565b90506000600454600254896131e39190615b2d565b6131ed9190615b4c565b905060006103e86131fe8584615b2d565b6132089190615b4c565b905060006103e86132198585615b2d565b6132239190615b4c565b600754600d5460405163049eca8760e11b81529293506000926001600160a01b039283169263093d950e9261325f929116908690600401615c7d565b60206040518083038186803b15801561327757600080fd5b505afa15801561328b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132af9190615a4b565b905080156134e057600d546040516370a0823160e01b815233600482015282916001600160a01b0316906370a082319060240160206040518083038186803b1580156132fa57600080fd5b505afa15801561330e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133329190615a4b565b10156133505760405162461bcd60e51b815260040161102d90615cf4565b600d54604051636eb1769f60e11b815233600482015230602482015282916001600160a01b03169063dd62ed3e9060440160206040518083038186803b15801561339957600080fd5b505afa1580156133ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133d19190615a4b565b10156133ef5760405162461bcd60e51b815260040161102d90615d3c565b600d546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd90606401602060405180830381600087803b15801561344157600080fd5b505af1158015613455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134799190615c96565b6134e05760405162461bcd60e51b815260206004820152603260248201527f544f4b454e205354414b453a205472616e7366657220746f6b656e7320746f206044820152711513d2d1538814d51052d14819985a5b195960721b606482015260840161102d565b82156138fc576000600254600454856134f99190615b2d565b6135039190615b4c565b600c546040516370a0823160e01b815233600482015291925082916001600160a01b03909116906370a082319060240160206040518083038186803b15801561354b57600080fd5b505afa15801561355f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135839190615a4b565b10156135a15760405162461bcd60e51b815260040161102d90615cf4565b600c54604051636eb1769f60e11b815233600482015230602482015282916001600160a01b03169063dd62ed3e9060440160206040518083038186803b1580156135ea57600080fd5b505afa1580156135fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136229190615a4b565b10156136405760405162461bcd60e51b815260040161102d90615d3c565b600c546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd90606401602060405180830381600087803b15801561369257600080fd5b505af11580156136a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ca9190615c96565b6136e65760405162461bcd60e51b815260040161102d90615d73565b601b5460ff16801561370257506008546001600160a01b031615155b156138fa57601c54156138fa57601e54601c54600090606490613726908490615b6e565b6137309085615b2d565b61373a9190615b4c565b600c5460085460405163a9059cbb60e01b81529293506001600160a01b039182169263a9059cbb926137729216908590600401615c7d565b602060405180830381600087803b15801561378c57600080fd5b505af11580156137a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137c49190615c96565b6137f55760405162461bcd60e51b815260206004820152600260248201526122a960f11b604482015260640161102d565b600854601c54601d54604051637e0867cb60e11b815260048101929092526024820152604481018590526001600160a01b039091169063fc10cf9690606401600060405180830381600087803b15801561384e57600080fd5b505af1158015613862573d6000803e3d6000fd5b50505050600860009054906101000a90046001600160a01b03166001600160a01b0316634dcd8d0a838f866040518463ffffffff1660e01b81526004016138c5939291909283526001600160a01b03919091166020830152604082015260600190565b600060405180830381600087803b1580156138df57600080fd5b505af11580156138f3573d6000803e3d6000fd5b5050505050505b505b8760a001511561391757613917338585858c6080015161443b565b8751613924908b86614552565b50506001805550505050505050505050565b61393e613af6565b6001600160a01b0381166139a35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161102d565b6139ac816143eb565b50565b60075460025460405163049eca8760e11b815260009283926001600160a01b039091169163093d950e916139e891879190600401615c7d565b60206040518083038186803b158015613a0057600080fd5b505afa158015613a14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a389190615a4b565b905080600354600254613a4b9190615b2d565b610fa09190615b4c565b60025460405163049eca8760e11b815260009182916001600160a01b0385169163093d950e91613a89918891600401615c7d565b60206040518083038186803b158015613aa157600080fd5b505afa158015613ab5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ad99190615a4b565b905080600354600254613aec9190615b2d565b610f8a9190615b4c565b6000546001600160a01b031633146121e55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161102d565b6000613b5b826121e7565b9050600181151514613ba75760405162461bcd60e51b81526020600482015260156024820152745354414b494e473a2043414e4e4f5420434c41494d60581b604482015260640161102d565b6000613bb283611058565b601a549091506000613bc6826103e8615b16565b905060006103e8613bd78486615b2d565b613be19190615b4c565b905060006103e8613bf28487615b2d565b613bfc9190615b4c565b600754600d5460405163049eca8760e11b81529293506000926001600160a01b039283169263093d950e92613c38929116908790600401615c7d565b60206040518083038186803b158015613c5057600080fd5b505afa158015613c64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c889190615a4b565b90506000601260008a815260200190815260200160002060405180610180016040529081600082015481526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff16151515158152602001600a820160019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152505090506000601160008360400151815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff161515151581526020016004820160029054906101000a900460ff161515151581526020016004820160039054906101000a900460ff161515151581525050905060008261016001519050336001600160a01b031683602001516001600160a01b031614613eb95760405162461bcd60e51b815260206004820152602660248201527f5354414b494e473a204f4e4c59204f574e4552204f46205354414b452043414e60448201526520434c41494d60d01b606482015260840161102d565b831561409a57600d546040516370a0823160e01b815230600482015285916001600160a01b0316906370a082319060240160206040518083038186803b158015613f0257600080fd5b505afa158015613f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f3a9190615a4b565b1015613f585760405162461bcd60e51b815260040161102d90615dc4565b600d5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90613f8a9033908890600401615c7d565b602060405180830381600087803b158015613fa457600080fd5b505af1158015613fb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fdc9190615c96565b613ff85760405162461bcd60e51b815260040161102d90615e21565b60008b81526012602052604081206008018054869290614019908490615b6e565b909155505060c08201511561409a5760095460e08301516040516336fd4be560e11b81523360048201526024810189905290151560448201526001600160a01b0390911690636dfa97ca90606401600060405180830381600087803b15801561408157600080fd5b505af1158015614095573d6000803e3d6000fd5b505050505b60006140a582610efa565b6003546140b29088615b2d565b6140bc9190615b4c565b90508b811561437f57610160850151600e546000906001600160a01b03808416911614156141d057834710156141345760405162461bcd60e51b815260206004820152601d60248201527f5354414b494e473a20496e73756666696369656e742062616c616e6365000000604482015260640161102d565b6040513390600090829087908381818185875af1925050503d8060008114614178576040519150601f19603f3d011682016040523d82523d6000602084013e61417d565b606091505b50509050806141c55760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b604482015260640161102d565b600192505050614340565b6001600160a01b038216600090815260166020526040812060029081015490549091906141fd8388615b2d565b6142079190615b4c565b6040516370a0823160e01b815230600482015290915081906001600160a01b038616906370a082319060240160206040518083038186803b15801561424b57600080fd5b505afa15801561425f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142839190615a4b565b10156142a15760405162461bcd60e51b815260040161102d90615dc4565b60405163a9059cbb60e01b81526001600160a01b0385169063a9059cbb906142cf9033908590600401615c7d565b602060405180830381600087803b1580156142e957600080fd5b505af11580156142fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143219190615c96565b61433d5760405162461bcd60e51b815260040161102d90615e21565b50505b8560c001511561435657614356338a84846147c8565b60008381526012602052604081206009018054869290614377908490615b6e565b909155505050505b6040518b8152339082907f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed0269060200160405180910390a3600081815260126020526040812060070180548d92906143d7908490615b6e565b909155505050505050505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600954604051639a3841f360e01b81526001600160a01b03878116600483015260248201879052831515604483015290911690639a3841f390606401600060405180830381600087803b15801561449157600080fd5b505af11580156144a5573d6000803e3d6000fd5b5050600a54604051636158993b60e11b81526001600160a01b03898116600483015260009450909116915063c2b132769060240160206040518083038186803b1580156144f157600080fd5b505afa158015614505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145299190615cd7565b90506001600160a01b0381161561454a578061454781878787614864565b50505b505050505050565b6000838152601160209081526040918290208251610100808201855282548252600180840154948301949094526002830154948201949094526003820154606082015260049091015460ff808216151560808401529381048416151560a08301526201000081048416151560c083015263010000009004909216151560e083015260105442916145e29190615b6e565b60108181556000828152601260209081526040808320948555600190940180546001600160a01b03191633179055825482528382206002018990559154815291822060040183905583015161463a9062015180615b2d565b6146449083615b6e565b6010805460009081526012602052604080822060030184905591548152818120600a0180546001600160a01b03808b1661010002610100600160a81b031990921691909117909155600754600d54935163049eca8760e11b815294955091939181169263093d950e926146c09291909116908990600401615c7d565b60206040518083038186803b1580156146d857600080fd5b505afa1580156146ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147109190615a4b565b601080546000908152601260209081526040808320600501859055835483528083206006018a90558354835280832060070183905583548352808320600801839055835483528083206009018390558354835291829020600a01805460ff19169055915481518b8152928301899052908201869052606082018590529192503391907f0206c6fc83cce751511b5967bcd8ce71e05610271791c0a7a66c09914c12b4b59060800160405180910390a350505050505050565b600a54604051636158993b60e11b81526001600160a01b038681166004830152600092169063c2b132769060240160206040518083038186803b15801561480e57600080fd5b505afa158015614822573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148469190615cd7565b90506001600160a01b038116156124b2578061454a81868686614cb8565b60008460015b6001600160a01b0382161580159061488757506005548160ff1611155b15614cab5760006148988383614fa8565b6009546040516351493cc760e11b81526001600160a01b0386811660048301529293506000929091169063a292798e9060240160206040518083038186803b1580156148e357600080fd5b505afa1580156148f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061491b9190615a4b565b60095460405163318d306760e21b81526001600160a01b038781166004830152602482018c905261ffff861660448301526064820184905292935091169063c634c19c90608401600060405180830381600087803b15801561497c57600080fd5b505af1158015614990573d6000803e3d6000fd5b505050508161ffff16600014614bf1578515614b105760095460405163ce6510eb60e01b81526000916001600160a01b03169063ce6510eb906149dd9088908b9087908990600401615e7e565b602060405180830381600087803b1580156149f757600080fd5b505af1158015614a0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a2f9190615a4b565b90508015614b0e576001600160a01b03851660009081526017602052604081208054839290614a5f908490615b6e565b9091555050600754600d5460405163049eca8760e11b81526000926001600160a01b039081169263093d950e92614a9e92909116908690600401615c7d565b60206040518083038186803b158015614ab657600080fd5b505afa158015614aca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614aee9190615a4b565b600d54909150614b0c90879083906001600160a01b03166000615092565b505b505b8615614bf15760095460405163ce6510eb60e01b81526000916001600160a01b03169063ce6510eb90614b4d9088908c9087908990600401615e7e565b602060405180830381600087803b158015614b6757600080fd5b505af1158015614b7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b9f9190615a4b565b90508015614bef576001600160a01b03851660009081526017602052604081208054839290614bcf908490615b6e565b9091555050600c54614bef90869083906001600160a01b03166000615092565b505b6006546001600160a01b03858116610100909204161415614c155760009350614c97565b600a54604051636158993b60e11b81526001600160a01b038681166004830152600092169063c2b132769060240160206040518083038186803b158015614c5b57600080fd5b505afa158015614c6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c939190615cd7565b9450505b614ca2836001615ea8565b9250505061486a565b5060019695505050505050565b8360015b6001600160a01b03821615801590614cdd575060065460ff90811690821611155b1561454a576000614cee838361538e565b6009546040516351493cc760e11b81526001600160a01b0386811660048301529293506000929091169063a292798e9060240160206040518083038186803b158015614d3957600080fd5b505afa158015614d4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614d719190615a4b565b600954604051639e290f2d60e01b81526001600160a01b038781166004830152602482018b905261ffff8616604483015260648201849052929350911690639e290f2d90608401600060405180830381600087803b158015614dd257600080fd5b505af1158015614de6573d6000803e3d6000fd5b505050508161ffff16600014614eee5760095460405163ce6510eb60e01b81526000916001600160a01b03169063ce6510eb90614e2d9088908c9087908990600401615e7e565b602060405180830381600087803b158015614e4757600080fd5b505af1158015614e5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e7f9190615a4b565b90506000614e8c88610efa565b600354614e999084615b2d565b614ea39190615b4c565b6001600160a01b0389166000908152601660205260408120600290810154905492935091614ed18385615b2d565b614edb9190615b4c565b9050614ee988828c8c615092565b505050505b6006546001600160a01b03858116610100909204161415614f125760009350614f94565b600a54604051636158993b60e11b81526001600160a01b038681166004830152600092169063c2b132769060240160206040518083038186803b158015614f5857600080fd5b505afa158015614f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f909190615cd7565b9450505b614f9f836001615ea8565b92505050614cbc565b60ff81166000908152601560205260408120546002548290614fca9083615b2d565b60ff851660009081526013602052604090205490915061ffff1681614ff3579250610f1c915050565b600954604051639ab61d7d60e01b81526001600160a01b0388811660048301526000921690639ab61d7d9060240160206040518083038186803b15801561503957600080fd5b505afa15801561504d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150719190615a4b565b905082811061508557509250610f1c915050565b6000945050505050610f1c565b8215612e9357600c546000906001600160a01b038481169116146150b657836150d0565b6002546004546150c69086615b2d565b6150d09190615b4c565b905081156151c957804710156151285760405162461bcd60e51b815260206004820152601d60248201527f5354414b494e473a20496e73756666696369656e742062616c616e6365000000604482015260640161102d565b60405185906000906001600160a01b0383169084908381818185875af1925050503d8060008114615175576040519150601f19603f3d011682016040523d82523d6000602084013e61517a565b606091505b50509050806151c25760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b604482015260640161102d565b50506124b2565b6040516370a0823160e01b815230600482015281906001600160a01b038516906370a082319060240160206040518083038186803b15801561520a57600080fd5b505afa15801561521e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906152429190615a4b565b101561529c5760405162461bcd60e51b8152602060048201526024808201527f434f4d4d495353494f4e3a20544f4b454e2042414c414e4345204e4f5420454e60448201526309eaa8e960e31b606482015260840161102d565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906152ca9088908590600401615c7d565b602060405180830381600087803b1580156152e457600080fd5b505af11580156152f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061531c9190615c96565b6124b25760405162461bcd60e51b815260206004820152603e60248201527f434f4d4d495353494f4e3a20554e41424c4520544f205452414e53464552204360448201527f4f4d4d495353494f4e205041594d454e5420544f20524543495049454e540000606482015260840161102d565b600954604051630b35c9a960e01b815260ff8316600482015260009182916001600160a01b0390911690630b35c9a99060240160206040518083038186803b1580156153d957600080fd5b505afa1580156153ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906154119190615a4b565b90506000600254826154239190615b2d565b600954604051634775f5e960e01b815260ff871660048201529192506000916001600160a01b0390911690634775f5e99060240160206040518083038186803b15801561546f57600080fd5b505afa158015615483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906154a79190615ecd565b905081614ff3579250610f1c915050565b6001600160a01b03811681146139ac57600080fd5b6000602082840312156154df57600080fd5b8135610fa0816154b8565b80151581146139ac57600080fd5b60006020828403121561550a57600080fd5b8135610fa0816154ea565b60006020828403121561552757600080fd5b5035919050565b803560ff81168114610fa757600080fd5b61ffff811681146139ac57600080fd5b60008060006060848603121561556457600080fd5b61556d8461552e565b9250602084013561557d8161553f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156155cd576155cd61558e565b604052919050565b600067ffffffffffffffff8211156155ef576155ef61558e565b5060051b60200190565b6000602080838503121561560c57600080fd5b823567ffffffffffffffff81111561562357600080fd5b8301601f8101851361563457600080fd5b8035615647615642826155d5565b6155a4565b81815260059190911b8201830190838101908783111561566657600080fd5b928401925b828410156156845783358252928401929084019061566b565b979650505050505050565b60008060008060008060c087890312156156a857600080fd5b863595506020870135945060408701356156c1816154ea565b935060608701356156d1816154ea565b925060808701356156e1816154ea565b915060a08701356156f1816154ea565b809150509295509295509295565b6000806040838503121561571257600080fd5b823561571d816154b8565b946020939093013593505050565b8151815260208083015161018083019161574f908401826001600160a01b03169052565b5060408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516157b88285018215159052565b5050610160928301516001600160a01b0316919092015290565b6000806000606084860312156157e757600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561581157600080fd5b823591506158216020840161552e565b90509250929050565b60008060008060008060c0878903121561584357600080fd5b863561584e816154b8565b9550602087013561585e816154ea565b9450604087013561586e816154ea565b9350606087013561587e816154b8565b9250608087013561588e816154b8565b8092505060a087013590509295509295509295565b600080604083850312156158b657600080fd5b50508035926020909101359150565b60008083601f8401126158d757600080fd5b50813567ffffffffffffffff8111156158ef57600080fd5b6020830191508360208260051b850101111561590a57600080fd5b9250929050565b6000806000806040858703121561592757600080fd5b843567ffffffffffffffff8082111561593f57600080fd5b61594b888389016158c5565b9096509450602087013591508082111561596457600080fd5b50615971878288016158c5565b95989497509550505050565b60008060006060848603121561599257600080fd5b833592506020840135915060408401356159ab816154b8565b809150509250925092565b600080600080608085870312156159cc57600080fd5b84356159d7816154b8565b935060208501356159e7816154ea565b925060408501356159f7816154b8565b91506060850135615a07816154b8565b939692955090935050565b60008060408385031215615a2557600080fd5b8235615a30816154ea565b91506020830135615a40816154ea565b809150509250929050565b600060208284031215615a5d57600080fd5b5051919050565b60006020808385031215615a7757600080fd5b825167ffffffffffffffff811115615a8e57600080fd5b8301601f81018513615a9f57600080fd5b8051615aad615642826155d5565b81815260059190911b82018301908381019087831115615acc57600080fd5b928401925b8284101561568457835182529284019290840190615ad1565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015615b2857615b28615b00565b500390565b6000816000190483118215151615615b4757615b47615b00565b500290565b600082615b6957634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115615b8157615b81615b00565b500190565b6000600019821415615b9a57615b9a615b00565b5060010190565b805169ffffffffffffffffffff81168114610fa757600080fd5b600080600080600060a08688031215615bd357600080fd5b615bdc86615ba1565b9450602086015193506040860151925060608601519150615bff60808701615ba1565b90509295509295909350565b60208082526023908201527f4d41524b4554504c4143453a20494e56414c4944204f5241434c45204144445260408201526245535360e81b606082015260800190565b6020808252601590820152741513d2d1538814d51052d25391ce881313d0d2d151605a1b604082015260600190565b6001600160a01b03929092168252602082015260400190565b600060208284031215615ca857600080fd5b8151610fa0816154ea565b600063ffffffff80831681811415615ccd57615ccd615b00565b6001019392505050565b600060208284031215615ce957600080fd5b8151610fa0816154b8565b60208082526028908201527f544f4b454e205354414b453a204e6f7420656e6f7567682062616c616e636520604082015267746f207374616b6560c01b606082015260800190565b6020808252601f908201527f544f4b454e205354414b453a204d75737420617070726f766520666972737400604082015260600190565b60208082526031908201527f544f4b454e205354414b453a205472616e7366657220746f6b656e20746f205460408201527013d2d1538814d51052d14819985a5b1959607a1b606082015260800190565b6020808252603b908201527f544f4b454e205354414b453a204e4f5420454e4f55474820544f4b454e20424160408201527f4c414e434520544f2050415920554e5354414b45205245574152440000000000606082015260800190565b6020808252603f908201527f544f4b454e205354414b453a20554e41424c4520544f205452414e534645522060408201527f434f4d4d495353494f4e205041594d454e5420544f20524543495049454e5400606082015260800190565b6001600160a01b039490941684526020840192909252604083015261ffff16606082015260800190565b600060ff821660ff84168060ff03821115615ec557615ec5615b00565b019392505050565b600060208284031215615edf57600080fd5b8151610fa08161553f56fea26469706673582212209ec863c52f79a90b06b53098fdacd118e4d2bc12dca9e5c0f98b8d89ef64a3e264736f6c6343000808003300000000000000000000000031c7c080577643cb453fe2dec06b7a6223550b940000000000000000000000000052074d3eb1429f39e5ea529b54a650c21f5aa4000000000000000000000000c2132d05d31c914a87c6611c10748aeb04b58e8f00000000000000000000000010d2c95568b6fcba3bda088c2552d4ff25387771000000000000000000000000ddc8ce177504e50885de21c79df3e2b58581897f00000000000000000000000007985c70f427d5fdf906003f90073fbd2456f4a9