0 txs
45 calls
constructor
constructor()
functions
_borrowGuardianPaused
viewfunction _borrowGuardianPaused() view returns (bool)
_mintGuardianPaused
viewfunction _mintGuardianPaused() view returns (bool)
accountAssets
viewfunction accountAssets(address, uint256) view returns (address)
admin
viewfunction admin() view returns (address)
allMarkets
viewfunction allMarkets(uint256) view returns (address)
borrowCapGuardian
viewfunction borrowCapGuardian() view returns (address)
borrowCaps
viewfunction borrowCaps(address) view returns (uint256)
borrowGuardianPaused
viewfunction borrowGuardianPaused(address) view returns (bool)
checkMembership
viewfunction checkMembership(address account, address slToken) view returns (bool)
closeFactorMantissa
viewfunction closeFactorMantissa() view returns (uint256)
comptrollerImplementation
viewfunction comptrollerImplementation() view returns (address)
getAccountLiquidity
viewfunction getAccountLiquidity(address account) view returns (uint256, uint256, uint256)
getAllMarkets
viewfunction getAllMarkets() view returns (address[])
getAssetsIn
viewfunction getAssetsIn(address account) view returns (address[])
getBlockNumber
viewfunction getBlockNumber() view returns (uint256)
getHypotheticalAccountLiquidity
viewfunction getHypotheticalAccountLiquidity(address account, address slTokenModify, uint256 redeemTokens, uint256 borrowAmount) view returns (uint256, uint256, uint256)
getSashimiAddress
viewfunction getSashimiAddress() view returns (address)
isComptroller
viewfunction isComptroller() view returns (bool)
liquidateCalculateSeizeTokens
viewfunction liquidateCalculateSeizeTokens(address slTokenBorrowed, address slTokenCollateral, uint256 actualRepayAmount) view returns (uint256, uint256)
liquidationIncentiveMantissa
viewfunction liquidationIncentiveMantissa() view returns (uint256)
markets
viewfunction markets(address) view returns (bool isListed, uint256 collateralFactorMantissa, bool isSashimied)
maxAssets
viewfunction maxAssets() view returns (uint256)
mintGuardianPaused
viewfunction mintGuardianPaused(address) view returns (bool)
oracle
viewfunction oracle() view returns (address)
pauseGuardian
viewfunction pauseGuardian() view returns (address)
pendingAdmin
viewfunction pendingAdmin() view returns (address)
pendingComptrollerImplementation
viewfunction pendingComptrollerImplementation() view returns (address)
sashimiAccrued
viewfunction sashimiAccrued(address) view returns (uint256)
sashimiBorrowerIndex
viewfunction sashimiBorrowerIndex(address, address) view returns (uint256)
sashimiBorrowState
viewfunction sashimiBorrowState(address) view returns (uint224 index, uint32 block)
sashimiClaimThreshold
viewfunction sashimiClaimThreshold() view returns (uint256)
sashimiInitialIndex
viewfunction sashimiInitialIndex() view returns (uint224)
sashimiRate
viewfunction sashimiRate() view returns (uint256)
sashimiSpeeds
viewfunction sashimiSpeeds(address) view returns (uint256)
sashimiSupplierIndex
viewfunction sashimiSupplierIndex(address, address) view returns (uint256)
sashimiSupplyState
viewfunction sashimiSupplyState(address) view returns (uint224 index, uint32 block)
seizeGuardianPaused
viewfunction seizeGuardianPaused() view returns (bool)
transferGuardianPaused
viewfunction transferGuardianPaused() view returns (bool)
_addSashimiMarkets
nonpayablefunction _addSashimiMarkets(address[] slTokens)
_become
nonpayablefunction _become(address unitroller)
_dropSashimiMarket
nonpayablefunction _dropSashimiMarket(address slToken)
_setBorrowCapGuardian
nonpayablefunction _setBorrowCapGuardian(address newBorrowCapGuardian)
_setBorrowPaused
nonpayablefunction _setBorrowPaused(address slToken, bool state) returns (bool)
_setCloseFactor
nonpayablefunction _setCloseFactor(uint256 newCloseFactorMantissa) returns (uint256)
_setCollateralFactor
nonpayablefunction _setCollateralFactor(address slToken, uint256 newCollateralFactorMantissa) returns (uint256)
_setLiquidationIncentive
nonpayablefunction _setLiquidationIncentive(uint256 newLiquidationIncentiveMantissa) returns (uint256)
_setMarketBorrowCaps
nonpayablefunction _setMarketBorrowCaps(address[] slTokens, uint256[] newBorrowCaps)
_setMaxAssets
nonpayablefunction _setMaxAssets(uint256 newMaxAssets) returns (uint256)
_setMintPaused
nonpayablefunction _setMintPaused(address slToken, bool state) returns (bool)
_setPauseGuardian
nonpayablefunction _setPauseGuardian(address newPauseGuardian) returns (uint256)
_setPriceOracle
nonpayablefunction _setPriceOracle(address newOracle) returns (uint256)
_setSashimiRate
nonpayablefunction _setSashimiRate(uint256 sashimiRate_)
_setSeizePaused
nonpayablefunction _setSeizePaused(bool state) returns (bool)
_setTransferPaused
nonpayablefunction _setTransferPaused(bool state) returns (bool)
_supportMarket
nonpayablefunction _supportMarket(address slToken) returns (uint256)
borrowAllowed
nonpayablefunction borrowAllowed(address slToken, address borrower, uint256 borrowAmount) returns (uint256)
borrowVerify
nonpayablefunction borrowVerify(address slToken, address borrower, uint256 borrowAmount)
claimSashimi
nonpayablefunction claimSashimi(address holder, address[] slTokens)
claimSashimi
nonpayablefunction claimSashimi(address holder)
claimSashimi
nonpayablefunction claimSashimi(address[] holders, address[] slTokens, bool borrowers, bool suppliers)
enterMarkets
nonpayablefunction enterMarkets(address[] slTokens) returns (uint256[])
exitMarket
nonpayablefunction exitMarket(address slTokenAddress) returns (uint256)
liquidateBorrowAllowed
nonpayablefunction liquidateBorrowAllowed(address slTokenBorrowed, address slTokenCollateral, address liquidator, address borrower, uint256 repayAmount) returns (uint256)
liquidateBorrowVerify
nonpayablefunction liquidateBorrowVerify(address slTokenBorrowed, address slTokenCollateral, address liquidator, address borrower, uint256 actualRepayAmount, uint256 seizeTokens)
mintAllowed
nonpayablefunction mintAllowed(address slToken, address minter, uint256 mintAmount) returns (uint256)
mintVerify
nonpayablefunction mintVerify(address slToken, address minter, uint256 actualMintAmount, uint256 mintTokens)
redeemAllowed
nonpayablefunction redeemAllowed(address slToken, address redeemer, uint256 redeemTokens) returns (uint256)
redeemVerify
nonpayablefunction redeemVerify(address slToken, address redeemer, uint256 redeemAmount, uint256 redeemTokens)
refreshSashimiSpeeds
nonpayablefunction refreshSashimiSpeeds()
repayBorrowAllowed
nonpayablefunction repayBorrowAllowed(address slToken, address payer, address borrower, uint256 repayAmount) returns (uint256)
repayBorrowVerify
nonpayablefunction repayBorrowVerify(address slToken, address payer, address borrower, uint256 actualRepayAmount, uint256 borrowerIndex)
seizeAllowed
nonpayablefunction seizeAllowed(address slTokenCollateral, address slTokenBorrowed, address liquidator, address borrower, uint256 seizeTokens) returns (uint256)
seizeVerify
nonpayablefunction seizeVerify(address slTokenCollateral, address slTokenBorrowed, address liquidator, address borrower, uint256 seizeTokens)
transferAllowed
nonpayablefunction transferAllowed(address slToken, address src, address dst, uint256 transferTokens) returns (uint256)
transferVerify
nonpayablefunction transferVerify(address slToken, address src, address dst, uint256 transferTokens)
events
ActionPaused
event ActionPaused(address slToken, string action, bool pauseState)
ActionPaused
event ActionPaused(string action, bool pauseState)
DistributedBorrowerSashimi
event DistributedBorrowerSashimi(address indexed slToken, address indexed borrower, uint256 sashimiDelta, uint256 sashimiBorrowIndex)
DistributedSupplierSashimi
event DistributedSupplierSashimi(address indexed slToken, address indexed supplier, uint256 sashimiDelta, uint256 sashimiSupplyIndex)
Failure
event Failure(uint256 error, uint256 info, uint256 detail)
MarketEntered
event MarketEntered(address slToken, address account)
MarketExited
event MarketExited(address slToken, address account)
MarketListed
event MarketListed(address slToken)
MarketSashimied
event MarketSashimied(address slToken, bool isSashimied)
NewBorrowCap
event NewBorrowCap(address indexed slToken, uint256 newBorrowCap)
NewBorrowCapGuardian
event NewBorrowCapGuardian(address oldBorrowCapGuardian, address newBorrowCapGuardian)
NewCloseFactor
event NewCloseFactor(uint256 oldCloseFactorMantissa, uint256 newCloseFactorMantissa)
NewCollateralFactor
event NewCollateralFactor(address slToken, uint256 oldCollateralFactorMantissa, uint256 newCollateralFactorMantissa)
NewLiquidationIncentive
event NewLiquidationIncentive(uint256 oldLiquidationIncentiveMantissa, uint256 newLiquidationIncentiveMantissa)
NewMaxAssets
event NewMaxAssets(uint256 oldMaxAssets, uint256 newMaxAssets)
NewPauseGuardian
event NewPauseGuardian(address oldPauseGuardian, address newPauseGuardian)
NewPriceOracle
event NewPriceOracle(address oldPriceOracle, address newPriceOracle)
NewSashimiRate
event NewSashimiRate(uint256 oldSashimiRate, uint256 newSashimiRate)
SashimiSpeedUpdated
event SashimiSpeedUpdated(address indexed slToken, uint256 newSpeed)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b50600080546001600160a01b03191633179055615fb380620000336000396000f3fe608060405234801561001057600080fd5b50600436106104485760003560e01c80636a56947e11610241578063b0772d0b1161013b578063da3d454c116100c3578063e740f2e011610087578063e740f2e01461117d578063e87554461461122e578063eabe7d9114611236578063ede4edd01461126c578063f851a4401461129257610448565b8063da3d454c146110df578063dce1544914611115578063dcfbc0c714611141578063e4028eee14611149578063e6653f3d1461117557610448565b8063c29982381161010a578063c299823814610f6f578063c488847b14611010578063c4fdb7821461105f578063d02f73511461107c578063d9226ced146110c257610448565b8063b0772d0b14610efd578063ba01806214610f05578063bb82aa5e14610f2b578063bdcdc25814610f3357610448565b80638ebf6364116101c9578063a48636a71161018d578063a48636a714610e2b578063a76b3fda14610e33578063a8de09b314610e59578063abfceffc14610e7f578063ac0b0bb714610ef557610448565b80638ebf636414610d64578063929fe9a114610d8357806394b2294b14610db1578063982ec79014610db9578063a066257114610ddd57610448565b80637bd9f5ea116102105780637bd9f5ea14610bd85780637dc0d1d014610d0457806387f7630314610d0c5780638e6d6a3014610d145780638e8f294b14610d1c57610448565b80636a56947e14610b0a5780636d154ea514610b465780636d35bf9114610b6c578063731f0c2b14610bb257610448565b806341c728b9116103525780634fd42e17116102da5780635c7786051161029e5780635c778605146109845780635ec88c79146109ba5780635f5af1aa146109e05780635fc7e71e14610a06578063607ef6c114610a4c57610448565b80634fd42e17146108e057806351dff989146108fd57806352d84d1e14610939578063543a0f3b1461095657806355ee1fe11461095e57610448565b806347ef3b3b1161032157806347ef3b3b146107d65780634a584432146108225780634ada90af146108485780634e79238f146108505780634ef4c3e1146108aa57610448565b806341c728b91461073e57806342cbb15c1461077a57806343e9bfe01461078257806344a95cab146107b057610448565b806324008a62116103d55780632d70db78116103a45780632d70db78146106a6578063317b0b77146106c5578063391957d7146106e25780633bcf7ec1146107085780633c94786f1461073657610448565b806324008a621461063457806324a3d6221461067057806325541b3d14610678578063267822471461069e57610448565b80631d504dc61161041c5780631d504dc6146104e15780631ededc9114610507578063212c74b71461054957806321af4569146105ea57806322f39dcb1461060e57610448565b80627e3dd21461044d5780630dc98bb814610469578063116c2549146104a957806318c882a5146104b3575b600080fd5b61045561129a565b604080519115158252519081900360200190f35b6104976004803603604081101561047f57600080fd5b506001600160a01b038135811691602001351661129f565b60408051918252519081900360200190f35b6104b16112bc565b005b610455600480360360408110156104c957600080fd5b506001600160a01b0381351690602001351515611304565b6104b1600480360360208110156104f757600080fd5b50356001600160a01b03166114a4565b6104b1600480360360a081101561051d57600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135611603565b6104b16004803603602081101561055f57600080fd5b810190602081018135600160201b81111561057957600080fd5b82018360208201111561058b57600080fd5b803590602001918460208302840111600160201b831117156105ac57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061160a945050505050565b6105f2611686565b604080516001600160a01b039092168252519081900360200190f35b6104b16004803603602081101561062457600080fd5b50356001600160a01b0316611695565b6104976004803603608081101561064a57600080fd5b506001600160a01b038135811691602081013582169160408201351690606001356117b0565b6105f2611879565b6104b16004803603602081101561068e57600080fd5b50356001600160a01b0316611888565b6105f26118ec565b610455600480360360208110156106bc57600080fd5b503515156118fb565b610497600480360360208110156106db57600080fd5b5035611a35565b6104b1600480360360208110156106f857600080fd5b50356001600160a01b0316611b46565b6104556004803603604081101561071e57600080fd5b506001600160a01b0381351690602001351515611bf2565b610455611d8d565b6104b16004803603608081101561075457600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611d9d565b610497611da3565b6104976004803603604081101561079857600080fd5b506001600160a01b0381358116916020013516611da8565b610497600480360360208110156107c657600080fd5b50356001600160a01b0316611dc5565b6104b1600480360360c08110156107ec57600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a00135611dd7565b6104976004803603602081101561083857600080fd5b50356001600160a01b0316611ddf565b610497611df1565b61088c6004803603608081101561086657600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611df7565b60408051938452602084019290925282820152519081900360600190f35b610497600480360360608110156108c057600080fd5b506001600160a01b03813581169160208101359091169060400135611e31565b610497600480360360208110156108f657600080fd5b5035611edc565b6104b16004803603608081101561091357600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611fd0565b6105f26004803603602081101561094f57600080fd5b5035612024565b61049761204b565b6104976004803603602081101561097457600080fd5b50356001600160a01b0316612051565b6104b16004803603606081101561099a57600080fd5b506001600160a01b038135811691602081013590911690604001356120d8565b61088c600480360360208110156109d057600080fd5b50356001600160a01b03166120dd565b610497600480360360208110156109f657600080fd5b50356001600160a01b0316612112565b610497600480360360a0811015610a1c57600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060800135612196565b6104b160048036036040811015610a6257600080fd5b810190602081018135600160201b811115610a7c57600080fd5b820183602082011115610a8e57600080fd5b803590602001918460208302840111600160201b83111715610aaf57600080fd5b919390929091602081019035600160201b811115610acc57600080fd5b820183602082011115610ade57600080fd5b803590602001918460208302840111600160201b83111715610aff57600080fd5b50909250905061231d565b6104b160048036036080811015610b2057600080fd5b506001600160a01b03813581169160208101358216916040820135169060600135611d9d565b61045560048036036020811015610b5c57600080fd5b50356001600160a01b03166124ad565b6104b1600480360360a0811015610b8257600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060800135611603565b61045560048036036020811015610bc857600080fd5b50356001600160a01b03166124c2565b6104b160048036036080811015610bee57600080fd5b810190602081018135600160201b811115610c0857600080fd5b820183602082011115610c1a57600080fd5b803590602001918460208302840111600160201b83111715610c3b57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b811115610c8a57600080fd5b820183602082011115610c9c57600080fd5b803590602001918460208302840111600160201b83111715610cbd57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505050508035151591506020013515156124d7565b6105f2612680565b61045561268f565b61049761269f565b610d4260048036036020811015610d3257600080fd5b50356001600160a01b03166126aa565b6040805193151584526020840192909252151582820152519081900360600190f35b61045560048036036020811015610d7a57600080fd5b503515156126d0565b61045560048036036040811015610d9957600080fd5b506001600160a01b0381358116916020013516612809565b61049761283c565b610dc1612842565b604080516001600160e01b039092168252519081900360200190f35b610e0360048036036020811015610df357600080fd5b50356001600160a01b0316612855565b604080516001600160e01b03909316835263ffffffff90911660208301528051918290030190f35b6105f261287f565b61049760048036036020811015610e4957600080fd5b50356001600160a01b0316612897565b61049760048036036020811015610e6f57600080fd5b50356001600160a01b03166129f4565b610ea560048036036020811015610e9557600080fd5b50356001600160a01b0316612a06565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610ee1578181015183820152602001610ec9565b505050509050019250505060405180910390f35b610455612a8f565b610ea5612a9f565b610e0360048036036020811015610f1b57600080fd5b50356001600160a01b0316612b01565b6105f2612b2b565b61049760048036036080811015610f4957600080fd5b506001600160a01b03813581169160208101358216916040820135169060600135612b3a565b610ea560048036036020811015610f8557600080fd5b810190602081018135600160201b811115610f9f57600080fd5b820183602082011115610fb157600080fd5b803590602001918460208302840111600160201b83111715610fd257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612bce945050505050565b6110466004803603606081101561102657600080fd5b506001600160a01b03813581169160208101359091169060400135612c65565b6040805192835260208301919091528051918290030190f35b6104b16004803603602081101561107557600080fd5b5035612eda565b610497600480360360a081101561109257600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060800135612f68565b610497600480360360208110156110d857600080fd5b5035613120565b610497600480360360608110156110f557600080fd5b506001600160a01b03813581169160208101359091169060400135613189565b6105f26004803603604081101561112b57600080fd5b506001600160a01b0381351690602001356135c4565b6105f26135f9565b6104976004803603604081101561115f57600080fd5b506001600160a01b038135169060200135613608565b6104556137b8565b6104b16004803603604081101561119357600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156111bd57600080fd5b8201836020820111156111cf57600080fd5b803590602001918460208302840111600160201b831117156111f057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506137c8945050505050565b610497613825565b6104976004803603606081101561124c57600080fd5b506001600160a01b0381358116916020810135909116906040013561382b565b6104976004803603602081101561128257600080fd5b50356001600160a01b0316613868565b6105f2613b7b565b600181565b601360209081526000928352604080842090915290825290205481565b3332146112fa5760405162461bcd60e51b8152600401808060200182810382526031815260200180615dfb6031913960400191505060405180910390fd5b611302613b8a565b565b6001600160a01b03821660009081526009602052604081205460ff1661135b5760405162461bcd60e51b8152600401808060200182810382526028815260200180615dd36028913960400191505060405180910390fd5b600a546001600160a01b031633148061137e57506000546001600160a01b031633145b6113b95760405162461bcd60e51b8152600401808060200182810382526027815260200180615e2c6027913960400191505060405180910390fd5b6000546001600160a01b03163314806113d457506001821515145b61141e576040805162461bcd60e51b81526020600482015260166024820152756f6e6c792061646d696e2063616e20756e706175736560501b604482015290519081900360640190fd5b6001600160a01b0383166000818152600c6020908152604091829020805486151560ff199091168117909155825193845283830152606090830181905260069083015265426f72726f7760d01b6080830152517f71aec636243f9709bb0007ae15e9afb8150ab01716d75fd7573be5cc096e03b09181900360a00190a150805b92915050565b806001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b1580156114dd57600080fd5b505afa1580156114f1573d6000803e3d6000fd5b505050506040513d602081101561150757600080fd5b50516001600160a01b0316331461154f5760405162461bcd60e51b8152600401808060200182810382526027815260200180615f586027913960400191505060405180910390fd5b806001600160a01b031663c1e803346040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561158a57600080fd5b505af115801561159e573d6000803e3d6000fd5b505050506040513d60208110156115b457600080fd5b505115611600576040805162461bcd60e51b815260206004820152601560248201527418da185b99d9481b9bdd08185d5d1a1bdc9a5e9959605a1b604482015290519081900360640190fd5b50565b5050505050565b611612613f4f565b61164d5760405162461bcd60e51b8152600401808060200182810382526021815260200180615e796021913960400191505060405180910390fd5b60005b815181101561167d5761167582828151811061166857fe5b6020026020010151613f78565b600101611650565b50611600613b8a565b6015546001600160a01b031681565b6000546001600160a01b031633146116de5760405162461bcd60e51b8152600401808060200182810382526022815260200180615ebc6022913960400191505060405180910390fd5b6001600160a01b0381166000908152600960205260409020600381015460ff161515600114611754576040805162461bcd60e51b815260206004820152601e60248201527f6d61726b6574206973206e6f7420612073617368696d69206d61726b65740000604482015290519081900360640190fd5b60038101805460ff19169055604080516001600160a01b03841681526000602082015281517f96d197f5736a983e40a84560a8ec96bb18251fbba31de199daf8547ba50893ff929181900390910190a16117ac613b8a565b5050565b6001600160a01b03841660009081526009602052604081205460ff166117d857506009611871565b6117e0615d13565b6040518060200160405280876001600160a01b031663aa5af0fd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561182457600080fd5b505afa158015611838573d6000803e3d6000fd5b505050506040513d602081101561184e57600080fd5b50519052905061185e8682614293565b61186b868583600061451b565b60009150505b949350505050565b600a546001600160a01b031681565b61160081600d8054806020026020016040519081016040528092919081815260200182805480156118e257602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116118c4575b50505050506137c8565b6001546001600160a01b031681565b600a546000906001600160a01b031633148061192157506000546001600160a01b031633145b61195c5760405162461bcd60e51b8152600401808060200182810382526027815260200180615e2c6027913960400191505060405180910390fd5b6000546001600160a01b031633148061197757506001821515145b6119c1576040805162461bcd60e51b81526020600482015260166024820152756f6e6c792061646d696e2063616e20756e706175736560501b604482015290519081900360640190fd5b600a8054831515600160b81b810260ff60b81b1990921691909117909155604080516020810192909252808252600582820152645365697a6560d81b6060830152517fef159d9a32b2472e32b098f954f3ce62d232939f1c207070b584df1814de2de09181900360800190a150805b919050565b600080546001600160a01b03163314611a5b57611a5460016004614705565b9050611a30565b611a63615d13565b506040805160208101909152828152611a7a615d13565b50604080516020810190915266b1a2bc2ec500008152611a9a828261476b565b15611ab357611aaa600580614705565b92505050611a30565b611abb615d13565b506040805160208101909152670c7d713b49da00008152611adc8184614773565b15611af657611aec600580614705565b9350505050611a30565b6005805490869055604080518281526020810188905281517f3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9929181900390910190a160005b9695505050505050565b6000546001600160a01b03163314611b8f5760405162461bcd60e51b8152600401808060200182810382526026815260200180615e536026913960400191505060405180910390fd5b601580546001600160a01b038381166001600160a01b0319831681179093556040805191909216808252602082019390935281517feda98690e518e9a05f8ec6837663e188211b2da8f4906648b323f2c1d4434e29929181900390910190a15050565b6001600160a01b03821660009081526009602052604081205460ff16611c495760405162461bcd60e51b8152600401808060200182810382526028815260200180615dd36028913960400191505060405180910390fd5b600a546001600160a01b0316331480611c6c57506000546001600160a01b031633145b611ca75760405162461bcd60e51b8152600401808060200182810382526027815260200180615e2c6027913960400191505060405180910390fd5b6000546001600160a01b0316331480611cc257506001821515145b611d0c576040805162461bcd60e51b81526020600482015260166024820152756f6e6c792061646d696e2063616e20756e706175736560501b604482015290519081900360640190fd5b6001600160a01b0383166000818152600b6020908152604091829020805486151560ff199091168117909155825193845283830152606090830181905260049083015263135a5b9d60e21b6080830152517f71aec636243f9709bb0007ae15e9afb8150ab01716d75fd7573be5cc096e03b09181900360a00190a150919050565b600a54600160a01b900460ff1681565b50505050565b435b90565b601260209081526000928352604080842090915290825290205481565b600f6020526000908152604090205481565b505050505050565b60166020526000908152604090205481565b60065481565b600080600080600080611e0c8a8a8a8a61477a565b925092509250826011811115611e1e57fe5b95509093509150505b9450945094915050565b6001600160a01b0383166000908152600b602052604081205460ff1615611e90576040805162461bcd60e51b815260206004820152600e60248201526d1b5a5b9d081a5cc81c185d5cd95960921b604482015290519081900360640190fd5b6001600160a01b03841660009081526009602052604090205460ff16611eba5760095b9050611ed5565b611ec384614b95565b611ecf84846000614e13565b60005b90505b9392505050565b600080546001600160a01b03163314611efb57611a546001600b614705565b611f03615d13565b506040805160208101909152828152611f1a615d13565b506040805160208101909152670de0b6b3a76400008152611f3b8282614773565b15611f4c57611aaa6007600c614705565b611f54615d13565b5060408051602081019091526714d1120d7b1600008152611f758184614773565b15611f8657611aec6007600c614705565b6006805490869055604080518281526020810188905281517faeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316929181900390910190a16000611b3c565b80158015611fde5750600082115b15611d9d576040805162461bcd60e51b815260206004820152601160248201527072656465656d546f6b656e73207a65726f60781b604482015290519081900360640190fd5b600d818154811061203157fe5b6000918252602090912001546001600160a01b0316905081565b600e5481565b600080546001600160a01b0316331461207057611a5460016010614705565b600480546001600160a01b038481166001600160a01b0319831681179093556040805191909216808252602082019390935281517fd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22929181900390910190a160009392505050565b505050565b6000806000806000806120f487600080600061477a565b92509250925082601181111561210657fe5b97919650945092505050565b600080546001600160a01b0316331461213157611a5460016013614705565b600a80546001600160a01b038481166001600160a01b0319831617928390556040805192821680845293909116602083015280517f0613b6ee6a04f0d09f390e4d9318894b9f6ac7fd83897cd8d18896ba579c401e9281900390910190a16000611ed5565b6001600160a01b03851660009081526009602052604081205460ff1615806121d757506001600160a01b03851660009081526009602052604090205460ff16155b156121e65760095b9050612314565b6000806121f28561500b565b9193509091506000905082601181111561220857fe5b146122225781601181111561221957fe5b92505050612314565b8061222e576003612219565b6000886001600160a01b03166395dd9193876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561228657600080fd5b505afa15801561229a573d6000803e3d6000fd5b505050506040513d60208110156122b057600080fd5b50516040805160208101909152600554815290915060009081906122d4908461502b565b909250905060008260038111156122e757fe5b146122fb57600b5b95505050505050612314565b8087111561230a5760116122ef565b6000955050505050505b95945050505050565b6000546001600160a01b031633148061234057506015546001600160a01b031633145b61237b5760405162461bcd60e51b8152600401808060200182810382526035815260200180615ede6035913960400191505060405180910390fd5b8281811580159061238b57508082145b6123cc576040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081a5b9c1d5d609a1b604482015290519081900360640190fd5b60005b828110156124a4578484828181106123e357fe5b90506020020135601660008989858181106123fa57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000208190555086868281811061243a57fe5b905060200201356001600160a01b03166001600160a01b03167f6f1951b2aad10f3fc81b86d91105b413a5b3f847a34bbc5ce1904201b14438f686868481811061248057fe5b905060200201356040518082815260200191505060405180910390a26001016123cf565b50505050505050565b600c6020526000908152604090205460ff1681565b600b6020526000908152604090205460ff1681565b60005b83518110156116035760008482815181106124f157fe5b6020908102919091018101516001600160a01b0381166000908152600990925260409091205490915060ff16612566576040805162461bcd60e51b81526020600482015260156024820152741b585c9ad95d081b5d5cdd081899481b1a5cdd1959605a1b604482015290519081900360640190fd5b6001841515141561262e57612579615d13565b6040518060200160405280836001600160a01b031663aa5af0fd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156125bd57600080fd5b505afa1580156125d1573d6000803e3d6000fd5b505050506040513d60208110156125e757600080fd5b5051905290506125f78282614293565b60005b875181101561262b576126238389838151811061261357fe5b602002602001015184600161451b565b6001016125fa565b50505b600183151514156126775761264281614b95565b60005b86518110156126755761266d8288838151811061265e57fe5b60200260200101516001614e13565b600101612645565b505b506001016124da565b6004546001600160a01b031681565b600a54600160b01b900460ff1681565b66038d7ea4c6800081565b60096020526000908152604090208054600182015460039092015460ff91821692911683565b600a546000906001600160a01b03163314806126f657506000546001600160a01b031633145b6127315760405162461bcd60e51b8152600401808060200182810382526027815260200180615e2c6027913960400191505060405180910390fd5b6000546001600160a01b031633148061274c57506001821515145b612796576040805162461bcd60e51b81526020600482015260166024820152756f6e6c792061646d696e2063616e20756e706175736560501b604482015290519081900360640190fd5b600a8054831515600160b01b810260ff60b01b1990921691909117909155604080516020810192909252808252600882820152672a3930b739b332b960c11b6060830152517fef159d9a32b2472e32b098f954f3ce62d232939f1c207070b584df1814de2de09181900360800190a15090565b6001600160a01b038082166000908152600960209081526040808320938616835260029093019052205460ff1692915050565b60075481565b6ec097ce7bc90715b34b9f100000000081565b6011602052600090815260409020546001600160e01b03811690600160e01b900463ffffffff1682565b73c28e27870558cf22add83540d2126da2e4b464c290565b600080546001600160a01b031633146128b657611a5460016012614705565b6001600160a01b03821660009081526009602052604090205460ff16156128e357611a54600a6011614705565b816001600160a01b0316639d8e79626040518163ffffffff1660e01b815260040160206040518083038186803b15801561291c57600080fd5b505afa158015612930573d6000803e3d6000fd5b505050506040513d602081101561294657600080fd5b5050604080516060810182526001808252600060208381018281528486018381526001600160a01b03891684526009909252949091209251835490151560ff199182161784559351918301919091555160039091018054911515919092161790556129b08261507f565b604080516001600160a01b038416815290517fcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f9181900360200190a1600092915050565b60146020526000908152604090205481565b60608060086000846001600160a01b03166001600160a01b03168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015612a8257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612a64575b5093979650505050505050565b600a54600160b81b900460ff1681565b6060600d805480602002602001604051908101604052809291908181526020018280548015612af757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612ad9575b5050505050905090565b6010602052600090815260409020546001600160e01b03811690600160e01b900463ffffffff1682565b6002546001600160a01b031681565b600a54600090600160b01b900460ff1615612b91576040805162461bcd60e51b81526020600482015260126024820152711d1c985b9cd9995c881a5cc81c185d5cd95960721b604482015290519081900360640190fd5b6000612b9e86868561515d565b90508015612bad579050611871565b612bb686614b95565b612bc286866000614e13565b61186b86856000614e13565b6060600082519050606081604051908082528060200260200182016040528015612c02578160200160208202803883390190505b50905060005b82811015612c5d576000858281518110612c1e57fe5b60200260200101519050612c328133615209565b6011811115612c3d57fe5b838381518110612c4957fe5b602090810291909101015250600101612c08565b509392505050565b600480546040805163fc57d4df60e01b81526001600160a01b038781169482019490945290516000938493849391169163fc57d4df91602480820192602092909190829003018186803b158015612cbb57600080fd5b505afa158015612ccf573d6000803e3d6000fd5b505050506040513d6020811015612ce557600080fd5b5051600480546040805163fc57d4df60e01b81526001600160a01b038a8116948201949094529051939450600093929091169163fc57d4df91602480820192602092909190829003018186803b158015612d3e57600080fd5b505afa158015612d52573d6000803e3d6000fd5b505050506040513d6020811015612d6857600080fd5b50519050811580612d77575080155b15612d8c57600d935060009250612ed2915050565b6000866001600160a01b031663182df0f56040518163ffffffff1660e01b815260040160206040518083038186803b158015612dc757600080fd5b505afa158015612ddb573d6000803e3d6000fd5b505050506040513d6020811015612df157600080fd5b505190506000612dff615d13565b612e07615d13565b612e0f615d13565b6000612e1d6006548961532a565b945090506000816003811115612e2f57fe5b14612e4b57600b5b995060009850612ed2975050505050505050565b612e55878761532a565b935090506000816003811115612e6757fe5b14612e7357600b612e37565b612e7d8484615365565b925090506000816003811115612e8f57fe5b14612e9b57600b612e37565b612ea5828c61502b565b955090506000816003811115612eb757fe5b14612ec357600b612e37565b60009950939750505050505050505b935093915050565b612ee2613f4f565b612f1d5760405162461bcd60e51b8152600401808060200182810382526022815260200180615e9a6022913960400191505060405180910390fd5b600e805490829055604080518281526020810184905281517f35c3b0b3a88c33fbe7f6e478bd2b4eee2e2bd62552f6e61c57b3e84d232cbfb1929181900390910190a16117ac613b8a565b600a54600090600160b81b900460ff1615612fbc576040805162461bcd60e51b815260206004820152600f60248201526e1cd95a5e99481a5cc81c185d5cd959608a1b604482015290519081900360640190fd5b6001600160a01b03861660009081526009602052604090205460ff161580612ffd57506001600160a01b03851660009081526009602052604090205460ff16155b156130095760096121df565b846001600160a01b0316635fe3b5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561304257600080fd5b505afa158015613056573d6000803e3d6000fd5b505050506040513d602081101561306c57600080fd5b505160408051635fe3b56760e01b815290516001600160a01b0392831692891691635fe3b567916004808301926020929190829003018186803b1580156130b257600080fd5b505afa1580156130c6573d6000803e3d6000fd5b505050506040513d60208110156130dc57600080fd5b50516001600160a01b0316146130f35760026121df565b6130fc86614b95565b61310886846000614e13565b61311486856000614e13565b60009695505050505050565b600080546001600160a01b0316331461313f57611a546001600d614705565b6007805490839055604080518281526020810185905281517f7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea929181900390910190a16000611ed5565b6001600160a01b0383166000908152600c602052604081205460ff16156131ea576040805162461bcd60e51b815260206004820152601060248201526f189bdc9c9bddc81a5cc81c185d5cd95960821b604482015290519081900360640190fd5b6001600160a01b03841660009081526009602052604090205460ff16613211576009611eb3565b6001600160a01b038085166000908152600960209081526040808320938716835260029093019052205460ff1661330257336001600160a01b03851614613298576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91036bab9ba1031329039b62a37b5b2b760511b604482015290519081900360640190fd5b60006132a43385615209565b905060008160118111156132b457fe5b146132cd578060118111156132c557fe5b915050611ed5565b6001600160a01b038086166000908152600960209081526040808320938816835260029093019052205460ff1661330057fe5b505b600480546040805163fc57d4df60e01b81526001600160a01b03888116948201949094529051929091169163fc57d4df91602480820192602092909190829003018186803b15801561335357600080fd5b505afa158015613367573d6000803e3d6000fd5b505050506040513d602081101561337d57600080fd5b505161338a57600d611eb3565b6001600160a01b03841660009081526016602052604090205480156134d5576000856001600160a01b03166347bd37186040518163ffffffff1660e01b815260040160206040518083038186803b1580156133e457600080fd5b505afa1580156133f8573d6000803e3d6000fd5b505050506040513d602081101561340e57600080fd5b5051905060008061341f838761537d565b9092509050600082600381111561343257fe5b1461347d576040805162461bcd60e51b8152602060048201526016602482015275746f74616c20626f72726f7773206f766572666c6f7760501b604482015290519081900360640190fd5b8381106134d1576040805162461bcd60e51b815260206004820152601960248201527f6d61726b657420626f72726f7720636170207265616368656400000000000000604482015290519081900360640190fd5b5050505b6000806134e5868860008861477a565b919350909150600090508260118111156134fb57fe5b146135165781601181111561350c57fe5b9350505050611ed5565b801561352357600461350c565b61352b615d13565b6040518060200160405280896001600160a01b031663aa5af0fd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561356f57600080fd5b505afa158015613583573d6000803e3d6000fd5b505050506040513d602081101561359957600080fd5b5051905290506135a98882614293565b6135b6888883600061451b565b600098975050505050505050565b600860205281600052604060002081815481106135dd57fe5b6000918252602090912001546001600160a01b03169150829050565b6003546001600160a01b031681565b600080546001600160a01b0316331461362e5761362760016006614705565b905061149e565b6001600160a01b0383166000908152600960205260409020805460ff166136635761365b60096007614705565b91505061149e565b61366b615d13565b506040805160208101909152838152613682615d13565b506040805160208101909152670c7d713b49da000081526136a38183614773565b156136be576136b460066008614705565b935050505061149e565b84158015906137475750600480546040805163fc57d4df60e01b81526001600160a01b038a8116948201949094529051929091169163fc57d4df91602480820192602092909190829003018186803b15801561371957600080fd5b505afa15801561372d573d6000803e3d6000fd5b505050506040513d602081101561374357600080fd5b5051155b15613758576136b4600d6009614705565b60018301805490869055604080516001600160a01b03891681526020810183905280820188905290517f70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc59181900360600190a16000979650505050505050565b600a54600160a81b900460ff1681565b6040805160018082528183019092526060916020808301908038833901905050905082816000815181106137f857fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506120d881836001806124d7565b60055481565b60008061383985858561515d565b90508015613848579050611ed5565b61385185614b95565b61385d85856000614e13565b600095945050505050565b6000808290506000806000836001600160a01b031663c37f68e2336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060806040518083038186803b1580156138c957600080fd5b505afa1580156138dd573d6000803e3d6000fd5b505050506040513d60808110156138f357600080fd5b5080516020820151604090920151909450909250905082156139465760405162461bcd60e51b8152600401808060200182810382526025815260200180615f136025913960400191505060405180910390fd5b801561396357613958600c6002614705565b945050505050611a30565b600061397087338561515d565b9050801561399157613985600e6003836153a3565b95505050505050611a30565b6001600160a01b0385166000908152600960209081526040808320338452600281019092529091205460ff166139d05760009650505050505050611a30565b3360009081526002820160209081526040808320805460ff191690556008825291829020805483518184028101840190945280845260609392830182828015613a4257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613a24575b5050835193945083925060009150505b82811015613a9757896001600160a01b0316848281518110613a7057fe5b60200260200101516001600160a01b03161415613a8f57809150613a97565b600101613a52565b50818110613aa157fe5b336000908152600860205260409020805481906000198101908110613ac257fe5b9060005260206000200160009054906101000a90046001600160a01b0316818381548110613aec57fe5b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790558054613b25826000198301615d26565b50604080516001600160a01b038c16815233602082015281517fe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d929181900390910190a160009c9b505050505050505050505050565b6000546001600160a01b031681565b6060600d805480602002602001604051908101604052809291908181526020018280548015613be257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613bc4575b50939450600093505050505b8151811015613ca8576000828281518110613c0557fe5b60200260200101519050613c17615d13565b6040518060200160405280836001600160a01b031663aa5af0fd6040518163ffffffff1660e01b815260040160206040518083038186803b158015613c5b57600080fd5b505afa158015613c6f573d6000803e3d6000fd5b505050506040513d6020811015613c8557600080fd5b505190529050613c9482614b95565b613c9e8282614293565b5050600101613bee565b50613cb1615d13565b60405180602001604052806000815250905060608251604051908082528060200260200182016040528015613d0057816020015b613ced615d13565b815260200190600190039081613ce55790505b50905060005b8351811015613e86576000848281518110613d1d57fe5b6020908102919091018101516001600160a01b0381166000908152600990925260409091206003015490915060ff1615613e7d57613d59615d13565b60408051602080820180845260045463fc57d4df60e01b9091526001600160a01b03868116602485015293519293849391169163fc57d4df916044808601929190818703018186803b158015613dae57600080fd5b505afa158015613dc2573d6000803e3d6000fd5b505050506040513d6020811015613dd857600080fd5b505190529050613de6615d13565b613e5482846001600160a01b03166347bd37186040518163ffffffff1660e01b815260040160206040518083038186803b158015613e2357600080fd5b505afa158015613e37573d6000803e3d6000fd5b505050506040513d6020811015613e4d57600080fd5b5051615409565b905080858581518110613e6357fe5b6020026020010181905250613e788682615433565b955050505b50600101613d06565b5060005b8351811015611d9d576000600d8281548110613ea257fe5b600091825260208220015485516001600160a01b039091169250613ec7576000613eef565b613eef600e54613eea868681518110613edc57fe5b602002602001015188615458565b61548b565b6001600160a01b0383166000818152600f60209081526040918290208490558151848152915193945091927f85d184e23f4392dcd3da22a067350d0e3a7094f7c6bdd7a49a0e1f8288d364f4929181900390910190a25050600101613e8a565b600080546001600160a01b0316331480613f7357506002546001600160a01b031633145b905090565b6001600160a01b0381166000908152600960205260409020805460ff161515600114613feb576040805162461bcd60e51b815260206004820152601c60248201527f73617368696d69206d61726b6574206973206e6f74206c697374656400000000604482015290519081900360640190fd5b600381015460ff1615614045576040805162461bcd60e51b815260206004820152601c60248201527f73617368696d69206d61726b657420616c726561647920616464656400000000604482015290519081900360640190fd5b60038101805460ff19166001908117909155604080516001600160a01b0385168152602081019290925280517f96d197f5736a983e40a84560a8ec96bb18251fbba31de199daf8547ba50893ff9281900390910190a16001600160a01b0382166000908152601060205260409020546001600160e01b03161580156140ed57506001600160a01b038216600090815260106020526040902054600160e01b900463ffffffff16155b156141aa5760405180604001604052806ec097ce7bc90715b34b9f10000000006001600160e01b0316815260200161414f614126611da3565b6040518060400160405280601c8152602001600080516020615f388339815191528152506154b3565b63ffffffff9081169091526001600160a01b0384166000908152601060209081526040909120835181549490920151909216600160e01b026001600160e01b039182166001600160e01b031990941693909317169190911790555b6001600160a01b0382166000908152601160205260409020546001600160e01b03161580156141fc57506001600160a01b038216600090815260116020526040902054600160e01b900463ffffffff16155b156117ac5760405180604001604052806ec097ce7bc90715b34b9f10000000006001600160e01b03168152602001614235614126611da3565b63ffffffff9081169091526001600160a01b0384166000908152601160209081526040909120835181549490920151909216600160e01b026001600160e01b039182166001600160e01b031990941693909317169190911790555050565b6001600160a01b0382166000908152601160209081526040808320600f90925282205490916142c0611da3565b83549091506000906142e0908390600160e01b900463ffffffff1661554d565b90506000811180156142f25750600083115b156144c1576000614367876001600160a01b03166347bd37186040518163ffffffff1660e01b815260040160206040518083038186803b15801561433557600080fd5b505afa158015614349573d6000803e3d6000fd5b505050506040513d602081101561435f57600080fd5b505187615587565b9050600061437583866155a5565b905061437f615d13565b6000831161439c57604051806020016040528060008152506143a6565b6143a682846155e7565b90506143b0615d13565b604080516020810190915288546001600160e01b031681526143d29083615433565b9050604051806040016040528061442283600001516040518060400160405280601a81526020017f6e657720696e646578206578636565647320323234206269747300000000000081525061561c565b6001600160e01b0316815260200161445d886040518060400160405280601c8152602001600080516020615f388339815191528152506154b3565b63ffffffff9081169091526001600160a01b038c166000908152601160209081526040909120835181549490920151909216600160e01b026001600160e01b039182166001600160e01b0319909416939093171691909117905550611dd792505050565b8015611dd7576144f4826040518060400160405280601c8152602001600080516020615f388339815191528152506154b3565b845463ffffffff91909116600160e01b026001600160e01b03909116178455505050505050565b6001600160a01b038416600090815260116020526040902061453b615d13565b50604080516020810190915281546001600160e01b0316815261455c615d13565b5060408051602080820183526001600160a01b03808a16600090815260138352848120918a16808252828452948120805485528651959091529152919091558051156124a4576145aa615d13565b6145b48383615671565b90506000614643896001600160a01b03166395dd91938a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561461157600080fd5b505afa158015614625573d6000803e3d6000fd5b505050506040513d602081101561463b57600080fd5b505188615587565b905060006146518284615696565b6001600160a01b038a166000908152601460205260408120549192509061467890836156b6565b90506146998a828a6146915766038d7ea4c68000614694565b60005b6156ec565b6001600160a01b03808c1660008181526014602090815260409182902094909455895181518781529485015280519193928f16927fd6b406cfe2d172d0b0dd8d9cf74bc6860d997d8b1fe9210c2a67c6c0e7ab1909929081900390910190a35050505050505050505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa083601181111561473457fe5b83601381111561474057fe5b604080519283526020830191909152600082820152519081900360600190a1826011811115611ed557fe5b519051111590565b5190511090565b6000806000614787615d4a565b6001600160a01b0388166000908152600860209081526040808320805482518185028101850190935280835284936060939291908301828280156147f457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116147d6575b50939450600093505050505b8151811015614b5057600082828151811061481757fe5b60200260200101519050806001600160a01b031663c37f68e28e6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060806040518083038186803b15801561487757600080fd5b505afa15801561488b573d6000803e3d6000fd5b505050506040513d60808110156148a157600080fd5b508051602082015160408084015160609485015160808c0152938a019390935291880191909152945084156148e75750600f975060009650869550611e27945050505050565b60408051602080820183526001600160a01b0380851660008181526009845285902060010154845260c08b01939093528351808301855260808b0151815260e08b015260048054855163fc57d4df60e01b815291820194909452935192169263fc57d4df9260248083019392829003018186803b15801561496757600080fd5b505afa15801561497b573d6000803e3d6000fd5b505050506040513d602081101561499157600080fd5b505160a087018190526149b55750600d975060009650869550611e27945050505050565b604080516020810190915260a08701518152610100870181905260c087015160e08801516149e292615831565b610120880152935060008460038111156149f857fe5b14614a145750600b975060009650869550611e27945050505050565b614a2c86610120015187604001518860000151615889565b875293506000846003811115614a3e57fe5b14614a5a5750600b975060009650869550611e27945050505050565b614a7286610100015187606001518860200151615889565b602088015293506000846003811115614a8757fe5b14614aa35750600b975060009650869550611e27945050505050565b8b6001600160a01b0316816001600160a01b03161415614b4757614ad18661012001518c8860200151615889565b602088015293506000846003811115614ae657fe5b14614b025750600b975060009650869550611e27945050505050565b614b168661010001518b8860200151615889565b602088015293506000846003811115614b2b57fe5b14614b475750600b975060009650869550611e27945050505050565b50600101614800565b50602084015184511115614b77575050506020810151905160009450039150829050611e27565b5050815160209092015160009550859450919091039150611e279050565b6001600160a01b0381166000908152601060209081526040808320600f9092528220549091614bc2611da3565b8354909150600090614be2908390600160e01b900463ffffffff1661554d565b9050600081118015614bf45750600083115b15614dba576000856001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015614c3457600080fd5b505afa158015614c48573d6000803e3d6000fd5b505050506040513d6020811015614c5e57600080fd5b505190506000614c6e83866155a5565b9050614c78615d13565b60008311614c955760405180602001604052806000815250614c9f565b614c9f82846155e7565b9050614ca9615d13565b604080516020810190915288546001600160e01b03168152614ccb9083615433565b90506040518060400160405280614d1b83600001516040518060400160405280601a81526020017f6e657720696e646578206578636565647320323234206269747300000000000081525061561c565b6001600160e01b03168152602001614d56886040518060400160405280601c8152602001600080516020615f388339815191528152506154b3565b63ffffffff9081169091526001600160a01b038b166000908152601060209081526040909120835181549490920151909216600160e01b026001600160e01b039182166001600160e01b031990941693909317169190911790555061160392505050565b801561160357614ded826040518060400160405280601c8152602001600080516020615f388339815191528152506154b3565b845463ffffffff91909116600160e01b026001600160e01b039091161784555050505050565b6001600160a01b0383166000908152601060205260409020614e33615d13565b50604080516020810190915281546001600160e01b03168152614e54615d13565b5060408051602080820183526001600160a01b03808916600090815260128352848120918916808252828452948120805485528651959091529152919091558051158015614ea25750815115155b15614eba576ec097ce7bc90715b34b9f100000000081525b614ec2615d13565b614ecc8383615671565b90506000876001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015614f2657600080fd5b505afa158015614f3a573d6000803e3d6000fd5b505050506040513d6020811015614f5057600080fd5b505190506000614f608284615696565b6001600160a01b03891660009081526014602052604081205491925090614f8790836156b6565b9050614fa089828a6146915766038d7ea4c68000614694565b6001600160a01b03808b1660008181526014602090815260409182902094909455895181518781529485015280519193928e16927f5eb6b4879ea02225dcc4dc71ee9b84292b34fbd1cbaf7a12927c670022d0c12f929081900390910190a350505050505050505050565b600080600061501e84600080600061477a565b9250925092509193909250565b6000806000615038615d13565b61504286866158d6565b9092509050600082600381111561505557fe5b146150665750915060009050615078565b60006150718261593e565b9350935050505b9250929050565b60005b600d5481101561510a57816001600160a01b0316600d82815481106150a357fe5b6000918252602090912001546001600160a01b03161415615102576040805162461bcd60e51b81526020600482015260146024820152731b585c9ad95d08185b1c9958591e48185919195960621b604482015290519081900360640190fd5b600101615082565b50600d80546001810182556000919091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831660009081526009602052604081205460ff16615184576009611eb3565b6001600160a01b038085166000908152600960209081526040808320938716835260029093019052205460ff166151bc576000611eb3565b6000806151cc858786600061477a565b919350909150600090508260118111156151e257fe5b146151fc578160118111156151f357fe5b92505050611ed5565b80156131145760046151f3565b6001600160a01b0382166000908152600960205260408120805460ff1661523457600991505061149e565b6001600160a01b038316600090815260028201602052604090205460ff1615156001141561526657600091505061149e565b6007546001600160a01b0384166000908152600860205260409020541061529157601091505061149e565b6001600160a01b0380841660008181526002840160209081526040808320805460ff19166001908117909155600883528184208054918201815584529282902090920180549489166001600160a01b031990951685179055815193845283019190915280517f3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a59281900390910190a15060009392505050565b6000615334615d13565b61535a60405180602001604052808681525060405180602001604052808681525061594d565b915091509250929050565b600061536f615d13565b8351835161535a9190615a36565b60008083830184811061539557600092509050615078565b506002915060009050615078565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa08460118111156153d257fe5b8460138111156153de57fe5b604080519283526020830191909152818101859052519081900360600190a1836011811115611ed257fe5b615411615d13565b604051806020016040528061542a8560000151856155a5565b90529392505050565b61543b615d13565b604051806020016040528061542a856000015185600001516156b6565b615460615d13565b604051806020016040528061542a6154848660000151670de0b6b3a76400006155a5565b8551615ae6565b6000670de0b6b3a76400006154a48484600001516155a5565b816154ab57fe5b049392505050565b600081600160201b84106155455760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561550a5781810151838201526020016154f2565b50505050905090810190601f1680156155375780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b509192915050565b6000611ed58383604051806040016040528060158152602001747375627472616374696f6e20756e646572666c6f7760581b815250615b19565b6000611ed561559e84670de0b6b3a76400006155a5565b8351615ae6565b6000611ed583836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f77000000000000000000815250615b73565b6155ef615d13565b604051806020016040528061542a615616866ec097ce7bc90715b34b9f10000000006155a5565b85615ae6565b600081600160e01b84106155455760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561550a5781810151838201526020016154f2565b615679615d13565b604051806020016040528061542a8560000151856000015161554d565b60006ec097ce7bc90715b34b9f10000000006154a48484600001516155a5565b6000611ed58383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b815250615bf2565b60008183101580156156fe5750600083115b1561582957600061570d61287f565b604080516370a0823160e01b815230600482015290519192506000916001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561575957600080fd5b505afa15801561576d573d6000803e3d6000fd5b505050506040513d602081101561578357600080fd5b5051905080851161582657816001600160a01b031663a9059cbb87876040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156157ee57600080fd5b505af1158015615802573d6000803e3d6000fd5b505050506040513d602081101561581857600080fd5b5060009350611ed592505050565b50505b509092915050565b600061583b615d13565b6000615845615d13565b61584f878761594d565b9092509050600082600381111561586257fe5b14615871579092509050612ed2565b61587b818661594d565b935093505050935093915050565b6000806000615896615d13565b6158a087876158d6565b909250905060008260038111156158b357fe5b146158c45750915060009050612ed2565b61587b6158d08261593e565b8661537d565b60006158e0615d13565b6000806158f1866000015186615c47565b9092509050600082600381111561590457fe5b1461592357506040805160208101909152600081529092509050615078565b60408051602081019091529081526000969095509350505050565b51670de0b6b3a7640000900490565b6000615957615d13565b60008061596c86600001518660000151615c47565b9092509050600082600381111561597f57fe5b1461599e57506040805160208101909152600081529092509050615078565b6000806159b36706f05b59d3b200008461537d565b909250905060008260038111156159c657fe5b146159e857506040805160208101909152600081529094509250615078915050565b6000806159fd83670de0b6b3a7640000615c86565b90925090506000826003811115615a1057fe5b14615a1757fe5b604080516020810190915290815260009a909950975050505050505050565b6000615a40615d13565b600080615a5586670de0b6b3a7640000615c47565b90925090506000826003811115615a6857fe5b14615a8757506040805160208101909152600081529092509050615078565b600080615a948388615c86565b90925090506000826003811115615aa757fe5b14615ac957506040805160208101909152600081529094509250615078915050565b604080516020810190915290815260009890975095505050505050565b6000611ed583836040518060400160405280600e81526020016d646976696465206279207a65726f60901b815250615cb1565b60008184841115615b6b5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561550a5781810151838201526020016154f2565b505050900390565b6000831580615b80575082155b15615b8d57506000611ed5565b83830283858281615b9a57fe5b04148390615be95760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561550a5781810151838201526020016154f2565b50949350505050565b60008383018285821015615be95760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561550a5781810151838201526020016154f2565b60008083615c5a57506000905080615078565b83830283858281615c6757fe5b0414615c7b57506002915060009050615078565b600092509050615078565b60008082615c9a5750600190506000615078565b6000838581615ca557fe5b04915091509250929050565b60008183615d005760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561550a5781810151838201526020016154f2565b50828481615d0a57fe5b04949350505050565b6040518060200160405280600081525090565b8154818355818111156120d8576000838152602090206120d8918101908301615db4565b604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001615d88615d13565b8152602001615d95615d13565b8152602001615da2615d13565b8152602001615daf615d13565b905290565b611da591905b80821115615dce5760008155600101615dba565b509056fe63616e6e6f742070617573652061206d61726b65742074686174206973206e6f74206c69737465646f6e6c792065787465726e616c6c79206f776e6564206163636f756e7473206d61792072656672657368207370656564736f6e6c7920706175736520677561726469616e20616e642061646d696e2063616e2070617573656f6e6c792061646d696e2063616e2073657420626f72726f772063617020677561726469616e6f6e6c792061646d696e2063616e206164642073617368696d69206d61726b65746f6e6c792061646d696e2063616e206368616e67652073617368696d6920726174656f6e6c792061646d696e2063616e2064726f702073617368696d69206d61726b65746f6e6c792061646d696e206f7220626f72726f772063617020677561726469616e2063616e2073657420626f72726f772063617073657869744d61726b65743a206765744163636f756e74536e617073686f74206661696c6564626c6f636b206e756d62657220657863656564732033322062697473000000006f6e6c7920756e6974726f6c6c65722061646d696e2063616e206368616e676520627261696e73a265627a7a7231582052631536a0e7045de8016607cfb52494caa4a3d04d5b678bc0ceca47adf5406464736f6c63430005100032