Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 11250348 | 1932 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
DssSpell
Compiler Version
v0.5.12+commit.7709ece9
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2020-11-13
*/
// hevm: flattened sources of src/DssSpell.sol
pragma solidity =0.5.12 >=0.5.12;
////// lib/dss-interfaces/src/dapp/DSPauseAbstract.sol
/* pragma solidity >=0.5.12; */
// https://github.com/dapphub/ds-pause
interface DSPauseAbstract {
function setOwner(address) external;
function setAuthority(address) external;
function setDelay(uint256) external;
function plans(bytes32) external view returns (bool);
function proxy() external view returns (address);
function delay() external view returns (uint256);
function plot(address, bytes32, bytes calldata, uint256) external;
function drop(address, bytes32, bytes calldata, uint256) external;
function exec(address, bytes32, bytes calldata, uint256) external returns (bytes memory);
}
////// lib/dss-interfaces/src/dss/CatAbstract.sol
/* pragma solidity >=0.5.12; */
// https://github.com/makerdao/dss/blob/master/src/cat.sol
interface CatAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function box() external view returns (uint256);
function litter() external view returns (uint256);
function ilks(bytes32) external view returns (address, uint256, uint256);
function live() external view returns (uint256);
function vat() external view returns (address);
function vow() external view returns (address);
function file(bytes32, address) external;
function file(bytes32, uint256) external;
function file(bytes32, bytes32, uint256) external;
function file(bytes32, bytes32, address) external;
function bite(bytes32, address) external returns (uint256);
function claw(uint256) external;
function cage() external;
}
////// lib/dss-interfaces/src/dss/ChainlogAbstract.sol
/* pragma solidity >=0.5.12; */
// https://github.com/makerdao/dss-chain-log
interface ChainlogAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function keys() external view returns (bytes32[] memory);
function version() external view returns (string memory);
function ipfs() external view returns (string memory);
function setVersion(string calldata) external;
function setSha256sum(string calldata) external;
function setIPFS(string calldata) external;
function setAddress(bytes32,address) external;
function removeAddress(bytes32) external;
function count() external view returns (uint256);
function get(uint256) external view returns (bytes32,address);
function list() external view returns (bytes32[] memory);
function getAddress(bytes32) external view returns (address);
}
////// lib/dss-interfaces/src/dss/FlipAbstract.sol
/* pragma solidity >=0.5.12; */
// https://github.com/makerdao/dss/blob/master/src/flip.sol
interface FlipAbstract {
function wards(address) external view returns (uint256);
function rely(address usr) external;
function deny(address usr) external;
function bids(uint256) external view returns (uint256, uint256, address, uint48, uint48, address, address, uint256);
function vat() external view returns (address);
function cat() external view returns (address);
function ilk() external view returns (bytes32);
function beg() external view returns (uint256);
function ttl() external view returns (uint48);
function tau() external view returns (uint48);
function kicks() external view returns (uint256);
function file(bytes32, uint256) external;
function kick(address, address, uint256, uint256, uint256) external returns (uint256);
function tick(uint256) external;
function tend(uint256, uint256, uint256) external;
function dent(uint256, uint256, uint256) external;
function deal(uint256) external;
function yank(uint256) external;
}
////// lib/dss-interfaces/src/dss/FlipperMomAbstract.sol
/* pragma solidity >=0.5.12; */
// https://github.com/makerdao/flipper-mom/blob/master/src/FlipperMom.sol
interface FlipperMomAbstract {
function owner() external returns (address);
function setOwner(address) external;
function authority() external returns (address);
function setAuthority(address) external;
function cat() external returns (address);
function rely(address) external;
function deny(address) external;
}
////// lib/dss-interfaces/src/dss/GemJoinAbstract.sol
/* pragma solidity >=0.5.12; */
// https://github.com/makerdao/dss/blob/master/src/join.sol
interface GemJoinAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function vat() external view returns (address);
function ilk() external view returns (bytes32);
function gem() external view returns (address);
function dec() external view returns (uint256);
function live() external view returns (uint256);
function cage() external;
function join(address, uint256) external;
function exit(address, uint256) external;
}
////// lib/dss-interfaces/src/dss/IlkRegistryAbstract.sol
/* pragma solidity >=0.5.12; */
// https://github.com/makerdao/ilk-registry
interface IlkRegistryAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function vat() external view returns (address);
function cat() external view returns (address);
function spot() external view returns (address);
function ilkData(bytes32) external view returns (
uint256, address, address, address, address, uint256, string memory, string memory
);
function ilks() external view returns (bytes32[] memory);
function ilks(uint) external view returns (bytes32);
function add(address) external;
function remove(bytes32) external;
function update(bytes32) external;
function removeAuth(bytes32) external;
function file(bytes32, address) external;
function file(bytes32, bytes32, address) external;
function file(bytes32, bytes32, uint256) external;
function file(bytes32, bytes32, string calldata) external;
function count() external view returns (uint256);
function list() external view returns (bytes32[] memory);
function list(uint256, uint256) external view returns (bytes32[] memory);
function get(uint256) external view returns (bytes32);
function info(bytes32) external view returns (
string memory, string memory, uint256, address, address, address, address
);
function pos(bytes32) external view returns (uint256);
function gem(bytes32) external view returns (address);
function pip(bytes32) external view returns (address);
function join(bytes32) external view returns (address);
function flip(bytes32) external view returns (address);
function dec(bytes32) external view returns (uint256);
function symbol(bytes32) external view returns (string memory);
function name(bytes32) external view returns (string memory);
}
////// lib/dss-interfaces/src/dss/JugAbstract.sol
/* pragma solidity >=0.5.12; */
// https://github.com/makerdao/dss/blob/master/src/jug.sol
interface JugAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function ilks(bytes32) external view returns (uint256, uint256);
function vat() external view returns (address);
function vow() external view returns (address);
function base() external view returns (address);
function init(bytes32) external;
function file(bytes32, bytes32, uint256) external;
function file(bytes32, uint256) external;
function file(bytes32, address) external;
function drip(bytes32) external returns (uint256);
}
////// lib/dss-interfaces/src/dss/MedianAbstract.sol
/* pragma solidity >=0.5.12; */
// https://github.com/makerdao/median
interface MedianAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function age() external view returns (uint32);
function wat() external view returns (bytes32);
function bar() external view returns (uint256);
function orcl(address) external view returns (uint256);
function bud(address) external view returns (uint256);
function slot(uint8) external view returns (address);
function read() external view returns (uint256);
function peek() external view returns (uint256, bool);
function lift(address[] calldata) external;
function drop(address[] calldata) external;
function setBar(uint256) external;
function kiss(address) external;
function diss(address) external;
function kiss(address[] calldata) external;
function diss(address[] calldata) external;
function poke(uint256[] calldata, uint256[] calldata, uint8[] calldata, bytes32[] calldata, bytes32[] calldata) external;
}
////// lib/dss-interfaces/src/dss/OsmAbstract.sol
/* pragma solidity >=0.5.12; */
// https://github.com/makerdao/osm
interface OsmAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function stopped() external view returns (uint256);
function src() external view returns (address);
function hop() external view returns (uint16);
function zzz() external view returns (uint64);
function cur() external view returns (uint128, uint128);
function nxt() external view returns (uint128, uint128);
function bud(address) external view returns (uint256);
function stop() external;
function start() external;
function change(address) external;
function step(uint16) external;
function void() external;
function pass() external view returns (bool);
function poke() external;
function peek() external view returns (bytes32, bool);
function peep() external view returns (bytes32, bool);
function read() external view returns (bytes32);
function kiss(address) external;
function diss(address) external;
function kiss(address[] calldata) external;
function diss(address[] calldata) external;
}
////// lib/dss-interfaces/src/dss/OsmMomAbstract.sol
/* pragma solidity >=0.5.12; */
// https://github.com/makerdao/osm-mom
interface OsmMomAbstract {
function owner() external view returns (address);
function authority() external view returns (address);
function osms(bytes32) external view returns (address);
function setOsm(bytes32, address) external;
function setOwner(address) external;
function setAuthority(address) external;
function stop(bytes32) external;
}
////// lib/dss-interfaces/src/dss/SpotAbstract.sol
/* pragma solidity >=0.5.12; */
// https://github.com/makerdao/dss/blob/master/src/spot.sol
interface SpotAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function ilks(bytes32) external view returns (address, uint256);
function vat() external view returns (address);
function par() external view returns (uint256);
function live() external view returns (uint256);
function file(bytes32, bytes32, address) external;
function file(bytes32, uint256) external;
function file(bytes32, bytes32, uint256) external;
function poke(bytes32) external;
function cage() external;
}
////// lib/dss-interfaces/src/dss/VatAbstract.sol
/* pragma solidity >=0.5.12; */
// https://github.com/makerdao/dss/blob/master/src/vat.sol
interface VatAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function can(address, address) external view returns (uint256);
function hope(address) external;
function nope(address) external;
function ilks(bytes32) external view returns (uint256, uint256, uint256, uint256, uint256);
function urns(bytes32, address) external view returns (uint256, uint256);
function gem(bytes32, address) external view returns (uint256);
function dai(address) external view returns (uint256);
function sin(address) external view returns (uint256);
function debt() external view returns (uint256);
function vice() external view returns (uint256);
function Line() external view returns (uint256);
function live() external view returns (uint256);
function init(bytes32) external;
function file(bytes32, uint256) external;
function file(bytes32, bytes32, uint256) external;
function cage() external;
function slip(bytes32, address, int256) external;
function flux(bytes32, address, address, uint256) external;
function move(address, address, uint256) external;
function frob(bytes32, address, address, address, int256, int256) external;
function fork(bytes32, address, address, int256, int256) external;
function grab(bytes32, address, address, address, int256, int256) external;
function heal(uint256) external;
function suck(address, address, uint256) external;
function fold(bytes32, address, int256) external;
}
////// src/DssSpell.sol
// Copyright (C) 2020 Maker Ecosystem Growth Holdings, INC.
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
/* pragma solidity 0.5.12; */
/* import "lib/dss-interfaces/src/dapp/DSPauseAbstract.sol"; */
/* import "lib/dss-interfaces/src/dss/CatAbstract.sol"; */
/* import "lib/dss-interfaces/src/dss/FlipAbstract.sol"; */
/* import "lib/dss-interfaces/src/dss/FlipperMomAbstract.sol"; */
/* import "lib/dss-interfaces/src/dss/IlkRegistryAbstract.sol"; */
/* import "lib/dss-interfaces/src/dss/GemJoinAbstract.sol"; */
/* import "lib/dss-interfaces/src/dss/JugAbstract.sol"; */
/* import "lib/dss-interfaces/src/dss/MedianAbstract.sol"; */
/* import "lib/dss-interfaces/src/dss/OsmAbstract.sol"; */
/* import "lib/dss-interfaces/src/dss/OsmMomAbstract.sol"; */
/* import "lib/dss-interfaces/src/dss/SpotAbstract.sol"; */
/* import "lib/dss-interfaces/src/dss/VatAbstract.sol"; */
/* import "lib/dss-interfaces/src/dss/ChainlogAbstract.sol"; */
contract SpellAction {
// MAINNET ADDRESSES
//
// The contracts in this list should correspond to MCD core contracts, verify
// against the current release list at:
// https://changelog.makerdao.com/releases/mainnet/1.1.4/contracts.json
ChainlogAbstract constant CHANGELOG = ChainlogAbstract(0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F);
address constant FLIP_FAB = 0x4ACdbe9dd0d00b36eC2050E805012b8Fc9974f2b;
address constant GUSD = 0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd;
address constant MCD_JOIN_GUSD_A = 0xe29A14bcDeA40d83675aa43B72dF07f649738C8b;
address constant MCD_FLIP_GUSD_A = 0xCAa8D152A8b98229fB77A213BE16b234cA4f612f;
address constant PIP_GUSD = 0xf45Ae69CcA1b9B043dAE2C83A5B65Bc605BEc5F5;
// Decimals & precision
uint256 constant THOUSAND = 10 ** 3;
uint256 constant MILLION = 10 ** 6;
uint256 constant WAD = 10 ** 18;
uint256 constant RAY = 10 ** 27;
uint256 constant RAD = 10 ** 45;
// Many of the settings that change weekly rely on the rate accumulator
// described at https://docs.makerdao.com/smart-contract-modules/rates-module
// To check this yourself, use the following rate calculation (example 8%):
//
// $ bc -l <<< 'scale=27; e( l(1.08)/(60 * 60 * 24 * 365) )'
//
// A table of rates can be found at
// https://ipfs.io/ipfs/QmefQMseb3AiTapiAKKexdKHig8wroKuZbmLtPLv4u2YwW
uint256 constant FOUR_PERCENT_RATE = 1000000001243680656318820312;
function execute() external {
address MCD_VAT = CHANGELOG.getAddress("MCD_VAT");
address MCD_CAT = CHANGELOG.getAddress("MCD_CAT");
address MCD_JUG = CHANGELOG.getAddress("MCD_JUG");
address MCD_SPOT = CHANGELOG.getAddress("MCD_SPOT");
address MCD_END = CHANGELOG.getAddress("MCD_END");
address FLIPPER_MOM = CHANGELOG.getAddress("FLIPPER_MOM");
//address OSM_MOM = CHANGELOG.getAddress("OSM_MOM");
address ILK_REGISTRY = CHANGELOG.getAddress("ILK_REGISTRY");
// Add the flipper factory to the changelog
CHANGELOG.setAddress("FLIP_FAB", FLIP_FAB);
// Add GUSD contracts to the changelog
CHANGELOG.setAddress("GUSD", GUSD);
CHANGELOG.setAddress("MCD_JOIN_GUSD_A", MCD_JOIN_GUSD_A);
CHANGELOG.setAddress("MCD_FLIP_GUSD_A", MCD_FLIP_GUSD_A);
CHANGELOG.setAddress("PIP_GUSD", PIP_GUSD);
CHANGELOG.setVersion("1.1.5");
bytes32 ilk = "GUSD-A";
// Sanity checks
require(GemJoinAbstract(MCD_JOIN_GUSD_A).vat() == MCD_VAT, "join-vat-not-match");
require(GemJoinAbstract(MCD_JOIN_GUSD_A).ilk() == ilk, "join-ilk-not-match");
require(GemJoinAbstract(MCD_JOIN_GUSD_A).gem() == GUSD, "join-gem-not-match");
require(GemJoinAbstract(MCD_JOIN_GUSD_A).dec() == 2, "join-dec-not-match");
require(FlipAbstract(MCD_FLIP_GUSD_A).vat() == MCD_VAT, "flip-vat-not-match");
require(FlipAbstract(MCD_FLIP_GUSD_A).cat() == MCD_CAT, "flip-cat-not-match");
require(FlipAbstract(MCD_FLIP_GUSD_A).ilk() == ilk, "flip-ilk-not-match");
// Set the GUSD PIP in the Spotter
SpotAbstract(MCD_SPOT).file(ilk, "pip", PIP_GUSD);
// Set the GUSD-A Flipper in the Cat
CatAbstract(MCD_CAT).file(ilk, "flip", MCD_FLIP_GUSD_A);
// Init GUSD-A ilk in Vat & Jug
VatAbstract(MCD_VAT).init(ilk);
JugAbstract(MCD_JUG).init(ilk);
// Allow GUSD-A Join to modify Vat registry
VatAbstract(MCD_VAT).rely(MCD_JOIN_GUSD_A);
// Allow the GUSD-A Flipper to reduce the Cat litterbox on deal()
CatAbstract(MCD_CAT).rely(MCD_FLIP_GUSD_A);
// Allow Cat to kick auctions in GUSD-A Flipper
FlipAbstract(MCD_FLIP_GUSD_A).rely(MCD_CAT);
// Allow End to yank auctions in GUSD-A Flipper
FlipAbstract(MCD_FLIP_GUSD_A).rely(MCD_END);
// Allow FlipperMom to access to the GUSD-A Flipper
FlipAbstract(MCD_FLIP_GUSD_A).rely(FLIPPER_MOM);
// Disallow Cat to kick auctions in GUSD-A Flipper
// !!!!!!!! Only for certain collaterals that do not trigger liquidations like USDC-A)
FlipperMomAbstract(FLIPPER_MOM).deny(MCD_FLIP_GUSD_A);
// Allow OsmMom to access to the GUSD Osm
// !!!!!!!! Only if PIP_GUSD = Osm and hasn't been already relied due a previous deployed ilk
//OsmAbstract(PIP_GUSD).rely(OSM_MOM);
// Whitelist Osm to read the Median data (only necessary if it is the first time the token is being added to an ilk)
// !!!!!!!! Only if PIP_GUSD = Osm, its src is a Median and hasn't been already whitelisted due a previous deployed ilk
//MedianAbstract(OsmAbstract(PIP_GUSD).src()).kiss(PIP_GUSD);
// Whitelist Spotter to read the Osm data (only necessary if it is the first time the token is being added to an ilk)
// !!!!!!!! Only if PIP_GUSD = Osm or PIP_GUSD = Median and hasn't been already whitelisted due a previous deployed ilk
//OsmAbstract(PIP_GUSD).kiss(MCD_SPOT);
// Whitelist End to read the Osm data (only necessary if it is the first time the token is being added to an ilk)
// !!!!!!!! Only if PIP_GUSD = Osm or PIP_GUSD = Median and hasn't been already whitelisted due a previous deployed ilk
//OsmAbstract(PIP_GUSD).kiss(MCD_END);
// Set GUSD Osm in the OsmMom for new ilk
// !!!!!!!! Only if PIP_GUSD = Osm
//OsmMomAbstract(OSM_MOM).setOsm(ilk, PIP_GUSD);
// Set the global debt ceiling
VatAbstract(MCD_VAT).file("Line", 1_468_750_000 * RAD);
// Set the GUSD-A debt ceiling
VatAbstract(MCD_VAT).file(ilk, "line", 5 * MILLION * RAD);
// Set the GUSD-A dust
VatAbstract(MCD_VAT).file(ilk, "dust", 100 * RAD);
// Set the Lot size
CatAbstract(MCD_CAT).file(ilk, "dunk", 50 * THOUSAND * RAD);
// Set the GUSD-A liquidation penalty (e.g. 13% => X = 113)
CatAbstract(MCD_CAT).file(ilk, "chop", 113 * WAD / 100);
// Set the GUSD-A stability fee (e.g. 1% = 1000000000315522921573372069)
JugAbstract(MCD_JUG).file(ilk, "duty", FOUR_PERCENT_RATE);
// Set the GUSD-A percentage between bids (e.g. 3% => X = 103)
FlipAbstract(MCD_FLIP_GUSD_A).file("beg", 103 * WAD / 100);
// Set the GUSD-A time max time between bids
FlipAbstract(MCD_FLIP_GUSD_A).file("ttl", 6 hours);
// Set the GUSD-A max auction duration to
FlipAbstract(MCD_FLIP_GUSD_A).file("tau", 6 hours);
// Set the GUSD-A min collateralization ratio (e.g. 150% => X = 150)
SpotAbstract(MCD_SPOT).file(ilk, "mat", 101 * RAY / 100);
// Update GUSD-A spot value in Vat
SpotAbstract(MCD_SPOT).poke(ilk);
// Add new ilk to the IlkRegistry
IlkRegistryAbstract(ILK_REGISTRY).add(MCD_JOIN_GUSD_A);
}
}
contract DssSpell {
DSPauseAbstract public pause =
DSPauseAbstract(0xbE286431454714F511008713973d3B053A2d38f3);
address public action;
bytes32 public tag;
uint256 public eta;
bytes public sig;
uint256 public expiration;
bool public done;
// Provides a descriptive tag for bot consumption
// This should be modified weekly to provide a summary of the actions
// Hash: seth keccak -- "$(wget https://raw.githubusercontent.com/makerdao/community/a67032a357000839ae08c7523abcf9888c8cca3a/governance/votes/Executive%20vote%20-%20November%2013%2C%202020.md -q -O - 2>/dev/null)"
string constant public description =
"2020-11-13 MakerDAO Executive Spell | Hash: 0xa2b54a94b44575d01239378e48f966c4e583b965172be0a8c4b59b74523683ff";
constructor() public {
sig = abi.encodeWithSignature("execute()");
action = address(new SpellAction());
bytes32 _tag;
address _action = action;
assembly { _tag := extcodehash(_action) }
tag = _tag;
expiration = now + 30 days;
}
modifier officeHours {
uint day = (now / 1 days + 3) % 7;
require(day < 5, "Can only be cast on a weekday");
uint hour = now / 1 hours % 24;
require(hour >= 14 && hour < 21, "Outside office hours");
_;
}
function schedule() public {
require(now <= expiration, "This contract has expired");
require(eta == 0, "This spell has already been scheduled");
eta = now + DSPauseAbstract(pause).delay();
pause.plot(action, tag, sig, eta);
}
function cast() public officeHours {
require(!done, "spell-already-cast");
done = true;
pause.exec(action, tag, sig, eta);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":true,"inputs":[],"name":"action","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"cast","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"done","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"eta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"expiration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pause","outputs":[{"internalType":"contract DSPauseAbstract","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"schedule","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sig","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tag","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"}]Contract Creation Code
6080604052600080546001600160a01b03191673be286431454714f511008713973d3b053a2d38f317905534801561003657600080fd5b50604080516004808252602482019092526020810180516001600160e01b03167f614619540000000000000000000000000000000000000000000000000000000017815290516100879291906100e2565b5060405161009490610160565b604051809103906000f0801580156100b0573d6000803e3d6000fd5b50600180546001600160a01b0319166001600160a01b039283161790819055163f6002554262278d000160055561018a565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061012357805160ff1916838001178555610150565b82800160010185558215610150579182015b82811115610150578251825591602001919060010190610135565b5061015c92915061016d565b5090565b611767806109f983390190565b61018791905b8082111561015c5760008155600101610173565b90565b610860806101996000396000f3fe608060405234801561001057600080fd5b506004361061008d5760003560e01c8062a7029b146100925780630a7a1c4d1461010f5780634665096d1461013357806351f910661461014d5780637284e416146101555780638456cb591461015d57806396d373e514610165578063ae8421e11461016f578063b0604a261461018b578063f7992d8514610193575b600080fd5b61009a61019b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100d45781810151838201526020016100bc565b50505050905090810190601f1680156101015780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610117610229565b604080516001600160a01b039092168252519081900360200190f35b61013b610238565b60408051918252519081900360200190f35b61013b61023e565b61009a610244565b610117610260565b61016d61026f565b005b61017761056d565b604080519115158252519081900360200190f35b61016d610576565b61013b610792565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156102215780601f106101f657610100808354040283529160200191610221565b820191906000526020600020905b81548152906001019060200180831161020457829003601f168201915b505050505081565b6001546001600160a01b031681565b60055481565b60025481565b6040518060a00160405280606e81526020016107be606e913981565b6000546001600160a01b031681565b600762015180420460030106600581106102d0576040805162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c792062652063617374206f6e2061207765656b646179000000604482015290519081900360640190fd5b6018610e10420406600e81108015906102e95750601581105b610331576040805162461bcd60e51b81526020600482015260146024820152734f757473696465206f666669636520686f75727360601b604482015290519081900360640190fd5b60065460ff161561037e576040805162461bcd60e51b81526020600482015260126024820152711cdc195b1b0b585b1c9958591e4b58d85cdd60721b604482015290519081900360640190fd5b6006805460ff1916600190811790915560005481546002805460035460405163168ccd6760e01b81526001600160a01b039485166004828101828152602484018690526064840185905260806044850190815282546000199b811615610100029b909b01909a169690960460848401819052969097169763168ccd67979196949591949192909160a4909101908590801561045a5780601f1061042f5761010080835404028352916020019161045a565b820191906000526020600020905b81548152906001019060200180831161043d57829003601f168201915b505095505050505050600060405180830381600087803b15801561047d57600080fd5b505af1158015610491573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156104ba57600080fd5b8101908080516040519392919084600160201b8211156104d957600080fd5b9083019060208201858111156104ee57600080fd5b8251600160201b81118282018810171561050757600080fd5b82525081516020918201929091019080838360005b8381101561053457818101518382015260200161051c565b50505050905090810190601f1680156105615780820380516001836020036101000a031916815260200191505b50604052505050505050565b60065460ff1681565b6005544211156105c9576040805162461bcd60e51b8152602060048201526019602482015278151a1a5cc818dbdb9d1c9858dd081a185cc8195e1c1a5c9959603a1b604482015290519081900360640190fd5b600354156106085760405162461bcd60e51b81526004018080602001828103825260258152602001806107996025913960400191505060405180910390fd5b6000809054906101000a90046001600160a01b03166001600160a01b0316636a42b8f86040518163ffffffff1660e01b815260040160206040518083038186803b15801561065557600080fd5b505afa158015610669573d6000803e3d6000fd5b505050506040513d602081101561067f57600080fd5b50514201600381905560005460018054600280546040516346d2fbbb60e01b81526001600160a01b03938416600482810182815260248401859052606484018a90526080604485019081528254600019998116156101000299909901909816959095046084840181905295909716976346d2fbbb9791969395919490939092909160a490910190859080156107555780601f1061072a57610100808354040283529160200191610755565b820191906000526020600020905b81548152906001019060200180831161073857829003601f168201915b505095505050505050600060405180830381600087803b15801561077857600080fd5b505af115801561078c573d6000803e3d6000fd5b50505050565b6003548156fe54686973207370656c6c2068617320616c7265616479206265656e207363686564756c6564323032302d31312d3133204d616b657244414f20457865637574697665205370656c6c207c20486173683a20307861326235346139346234343537356430313233393337386534386639363663346535383362393635313732626530613863346235396237343532333638336666a265627a7a723158207a94887da9fca7e0d5889c1707e2ae6a29b10191ea557180fe5392b54cf97de264736f6c634300050c0032608060405234801561001057600080fd5b50611747806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80636146195414610030575b600080fd5b61003861003a565b005b60006000805160206116d38339815191526001600160a01b03166321f8a7216040518163ffffffff1660e01b81526004018080661350d117d5905560ca1b815250602001905060206040518083038186803b15801561009857600080fd5b505afa1580156100ac573d6000803e3d6000fd5b505050506040513d60208110156100c257600080fd5b5051604080516321f8a72160e01b8152661350d117d0d05560ca1b600482015290519192506000916000805160206116d3833981519152916321f8a721916024808301926020929190829003018186803b15801561011f57600080fd5b505afa158015610133573d6000803e3d6000fd5b505050506040513d602081101561014957600080fd5b5051604080516321f8a72160e01b8152664d43445f4a554760c81b600482015290519192506000916000805160206116d3833981519152916321f8a721916024808301926020929190829003018186803b1580156101a657600080fd5b505afa1580156101ba573d6000803e3d6000fd5b505050506040513d60208110156101d057600080fd5b5051604080516321f8a72160e01b8152671350d117d4d413d560c21b600482015290519192506000916000805160206116d3833981519152916321f8a721916024808301926020929190829003018186803b15801561022e57600080fd5b505afa158015610242573d6000803e3d6000fd5b505050506040513d602081101561025857600080fd5b5051604080516321f8a72160e01b8152661350d117d1539160ca1b600482015290519192506000916000805160206116d3833981519152916321f8a721916024808301926020929190829003018186803b1580156102b557600080fd5b505afa1580156102c9573d6000803e3d6000fd5b505050506040513d60208110156102df57600080fd5b5051604080516321f8a72160e01b81526a464c49505045525f4d4f4d60a81b600482015290519192506000916000805160206116d3833981519152916321f8a721916024808301926020929190829003018186803b15801561034057600080fd5b505afa158015610354573d6000803e3d6000fd5b505050506040513d602081101561036a57600080fd5b5051604080516321f8a72160e01b81526b494c4b5f524547495354525960a01b600482015290519192506000916000805160206116d3833981519152916321f8a721916024808301926020929190829003018186803b1580156103cc57600080fd5b505afa1580156103e0573d6000803e3d6000fd5b505050506040513d60208110156103f657600080fd5b50516040805163ca446dd960e01b815267232624a82fa320a160c11b6004820152734acdbe9dd0d00b36ec2050e805012b8fc9974f2b602482015290519192506000805160206116d38339815191529163ca446dd99160448082019260009290919082900301818387803b15801561046d57600080fd5b505af1158015610481573d6000803e3d6000fd5b50506040805163ca446dd960e01b81526311d554d160e21b600482015273056fd409e1d7a124bd7017459dfea2f387b6d5cd602482015290516000805160206116d3833981519152935063ca446dd99250604480830192600092919082900301818387803b1580156104f257600080fd5b505af1158015610506573d6000803e3d6000fd5b50506040805163ca446dd960e01b81526e4d43445f4a4f494e5f475553445f4160881b60048201526000805160206116b3833981519152602482015290516000805160206116d3833981519152935063ca446dd99250604480830192600092919082900301818387803b15801561057c57600080fd5b505af1158015610590573d6000803e3d6000fd5b50506040805163ca446dd960e01b81526e4d43445f464c49505f475553445f4160881b60048201526000805160206116f3833981519152602482015290516000805160206116d3833981519152935063ca446dd99250604480830192600092919082900301818387803b15801561060657600080fd5b505af115801561061a573d6000803e3d6000fd5b50506040805163ca446dd960e01b81526714125417d1d554d160c21b600482015273f45ae69cca1b9b043dae2c83a5b65bc605bec5f5602482015290516000805160206116d3833981519152935063ca446dd99250604480830192600092919082900301818387803b15801561068f57600080fd5b505af11580156106a3573d6000803e3d6000fd5b505060408051631e22f1e360e21b8152602060048201526005602482015264312e312e3560d81b604482015290516000805160206116d3833981519152935063788bc78c9250606480830192600092919082900301818387803b15801561070957600080fd5b505af115801561071d573d6000803e3d6000fd5b50505050600065475553442d4160d01b9050876001600160a01b03166000805160206116b38339815191526001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561078057600080fd5b505afa158015610794573d6000803e3d6000fd5b505050506040513d60208110156107aa57600080fd5b50516001600160a01b0316146107fc576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5aecc2e85adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b806000805160206116b38339815191526001600160a01b031663c5ce281e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561084457600080fd5b505afa158015610858573d6000803e3d6000fd5b505050506040513d602081101561086e57600080fd5b5051146108b7576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5ad2d8d65adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b73056fd409e1d7a124bd7017459dfea2f387b6d5cd6001600160a01b03166000805160206116b38339815191526001600160a01b0316637bd2bea76040518163ffffffff1660e01b815260040160206040518083038186803b15801561091c57600080fd5b505afa158015610930573d6000803e3d6000fd5b505050506040513d602081101561094657600080fd5b50516001600160a01b031614610998576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5acecada5adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b6000805160206116b38339815191526001600160a01b031663b3bcfa826040518163ffffffff1660e01b815260040160206040518083038186803b1580156109df57600080fd5b505afa1580156109f3573d6000803e3d6000fd5b505050506040513d6020811015610a0957600080fd5b5051600214610a54576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5ac8cac65adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b876001600160a01b03166000805160206116f38339815191526001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015610aa557600080fd5b505afa158015610ab9573d6000803e3d6000fd5b505050506040513d6020811015610acf57600080fd5b50516001600160a01b031614610b21576040805162461bcd60e51b81526020600482015260126024820152710ccd8d2e05aecc2e85adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b866001600160a01b03166000805160206116f38339815191526001600160a01b031663e48818136040518163ffffffff1660e01b815260040160206040518083038186803b158015610b7257600080fd5b505afa158015610b86573d6000803e3d6000fd5b505050506040513d6020811015610b9c57600080fd5b50516001600160a01b031614610bee576040805162461bcd60e51b81526020600482015260126024820152710ccd8d2e05ac6c2e85adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b806000805160206116f38339815191526001600160a01b031663c5ce281e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c3657600080fd5b505afa158015610c4a573d6000803e3d6000fd5b505050506040513d6020811015610c6057600080fd5b505114610ca9576040805162461bcd60e51b81526020600482015260126024820152710ccd8d2e05ad2d8d65adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b6040805163ebecb39d60e01b8152600481018390526207069760ec1b602482015273f45ae69cca1b9b043dae2c83a5b65bc605bec5f5604482015290516001600160a01b0387169163ebecb39d91606480830192600092919082900301818387803b158015610d1757600080fd5b505af1158015610d2b573d6000803e3d6000fd5b50506040805163ebecb39d60e01b815260048101859052630666c69760e41b60248201526000805160206116f3833981519152604482015290516001600160a01b038b16935063ebecb39d9250606480830192600092919082900301818387803b158015610d9857600080fd5b505af1158015610dac573d6000803e3d6000fd5b50505050876001600160a01b0316633b663195826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610df657600080fd5b505af1158015610e0a573d6000803e3d6000fd5b50505050856001600160a01b0316633b663195826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610e5457600080fd5b505af1158015610e68573d6000803e3d6000fd5b5050604080516332fd71af60e11b81526000805160206116b3833981519152600482015290516001600160a01b038c1693506365fae35e9250602480830192600092919082900301818387803b158015610ec157600080fd5b505af1158015610ed5573d6000803e3d6000fd5b5050604080516332fd71af60e11b81526000805160206116f3833981519152600482015290516001600160a01b038b1693506365fae35e9250602480830192600092919082900301818387803b158015610f2e57600080fd5b505af1158015610f42573d6000803e3d6000fd5b5050604080516332fd71af60e11b81526001600160a01b038b16600482015290516000805160206116f383398151915293506365fae35e9250602480830192600092919082900301818387803b158015610f9b57600080fd5b505af1158015610faf573d6000803e3d6000fd5b5050604080516332fd71af60e11b81526001600160a01b038816600482015290516000805160206116f383398151915293506365fae35e9250602480830192600092919082900301818387803b15801561100857600080fd5b505af115801561101c573d6000803e3d6000fd5b5050604080516332fd71af60e11b81526001600160a01b038716600482015290516000805160206116f383398151915293506365fae35e9250602480830192600092919082900301818387803b15801561107557600080fd5b505af1158015611089573d6000803e3d6000fd5b505060408051639c52a7f160e01b81526000805160206116f3833981519152600482015290516001600160a01b0387169350639c52a7f19250602480830192600092919082900301818387803b1580156110e257600080fd5b505af11580156110f6573d6000803e3d6000fd5b505060408051630a6ba04560e21b8152634c696e6560e01b60048201527007aacfc3f7a21978becc62a45ee104376760311b602482015290516001600160a01b038c1693506329ae81149250604480830192600092919082900301818387803b15801561116257600080fd5b505af1158015611176573d6000803e3d6000fd5b505060408051630d05943f60e11b815260048101859052636c696e6560e01b60248201526f01aba4714957d300d0e549208b31adb160331b604482015290516001600160a01b038c169350631a0b287e9250606480830192600092919082900301818387803b1580156111e857600080fd5b505af11580156111fc573d6000803e3d6000fd5b505060408051630d05943f60e11b81526004810185905263191d5cdd60e21b60248201526d23084f676940b7915149bd08b30d602f1b604482015290516001600160a01b038c169350631a0b287e9250606482810192600092919082900301818387803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b505060408051630d05943f60e11b8152600481018590526364756e6b60e01b60248201526e111b0ec57e6499a1f4b1014d3f6d5960311b604482015290516001600160a01b038b169350631a0b287e9250606480830192600092919082900301818387803b1580156112f157600080fd5b505af1158015611305573d6000803e3d6000fd5b505060408051630d05943f60e11b81526004810185905263063686f760e41b6024820152670fae910354310000604482015290516001600160a01b038b169350631a0b287e9250606482810192600092919082900301818387803b15801561136c57600080fd5b505af1158015611380573d6000803e3d6000fd5b505060408051630d05943f60e11b815260048101859052636475747960e01b60248201526b033b2e3cb112f1349de86fd8604482015290516001600160a01b038a169350631a0b287e9250606480830192600092919082900301818387803b1580156113eb57600080fd5b505af11580156113ff573d6000803e3d6000fd5b505060408051630a6ba04560e21b81526262656760e81b6004820152670e4b4b8af6a70000602482015290516000805160206116f383398151915293506329ae81149250604480830192600092919082900301818387803b15801561146357600080fd5b505af1158015611477573d6000803e3d6000fd5b505060408051630a6ba04560e21b8152621d1d1b60ea1b6004820152615460602482015290516000805160206116f383398151915293506329ae81149250604480830192600092919082900301818387803b1580156114d557600080fd5b505af11580156114e9573d6000803e3d6000fd5b505060408051630a6ba04560e21b81526274617560e81b6004820152615460602482015290516000805160206116f383398151915293506329ae81149250604480830192600092919082900301818387803b15801561154757600080fd5b505af115801561155b573d6000803e3d6000fd5b505060408051630d05943f60e11b815260048101859052621b585d60ea1b60248201526b034373d1b5e4818532000000604482015290516001600160a01b0389169350631a0b287e9250606482810192600092919082900301818387803b1580156115c557600080fd5b505af11580156115d9573d6000803e3d6000fd5b50505050846001600160a01b0316631504460f826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561162357600080fd5b505af1158015611637573d6000803e3d6000fd5b505060408051630a3b0a4f60e01b81526000805160206116b3833981519152600482015290516001600160a01b0386169350630a3b0a4f9250602480830192600092919082900301818387803b15801561169057600080fd5b505af11580156116a4573d6000803e3d6000fd5b50505050505050505050505056fe000000000000000000000000e29a14bcdea40d83675aa43b72df07f649738c8b000000000000000000000000da0ab1e0017debcd72be8599041a2aa3ba7e740f000000000000000000000000caa8d152a8b98229fb77a213be16b234ca4f612fa265627a7a72315820dd3ea0ee769fb1f425a370877f6c3785282bf388f4f79a00efe3e8955dc807f364736f6c634300050c0032
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061008d5760003560e01c8062a7029b146100925780630a7a1c4d1461010f5780634665096d1461013357806351f910661461014d5780637284e416146101555780638456cb591461015d57806396d373e514610165578063ae8421e11461016f578063b0604a261461018b578063f7992d8514610193575b600080fd5b61009a61019b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100d45781810151838201526020016100bc565b50505050905090810190601f1680156101015780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610117610229565b604080516001600160a01b039092168252519081900360200190f35b61013b610238565b60408051918252519081900360200190f35b61013b61023e565b61009a610244565b610117610260565b61016d61026f565b005b61017761056d565b604080519115158252519081900360200190f35b61016d610576565b61013b610792565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156102215780601f106101f657610100808354040283529160200191610221565b820191906000526020600020905b81548152906001019060200180831161020457829003601f168201915b505050505081565b6001546001600160a01b031681565b60055481565b60025481565b6040518060a00160405280606e81526020016107be606e913981565b6000546001600160a01b031681565b600762015180420460030106600581106102d0576040805162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c792062652063617374206f6e2061207765656b646179000000604482015290519081900360640190fd5b6018610e10420406600e81108015906102e95750601581105b610331576040805162461bcd60e51b81526020600482015260146024820152734f757473696465206f666669636520686f75727360601b604482015290519081900360640190fd5b60065460ff161561037e576040805162461bcd60e51b81526020600482015260126024820152711cdc195b1b0b585b1c9958591e4b58d85cdd60721b604482015290519081900360640190fd5b6006805460ff1916600190811790915560005481546002805460035460405163168ccd6760e01b81526001600160a01b039485166004828101828152602484018690526064840185905260806044850190815282546000199b811615610100029b909b01909a169690960460848401819052969097169763168ccd67979196949591949192909160a4909101908590801561045a5780601f1061042f5761010080835404028352916020019161045a565b820191906000526020600020905b81548152906001019060200180831161043d57829003601f168201915b505095505050505050600060405180830381600087803b15801561047d57600080fd5b505af1158015610491573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156104ba57600080fd5b8101908080516040519392919084600160201b8211156104d957600080fd5b9083019060208201858111156104ee57600080fd5b8251600160201b81118282018810171561050757600080fd5b82525081516020918201929091019080838360005b8381101561053457818101518382015260200161051c565b50505050905090810190601f1680156105615780820380516001836020036101000a031916815260200191505b50604052505050505050565b60065460ff1681565b6005544211156105c9576040805162461bcd60e51b8152602060048201526019602482015278151a1a5cc818dbdb9d1c9858dd081a185cc8195e1c1a5c9959603a1b604482015290519081900360640190fd5b600354156106085760405162461bcd60e51b81526004018080602001828103825260258152602001806107996025913960400191505060405180910390fd5b6000809054906101000a90046001600160a01b03166001600160a01b0316636a42b8f86040518163ffffffff1660e01b815260040160206040518083038186803b15801561065557600080fd5b505afa158015610669573d6000803e3d6000fd5b505050506040513d602081101561067f57600080fd5b50514201600381905560005460018054600280546040516346d2fbbb60e01b81526001600160a01b03938416600482810182815260248401859052606484018a90526080604485019081528254600019998116156101000299909901909816959095046084840181905295909716976346d2fbbb9791969395919490939092909160a490910190859080156107555780601f1061072a57610100808354040283529160200191610755565b820191906000526020600020905b81548152906001019060200180831161073857829003601f168201915b505095505050505050600060405180830381600087803b15801561077857600080fd5b505af115801561078c573d6000803e3d6000fd5b50505050565b6003548156fe54686973207370656c6c2068617320616c7265616479206265656e207363686564756c6564323032302d31312d3133204d616b657244414f20457865637574697665205370656c6c207c20486173683a20307861326235346139346234343537356430313233393337386534386639363663346535383362393635313732626530613863346235396237343532333638336666a265627a7a723158207a94887da9fca7e0d5889c1707e2ae6a29b10191ea557180fe5392b54cf97de264736f6c634300050c0032
Deployed Bytecode Sourcemap
22271:1857:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22271:1857:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22504:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;22504:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22402:29;;;:::i;:::-;;;;-1:-1:-1;;;;;22402:29:0;;;;;;;;;;;;;;22537:33;;;:::i;:::-;;;;;;;;;;;;;;;;22438:26;;;:::i;22963:158::-;;;:::i;22296:99::-;;;:::i;23969:156::-;;;:::i;:::-;;22577:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;23694:267;;;:::i;22471:26::-;;;:::i;22504:::-;;;;;;;;;;;;;;;-1:-1:-1;;22504:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22402:29::-;;;-1:-1:-1;;;;;22402:29:0;;:::o;22537:33::-;;;;:::o;22438:26::-;;;;:::o;22963:158::-;;;;;;;;;;;;;;;;;;;:::o;22296:99::-;;;-1:-1:-1;;;;;22296:99:0;;:::o;23969:156::-;23497:1;23483:6;23477:3;:12;23492:1;23477:16;23476:22;23523:1;23517:7;;23509:49;;;;;-1:-1:-1;;;23509:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;23597:2;23587:7;23581:3;:13;:18;23626:2;23618:10;;;;;:23;;;23639:2;23632:4;:9;23618:23;23610:56;;;;;-1:-1:-1;;;23610:56:0;;;;;;;;;;;;-1:-1:-1;;;23610:56:0;;;;;;;;;;;;;;;24024:4;;;;24023:5;24015:36;;;;;-1:-1:-1;;;24015:36:0;;;;;;;;;;;;-1:-1:-1;;;24015:36:0;;;;;;;;;;;;;;;24062:4;:11;;-1:-1:-1;;24062:11:0;24069:4;24062:11;;;;;;:4;24084:5;24095:6;;24103:3;;;24113;;24084:33;;-1:-1:-1;;;24084:33:0;;-1:-1:-1;;;;;24095:6:0;;;24108:3;24084:33;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24084:33:0;;;;24062:11;24084:33;;;;;;;;;;;;;;;;;;:5;;;;;:10;;24095:6;;24103:3;;24108;;24084:33;;;;;;;;;24108:3;;24084:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24084:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24084:33:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;24084:33:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;24084:33:0;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;24084:33:0;;420:4:-1;411:14;;;;24084:33:0;;;;;411:14:-1;24084:33:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;24084:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23969:156;;:::o;22577:27::-;;;;;;:::o;23694:267::-;23747:10;;23740:3;:17;;23732:55;;;;;-1:-1:-1;;;23732:55:0;;;;;;;;;;;;-1:-1:-1;;;23732:55:0;;;;;;;;;;;;;;;23806:3;;:8;23798:58;;;;-1:-1:-1;;;23798:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23895:5;;;;;;;;;-1:-1:-1;;;;;23895:5:0;-1:-1:-1;;;;;23879:28:0;;:30;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23879:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23879:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23879:30:0;23873:3;:36;23867:3;:42;;;23920:5;;;23931:6;;23939:3;;;23920:33;;-1:-1:-1;;;23920:33:0;;-1:-1:-1;;;;;23931:6:0;;;23944:3;23920:33;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23920:33:0;;;;:5;:33;;;;;;;;;;;;;;;;;;:5;;;;;:10;;23931:6;;23939:3;;23944;;23873:36;;23920:33;;;;;;;;;23944:3;;23920:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23920:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23920:33:0;;;;23694:267::o;22471:26::-;;;;:::o
Swarm Source
bzzr://dd3ea0ee769fb1f425a370877f6c3785282bf388f4f79a00efe3e8955dc807f3
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.