0 txs
4 calls
constructor
No constructor.
functions
admin
viewfunction admin(address) view returns (bool)
allUsersWithNetBuy
viewfunction allUsersWithNetBuy(uint256) view returns (address)
btbConfig
viewfunction btbConfig() view returns (address)
btbPackAddress
viewfunction btbPackAddress() view returns (address)
buyEnabled
viewfunction buyEnabled() view returns (bool)
canSell
viewfunction canSell() view returns (bool)
canUserBuy
viewfunction canUserBuy(address user) view returns (bool canBuy, string reason, uint256 userBalance, uint256 allowance)
checkBuyStatus
viewfunction checkBuyStatus() view returns (bool canBuy, string reason, bool buyEnabledStatus, bool configValid, address communityAddr, address techAddr)
checkSellStatus
viewfunction checkSellStatus(address user) view returns (bool canSell, string reason, bool sellEnabledStatus, bool timeAllowed, uint256 currentHour, uint256 nextTradeTime, uint256 timeRemaining)
communityAddress
viewfunction communityAddress() view returns (address)
excludedUsers
viewfunction excludedUsers(address) view returns (bool)
getAmountOut
purefunction getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns (uint256 amountOut)
getContractStatus
viewfunction getContractStatus() view returns (bool _buyEnabled, bool _sellEnabled, bool _rankingEnabled, uint256 _usdtBalance, uint256 _btbBalance, uint256 _top50Count)
getExchangeAmount
viewfunction getExchangeAmount(uint256 usdtAmount) view returns (uint256)
getPrice
viewfunction getPrice() view returns (uint256)
getRankingStats
viewfunction getRankingStats() view returns (uint256 totalUsers, uint256 totalNetBuyAmount, address topUser, int256 topNetAmount)
getRankingTargetStatus
viewfunction getRankingTargetStatus() view returns (uint256 target, uint256 currentTotal, bool targetReached, bool rankingActive, uint256 remainingAmount)
getSellExchangeAmount
viewfunction getSellExchangeAmount(uint256 btbAmount) view returns (uint256)
getTop100Addresses
viewfunction getTop100Addresses() view returns (address[], int256[])
getTop50Addresses
viewfunction getTop50Addresses() view returns (address[], int256[])
getTop50Ranking
viewfunction getTop50Ranking() view returns (string[], int256[])
getUserNetBuyStatus
viewfunction getUserNetBuyStatus(address user) view returns (int256 netAmount, bool inRanking, uint256 rank)
getUserRank
viewfunction getUserRank(address user) view returns (uint256 rank)
getUserStats
viewfunction getUserStats() view returns (uint256 totalUsersWithNetBuy, uint256 rankingUsers, uint256 usersWithPositiveNetBuy, uint256 usersWithZeroNetBuy)
getUserVueStatus
viewfunction getUserVueStatus(address user) view returns (bool canBuy, bool canSell, string buyMessage, string sellMessage, uint256 userUsdtBalance, uint256 userBtbBalance, uint256 userUsdtAllowance, int256 userNetBuyAmount, uint256 userRank)
hasNetBuyRecord
viewfunction hasNetBuyRecord(address) view returns (bool)
isAdmin
viewfunction isAdmin(address user) view returns (bool)
lastTradeTime
viewfunction lastTradeTime(address) view returns (uint256)
MIN_POOL_BALANCE
viewfunction MIN_POOL_BALANCE() view returns (uint256)
NET_BUY_TARGET
viewfunction NET_BUY_TARGET() view returns (uint256)
netBuyAmount
viewfunction netBuyAmount(address) view returns (int256)
owner
viewfunction owner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
rankingEnabled
viewfunction rankingEnabled() view returns (bool)
rankingTargetReached
viewfunction rankingTargetReached() view returns (bool)
SELL_LIMIT
viewfunction SELL_LIMIT() view returns (uint256)
sellEnabled
viewfunction sellEnabled() view returns (bool)
techAddress
viewfunction techAddress() view returns (address)
top50Addresses
viewfunction top50Addresses(uint256) view returns (address)
totalNetBuyAmount
viewfunction totalNetBuyAmount() view returns (uint256)
TRADE_INTERVAL
viewfunction TRADE_INTERVAL() view returns (uint256)
userRankingIndex
viewfunction userRankingIndex(address) view returns (uint256)
zgetExcludedUsersCount
viewfunction zgetExcludedUsersCount() view returns (uint256 count)
zisUserExcluded
viewfunction zisUserExcluded(address user) view returns (bool)
buyBTB
nonpayablefunction buyBTB(uint256 usdtAmount)
cleanZeroNetBuyUsers
nonpayablefunction cleanZeroNetBuyUsers()
clearAllUserNetBuyData
nonpayablefunction clearAllUserNetBuyData()
clearUserTradeRecord
nonpayablefunction clearUserTradeRecord(address user)
emergencyStop
nonpayablefunction emergencyStop()
forceClearRanking
nonpayablefunction forceClearRanking()
forceUpdateRanking
nonpayablefunction forceUpdateRanking(address user)
initialize
nonpayablefunction initialize(address _btbConfig, address _btbPackAddress, address _communityAddress, address _techAddress)
renounceOwnership
nonpayablefunction renounceOwnership()
reorderRanking
nonpayablefunction reorderRanking()
resumeTrading
nonpayablefunction resumeTrading()
sellBTB
nonpayablefunction sellBTB(uint256 btbAmount)
setAdmin
nonpayablefunction setAdmin(address user, bool auth)
setAdmins
nonpayablefunction setAdmins(address[] users, bool auth)
setBuyEnabled
nonpayablefunction setBuyEnabled(bool enabled)
setCommunityAddress
nonpayablefunction setCommunityAddress(address addr)
setRankingEnabled
nonpayablefunction setRankingEnabled(bool enabled)
setRankingTarget
nonpayablefunction setRankingTarget(uint256 newTarget)
setSellEnabled
nonpayablefunction setSellEnabled(bool enabled)
setTechAddress
nonpayablefunction setTechAddress(address addr)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdrawTokens
nonpayablefunction withdrawTokens(address token, uint256 amount)
zexcludeMultipleUsersFromRanking
nonpayablefunction zexcludeMultipleUsersFromRanking(address[] users)
zexcludeUserFromRanking
nonpayablefunction zexcludeUserFromRanking(address user)
zmanualFillRanking
nonpayablefunction zmanualFillRanking()
zsetRankingTargetReached
nonpayablefunction zsetRankingTargetReached(bool reached)
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
AdminSet
event AdminSet(address indexed user, bool auth)
AllNetBuyDataCleared
event AllNetBuyDataCleared()
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
Buy
event Buy(address indexed user, uint256 usdtAmount, uint256 btbAmount)
ExcludedUsersReset
event ExcludedUsersReset()
Initialized
event Initialized(uint8 version)
NetBuyDataCleared
event NetBuyDataCleared(address indexed user)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RankingAutoFilled
event RankingAutoFilled(uint256 filledCount, uint256 totalRankingUsers)
RankingCleared
event RankingCleared()
RankingResumed
event RankingResumed(uint256 currentTotal)
RankingTargetChanged
event RankingTargetChanged(uint256 oldTarget, uint256 newTarget)
RankingTargetReached
event RankingTargetReached(uint256 totalNetBuyAmount)
RankingUpdated
event RankingUpdated(address indexed user, uint256 rank, int256 netAmount)
Sell
event Sell(address indexed user, uint256 btbAmount, uint256 usdtAmount)
SellToCommunity
event SellToCommunity(address indexed user, uint256 btbAmount, uint256 usdtAmount, address communityAddress)
Upgraded
event Upgraded(address indexed implementation)
UserExcludedFromRanking
event UserExcludedFromRanking(address indexed user, int256 removedAmount)
errors
No errors.
creation bytecode
0x60a0604052306080526910f0cf064dd59200000061010755348015602257600080fd5b50608051615ab661005a60003960008181611574015281816115b401528181611d4e01528181611d8e0152611f900152615ab66000f3fe60806040526004361061041b5760003560e01c80638da5cb5b1161021e578063c7b501b611610123578063e44efc6c116100ab578063f582d2931161007a578063f582d29314610d6a578063f7ce447914610d85578063f8c8765e14610da5578063fa3afbbf14610dc5578063fdaef40914610dda57600080fd5b8063e44efc6c14610cfe578063e50c4c8614610d13578063e9c8f10414610d2a578063f2fde38b14610d4a57600080fd5b8063d9e7c938116100f2578063d9e7c93814610c5f578063da8daff414610c7f578063dba4d6c114610c9f578063dbf5e66f14610cd4578063dfe9a92214610ce957600080fd5b8063c7b501b614610bdf578063cd5584a914610bff578063d35afcce14610c1f578063d6f1546914610c3f57600080fd5b8063accca7f3116101a6578063b4b9049511610175578063b4b9049514610b12578063b556634614610b2f578063b6bc254614610b44578063c032846b14610b64578063c2ba3d7514610bae57600080fd5b8063accca7f314610a92578063ad1a7c9414610ab2578063b0cb1b0d14610ad2578063b2d1573f14610af257600080fd5b806399d4de83116101ed57806399d4de83146109ec5780639bd2e0b014610a19578063a3e42c6f14610a2e578063a3e871b014610a4e578063a6ab812114610a7157600080fd5b80638da5cb5b1461097c57806391f899191461099a57806394ad511b146109ba57806398d5fdca146109d757600080fd5b80634f1ef286116103245780635dd11a6e116102ac578063707eb02a1161027b578063707eb02a146108f0578063715018a6146109075780637fb0266d1461091c57806384c873401461093c57806386e476dd1461095c57600080fd5b80635dd11a6e1461084157806363a599a41461086f57806363a846f81461088457806363bbbfeb146108b557600080fd5b806354e5e321116102f357806354e5e3211461078e5780635589f22b146107d157806355b15603146107f15780635628e3171461080c57806358197a9d1461082157600080fd5b80634f1ef2861461071c57806351318d791461072f57806352d1902d1461074457806353f6ad371461075957600080fd5b8063272f1467116103a75780633c7899b3116103765780633c7899b31461064257806340cc6bae14610675578063442a8ce814610695578063444d5201146106d95780634b0bddd2146106fc57600080fd5b8063272f1467146105aa5780632a103261146105d15780632db687b0146106025780633659cfe61461062257600080fd5b806306b091f9116103ee57806306b091f9146104b85780631904aa4c146104d85780631d757cfe146105225780631e56cfab1461055257806324d7806c1461058a57600080fd5b8063030e2c881461042057806303186eef14610442578063054d50d4146104835780630694db1e146104a3575b600080fd5b34801561042c57600080fd5b5061044061043b366004614f97565b610df0565b005b34801561044e57600080fd5b5061047061045d366004615002565b6101046020526000908152604090205481565b6040519081526020015b60405180910390f35b34801561048f57600080fd5b5061047061049e36600461501f565b610ed1565b3480156104af57600080fd5b50610440610fca565b3480156104c457600080fd5b506104406104d336600461504b565b611023565b3480156104e457600080fd5b506105126104f3366004615002565b6001600160a01b0316600090815261010a602052604090205460ff1690565b604051901515815260200161047a565b34801561052e57600080fd5b5061054261053d366004615002565b611176565b60405161047a94939291906150c7565b34801561055e57600080fd5b5060fc54610572906001600160a01b031681565b6040516001600160a01b03909116815260200161047a565b34801561059657600080fd5b506105126105a5366004615002565b611404565b3480156105b657600080fd5b506105bf61143f565b60405161047a969594939291906150f5565b3480156105dd57600080fd5b506105126105ec366004615002565b6101026020526000908152604090205460ff1681565b34801561060e57600080fd5b5061044061061d36600461513e565b611555565b34801561062e57600080fd5b5061044061063d366004615002565b61156a565b34801561064e57600080fd5b5061066261065d366004615002565b611646565b60405161047a9796959493929190615157565b34801561068157600080fd5b50610440610690366004615002565b6117af565b3480156106a157600080fd5b506106aa6117fd565b60405161047a949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b3480156106e557600080fd5b506106ee61187c565b60405161047a9291906151d8565b34801561070857600080fd5b5061044061071736600461522f565b611cdc565b61044061072a3660046152d5565b611d44565b34801561073b57600080fd5b506106ee611e10565b34801561075057600080fd5b50610470611f83565b34801561076557600080fd5b5061076e612036565b60408051948552602085019390935291830152606082015260800161047a565b34801561079a57600080fd5b506107a36120e9565b604080519586526020860194909452911515928401929092529015156060830152608082015260a00161047a565b3480156107dd57600080fd5b506105726107ec36600461513e565b61212c565b3480156107fd57600080fd5b50610109546105129060ff1681565b34801561081857600080fd5b50610470612157565b34801561082d57600080fd5b506101055461051290610100900460ff1681565b34801561084d57600080fd5b5061047061085c366004615002565b6101016020526000908152604090205481565b34801561087b57600080fd5b506104406121c6565b34801561089057600080fd5b5061051261089f366004615002565b6101066020526000908152604090205460ff1681565b3480156108c157600080fd5b506108d56108d0366004615002565b61221a565b6040805193845291151560208401529082015260600161047a565b3480156108fc57600080fd5b506104706101075481565b34801561091357600080fd5b506104406122a9565b34801561092857600080fd5b50610440610937366004615002565b6122bd565b34801561094857600080fd5b5060fd54610572906001600160a01b031681565b34801561096857600080fd5b5060fb54610572906001600160a01b031681565b34801561098857600080fd5b506033546001600160a01b0316610572565b3480156109a657600080fd5b506104406109b5366004615367565b612487565b3480156109c657600080fd5b50610470680ad78ebc5ac620000081565b3480156109e357600080fd5b506104706124e9565b3480156109f857600080fd5b50610470610a07366004615002565b60ff6020526000908152604090205481565b348015610a2557600080fd5b506104406125f4565b348015610a3a57600080fd5b50610440610a4936600461513e565b6126cf565b348015610a5a57600080fd5b50610a636127aa565b60405161047a929190615384565b348015610a7d57600080fd5b50610105546105129062010000900460ff1681565b348015610a9e57600080fd5b50610440610aad3660046153fc565b612906565b348015610abe57600080fd5b50610440610acd366004615367565b612a9a565b348015610ade57600080fd5b5060fe54610572906001600160a01b031681565b348015610afe57600080fd5b50610470610b0d366004615002565b612af3565b348015610b1e57600080fd5b5061047068056bc75e2d6310000081565b348015610b3b57600080fd5b50610440612b6f565b348015610b5057600080fd5b50610440610b5f366004615367565b612c31565b348015610b7057600080fd5b50610b79612c91565b6040805196151587529415156020870152921515938501939093526060840152608083019190915260a082015260c00161047a565b348015610bba57600080fd5b50610512610bc9366004615002565b61010a6020526000908152604090205460ff1681565b348015610beb57600080fd5b50610440610bfa36600461513e565b612e8b565b348015610c0b57600080fd5b50610470610c1a36600461513e565b613368565b348015610c2b57600080fd5b50610440610c3a366004615002565b61338f565b348015610c4b57600080fd5b50610440610c5a366004615367565b6133f6565b348015610c6b57600080fd5b50610470610c7a36600461513e565b61344f565b348015610c8b57600080fd5b50610440610c9a366004615002565b61346b565b348015610cab57600080fd5b50610cbf610cba366004615002565b613512565b60405161047a9998979695949392919061543d565b348015610ce057600080fd5b5061044061377a565b348015610cf557600080fd5b506104406137c7565b348015610d0a57600080fd5b50610440613814565b348015610d1f57600080fd5b506104706101085481565b348015610d3657600080fd5b50610572610d4536600461513e565b613861565b348015610d5657600080fd5b50610440610d65366004615002565b613872565b348015610d7657600080fd5b50610105546105129060ff1681565b348015610d9157600080fd5b50610440610da0366004615002565b6138e8565b348015610db157600080fd5b50610440610dc03660046154a2565b61394f565b348015610dd157600080fd5b50610512613ac9565b348015610de657600080fd5b50610470610e1081565b610df8613b26565b60005b82811015610ecb57816101066000868685818110610e1b57610e1b6154fe565b9050602002016020810190610e309190615002565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055838382818110610e6a57610e6a6154fe565b9050602002016020810190610e7f9190615002565b6001600160a01b03167fe68d2c359a771606c400cf8b87000cf5864010363d6a736e98f5047b7bbe18e983604051610ebb911515815260200190565b60405180910390a2600101610dfb565b50505050565b6000808411610f275760405162461bcd60e51b815260206004820152601960248201527f494e53554646494349454e545f494e5055545f414d4f554e540000000000000060448201526064015b60405180910390fd5b600083118015610f375750600082115b610f7c5760405162461bcd60e51b8152602060048201526016602482015275494e53554646494349454e545f4c495155494449545960501b6044820152606401610f1e565b6000610f8a856103e561552a565b90506000610f98848361552a565b9050600082610fa9876103e861552a565b610fb39190615541565b9050610fbf818361556a565b979650505050505050565b336000908152610106602052604090205460ff1680610ff357506033546001600160a01b031633145b61100f5760405162461bcd60e51b8152600401610f1e9061557e565b610105805462ffffff191662010101179055565b336000908152610106602052604090205460ff168061104c57506033546001600160a01b031633145b6110685760405162461bcd60e51b8152600401610f1e9061557e565b600081116110b85760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f6044820152606401610f1e565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa1580156110fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112291906155a1565b10156111675760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610f1e565b611172823383613b80565b5050565b60006060600080306001600160a01b031663272f14676040518163ffffffff1660e01b8152600401600060405180830381865afa1580156111bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111e391908101906155ff565b5093975091955050851591506113fd90505760fe60009054906101000a90046001600160a01b03166001600160a01b0316632f48ab7d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611248573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126c919061569d565b6040516370a0823160e01b81526001600160a01b03878116600483015291909116906370a0823190602401602060405180830381865afa1580156112b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d891906155a1565b915060fe60009054906101000a90046001600160a01b03166001600160a01b0316632f48ab7d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561132d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611351919061569d565b604051636eb1769f60e11b81526001600160a01b038781166004830152306024830152919091169063dd62ed3e90604401602060405180830381865afa15801561139f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c391906155a1565b9050816000036113fd57600093506040518060400160405280601081526020016f55534454e4bd99e9a29de4b88de8b6b360801b81525092505b9193509193565b6001600160a01b0381166000908152610106602052604081205460ff168061143957506033546001600160a01b038381169116145b92915050565b60408051808201909152600c81526be58fafe4bba5e4b9b0e585a560a01b6020820152610105546001919060009081908190819060ff166114ac576000955060405180604001604052806012815260200171e5bd93e5898de697a0e6b395e4b9b0e585a560701b81525094505b60fb546001600160a01b031615806114cd575060fc546001600160a01b0316155b15611504576000955060405180604001604052806012815260200171e59088e7baa6e9858de7bdaee99499e8afaf60701b81525094505b6101055460fb5460ff90911694506001600160a01b031615801590611533575060fc546001600160a01b031615155b60fb5460fc5497989697959691956001600160a01b0391821695501692509050565b61155d613bf3565b611567600160c955565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036115b25760405162461bcd60e51b8152600401610f1e906156ba565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166115fb600080516020615a02833981519152546001600160a01b031690565b6001600160a01b0316146116215760405162461bcd60e51b8152600401610f1e90615706565b61162a81613c53565b6040805160008082526020820190925261156791839190613c5b565b60408051808201909152600c81526b72c7d7f25dd2f2c6cb72c3dd60a11b602082015261010554600191906000908190819081908190610100900460ff166116ba57600096506040518060400160405280601281526020017172dec9f2c4c6f34bd07359caf2c6cb72c3dd60711b81525095505b60006018603c6116ca814261556a565b6116d4919061556a565b6116df906008615541565b6116e99190615752565b905060088110806116fb575060188110155b156117205760009750604051806060016040528060388152602001615a496038913996505b6001600160a01b0389166000908152610104602052604081205490611747610e1083615541565b905080421161177c576000995061175e4282615766565b9350604051806060016040528060388152602001615a496038913998505b61010554610100900460ff1697506008831080159061179b5750601883105b999b989a5096989791969550919350915050565b336000908152610106602052604090205460ff16806117d857506033546001600160a01b031633145b6117f45760405162461bcd60e51b8152600401610f1e9061557e565b61156781613dcb565b6101005460008080805b610100548110156118755760006101008281548110611828576118286154fe565b60009182526020808320909101546001600160a01b031680835260ff90915260409091205490915061185a8187615541565b95508381131561186b578093508194505b5050600101611807565b5090919293565b6060806000610103805490506001600160401b0381111561189f5761189f615268565b6040519080825280602002602001820160405280156118c8578160200160208202803683370190505b50610103549091506000906001600160401b038111156118ea576118ea615268565b604051908082528060200260200182016040528015611913578160200160208202803683370190505b5090506000805b610103548110156119d3576000610103828154811061193b5761193b6154fe565b60009182526020808320909101546001600160a01b031680835260ff9091526040822054909250908113156119c9578186858151811061197d5761197d6154fe565b60200260200101906001600160a01b031690816001600160a01b031681525050808585815181106119b0576119b06154fe565b6020908102919091010152836119c581615779565b9450505b505060010161191a565b506000606482116119e457816119e7565b60645b905060005b6119f7600183615766565b811015611bab5760005b6001611a0d8385615766565b611a179190615766565b811015611ba25784611a2a826001615541565b81518110611a3a57611a3a6154fe565b6020026020010151858281518110611a5457611a546154fe565b60200260200101511215611b9a576000868281518110611a7657611a766154fe565b6020026020010151905086826001611a8e9190615541565b81518110611a9e57611a9e6154fe565b6020026020010151878381518110611ab857611ab86154fe565b6001600160a01b03909216602092830291909101909101528087611add846001615541565b81518110611aed57611aed6154fe565b60200260200101906001600160a01b031690816001600160a01b0316815250506000868381518110611b2157611b216154fe565b6020026020010151905086836001611b399190615541565b81518110611b4957611b496154fe565b6020026020010151878481518110611b6357611b636154fe565b60209081029190910101528087611b7b856001615541565b81518110611b8b57611b8b6154fe565b60200260200101818152505050505b600101611a01565b506001016119ec565b506000816001600160401b03811115611bc657611bc6615268565b604051908082528060200260200182016040528015611bef578160200160208202803683370190505b5090506000826001600160401b03811115611c0c57611c0c615268565b604051908082528060200260200182016040528015611c35578160200160208202803683370190505b50905060005b83811015611cce57868181518110611c5557611c556154fe565b6020026020010151838281518110611c6f57611c6f6154fe565b60200260200101906001600160a01b031690816001600160a01b031681525050858181518110611ca157611ca16154fe565b6020026020010151828281518110611cbb57611cbb6154fe565b6020908102919091010152600101611c3b565b509097909650945050505050565b611ce4613b26565b6001600160a01b03821660008181526101066020908152604091829020805460ff191685151590811790915591519182527fe68d2c359a771606c400cf8b87000cf5864010363d6a736e98f5047b7bbe18e9910160405180910390a25050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003611d8c5760405162461bcd60e51b8152600401610f1e906156ba565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611dd5600080516020615a02833981519152546001600160a01b031690565b6001600160a01b031614611dfb5760405162461bcd60e51b8152600401610f1e90615706565b611e0482613c53565b61117282826001613c5b565b6101005460609081906000816001600160401b03811115611e3357611e33615268565b604051908082528060200260200182016040528015611e5c578160200160208202803683370190505b5090506000826001600160401b03811115611e7957611e79615268565b604051908082528060200260200182016040528015611ea2578160200160208202803683370190505b50905060005b83811015611f78576101008181548110611ec457611ec46154fe565b9060005260206000200160009054906101000a90046001600160a01b0316838281518110611ef457611ef46154fe565b60200260200101906001600160a01b031690816001600160a01b03168152505060ff60006101008381548110611f2c57611f2c6154fe565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110611f6557611f656154fe565b6020908102919091010152600101611ea8565b509094909350915050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146120235760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610f1e565b50600080516020615a0283398151915290565b61010354610100546000808080805b610103548110156120db5760006101038281548110612066576120666154fe565b60009182526020808320909101546001600160a01b031680835260ff909152604082205490925013156120a5578361209d81615779565b9450506120d2565b6001600160a01b038116600090815260ff602052604081205490036120d257826120ce81615779565b9350505b50600101612045565b509495939490939092509050565b6101075461010854610109546101055460ff9182169162010000909104166000848410156121205761211b8486615766565b612123565b60005b90509091929394565b610100818154811061213d57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000805b610103548110156121c25761010a6000610103838154811061217f5761217f6154fe565b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156121ba57816121b681615779565b9250505b60010161215b565b5090565b336000908152610106602052604090205460ff16806121ef57506033546001600160a01b031633145b61220b5760405162461bcd60e51b8152600401610f1e9061557e565b610105805462ffffff19169055565b6001600160a01b038116600090815260ff602090815260408083205461010190925282205461010054919291829190811080156122875750846001600160a01b03166101008281548110612270576122706154fe565b6000918252602090912001546001600160a01b0316145b9250826122955760006122a0565b6122a0816001615541565b93959294505050565b6122b1613b26565b6122bb6000614056565b565b336000908152610106602052604090205460ff16806122e657506033546001600160a01b031633145b6123025760405162461bcd60e51b8152600401610f1e9061557e565b6001600160a01b03811661234f5760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642075736572206164647265737360601b6044820152606401610f1e565b6001600160a01b038116600090815261010a602052604090205460ff16156123b15760405162461bcd60e51b8152602060048201526015602482015274155cd95c88185b1c9958591e48195e18db1d591959605a1b6044820152606401610f1e565b6001600160a01b038116600090815260ff602052604081205490811315612401578061010854106123fa578061010860008282546123ef9190615766565b909155506124019050565b6000610108555b61240a826140a8565b6001600160a01b038216600081815260ff602090815260408083208390556101028252808320805460ff1990811690915561010a835292819020805490931660011790925590518381527f68a38d0119edce11c07708d87d2b30e38e5be001c103271179171c3b4f7572c8910160405180910390a26111726141da565b336000908152610106602052604090205460ff16806124b057506033546001600160a01b031633145b6124cc5760405162461bcd60e51b8152600401610f1e9061557e565b6101058054911515620100000262ff000019909216919091179055565b60fd5460408051630240bc6b60e21b815290516000926001600160a01b031691839182918491630902f1ac916004808201926060929091908290030181865afa15801561253a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255e91906157ae565b50915091506000816001600160701b0316116125c75760405162461bcd60e51b815260206004820152602260248201527f5265736572766531206d7573742062652067726561746572207468616e207a65604482015261726f60f01b6064820152608401610f1e565b6125ec670de0b6b3a7640000836001600160701b0316836001600160701b0316610ed1565b935050505090565b336000908152610106602052604090205460ff168061261d57506033546001600160a01b031633145b6126395760405162461bcd60e51b8152600401610f1e9061557e565b60005b6101035481101561269b576000610103828154811061265d5761265d6154fe565b60009182526020808320909101546001600160a01b0316825260ff815260408083208390556101029091529020805460ff191690555060010161263c565b506126a4614696565b6040517f635317420cf4f553bd882783589d21e09a42900748460fc0c5e8c4c065f3a8ac90600090a1565b336000908152610106602052604090205460ff16806126f857506033546001600160a01b031633145b6127145760405162461bcd60e51b8152600401610f1e9061557e565b600081116127645760405162461bcd60e51b815260206004820181905260248201527f546172676574206d7573742062652067726561746572207468616e207a65726f6044820152606401610f1e565b61010780549082905560408051828152602081018490527fb21b06e36384b0148661b7dc1612ef58b5c3e79cb8ef76814d8ee7c3a973789d910160405180910390a15050565b6101005460609081906000816001600160401b038111156127cd576127cd615268565b60405190808252806020026020018201604052801561280057816020015b60608152602001906001900390816127eb5790505b5090506000826001600160401b0381111561281d5761281d615268565b604051908082528060200260200182016040528015612846578160200160208202803683370190505b50905060005b83811015611f7857612885610100828154811061286b5761286b6154fe565b6000918252602090912001546001600160a01b03166147a7565b838281518110612897576128976154fe565b602002602001018190525060ff600061010083815481106128ba576128ba6154fe565b60009182526020808320909101546001600160a01b0316835282019290925260400190205482518390839081106128f3576128f36154fe565b602090810291909101015260010161284c565b336000908152610106602052604090205460ff168061292f57506033546001600160a01b031633145b61294b5760405162461bcd60e51b8152600401610f1e9061557e565b60005b81811015612a9157600083838381811061296a5761296a6154fe565b905060200201602081019061297f9190615002565b90506001600160a01b038116158015906129b357506001600160a01b038116600090815261010a602052604090205460ff16155b15612a88576001600160a01b038116600090815260ff602052604081205490811315612a0857806101085410612a01578061010860008282546129f69190615766565b90915550612a089050565b6000610108555b612a11826140a8565b6001600160a01b038216600081815260ff602090815260408083208390556101028252808320805460ff1990811690915561010a835292819020805490931660011790925590518381527f68a38d0119edce11c07708d87d2b30e38e5be001c103271179171c3b4f7572c8910160405180910390a2505b5060010161294e565b506111726141da565b336000908152610106602052604090205460ff1680612ac357506033546001600160a01b031633145b612adf5760405162461bcd60e51b8152600401610f1e9061557e565b610109805460ff1916911515919091179055565b6001600160a01b038116600090815261010160205260408120546101005481108015612b4f5750826001600160a01b03166101008281548110612b3857612b386154fe565b6000918252602090912001546001600160a01b0316145b15612b6657612b5f816001615541565b9392505050565b50600092915050565b336000908152610106602052604090205460ff1680612b9857506033546001600160a01b031633145b612bb45760405162461bcd60e51b8152600401610f1e9061557e565b61010054600090612bc7906001906157f3565b90505b600081126115675760006101008281548110612be857612be86154fe565b60009182526020808320909101546001600160a01b031680835260ff90915260408220549092501215612c1e57612c1e816140a8565b5080612c298161581a565b915050612bca565b336000908152610106602052604090205460ff1680612c5a57506033546001600160a01b031633145b612c765760405162461bcd60e51b8152600401610f1e9061557e565b61010580549115156101000261ff0019909216919091179055565b6101055460fe5460408051632f48ab7d60e01b815290516000938493849384938493849360ff80831694610100840482169462010000909404909116926001600160a01b0390921691632f48ab7d916004808201926020929091908290030181865afa158015612d05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d29919061569d565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015612d6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9391906155a1565b60fe60009054906101000a90046001600160a01b03166001600160a01b031663c68c4ce06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612de6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0a919061569d565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015612e50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7491906155a1565b61010054949b939a50919850965094509092509050565b612e93613bf3565b6101055460ff16612ed55760405162461bcd60e51b815260206004820152600c60248201526b109d5e48191a5cd8589b195960a21b6044820152606401610f1e565b60fb546001600160a01b031615801590612ef9575060fc546001600160a01b031615155b612f345760405162461bcd60e51b815260206004820152600c60248201526b21b7b73334b39032b93937b960a11b6044820152606401610f1e565b33600090815261010a602052604090205460ff1615612f955760405162461bcd60e51b815260206004820152601d60248201527f55736572206973206578636c756465642066726f6d2072616e6b696e670000006044820152606401610f1e565b6000612fa08261344f565b905060006064612fb184606361552a565b612fbb919061556a565b905060006064612fcc85600161552a565b612fd6919061556a565b905061305a60fe60009054906101000a90046001600160a01b03166001600160a01b0316632f48ab7d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561302e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613052919061569d565b33308761487b565b60fe5460408051632f48ab7d60e01b815290516130db926001600160a01b031691632f48ab7d9160048083019260209291908290030181865afa1580156130a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130c9919061569d565b60fb546001600160a01b031684613b80565b60fe5460408051632f48ab7d60e01b8152905161315c926001600160a01b031691632f48ab7d9160048083019260209291908290030181865afa158015613126573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061314a919061569d565b60fc546001600160a01b031683613b80565b60fe5460408051630634626760e51b815290516131d2926001600160a01b03169163c68c4ce09160048083019260209291908290030181865afa1580156131a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131cb919061569d565b3385613b80565b336000908152610102602052604090205460ff166132495733600081815261010260205260408120805460ff19166001908117909155610103805491820181559091527f02c297ab74aad0aede3a1895c857b1f2c71e6a203feb727bec95ac752998cb780180546001600160a01b03191690911790555b6101095460ff166133205760006101075485610108546132699190615541565b116132755750836132d6565b50610109805460ff19166001179055610105805462ff0000191690556101085484907f299e165a854869e0bfae6e4f932514c2d306526d8adde944fbc77785ea12829d906132c4908390615541565b60405190815260200160405180910390a15b33600090815260ff6020526040812080548392906132f5908490615837565b9250508190555080610108600082825461330f9190615541565b9091555061331e905033613dcb565b505b604080518581526020810185905233917f1cbc5ab135991bd2b6a4b034a04aa2aa086dac1371cb9b16b8b5e2ed6b036bed910160405180910390a2505050611567600160c955565b6000670de0b6b3a764000061337b6124e9565b613385908461552a565b611439919061556a565b336000908152610106602052604090205460ff16806133b857506033546001600160a01b031633145b6133d45760405162461bcd60e51b8152600401610f1e9061557e565b60fc80546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152610106602052604090205460ff168061341f57506033546001600160a01b031633145b61343b5760405162461bcd60e51b8152600401610f1e9061557e565b610105805460ff1916911515919091179055565b60006134596124e9565b61338583670de0b6b3a764000061552a565b336000908152610106602052604090205460ff168061349457506033546001600160a01b031633145b6134b05760405162461bcd60e51b8152600401610f1e9061557e565b6001600160a01b03811660008181526101046020908152604080832083905560ff8252808320839055610102909152808220805460ff19169055517fb3c31e7ee8fa9daa5f207260132ede98522a596552c24190d168cbad671af6539190a250565b604051630ebabe7f60e11b81526001600160a01b038216600482015260009081906060908190839081908190819081903090631d757cfe90602401600060405180830381865afa15801561356a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613592919081019061585f565b604051633c7899b360e01b81526001600160a01b038f166004820152939c50919950965093503090633c7899b390602401600060405180830381865afa1580156135e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261360891908101906158bf565b505060fe5460408051630634626760e51b81529051969e50949b506001600160a01b03169463c68c4ce09460048082019550602094509192508290030181865afa15801561365a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061367e919061569d565b6040516370a0823160e01b81526001600160a01b038c8116600483015291909116906370a0823190602401602060405180830381865afa1580156136c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ea91906155a1565b6001600160a01b038b16600081815260ff60205260409081902054905163b2d1573f60e01b81526004810192909252919550909250309063b2d1573f90602401602060405180830381865afa158015613747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061376b91906155a1565b90509193959799909294969850565b336000908152610106602052604090205460ff16806137a357506033546001600160a01b031633145b6137bf5760405162461bcd60e51b8152600401610f1e9061557e565b6122bb614696565b336000908152610106602052604090205460ff16806137f057506033546001600160a01b031633145b61380c5760405162461bcd60e51b8152600401610f1e9061557e565b6122bb6141da565b336000908152610106602052604090205460ff168061383d57506033546001600160a01b031633145b6138595760405162461bcd60e51b8152600401610f1e9061557e565b6122bb6148f6565b610103818154811061213d57600080fd5b61387a613b26565b6001600160a01b0381166138df5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610f1e565b61156781614056565b336000908152610106602052604090205460ff168061391157506033546001600160a01b031633145b61392d5760405162461bcd60e51b8152600401610f1e9061557e565b60fb80546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff161580801561396f5750600054600160ff909116105b806139895750303b158015613989575060005460ff166001145b6139ec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610f1e565b6000805460ff191660011790558015613a0f576000805461ff0019166101001790555b613a17614a8a565b613a1f614ab9565b60fe80546001600160a01b03199081166001600160a01b038881169190911790925560fd8054821687841617905560fb8054821686841617905560fc8054909116918416919091179055610105805462ffffff1916620101011790558015613ac2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b5050505050565b6000806018603c613ada814261556a565b613ae4919061556a565b613aef906008615541565b613af99190615752565b905060088110158015613b0c5750601881105b8015613b20575061010554610100900460ff165b91505090565b6033546001600160a01b031633146122bb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610f1e565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015613bcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecb9190615954565b600260c95403613c455760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610f1e565b600260c955565b600160c955565b611567613b26565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615613c9357613c8e83614ae8565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613ced575060408051601f3d908101601f19168201909252613cea918101906155a1565b60015b613d505760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610f1e565b600080516020615a028339815191528114613dbf5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610f1e565b50613c8e838383614b84565b6101055462010000900460ff16613ddf5750565b6001600160a01b038116600090815260ff602052604081205490811215613e0957611172826140a8565b6001600160a01b038216600090815261010160205260408120546101005490919082108015613e685750836001600160a01b03166101008381548110613e5157613e516154fe565b6000918252602090912001546001600160a01b0316145b905080613fd15761010054603c1115613efc5761010080546001808201835560008390527f45e010b9ae401e2eb71529478da8bd513a9bdc2d095a111e324f5b95c09ed87b90910180546001600160a01b0319166001600160a01b0388161790559054613ed59190615766565b6001600160a01b03851660009081526101016020526040902055613ef76148f6565b613fd9565b61010054600090613f0f90600190615766565b905060006101008281548110613f2757613f276154fe565b60009182526020808320909101546001600160a01b031680835260ff909152604090912054909150851315613fca576001600160a01b03811660009081526101016020526040812055610100805487919084908110613f8857613f886154fe565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918816815261010190915260409020829055613fca6148f6565b5050613fd9565b613fd96148f6565b6001600160a01b03841660009081526101016020526040812054613ffe906001615541565b610100549091508111613ac25760408051828152602081018690526001600160a01b038716917f4ee6ba0bd112212c7eec914fa89dd7bcdc4d303f6c31672b6e5a4d98d57e997c910160405180910390a25050505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0381166000908152610101602052604090205461010054811080156141045750816001600160a01b031661010082815481106140ed576140ed6154fe565b6000918252602090912001546001600160a01b0316145b156111725761010080546000919061411e90600190615766565b8154811061412e5761412e6154fe565b60009182526020909120015461010080546001600160a01b03909216925082918490811061415e5761415e6154fe565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790558383168252610101905260408082208590559185168152908120556101008054806141b3576141b3615971565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b610100546101035460009081906001600160401b038111156141fe576141fe615268565b604051908082528060200260200182016040528015614227578160200160208202803683370190505b50610103549091506000906001600160401b0381111561424957614249615268565b604051908082528060200260200182016040528015614272578160200160208202803683370190505b5090506000805b610103548110156143eb576000610103828154811061429a5761429a6154fe565b60009182526020808320909101546001600160a01b031680835261010a90915260409091205490915060ff16156142d157506143e3565b6001600160a01b038116600090815260ff6020526040812054136142f557506143e3565b6001600160a01b0381166000908152610101602052604081205461010054909190821080156143545750826001600160a01b0316610100838154811061433d5761433d6154fe565b6000918252602090912001546001600160a01b0316145b9050806143df578287868151811061436e5761436e6154fe565b60200260200101906001600160a01b031690816001600160a01b03168152505060ff6000846001600160a01b03166001600160a01b03168152602001908152602001600020548686815181106143c6576143c66154fe565b6020908102919091010152846143db81615779565b9550505b5050505b600101614279565b5060005b8181101561456f576000614404826001615541565b90505b8281101561456657838181518110614421576144216154fe565b602002602001015184838151811061443b5761443b6154fe565b6020026020010151121561455e57600085838151811061445d5761445d6154fe565b60200260200101519050858281518110614479576144796154fe565b6020026020010151868481518110614493576144936154fe565b60200260200101906001600160a01b031690816001600160a01b031681525050808683815181106144c6576144c66154fe565b60200260200101906001600160a01b031690816001600160a01b03168152505060008584815181106144fa576144fa6154fe565b60200260200101519050858381518110614516576145166154fe565b6020026020010151868581518110614530576145306154fe565b6020026020010181815250508086848151811061454f5761454f6154fe565b60200260200101818152505050505b600101614407565b506001016143ef565b5060005b8181108015614585575061010054603c115b1561464057600084828151811061459e5761459e6154fe565b602090810291909101015161010080546001808201835560008390527f45e010b9ae401e2eb71529478da8bd513a9bdc2d095a111e324f5b95c09ed87b90910180546001600160a01b0319166001600160a01b038516179055905491925061460591615766565b6001600160a01b038216600090815261010160205260409020558561462981615779565b96505050808061463890615779565b915050614573565b506101005460011015614655576146556148f6565b8315613ac257610100546040805186815260208101929092527f2ccae6130382bd1e803680e026b40e5db8c1cc1273f517919cd2046588e90f9c9101613ab9565b60005b6101035481101561471657600061010382815481106146ba576146ba6154fe565b60009182526020808320909101546001600160a01b031682526101018152604080832083905560ff82528083208390556101028252808320805460ff1990811690915561010a9092529091208054909116905550600101614699565b506147246101006000614f10565b6147316101036000614f10565b6000610108819055610109805460ff19169055610105805462ff00001916620100001790556040517e96a4ada6b93038a711dd467a1dd23a8408364402693cc3bebb2d27baa49d1b9190a16040517fb52101d7b28917e3cc2b13b91964888eeed58330d5833e80fbbf6ecc5c524dd090600090a1565b604051606082811b6bffffffffffffffffffffffff191660208301529060009060340160408051808303601f19018152600680845283830190925292506000919060208201818036833701905050905060005b6006811015614869578281600685516148139190615766565b61481d9190615541565b8151811061482d5761482d6154fe565b602001015160f81c60f81b82828151811061484a5761484a6154fe565b60200101906001600160f81b031916908160001a9053506001016147fa565b5061487381614ba9565b949350505050565b6040516323b872dd60e01b81526001600160a01b0384811660048301528381166024830152604482018390528516906323b872dd906064016020604051808303816000875af11580156148d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ac29190615954565b61010054600181116149055750565b60005b614913600183615766565b8110156111725760005b60016149298385615766565b6149339190615766565b811015614a815760006101008281548110614950576149506154fe565b60009182526020822001546001600160a01b03169150610100614974846001615541565b81548110614984576149846154fe565b60009182526020808320909101546001600160a01b0390811680845260ff9092526040808420549186168452909220549092501215614a77578061010084815481106149d2576149d26154fe565b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905581610100614a0a856001615541565b81548110614a1a57614a1a6154fe565b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055614a4e836001615541565b6001600160a01b0380841660009081526101016020526040808220939093559083168152208390555b505060010161491d565b50600101614908565b600054610100900460ff16614ab15760405162461bcd60e51b8152600401610f1e90615987565b6122bb614d43565b600054610100900460ff16614ae05760405162461bcd60e51b8152600401610f1e90615987565b6122bb614d73565b6001600160a01b0381163b614b555760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610f1e565b600080516020615a0283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b614b8d83614d9a565b600082511180614b9a5750805b15613c8e57610ecb8383614dda565b60408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b6020820152815160609190600090614be490600261552a565b6001600160401b03811115614bfb57614bfb615268565b6040519080825280601f01601f191660200182016040528015614c25576020820181803683370190505b50905060005b8451811015614d3b57826004868381518110614c4957614c496154fe565b016020015182516001600160f81b031990911690911c60f81c908110614c7157614c716154fe565b01602001516001600160f81b03191682614c8c83600261552a565b81518110614c9c57614c9c6154fe565b60200101906001600160f81b031916908160001a90535082858281518110614cc657614cc66154fe565b602091010151815160f89190911c600f16908110614ce657614ce66154fe565b01602001516001600160f81b03191682614d0183600261552a565b614d0c906001615541565b81518110614d1c57614d1c6154fe565b60200101906001600160f81b031916908160001a905350600101614c2b565b509392505050565b600054610100900460ff16614d6a5760405162461bcd60e51b8152600401610f1e90615987565b6122bb33614056565b600054610100900460ff16613c4c5760405162461bcd60e51b8152600401610f1e90615987565b614da381614ae8565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060612b5f8383604051806060016040528060278152602001615a22602791396060600080856001600160a01b031685604051614e1791906159d2565b600060405180830381855af49150503d8060008114614e52576040519150601f19603f3d011682016040523d82523d6000602084013e614e57565b606091505b5091509150614e6886838387614e72565b9695505050505050565b60608315614ee1578251600003614eda576001600160a01b0385163b614eda5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610f1e565b5081614873565b6148738383815115614ef65781518083602001fd5b8060405162461bcd60e51b8152600401610f1e91906159ee565b508054600082559060005260206000209081019061156791905b808211156121c25760008155600101614f2a565b60008083601f840112614f5057600080fd5b5081356001600160401b03811115614f6757600080fd5b6020830191508360208260051b8501011115614f8257600080fd5b9250929050565b801515811461156757600080fd5b600080600060408486031215614fac57600080fd5b83356001600160401b03811115614fc257600080fd5b614fce86828701614f3e565b9094509250506020840135614fe281614f89565b809150509250925092565b6001600160a01b038116811461156757600080fd5b60006020828403121561501457600080fd5b8135612b5f81614fed565b60008060006060848603121561503457600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561505e57600080fd5b823561506981614fed565b946020939093013593505050565b60005b8381101561509257818101518382015260200161507a565b50506000910152565b600081518084526150b3816020860160208601615077565b601f01601f19169290920160200192915050565b84151581526080602082015260006150e2608083018661509b565b6040830194909452506060015292915050565b861515815260c06020820152600061511060c083018861509b565b95151560408301525092151560608401526001600160a01b0391821660808401521660a09091015292915050565b60006020828403121561515057600080fd5b5035919050565b871515815260e06020820152600061517260e083018961509b565b9615156040830152509315156060850152608084019290925260a083015260c09091015292915050565b600081518084526020840193506020830160005b828110156151ce5781518652602095860195909101906001016151b0565b5093949350505050565b6040808252835190820181905260009060208501906060840190835b8181101561521b5783516001600160a01b03168352602093840193909201916001016151f4565b50508381036020850152614e68818661519c565b6000806040838503121561524257600080fd5b823561524d81614fed565b9150602083013561525d81614f89565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156152a6576152a6615268565b604052919050565b60006001600160401b038211156152c7576152c7615268565b50601f01601f191660200190565b600080604083850312156152e857600080fd5b82356152f381614fed565b915060208301356001600160401b0381111561530e57600080fd5b8301601f8101851361531f57600080fd5b803561533261532d826152ae565b61527e565b81815286602083850101111561534757600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561537957600080fd5b8135612b5f81614f89565b6000604082016040835280855180835260608501915060608160051b86010192506020870160005b828110156153dd57605f198786030184526153c885835161509b565b945060209384019391909101906001016153ac565b5050505082810360208401526153f3818561519c565b95945050505050565b6000806020838503121561540f57600080fd5b82356001600160401b0381111561542557600080fd5b61543185828601614f3e565b90969095509350505050565b891515815288151560208201526101206040820152600061546261012083018a61509b565b8281036060840152615474818a61509b565b6080840198909852505060a081019490945260c084019290925260e083015261010090910152949350505050565b600080600080608085870312156154b857600080fd5b84356154c381614fed565b935060208501356154d381614fed565b925060408501356154e381614fed565b915060608501356154f381614fed565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761143957611439615514565b8082018082111561143957611439615514565b634e487b7160e01b600052601260045260246000fd5b60008261557957615579615554565b500490565b6020808252600990820152683737ba1030b236b4b760b91b604082015260600190565b6000602082840312156155b357600080fd5b5051919050565b600082601f8301126155cb57600080fd5b81516155d961532d826152ae565b8181528460208386010111156155ee57600080fd5b614873826020830160208701615077565b60008060008060008060c0878903121561561857600080fd5b865161562381614f89565b60208801519096506001600160401b0381111561563f57600080fd5b61564b89828a016155ba565b955050604087015161565c81614f89565b606088015190945061566d81614f89565b608088015190935061567e81614fed565b60a088015190925061568f81614fed565b809150509295509295509295565b6000602082840312156156af57600080fd5b8151612b5f81614fed565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60008261576157615761615554565b500690565b8181038181111561143957611439615514565b60006001820161578b5761578b615514565b5060010190565b80516001600160701b03811681146157a957600080fd5b919050565b6000806000606084860312156157c357600080fd5b6157cc84615792565b92506157da60208501615792565b9150604084015163ffffffff81168114614fe257600080fd5b818103600083128015838313168383128216171561581357615813615514565b5092915050565b6000600160ff1b820161582f5761582f615514565b506000190190565b808201828112600083128015821682158216171561585757615857615514565b505092915050565b6000806000806080858703121561587557600080fd5b845161588081614f89565b60208601519094506001600160401b0381111561589c57600080fd5b6158a8878288016155ba565b604087015160609097015195989097509350505050565b600080600080600080600060e0888a0312156158da57600080fd5b87516158e581614f89565b60208901519097506001600160401b0381111561590157600080fd5b61590d8a828b016155ba565b965050604088015161591e81614f89565b606089015190955061592f81614f89565b608089015160a08a015160c0909a0151989b979a509598909795969095945092505050565b60006020828403121561596657600080fd5b8151612b5f81614f89565b634e487b7160e01b600052603160045260246000fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082516159e4818460208701615077565b9190910192915050565b602081526000612b5f602083018461509b56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564e5bd93e5898de697b6e997b4e4b88de58fafe58d96e587bae8afb7e59ca838efbc9a30302d3234efbc9a3030e4b98be997b4e6938de4bd9ca264697066735822122073fd98ebe49615ab0ae49214c5c70caebccecb928f65dcbccb0332345854810964736f6c634300081a0033