Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 69 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Update Price | 8571965 | 1976 days ago | IN | 0 ETH | 0.00184292 | ||||
Update Price | 8571312 | 1976 days ago | IN | 0 ETH | 0.00156684 | ||||
Update Price | 8571056 | 1976 days ago | IN | 0 ETH | 0.00156684 | ||||
Update Price | 8570758 | 1976 days ago | IN | 0 ETH | 0.00151281 | ||||
Update Price | 8570688 | 1976 days ago | IN | 0 ETH | 0.00151264 | ||||
Update Price | 8570130 | 1976 days ago | IN | 0 ETH | 0.00108469 | ||||
Update Price | 8569402 | 1976 days ago | IN | 0 ETH | 0.00130569 | ||||
Update Price | 8569229 | 1976 days ago | IN | 0 ETH | 0.00128187 | ||||
Update Price | 8569205 | 1976 days ago | IN | 0 ETH | 0.00128187 | ||||
Update Price | 8567926 | 1976 days ago | IN | 0 ETH | 0.00157947 | ||||
Update Price | 8567915 | 1976 days ago | IN | 0 ETH | 0.00153825 | ||||
Update Price | 8567898 | 1976 days ago | IN | 0 ETH | 0.00170331 | ||||
Update Price | 8567144 | 1977 days ago | IN | 0 ETH | 0.00173741 | ||||
Update Price | 8566467 | 1977 days ago | IN | 0 ETH | 0.00169207 | ||||
Update Price | 8562916 | 1977 days ago | IN | 0 ETH | 0.00084248 | ||||
Update Price | 8561359 | 1978 days ago | IN | 0 ETH | 0.00128187 | ||||
Update Price | 8560641 | 1978 days ago | IN | 0 ETH | 0.0014357 | ||||
Update Price | 8560508 | 1978 days ago | IN | 0 ETH | 0.00138442 | ||||
Update Price | 8560470 | 1978 days ago | IN | 0 ETH | 0.00142168 | ||||
Update Price | 8560380 | 1978 days ago | IN | 0 ETH | 0.00138442 | ||||
Update Price | 8558535 | 1978 days ago | IN | 0 ETH | 0.00128187 | ||||
Update Price | 8557950 | 1978 days ago | IN | 0 ETH | 0.00121106 | ||||
Update Price | 8557388 | 1978 days ago | IN | 0 ETH | 0.00071785 | ||||
Update Price | 8557234 | 1978 days ago | IN | 0 ETH | 0.0006897 | ||||
Update Price | 8557057 | 1978 days ago | IN | 0 ETH | 0.00066657 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
DaiPriceOracle
Compiler Version
v0.5.8+commit.23d335f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-09-06 */ /* Copyright 2019 The Hydro Protocol Foundation Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ pragma solidity 0.5.8; pragma experimental ABIEncoderV2; interface IEth2Dai{ function isClosed() external view returns (bool); function buyEnabled() external view returns (bool); function matchingEnabled() external view returns (bool); function getBuyAmount( address buy_gem, address pay_gem, uint256 pay_amt ) external view returns (uint256); function getPayAmount( address pay_gem, address buy_gem, uint256 buy_amt ) external view returns (uint256); } interface IMakerDaoOracle{ function peek() external view returns (bytes32, bool); } interface IStandardToken { function transfer( address _to, uint256 _amount ) external returns (bool); function balanceOf( address _owner) external view returns (uint256 balance); function transferFrom( address _from, address _to, uint256 _amount ) external returns (bool); function approve( address _spender, uint256 _amount ) external returns (bool); function allowance( address _owner, address _spender ) external view returns (uint256); } contract Ownable { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** @dev The Ownable constructor sets the original `owner` of the contract to the sender account. */ constructor() internal { _owner = msg.sender; emit OwnershipTransferred(address(0), _owner); } /** @return the address of the owner. */ function owner() public view returns(address) { return _owner; } /** @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner(), "NOT_OWNER"); _; } /** @return true if `msg.sender` is the owner of the contract. */ function isOwner() public view returns(bool) { return msg.sender == _owner; } /** @dev Allows the current owner to relinquish control of the contract. * @notice Renouncing to ownership will leave the contract without an owner. * It will not be possible to call the functions with the `onlyOwner` * modifier anymore. */ function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership( address newOwner ) public onlyOwner { require(newOwner != address(0), "INVALID_OWNER"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMath { // Multiplies two numbers, reverts on overflow. function mul( uint256 a, uint256 b ) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "MUL_ERROR"); return c; } // Integer division of two numbers truncating the quotient, reverts on division by zero. function div( uint256 a, uint256 b ) internal pure returns (uint256) { require(b > 0, "DIVIDING_ERROR"); return a / b; } function divCeil( uint256 a, uint256 b ) internal pure returns (uint256) { uint256 quotient = div(a, b); uint256 remainder = a - quotient * b; if (remainder > 0) { return quotient + 1; } else { return quotient; } } // Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend). function sub( uint256 a, uint256 b ) internal pure returns (uint256) { require(b <= a, "SUB_ERROR"); return a - b; } function sub( int256 a, uint256 b ) internal pure returns (int256) { require(b <= 2**255-1, "INT256_SUB_ERROR"); int256 c = a - int256(b); require(c <= a, "INT256_SUB_ERROR"); return c; } // Adds two numbers, reverts on overflow. function add( uint256 a, uint256 b ) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "ADD_ERROR"); return c; } function add( int256 a, uint256 b ) internal pure returns (int256) { require(b <= 2**255 - 1, "INT256_ADD_ERROR"); int256 c = a + int256(b); require(c >= a, "INT256_ADD_ERROR"); return c; } // Divides two numbers and returns the remainder (unsigned integer modulo), reverts when dividing by zero. function mod( uint256 a, uint256 b ) internal pure returns (uint256) { require(b != 0, "MOD_ERROR"); return a % b; } /** * Check the amount of precision lost by calculating multiple * (numerator / denominator). To * do this, we check the remainder and make sure it's proportionally less than 0.1%. So we have: * * ((numerator * multiple) % denominator) 1 * -------------------------------------- < ---- * numerator * multiple 1000 * * To avoid further division, we can move the denominators to the other sides and we get: * * ((numerator * multiple) % denominator) * 1000 < numerator * multiple * * Since we want to return true if there IS a rounding error, we simply flip the sign and our * final equation becomes: * * ((numerator * multiple) % denominator) * 1000 >= numerator * multiple * * @param numerator The numerator of the proportion * @param denominator The denominator of the proportion * @param multiple The amount we want a proportion of * @return Boolean indicating if there is a rounding error when calculating the proportion */ function isRoundingError( uint256 numerator, uint256 denominator, uint256 multiple ) internal pure returns (bool) { // numerator.mul(multiple).mod(denominator).mul(1000) >= numerator.mul(multiple) return mul(mod(mul(numerator, multiple), denominator), 1000) >= mul(numerator, multiple); } /** * Takes an amount (multiple) and calculates a proportion of it given a numerator/denominator * pair of values. The final value will be rounded down to the nearest integer value. * * This function will revert the transaction if rounding the final value down would lose more * than 0.1% precision. * * @param numerator The numerator of the proportion * @param denominator The denominator of the proportion * @param multiple The amount we want a proportion of * @return The final proportion of multiple rounded down */ function getPartialAmountFloor( uint256 numerator, uint256 denominator, uint256 multiple ) internal pure returns (uint256) { require(!isRoundingError(numerator, denominator, multiple), "ROUNDING_ERROR"); // numerator.mul(multiple).div(denominator) return div(mul(numerator, multiple), denominator); } /** * Returns the smaller integer of the two passed in. * * @param a Unsigned integer * @param b Unsigned integer * @return The smaller of the two integers */ function min( uint256 a, uint256 b ) internal pure returns (uint256) { return a < b ? a : b; } } contract DaiPriceOracle is Ownable{ using SafeMath for uint256; uint256 public price; uint256 constant ONE = 10**18; IMakerDaoOracle public constant makerDaoOracle = IMakerDaoOracle(0x729D19f657BD0614b4985Cf1D82531c67569197B); IStandardToken public constant DAI = IStandardToken(0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359); IEth2Dai public constant Eth2Dai = IEth2Dai(0x39755357759cE0d7f32dC8dC45414CCa409AE24e); address public constant UNISWAP = 0x09cabEC1eAd1c0Ba254B09efb3EE13841712bE14; address public constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; uint256 public constant eth2daiETHAmount = 10 ether; uint256 public constant eth2daiMaxSpread = 2 * ONE / 100; // 2.00% uint256 public constant uniswapMinETHAmount = 2000 ether; event UpdatePrice(uint256 newPrice); function getPrice( address asset ) external view returns (uint256) { require(asset == address(DAI), "ASSET_NOT_MATCH"); return price; } function adminSetPrice( uint256 _price ) external onlyOwner { if (!updatePrice()){ price = _price; } emit UpdatePrice(price); } function updatePrice() public returns (bool) { uint256 _price = peek(); if (_price != 0) { price = _price; emit UpdatePrice(price); return true; } else { return false; } } function peek() public view returns (uint256 _price) { uint256 makerDaoPrice = getMakerDaoPrice(); if (makerDaoPrice == 0) { return _price; } uint256 eth2daiPrice = getEth2DaiPrice(); if (eth2daiPrice > 0) { _price = makerDaoPrice.mul(ONE).div(eth2daiPrice); return _price; } uint256 uniswapPrice = getUniswapPrice(); if (uniswapPrice > 0) { _price = makerDaoPrice.mul(ONE).div(uniswapPrice); return _price; } return _price; } function getEth2DaiPrice() public view returns (uint256) { if (Eth2Dai.isClosed() || !Eth2Dai.buyEnabled() || !Eth2Dai.matchingEnabled()) { return 0; } uint256 bidDai = Eth2Dai.getBuyAmount(address(DAI), WETH, eth2daiETHAmount); uint256 askDai = Eth2Dai.getPayAmount(address(DAI), WETH, eth2daiETHAmount); uint256 bidPrice = bidDai.mul(ONE).div(eth2daiETHAmount); uint256 askPrice = askDai.mul(ONE).div(eth2daiETHAmount); uint256 spread = askPrice.mul(ONE).div(bidPrice).sub(ONE); if (spread > eth2daiMaxSpread) { return 0; } else { return bidPrice.add(askPrice).div(2); } } function getUniswapPrice() public view returns (uint256) { uint256 ethAmount = UNISWAP.balance; uint256 daiAmount = DAI.balanceOf(UNISWAP); uint256 uniswapPrice = daiAmount.mul(10**18).div(ethAmount); if (ethAmount < uniswapMinETHAmount) { return 0; } else { return uniswapPrice; } } function getMakerDaoPrice() public view returns (uint256) { (bytes32 value, bool has) = makerDaoOracle.peek(); if (has) { return uint256(value); } else { return 0; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"_price","type":"uint256"}],"name":"adminSetPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"makerDaoOracle","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"uniswapMinETHAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getUniswapPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"Eth2Dai","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"asset","type":"address"}],"name":"getPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"peek","outputs":[{"name":"_price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"updatePrice","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMakerDaoPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"price","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"WETH","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"eth2daiETHAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getEth2DaiPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"eth2daiMaxSpread","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"UNISWAP","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DAI","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newPrice","type":"uint256"}],"name":"UpdatePrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
60806040819052600080546001600160a01b03191633178082556001600160a01b0316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3610ff7806100576000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638da5cb5b116100ad578063b8d57df211610071578063b8d57df2146101fe578063ba01a3df14610206578063c745d9e71461020e578063e0bab4c414610216578063f2fde38b1461021e5761012c565b80638da5cb5b146101c95780638f32d59b146101de578063a035b1fe146101e6578063ad5c4648146101ee578063b53e3a4d146101f65761012c565b806341976e09116100f457806341976e091461018957806359e02dd71461019c578063673a7e28146101a4578063715018a6146101b957806375f54abc146101c15761012c565b80630cc3be2f146101315780630d89e2b71461014657806328431282146101645780632b6e1923146101795780633878d42514610181575b600080fd5b61014461013f366004610ce3565b610231565b005b61014e6102af565b60405161015b9190610ed8565b60405180910390f35b61016c6102c7565b60405161015b9190610f56565b61016c6102d4565b61014e6103d1565b61016c610197366004610c65565b6103e9565b61016c610432565b6101ac6104b7565b60405161015b9190610eca565b61014461051b565b61016c61058c565b6101d1610632565b60405161015b9190610e94565b6101ac610641565b61016c610652565b6101d1610658565b61016c610670565b61016c61067c565b61016c610a85565b6101d1610a90565b61014e610aa8565b61014461022c366004610c65565b610ac0565b610239610641565b61026157604051600160e51b62461bcd02815260040161025890610f26565b60405180910390fd5b6102696104b7565b6102735760018190555b7f1a15ab7124a4e1ce00837351261771caf1691cd7d85ed3a0ac3157a1ee1a38056001546040516102a49190610f56565b60405180910390a150565b73729d19f657bd0614b4985cf1d82531c67569197b81565b686c6b935b8bbd40000081565b604051600160e01b6370a082310281526000907309cabec1ead1c0ba254b09efb3ee13841712be1480319183917389d24a6b4ccb1b6faa2625fe562bdd9a23260359916370a082319161032991600401610e94565b60206040518083038186803b15801561034157600080fd5b505afa158015610355573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103799190810190610d01565b905060006103a58361039984670de0b6b3a764000063ffffffff610b6b16565b9063ffffffff610bb116565b9050686c6b935b8bbd4000008310156103c457600093505050506103ce565b92506103ce915050565b90565b7339755357759ce0d7f32dc8dc45414cca409ae24e81565b60006001600160a01b0382167389d24a6b4ccb1b6faa2625fe562bdd9a232603591461042a57604051600160e51b62461bcd02815260040161025890610ee6565b505060015490565b60008061043d61058c565b90508061044a57506103ce565b600061045461067c565b90508015610478576103c48161039984670de0b6b3a764000063ffffffff610b6b16565b60006104826102d4565b905080156104b1576104a68161039985670de0b6b3a764000063ffffffff610b6b16565b93506103ce92505050565b50505090565b6000806104c2610432565b905080156105115760018190556040517f1a15ab7124a4e1ce00837351261771caf1691cd7d85ed3a0ac3157a1ee1a3805906104ff908390610f56565b60405180910390a160019150506103ce565b60009150506103ce565b610523610641565b61054257604051600160e51b62461bcd02815260040161025890610f26565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600080600073729d19f657bd0614b4985cf1d82531c67569197b6001600160a01b03166359e02dd76040518163ffffffff1660e01b8152600401604080518083038186803b1580156105dd57600080fd5b505afa1580156105f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106159190810190610ca9565b915091508015610627575090506103ce565b6000925050506103ce565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b60015481565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b678ac7230489e8000081565b60007339755357759ce0d7f32dc8dc45414cca409ae24e6001600160a01b031663c2b6b58c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106cb57600080fd5b505afa1580156106df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107039190810190610c8b565b8061079057507339755357759ce0d7f32dc8dc45414cca409ae24e6001600160a01b031663f582d2936040518163ffffffff1660e01b815260040160206040518083038186803b15801561075657600080fd5b505afa15801561076a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061078e9190810190610c8b565b155b8061081d57507339755357759ce0d7f32dc8dc45414cca409ae24e6001600160a01b03166301492a0b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107e357600080fd5b505afa1580156107f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061081b9190810190610c8b565b155b1561082a575060006103ce565b604051600160e11b630a2513a90281526000907339755357759ce0d7f32dc8dc45414cca409ae24e9063144a27529061089b907389d24a6b4ccb1b6faa2625fe562bdd9a232603599073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290678ac7230489e8000090600401610ea2565b60206040518083038186803b1580156108b357600080fd5b505afa1580156108c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108eb9190810190610d01565b6040517fff1fd9740000000000000000000000000000000000000000000000000000000081529091506000907339755357759ce0d7f32dc8dc45414cca409ae24e9063ff1fd97490610975907389d24a6b4ccb1b6faa2625fe562bdd9a232603599073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290678ac7230489e8000090600401610ea2565b60206040518083038186803b15801561098d57600080fd5b505afa1580156109a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109c59190810190610d01565b905060006109ed678ac7230489e8000061039985670de0b6b3a764000063ffffffff610b6b16565b90506000610a15678ac7230489e8000061039985670de0b6b3a764000063ffffffff610b6b16565b90506000610a45670de0b6b3a7640000610a3985610399868463ffffffff610b6b16565b9063ffffffff610be616565b905066470de4df820000811115610a64576000955050505050506103ce565b610a796002610399858563ffffffff610c1116565b955050505050506103ce565b66470de4df82000081565b7309cabec1ead1c0ba254b09efb3ee13841712be1481565b7389d24a6b4ccb1b6faa2625fe562bdd9a2326035981565b610ac8610641565b610ae757604051600160e51b62461bcd02815260040161025890610f26565b6001600160a01b038116610b1057604051600160e51b62461bcd02815260040161025890610f16565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082610b7a57506000610bab565b82820282848281610b8757fe5b0414610ba857604051600160e51b62461bcd02815260040161025890610f46565b90505b92915050565b6000808211610bd557604051600160e51b62461bcd02815260040161025890610ef6565b818381610bde57fe5b049392505050565b600082821115610c0b57604051600160e51b62461bcd02815260040161025890610f06565b50900390565b600082820183811015610ba857604051600160e51b62461bcd02815260040161025890610f36565b8035610bab81610f94565b8051610bab81610fab565b8051610bab81610fb4565b8035610bab81610fb4565b600060208284031215610c7757600080fd5b6000610c838484610c39565b949350505050565b600060208284031215610c9d57600080fd5b6000610c838484610c44565b60008060408385031215610cbc57600080fd5b6000610cc88585610c4f565b9250506020610cd985828601610c44565b9150509250929050565b600060208284031215610cf557600080fd5b6000610c838484610c5a565b600060208284031215610d1357600080fd5b6000610c838484610c4f565b610d2881610f6d565b82525050565b610d2881610f78565b610d2881610f89565b6000610d4d600f83610f64565b7f41535345545f4e4f545f4d415443480000000000000000000000000000000000815260200192915050565b6000610d86600e83610f64565b7f4449564944494e475f4552524f52000000000000000000000000000000000000815260200192915050565b6000610dbf600983610f64565b600160b91b6829aaa12fa2a92927a902815260200192915050565b6000610de7600d83610f64565b7f494e56414c49445f4f574e455200000000000000000000000000000000000000815260200192915050565b6000610e20600983610f64565b600160b91b682727aa2fa7aba722a902815260200192915050565b6000610e48600983610f64565b600160b91b6820a2222fa2a92927a902815260200192915050565b6000610e70600983610f64565b600160b91b6826aaa62fa2a92927a902815260200192915050565b610d28816103ce565b60208101610bab8284610d1f565b60608101610eb08286610d1f565b610ebd6020830185610d1f565b610c836040830184610e8b565b60208101610bab8284610d2e565b60208101610bab8284610d37565b60208082528101610bab81610d40565b60208082528101610bab81610d79565b60208082528101610bab81610db2565b60208082528101610bab81610dda565b60208082528101610bab81610e13565b60208082528101610bab81610e3b565b60208082528101610bab81610e63565b60208101610bab8284610e8b565b90815260200190565b6000610bab82610f7d565b151590565b6001600160a01b031690565b6000610bab82610f6d565b610f9d81610f6d565b8114610fa857600080fd5b50565b610f9d81610f78565b610f9d816103ce56fea265627a7a7230582083c3fc9dd29b06ec54131f192db147b0047f1a6b5d4e802c0fba3abaac910fc66c6578706572696d656e74616cf50037
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061012c5760003560e01c80638da5cb5b116100ad578063b8d57df211610071578063b8d57df2146101fe578063ba01a3df14610206578063c745d9e71461020e578063e0bab4c414610216578063f2fde38b1461021e5761012c565b80638da5cb5b146101c95780638f32d59b146101de578063a035b1fe146101e6578063ad5c4648146101ee578063b53e3a4d146101f65761012c565b806341976e09116100f457806341976e091461018957806359e02dd71461019c578063673a7e28146101a4578063715018a6146101b957806375f54abc146101c15761012c565b80630cc3be2f146101315780630d89e2b71461014657806328431282146101645780632b6e1923146101795780633878d42514610181575b600080fd5b61014461013f366004610ce3565b610231565b005b61014e6102af565b60405161015b9190610ed8565b60405180910390f35b61016c6102c7565b60405161015b9190610f56565b61016c6102d4565b61014e6103d1565b61016c610197366004610c65565b6103e9565b61016c610432565b6101ac6104b7565b60405161015b9190610eca565b61014461051b565b61016c61058c565b6101d1610632565b60405161015b9190610e94565b6101ac610641565b61016c610652565b6101d1610658565b61016c610670565b61016c61067c565b61016c610a85565b6101d1610a90565b61014e610aa8565b61014461022c366004610c65565b610ac0565b610239610641565b61026157604051600160e51b62461bcd02815260040161025890610f26565b60405180910390fd5b6102696104b7565b6102735760018190555b7f1a15ab7124a4e1ce00837351261771caf1691cd7d85ed3a0ac3157a1ee1a38056001546040516102a49190610f56565b60405180910390a150565b73729d19f657bd0614b4985cf1d82531c67569197b81565b686c6b935b8bbd40000081565b604051600160e01b6370a082310281526000907309cabec1ead1c0ba254b09efb3ee13841712be1480319183917389d24a6b4ccb1b6faa2625fe562bdd9a23260359916370a082319161032991600401610e94565b60206040518083038186803b15801561034157600080fd5b505afa158015610355573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103799190810190610d01565b905060006103a58361039984670de0b6b3a764000063ffffffff610b6b16565b9063ffffffff610bb116565b9050686c6b935b8bbd4000008310156103c457600093505050506103ce565b92506103ce915050565b90565b7339755357759ce0d7f32dc8dc45414cca409ae24e81565b60006001600160a01b0382167389d24a6b4ccb1b6faa2625fe562bdd9a232603591461042a57604051600160e51b62461bcd02815260040161025890610ee6565b505060015490565b60008061043d61058c565b90508061044a57506103ce565b600061045461067c565b90508015610478576103c48161039984670de0b6b3a764000063ffffffff610b6b16565b60006104826102d4565b905080156104b1576104a68161039985670de0b6b3a764000063ffffffff610b6b16565b93506103ce92505050565b50505090565b6000806104c2610432565b905080156105115760018190556040517f1a15ab7124a4e1ce00837351261771caf1691cd7d85ed3a0ac3157a1ee1a3805906104ff908390610f56565b60405180910390a160019150506103ce565b60009150506103ce565b610523610641565b61054257604051600160e51b62461bcd02815260040161025890610f26565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600080600073729d19f657bd0614b4985cf1d82531c67569197b6001600160a01b03166359e02dd76040518163ffffffff1660e01b8152600401604080518083038186803b1580156105dd57600080fd5b505afa1580156105f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106159190810190610ca9565b915091508015610627575090506103ce565b6000925050506103ce565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b60015481565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b678ac7230489e8000081565b60007339755357759ce0d7f32dc8dc45414cca409ae24e6001600160a01b031663c2b6b58c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106cb57600080fd5b505afa1580156106df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107039190810190610c8b565b8061079057507339755357759ce0d7f32dc8dc45414cca409ae24e6001600160a01b031663f582d2936040518163ffffffff1660e01b815260040160206040518083038186803b15801561075657600080fd5b505afa15801561076a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061078e9190810190610c8b565b155b8061081d57507339755357759ce0d7f32dc8dc45414cca409ae24e6001600160a01b03166301492a0b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107e357600080fd5b505afa1580156107f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061081b9190810190610c8b565b155b1561082a575060006103ce565b604051600160e11b630a2513a90281526000907339755357759ce0d7f32dc8dc45414cca409ae24e9063144a27529061089b907389d24a6b4ccb1b6faa2625fe562bdd9a232603599073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290678ac7230489e8000090600401610ea2565b60206040518083038186803b1580156108b357600080fd5b505afa1580156108c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108eb9190810190610d01565b6040517fff1fd9740000000000000000000000000000000000000000000000000000000081529091506000907339755357759ce0d7f32dc8dc45414cca409ae24e9063ff1fd97490610975907389d24a6b4ccb1b6faa2625fe562bdd9a232603599073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290678ac7230489e8000090600401610ea2565b60206040518083038186803b15801561098d57600080fd5b505afa1580156109a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109c59190810190610d01565b905060006109ed678ac7230489e8000061039985670de0b6b3a764000063ffffffff610b6b16565b90506000610a15678ac7230489e8000061039985670de0b6b3a764000063ffffffff610b6b16565b90506000610a45670de0b6b3a7640000610a3985610399868463ffffffff610b6b16565b9063ffffffff610be616565b905066470de4df820000811115610a64576000955050505050506103ce565b610a796002610399858563ffffffff610c1116565b955050505050506103ce565b66470de4df82000081565b7309cabec1ead1c0ba254b09efb3ee13841712be1481565b7389d24a6b4ccb1b6faa2625fe562bdd9a2326035981565b610ac8610641565b610ae757604051600160e51b62461bcd02815260040161025890610f26565b6001600160a01b038116610b1057604051600160e51b62461bcd02815260040161025890610f16565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082610b7a57506000610bab565b82820282848281610b8757fe5b0414610ba857604051600160e51b62461bcd02815260040161025890610f46565b90505b92915050565b6000808211610bd557604051600160e51b62461bcd02815260040161025890610ef6565b818381610bde57fe5b049392505050565b600082821115610c0b57604051600160e51b62461bcd02815260040161025890610f06565b50900390565b600082820183811015610ba857604051600160e51b62461bcd02815260040161025890610f36565b8035610bab81610f94565b8051610bab81610fab565b8051610bab81610fb4565b8035610bab81610fb4565b600060208284031215610c7757600080fd5b6000610c838484610c39565b949350505050565b600060208284031215610c9d57600080fd5b6000610c838484610c44565b60008060408385031215610cbc57600080fd5b6000610cc88585610c4f565b9250506020610cd985828601610c44565b9150509250929050565b600060208284031215610cf557600080fd5b6000610c838484610c5a565b600060208284031215610d1357600080fd5b6000610c838484610c4f565b610d2881610f6d565b82525050565b610d2881610f78565b610d2881610f89565b6000610d4d600f83610f64565b7f41535345545f4e4f545f4d415443480000000000000000000000000000000000815260200192915050565b6000610d86600e83610f64565b7f4449564944494e475f4552524f52000000000000000000000000000000000000815260200192915050565b6000610dbf600983610f64565b600160b91b6829aaa12fa2a92927a902815260200192915050565b6000610de7600d83610f64565b7f494e56414c49445f4f574e455200000000000000000000000000000000000000815260200192915050565b6000610e20600983610f64565b600160b91b682727aa2fa7aba722a902815260200192915050565b6000610e48600983610f64565b600160b91b6820a2222fa2a92927a902815260200192915050565b6000610e70600983610f64565b600160b91b6826aaa62fa2a92927a902815260200192915050565b610d28816103ce565b60208101610bab8284610d1f565b60608101610eb08286610d1f565b610ebd6020830185610d1f565b610c836040830184610e8b565b60208101610bab8284610d2e565b60208101610bab8284610d37565b60208082528101610bab81610d40565b60208082528101610bab81610d79565b60208082528101610bab81610db2565b60208082528101610bab81610dda565b60208082528101610bab81610e13565b60208082528101610bab81610e3b565b60208082528101610bab81610e63565b60208101610bab8284610e8b565b90815260200190565b6000610bab82610f7d565b151590565b6001600160a01b031690565b6000610bab82610f6d565b610f9d81610f6d565b8114610fa857600080fd5b50565b610f9d81610f78565b610f9d816103ce56fea265627a7a7230582083c3fc9dd29b06ec54131f192db147b0047f1a6b5d4e802c0fba3abaac910fc66c6578706572696d656e74616cf50037
Deployed Bytecode Sourcemap
9295:3661:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9295:3661:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10365:211;;;;;;;;;:::i;:::-;;9438:108;;;:::i;:::-;;;;;;;;;;;;;;;;10044:56;;;:::i;:::-;;;;;;;;12275:402;;;:::i;9655:87::-;;;:::i;10153:204::-;;;;;;;;;:::i;10881:630::-;;;:::i;10584:289::-;;;:::i;:::-;;;;;;;;3363:163;;;:::i;12685:268::-;;;:::i;2611:110::-;;;:::i;:::-;;;;;;;;2962:123;;;:::i;9371:20::-;;;:::i;9834:73::-;;;:::i;9914:51::-;;;:::i;11519:748::-;;;:::i;9972:56::-;;;:::i;9751:76::-;;;:::i;9553:95::-;;;:::i;3695:250::-;;;;;;;;;:::i;10365:211::-;2840:9;:7;:9::i;:::-;2832:31;;;;-1:-1:-1;;;;;2832:31:0;;;;;;;;;;;;;;;;;10478:13;:11;:13::i;:::-;10473:60;;10507:5;:14;;;10473:60;10550:18;10562:5;;10550:18;;;;;;;;;;;;;;;10365:211;:::o;9438:108::-;9503:42;9438:108;:::o;10044:56::-;10090:10;10044:56;:::o;12275:402::-;12441:22;;-1:-1:-1;;;;;12441:22:0;;12350:7;;9785:42;12395:15;;;12350:7;;9605:42;;12441:13;;:22;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12441:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12441:22:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12441:22:0;;;;;;;;;12421:42;-1:-1:-1;12474:20:0;12497:36;12523:9;12497:21;12421:42;12511:6;12497:21;:13;:21;:::i;:::-;:25;:36;:25;:36;:::i;:::-;12474:59;;10090:10;12550:9;:31;12546:124;;;12605:1;12598:8;;;;;;;12546:124;12646:12;-1:-1:-1;12639:19:0;;-1:-1:-1;;12639:19:0;12275:402;;:::o;9655:87::-;9699:42;9655:87;:::o;10153:204::-;10252:7;-1:-1:-1;;;;;10285:21:0;;9605:42;10285:21;10277:49;;;;-1:-1:-1;;;;;10277:49:0;;;;;;;;;-1:-1:-1;;10344:5:0;;;10153:204::o;10881:630::-;10945:14;10977:21;11001:18;:16;:18::i;:::-;10977:42;-1:-1:-1;11036:18:0;11032:64;;-1:-1:-1;11071:13:0;;11032:64;11108:20;11131:17;:15;:17::i;:::-;11108:40;-1:-1:-1;11165:16:0;;11161:126;;11207:40;11234:12;11207:22;:13;9423:6;11207:22;:17;:22;:::i;11161:126::-;11299:20;11322:17;:15;:17::i;:::-;11299:40;-1:-1:-1;11356:16:0;;11352:126;;11398:40;11425:12;11398:22;:13;9423:6;11398:22;:17;:22;:::i;:40::-;11389:49;-1:-1:-1;11453:13:0;;-1:-1:-1;;;11453:13:0;11352:126;-1:-1:-1;;;10881:630:0;:::o;10584:289::-;10641:4;10663:14;10680:6;:4;:6::i;:::-;10663:23;-1:-1:-1;10703:11:0;;10699:167;;10731:5;:14;;;10765:18;;;;;;10739:6;;10765:18;;;;;;;;;;10805:4;10798:11;;;;;10699:167;10849:5;10842:12;;;;;3363:163;2840:9;:7;:9::i;:::-;2832:31;;;;-1:-1:-1;;;;;2832:31:0;;;;;;;;;3485:1;3469:6;;3448:40;;-1:-1:-1;;;;;3469:6:0;;;;3448:40;;3485:1;;3448:40;3516:1;3499:19;;-1:-1:-1;;;;;;3499:19:0;;;3363:163::o;12685:268::-;12761:7;12787:13;12802:8;9503:42;-1:-1:-1;;;;;12814:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12814:21:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12814:21:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12814:21:0;;;;;;;;;12786:49;;;;12852:3;12848:98;;;-1:-1:-1;12887:5:0;-1:-1:-1;12872:21:0;;12848:98;12933:1;12926:8;;;;;;2611:110;2675:7;2707:6;-1:-1:-1;;;;;2707:6:0;2611:110;:::o;2962:123::-;3028:4;3071:6;-1:-1:-1;;;;;3071:6:0;3057:10;:20;;2962:123::o;9371:20::-;;;;:::o;9834:73::-;9865:42;9834:73;:::o;9914:51::-;9957:8;9914:51;:::o;11519:748::-;11594:7;9699:42;-1:-1:-1;;;;;11623:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11623:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11623:18:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11623:18:0;;;;;;;;;:43;;;;9699:42;-1:-1:-1;;;;;11646:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11646:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11646:20:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11646:20:0;;;;;;;;;11645:21;11623:43;:73;;;;9699:42;-1:-1:-1;;;;;11671:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11671:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11671:25:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11671:25:0;;;;;;;;;11670:26;11623:73;11619:114;;;-1:-1:-1;11720:1:0;11713:8;;11619:114;11762:58;;-1:-1:-1;;;;;11762:58:0;;11745:14;;9699:42;;11762:20;;:58;;9605:42;;9865;;9957:8;;11762:58;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11762:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11762:58:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11762:58:0;;;;;;;;;11848;;;;;11745:75;;-1:-1:-1;11831:14:0;;9699:42;;11848:20;;:58;;9605:42;;9865;;9957:8;;11848:58;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11848:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11848:58:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11848:58:0;;;;;;;;;11831:75;-1:-1:-1;11919:16:0;11938:37;9957:8;11938:15;:6;9423;11938:15;:10;:15;:::i;:37::-;11919:56;-1:-1:-1;11986:16:0;12005:37;9957:8;12005:15;:6;9423;12005:15;:10;:15;:::i;:37::-;11986:56;-1:-1:-1;12055:14:0;12072:40;9423:6;12072:31;12094:8;12072:17;11986:56;9423:6;12072:17;:12;:17;:::i;:31::-;:35;:40;:35;:40;:::i;:::-;12055:57;-1:-1:-1;10015:13:0;12129:25;;12125:135;;;12178:1;12171:8;;;;;;;;;12125:135;12219:29;12246:1;12219:22;:8;12232;12219:22;:12;:22;:::i;:29::-;12212:36;;;;;;;;;9972:56;10015:13;9972:56;:::o;9751:76::-;9785:42;9751:76;:::o;9553:95::-;9605:42;9553:95;:::o;3695:250::-;2840:9;:7;:9::i;:::-;2832:31;;;;-1:-1:-1;;;;;2832:31:0;;;;;;;;;-1:-1:-1;;;;;3815:22:0;;3807:48;;;;-1:-1:-1;;;;;3807:48:0;;;;;;;;;3892:6;;;3871:38;;-1:-1:-1;;;;;3871:38:0;;;;3892:6;;;3871:38;;;3920:6;:17;;-1:-1:-1;;;;;;3920:17:0;-1:-1:-1;;;;;3920:17:0;;;;;;;;;;3695:250::o;4031:283::-;4141:7;4170:6;4166:47;;-1:-1:-1;4200:1:0;4193:8;;4166:47;4237:5;;;4241:1;4237;:5;:1;4261:5;;;;;:10;4253:32;;;;-1:-1:-1;;;;;4253:32:0;;;;;;;;;4305:1;-1:-1:-1;4031:283:0;;;;;:::o;4416:198::-;4526:7;4563:1;4559;:5;4551:32;;;;-1:-1:-1;;;;;4551:32:0;;;;;;;;;4605:1;4601;:5;;;;;;;4416:198;-1:-1:-1;;;4416:198:0:o;5072:194::-;5182:7;5220:1;5215;:6;;5207:28;;;;-1:-1:-1;;;;;5207:28:0;;;;;;;;;-1:-1:-1;5253:5:0;;;5072:194::o;5612:218::-;5722:7;5759:5;;;5783:6;;;;5775:28;;;;-1:-1:-1;;;;;5775:28:0;;;;;;;;5:130:-1;72:20;;97:33;72:20;97:33;;142:128;217:13;;235:30;217:13;235:30;;277:134;355:13;;373:33;355:13;373:33;;418:130;485:20;;510:33;485:20;510:33;;696:241;;800:2;788:9;779:7;775:23;771:32;768:2;;;816:1;813;806:12;768:2;851:1;868:53;913:7;893:9;868:53;;;858:63;762:175;-1:-1;;;;762:175;944:257;;1056:2;1044:9;1035:7;1031:23;1027:32;1024:2;;;1072:1;1069;1062:12;1024:2;1107:1;1124:61;1177:7;1157:9;1124:61;;1208:393;;;1337:2;1325:9;1316:7;1312:23;1308:32;1305:2;;;1353:1;1350;1343:12;1305:2;1388:1;1405:64;1461:7;1441:9;1405:64;;;1395:74;;1367:108;1506:2;1524:61;1577:7;1568:6;1557:9;1553:22;1524:61;;;1514:71;;1485:106;1299:302;;;;;;1608:241;;1712:2;1700:9;1691:7;1687:23;1683:32;1680:2;;;1728:1;1725;1718:12;1680:2;1763:1;1780:53;1825:7;1805:9;1780:53;;1856:263;;1971:2;1959:9;1950:7;1946:23;1942:32;1939:2;;;1987:1;1984;1977:12;1939:2;2022:1;2039:64;2095:7;2075:9;2039:64;;2126:113;2209:24;2227:5;2209:24;;;2204:3;2197:37;2191:48;;;2246:104;2323:21;2338:5;2323:21;;2357:156;2455:52;2501:5;2455:52;;2873:364;;3033:67;3097:2;3092:3;3033:67;;;3133:66;3113:87;;3228:2;3219:12;;3019:218;-1:-1;;3019:218;3246:364;;3406:67;3470:2;3465:3;3406:67;;;3506:66;3486:87;;3601:2;3592:12;;3392:218;-1:-1;;3392:218;3619:363;;3779:66;3843:1;3838:3;3779:66;;;-1:-1;;;;;3858:87;;3973:2;3964:12;;3765:217;-1:-1;;3765:217;3991:364;;4151:67;4215:2;4210:3;4151:67;;;4251:66;4231:87;;4346:2;4337:12;;4137:218;-1:-1;;4137:218;4364:363;;4524:66;4588:1;4583:3;4524:66;;;-1:-1;;;;;4603:87;;4718:2;4709:12;;4510:217;-1:-1;;4510:217;4736:363;;4896:66;4960:1;4955:3;4896:66;;;-1:-1;;;;;4975:87;;5090:2;5081:12;;4882:217;-1:-1;;4882:217;5108:363;;5268:66;5332:1;5327:3;5268:66;;;-1:-1;;;;;5347:87;;5462:2;5453:12;;5254:217;-1:-1;;5254:217;5479:113;5562:24;5580:5;5562:24;;5599:213;5717:2;5702:18;;5731:71;5706:9;5775:6;5731:71;;5819:435;5993:2;5978:18;;6007:71;5982:9;6051:6;6007:71;;;6089:72;6157:2;6146:9;6142:18;6133:6;6089:72;;;6172;6240:2;6229:9;6225:18;6216:6;6172:72;;6261:201;6373:2;6358:18;;6387:65;6362:9;6425:6;6387:65;;6469:243;6602:2;6587:18;;6616:86;6591:9;6675:6;6616:86;;7245:407;7436:2;7450:47;;;7421:18;;7511:131;7421:18;7511:131;;7659:407;7850:2;7864:47;;;7835:18;;7925:131;7835:18;7925:131;;8073:407;8264:2;8278:47;;;8249:18;;8339:131;8249:18;8339:131;;8487:407;8678:2;8692:47;;;8663:18;;8753:131;8663:18;8753:131;;8901:407;9092:2;9106:47;;;9077:18;;9167:131;9077:18;9167:131;;9315:407;9506:2;9520:47;;;9491:18;;9581:131;9491:18;9581:131;;9729:407;9920:2;9934:47;;;9905:18;;9995:131;9905:18;9995:131;;10143:213;10261:2;10246:18;;10275:71;10250:9;10319:6;10275:71;;10364:163;10467:19;;;10516:4;10507:14;;10460:67;10535:91;;10597:24;10615:5;10597:24;;10633:85;10699:13;10692:21;;10675:43;10804:121;-1:-1;;;;;10866:54;;10849:76;11011:151;;11105:52;11151:5;11105:52;;11914:117;11983:24;12001:5;11983:24;;;11976:5;11973:35;11963:2;;12022:1;12019;12012:12;11963:2;11957:74;;12038:111;12104:21;12119:5;12104:21;;12156:117;12225:24;12243:5;12225:24;
Swarm Source
bzzr://83c3fc9dd29b06ec54131f192db147b0047f1a6b5d4e802c0fba3abaac910fc6
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.