0 txs
0 calls
constructor
No constructor.
functions
borrowBalanceInOf
viewfunction borrowBalanceInOf(address, address) view returns (uint256 inP2P, uint256 onPool)
cEth
viewfunction cEth() view returns (address)
comptroller
viewfunction comptroller() view returns (address)
CTOKEN_DECIMALS
viewfunction CTOKEN_DECIMALS() view returns (uint8)
defaultMaxGasForMatching
viewfunction defaultMaxGasForMatching() view returns (uint64 supply, uint64 borrow, uint64 withdraw, uint64 repay)
deltas
viewfunction deltas(address) view returns (uint256 p2pSupplyDelta, uint256 p2pBorrowDelta, uint256 p2pSupplyAmount, uint256 p2pBorrowAmount)
dustThreshold
viewfunction dustThreshold() view returns (uint256)
enteredMarkets
viewfunction enteredMarkets(address, uint256) view returns (address)
getAllMarkets
viewfunction getAllMarkets() view returns (address[] marketsCreated_)
getEnteredMarkets
viewfunction getEnteredMarkets(address _user) view returns (address[] enteredMarkets_)
getHead
viewfunction getHead(address _poolTokenAddress, uint8 _positionType) view returns (address head)
getNext
viewfunction getNext(address _poolTokenAddress, uint8 _positionType, address _user) view returns (address next)
incentivesVault
viewfunction incentivesVault() view returns (address)
interestRatesManager
viewfunction interestRatesManager() view returns (address)
isClaimRewardsPaused
viewfunction isClaimRewardsPaused() view returns (bool)
lastBorrowBlock
viewfunction lastBorrowBlock(address) view returns (uint256)
lastPoolIndexes
viewfunction lastPoolIndexes(address) view returns (uint32 lastUpdateBlockNumber, uint112 lastSupplyPoolIndex, uint112 lastBorrowPoolIndex)
marketParameters
viewfunction marketParameters(address) view returns (uint16 reserveFactor, uint16 p2pIndexCursor)
marketsCreated
viewfunction marketsCreated(uint256) view returns (address)
marketStatus
viewfunction marketStatus(address) view returns (bool isCreated, bool isPaused, bool isPartiallyPaused)
MAX_BASIS_POINTS
viewfunction MAX_BASIS_POINTS() view returns (uint16)
maxSortedUsers
viewfunction maxSortedUsers() view returns (uint256)
owner
viewfunction owner() view returns (address)
p2pBorrowIndex
viewfunction p2pBorrowIndex(address) view returns (uint256)
p2pDisabled
viewfunction p2pDisabled(address) view returns (bool)
p2pSupplyIndex
viewfunction p2pSupplyIndex(address) view returns (uint256)
positionsManager
viewfunction positionsManager() view returns (address)
rewardsManager
viewfunction rewardsManager() view returns (address)
supplyBalanceInOf
viewfunction supplyBalanceInOf(address, address) view returns (uint256 inP2P, uint256 onPool)
treasuryVault
viewfunction treasuryVault() view returns (address)
userMembership
viewfunction userMembership(address, address) view returns (bool)
WAD
viewfunction WAD() view returns (uint256)
wEth
viewfunction wEth() view returns (address)
borrow
nonpayablefunction borrow(address _poolTokenAddress, uint256 _amount, uint256 _maxGasForMatching)
borrow
nonpayablefunction borrow(address _poolTokenAddress, uint256 _amount)
claimRewards
nonpayablefunction claimRewards(address[] _cTokenAddresses, bool _tradeForMorphoToken) returns (uint256 amountOfRewards)
claimToTreasury
nonpayablefunction claimToTreasury(address[] _poolTokenAddresses, uint256[] _amounts)
createMarket
nonpayablefunction createMarket(address _poolTokenAddress, tuple _marketParams)
initialize
nonpayablefunction initialize(address _positionsManager, address _interestRatesManager, address _comptroller, tuple _defaultMaxGasForMatching, uint256 _dustThreshold, uint256 _maxSortedUsers, address _cEth, address _wEth)
liquidate
nonpayablefunction liquidate(address _poolTokenBorrowedAddress, address _poolTokenCollateralAddress, address _borrower, uint256 _amount)
renounceOwnership
nonpayablefunction renounceOwnership()
repay
nonpayablefunction repay(address _poolTokenAddress, address _onBehalf, uint256 _amount)
setClaimRewardsPauseStatus
nonpayablefunction setClaimRewardsPauseStatus(bool _newStatus)
setDefaultMaxGasForMatching
nonpayablefunction setDefaultMaxGasForMatching(tuple _defaultMaxGasForMatching)
setDustThreshold
nonpayablefunction setDustThreshold(uint256 _dustThreshold)
setIncentivesVault
nonpayablefunction setIncentivesVault(address _incentivesVault)
setInterestRatesManager
nonpayablefunction setInterestRatesManager(address _interestRatesManager)
setMaxSortedUsers
nonpayablefunction setMaxSortedUsers(uint256 _newMaxSortedUsers)
setP2PDisabled
nonpayablefunction setP2PDisabled(address _poolTokenAddress, bool _newStatus)
setP2PIndexCursor
nonpayablefunction setP2PIndexCursor(address _poolTokenAddress, uint16 _p2pIndexCursor)
setPartialPauseStatus
nonpayablefunction setPartialPauseStatus(address _poolTokenAddress, bool _newStatus)
setPauseStatus
nonpayablefunction setPauseStatus(address _poolTokenAddress, bool _newStatus)
setPositionsManager
nonpayablefunction setPositionsManager(address _positionsManager)
setReserveFactor
nonpayablefunction setReserveFactor(address _poolTokenAddress, uint16 _newReserveFactor)
setRewardsManager
nonpayablefunction setRewardsManager(address _rewardsManager)
setTreasuryVault
nonpayablefunction setTreasuryVault(address _treasuryVault)
supply
nonpayablefunction supply(address _poolTokenAddress, address _onBehalf, uint256 _amount, uint256 _maxGasForMatching)
supply
nonpayablefunction supply(address _poolTokenAddress, address _onBehalf, uint256 _amount)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateP2PIndexes
nonpayablefunction updateP2PIndexes(address _poolTokenAddress)
withdraw
nonpayablefunction withdraw(address _poolTokenAddress, uint256 _amount)
events
ClaimRewardsPauseStatusSet
event ClaimRewardsPauseStatusSet(bool _newStatus)
DefaultMaxGasForMatchingSet
event DefaultMaxGasForMatchingSet((uint64 supply, uint64 borrow, uint64 withdraw, uint64 repay) _defaultMaxGasForMatching)
DustThresholdSet
event DustThresholdSet(uint256 _dustThreshold)
IncentivesVaultSet
event IncentivesVaultSet(address indexed _newIncentivesVaultAddress)
InterestRatesSet
event InterestRatesSet(address indexed _interestRatesManager)
MarketCreated
event MarketCreated(address indexed _poolTokenAddress, uint16 _reserveFactor, uint16 _p2pIndexCursor)
MaxSortedUsersSet
event MaxSortedUsersSet(uint256 _newValue)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
P2PIndexCursorSet
event P2PIndexCursorSet(address indexed _poolTokenAddress, uint16 _newValue)
P2PStatusSet
event P2PStatusSet(address indexed _poolTokenAddress, bool _p2pDisabled)
PartialPauseStatusSet
event PartialPauseStatusSet(address indexed _poolTokenAddress, bool _newStatus)
PauseStatusSet
event PauseStatusSet(address indexed _poolTokenAddress, bool _newStatus)
PositionsManagerSet
event PositionsManagerSet(address indexed _positionsManager)
ReserveFactorSet
event ReserveFactorSet(address indexed _poolTokenAddress, uint16 _newValue)
ReserveFeeClaimed
event ReserveFeeClaimed(address indexed _poolTokenAddress, uint256 _amountClaimed)
RewardsClaimed
event RewardsClaimed(address indexed _user, uint256 _amountClaimed, bool indexed _traded)
RewardsManagerSet
event RewardsManagerSet(address indexed _newRewardsManagerAddress)
TreasuryVaultSet
event TreasuryVaultSet(address indexed _newTreasuryVaultAddress)
errors
AmountIsZero
error AmountIsZero()
ClaimRewardsPaused
error ClaimRewardsPaused()
CompoundOracleFailed
error CompoundOracleFailed()
ExceedsMaxBasisPoints
error ExceedsMaxBasisPoints()
LowLevelDelegateCallFailed
error LowLevelDelegateCallFailed()
MarketAlreadyCreated
error MarketAlreadyCreated()
MarketCreationFailedOnCompound
error MarketCreationFailedOnCompound()
MarketNotCreated
error MarketNotCreated()
MarketPaused
error MarketPaused()
ZeroAddress
error ZeroAddress()
creation bytecode
0x60806040523480156200001157600080fd5b50600054610100900460ff166200002f5760005460ff161562000039565b62000039620000de565b620000a15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b600054610100900460ff16158015620000c4576000805461ffff19166101011790555b8015620000d7576000805461ff00191690555b506200010b565b6000620000f630620000fc60201b62002e141760201c565b15905090565b6001600160a01b03163b151590565b613d04806200011b6000396000f3fe6080604052600436106103a65760003560e01c806396bd512c116101e7578063d59c9eb61161010d578063e5a602ac116100a0578063f2fde38b1161006f578063f2fde38b14610cfa578063f3fef3a314610d1a578063f4ea93d814610d3a578063f62256c714610d6357600080fd5b8063e5a602ac14610c3c578063e61c6d6f14610c5c578063e8462e8f14610c72578063f2f4ca1614610c8857600080fd5b8063df303f8a116100dc578063df303f8a14610b9d578063df6d921214610bbd578063e34b514514610bdd578063e501ed0414610bfd57600080fd5b8063d59c9eb614610a7f578063d5f80c3414610ae1578063db0577fd14610b01578063defe205314610b7d57600080fd5b8063af8b1c6f11610185578063b650f86d11610154578063b650f86d14610a05578063c1bce0b714610a25578063cb830d0314610a45578063cc56718014610a5f57600080fd5b8063af8b1c6f14610983578063b0772d0b146109a3578063b24be687146109b8578063b59ec478146109d857600080fd5b8063a44026a3116101c1578063a44026a314610903578063aab3f86814610923578063ac0b4b1214610943578063ad7e55ba1461096357600080fd5b806396bd512c146108245780639df5a1f21461087a578063a086fc22146108a157600080fd5b80635acff027116102cc5780637a6631211161026a5780638ccb720b116102395780638ccb720b146107655780638da5cb5b146107925780639023951b146107b0578063947574ac146107d057600080fd5b80637a663121146106d85780637f3ad056146106f857806380a67a7d14610718578063854f7ebb1461073857600080fd5b8063715018a6116102a6578063715018a614610648578063720ceb021461065d5780637683a90814610698578063789caa3e146106b857600080fd5b80635acff027146105ec5780635fe3b5671461060c5780636a1460241461062c57600080fd5b80632ff34fe11161034457806341bb07251161031357806341bb0725146105545780634b8a35291461057457806352f0f81414610594578063582d44bb146105cc57600080fd5b80632ff34fe1146104d457806334544040146104f45780633528e4ce14610514578063411302501461053457600080fd5b806316e487db1161038057806316e487db146104275780631da649cf1461044757806320c342d9146104675780632ebf4be0146104a757600080fd5b80630a8ddc5e146103b25780630c0a769b146103d4578063148e23ce146103f457600080fd5b366103ad57005b600080fd5b3480156103be57600080fd5b506103d26103cd3660046131f1565b610d83565b005b3480156103e057600080fd5b506103d26103ef36600461320e565b610e00565b34801561040057600080fd5b5061041461040f3660046132aa565b610f49565b6040519081526020015b60405180910390f35b34801561043357600080fd5b506103d26104423660046131f1565b6111cd565b34801561045357600080fd5b506103d261046236600461320e565b611241565b34801561047357600080fd5b506104976104823660046131f1565b60a36020526000908152604090205460ff1681565b604051901515815260200161041e565b3480156104b357600080fd5b506104146104c23660046131f1565b60a56020526000908152604090205481565b3480156104e057600080fd5b506103d26104ef3660046132fd565b611334565b34801561050057600080fd5b506103d261050f3660046133f2565b61139a565b34801561052057600080fd5b506103d261052f3660046131f1565b611538565b34801561054057600080fd5b506103d261054f3660046131f1565b611580565b34801561056057600080fd5b506103d261056f36600461348b565b6115f4565b34801561058057600080fd5b506103d261058f3660046134c0565b6116c7565b3480156105a057600080fd5b5060aa546105b4906001600160a01b031681565b6040516001600160a01b03909116815260200161041e565b3480156105d857600080fd5b506103d26105e736600461348b565b6117e1565b3480156105f857600080fd5b506105b46106073660046134fb565b6118a5565b34801561061857600080fd5b5060ae546105b4906001600160a01b031681565b34801561063857600080fd5b50610414670de0b6b3a764000081565b34801561065457600080fd5b506103d261199e565b34801561066957600080fd5b50610497610678366004613527565b60a060209081526000928352604080842090915290825290205460ff1681565b3480156106a457600080fd5b506103d26106b3366004613560565b6119d4565b3480156106c457600080fd5b506105b46106d336600461357c565b611acf565b3480156106e457600080fd5b506103d26106f33660046135c5565b611bcd565b34801561070457600080fd5b5060ad546105b4906001600160a01b031681565b34801561072457600080fd5b506103d2610733366004613606565b6120f7565b34801561074457600080fd5b506104146107533660046131f1565b60a46020526000908152604090205481565b34801561077157600080fd5b506107856107803660046131f1565b612162565b60405161041e9190613621565b34801561079e57600080fd5b506033546001600160a01b03166105b4565b3480156107bc57600080fd5b506103d26107cb36600461366e565b6121d8565b3480156107dc57600080fd5b5061080f6107eb366004613527565b609f6020908152600092835260408084209091529082529020805460019091015482565b6040805192835260208301919091520161041e565b34801561083057600080fd5b5061085f61083f3660046131f1565b60a76020526000908152604090205461ffff808216916201000090041682565b6040805161ffff93841681529290911660208301520161041e565b34801561088657600080fd5b5061088f600881565b60405160ff909116815260200161041e565b3480156108ad57600080fd5b506108e36108bc3660046131f1565b60a96020526000908152604090208054600182015460028301546003909301549192909184565b60408051948552602085019390935291830152606082015260800161041e565b34801561090f57600080fd5b5060b0546105b4906001600160a01b031681565b34801561092f57600080fd5b506103d261093e3660046136d9565b612407565b34801561094f57600080fd5b506105b461095e3660046132fd565b6125a4565b34801561096f57600080fd5b506103d261097e3660046132fd565b6125ce565b34801561098f57600080fd5b5060af546105b4906001600160a01b031681565b3480156109af57600080fd5b5061078561262d565b3480156109c457600080fd5b5060ab546105b4906001600160a01b031681565b3480156109e457600080fd5b506104146109f33660046131f1565b60b26020526000908152604090205481565b348015610a1157600080fd5b506103d2610a203660046131f1565b61268f565b348015610a3157600080fd5b506103d2610a4036600461372a565b612703565b348015610a5157600080fd5b5060b3546104979060ff1681565b348015610a6b57600080fd5b506103d2610a7a36600461348b565b6127ff565b348015610a8b57600080fd5b50610ac2610a9a3660046131f1565b60a86020526000908152604090205460ff808216916101008104821691620100009091041683565b604080519315158452911515602084015215159082015260600161041e565b348015610aed57600080fd5b506103d2610afc3660046131f1565b6128bc565b348015610b0d57600080fd5b50610b51610b1c3660046131f1565b60a66020526000908152604090205463ffffffff8116906001600160701b036401000000008204811691600160901b90041683565b6040805163ffffffff90941684526001600160701b03928316602085015291169082015260600161041e565b348015610b8957600080fd5b5060ac546105b4906001600160a01b031681565b348015610ba957600080fd5b506103d2610bb836600461376f565b612930565b348015610bc957600080fd5b5060b1546105b4906001600160a01b031681565b348015610be957600080fd5b506105b4610bf83660046134c0565b612a20565b348015610c0957600080fd5b5061080f610c18366004613527565b609e6020908152600092835260408084209091529082529020805460019091015482565b348015610c4857600080fd5b506103d2610c5736600461376f565b612a58565b348015610c6857600080fd5b5061041460975481565b348015610c7e57600080fd5b5061041460985481565b348015610c9457600080fd5b50609954610cc7906001600160401b0380821691600160401b8104821691600160801b8204811691600160c01b90041684565b604080516001600160401b039586168152938516602085015291841691830191909152909116606082015260800161041e565b348015610d0657600080fd5b506103d2610d153660046131f1565b612b52565b348015610d2657600080fd5b506103d2610d353660046134c0565b612bed565b348015610d4657600080fd5b50610d5061271081565b60405161ffff909116815260200161041e565b348015610d6f57600080fd5b506103d2610d7e36600461379d565b612cfc565b6033546001600160a01b03163314610db65760405162461bcd60e51b8152600401610dad906137e3565b60405180910390fd5b60ac80546001600160a01b0319166001600160a01b0383169081179091556040517f22597c132d394cddf8eee9722c4dfc456da51de4c9d9cdf2b8f2523ae0e7eb8190600090a250565b600260655403610e225760405162461bcd60e51b8152600401610dad90613818565b60026065556001600160a01b038316600090815260a860209081526040918290208251606081018452905460ff8082161515808452610100830482161515948401949094526201000090910416151592810192909252849190610e98576040516396e1352960e01b815260040160405180910390fd5b806020015180610ea9575080604001515b15610ec757604051630a9105a360e31b815260040160405180910390fd5b609954604051610f3c916385d7334d60e01b91610ef891899133918a918a916001600160401b03169060240161384f565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260aa546001600160a01b031690612e23565b5050600160655550505050565b6000600260655403610f6d5760405162461bcd60e51b8152600401610dad90613818565b600260655560b35460ff1615610f9657604051633be92ecd60e21b815260040160405180910390fd5b60ac546040516377d5d85760e01b81526001600160a01b03909116906377d5d85790610fca908790879033906004016138d4565b6020604051808303816000875af1158015610fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100d9190613900565b905080156111c15760ae5460408051634e8dad0560e11b815290516000926001600160a01b031691639d1b5a0a9160048083019260209291908290030181865afa15801561105f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110839190613919565b60ae5460405162e1ed9760e51b81529192506001600160a01b031690631c3db2e0906110b790309089908990600401613936565b600060405180830381600087803b1580156110d157600080fd5b505af11580156110e5573d6000803e3d6000fd5b5050505082156111725760ab54611109906001600160a01b03838116911684612ebd565b60ab546040516329fdc03760e21b8152336004820152602481018490526001600160a01b039091169063a7f700dc90604401600060405180830381600087803b15801561115557600080fd5b505af1158015611169573d6000803e3d6000fd5b50505050611186565b6111866001600160a01b0382163384612f3a565b6040518281528315159033907fab3c4ae116d5285676cffaad9c32cae8acf49b49ca0fc9953b029f97acb955ef9060200160405180910390a3505b60016065559392505050565b6033546001600160a01b031633146111f75760405162461bcd60e51b8152600401610dad906137e3565b60aa80546001600160a01b0319166001600160a01b0383169081179091556040517f3771f72e25982dbc6c341b7e4171da9e2788d5ecd8f9799434d32df7a5dfe86e90600090a250565b6002606554036112635760405162461bcd60e51b8152600401610dad90613818565b60026065556001600160a01b038316600090815260a860209081526040918290208251606081018452905460ff80821615158084526101008304821615159484019490945262010000909104161515928101929092528491906112d9576040516396e1352960e01b815260040160405180910390fd5b8060200151156112fc57604051630a9105a360e31b815260040160405180910390fd5b609954604051610f3c9163c2af978760e01b91610ef891899133918a918a91600160c01b90046001600160401b03169060240161384f565b6033546001600160a01b0316331461135e5760405162461bcd60e51b8152600401610dad906137e3565b60978190556040518181527f51f9468910070fc9ae906e375f46182f4f84ab311131794a3eceb0b6b80e7f1b906020015b60405180910390a150565b600054610100900460ff166113b55760005460ff16156113b9565b303b155b61141c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610dad565b600054610100900460ff1615801561143e576000805461ffff19166101011790555b611446612fb2565b61144e612fe1565b60ad80546001600160a01b03808b166001600160a01b03199283161790925560aa80548c841690831617905560ae80548a841690831617905587516099805460208b015160408c015160608d01516001600160401b03908116600160c01b026001600160c01b03928216600160801b02929092166001600160801b03938216600160401b026001600160801b031990951691909616179290921716929092179190911790556098879055609786905560b0805486841690831617905560b1805492851692909116919091179055801561152d576000805461ff00191690555b505050505050505050565b6001600160a01b038116600090815260a86020526040902054819060ff16611573576040516396e1352960e01b815260040160405180910390fd5b61157c82613010565b5050565b6033546001600160a01b031633146115aa5760405162461bcd60e51b8152600401610dad906137e3565b60ad80546001600160a01b0319166001600160a01b0383169081179091556040517fc1a4bb1bd557bbfbac2d5702ef3fd93590f2c98c8ccc7f4200564e5992a2aaa590600090a250565b6033546001600160a01b0316331461161e5760405162461bcd60e51b8152600401610dad906137e3565b6001600160a01b038216600090815260a86020526040902054829060ff16611659576040516396e1352960e01b815260040160405180910390fd5b6001600160a01b038316600081815260a86020526040908190208054851515620100000262ff000019909116179055517f5024f94e1f582131506b852f4d0aaaaf1c4f03825397c5e64da730ada4e2437a906116ba90851515815260200190565b60405180910390a2505050565b6002606554036116e95760405162461bcd60e51b8152600401610dad90613818565b60026065556001600160a01b038216600090815260a860209081526040918290208251606081018452905460ff808216151580845261010083048216151594840194909452620100009091041615159281019290925283919061175f576040516396e1352960e01b815260040160405180910390fd5b806020015180611770575080604001515b1561178e57604051630a9105a360e31b815260040160405180910390fd5b6099546040516001600160a01b038616602482015260448101859052600160401b9091046001600160401b031660648201526117d590634fd5881b60e11b90608401610ef8565b50506001606555505050565b6033546001600160a01b0316331461180b5760405162461bcd60e51b8152600401610dad906137e3565b6001600160a01b038216600090815260a86020526040902054829060ff16611846576040516396e1352960e01b815260040160405180910390fd5b6001600160a01b038316600081815260a860205260409081902080548515156101000261ff0019909116179055517f5fb0304a827d06fca0ab552393a60b0224e0ac91b574df99de28e8f8bf891605906116ba90851515815260200190565b6000808260038111156118ba576118ba613964565b036118e5576001600160a01b038381166000908152609a6020526040902060010154165b9050611998565b60018260038111156118f9576118f9613964565b03611921576001600160a01b038381166000908152609b6020526040902060010154166118de565b600282600381111561193557611935613964565b0361195d576001600160a01b038381166000908152609c6020526040902060010154166118de565b600382600381111561197157611971613964565b03611998576001600160a01b038381166000908152609d6020526040902060010154165b90505b92915050565b6033546001600160a01b031633146119c85760405162461bcd60e51b8152600401610dad906137e3565b6119d26000613062565b565b6033546001600160a01b031633146119fe5760405162461bcd60e51b8152600401610dad906137e3565b805160998054602084015160408086015160608701516001600160401b03908116600160c01b026001600160c01b03928216600160801b02929092166001600160801b03948216600160401b026001600160801b03199096169190971617939093179190911693909317179055517f837ae3fc1cda9774726e0150f9f2ba34b5b33716fe86de000a7e552622fed8d59061138f90839081516001600160401b039081168252602080840151821690830152604080840151821690830152606092830151169181019190915260800190565b600080836003811115611ae457611ae4613964565b03611b12576001600160a01b0384166000908152609a60205260409020611b0b90836130b4565b9050611bc6565b6001836003811115611b2657611b26613964565b03611b4d576001600160a01b0384166000908152609b60205260409020611b0b90836130b4565b6002836003811115611b6157611b61613964565b03611b88576001600160a01b0384166000908152609c60205260409020611b0b90836130b4565b6003836003811115611b9c57611b9c613964565b03611bc6576001600160a01b0384166000908152609d60205260409020611bc390836130b4565b90505b9392505050565b6033546001600160a01b03163314611bf75760405162461bcd60e51b8152600401610dad906137e3565b612710611c0a604083016020840161397a565b61ffff161180611c2b5750612710611c25602083018361397a565b61ffff16115b15611c4957604051631a97cb1b60e31b815260040160405180910390fd5b6001600160a01b038216600090815260a8602052604090205460ff1615611c8357604051631afb05cb60e31b815260040160405180910390fd5b6001600160a01b038216600090815260a860205260408082208054600160ff19909116811790915581518181528083019092528160200160208202803683370190505090508281600081518110611cdc57611cdc613997565b6001600160a01b03928316602091820292909201015260ae54604051631853304760e31b8152600092919091169063c299823890611d1e908590600401613621565b6000604051808303816000875af1158015611d3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d6591908101906139ad565b905080600081518110611d7a57611d7a613997565b6020026020010151600014611da257604051636214152560e11b815260040160405180910390fd5b60b05484906000906001600160a01b0390811690831603611dcf57506aa56fa5b99019a5c8000000611ec2565b6008826001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e339190613919565b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e949190613a52565b611e9f906010613a8b565b611ea99190613ab0565b611eb490600a613bb7565b611ebf906002613bc6565b90505b6001600160a01b03868116600090815260a46020908152604080832085905560a5825280832085905560a68252808320805463ffffffff19164363ffffffff16178155815163bd6d894d60e01b81529151909487169363bd6d894d936004808501949193929183900301908290875af1158015611f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f679190613900565b8160000160046101000a8154816001600160701b0302191690836001600160701b03160217905550826001600160a01b031663aa5af0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff19190613900565b81546001600160701b0391909116600160901b0271ffffffffffffffffffffffffffffffffffff9091161781556001600160a01b038716600090815260a76020526040902086906120428282613be5565b505060a280546001810182556000919091527faaf4f58de99300cfadc4585755f376d5fa747d5bc561d5bd9d710de1f91bf42d0180546001600160a01b0319166001600160a01b0389169081179091557f411078003dc53bceaaa8a7c1d423236d5ce8eaac303e86acab168abcd3e91ffd6120c0602089018961397a565b6120d060408a0160208b0161397a565b6040805161ffff93841681529290911660208301520160405180910390a250505050505050565b6033546001600160a01b031633146121215760405162461bcd60e51b8152600401610dad906137e3565b60b3805460ff19168215159081179091556040519081527f629214570a96e8f58ccbce4488267cbe9ce88c21626ba835f9dedc9d69ab89c39060200161138f565b6001600160a01b038116600090815260a160209081526040918290208054835181840281018401909452808452606093928301828280156121cc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116121ae575b50505050509050919050565b6033546001600160a01b031633146122025760405162461bcd60e51b8152600401610dad906137e3565b60af546001600160a01b031661222b5760405163d92e233d60e01b815260040160405180910390fd5b8260005b818110156123ff57600086868381811061224b5761224b613997565b905060200201602081019061226091906131f1565b6001600160a01b038116600090815260a860209081526040918290208251606081018452905460ff808216158015845261010083048216151594840194909452620100009091041615159281019290925291925090806122c1575080602001515b806122cd575080604001515b156122d95750506123ef565b60006122e4836130d7565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561232e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123529190613900565b90508060000361236557505050506123ef565b600061238989898881811061237c5761237c613997565b9050602002013583613168565b60af549091506123a6906001600160a01b03858116911683612f3a565b846001600160a01b03167fbc50cfea30a46f2c6d1638717dc48ef12ab41ce93c25960f749ed48623b5aeca826040516123e191815260200190565b60405180910390a250505050505b6123f881613c2f565b905061222f565b505050505050565b6002606554036124295760405162461bcd60e51b8152600401610dad90613818565b60026065556001600160a01b038416600090815260a860209081526040918290208251606081018452905460ff808216151580845261010083048216151594840194909452620100009091041615159281019290925285919061249f576040516396e1352960e01b815260040160405180910390fd5b8060200151156124c257604051630a9105a360e31b815260040160405180910390fd5b6001600160a01b038516600090815260a860209081526040918290208251606081018452905460ff8082161515808452610100830482161515948401949094526201000090910416151592810192909252869190612533576040516396e1352960e01b815260040160405180910390fd5b80602001511561255657604051630a9105a360e31b815260040160405180910390fd5b6040516001600160a01b03808a1660248301528089166044830152871660648201526084810186905261259490633c8380b560e11b9060a401610ef8565b5050600160655550505050505050565b60a281815481106125b457600080fd5b6000918252602090912001546001600160a01b0316905081565b6033546001600160a01b031633146125f85760405162461bcd60e51b8152600401610dad906137e3565b60988190556040518181527f8f5701a54b608a77f9d6109063c71106454403f1f67139ea94ffda827dfb4bba9060200161138f565b606060a280548060200260200160405190810160405280929190818152602001828054801561268557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612667575b5050505050905090565b6033546001600160a01b031633146126b95760405162461bcd60e51b8152600401610dad906137e3565b60ab80546001600160a01b0319166001600160a01b0383169081179091556040517f326b2e6be6f045d4eea85a41c714df3692132315a6ff6a80196817272c89aa4e90600090a250565b6002606554036127255760405162461bcd60e51b8152600401610dad90613818565b60026065556001600160a01b038316600090815260a860209081526040918290208251606081018452905460ff808216151580845261010083048216151594840194909452620100009091041615159281019290925284919061279b576040516396e1352960e01b815260040160405180910390fd5b8060200151806127ac575080604001515b156127ca57604051630a9105a360e31b815260040160405180910390fd5b6040516001600160a01b03861660248201526044810185905260648101849052610f3c90634fd5881b60e11b90608401610ef8565b6033546001600160a01b031633146128295760405162461bcd60e51b8152600401610dad906137e3565b6001600160a01b038216600090815260a86020526040902054829060ff16612864576040516396e1352960e01b815260040160405180910390fd5b6001600160a01b038316600081815260a36020908152604091829020805460ff191686151590811790915591519182527f8d2c76c0d7dcf49cd4c4f8a206eb0f990b10bf5635ece070fb58ce9d33a7874f91016116ba565b6033546001600160a01b031633146128e65760405162461bcd60e51b8152600401610dad906137e3565b60af80546001600160a01b0319166001600160a01b0383169081179091556040517f7b23bd31f405e09a43804fe266d4b6c17f4f4369ff5f43f71452c76aa43620ac90600090a250565b6033546001600160a01b0316331461295a5760405162461bcd60e51b8152600401610dad906137e3565b6001600160a01b038216600090815260a86020526040902054829060ff16612995576040516396e1352960e01b815260040160405180910390fd5b61271061ffff831611156129bc57604051631a97cb1b60e31b815260040160405180910390fd5b6129c583613010565b6001600160a01b038316600081815260a76020908152604091829020805461ffff191661ffff871690811790915591519182527f07e13f8ca204c42dabbc3599491f28193fc66fb9dac125630b2eb7c21bed9be991016116ba565b60a16020528160005260406000208181548110612a3c57600080fd5b6000918252602090912001546001600160a01b03169150829050565b6033546001600160a01b03163314612a825760405162461bcd60e51b8152600401610dad906137e3565b6001600160a01b038216600090815260a86020526040902054829060ff16612abd576040516396e1352960e01b815260040160405180910390fd5b61271061ffff83161115612ae457604051631a97cb1b60e31b815260040160405180910390fd5b612aed83613010565b6001600160a01b038316600081815260a76020908152604091829020805463ffff000019166201000061ffff88169081029190911790915591519182527ff9da65ad6e566b695847a15f00a9b1d9a737638ec570828b2043dca63737b30591016116ba565b6033546001600160a01b03163314612b7c5760405162461bcd60e51b8152600401610dad906137e3565b6001600160a01b038116612be15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610dad565b612bea81613062565b50565b600260655403612c0f5760405162461bcd60e51b8152600401610dad90613818565b60026065556001600160a01b038216600090815260a860209081526040918290208251606081018452905460ff8082161515808452610100830482161515948401949094526201000090910416151592810192909252839190612c85576040516396e1352960e01b815260040160405180910390fd5b806020015115612ca857604051630a9105a360e31b815260040160405180910390fd5b6099546040516001600160a01b03861660248201526044810185905233606482018190526084820152600160801b9091046001600160401b031660a48201526117d590632dbcafc760e21b9060c401610ef8565b600260655403612d1e5760405162461bcd60e51b8152600401610dad90613818565b60026065556001600160a01b038416600090815260a860209081526040918290208251606081018452905460ff8082161515808452610100830482161515948401949094526201000090910416151592810192909252859190612d94576040516396e1352960e01b815260040160405180910390fd5b806020015180612da5575080604001515b15612dc357604051630a9105a360e31b815260040160405180910390fd5b6040516001600160a01b038088166024830152336044830152861660648201526084810185905260a48101849052612e06906385d7334d60e01b9060c401610ef8565b505060016065555050505050565b6001600160a01b03163b151590565b6060600080846001600160a01b031684604051612e409190613c48565b600060405180830381855af49150503d8060008114612e7b576040519150601f19603f3d011682016040523d82523d6000602084013e612e80565b606091505b50915091508115612e945791506119989050565b805115612ea45780518082602001fd5b60405163037b81af60e11b815260040160405180910390fd5b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080612f345760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b6044820152606401610dad565b50505050565b600060405163a9059cbb60e01b8152836004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080612f345760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610dad565b600054610100900460ff16612fd95760405162461bcd60e51b8152600401610dad90613c83565b6119d261317e565b600054610100900460ff166130085760405162461bcd60e51b8152600401610dad90613c83565b6119d26131ac565b604080516001600160a01b038381166024808401919091528351808403909101815260449092019092526020810180516001600160e01b0316631a94726760e11b17905260ad5461157c921690612e23565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0390811660009081526020929092526040909120600101541690565b60b0546000906001600160a01b039081169083160361310157505060b1546001600160a01b031690565b816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561313f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119989190613919565b919050565b60008183106131775781611995565b5090919050565b600054610100900460ff166131a55760405162461bcd60e51b8152600401610dad90613c83565b6001606555565b600054610100900460ff166131d35760405162461bcd60e51b8152600401610dad90613c83565b6119d233613062565b6001600160a01b0381168114612bea57600080fd5b60006020828403121561320357600080fd5b8135611bc6816131dc565b60008060006060848603121561322357600080fd5b833561322e816131dc565b9250602084013561323e816131dc565b929592945050506040919091013590565b60008083601f84011261326157600080fd5b5081356001600160401b0381111561327857600080fd5b6020830191508360208260051b850101111561329357600080fd5b9250929050565b8035801515811461316357600080fd5b6000806000604084860312156132bf57600080fd5b83356001600160401b038111156132d557600080fd5b6132e18682870161324f565b90945092506132f490506020850161329a565b90509250925092565b60006020828403121561330f57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561335457613354613316565b604052919050565b80356001600160401b038116811461316357600080fd5b60006080828403121561338557600080fd5b604051608081018181106001600160401b03821117156133a7576133a7613316565b6040529050806133b68361335c565b81526133c46020840161335c565b60208201526133d56040840161335c565b60408201526133e66060840161335c565b60608201525092915050565b600080600080600080600080610160898b03121561340f57600080fd5b883561341a816131dc565b9750602089013561342a816131dc565b9650604089013561343a816131dc565b95506134498a60608b01613373565b945060e089013593506101008901359250610120890135613469816131dc565b915061014089013561347a816131dc565b809150509295985092959890939650565b6000806040838503121561349e57600080fd5b82356134a9816131dc565b91506134b76020840161329a565b90509250929050565b600080604083850312156134d357600080fd5b82356134de816131dc565b946020939093013593505050565b80356004811061316357600080fd5b6000806040838503121561350e57600080fd5b8235613519816131dc565b91506134b7602084016134ec565b6000806040838503121561353a57600080fd5b8235613545816131dc565b91506020830135613555816131dc565b809150509250929050565b60006080828403121561357257600080fd5b6119958383613373565b60008060006060848603121561359157600080fd5b833561359c816131dc565b92506135aa602085016134ec565b915060408401356135ba816131dc565b809150509250925092565b60008082840360608112156135d957600080fd5b83356135e4816131dc565b92506040601f19820112156135f857600080fd5b506020830190509250929050565b60006020828403121561361857600080fd5b6119958261329a565b6020808252825182820181905260009190848201906040850190845b818110156136625783516001600160a01b03168352928401929184019160010161363d565b50909695505050505050565b6000806000806040858703121561368457600080fd5b84356001600160401b038082111561369b57600080fd5b6136a78883890161324f565b909650945060208701359150808211156136c057600080fd5b506136cd8782880161324f565b95989497509550505050565b600080600080608085870312156136ef57600080fd5b84356136fa816131dc565b9350602085013561370a816131dc565b9250604085013561371a816131dc565b9396929550929360600135925050565b60008060006060848603121561373f57600080fd5b833561374a816131dc565b95602085013595506040909401359392505050565b61ffff81168114612bea57600080fd5b6000806040838503121561378257600080fd5b823561378d816131dc565b915060208301356135558161375f565b600080600080608085870312156137b357600080fd5b84356137be816131dc565b935060208501356137ce816131dc565b93969395505050506040820135916060013590565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b039586168152938516602085015291909316604083015260608201929092526001600160401b03909116608082015260a00190565b8183526000602080850194508260005b858110156138c95781356138ae816131dc565b6001600160a01b03168752958201959082019060010161389b565b509495945050505050565b6040815260006138e860408301858761388b565b905060018060a01b0383166020830152949350505050565b60006020828403121561391257600080fd5b5051919050565b60006020828403121561392b57600080fd5b8151611bc6816131dc565b6001600160a01b038416815260406020820181905260009061395b908301848661388b565b95945050505050565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561398c57600080fd5b8135611bc68161375f565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156139c057600080fd5b82516001600160401b03808211156139d757600080fd5b818501915085601f8301126139eb57600080fd5b8151818111156139fd576139fd613316565b8060051b9150613a0e84830161332c565b8181529183018401918481019088841115613a2857600080fd5b938501935b83851015613a4657845182529385019390850190613a2d565b98975050505050505050565b600060208284031215613a6457600080fd5b815160ff81168114611bc657600080fd5b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff84168060ff03821115613aa857613aa8613a75565b019392505050565b600060ff821660ff841680821015613aca57613aca613a75565b90039392505050565b600181815b80851115613b0e578160001904821115613af457613af4613a75565b80851615613b0157918102915b93841c9390800290613ad8565b509250929050565b600082613b2557506001611998565b81613b3257506000611998565b8160018114613b485760028114613b5257613b6e565b6001915050611998565b60ff841115613b6357613b63613a75565b50506001821b611998565b5060208310610133831016604e8410600b8410161715613b91575081810a611998565b613b9b8383613ad3565b8060001904821115613baf57613baf613a75565b029392505050565b600061199560ff841683613b16565b6000816000190483118215151615613be057613be0613a75565b500290565b8135613bf08161375f565b61ffff8116905081548161ffff1982161783556020840135613c118161375f565b63ffff00008160101b168363ffffffff198416171784555050505050565b600060018201613c4157613c41613a75565b5060010190565b6000825160005b81811015613c695760208186018101518583015201613c4f565b81811115613c78576000828501525b509190910192915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220f7b81d1d81ba414fd15cd3282cc063ca6e0b440c73f259ed0f51c4998326db9c64736f6c634300080d0033