2 txs
103 calls
constructor
constructor(address _owner, address _hub, address _deuro, address _collateral, uint256 _minCollateral, uint256 _initialLimit, uint40 _initPeriod, uint40 _duration, uint40 _challengePeriod, uint24 _riskPremiumPPM, uint256 _liqPrice, uint24 _reservePPM)
functions
availableForClones
viewfunction availableForClones() view returns (uint256)
availableForMinting
viewfunction availableForMinting() view returns (uint256)
challengedAmount
viewfunction challengedAmount() view returns (uint256)
challengeData
viewfunction challengeData() view returns (uint256 liqPrice, uint40 phase)
challengePeriod
viewfunction challengePeriod() view returns (uint40)
collateral
viewfunction collateral() view returns (address)
cooldown
viewfunction cooldown() view returns (uint40)
deuro
viewfunction deuro() view returns (address)
expiration
viewfunction expiration() view returns (uint40)
fixedAnnualRatePPM
viewfunction fixedAnnualRatePPM() view returns (uint24)
getCollateralRequirement
viewfunction getCollateralRequirement() view returns (uint256)
getDebt
viewfunction getDebt() view returns (uint256)
getInterest
viewfunction getInterest() view returns (uint256)
getMintAmount
viewfunction getMintAmount(uint256 usableMint) view returns (uint256)
getUsableMint
viewfunction getUsableMint(uint256 mintAmount) view returns (uint256)
hub
viewfunction hub() view returns (address)
interest
viewfunction interest() view returns (uint256)
isClosed
viewfunction isClosed() view returns (bool)
lastAccrual
viewfunction lastAccrual() view returns (uint40)
limit
viewfunction limit() view returns (uint256)
minimumCollateral
viewfunction minimumCollateral() view returns (uint256)
original
viewfunction original() view returns (address)
owner
viewfunction owner() view returns (address)
price
viewfunction price() view returns (uint256)
principal
viewfunction principal() view returns (uint256)
reserveContribution
viewfunction reserveContribution() view returns (uint24)
riskPremiumPPM
viewfunction riskPremiumPPM() view returns (uint24)
start
viewfunction start() view returns (uint40)
virtualPrice
viewfunction virtualPrice() view returns (uint256)
adjust
nonpayablefunction adjust(uint256 newPrincipal, uint256 newCollateral, uint256 newPrice)
adjustPrice
nonpayablefunction adjustPrice(uint256 newPrice)
assertCloneable
nonpayablefunction assertCloneable()
deny
nonpayablefunction deny(address[] helpers, string message)
forceSale
nonpayablefunction forceSale(address buyer, uint256 colAmount, uint256 proceeds)
initialize
nonpayablefunction initialize(address parent, uint40 _expiration)
mint
nonpayablefunction mint(address target, uint256 amount)
notifyChallengeAverted
nonpayablefunction notifyChallengeAverted(uint256 size)
notifyChallengeStarted
nonpayablefunction notifyChallengeStarted(uint256 size, uint256 _price)
notifyChallengeSucceeded
nonpayablefunction notifyChallengeSucceeded(uint256 _size) returns (address, uint256, uint256, uint256, uint32)
notifyMint
nonpayablefunction notifyMint(uint256 mint_)
notifyRepaid
nonpayablefunction notifyRepaid(uint256 repaid_)
renounceOwnership
nonpayablefunction renounceOwnership()
repay
nonpayablefunction repay(uint256 amount) returns (uint256)
repayFull
nonpayablefunction repayFull() returns (uint256)
transferChallengedCollateral
nonpayablefunction transferChallengedCollateral(address target, uint256 amount)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdraw
nonpayablefunction withdraw(address token, address target, uint256 amount)
withdrawCollateral
nonpayablefunction withdrawCollateral(address target, uint256 amount)
events
MintingUpdate
event MintingUpdate(uint256 collateral, uint256 price, uint256 principal)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PositionDenied
event PositionDenied(address indexed sender, string message)
errors
Alive
error Alive()
AlreadyInitialized
error AlreadyInitialized()
Challenged
error Challenged()
ChallengeTooSmall
error ChallengeTooSmall()
Closed
error Closed()
Expired
error Expired(uint40 time, uint40 expiration)
Hot
error Hot()
InsufficientCollateral
error InsufficientCollateral(uint256 needed, uint256 available)
InvalidExpiration
error InvalidExpiration()
LimitExceeded
error LimitExceeded(uint256 tried, uint256 available)
NotHub
error NotHub()
NotOriginal
error NotOriginal()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
PriceTooHigh
error PriceTooHigh(uint256 newPrice, uint256 maxPrice)
RepaidTooMuch
error RepaidTooMuch(uint256 excess)
TooLate
error TooLate()
creation bytecode
0x6101c060405234801561001157600080fd5b50604051613a59380380613a59833981016040819052610030916103d8565b8b6001600160a01b03811661006057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6100698161012f565b503060e0526001600160a01b038b8116610100528a81166101205289166101405262ffffff8084166101805281166101a05261016088905264ffffffffff841660a0526100b686426104c2565b64ffffffffff1660c08190526005805464ffffffffff1916821790556100dd9086906104c2565b6005805464ffffffffff92909216650100000000000264ffffffffff60281b199092169190911790556080879052610115828861017f565b61011e8361022e565b505050505050505050505050610591565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610189610320565b905060c05164ffffffffff1642101580156101b057506001546101ad9060026104e5565b83115b156101e7578260015460026101c591906104e5565b6040516387ebe85d60e01b815260048101929092526024820152604401610057565b6101f9670de0b6b3a7640000836104e5565b61020382856104e5565b111561022757828161021d670de0b6b3a7640000856104e5565b6101c591906104fc565b5050600155565b80610100516001600160a01b031663664e97046040518163ffffffff1660e01b8152600401602060405180830381865afa158015610270573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610294919061051e565b6001600160a01b03166306a7b3766040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f59190610542565b6102ff919061055d565b6005600b6101000a81548162ffffff021916908362ffffff16021790555050565b610140516040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561036a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038e9190610578565b905090565b6001600160a01b03811681146103a857600080fd5b50565b805164ffffffffff811681146103c057600080fd5b919050565b805162ffffff811681146103c057600080fd5b6000806000806000806000806000806000806101808d8f0312156103fb57600080fd5b8c5161040681610393565b60208e0151909c5061041781610393565b60408e0151909b5061042881610393565b60608e0151909a5061043981610393565b60808e015160a08f0151919a509850965061045660c08e016103ab565b955061046460e08e016103ab565b94506104736101008e016103ab565b93506104826101208e016103c5565b6101408e0151909350915061049a6101608e016103c5565b90509295989b509295989b509295989b565b634e487b7160e01b600052601160045260246000fd5b64ffffffffff81811683821601908111156104df576104df6104ac565b92915050565b80820281158282048414176104df576104df6104ac565b60008261051957634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561053057600080fd5b815161053b81610393565b9392505050565b60006020828403121561055457600080fd5b61053b826103c5565b62ffffff81811683821601908111156104df576104df6104ac565b60006020828403121561058a57600080fd5b5051919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516132be61079b600039600081816103b101528181610d85015281816118450152818161188601528181611abc01528181611d1b01528181611fc4015281816120aa0152818161217e015281816127550152612c6a0152600081816104bb015261266f0152600081816105f601528181611a1401528181611e010152612b650152600081816106900152818161156a01528181611beb01528181611d840152611e9401526000818161054f0152818161084801528181610aeb01528181610c3101528181610cf801528181610dac01528181610e280152818161123d01528181611b3b01528181611f2701528181611ff8015281816120d40152818161214d015281816127220152612c3901526000818161035f0152818161099301528181610a2401528181610fa8015281816110a50152818161119701528181611219015281816112f60152818161151c015281816117450152818161198701528181611b17015281816122900152818161231e015261281801526000818161042d01528181610e9301528181610ee801528181611374015281816123c201526126a901526000818161061d015281816108010152612d0b0152600081816106fb0152610f810152600081816105ab01528181610ec201528181611901015261194201526132be6000f3fe608060405234801561001057600080fd5b50600436106102a05760003560e01c8063787a08a611610167578063babe7c74116100ce578063d8dfeb4511610087578063d8dfeb451461068b578063d9caed12146106b2578063e5a4bed3146106c5578063f2fde38b146106cd578063f37c2ecf146106e0578063f3f480d9146106f657600080fd5b8063babe7c74146105f1578063be9a655514610618578063c2b6b58c1461063f578063c392f7661461065c578063c54a89ca14610665578063cfb636f01461067857600080fd5b80639de2f796116101205780639de2f7961461058a578063a035b1fe1461059d578063a4d66daf146105a6578063a8a3e31d146105cd578063b8e2426c146105d5578063ba5d3078146105e857600080fd5b8063787a08a6146104dd5780637b3baab4146104ee5780637ccd4f71146104ff57806382b8eaf51461054a5780638da5cb5b146105715780638ea875f31461058257600080fd5b8063371fd8e61161020b5780635be980f5116101c45780635be980f5146104625780636d4749fa146104755780636f871cec14610488578063715018a61461049b57806372bf079e146104a3578063730d48b7146104b657600080fd5b8063371fd8e6146103995780633a7c29fb146103ac57806340c10f19146103e75780634665096d146103fa57806346c715fa1461042857806349746f101461044f57600080fd5b806324e657fe1161025d57806324e657fe1461030b57806329d93d67146103145780632a37eeae1461031c578063329864aa14610324578063350c35e914610347578063365a86fc1461035a57600080fd5b80630e49d77e146102a557806313a06782146102af57806314a6bf0f146102ca5780631bbea34c146102d25780631dbcff26146102e5578063211d7983146102f8575b600080fd5b6102ad61071d565b005b6102b76107e6565b6040519081526020015b60405180910390f35b6102b76107f5565b6102ad6102e0366004612e13565b6107ff565b6102ad6102f3366004612ecb565b610988565b6102ad610306366004612ef7565b610a19565b6102b760035481565b6102b7610e6d565b6102b7610e87565b61032c610f68565b6040805192835264ffffffffff9091166020830152016102c1565b6102ad610355366004612ecb565b610fa6565b6103817f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102c1565b6102b76103a7366004612f2c565b611054565b6103d37f000000000000000000000000000000000000000000000000000000000000000081565b60405162ffffff90911681526020016102c1565b6102ad6103f5366004612ecb565b6110a3565b60055461041290600160281b900464ffffffffff1681565b60405164ffffffffff90911681526020016102c1565b6103817f000000000000000000000000000000000000000000000000000000000000000081565b6102ad61045d366004612f2c565b61118c565b6102ad610470366004612f2c565b6111fc565b6102ad610483366004612f58565b6112eb565b6102ad610496366004612f91565b611544565b6102ad6116d3565b6102ad6104b1366004612f2c565b6116e5565b6103d37f000000000000000000000000000000000000000000000000000000000000000081565b6005546104129064ffffffffff1681565b6008546104129064ffffffffff1681565b61051261050d366004612f2c565b611734565b604080516001600160a01b039096168652602086019490945292840191909152606083015263ffffffff16608082015260a0016102c1565b6103817f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b0316610381565b6102b7611871565b6102b7610598366004612f2c565b61187e565b6102b760015481565b6102b77f000000000000000000000000000000000000000000000000000000000000000081565b6102b76118b0565b6102ad6105e3366004612fbd565b61197c565b6102b760065481565b6102b77f000000000000000000000000000000000000000000000000000000000000000081565b6104127f000000000000000000000000000000000000000000000000000000000000000081565b600554600160501b900460ff1660405190151581526020016102c1565b6102b760075481565b6102b7610673366004612f2c565b611ab1565b6102ad610686366004612f2c565b611afa565b6103817f000000000000000000000000000000000000000000000000000000000000000081565b6102ad6106c0366004612fdf565b611be1565b6102b7611cc7565b6102ad6106db366004613020565b611cd1565b6005546103d390600160581b900462ffffff1681565b6104127f000000000000000000000000000000000000000000000000000000000000000081565b6003541561073e5760405163d26e2de960e01b815260040160405180910390fd5b60055464ffffffffff16421161076757604051631c02820f60e21b815260040160405180910390fd5b600554600160281b900464ffffffffff1642106107b9576005546040516238ddd760e41b815264ffffffffff4281166004830152600160281b9092049190911660248201526044015b60405180910390fd5b600554600160501b900460ff16156107e457604051631cdde67b60e01b815260040160405180910390fd5b565b60006107f0611d0c565b905090565b60006107f0611d4c565b7f000000000000000000000000000000000000000000000000000000000000000064ffffffffff1642106108465760405163ecdd1c2960e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd3293de6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c8919061303d565b6001600160a01b031663352e3a833386866040518463ffffffff1660e01b81526004016108f79392919061305a565b60006040518083038186803b15801561090f57600080fd5b505afa158015610923573d6000803e3d6000fd5b5050505061093f6005805460ff60501b1916600160501b179055565b336001600160a01b03167faca80c800ec0d2aa9d9d31b7f886a1dd3067d4676abc637626a18ffb9381653d838360405161097a9291906130b8565b60405180910390a250505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109d1576040516313bd2e8360e31b815260040160405180910390fd5b60006109dd8383611d56565b600154600654604080518481526020810193909352820152909150600080516020613269833981519152906060015b60405180910390a1505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a62576040516313bd2e8360e31b815260040160405180910390fd5b600554600160281b900464ffffffffff16421015610a93576040516302de694d60e41b815260040160405180910390fd5b60035415610ab45760405163d26e2de960e01b815260040160405180910390fd5b6000610abe611e46565b600654610acb91906130fd565b90506000610ad98585611d56565b905081600003610be7578215610ba5577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166323b872dd86610b2b6000546001600160a01b031690565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018690526064016020604051808303816000875af1158015610b7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba39190613110565b505b600080516020613269833981519152610bbc611e7c565b6001546006546040805193845260208401929092529082015260600160405180910390a15050505050565b610bf18584611ee3565b9250610bfd8584611fa6565b925080158015610c1c57506000600754600654610c1a91906130fd565b115b15610e20578215610c2f57610c2f613132565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d1fa5e9830600754600654610c6f91906130fd565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015610cb557600080fd5b505af1158015610cc9573d6000803e3d6000fd5b5050505060006007541115610d675760075460405163375edc7760e11b815230600482015260248101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636ebdb8ee90604401600060405180830381600087803b158015610d4457600080fd5b505af1158015610d58573d6000803e3d6000fd5b50505050610d67600754612241565b6006546040516363b20c3360e11b8152600481019190915262ffffff7f00000000000000000000000000000000000000000000000000000000000000001660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c764186690604401600060405180830381600087803b158015610df857600080fd5b505af1158015610e0c573d6000803e3d6000fd5b50505050610e1b600654612395565b610ba5565b8215610ba5577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166323b872dd86610b2b6000546001600160a01b031690565b505050565b60006107f0610e7a611e46565b6006546103a791906130fd565b60006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ee6576002546107f0907f0000000000000000000000000000000000000000000000000000000000000000613148565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a8a3e31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f44573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f0919061315b565b600080610f7e610f76611e7c565b600154612438565b927f000000000000000000000000000000000000000000000000000000000000000092509050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f09e9e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611004573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611028919061303d565b6001600160a01b0316336001600160a01b03161461104857611048612493565b60006109dd83836124c0565b60008061106083612527565b9050600080516020613269833981519152611079611e7c565b6001546006546040805193845260208401929092529082015260600160405180910390a192915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f09e9e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611101573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611125919061303d565b6001600160a01b0316336001600160a01b03161461114557611145612493565b600061114f611e7c565b905061115c838383612565565b60015460065460408051848152602081019390935282015260008051602061326983398151915290606001610a0c565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d5576040516313bd2e8360e31b815260040160405180910390fd5b80600360008282546111e79190613148565b909155506111f99050620151806127d4565b50565b60405163aa5dd7f160e01b81523360048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116917f00000000000000000000000000000000000000000000000000000000000000009091169063aa5dd7f190602401602060405180830381865afa158015611286573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112aa919061303d565b6001600160a01b0316146112d1576040516313bd2e8360e31b815260040160405180910390fd5b80600260008282546112e39190613148565b909155505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611334576040516313bd2e8360e31b815260040160405180910390fd5b600554600160281b900464ffffffffff16156113625760405162dc149f60e41b815260040160405180910390fd5b428164ffffffffff16108061140557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634665096d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f49190613174565b64ffffffffff168164ffffffffff16115b1561142357604051637d9533a960e11b815260040160405180910390fd5b806005806101000a81548164ffffffffff021916908364ffffffffff160217905550816001600160a01b031663a035b1fe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a7919061315b565b600181905550611517826001600160a01b031663730d48b76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115129190613191565b612815565b6115407f0000000000000000000000000000000000000000000000000000000000000000612924565b5050565b61154c612493565b6000611556611e7c565b905080831115611615576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166323b872dd333061159b8588613148565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af11580156115ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116139190613110565b505b60065484101561164d576000611629611e46565b60065461163691906130fd565b905061164a6116458683613148565b612527565b50505b8083101561166a57611668336116638584613148565b6124c0565b505b60065484111561168c5761168c33600654866116869190613148565b85612565565b600154821461169e5761169e82612974565b60408051848152602081018490529081018590526000805160206132698339815191529060600160405180910390a150505050565b6116db612493565b6107e46000612924565b6116ed612493565b6116f681612974565b60008051602061326983398151915261170d611e7c565b6001546006546040805193845260208401929092529082015260600160405180910390a150565b600080808080336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611783576040516313bd2e8360e31b815260040160405180910390fd5b61178b611e46565b50856003600082825461179e9190613148565b90915550600090506117ae611e7c565b9050868110156117bc578096505b600081156117e25781886007546117d391906131b6565b6117dd91906131cd565b6117e5565b60005b90506000821561180d5782896006546117fe91906131b6565b61180891906131cd565b611810565b60005b905061181b82612241565b61182481612395565b6118306203f4806127d4565b6000546001600160a01b0316999097509095507f000000000000000000000000000000000000000000000000000000000000000062ffffff16945092505050565b60006107f0610f76611e7c565b60006118aa827f0000000000000000000000000000000000000000000000000000000000000000612a80565b92915050565b600080670de0b6b3a76400006001546118c7611e7c565b6118d191906131b6565b6118db91906131cd565b9050600081600654116118fa576006546118f59083613148565b6118fd565b60005b90507f00000000000000000000000000000000000000000000000000000000000000008160025461192e91906130fd565b1061193c5760009250505090565b806002547f000000000000000000000000000000000000000000000000000000000000000061196b9190613148565b6119759190613148565b9250505090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146119c5576040516313bd2e8360e31b815260040160405180910390fd5b600554600160281b900464ffffffffff164210611a12576005546040516238ddd760e41b815264ffffffffff4281166004830152600160281b9092049190911660248201526044016107b0565b7f000000000000000000000000000000000000000000000000000000000000000082108015611a475750611a44611e7c565b82105b15611a6557604051633c80636b60e21b815260040160405180910390fd5b81600003611a8657604051633c80636b60e21b815260040160405180910390fd5b600354600003611a965760048190555b8160036000828254611aa891906130fd565b90915550505050565b6000620f4240611ae17f0000000000000000000000000000000000000000000000000000000000000000826131ef565b611af09062ffffff16846131b6565b6118aa91906131cd565b60405163aa5dd7f160e01b81523360048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116917f00000000000000000000000000000000000000000000000000000000000000009091169063aa5dd7f190602401602060405180830381865afa158015611b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba8919061303d565b6001600160a01b031614611bcf576040516313bd2e8360e31b815260040160405180910390fd5b80600260008282546112e391906130fd565b611be9612493565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031603611c2c57610e688282610fa6565b6000611c36611e7c565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529192509085169063a9059cbb906044016020604051808303816000875af1158015611c89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cad9190613110565b50611cb6611e7c565b8114611cc157600080fd5b50505050565b60006107f0612ad6565b611cd9612493565b6001600160a01b038116611d0357604051631e4fbdf760e01b8152600060048201526024016107b0565b6111f981612924565b6000611d3f611d19612ad6565b7f0000000000000000000000000000000000000000000000000000000000000000612a80565b6006546107f091906130fd565b6000611d3f612ad6565b60008115611df35760405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015611dcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df19190613110565b505b6000611dfd611e7c565b90507f0000000000000000000000000000000000000000000000000000000000000000811015611e3f57611e3f6005805460ff60501b1916600160501b179055565b9392505050565b6000611e50612ad6565b9050600754811115611e625760078190555b6008805464ffffffffff19164264ffffffffff1617905590565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610f44573d6000803e3d6000fd5b6000808260075411611ef757600754611ef9565b825b90508015611f9e5760405163375edc7760e11b81526001600160a01b038581166004830152602482018390527f00000000000000000000000000000000000000000000000000000000000000001690636ebdb8ee90604401600060405180830381600087803b158015611f6b57600080fd5b505af1158015611f7f573d6000803e3d6000fd5b50505050611f8c81612241565b611f968184613148565b9150506118aa565b509092915050565b6006546040516302dc1ca760e31b8152600481019190915262ffffff7f000000000000000000000000000000000000000000000000000000000000000016602482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906316e0e53890604401602060405180830381865afa15801561203f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612063919061315b565b90506000816006546120759190613148565b905060008185116120865784612088565b815b9050801561223757604051633824f22960e21b81526004810182905262ffffff7f00000000000000000000000000000000000000000000000000000000000000001660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e093c8a490604401602060405180830381865afa158015612123573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612147919061315b565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663315f3e7289847f00000000000000000000000000000000000000000000000000000000000000006040518463ffffffff1660e01b81526004016121bb9392919061320a565b6020604051808303816000875af11580156121da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fe919061315b565b905061220a8383613148565b811461221857612218613132565b61222182612395565b61222b8388613148565b955050505050506118aa565b5092949350505050565b600754811115612274576007546122589082613148565b604051635795d46960e11b81526004016107b091815260200190565b6040516301ffc9a760e01b8152632464e41b60e21b60048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906301ffc9a790602401602060405180830381865afa1580156122df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123039190613110565b1561238357604051637d0ea02d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637d0ea02d90602401600060405180830381600087803b15801561236a57600080fd5b505af115801561237e573d6000803e3d6000fd5b505050505b80600760008282546112e39190613148565b6006548111156123ac576006546122589082613148565b604051635be980f560e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635be980f590602401600060405180830381600087803b15801561240e57600080fd5b505af1158015612422573d6000803e3d6000fd5b5050505080600660008282546112e39190613148565b6003546000901561244c57506004546118aa565b8260000361245b5750806118aa565b600083670de0b6b3a764000061246f611d0c565b61247991906131b6565b61248391906131cd565b9050828110611f9e579392505050565b6000546001600160a01b031633146107e45760405163118cdaa760e01b81523360048201526024016107b0565b60055460009064ffffffffff1642116124ec57604051631c02820f60e21b815260040160405180910390fd5b6003541561250d5760405163d26e2de960e01b815260040160405180910390fd5b60006125198484611d56565b9050611e3f81600154612b61565b6000612531611e46565b508160000361254257506000919050565b8161254d3382611ee3565b90506125593382612c01565b9050611e3f8184613148565b600354156125865760405163d26e2de960e01b815260040160405180910390fd5b60055464ffffffffff1642116125af57604051631c02820f60e21b815260040160405180910390fd5b600554600160281b900464ffffffffff1642106125fc576005546040516238ddd760e41b815264ffffffffff4281166004830152600160281b9092049190911660248201526044016107b0565b600554600160501b900460ff161561262757604051631cdde67b60e01b815260040160405180910390fd5b61262f610e87565b821115612661578161263f610e87565b604051634779077960e11b8152600481019290925260248201526044016107b0565b612669611e46565b506126937f0000000000000000000000000000000000000000000000000000000000000000612815565b604051630cfb636f60e41b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063cfb636f090602401600060405180830381600087803b1580156126f557600080fd5b505af1158015612709573d6000803e3d6000fd5b505060405163165203b760e31b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063b2901db8915061277d90869086907f00000000000000000000000000000000000000000000000000000000000000009060040161320a565b600060405180830381600087803b15801561279757600080fd5b505af11580156127ab573d6000803e3d6000fd5b5050505081600660008282546127c191906130fd565b92505081905550610e6881600154612b61565b60006127e08242613230565b60055490915064ffffffffff9081169082161115611540576005805464ffffffffff831664ffffffffff199091161790555050565b807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663664e97046040518163ffffffff1660e01b8152600401602060405180830381865afa158015612874573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612898919061303d565b6001600160a01b03166306a7b3766040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f99190613191565b612903919061324d565b6005600b6101000a81548162ffffff021916908362ffffff16021790555050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600354156129955760405163d26e2de960e01b815260040160405180910390fd5b600554600160281b900464ffffffffff1642106129e2576005546040516238ddd760e41b815264ffffffffff4281166004830152600160281b9092049190911660248201526044016107b0565b600554600160501b900460ff1615612a0d57604051631cdde67b60e01b815260040160405180910390fd5b60055464ffffffffff164211612a3657604051631c02820f60e21b815260040160405180910390fd5b600154811115612a5157612a4c6203f4806127d4565b612a62565b612a62612a5c611e7c565b82612b61565b6111f981612a6e610e87565b600654612a7b91906130fd565b612cfd565b60008215612acd57612a9582620f42406131ef565b62ffffff166001612aa985620f42406131b6565b612ab39190613148565b612abd91906131cd565b612ac89060016130fd565b611e3f565b60009392505050565b600754600854429064ffffffffff1681118015612af557506000600654115b15612b5d57600854600090612b119064ffffffffff1683613148565b9050651cae8c13e000816005600b9054906101000a900462ffffff1662ffffff16600654612b3f91906131b6565b612b4991906131b6565b612b5391906131cd565b61197590846130fd565b5090565b60007f00000000000000000000000000000000000000000000000000000000000000008310612b905782612b93565b60005b90506000612b9f611d0c565b9050612bb3670de0b6b3a7640000826131b6565b612bbd84846131b6565b1015611cc157612bcd83836131b6565b612bdf670de0b6b3a7640000836131b6565b604051632c1f8ef160e21b8152600481019290925260248201526044016107b0565b6000808260065411612c1557600654612c17565b825b90508015611f9e576040516318af9f3960e11b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063315f3e7290612c9290889086907f00000000000000000000000000000000000000000000000000000000000000009060040161320a565b6020604051808303816000875af1158015612cb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd5919061315b565b9050612ce082612395565b612cea8183613148565b612cf49085613148565b925050506118aa565b6000612d07611e7c565b90507f000000000000000000000000000000000000000000000000000000000000000064ffffffffff164210158015612d4c5750600154612d499060026131b6565b83115b15612d8357826001546002612d6191906131b6565b6040516387ebe85d60e01b8152600481019290925260248201526044016107b0565b612d95670de0b6b3a7640000836131b6565b612d9f82856131b6565b1115612dc3578281612db9670de0b6b3a7640000856131b6565b612d6191906131cd565b5050600155565b60008083601f840112612ddc57600080fd5b50813567ffffffffffffffff811115612df457600080fd5b602083019150836020828501011115612e0c57600080fd5b9250929050565b60008060008060408587031215612e2957600080fd5b843567ffffffffffffffff811115612e4057600080fd5b8501601f81018713612e5157600080fd5b803567ffffffffffffffff811115612e6857600080fd5b8760208260051b8401011115612e7d57600080fd5b60209182019550935085013567ffffffffffffffff811115612e9e57600080fd5b612eaa87828801612dca565b95989497509550505050565b6001600160a01b03811681146111f957600080fd5b60008060408385031215612ede57600080fd5b8235612ee981612eb6565b946020939093013593505050565b600080600060608486031215612f0c57600080fd5b8335612f1781612eb6565b95602085013595506040909401359392505050565b600060208284031215612f3e57600080fd5b5035919050565b64ffffffffff811681146111f957600080fd5b60008060408385031215612f6b57600080fd5b8235612f7681612eb6565b91506020830135612f8681612f45565b809150509250929050565b600080600060608486031215612fa657600080fd5b505081359360208301359350604090920135919050565b60008060408385031215612fd057600080fd5b50508035926020909101359150565b600080600060608486031215612ff457600080fd5b8335612fff81612eb6565b9250602084013561300f81612eb6565b929592945050506040919091013590565b60006020828403121561303257600080fd5b8135611e3f81612eb6565b60006020828403121561304f57600080fd5b8151611e3f81612eb6565b6001600160a01b0384168152604060208201819052810182905260008360608301825b858110156130ad57823561309081612eb6565b6001600160a01b031682526020928301929091019060010161307d565b509695505050505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156118aa576118aa6130e7565b60006020828403121561312257600080fd5b81518015158114611e3f57600080fd5b634e487b7160e01b600052600160045260246000fd5b818103818111156118aa576118aa6130e7565b60006020828403121561316d57600080fd5b5051919050565b60006020828403121561318657600080fd5b8151611e3f81612f45565b6000602082840312156131a357600080fd5b815162ffffff81168114611e3f57600080fd5b80820281158282048414176118aa576118aa6130e7565b6000826131ea57634e487b7160e01b600052601260045260246000fd5b500490565b62ffffff82811682821603908111156118aa576118aa6130e7565b6001600160a01b03939093168352602083019190915262ffffff16604082015260600190565b64ffffffffff81811683821601908111156118aa576118aa6130e7565b62ffffff81811683821601908111156118aa576118aa6130e756fe9483a26ad376f30b5199a79e75df3bb05158c4ee32a348f53e83245a5e50c86ea26469706673582212209a1975e04fb13fc1ca52e414c56b5c239b9ac598c02c1ac429d1dfc9e289acd464736f6c634300081a003300000000000000000000000001ae4c18c2677f97bab536c48d6c36858f5c86d70000000000000000000000008b3c41c649b9c7085c171cbb82337889b3604618000000000000000000000000ba3f535bbcccca2a154b573ca6c5a49baae0a3ea000000000000000000000000103747924e74708139a9400e4ab4bea79fffa380000000000000000000000000000000000000000000000a968163f0a57b40000000000000000000000000000000000000000000000000d3c21bcecceda1000000000000000000000000000000000000000000000000000000000000000003f4800000000000000000000000000000000000000000000000000000000000ed4e00000000000000000000000000000000000000000000000000000000000002a30000000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000016345785d8a00000000000000000000000000000000000000000000000000000000000000030d40