Overview
ETH Balance
0 ETH
ETH Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 10 from a total of 10 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Gov | 390458 | 607 days ago | IN | 0 ETH | 0.00007646 | ||||
Set Spread Basis... | 218574 | 620 days ago | IN | 0 ETH | 0.00032041 | ||||
Set Secondary Pr... | 218539 | 620 days ago | IN | 0 ETH | 0.00030874 | ||||
Set Max Strict P... | 218538 | 620 days ago | IN | 0 ETH | 0.00030748 | ||||
Set Token Config | 218485 | 620 days ago | IN | 0 ETH | 0.00046911 | ||||
Set Token Config | 218482 | 620 days ago | IN | 0 ETH | 0.00047056 | ||||
Set Token Config | 218479 | 620 days ago | IN | 0 ETH | 0.0004704 | ||||
Set Token Config | 218475 | 620 days ago | IN | 0 ETH | 0.00047561 | ||||
Set Token Config | 218470 | 620 days ago | IN | 0 ETH | 0.00048138 | ||||
Set Token Config | 218467 | 620 days ago | IN | 0 ETH | 0.00048138 |
Loading...
Loading
Contract Name:
VaultPriceFeed
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BUSL-1.1 import "./interfaces/v0.8/IVaultPriceFeed.sol"; import "../oracle/interfaces/v0.8/ISecondaryPriceFeed.sol"; import "@api3/contracts/v0.8/interfaces/IProxy.sol"; pragma solidity ^0.8.0; contract VaultPriceFeed is IVaultPriceFeed { uint256 public constant PRICE_PRECISION = 10**30; uint256 public constant ONE_USD = PRICE_PRECISION; uint256 public constant BASIS_POINTS_DIVISOR = 10000; uint256 public constant MAX_SPREAD_BASIS_POINTS = 50; uint256 public constant MAX_ADJUSTMENT_INTERVAL = 2 hours; uint256 public constant MAX_ADJUSTMENT_BASIS_POINTS = 20; address public gov; bool public isSecondaryPriceEnabled = true; bool public favorPrimaryPrice; uint256 public maxStrictPriceDeviation; address public secondaryPriceFeed; uint256 public spreadThresholdBasisPoints = 30; uint256 public expireTimeForPriceFeed = 1 days; mapping(address => address) public priceFeedProxies; mapping(address => uint256) public priceDecimals; mapping(address => uint256) public spreadBasisPoints; mapping(address => bool) public strictStableTokens; mapping(address => uint256) public override adjustmentBasisPoints; mapping(address => bool) public override isAdjustmentAdditive; mapping(address => uint256) public lastAdjustmentTimings; modifier onlyGov() { require(msg.sender == gov, "VaultPriceFeed: forbidden"); _; } constructor() { gov = msg.sender; } function setGov(address _gov) external onlyGov { require(_gov != address(0), "VaultPriceFeed: address(0)"); gov = _gov; } function setAdjustment( address _token, bool _isAdditive, uint256 _adjustmentBps ) external override onlyGov { require(lastAdjustmentTimings[_token] + MAX_ADJUSTMENT_INTERVAL < block.timestamp, "VaultPriceFeed: adjustment frequency exceeded"); require(_adjustmentBps <= MAX_ADJUSTMENT_BASIS_POINTS, "invalid _adjustmentBps"); isAdjustmentAdditive[_token] = _isAdditive; adjustmentBasisPoints[_token] = _adjustmentBps; lastAdjustmentTimings[_token] = block.timestamp; } function setIsSecondaryPriceEnabled(bool _isEnabled) external override onlyGov { isSecondaryPriceEnabled = _isEnabled; } function setExpireTimeForPriceFeed(uint256 _expireTimeForPriceFeed) external override onlyGov { require(_expireTimeForPriceFeed >= 1 minutes,"invalid _expireTimeForPriceFeed"); require(_expireTimeForPriceFeed <= 1 days,"invalid _expireTimeForPriceFeed"); expireTimeForPriceFeed = _expireTimeForPriceFeed; } function setSecondaryPriceFeed(address _secondaryPriceFeed) external onlyGov { secondaryPriceFeed = _secondaryPriceFeed; } function setSpreadBasisPoints(address _token, uint256 _spreadBasisPoints) external override onlyGov { require(_spreadBasisPoints <= MAX_SPREAD_BASIS_POINTS, "VaultPriceFeed: invalid _spreadBasisPoints"); spreadBasisPoints[_token] = _spreadBasisPoints; } function setSpreadThresholdBasisPoints(uint256 _spreadThresholdBasisPoints) external override onlyGov { spreadThresholdBasisPoints = _spreadThresholdBasisPoints; } function setFavorPrimaryPrice(bool _favorPrimaryPrice) external override onlyGov { favorPrimaryPrice = _favorPrimaryPrice; } function setMaxStrictPriceDeviation(uint256 _maxStrictPriceDeviation) external override onlyGov { maxStrictPriceDeviation = _maxStrictPriceDeviation; } function setTokenConfig( address _token, address _priceFeedProxy, uint256 _priceDecimals, bool _isStrictStable ) external override onlyGov { priceFeedProxies[_token] = _priceFeedProxy; priceDecimals[_token] = _priceDecimals; strictStableTokens[_token] = _isStrictStable; } function getPrice( address _token, bool _maximise, bool /*_includeAmmPrice */, bool /* _useSwapPricing */ ) public view override returns (uint256) { uint256 price = getPriceV1(_token, _maximise); uint256 adjustmentBps = adjustmentBasisPoints[_token]; if (adjustmentBps > 0) { bool isAdditive = isAdjustmentAdditive[_token]; if (isAdditive) { price = (price * (BASIS_POINTS_DIVISOR + adjustmentBps)) / BASIS_POINTS_DIVISOR; } else { price = (price * (BASIS_POINTS_DIVISOR - adjustmentBps)) / BASIS_POINTS_DIVISOR; } } return price; } function getPriceV1( address _token, bool _maximise ) public view returns (uint256) { uint256 price = getPrimaryPrice(_token, _maximise); if (isSecondaryPriceEnabled) { price = getSecondaryPrice(_token, price, _maximise); } if (strictStableTokens[_token]) { uint256 delta = price > ONE_USD ? price - ONE_USD : ONE_USD - price; if (delta <= maxStrictPriceDeviation) { return ONE_USD; } // if _maximise and price is e.g. 1.02, return 1.02 if (_maximise && price > ONE_USD) { return price; } // if !_maximise and price is e.g. 0.98, return 0.98 if (!_maximise && price < ONE_USD) { return price; } return ONE_USD; } uint256 _spreadBasisPoints = spreadBasisPoints[_token]; if (_maximise) { return (price * (BASIS_POINTS_DIVISOR + _spreadBasisPoints)) / BASIS_POINTS_DIVISOR; } return (price * (BASIS_POINTS_DIVISOR - _spreadBasisPoints)) / BASIS_POINTS_DIVISOR; } function getLatestPrimaryPrice(address _token) public override view returns (uint256) { return _getApi3Price(_token); } function getPrimaryPrice(address _token, bool /*_maximise*/) public view override returns (uint256) { uint256 price = _getApi3Price(_token); uint256 _priceDecimals = priceDecimals[_token]; return (price * PRICE_PRECISION) / 10 ** _priceDecimals; } function getSecondaryPrice( address _token, uint256 _referencePrice, bool _maximise ) public view returns (uint256) { if (secondaryPriceFeed == address(0)) { return _referencePrice; } return ISecondaryPriceFeed(secondaryPriceFeed).getPrice(_token, _referencePrice, _maximise); } function _getApi3Price(address _token) private view returns (uint256) { address proxy = priceFeedProxies[_token]; require(proxy != address(0), "VaultPriceFeed: invalid price feed proxy"); (int224 price, uint256 timestamp) = IProxy(proxy).read(); require(price > 0, "VaultPriceFeed: price not positive"); require( timestamp + expireTimeForPriceFeed > block.timestamp, "VaultPriceFeed: expired" ); return uint256(uint224(price)); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /// @dev See DapiProxy.sol for comments about usage interface IProxy { function read() external view returns (int224 value, uint32 timestamp); function api3ServerV1() external view returns (address); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@api3/airnode-protocol-v1/contracts/api3-server-v1/proxies/interfaces/IProxy.sol";
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.0; interface IVaultPriceFeed { function adjustmentBasisPoints(address _token) external view returns (uint256); function isAdjustmentAdditive(address _token) external view returns (bool); function setAdjustment( address _token, bool _isAdditive, uint256 _adjustmentBps ) external; function setIsSecondaryPriceEnabled(bool _isEnabled) external; function setExpireTimeForPriceFeed(uint256 _expireTimeForPriceFeed) external; function setSpreadBasisPoints(address _token, uint256 _spreadBasisPoints) external; function setSpreadThresholdBasisPoints(uint256 _spreadThresholdBasisPoints) external; function setFavorPrimaryPrice(bool _favorPrimaryPrice) external; function setMaxStrictPriceDeviation(uint256 _maxStrictPriceDeviation) external; function getPrice( address _token, bool _maximise, bool _includeAmmPrice, bool _useSwapPricing ) external view returns (uint256); function getPrimaryPrice(address _token, bool _maximise) external view returns (uint256); function setTokenConfig( address _token, address _priceFeedProxy, uint256 _priceDecimals, bool _isStrictStable ) external; function getLatestPrimaryPrice(address _token) external view returns (uint256); }
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.0; interface ISecondaryPriceFeed { function getPrice(address _token, uint256 _referencePrice, bool _maximise) external view returns (uint256); }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BASIS_POINTS_DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_ADJUSTMENT_BASIS_POINTS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_ADJUSTMENT_INTERVAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SPREAD_BASIS_POINTS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ONE_USD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE_PRECISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"adjustmentBasisPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"expireTimeForPriceFeed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"favorPrimaryPrice","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"getLatestPrimaryPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"bool","name":"_maximise","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"bool","name":"_maximise","type":"bool"}],"name":"getPriceV1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"getPrimaryPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_referencePrice","type":"uint256"},{"internalType":"bool","name":"_maximise","type":"bool"}],"name":"getSecondaryPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gov","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAdjustmentAdditive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSecondaryPriceEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastAdjustmentTimings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxStrictPriceDeviation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"priceDecimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"priceFeedProxies","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"secondaryPriceFeed","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"bool","name":"_isAdditive","type":"bool"},{"internalType":"uint256","name":"_adjustmentBps","type":"uint256"}],"name":"setAdjustment","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_expireTimeForPriceFeed","type":"uint256"}],"name":"setExpireTimeForPriceFeed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_favorPrimaryPrice","type":"bool"}],"name":"setFavorPrimaryPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_gov","type":"address"}],"name":"setGov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isEnabled","type":"bool"}],"name":"setIsSecondaryPriceEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxStrictPriceDeviation","type":"uint256"}],"name":"setMaxStrictPriceDeviation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_secondaryPriceFeed","type":"address"}],"name":"setSecondaryPriceFeed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_spreadBasisPoints","type":"uint256"}],"name":"setSpreadBasisPoints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_spreadThresholdBasisPoints","type":"uint256"}],"name":"setSpreadThresholdBasisPoints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_priceFeedProxy","type":"address"},{"internalType":"uint256","name":"_priceDecimals","type":"uint256"},{"internalType":"bool","name":"_isStrictStable","type":"bool"}],"name":"setTokenConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"spreadBasisPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"spreadThresholdBasisPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"strictStableTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526001600060146101000a81548160ff021916908315150217905550601e6003556201518060045534801561003757600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612672806100876000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c8063717cfe7a11610125578063a39c73a3116100ad578063cefe0f211161007c578063cefe0f2114610654578063cfad57a214610684578063d694376c146106a0578063eb1c92a9146106bc578063ff59f163146106d857610211565b8063a39c73a3146105ba578063afafed88146105d8578063b731dd8714610608578063b8f611051461062457610211565b806395082d25116100f457806395082d25146105165780639a0a6635146105345780639b18dc47146105505780639b8893801461056e578063a27ea3861461058a57610211565b8063717cfe7a1461047a5780637cdddae6146104aa5780638b86616c146104da57806390a5d2cb146104f857610211565b806348cac277116101a857806356c8c2c11161017757806356c8c2c1146103c2578063593d9e80146103f2578063604f37e91461041057806367781c0e1461042c5780636ce8a44b1461044a57610211565b806348cac277146103285780634a4b1f4f146103585780634b9ade471461037657806356bf9de41461039257610211565b80632fc3a70a116101e45780632fc3a70a1461028c578063378e7bf7146102bc5780633eba8d36146102da5780633ebbc6011461030a57610211565b80630957aed914610216578063126082cf1461023457806312d43a51146102525780632fbfe3d314610270575b600080fd5b61021e6106f4565b60405161022b9190611a31565b60405180910390f35b61023c6106f9565b6040516102499190611a31565b60405180910390f35b61025a6106ff565b6040516102679190611a8d565b60405180910390f35b61028a60048036038101906102859190611ad9565b610723565b005b6102a660048036038101906102a19190611b6a565b6107bb565b6040516102b39190611a31565b60405180910390f35b6102c46108d3565b6040516102d19190611a31565b60405180910390f35b6102f460048036038101906102ef9190611bd1565b6108d9565b6040516103019190611a31565b60405180910390f35b6103126109e2565b60405161031f9190611c33565b60405180910390f35b610342600480360381019061033d9190611c4e565b6109f5565b60405161034f9190611a31565b60405180910390f35b610360610a0d565b60405161036d9190611a31565b60405180910390f35b610390600480360381019061038b9190611c7b565b610a12565b005b6103ac60048036038101906103a79190611c4e565b610bbf565b6040516103b99190611a31565b60405180910390f35b6103dc60048036038101906103d79190611ce2565b610bd1565b6040516103e99190611a31565b60405180910390f35b6103fa610c5d565b6040516104079190611c33565b60405180910390f35b61042a60048036038101906104259190611d22565b610c70565b005b610434610d1b565b6040516104419190611a31565b60405180910390f35b610464600480360381019061045f9190611c4e565b610d2c565b6040516104719190611c33565b60405180910390f35b610494600480360381019061048f9190611c4e565b610d4c565b6040516104a19190611a31565b60405180910390f35b6104c460048036038101906104bf9190611ce2565b610d64565b6040516104d19190611a31565b60405180910390f35b6104e2610f6a565b6040516104ef9190611a8d565b60405180910390f35b610500610f90565b60405161050d9190611a31565b60405180910390f35b61051e610f96565b60405161052b9190611a31565b60405180910390f35b61054e60048036038101906105499190611c4e565b610fa7565b005b610558611079565b6040516105659190611a31565b60405180910390f35b61058860048036038101906105839190611d4f565b61107f565b005b6105a4600480360381019061059f9190611c4e565b611199565b6040516105b19190611a31565b60405180910390f35b6105c26111b1565b6040516105cf9190611a31565b60405180910390f35b6105f260048036038101906105ed9190611c4e565b6111b7565b6040516105ff9190611a8d565b60405180910390f35b610622600480360381019061061d9190611ad9565b6111ea565b005b61063e60048036038101906106399190611c4e565b611282565b60405161064b9190611c33565b60405180910390f35b61066e60048036038101906106699190611c4e565b6112a2565b60405161067b9190611a31565b60405180910390f35b61069e60048036038101906106999190611c4e565b6112ba565b005b6106ba60048036038101906106b59190611d8f565b6113fa565b005b6106d660048036038101906106d19190611d22565b61163e565b005b6106f260048036038101906106ed9190611ad9565b6116e9565b005b603281565b61271081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a890611e3f565b60405180910390fd5b8060018190555050565b6000806107c88686610d64565b90506000600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111156108c6576000600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050801561089b576127108261271061087f9190611e8e565b8461088a9190611ec2565b6108949190611f33565b92506108c4565b612710826127106108ac9190611f64565b846108b79190611ec2565b6108c19190611f33565b92505b505b8192505050949350505050565b60015481565b60008073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610938578290506109db565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637fece3688585856040518463ffffffff1660e01b815260040161099793929190611f98565b602060405180830381865afa1580156109b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d89190611fe4565b90505b9392505050565b600060149054906101000a900460ff1681565b60096020528060005260406000206000915090505481565b601481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9790611e3f565b60405180910390fd5b82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b6000610bca8261180b565b9050919050565b600080610bdd8461180b565b90506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080600a610c309190612144565b6c0c9f2c9cd04674edea4000000083610c499190611ec2565b610c539190611f33565b9250505092915050565b600060159054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf590611e3f565b60405180910390fd5b80600060156101000a81548160ff02191690831515021790555050565b6c0c9f2c9cd04674edea4000000081565b600a6020528060005260406000206000915054906101000a900460ff1681565b600b6020528060005260406000206000915090505481565b600080610d718484610bd1565b9050600060149054906101000a900460ff1615610d9657610d938482856108d9565b90505b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ec05760006c0c9f2c9cd04674edea400000008211610e1c57816c0c9f2c9cd04674edea40000000610e179190611f64565b610e36565b6c0c9f2c9cd04674edea4000000082610e359190611f64565b5b90506001548111610e58576c0c9f2c9cd04674edea4000000092505050610f64565b838015610e7157506c0c9f2c9cd04674edea4000000082115b15610e80578192505050610f64565b83158015610e9a57506c0c9f2c9cd04674edea4000000082105b15610ea9578192505050610f64565b6c0c9f2c9cd04674edea4000000092505050610f64565b6000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508315610f395761271081612710610f1b9190611e8e565b83610f269190611ec2565b610f309190611f33565b92505050610f64565b61271081612710610f4a9190611f64565b83610f559190611ec2565b610f5f9190611f33565b925050505b92915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b6c0c9f2c9cd04674edea4000000081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102c90611e3f565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611c2081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461110d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110490611e3f565b60405180910390fd5b6032811115611151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114890612201565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60076020528060005260406000206000915090505481565b60035481565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f90611e3f565b60405180910390fd5b8060038190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b60066020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133f90611e3f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ae9061226d565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147f90611e3f565b60405180910390fd5b42611c20600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114d69190611e8e565b10611516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150d906122ff565b60405180910390fd5b601481111561155a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115519061236b565b60405180910390fd5b81600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c390611e3f565b60405180910390fd5b80600060146101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e90611e3f565b60405180910390fd5b603c8110156117bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b2906123d7565b60405180910390fd5b62015180811115611801576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f8906123d7565b60405180910390fd5b8060048190555050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d690612469565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff166357de26a46040518163ffffffff1660e01b81526004016040805180830381865afa15801561192c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195091906124fe565b63ffffffff1691509150600082601b0b136119a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611997906125b0565b60405180910390fd5b42600454826119af9190611e8e565b116119ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e69061261c565b60405180910390fd5b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169350505050919050565b6000819050919050565b611a2b81611a18565b82525050565b6000602082019050611a466000830184611a22565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a7782611a4c565b9050919050565b611a8781611a6c565b82525050565b6000602082019050611aa26000830184611a7e565b92915050565b600080fd5b611ab681611a18565b8114611ac157600080fd5b50565b600081359050611ad381611aad565b92915050565b600060208284031215611aef57611aee611aa8565b5b6000611afd84828501611ac4565b91505092915050565b611b0f81611a6c565b8114611b1a57600080fd5b50565b600081359050611b2c81611b06565b92915050565b60008115159050919050565b611b4781611b32565b8114611b5257600080fd5b50565b600081359050611b6481611b3e565b92915050565b60008060008060808587031215611b8457611b83611aa8565b5b6000611b9287828801611b1d565b9450506020611ba387828801611b55565b9350506040611bb487828801611b55565b9250506060611bc587828801611b55565b91505092959194509250565b600080600060608486031215611bea57611be9611aa8565b5b6000611bf886828701611b1d565b9350506020611c0986828701611ac4565b9250506040611c1a86828701611b55565b9150509250925092565b611c2d81611b32565b82525050565b6000602082019050611c486000830184611c24565b92915050565b600060208284031215611c6457611c63611aa8565b5b6000611c7284828501611b1d565b91505092915050565b60008060008060808587031215611c9557611c94611aa8565b5b6000611ca387828801611b1d565b9450506020611cb487828801611b1d565b9350506040611cc587828801611ac4565b9250506060611cd687828801611b55565b91505092959194509250565b60008060408385031215611cf957611cf8611aa8565b5b6000611d0785828601611b1d565b9250506020611d1885828601611b55565b9150509250929050565b600060208284031215611d3857611d37611aa8565b5b6000611d4684828501611b55565b91505092915050565b60008060408385031215611d6657611d65611aa8565b5b6000611d7485828601611b1d565b9250506020611d8585828601611ac4565b9150509250929050565b600080600060608486031215611da857611da7611aa8565b5b6000611db686828701611b1d565b9350506020611dc786828701611b55565b9250506040611dd886828701611ac4565b9150509250925092565b600082825260208201905092915050565b7f5661756c745072696365466565643a20666f7262696464656e00000000000000600082015250565b6000611e29601983611de2565b9150611e3482611df3565b602082019050919050565b60006020820190508181036000830152611e5881611e1c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611e9982611a18565b9150611ea483611a18565b9250828201905080821115611ebc57611ebb611e5f565b5b92915050565b6000611ecd82611a18565b9150611ed883611a18565b9250828202611ee681611a18565b91508282048414831517611efd57611efc611e5f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611f3e82611a18565b9150611f4983611a18565b925082611f5957611f58611f04565b5b828204905092915050565b6000611f6f82611a18565b9150611f7a83611a18565b9250828203905081811115611f9257611f91611e5f565b5b92915050565b6000606082019050611fad6000830186611a7e565b611fba6020830185611a22565b611fc76040830184611c24565b949350505050565b600081519050611fde81611aad565b92915050565b600060208284031215611ffa57611ff9611aa8565b5b600061200884828501611fcf565b91505092915050565b60008160011c9050919050565b6000808291508390505b60018511156120685780860481111561204457612043611e5f565b5b60018516156120535780820291505b808102905061206185612011565b9450612028565b94509492505050565b600082612081576001905061213d565b8161208f576000905061213d565b81600181146120a557600281146120af576120de565b600191505061213d565b60ff8411156120c1576120c0611e5f565b5b8360020a9150848211156120d8576120d7611e5f565b5b5061213d565b5060208310610133831016604e8410600b84101617156121135782820a90508381111561210e5761210d611e5f565b5b61213d565b612120848484600161201e565b9250905081840481111561213757612136611e5f565b5b81810290505b9392505050565b600061214f82611a18565b915061215a83611a18565b92506121877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612071565b905092915050565b7f5661756c745072696365466565643a20696e76616c6964205f7370726561644260008201527f61736973506f696e747300000000000000000000000000000000000000000000602082015250565b60006121eb602a83611de2565b91506121f68261218f565b604082019050919050565b6000602082019050818103600083015261221a816121de565b9050919050565b7f5661756c745072696365466565643a2061646472657373283029000000000000600082015250565b6000612257601a83611de2565b915061226282612221565b602082019050919050565b600060208201905081810360008301526122868161224a565b9050919050565b7f5661756c745072696365466565643a2061646a7573746d656e7420667265717560008201527f656e637920657863656564656400000000000000000000000000000000000000602082015250565b60006122e9602d83611de2565b91506122f48261228d565b604082019050919050565b60006020820190508181036000830152612318816122dc565b9050919050565b7f696e76616c6964205f61646a7573746d656e7442707300000000000000000000600082015250565b6000612355601683611de2565b91506123608261231f565b602082019050919050565b6000602082019050818103600083015261238481612348565b9050919050565b7f696e76616c6964205f65787069726554696d65466f7250726963654665656400600082015250565b60006123c1601f83611de2565b91506123cc8261238b565b602082019050919050565b600060208201905081810360008301526123f0816123b4565b9050919050565b7f5661756c745072696365466565643a20696e76616c696420707269636520666560008201527f65642070726f7879000000000000000000000000000000000000000000000000602082015250565b6000612453602883611de2565b915061245e826123f7565b604082019050919050565b6000602082019050818103600083015261248281612446565b9050919050565b600081601b0b9050919050565b61249f81612489565b81146124aa57600080fd5b50565b6000815190506124bc81612496565b92915050565b600063ffffffff82169050919050565b6124db816124c2565b81146124e657600080fd5b50565b6000815190506124f8816124d2565b92915050565b6000806040838503121561251557612514611aa8565b5b6000612523858286016124ad565b9250506020612534858286016124e9565b9150509250929050565b7f5661756c745072696365466565643a207072696365206e6f7420706f7369746960008201527f7665000000000000000000000000000000000000000000000000000000000000602082015250565b600061259a602283611de2565b91506125a58261253e565b604082019050919050565b600060208201905081810360008301526125c98161258d565b9050919050565b7f5661756c745072696365466565643a2065787069726564000000000000000000600082015250565b6000612606601783611de2565b9150612611826125d0565b602082019050919050565b60006020820190508181036000830152612635816125f9565b905091905056fea2646970667358221220c9bd0b39590d54e0b95ea418056e3340e74a348cb603dd25dbafd04ea632b13264736f6c63430008110033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102115760003560e01c8063717cfe7a11610125578063a39c73a3116100ad578063cefe0f211161007c578063cefe0f2114610654578063cfad57a214610684578063d694376c146106a0578063eb1c92a9146106bc578063ff59f163146106d857610211565b8063a39c73a3146105ba578063afafed88146105d8578063b731dd8714610608578063b8f611051461062457610211565b806395082d25116100f457806395082d25146105165780639a0a6635146105345780639b18dc47146105505780639b8893801461056e578063a27ea3861461058a57610211565b8063717cfe7a1461047a5780637cdddae6146104aa5780638b86616c146104da57806390a5d2cb146104f857610211565b806348cac277116101a857806356c8c2c11161017757806356c8c2c1146103c2578063593d9e80146103f2578063604f37e91461041057806367781c0e1461042c5780636ce8a44b1461044a57610211565b806348cac277146103285780634a4b1f4f146103585780634b9ade471461037657806356bf9de41461039257610211565b80632fc3a70a116101e45780632fc3a70a1461028c578063378e7bf7146102bc5780633eba8d36146102da5780633ebbc6011461030a57610211565b80630957aed914610216578063126082cf1461023457806312d43a51146102525780632fbfe3d314610270575b600080fd5b61021e6106f4565b60405161022b9190611a31565b60405180910390f35b61023c6106f9565b6040516102499190611a31565b60405180910390f35b61025a6106ff565b6040516102679190611a8d565b60405180910390f35b61028a60048036038101906102859190611ad9565b610723565b005b6102a660048036038101906102a19190611b6a565b6107bb565b6040516102b39190611a31565b60405180910390f35b6102c46108d3565b6040516102d19190611a31565b60405180910390f35b6102f460048036038101906102ef9190611bd1565b6108d9565b6040516103019190611a31565b60405180910390f35b6103126109e2565b60405161031f9190611c33565b60405180910390f35b610342600480360381019061033d9190611c4e565b6109f5565b60405161034f9190611a31565b60405180910390f35b610360610a0d565b60405161036d9190611a31565b60405180910390f35b610390600480360381019061038b9190611c7b565b610a12565b005b6103ac60048036038101906103a79190611c4e565b610bbf565b6040516103b99190611a31565b60405180910390f35b6103dc60048036038101906103d79190611ce2565b610bd1565b6040516103e99190611a31565b60405180910390f35b6103fa610c5d565b6040516104079190611c33565b60405180910390f35b61042a60048036038101906104259190611d22565b610c70565b005b610434610d1b565b6040516104419190611a31565b60405180910390f35b610464600480360381019061045f9190611c4e565b610d2c565b6040516104719190611c33565b60405180910390f35b610494600480360381019061048f9190611c4e565b610d4c565b6040516104a19190611a31565b60405180910390f35b6104c460048036038101906104bf9190611ce2565b610d64565b6040516104d19190611a31565b60405180910390f35b6104e2610f6a565b6040516104ef9190611a8d565b60405180910390f35b610500610f90565b60405161050d9190611a31565b60405180910390f35b61051e610f96565b60405161052b9190611a31565b60405180910390f35b61054e60048036038101906105499190611c4e565b610fa7565b005b610558611079565b6040516105659190611a31565b60405180910390f35b61058860048036038101906105839190611d4f565b61107f565b005b6105a4600480360381019061059f9190611c4e565b611199565b6040516105b19190611a31565b60405180910390f35b6105c26111b1565b6040516105cf9190611a31565b60405180910390f35b6105f260048036038101906105ed9190611c4e565b6111b7565b6040516105ff9190611a8d565b60405180910390f35b610622600480360381019061061d9190611ad9565b6111ea565b005b61063e60048036038101906106399190611c4e565b611282565b60405161064b9190611c33565b60405180910390f35b61066e60048036038101906106699190611c4e565b6112a2565b60405161067b9190611a31565b60405180910390f35b61069e60048036038101906106999190611c4e565b6112ba565b005b6106ba60048036038101906106b59190611d8f565b6113fa565b005b6106d660048036038101906106d19190611d22565b61163e565b005b6106f260048036038101906106ed9190611ad9565b6116e9565b005b603281565b61271081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a890611e3f565b60405180910390fd5b8060018190555050565b6000806107c88686610d64565b90506000600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111156108c6576000600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050801561089b576127108261271061087f9190611e8e565b8461088a9190611ec2565b6108949190611f33565b92506108c4565b612710826127106108ac9190611f64565b846108b79190611ec2565b6108c19190611f33565b92505b505b8192505050949350505050565b60015481565b60008073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610938578290506109db565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637fece3688585856040518463ffffffff1660e01b815260040161099793929190611f98565b602060405180830381865afa1580156109b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d89190611fe4565b90505b9392505050565b600060149054906101000a900460ff1681565b60096020528060005260406000206000915090505481565b601481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9790611e3f565b60405180910390fd5b82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b6000610bca8261180b565b9050919050565b600080610bdd8461180b565b90506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080600a610c309190612144565b6c0c9f2c9cd04674edea4000000083610c499190611ec2565b610c539190611f33565b9250505092915050565b600060159054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf590611e3f565b60405180910390fd5b80600060156101000a81548160ff02191690831515021790555050565b6c0c9f2c9cd04674edea4000000081565b600a6020528060005260406000206000915054906101000a900460ff1681565b600b6020528060005260406000206000915090505481565b600080610d718484610bd1565b9050600060149054906101000a900460ff1615610d9657610d938482856108d9565b90505b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ec05760006c0c9f2c9cd04674edea400000008211610e1c57816c0c9f2c9cd04674edea40000000610e179190611f64565b610e36565b6c0c9f2c9cd04674edea4000000082610e359190611f64565b5b90506001548111610e58576c0c9f2c9cd04674edea4000000092505050610f64565b838015610e7157506c0c9f2c9cd04674edea4000000082115b15610e80578192505050610f64565b83158015610e9a57506c0c9f2c9cd04674edea4000000082105b15610ea9578192505050610f64565b6c0c9f2c9cd04674edea4000000092505050610f64565b6000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508315610f395761271081612710610f1b9190611e8e565b83610f269190611ec2565b610f309190611f33565b92505050610f64565b61271081612710610f4a9190611f64565b83610f559190611ec2565b610f5f9190611f33565b925050505b92915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b6c0c9f2c9cd04674edea4000000081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102c90611e3f565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611c2081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461110d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110490611e3f565b60405180910390fd5b6032811115611151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114890612201565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60076020528060005260406000206000915090505481565b60035481565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f90611e3f565b60405180910390fd5b8060038190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b60066020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133f90611e3f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ae9061226d565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147f90611e3f565b60405180910390fd5b42611c20600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114d69190611e8e565b10611516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150d906122ff565b60405180910390fd5b601481111561155a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115519061236b565b60405180910390fd5b81600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c390611e3f565b60405180910390fd5b80600060146101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e90611e3f565b60405180910390fd5b603c8110156117bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b2906123d7565b60405180910390fd5b62015180811115611801576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f8906123d7565b60405180910390fd5b8060048190555050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d690612469565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff166357de26a46040518163ffffffff1660e01b81526004016040805180830381865afa15801561192c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195091906124fe565b63ffffffff1691509150600082601b0b136119a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611997906125b0565b60405180910390fd5b42600454826119af9190611e8e565b116119ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e69061261c565b60405180910390fd5b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169350505050919050565b6000819050919050565b611a2b81611a18565b82525050565b6000602082019050611a466000830184611a22565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a7782611a4c565b9050919050565b611a8781611a6c565b82525050565b6000602082019050611aa26000830184611a7e565b92915050565b600080fd5b611ab681611a18565b8114611ac157600080fd5b50565b600081359050611ad381611aad565b92915050565b600060208284031215611aef57611aee611aa8565b5b6000611afd84828501611ac4565b91505092915050565b611b0f81611a6c565b8114611b1a57600080fd5b50565b600081359050611b2c81611b06565b92915050565b60008115159050919050565b611b4781611b32565b8114611b5257600080fd5b50565b600081359050611b6481611b3e565b92915050565b60008060008060808587031215611b8457611b83611aa8565b5b6000611b9287828801611b1d565b9450506020611ba387828801611b55565b9350506040611bb487828801611b55565b9250506060611bc587828801611b55565b91505092959194509250565b600080600060608486031215611bea57611be9611aa8565b5b6000611bf886828701611b1d565b9350506020611c0986828701611ac4565b9250506040611c1a86828701611b55565b9150509250925092565b611c2d81611b32565b82525050565b6000602082019050611c486000830184611c24565b92915050565b600060208284031215611c6457611c63611aa8565b5b6000611c7284828501611b1d565b91505092915050565b60008060008060808587031215611c9557611c94611aa8565b5b6000611ca387828801611b1d565b9450506020611cb487828801611b1d565b9350506040611cc587828801611ac4565b9250506060611cd687828801611b55565b91505092959194509250565b60008060408385031215611cf957611cf8611aa8565b5b6000611d0785828601611b1d565b9250506020611d1885828601611b55565b9150509250929050565b600060208284031215611d3857611d37611aa8565b5b6000611d4684828501611b55565b91505092915050565b60008060408385031215611d6657611d65611aa8565b5b6000611d7485828601611b1d565b9250506020611d8585828601611ac4565b9150509250929050565b600080600060608486031215611da857611da7611aa8565b5b6000611db686828701611b1d565b9350506020611dc786828701611b55565b9250506040611dd886828701611ac4565b9150509250925092565b600082825260208201905092915050565b7f5661756c745072696365466565643a20666f7262696464656e00000000000000600082015250565b6000611e29601983611de2565b9150611e3482611df3565b602082019050919050565b60006020820190508181036000830152611e5881611e1c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611e9982611a18565b9150611ea483611a18565b9250828201905080821115611ebc57611ebb611e5f565b5b92915050565b6000611ecd82611a18565b9150611ed883611a18565b9250828202611ee681611a18565b91508282048414831517611efd57611efc611e5f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611f3e82611a18565b9150611f4983611a18565b925082611f5957611f58611f04565b5b828204905092915050565b6000611f6f82611a18565b9150611f7a83611a18565b9250828203905081811115611f9257611f91611e5f565b5b92915050565b6000606082019050611fad6000830186611a7e565b611fba6020830185611a22565b611fc76040830184611c24565b949350505050565b600081519050611fde81611aad565b92915050565b600060208284031215611ffa57611ff9611aa8565b5b600061200884828501611fcf565b91505092915050565b60008160011c9050919050565b6000808291508390505b60018511156120685780860481111561204457612043611e5f565b5b60018516156120535780820291505b808102905061206185612011565b9450612028565b94509492505050565b600082612081576001905061213d565b8161208f576000905061213d565b81600181146120a557600281146120af576120de565b600191505061213d565b60ff8411156120c1576120c0611e5f565b5b8360020a9150848211156120d8576120d7611e5f565b5b5061213d565b5060208310610133831016604e8410600b84101617156121135782820a90508381111561210e5761210d611e5f565b5b61213d565b612120848484600161201e565b9250905081840481111561213757612136611e5f565b5b81810290505b9392505050565b600061214f82611a18565b915061215a83611a18565b92506121877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612071565b905092915050565b7f5661756c745072696365466565643a20696e76616c6964205f7370726561644260008201527f61736973506f696e747300000000000000000000000000000000000000000000602082015250565b60006121eb602a83611de2565b91506121f68261218f565b604082019050919050565b6000602082019050818103600083015261221a816121de565b9050919050565b7f5661756c745072696365466565643a2061646472657373283029000000000000600082015250565b6000612257601a83611de2565b915061226282612221565b602082019050919050565b600060208201905081810360008301526122868161224a565b9050919050565b7f5661756c745072696365466565643a2061646a7573746d656e7420667265717560008201527f656e637920657863656564656400000000000000000000000000000000000000602082015250565b60006122e9602d83611de2565b91506122f48261228d565b604082019050919050565b60006020820190508181036000830152612318816122dc565b9050919050565b7f696e76616c6964205f61646a7573746d656e7442707300000000000000000000600082015250565b6000612355601683611de2565b91506123608261231f565b602082019050919050565b6000602082019050818103600083015261238481612348565b9050919050565b7f696e76616c6964205f65787069726554696d65466f7250726963654665656400600082015250565b60006123c1601f83611de2565b91506123cc8261238b565b602082019050919050565b600060208201905081810360008301526123f0816123b4565b9050919050565b7f5661756c745072696365466565643a20696e76616c696420707269636520666560008201527f65642070726f7879000000000000000000000000000000000000000000000000602082015250565b6000612453602883611de2565b915061245e826123f7565b604082019050919050565b6000602082019050818103600083015261248281612446565b9050919050565b600081601b0b9050919050565b61249f81612489565b81146124aa57600080fd5b50565b6000815190506124bc81612496565b92915050565b600063ffffffff82169050919050565b6124db816124c2565b81146124e657600080fd5b50565b6000815190506124f8816124d2565b92915050565b6000806040838503121561251557612514611aa8565b5b6000612523858286016124ad565b9250506020612534858286016124e9565b9150509250929050565b7f5661756c745072696365466565643a207072696365206e6f7420706f7369746960008201527f7665000000000000000000000000000000000000000000000000000000000000602082015250565b600061259a602283611de2565b91506125a58261253e565b604082019050919050565b600060208201905081810360008301526125c98161258d565b9050919050565b7f5661756c745072696365466565643a2065787069726564000000000000000000600082015250565b6000612606601783611de2565b9150612611826125d0565b602082019050919050565b60006020820190508181036000830152612635816125f9565b905091905056fea2646970667358221220c9bd0b39590d54e0b95ea418056e3340e74a348cb603dd25dbafd04ea632b13264736f6c63430008110033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.