0 txs
774 calls
constructor
constructor(address registry)
functions
ASSET_TYPE
viewfunction ASSET_TYPE() view returns (uint256)
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
baseURI
viewfunction baseURI() view returns (string)
feesOf
viewfunction feesOf(uint256 positionId) view returns (uint256 fee0Position, uint256 fee1Position)
getApproved
viewfunction getApproved(uint256) view returns (address)
getRiskFactors
viewfunction getRiskFactors(address creditor, address asset, uint256 assetId) view returns (uint16 collateralFactor, uint16 liquidationFactor)
getValue
viewfunction getValue(address creditor, address asset, uint256 assetId, uint256 assetAmount) view returns (uint256 valueInUsd, uint256 collateralFactor, uint256 liquidationFactor)
inAssetModule
viewfunction inAssetModule(address) view returns (bool)
isAllowed
viewfunction isAllowed(address asset, uint256 assetId) view returns (bool allowed)
isApprovedForAll
viewfunction isApprovedForAll(address, address) view returns (bool)
lastExposureAssetToUnderlyingAsset
viewfunction lastExposureAssetToUnderlyingAsset(address creditor, bytes32 assetKey, bytes32 underlyingAssetKey) view returns (uint256 exposure)
lastExposuresAsset
viewfunction lastExposuresAsset(address creditor, bytes32 assetKey) view returns (uint112 lastExposureAsset, uint112 lastUsdExposureAsset)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 id) view returns (address owner)
poolState
viewfunction poolState(address pool) view returns (uint128 fee0PerLiquidity, uint128 fee1PerLiquidity, uint128 totalWrapped)
positionState
viewfunction positionState(uint256 position) view returns (uint128 fee0PerLiquidity, uint128 fee1PerLiquidity, uint128 fee0, uint128 fee1, uint128 amountWrapped, address pool)
REGISTRY
viewfunction REGISTRY() view returns (address)
riskParams
viewfunction riskParams(address creditor) view returns (uint112 lastUsdExposureProtocol, uint112 maxUsdExposureProtocol, uint16 riskFactor)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
token0
viewfunction token0(address pool) view returns (address token0)
token1
viewfunction token1(address pool) view returns (address token1)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string uri)
totalWrapped
viewfunction totalWrapped(address pool) view returns (uint256 totalWrapped_)
addAsset
nonpayablefunction addAsset(address pool)
approve
nonpayablefunction approve(address spender, uint256 id)
burn
nonpayablefunction burn(uint256 positionId) returns (uint256 fee0Position, uint256 fee1Position)
claimFees
nonpayablefunction claimFees(uint256 positionId) returns (uint256 fee0Position, uint256 fee1Position)
decreaseLiquidity
nonpayablefunction decreaseLiquidity(uint256 positionId, uint128 amount) returns (uint256 fee0Position, uint256 fee1Position)
increaseLiquidity
nonpayablefunction increaseLiquidity(uint256 positionId, uint128 amount)
initialize
nonpayablefunction initialize()
mint
nonpayablefunction mint(address pool, uint128 amount) returns (uint256 positionId)
processDirectDeposit
nonpayablefunction processDirectDeposit(address creditor, address asset, uint256 assetId, uint256 amount) returns (uint256 recursiveCalls)
processDirectWithdrawal
nonpayablefunction processDirectWithdrawal(address creditor, address asset, uint256 assetId, uint256 amount)
processIndirectDeposit
nonpayablefunction processIndirectDeposit(address creditor, address asset, uint256 assetId, uint256 exposureUpperAssetToAsset, int256 deltaExposureUpperAssetToAsset) returns (uint256 recursiveCalls, uint256 usdExposureUpperAssetToAsset)
processIndirectWithdrawal
nonpayablefunction processIndirectWithdrawal(address creditor, address asset, uint256 assetId, uint256 exposureUpperAssetToAsset, int256 deltaExposureUpperAssetToAsset) returns (uint256 usdExposureUpperAssetToAsset)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 id, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 id)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setBaseURI
nonpayablefunction setBaseURI(string newBaseURI)
setRiskParameters
nonpayablefunction setRiskParameters(address creditor, uint112 maxUsdExposureProtocol_, uint16 riskFactor)
skim
nonpayablefunction skim(address pool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 id)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 indexed id)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
FeesPaid
event FeesPaid(uint256 indexed positionId, uint128 fee0, uint128 fee1)
LiquidityDecreased
event LiquidityDecreased(uint256 indexed positionId, address indexed pool, uint128 amount)
LiquidityIncreased
event LiquidityIncreased(uint256 indexed positionId, address indexed pool, uint128 amount)
OwnershipTransferred
event OwnershipTransferred(address indexed user, address indexed newOwner)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed id)
errors
ExposureNotInLimits
error ExposureNotInLimits()
NotOwner
error NotOwner()
OnlyRegistry
error OnlyRegistry()
Overflow
error Overflow()
PoolNotAllowed
error PoolNotAllowed()
RiskFactorNotInLimits
error RiskFactorNotInLimits()
ZeroAmount
error ZeroAmount()
creation bytecode
0x60c06040526001600b5534801562000015575f80fd5b5060405162004b2138038062004b218339810160408190526200003891620000f4565b60405180606001604052806023815260200162004afe602391396040805180820182526007815266061574145524f560cc1b60208201525f80546001600160a01b03191633908117825592519192859260029284928492909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b0390911660a0526080525060059050620000db8382620001c1565b506006620000ea8282620001c1565b505050506200028d565b5f6020828403121562000105575f80fd5b81516001600160a01b03811681146200011c575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200014c57607f821691505b6020821081036200016b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620001bc57805f5260205f20601f840160051c81016020851015620001985750805b601f840160051c820191505b81811015620001b9575f8155600101620001a4565b50505b505050565b81516001600160401b03811115620001dd57620001dd62000123565b620001f581620001ee845462000137565b8462000171565b602080601f8311600181146200022b575f8415620002135750858301515b5f19600386901b1c1916600185901b17855562000285565b5f85815260208120601f198616915b828110156200025b578886015182559484019460019091019084016200023a565b50858210156200027957878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b60805160a051614802620002fc5f395f81816102bc015281816108ee01528181610d7e01528181610e820152818161110f015281816114ab0152818161160a01528181611e4a0152818161288201528181613079015261346901525f81816106f101526115d301526148025ff3fe608060405234801561000f575f80fd5b5060043610610276575f3560e01c80636c0360eb1161015657806399d7b594116100ca578063be29184f11610084578063be29184f14610806578063c87b56dd14610819578063e985e9c51461082c578063f2fde38b14610859578063f8350ed01461086c578063f9b6dd111461087f575f80fd5b806399d7b59414610794578063a22cb465146107a7578063ac68a748146107ba578063b88d4fde146107cd578063ba9270ff146107e0578063bc25cf77146107f3575f80fd5b806382d6b1661161011b57806382d6b166146105e757806384b2fc50146106455780638815eb39146106ec5780638da5cb5b1461071357806395d89b411461072557806399cd120f1461072d575f80fd5b80636c0360eb1461058957806370a082311461059157806373aecb98146105a457806376bf39a3146105b75780638129fc1c146105df575f80fd5b806323b872dd116101ed57806342842e0e116101b257806342842e0e146104a457806342966c68146104b757806349bccc5d146104ca57806353b85a50146104f857806355f804b3146105635780636352211e14610576575f80fd5b806323b872dd146103f2578063298410e51461040557806337823795146104185780633a8fe5e7146104405780634231373714610470575f80fd5b8063095ea7b31161023e578063095ea7b314610333578063128f5ad51461034657806315ed93bc14610359578063172350931461037b5780631ba0408c1461039c5780632341eb86146103ca575f80fd5b806301ffc9a71461027a578063024874c7146102a257806306433b1b146102b757806306fdde03146102f6578063081812fc1461030b575b5f80fd5b61028d610288366004613d99565b610892565b60405190151581526020015b60405180910390f35b6102b56102b0366004613dcf565b6108e3565b005b6102de7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610299565b6102fe610965565b6040516102999190613e34565b6102de610319366004613e66565b60096020525f90815260409020546001600160a01b031681565b6102b5610341366004613e7d565b6109f1565b6102b5610354366004613ebd565b610ad5565b61028d610367366004613ee7565b60016020525f908152604090205460ff1681565b61038e610389366004613f02565b610d72565b604051908152602001610299565b6103af6103aa366004613f4f565b610e19565b6040805161ffff938416815292909116602083015201610299565b6103dd6103d8366004613f02565b610e75565b60408051928352602083019190915201610299565b6102b5610400366004613f4f565b610f28565b6102b5610413366004613ee7565b6110ea565b6102de610426366004613ee7565b600f6020525f90815260409020546001600160a01b031681565b61038e61044e366004613f8d565b600460209081525f938452604080852082529284528284209052825290205481565b61038e61047e366004613ee7565b6001600160a01b03165f908152601060205260409020600101546001600160801b031690565b6102b56104b2366004613f4f565b611241565b6103dd6104c5366004613e66565b611312565b6104dd6104d8366004613dcf565b611342565b60408051938452602084019290925290820152606001610299565b610539610506366004613ee7565b60026020525f90815260409020546001600160701b0380821691600160701b810490911690600160e01b900461ffff1683565b604080516001600160701b03948516815293909216602084015261ffff1690820152606001610299565b6102b5610571366004614004565b6113a6565b6102de610584366004613e66565b6113dc565b6102fe611432565b61038e61059f366004613ee7565b61143f565b6102b56105b2366004614043565b6114a0565b6102de6105c5366004613ee7565b600e6020525f90815260409020546001600160a01b031681565b6102b5611573565b6106256105f5366004613e7d565b600360209081525f92835260408084209091529082529020546001600160701b0380821691600160701b90041682565b604080516001600160701b03938416815292909116602083015201610299565b6106a1610653366004613e66565b60116020525f908152604090208054600182015460028301546003909301546001600160801b0380841694600160801b9485900482169484831694048216929116906001600160a01b031686565b604080516001600160801b039788168152958716602087015293861693850193909352908416606084015290921660808201526001600160a01b0390911660a082015260c001610299565b61038e7f000000000000000000000000000000000000000000000000000000000000000081565b5f546102de906001600160a01b031681565b6102fe611663565b61076a61073b366004613ee7565b60106020525f9081526040902080546001909101546001600160801b0380831692600160801b90048116911683565b604080516001600160801b0394851681529284166020840152921691810191909152606001610299565b6103dd6107a2366004613ebd565b611670565b6102b56107b53660046140a9565b611a66565b6103dd6107c8366004613e66565b611ad1565b6102b56107db3660046140e0565b611d7c565b61038e6107ee366004613dcf565b611e3e565b6102b5610801366004613ee7565b611ec1565b61038e61081436600461414e565b6120a7565b6102fe610827366004613e66565b61245a565b61028d61083a366004614178565b600a60209081525f928352604080842090915290825290205460ff1681565b6102b5610867366004613ee7565b6124b6565b61028d61087a366004613e7d565b612529565b6103dd61088d366004613e66565b612552565b5f6301ffc9a760e01b6001600160e01b0319831614806108c257506380ac58cd60e01b6001600160e01b03198316145b806108dd5750635b5e139f60e01b6001600160e01b03198316145b92915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461092c576040516310f5403960e31b815260040160405180910390fd5b5f610939848460a01b1790565b90505f61094f868361094a866141b8565b61263e565b905061095c86838361272f565b50505050505050565b60058054610972906141d2565b80601f016020809104026020016040519081016040528092919081815260200182805461099e906141d2565b80156109e95780601f106109c0576101008083540402835291602001916109e9565b820191905f5260205f20905b8154815290600101906020018083116109cc57829003601f168201915b505050505081565b5f818152600760205260409020546001600160a01b031633811480610a3857506001600160a01b0381165f908152600a6020908152604080832033845290915290205460ff165b610a7a5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b5f8281526009602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600b54600114610af75760405162461bcd60e51b8152600401610a719061420a565b6002600b556001600160801b0381165f03610b2557604051631f2a200560e01b815260040160405180910390fd5b5f828152600760205260409020546001600160a01b03163314610b5b576040516330cd747160e01b815260040160405180910390fd5b5f828152601160209081526040808320815160c08101835281546001600160801b038082168352600160801b918290048116838701526001808501548083168588015283900482166060808601919091526002860154831660808601526003909501546001600160a01b031660a085018190528089526010885297869020865195860187528054808416875293909304821696850196909652940154841692820192909252909291610c14908390339030908816612a33565b5f80610c1f84612ac4565b91509150610c2f83868484612b30565b6040820151909650909350610c4590879061422e565b6001600160801b031660408401526080850151610c6390879061422e565b6001600160801b03908116608087019081525f8981526011602090815260408083208a51838c0151908716600160801b9188168202178255828c015160608d015190881690881682021760018084019190915595516002830180546001600160801b0319908116928a1692909217905560a08d0151600390930180546001600160a01b0319166001600160a01b03948516179055918b1680865260108552948390208a518b860151908916908916909202919091178155898301519501805490911694861694909417909355915192891683529189917f9abd1d094136705ff411635c87833da6ef00260fd3d48f682c51af12d819cb8a910160405180910390a350506001600b555050505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610dbc576040516310f5403960e31b815260040160405180910390fd5b5f610dc9868660a01b1790565b90505f610dd788838661263e565b90505f610de589848461272f565b9050811580610df2575080155b15610dff575f9350610e0d565b610e0a818784612d02565b93505b50505095945050505050565b5f805f610e28858560a01b1790565b90505f610e3482612d1d565b90506060610e458884600185612e05565b5090505f610e538984612eef565b90505f80610e628b8585613100565b909d909c509a5050505050505050505050565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ec0576040516310f5403960e31b815260040160405180910390fd5b5f610ecd878760a01b1790565b90505f610edb89838761263e565b90505f80610eea838c8661332e565b91509150825f1480610efa575080155b15610f07575f9450610f15565b610f12818985612d02565b94505b5060010199929850919650505050505050565b5f818152600760205260409020546001600160a01b03848116911614610f7d5760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b6044820152606401610a71565b6001600160a01b038216610fc75760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610a71565b336001600160a01b038416148061100057506001600160a01b0383165f908152600a6020908152604080832033845290915290205460ff165b8061102057505f818152600960205260409020546001600160a01b031633145b61105d5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610a71565b6001600160a01b038084165f81815260086020908152604080832080545f19019055938616808352848320805460010190558583526007825284832080546001600160a01b03199081168317909155600990925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b604051630f8350ed60e41b81526001600160a01b0382811660048301525f60248301527f0000000000000000000000000000000000000000000000000000000000000000169063f8350ed090604401602060405180830381865afa158015611154573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111789190614255565b6111955760405163f31017e560e01b815260040160405180910390fd5b5f80826001600160a01b0316639d63848a6040518163ffffffff1660e01b81526004016040805180830381865afa1580156111d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111f69190614270565b6001600160a01b039485165f908152600e6020908152604080832080549589166001600160a01b0319968716179055600f909152902080549590911694909116939093179092555050565b61124c838383610f28565b6001600160a01b0382163b15806112f15750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401525f608484015290919084169063150b7a029060a4016020604051808303815f875af11580156112c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e5919061429d565b6001600160e01b031916145b61130d5760405162461bcd60e51b8152600401610a71906142b8565b505050565b5f8181526011602052604081206002015481906113399084906001600160801b0316611670565b91509150915091565b5f805f80611352878760a01b1790565b90505f61135e82612d1d565b90505f8061136e8b858a86612e05565b9150915080515f03611387576113848b84612eef565b90505b6113928b8383613100565b919d909c50909a5098505050505050505050565b5f546001600160a01b031633146113cf5760405162461bcd60e51b8152600401610a71906142e2565b600d61130d828483614360565b5f818152600760205260409020546001600160a01b03168061142d5760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610a71565b919050565b600d8054610972906141d2565b5f6001600160a01b0382166114855760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610a71565b506001600160a01b03165f9081526008602052604090205490565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114e9576040516310f5403960e31b815260040160405180910390fd5b6127108161ffff16111561151057604051630b1c8e2560e01b815260040160405180910390fd5b6001600160a01b039092165f908152600260205260409020805461ffff909316600160e01b0261ffff60e01b196001600160701b03909316600160701b02929092166fffffffffffffffffffffffffffffffff60701b1990931692909217179055565b5f546001600160a01b0316331461159c5760405162461bcd60e51b8152600401610a71906142e2565b305f81815260016020819052604091829020805460ff191690911790555163f1751c7b60e01b81526bffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260248101919091526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f1751c7b906044015f604051808303815f87803b15801561164b575f80fd5b505af115801561165d573d5f803e3d5ffd5b50505050565b60068054610972906141d2565b5f80600b546001146116945760405162461bcd60e51b8152600401610a719061420a565b6002600b556001600160801b0383165f036116c257604051631f2a200560e01b815260040160405180910390fd5b5f848152600760205260409020546001600160a01b031633146116f8576040516330cd747160e01b815260040160405180910390fd5b5f848152601160209081526040808320815160c08101835281546001600160801b038082168352600160801b918290048116838701526001808501548083168588015283900482166060808601919091526002860154831660808601526003909501546001600160a01b031660a0850181905280895260108852868920875196870188528054808516885294909404831697860197909752919091015416928201929092529092806117a984612ac4565b915091506117b983868484612b30565b60408201519096509093506117cf90899061441a565b6001600160801b0316604084015260808501516117ed90899061441a565b6001600160801b03908116608087018190526040870180516060890180515f93849052929052831699509091169650156118b3575f898152601160209081526040918290208751918801516001600160801b03928316600160801b918416820217825592880151606089015190831690831690930292909217600183015560808701516002830180546001600160801b0319169190921617905560a0860151600390910180546001600160a01b0319166001600160a01b039092169190911790556118f7565b5f89815260116020526040812081815560018101919091556002810180546001600160801b031916905560030180546001600160a01b03191690556118f789613666565b6001600160a01b0384165f908152601060209081526040918290208551918601516001600160801b03928316600160801b9184169190910217815591850151600190920180546001600160801b03191692909116919091179055861561197c576001600160a01b038085165f908152600e602052604090205461197c91163389613730565b85156119a7576001600160a01b038085165f908152600f60205260409020546119a791163388613730565b604080516001600160801b03808a168252881660208201528a917fbbd94b67c364adaeeea1d91359b04eec81873ac4c5b6fa49c6fe0e8bb47e869e910160405180910390a2611a096001600160a01b038516336001600160801b038b16613730565b6040516001600160801b03891681526001600160a01b038516908a907febb4af0f9fd35b0598266926c9d1ccb8f8d96944d09acdb5ff6c7c10c3eaa79b9060200160405180910390a350505050506001600b819055509250929050565b335f818152600a602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b5f80600b54600114611af55760405162461bcd60e51b8152600401610a719061420a565b6002600b555f838152600760205260409020546001600160a01b03163314611b30576040516330cd747160e01b815260040160405180910390fd5b5f838152601160209081526040808320815160c08101835281546001600160801b038082168352600160801b918290048116838701526001808501548083168588015283900482166060808601919091526002860154831660808601526003909501546001600160a01b031660a085018190528089526010885286892087519687018852805480851688529490940483169786019790975291909101541692820192909252909280611be184612ac4565b91509150611bf183868484612b30565b604081810180516060840180515f8085528083528f8152601160209081528682208851828a01516001600160801b03918216600160801b91831682021783559751955195811695811688029590951760018083019190915560808a01516002830180546001600160801b031990811692891692909217905560a08b0151600390930180546001600160a01b0319166001600160a01b03948516179055918f16845260108352928890208a51928b015192861692861690970291909117865595880151940180549095169382169390931790935582169a50169750955092508615611cfa576001600160a01b038085165f908152600e6020526040902054611cfa91163389613730565b8515611d25576001600160a01b038085165f908152600f6020526040902054611d2591163388613730565b604080516001600160801b03808a1682528816602082015289917fbbd94b67c364adaeeea1d91359b04eec81873ac4c5b6fa49c6fe0e8bb47e869e910160405180910390a250505050506001600b81905550915091565b611d87858585610f28565b6001600160a01b0384163b1580611e1b5750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a0290611dcf9033908a9089908990899060040161443a565b6020604051808303815f875af1158015611deb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e0f919061429d565b6001600160e01b031916145b611e375760405162461bcd60e51b8152600401610a71906142b8565b5050505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611e88576040516310f5403960e31b815260040160405180910390fd5b5f611e95858560a01b1790565b90505f611ea387838661263e565b90505f611eb182898561332e565b5060010198975050505050505050565b5f546001600160a01b03163314611eea5760405162461bcd60e51b8152600401610a71906142e2565b600b54600114611f0c5760405162461bcd60e51b8152600401610a719061420a565b6002600b556001600160a01b038181165f908152600e602052604090205416611f485760405163f31017e560e01b815260040160405180910390fd5b5f80611f5383612ac4565b6001600160a01b0385165f90815260106020908152604091829020825160608101845281546001600160801b038082168352600160801b909104811693820193909352600190910154909116918101919091529193509150611fb3613d4d565b611fbf82828686612b30565b506001600160a01b0386165f8181526010602090815260408083208551928601516001600160801b03938416600160801b9185169190910217815585820151600190910180546001600160801b03191691909316908117909255516370a0823160e01b815230600482015293955090929091906370a0823190602401602060405180830381865afa158015612056573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061207a919061448c565b61208491906144a3565b905061209a6001600160a01b0387163383613730565b50506001600b5550505050565b5f600b546001146120ca5760405162461bcd60e51b8152600401610a719061420a565b6002600b556001600160801b0382165f036120f857604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038381165f908152600e60205260409020541661212f5760405163f31017e560e01b815260040160405180910390fd5b61214d6001600160a01b03841633306001600160801b038616612a33565b6001600160a01b0383165f90815260106020908152604091829020825160608101845281546001600160801b038082168352600160801b909104811693820193909352600190910154909116918101919091526121a8613d4d565b6001600160a01b03851660a08201525f806121c287612ac4565b915091506121d284848484612b30565b604082015191955093506121e790879061422e565b84604001906001600160801b031690816001600160801b0316815250508583608001906001600160801b031690816001600160801b031681525050600c5f815460010191905081905594508260115f8781526020019081526020015f205f820151815f015f6101000a8154816001600160801b0302191690836001600160801b031602179055506020820151815f0160106101000a8154816001600160801b0302191690836001600160801b031602179055506040820151816001015f6101000a8154816001600160801b0302191690836001600160801b0316021790555060608201518160010160106101000a8154816001600160801b0302191690836001600160801b031602179055506080820151816002015f6101000a8154816001600160801b0302191690836001600160801b0316021790555060a0820151816003015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055509050508360105f896001600160a01b03166001600160a01b031681526020019081526020015f205f820151815f015f6101000a8154816001600160801b0302191690836001600160801b031602179055506020820151815f0160106101000a8154816001600160801b0302191690836001600160801b031602179055506040820151816001015f6101000a8154816001600160801b0302191690836001600160801b0316021790555090505061240133866137ad565b6040516001600160801b03871681526001600160a01b0388169086907f9abd1d094136705ff411635c87833da6ef00260fd3d48f682c51af12d819cb8a9060200160405180910390a350506001600b5550909392505050565b60605f600d805461246a906141d2565b9050116124855760405180602001604052805f8152506108dd565b600d61249083613879565b6040516020016124a19291906144b6565b60405160208183030381529060405292915050565b5f546001600160a01b031633146124df5760405162461bcd60e51b8152600401610a71906142e2565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f6001600160a01b038316301480156125445750600c548211155b156108dd5750600192915050565b5f818152601160209081526040808320815160c08101835281546001600160801b038082168352600160801b918290048116838701526001808501548083168588015283900482166060808601919091526002860154831660808601526003909501546001600160a01b031660a0850181815290895260108852868920875196870188528054808516885294909404831697860197909752919091015416928201929092529151839290839081906126099061397e565b9150915061261983858484612b30565b60408101516060909101516001600160801b039182169a911698509650505050505050565b5f80821315612685576001600160a01b0384165f90815260036020908152604080832086845290915290205461267e9083906001600160701b0316614539565b90506126dd565b6001600160a01b0384165f9081526003602090815260408083208684529091529020546001600160701b03166126ba836141b8565b81116126c6575f6126d9565b6126cf836141b8565b6126d990826144a3565b9150505b6126e681613c20565b6001600160a01b03949094165f9081526003602090815260408083209583529490529290922080546001600160701b0319166001600160701b0390941693909317909255919050565b5f8061273a84612d1d565b90505f61274986868685612e05565b5090505f805f805b8551811015612964576001600160a01b038a165f9081526004602090815260408083208c8452909152812087519091908890849081106127935761279361454c565b602002602001015181526020019081526020015f20548582815181106127bb576127bb61454c565b60200260200101516127cd9190614560565b93508481815181106127e1576127e161454c565b602002602001015160045f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8b81526020019081526020015f205f88848151811061282e5761282e61454c565b602002602001015181526020019081526020015f208190555061287886828151811061285c5761285c61454c565b60200260200101516001600160a01b0381169160a09190911c90565b80935081945050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631e3b06628b85858986815181106128c4576128c461454c565b60209081029190910101516040516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152604483015260648201526084810187905260a4016020604051808303815f875af115801561292c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612950919061448c565b61295a9088614539565b9650600101612751565b506001600160a01b0389165f8181526003602090815260408083208c8452825280832080546001600160701b038c8116600160701b908102600160701b600160e01b0319841617909355958552600290935290832054910483169216908289106129d3575081880381016129e4565b8883038211156129e4575087820381035b6129ed81613c20565b6001600160a01b039c909c165f90815260026020526040902080546001600160701b0319166001600160701b03909d169c909c17909b5550959998505050505050505050565b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f511416171691505080611e375760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610a71565b5f80826001600160a01b031663d294f0936040518163ffffffff1660e01b815260040160408051808303815f875af1158015612b02573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b26919061457f565b9094909350915050565b604080516060810182525f8082526020820181905291810191909152612b54613d4d565b60408601516001600160801b031615612cd8575f612b92670de0b6b3a764000088604001516001600160801b031687612d029092919063ffffffff16565b90505f612bbf670de0b6b3a764000089604001516001600160801b031687612d029092919063ffffffff16565b9050612bca82613c34565b8851016001600160801b03168852612be181613c34565b6020890180516001600160801b0392018216905260808801511615612cd557865f0151885f0151036001600160801b0316915086602001518860200151036001600160801b031690505f80670de0b6b3a764000089608001516001600160801b0316850281612c5257612c526145a1565b049150670de0b6b3a764000089608001516001600160801b0316840281612c7b57612c7b6145a1565b049050612c9f828a604001516001600160801b0316612c9a9190614539565b613c34565b6001600160801b0390811660408b015260608a0151612cc491612c9a91849116614539565b6001600160801b031660608a015250505b50505b505083516001600160801b0390811684526020808601519091169084015283835b94509492505050565b5f825f190484118302158202612d16575f80fd5b5091020490565b60a081901c5f81815260116020908152604091829020600390810154835182815260808101909452606094936001600160a01b03909116929091908201858036833701905050925080835f81518110612d7857612d7861454c565b6020908102919091018101919091526001600160a01b038281165f908152600e9092526040909120541683600181518110612db557612db561454c565b6020908102919091018101919091526001600160a01b038281165f908152600f9092526040909120541683600281518110612df257612df261454c565b6020026020010181815250505050919050565b606080835f03612e3557604080516003808252608082019092529060208201606080368337019050509150612cf9565b60a085901c5f80612e4583612552565b60408051600380825260808201909252929450909250602082016060803683375050505f8481526011602052604081206002015482519297506001600160801b031691879190612e9757612e9761454c565b6020026020010181815250508185600181518110612eb757612eb761454c565b6020026020010181815250508085600281518110612ed757612ed761454c565b60200260200101818152505050505094509492505050565b80516060905f8167ffffffffffffffff811115612f0e57612f0e614308565b604051908082528060200260200182016040528015612f37578160200160208202803683370190505b5090505f8267ffffffffffffffff811115612f5457612f54614308565b604051908082528060200260200182016040528015612f7d578160200160208202803683370190505b5090505f8367ffffffffffffffff811115612f9a57612f9a614308565b604051908082528060200260200182016040528015612fc3578160200160208202803683370190505b5090505f5b8481101561306157612fe587828151811061285c5761285c61454c565b858381518110612ff757612ff761454c565b602002602001018584815181106130105761301061454c565b6020026020010182815250826001600160a01b03166001600160a01b03168152505050670de0b6b3a764000082828151811061304e5761304e61454c565b6020908102919091010152600101612fc8565b5060405163cbdcbc3b60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbdcbc3b906130b4908a908790879087906004016145ef565b5f60405180830381865afa1580156130ce573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526130f591908101906146c1565b979650505050505050565b5f805f80613156855f815181106131195761311961454c565b60200260200101515f0151670de0b6b3a7640000885f8151811061313f5761313f61454c565b6020026020010151612d029092919063ffffffff16565b90505f6131968660018151811061316f5761316f61454c565b60200260200101515f0151670de0b6b3a76400008960018151811061313f5761313f61454c565b90505f6131d6876002815181106131af576131af61454c565b60200260200101515f0151670de0b6b3a76400008a60028151811061313f5761313f61454c565b9050806131e38385614539565b6131ed9190614539565b955085156132e05785876002815181106132095761320961454c565b60200260200101516020015182028860018151811061322a5761322a61454c565b6020026020010151602001518402895f8151811061324a5761324a61454c565b6020026020010151602001518602010181613267576132676145a1565b049450858760028151811061327e5761327e61454c565b60200260200101516040015182028860018151811061329f5761329f61454c565b6020026020010151604001518402895f815181106132bf576132bf61454c565b60200260200101516040015186020101816132dc576132dc6145a1565b0493505b6001600160a01b0389165f90815260026020526040902054600160e01b900461ffff166133108187612710612d02565b955061331f8186612710612d02565b94505050505093509350939050565b5f805f8061333b85612d1d565b90505f61334a87878a85612e05565b5090505f805f805f805b8751811015613553576001600160a01b038d165f9081526004602090815260408083208f8452909152812089519091908a90849081106133965761339661454c565b602002602001015181526020019081526020015f20548782815181106133be576133be61454c565b60200260200101516133d09190614560565b95508681815181106133e4576133e461454c565b602002602001015160045f8f6001600160a01b03166001600160a01b031681526020019081526020015f205f8e81526020019081526020015f205f8a84815181106134315761343161454c565b602002602001015181526020019081526020015f208190555061345f88828151811061285c5761285c61454c565b80955081965050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636a6674a78e87878b86815181106134ab576134ab61454c565b60209081029190910101516040516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152604483015260648201526084810189905260a40160408051808303815f875af1158015613512573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613536919061457f565b9093509150613545828b614539565b9a83019a9950600101613354565b506001600160a01b038c165f8181526003602090815260408083208f8452825280832080546001600160701b038f8116600160701b908102600160701b600160e01b0319841617909355958552600290935292205491900482169116818b106135c257818b03810199506135d4565b8a82038111156135d4578a8203810399505b6001600160a01b038e165f90815260026020526040902054600160701b90046001600160701b03168a1061361b576040516366b09a5960e01b815260040160405180910390fd5b5050506001600160a01b03909a165f90815260026020526040902080546001600160701b039097166001600160701b0319909716969096179095555094989397509295505050505050565b5f818152600760205260409020546001600160a01b0316806136b75760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610a71565b6001600160a01b0381165f81815260086020908152604080832080545f190190558583526007825280832080546001600160a01b031990811690915560099092528083208054909216909155518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af13d15601f3d1160015f51141617169150508061165d5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610a71565b6137b78282613c44565b6001600160a01b0382163b15806138595750604051630a85bd0160e11b8082523360048301525f6024830181905260448301849052608060648401526084830152906001600160a01b0384169063150b7a029060a4016020604051808303815f875af1158015613829573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061384d919061429d565b6001600160e01b031916145b6138755760405162461bcd60e51b8152600401610a71906142b8565b5050565b6060815f0361389f5750506040805180820190915260018152600360fc1b602082015290565b815f5b81156138c857806138b28161478e565b91506138c19050600a836147a6565b91506138a2565b5f8167ffffffffffffffff8111156138e2576138e2614308565b6040519080825280601f01601f19166020018201604052801561390c576020820181803683370190505b5090505b8415613976576139216001836144a3565b915061392e600a866147b9565b613939906030614539565b60f81b81838151811061394e5761394e61454c565b60200101906001600160f81b03191690815f1a90535061396f600a866147a6565b9450613910565b949350505050565b6001600160a01b0381165f9081526010602052604081206001015481906001600160801b03168015613c1a576040516313eecf9160e31b8152306004820152613a8e906001600160a01b03861690639f767c8890602401602060405180830381865afa1580156139f0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a14919061448c565b856001600160a01b03166332c0defd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a50573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a74919061448c565b613a7e91906144a3565b8290670de0b6b3a7640000612d02565b6040516326ad4fc560e11b81523060048201526001600160a01b03861690634d5a9f8a90602401602060405180830381865afa158015613ad0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613af4919061448c565b613afe9190614539565b60405163205aabf160e01b8152306004820152909350613ba7906001600160a01b0386169063205aabf190602401602060405180830381865afa158015613b47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b6b919061448c565b856001600160a01b031663bda39cad6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a50573d5f803e3d5ffd5b60405163a1ac4d1360e01b81523060048201526001600160a01b0386169063a1ac4d1390602401602060405180830381865afa158015613be9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c0d919061448c565b613c179190614539565b91505b50915091565b5f600160701b8210613c30575f80fd5b5090565b5f600160801b8210613c30575f80fd5b6001600160a01b038216613c8e5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610a71565b5f818152600760205260409020546001600160a01b031615613ce35760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b6044820152606401610a71565b6001600160a01b0382165f81815260086020908152604080832080546001019055848352600790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6040805160c0810182525f80825260208201819052918101829052606081018290526080810182905260a081019190915290565b6001600160e01b031981168114613d96575f80fd5b50565b5f60208284031215613da9575f80fd5b8135613db481613d81565b9392505050565b6001600160a01b0381168114613d96575f80fd5b5f805f8060808587031215613de2575f80fd5b8435613ded81613dbb565b93506020850135613dfd81613dbb565b93969395505050506040820135916060013590565b5f5b83811015613e2c578181015183820152602001613e14565b50505f910152565b602081525f8251806020840152613e52816040850160208701613e12565b601f01601f19169190910160400192915050565b5f60208284031215613e76575f80fd5b5035919050565b5f8060408385031215613e8e575f80fd5b8235613e9981613dbb565b946020939093013593505050565b80356001600160801b038116811461142d575f80fd5b5f8060408385031215613ece575f80fd5b82359150613ede60208401613ea7565b90509250929050565b5f60208284031215613ef7575f80fd5b8135613db481613dbb565b5f805f805f60a08688031215613f16575f80fd5b8535613f2181613dbb565b94506020860135613f3181613dbb565b94979496505050506040830135926060810135926080909101359150565b5f805f60608486031215613f61575f80fd5b8335613f6c81613dbb565b92506020840135613f7c81613dbb565b929592945050506040919091013590565b5f805f60608486031215613f9f575f80fd5b8335613faa81613dbb565b95602085013595506040909401359392505050565b5f8083601f840112613fcf575f80fd5b50813567ffffffffffffffff811115613fe6575f80fd5b602083019150836020828501011115613ffd575f80fd5b9250929050565b5f8060208385031215614015575f80fd5b823567ffffffffffffffff81111561402b575f80fd5b61403785828601613fbf565b90969095509350505050565b5f805f60608486031215614055575f80fd5b833561406081613dbb565b925060208401356001600160701b038116811461407b575f80fd5b9150604084013561ffff81168114614091575f80fd5b809150509250925092565b8015158114613d96575f80fd5b5f80604083850312156140ba575f80fd5b82356140c581613dbb565b915060208301356140d58161409c565b809150509250929050565b5f805f805f608086880312156140f4575f80fd5b85356140ff81613dbb565b9450602086013561410f81613dbb565b935060408601359250606086013567ffffffffffffffff811115614131575f80fd5b61413d88828901613fbf565b969995985093965092949392505050565b5f806040838503121561415f575f80fd5b823561416a81613dbb565b9150613ede60208401613ea7565b5f8060408385031215614189575f80fd5b823561419481613dbb565b915060208301356140d581613dbb565b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b82016141cc576141cc6141a4565b505f0390565b600181811c908216806141e657607f821691505b60208210810361420457634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600a90820152695245454e5452414e435960b01b604082015260600190565b6001600160801b0381811683821601908082111561424e5761424e6141a4565b5092915050565b5f60208284031215614265575f80fd5b8151613db48161409c565b5f8060408385031215614281575f80fd5b825161428c81613dbb565b60208401519092506140d581613dbb565b5f602082840312156142ad575f80fd5b8151613db481613d81565b60208082526010908201526f155394d0519157d49150d2541251539560821b604082015260600190565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b634e487b7160e01b5f52604160045260245ffd5b601f82111561130d57805f5260205f20601f840160051c810160208510156143415750805b601f840160051c820191505b81811015611e37575f815560010161434d565b67ffffffffffffffff83111561437857614378614308565b61438c8361438683546141d2565b8361431c565b5f601f8411600181146143bd575f85156143a65750838201355b5f19600387901b1c1916600186901b178355611e37565b5f83815260208120601f198716915b828110156143ec57868501358255602094850194600190920191016143cc565b5086821015614408575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6001600160801b0382811682821603908082111561424e5761424e6141a4565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290525f828460a08401375f60a0848401015260a0601f19601f85011683010190509695505050505050565b5f6020828403121561449c575f80fd5b5051919050565b818103818111156108dd576108dd6141a4565b5f8084546144c3816141d2565b600182811680156144db57600181146144f05761451c565b60ff198416875282151583028701945061451c565b885f526020805f205f5b858110156145135781548a8201529084019082016144fa565b50505082870194505b505050508351614530818360208801613e12565b01949350505050565b808201808211156108dd576108dd6141a4565b634e487b7160e01b5f52603260045260245ffd5b8181035f83128015838313168383128216171561424e5761424e6141a4565b5f8060408385031215614590575f80fd5b505080516020909101519092909150565b634e487b7160e01b5f52601260045260245ffd5b5f815180845260208085019450602084015f5b838110156145e4578151875295820195908201906001016145c8565b509495945050505050565b6001600160a01b0385811682526080602080840182905286519184018290525f928782019290919060a0860190855b8181101561463c57855185168352948301949183019160010161461e565b5050858103604087015261465081896145b5565b935050505082810360608401526130f581856145b5565b6040516060810167ffffffffffffffff8111828210171561468a5761468a614308565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156146b9576146b9614308565b604052919050565b5f60208083850312156146d2575f80fd5b825167ffffffffffffffff808211156146e9575f80fd5b818501915085601f8301126146fc575f80fd5b81518181111561470e5761470e614308565b61471c848260051b01614690565b8181528481019250606091820284018501918883111561473a575f80fd5b938501935b828510156147825780858a031215614755575f80fd5b61475d614667565b855181528686015187820152604080870151908201528452938401939285019261473f565b50979650505050505050565b5f6001820161479f5761479f6141a4565b5060010190565b5f826147b4576147b46145a1565b500490565b5f826147c7576147c76145a1565b50069056fea264697066735822122066ba6f2b783cacf2e7483a9a9ba2db077e70413b461924e77424a46ab7cf6ec164736f6c63430008160033417263616469612057726170706564204165726f64726f6d6520506f736974696f6e73000000000000000000000000d0690557600eb8be8391d1d97346e2aab5300d5f