0 txs
0 calls
constructor
constructor()
functions
ADMIN_DELEGATE_ROLE
viewfunction ADMIN_DELEGATE_ROLE() view returns (bytes32)
ADMIN_ROLE
viewfunction ADMIN_ROLE() view returns (bytes32)
averageSystemActionFee
viewfunction averageSystemActionFee() view returns (uint256)
crossChainRouter
viewfunction crossChainRouter() view returns (address)
crossChainSwapExternal
viewfunction crossChainSwapExternal(address crossChainSwap) view returns (string name, uint256 chainId, uint256 typeDex, bool isActive)
crossChainSwapInternal
viewfunction crossChainSwapInternal(address crossChainSwap) view returns (string name, uint256 chainId, uint256 typeDex, bool isActive)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
dexSwapExternal
viewfunction dexSwapExternal(address externalSwap) view returns (string name, uint256 chainId, bool isActive)
dexSwapInternal
viewfunction dexSwapInternal(address internalSwap) view returns (string name, uint256 chainId, bool isActive)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
getRoleMembers
viewfunction getRoleMembers(bytes32 role) view returns (address[])
getSupportedTokenExternalInfor
viewfunction getSupportedTokenExternalInfor(address _token) view returns (tuple)
getSupportedTokenInternalInfor
viewfunction getSupportedTokenInternalInfor(address _token) view returns (tuple)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
hotWallet
viewfunction hotWallet() view returns (address)
isAdmin
viewfunction isAdmin(address _sender) view returns (bool)
isCrossChainSwapSameType
viewfunction isCrossChainSwapSameType(address _crossChainSender, address _crossChainReceiver) view returns (bool)
isDelegateAdmin
viewfunction isDelegateAdmin(address _sender) view returns (bool)
isDexCrossChainExternalActive
viewfunction isDexCrossChainExternalActive(address _dexCrossChain) view returns (bool)
isDexCrossChainInternalActive
viewfunction isDexCrossChainInternalActive(address _dexCrossChain) view returns (bool)
isDexSwapExternalActive
viewfunction isDexSwapExternalActive(address _dexSwap) view returns (bool)
isDexSwapInternalActive
viewfunction isDexSwapInternalActive(address _dexSwap) view returns (bool)
isEnableReferralSignature
viewfunction isEnableReferralSignature() view returns (bool)
isOperator
viewfunction isOperator(address _sender) view returns (bool)
isSigner
viewfunction isSigner(address _sender) view returns (bool)
isStrategyExternalActive
viewfunction isStrategyExternalActive(address _strategy) view returns (bool)
isStrategyInternalActive
viewfunction isStrategyInternalActive(address _strategy) view returns (bool)
isTokenSupportExternalActive
viewfunction isTokenSupportExternalActive(address _token) view returns (bool)
isTokenSupportInternalActive
viewfunction isTokenSupportInternalActive(address _token) view returns (bool)
isValidUnderlyingAssetStrategyExternal
viewfunction isValidUnderlyingAssetStrategyExternal(address _strategy, address _underlyingAsset) view returns (bool)
maxDepositValueToken
viewfunction maxDepositValueToken(address token) view returns (uint256 maxDepositValue)
maxPercentLiquidityStrategyToken
viewfunction maxPercentLiquidityStrategyToken(address token) view returns (uint256 maxPercentLiquidityStrategy)
nonce
viewfunction nonce() view returns (uint256)
OPERATOR
viewfunction OPERATOR() view returns (bytes32)
protocolFee
viewfunction protocolFee() view returns (uint256)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
referralFee
viewfunction referralFee() view returns (uint256)
router
viewfunction router() view returns (address)
signer
viewfunction signer() view returns (address)
SIGNER
viewfunction SIGNER() view returns (bytes32)
strategyExternal
viewfunction strategyExternal(address strategy) view returns (address underlyingAsset, string name, uint256 chainId, bool isActive)
strategyInternal
viewfunction strategyInternal(address strategy) view returns (string name, uint256 chainId, bool isActive)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
tokenExternal
viewfunction tokenExternal(address supportAssetToken) view returns (address lpTokenAddress, uint256 minDepositAmount, uint256 decimals, uint256 chainId, bool isActive)
tokenInternal
viewfunction tokenInternal(address supportAssetToken) view returns (address lpTokenAddress, uint256 minDepositAmount, uint256 decimals, uint256 chainId, bool isActive)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
validateDistributeFundToStrategy
viewfunction validateDistributeFundToStrategy(address _strategy, address _depositor, uint256 _depositAmount) view
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address admin_, uint256 protocolFee_)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setAverageSystemActionFee
nonpayablefunction setAverageSystemActionFee(uint256 _averageSystemActionFee)
setCrossChainRouter
nonpayablefunction setCrossChainRouter(address _crossChainRouter)
setCrossChainSwapExternal
nonpayablefunction setCrossChainSwapExternal(tuple _crossChainParam, address _crossChainSwap)
setCrossChainSwapInternal
nonpayablefunction setCrossChainSwapInternal(tuple _crossChainParam, address _crossChainSwap)
setDexExternalSwap
nonpayablefunction setDexExternalSwap(tuple _internalParam, address _internalSwap)
setDexInternalSwap
nonpayablefunction setDexInternalSwap(tuple _internalParam, address _internalSwap)
setEnableReferralSignature
nonpayablefunction setEnableReferralSignature(bool _isEnableReferralSignature)
setHotWallet
nonpayablefunction setHotWallet(address _hotWallet)
setMaxDepositValue
nonpayablefunction setMaxDepositValue(address _tokenAddress, uint256 _maxDepositValue)
setMaxPercentLiquidityStrategy
nonpayablefunction setMaxPercentLiquidityStrategy(address _tokenAddress, uint256 _maxPercentLiquidityStrategy)
setMaxPercentLiquidityStrategyToken
nonpayablefunction setMaxPercentLiquidityStrategyToken(address _tokenAddress, uint256 _maxPercentLiquidityStrategyToken)
setProtocolFee
nonpayablefunction setProtocolFee(uint256 _protocolFee)
setReferralFee
nonpayablefunction setReferralFee(uint256 _referralFee)
setRouter
nonpayablefunction setRouter(address _router)
setSigner
nonpayablefunction setSigner(address _signer)
setStrategyExternal
nonpayablefunction setStrategyExternal(address _strategy, tuple _strategyInfo)
setStrategyInternal
nonpayablefunction setStrategyInternal(address _strategy, tuple _strategyInfo)
setTokenInfoExternal
nonpayablefunction setTokenInfoExternal(address _token, tuple _tokenInfo)
setTokenInfoInternal
nonpayablefunction setTokenInfoInternal(address _token, tuple _tokenInfo)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
verifySignatureReferral
nonpayablefunction verifySignatureReferral(bool _isReferral, bytes _signature, address _sender)
events
Initialized
event Initialized(uint64 version)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
Upgraded
event Upgraded(address indexed implementation)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExceedMaxDepositValueInPool
error ExceedMaxDepositValueInPool()
ExceedMaxPercentLiquidStrategyInPool
error ExceedMaxPercentLiquidStrategyInPool()
FailedCall
error FailedCall()
InvalidAdminRole
error InvalidAdminRole()
InvalidAtLeastOperatorRole
error InvalidAtLeastOperatorRole()
InvalidDelegateRole
error InvalidDelegateRole()
InvalidInitialization
error InvalidInitialization()
InvalidRouter
error InvalidRouter()
InvalidSignature
error InvalidSignature(bytes _signature)
InvalidSignerRole
error InvalidSignerRole()
NotInitializing
error NotInitializing()
RequiredAddressNotNull
error RequiredAddressNotNull()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a060405230608052348015610013575f80fd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516137f26100f95f395f81816120510152818161207a01526121d901526137f25ff3fe608060405260043610610421575f3560e01c80638ed0756111610220578063b02c198c11610129578063cd6dc687116100b3578063e23a6cab11610078578063e23a6cab14610ec8578063ec39ded114610ee7578063f77065d514610efc578063f887ea4014610f1b578063fa9f6e2f14610f3a575f80fd5b8063cd6dc68714610ddc578063d01f922c14610dfb578063d547741f14610e1a578063d60b8c8814610e39578063e158acfc14610e8e575f80fd5b8063c0d78655116100f9578063c0d7865514610d20578063c134df2d14610d3f578063c42839ea14610d58578063c98f413414610d92578063ca15c87314610dbd575f80fd5b8063b02c198c14610c9e578063b09c8c7c14610cbd578063b0e21e8a14610cec578063b44ea8ee14610d01575f80fd5b8063a16a95f3116101aa578063ac1634331161017a578063ac1634331461079b578063acc5202514610bd8578063ad3cb1cc14610c12578063adcf5b6914610c4f578063affed0e014610c89575f80fd5b8063a16a95f314610b5b578063a217fddf14610b7a578063a3246ad314610b8d578063a81207e914610bb9575f80fd5b806392aee00a116101f057806392aee00a14610a885780639651f17814610ac2578063983d273714610afd57806399cd4a0014610b1d5780639fb755d714610b3c575f80fd5b80638ed0756114610a0c5780639010d07c14610a2b57806391d1485414610a4a57806391f5ce2914610a69575f80fd5b806350cecb9d1161032d5780636d70f7ae116102b75780637ebb429d1161027c5780637ebb429d146109155780637f1d28571461094f57806380cc359b1461097a57806384ae2bc6146109c8578063879abdfe146109dd575f80fd5b80636d70f7ae14610879578063713494d71461089857806375b238fc146108b7578063787dce3d146108d75780637df73e27146108f6575f80fd5b8063582abd12116102fd578063582abd12146107ed57806359a646241461080d5780635f7fb1ce1461083b5780636b321101146106985780636c19e7831461085a575f80fd5b806350cecb9d14610712578063518f0dea1461079b57806352d1902d146107ba57806356b8209b146107ce575f80fd5b806329113bc8116103ae57806341a5aac21161037e57806341a5aac21461063b57806344530a421461065a57806348db3509146106795780634e9fe1bc146106985780634f1ef286146106ff575f80fd5b806329113bc8146105bf5780632f2ff15d146105de57806336568abe146105fd5780633752ac2f1461061c575f80fd5b8063116f80c5116103f4578063116f80c5146104e2578063238ac9331461051c578063248a9ca31461055357806324d7806c14610581578063279f19d8146105a0575f80fd5b806301ffc9a71461042557806304ff9ad3146104595780630952ff5414610493578063097d9fc7146104c1575b5f80fd5b348015610430575f80fd5b5061044461043f366004612bfe565b610f59565b60405190151581526020015b60405180910390f35b348015610464575f80fd5b50610444610473366004612c39565b6001600160a01b03165f908152600c602052604090206004015460ff1690565b34801561049e575f80fd5b506104b35f8051602061376683398151915281565b604051908152602001610450565b3480156104cc575f80fd5b506104e06104db366004612ce1565b610f83565b005b3480156104ed575f80fd5b506104446104fc366004612c39565b6001600160a01b03165f908152600b602052604090206004015460ff1690565b348015610527575f80fd5b5060065461053b906001600160a01b031681565b6040516001600160a01b039091168152602001610450565b34801561055e575f80fd5b506104b361056d366004612d69565b5f9081526020819052604090206001015490565b34801561058c575f80fd5b5061044461059b366004612c39565b61100f565b3480156105ab575f80fd5b506104e06105ba366004612d80565b611027565b3480156105ca575f80fd5b5060075461053b906001600160a01b031681565b3480156105e9575f80fd5b506104e06105f8366004612dd2565b611076565b348015610608575f80fd5b506104e0610617366004612dd2565b61109a565b348015610627575f80fd5b506104e0610636366004612e84565b6110d2565b348015610646575f80fd5b506104e0610655366004612d80565b611149565b348015610665575f80fd5b506104e0610674366004612f23565b611192565b348015610684575f80fd5b5060055461053b906001600160a01b031681565b3480156106a3575f80fd5b506106b76106b2366004612c39565b6111d3565b604051610450919081516001600160a01b0316815260208083015190820152604080830151908201526060808301519082015260809182015115159181019190915260a00190565b6104e061070d366004612f4d565b61126a565b34801561071d575f80fd5b5061076761072c366004612c39565b600c6020525f9081526040902080546001820154600283015460038401546004909401546001600160a01b0390931693919290919060ff1685565b604080516001600160a01b03909616865260208601949094529284019190915260608301521515608082015260a001610450565b3480156107a6575f80fd5b506104e06107b5366004612f23565b611289565b3480156107c5575f80fd5b506104b36112ca565b3480156107d9575f80fd5b506104e06107e8366004612c39565b6112e5565b3480156107f8575f80fd5b506104b35f8051602061374683398151915281565b348015610818575f80fd5b5061082c610827366004612c39565b611354565b60405161045093929190612fc7565b348015610846575f80fd5b506104e0610855366004612ff0565b6113ff565b348015610865575f80fd5b506104e0610874366004612c39565b611494565b348015610884575f80fd5b50610444610893366004612c39565b611503565b3480156108a3575f80fd5b506104e06108b2366004612d69565b61151b565b3480156108c2575f80fd5b506104b35f8051602061378683398151915281565b3480156108e2575f80fd5b506104e06108f1366004612d69565b611546565b348015610901575f80fd5b50610444610910366004612c39565b611571565b348015610920575f80fd5b5061044461092f366004612c39565b6001600160a01b03165f908152600d602052604090206003015460ff1690565b34801561095a575f80fd5b506104b3610969366004612c39565b60136020525f908152604090205481565b348015610985575f80fd5b506104446109943660046130a2565b6001600160a01b039081165f908152600e60209081526040808320600290810154959094168352600d909152902001541490565b3480156109d3575f80fd5b506104b360095481565b3480156109e8575f80fd5b506109fc6109f7366004612c39565b611589565b60405161045094939291906130be565b348015610a17575f80fd5b506104e0610a263660046130ee565b61163b565b348015610a36575f80fd5b5061053b610a45366004613125565b611684565b348015610a55575f80fd5b50610444610a64366004612dd2565b6116a2565b348015610a74575f80fd5b506109fc610a83366004612c39565b6116ca565b348015610a93575f80fd5b50610444610aa2366004612c39565b6001600160a01b03165f908152600e602052604090206003015460ff1690565b348015610acd575f80fd5b50610444610adc3660046130a2565b6001600160a01b039182165f90815260106020526040902054821691161490565b348015610b08575f80fd5b506104b35f805160206137c683398151915281565b348015610b28575f80fd5b506104e0610b373660046130ee565b6116e4565b348015610b47575f80fd5b506104e0610b56366004612c39565b61172d565b348015610b66575f80fd5b50610444610b75366004612c39565b611775565b348015610b85575f80fd5b506104b35f81565b348015610b98575f80fd5b50610bac610ba7366004612d69565b61178d565b6040516104509190613145565b348015610bc4575f80fd5b506104e0610bd3366004613190565b6117a6565b348015610be3575f80fd5b50610444610bf2366004612c39565b6001600160a01b03165f9081526010602052604090206003015460ff1690565b348015610c1d575f80fd5b50610c42604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161045091906131ce565b348015610c5a575f80fd5b50610444610c69366004612c39565b6001600160a01b03165f908152600f602052604090206002015460ff1690565b348015610c94575f80fd5b506104b360035481565b348015610ca9575f80fd5b506104e0610cb8366004612d69565b611abf565b348015610cc8575f80fd5b50610cdc610cd7366004612c39565b611aea565b60405161045094939291906131e0565b348015610cf7575f80fd5b506104b360025481565b348015610d0c575f80fd5b5061082c610d1b366004612c39565b611ba6565b348015610d2b575f80fd5b506104e0610d3a366004612c39565b611bc0565b348015610d4a575f80fd5b50600a546104449060ff1681565b348015610d63575f80fd5b50610444610d72366004612c39565b6001600160a01b03165f9081526011602052604090206002015460ff1690565b348015610d9d575f80fd5b506104b3610dac366004612c39565b60146020525f908152604090205481565b348015610dc8575f80fd5b506104b3610dd7366004612d69565b611c2f565b348015610de7575f80fd5b506104e0610df6366004612f23565b611c45565b348015610e06575f80fd5b506104e0610e15366004612ce1565b611d42565b348015610e25575f80fd5b506104e0610e34366004612dd2565b611df2565b348015610e44575f80fd5b50610767610e53366004612c39565b600b6020525f9081526040902080546001820154600283015460038401546004909401546001600160a01b0390931693919290919060ff1685565b348015610e99575f80fd5b50610444610ea8366004612c39565b6001600160a01b03165f9081526012602052604090206002015460ff1690565b348015610ed3575f80fd5b5061082c610ee2366004612c39565b611e16565b348015610ef2575f80fd5b506104b360085481565b348015610f07575f80fd5b506104e0610f1636600461321b565b611e30565b348015610f26575f80fd5b5060045461053b906001600160a01b031681565b348015610f45575f80fd5b506104e0610f5436600461327a565b611f6e565b5f6001600160e01b03198216635a05180f60e01b1480610f7d5750610f7d82611fa7565b92915050565b610f8c33611775565b610fa95760405163dade674960e01b815260040160405180910390fd5b6001600160a01b039182165f908152600c6020908152604091829020835181546001600160a01b03191695169490941784558201516001840155810151600283015560608101516003830155608001516004909101805460ff1916911515919091179055565b5f610f7d5f80516020613786833981519152836116a2565b61103033611775565b61104d5760405163dade674960e01b815260040160405180910390fd5b6001600160a01b0381165f908152600d6020526040902082906110708282613381565b50505050565b5f8281526020819052604090206001015461109081611fdb565b6110708383611fe8565b6001600160a01b03811633146110c35760405163334bd91960e11b815260040160405180910390fd5b6110cd828261201b565b505050565b6110db33611775565b6110f85760405163dade674960e01b815260040160405180910390fd5b6001600160a01b0382165f908152600f60205260409020815182919081906111209082613479565b50602082015160018201556040909101516002909101805460ff19169115159190911790555050565b61115233611775565b61116f5760405163dade674960e01b815260040160405180910390fd5b6001600160a01b0381165f908152600e6020526040902082906110708282613381565b61119b33611775565b6111b85760405163dade674960e01b815260040160405180910390fd5b6001600160a01b039091165f90815260146020526040902055565b61120b6040518060a001604052805f6001600160a01b031681526020015f81526020015f81526020015f81526020015f151581525090565b506001600160a01b039081165f908152600b6020908152604091829020825160a08101845281549094168452600181015491840191909152600281015491830191909152600381015460608301526004015460ff161515608082015290565b611272612046565b61127b826120ec565b6112858282612112565b5050565b61129233611775565b6112af5760405163dade674960e01b815260040160405180910390fd5b6001600160a01b039091165f90815260136020526040902055565b5f6112d36121ce565b505f805160206137a683398151915290565b6112ee33611775565b61130b5760405163dade674960e01b815260040160405180910390fd5b6001600160a01b0381166113325760405163706e379b60e11b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b60126020525f908152604090208054819061136e906132de565b80601f016020809104026020016040519081016040528092919081815260200182805461139a906132de565b80156113e55780601f106113bc576101008083540402835291602001916113e5565b820191905f5260205f20905b8154815290600101906020018083116113c857829003601f168201915b50505050600183015460029093015491929160ff16905083565b61140833611775565b6114255760405163dade674960e01b815260040160405180910390fd5b6001600160a01b038281165f908152601060209081526040909120835181546001600160a01b0319169316929092178255820151829190600182019061146b9082613479565b50604082015160028201556060909101516003909101805460ff19169115159190911790555050565b61149d33611775565b6114ba5760405163dade674960e01b815260040160405180910390fd5b6001600160a01b0381166114e15760405163706e379b60e11b815260040160405180910390fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b5f610f7d5f805160206137c6833981519152836116a2565b61152433611775565b6115415760405163dade674960e01b815260040160405180910390fd5b600955565b61154f33611775565b61156c5760405163dade674960e01b815260040160405180910390fd5b600255565b5f610f7d5f80516020613746833981519152836116a2565b600e6020525f90815260409020805481906115a3906132de565b80601f01602080910402602001604051908101604052809291908181526020018280546115cf906132de565b801561161a5780601f106115f15761010080835404028352916020019161161a565b820191905f5260205f20905b8154815290600101906020018083116115fd57829003601f168201915b50505050600183015460028401546003909401549293909290915060ff1684565b61164433611775565b6116615760405163dade674960e01b815260040160405180910390fd5b6001600160a01b0381165f9081526012602052604090208290611070828261352e565b5f82815260016020526040812061169b9083612217565b9392505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b600d6020525f90815260409020805481906115a3906132de565b6116ed33611775565b61170a5760405163dade674960e01b815260040160405180910390fd5b6001600160a01b0381165f9081526011602052604090208290611070828261352e565b6117363361100f565b61175357604051632d4d7bb360e01b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f610f7d5f80516020613766833981519152836116a2565b5f818152600160205260409020606090610f7d90612222565b5f8390505f60135f836001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061180e9190613616565b6001600160a01b03166001600160a01b031681526020019081526020015f205490505f60145f846001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611870573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118949190613616565b6001600160a01b03166001600160a01b031681526020019081526020015f205490505f836001600160a01b03166301e1d1146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119179190613631565b90505f846001600160a01b03166317d261cd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611956573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061197a9190613631565b90505f611987878461365c565b6040516370a0823160e01b81526001600160a01b038a811660048301529192505f918816906307a2d13a9082906370a0823190602401602060405180830381865afa1580156119d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119fc9190613631565b6040518263ffffffff1660e01b8152600401611a1a91815260200190565b602060405180830381865afa158015611a35573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a599190613631565b905085611a6a83612710865f61222e565b1115611a8957604051630d72af2160e31b815260040160405180910390fd5b84611a94898361365c565b1115611ab357604051631cf8f68560e31b815260040160405180910390fd5b50505050505050505050565b611ac833611503565b611ae557604051631784501560e11b815260040160405180910390fd5b600855565b60106020525f9081526040902080546001820180546001600160a01b039092169291611b15906132de565b80601f0160208091040260200160405190810160405280929190818152602001828054611b41906132de565b8015611b8c5780601f10611b6357610100808354040283529160200191611b8c565b820191905f5260205f20905b815481529060010190602001808311611b6f57829003601f168201915b50505050600283015460039093015491929160ff16905084565b60116020525f908152604090208054819061136e906132de565b611bc933611775565b611be65760405163dade674960e01b815260040160405180910390fd5b6001600160a01b038116611c0d5760405163706e379b60e11b815260040160405180910390fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b5f818152600160205260408120610f7d90612279565b5f611c4e612282565b805490915060ff600160401b82041615906001600160401b03165f81158015611c745750825b90505f826001600160401b03166001148015611c8f5750303b155b905081158015611c9d575080155b15611cbb5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611ce557845460ff60401b1916600160401b1785555b611cee876122aa565b60028690558315611d3957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b611d4b33611775565b611d685760405163dade674960e01b815260040160405180910390fd5b6020818101516001600160a01b038481165f908152600b909352604092839020600181019290925591830151600282015560608301516003820155608083015160048201805460ff1916911515919091179055541661128557516001600160a01b039182165f908152600b6020526040902080546001600160a01b03191692909116919091179055565b5f82815260208190526040902060010154611e0c81611fdb565b611070838361201b565b600f6020525f908152604090208054819061136e906132de565b6004546001600160a01b03163314801590611e5657506005546001600160a01b03163314155b15611e745760405163466d7fef60e01b815260040160405180910390fd5b600a5460ff16156110cd57600654600380545f92611f2c926001600160a01b03909116919084611ea38361366f565b909155506040516bffffffffffffffffffffffff19606093841b8116602083015260348201929092529185901b16605482015285151560f81b6068820152606901604051602081830303815290604052805190602001207f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c91909152603c902090565b600654909150611f46906001600160a01b0316828561238d565b61107057826040516302adfdc360e41b8152600401611f6591906131ce565b60405180910390fd5b611f7733611775565b611f945760405163dade674960e01b815260040160405180910390fd5b600a805460ff1916911515919091179055565b5f6001600160e01b03198216637965db0b60e01b1480610f7d57506301ffc9a760e01b6001600160e01b0319831614610f7d565b611fe581336123fe565b50565b5f80611ff48484612437565b9050801561169b575f84815260016020526040902061201390846124c6565b509392505050565b5f8061202784846124da565b9050801561169b575f8481526001602052604090206120139084612543565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806120cc57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166120c05f805160206137a6833981519152546001600160a01b031690565b6001600160a01b031614155b156120ea5760405163703e46dd60e11b815260040160405180910390fd5b565b6120f533611775565b611fe55760405163dade674960e01b815260040160405180910390fd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561216c575060408051601f3d908101601f1916820190925261216991810190613631565b60015b61219457604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611f65565b5f805160206137a683398151915281146121c457604051632a87526960e21b815260048101829052602401611f65565b6110cd8383612557565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146120ea5760405163703e46dd60e11b815260040160405180910390fd5b5f61169b83836125ac565b60605f61169b836125d2565b5f61225b61223b8361262b565b801561225657505f848061225157612251613687565b868809115b151590565b612266868686612657565b612270919061365c565b95945050505050565b5f610f7d825490565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610f7d565b6122c15f805160206137c683398151915282611fe8565b506122d95f8051602061378683398151915282611fe8565b506122f15f8051602061376683398151915282611fe8565b506123095f8051602061374683398151915282611fe8565b506123215f8051602061378683398151915280612707565b6123455f805160206137668339815191525f80516020613786833981519152612707565b6123695f805160206137c68339815191525f80516020613766833981519152612707565b611fe55f805160206137468339815191525f80516020613766833981519152612707565b5f836001600160a01b03163b5f036123eb575f806123ab8585612751565b5090925090505f8160038111156123c4576123c461369b565b1480156123e25750856001600160a01b0316826001600160a01b0316145b9250505061169b565b6123f684848461279a565b949350505050565b61240882826116a2565b6112855760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401611f65565b5f61244283836116a2565b6124bf575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556124773390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610f7d565b505f610f7d565b5f61169b836001600160a01b038416612871565b5f6124e583836116a2565b156124bf575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610f7d565b5f61169b836001600160a01b0384166128b6565b61256082612999565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156125a4576110cd82826129fc565b611285612a65565b5f825f0182815481106125c1576125c16136af565b905f5260205f200154905092915050565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561261f57602002820191905f5260205f20905b81548152602001906001019080831161260b575b50505050509050919050565b5f60028260038111156126405761264061369b565b61264a91906136c3565b60ff166001149050919050565b5f805f6126648686612a84565b91509150815f036126885783818161267e5761267e613687565b049250505061169b565b81841161269f5761269f6003851502601118612aa0565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f82815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b5f805f8351604103612788576020840151604085015160608601515f1a61277a88828585612ab1565b955095509550505050612793565b505081515f91506002905b9250925092565b5f805f856001600160a01b031685856040516024016127ba9291906136f0565b60408051601f198184030181529181526020820180516001600160e01b0316630b135d3f60e11b179052516127ef9190613708565b5f60405180830381855afa9150503d805f8114612827576040519150601f19603f3d011682016040523d82523d5f602084013e61282c565b606091505b509150915081801561284057506020815110155b801561286757508051630b135d3f60e11b906128659083016020908101908401613631565b145b9695505050505050565b5f8181526001830160205260408120546124bf57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610f7d565b5f8181526001830160205260408120548015612990575f6128d860018361371e565b85549091505f906128eb9060019061371e565b905080821461294a575f865f018281548110612909576129096136af565b905f5260205f200154905080875f018481548110612929576129296136af565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061295b5761295b613731565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610f7d565b5f915050610f7d565b806001600160a01b03163b5f036129ce57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611f65565b5f805160206137a683398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051612a189190613708565b5f60405180830381855af49150503d805f8114612a50576040519150601f19603f3d011682016040523d82523d5f602084013e612a55565b606091505b5091509150612270858383612b79565b34156120ea5760405163b398979f60e01b815260040160405180910390fd5b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115612aea57505f91506003905082612b6f565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612b3b573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116612b6657505f925060019150829050612b6f565b92505f91508190505b9450945094915050565b606082612b8e57612b8982612bd5565b61169b565b8151158015612ba557506001600160a01b0384163b155b15612bce57604051639996b31560e01b81526001600160a01b0385166004820152602401611f65565b508061169b565b805115612be55780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f60208284031215612c0e575f80fd5b81356001600160e01b03198116811461169b575f80fd5b6001600160a01b0381168114611fe5575f80fd5b5f60208284031215612c49575f80fd5b813561169b81612c25565b634e487b7160e01b5f52604160045260245ffd5b60405160a081016001600160401b0381118282101715612c8a57612c8a612c54565b60405290565b604051606081016001600160401b0381118282101715612c8a57612c8a612c54565b604051608081016001600160401b0381118282101715612c8a57612c8a612c54565b8015158114611fe5575f80fd5b5f8082840360c0811215612cf3575f80fd5b8335612cfe81612c25565b925060a0601f1982011215612d11575f80fd5b50612d1a612c68565b6020840135612d2881612c25565b815260408481013560208301526060808601359183019190915260808501359082015260a0840135612d5981612cd4565b6080820152919491935090915050565b5f60208284031215612d79575f80fd5b5035919050565b5f8060408385031215612d91575f80fd5b82356001600160401b03811115612da6575f80fd5b830160808186031215612db7575f80fd5b91506020830135612dc781612c25565b809150509250929050565b5f8060408385031215612de3575f80fd5b823591506020830135612dc781612c25565b5f82601f830112612e04575f80fd5b8135602083015f806001600160401b03841115612e2357612e23612c54565b50604051601f19601f85018116603f011681018181106001600160401b0382111715612e5157612e51612c54565b604052838152905080828401871015612e68575f80fd5b838360208301375f602085830101528094505050505092915050565b5f8060408385031215612e95575f80fd5b8235612ea081612c25565b915060208301356001600160401b03811115612eba575f80fd5b830160608186031215612ecb575f80fd5b612ed3612c90565b81356001600160401b03811115612ee8575f80fd5b612ef487828501612df5565b8252506020828101359082015260409091013590612f1182612cd4565b81604082015280925050509250929050565b5f8060408385031215612f34575f80fd5b8235612f3f81612c25565b946020939093013593505050565b5f8060408385031215612f5e575f80fd5b8235612f6981612c25565b915060208301356001600160401b03811115612f83575f80fd5b612f8f85828601612df5565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b606081525f612fd96060830186612f99565b602083019490945250901515604090910152919050565b5f8060408385031215613001575f80fd5b823561300c81612c25565b915060208301356001600160401b03811115613026575f80fd5b830160808186031215613037575f80fd5b61303f612cb2565b813561304a81612c25565b815260208201356001600160401b03811115613064575f80fd5b61307087828501612df5565b602083015250604082810135908201526060909101359061309082612cd4565b81606082015280925050509250929050565b5f80604083850312156130b3575f80fd5b8235612db781612c25565b608081525f6130d06080830187612f99565b60208301959095525060408101929092521515606090910152919050565b5f80604083850312156130ff575f80fd5b82356001600160401b03811115613114575f80fd5b830160608186031215612db7575f80fd5b5f8060408385031215613136575f80fd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b818110156131855783516001600160a01b031683526020938401939092019160010161315e565b509095945050505050565b5f805f606084860312156131a2575f80fd5b83356131ad81612c25565b925060208401356131bd81612c25565b929592945050506040919091013590565b602081525f61169b6020830184612f99565b6001600160a01b03851681526080602082018190525f9061320390830186612f99565b60408301949094525090151560609091015292915050565b5f805f6060848603121561322d575f80fd5b833561323881612cd4565b925060208401356001600160401b03811115613252575f80fd5b61325e86828701612df5565b925050604084013561326f81612c25565b809150509250925092565b5f6020828403121561328a575f80fd5b813561169b81612cd4565b5f808335601e198436030181126132aa575f80fd5b8301803591506001600160401b038211156132c3575f80fd5b6020019150368190038213156132d7575f80fd5b9250929050565b600181811c908216806132f257607f821691505b60208210810361331057634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156110cd57805f5260205f20601f840160051c8101602085101561333b5750805b601f840160051c820191505b8181101561335a575f8155600101613347565b5050505050565b5f19600383901b1c191660019190911b1790565b5f8135610f7d81612cd4565b61338b8283613295565b6001600160401b038111156133a2576133a2612c54565b6133b6816133b085546132de565b85613316565b5f601f8211600181146133e2575f83156133d05750838201355b6133da8482613361565b865550613439565b5f85815260208120601f198516915b8281101561341157868501358255602094850194600190920191016133f1565b508482101561342d575f1960f88660031b161c19848701351681555b505060018360011b0185555b50505050602082013560018201556040820135600282015561128561346060608401613375565b6003830160ff1981541660ff8315151681178255505050565b81516001600160401b0381111561349257613492612c54565b6134a6816134a084546132de565b84613316565b6020601f8211600181146134d3575f83156134c15750848201515b6134cb8482613361565b85555061335a565b5f84815260208120601f198516915b8281101561350257878501518255602094850194600190920191016134e2565b508482101561351f57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6135388283613295565b6001600160401b0381111561354f5761354f612c54565b61355d816133b085546132de565b5f601f821160018114613589575f83156135775750838201355b6135818482613361565b8655506135e0565b5f85815260208120601f198516915b828110156135b85786850135825560209485019460019092019101613598565b50848210156135d4575f1960f88660031b161c19848701351681555b505060018360011b0185555b50505050602082013560018201556112856135fd60408401613375565b6002830160ff1981541660ff8315151681178255505050565b5f60208284031215613626575f80fd5b815161169b81612c25565b5f60208284031215613641575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610f7d57610f7d613648565b5f6001820161368057613680613648565b5060010190565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60ff8316806136e157634e487b7160e01b5f52601260045260245ffd5b8060ff84160691505092915050565b828152604060208201525f6123f66040830184612f99565b5f82518060208501845e5f920191825250919050565b81810381811115610f7d57610f7d613648565b634e487b7160e01b5f52603160045260245ffdfe6c8d7f768a6bb4aafe85e8a2f5a9680355239c7e14646ed62b044e39de154512c171260023d22a25a00a2789664c9334017843b831138c8ef03cc8897e5873d7f23ec0bb4210edd5cba85afd05127efcd2fc6a781bfed49188da1081670b22d8360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc46a52cf33029de9f84853745a87af28464c80bf0346df1b32e205fc73319f622a164736f6c634300081a000a