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
|
||
|---|---|---|---|---|---|---|---|
| 0x60a06040 | 16585091 | 1077 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
DssSpell
Compiler Version
v0.8.16+commit.07a7930e
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2023-02-08
*/
// hevm: flattened sources of src/DssSpell.sol
// SPDX-License-Identifier: AGPL-3.0-or-later
pragma solidity =0.8.16 >=0.8.16 <0.9.0;
////// lib/dss-exec-lib/src/CollateralOpts.sol
//
// CollateralOpts.sol -- Data structure for onboarding collateral
//
// Copyright (C) 2020-2022 Dai Foundation
//
// 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.8.16; */
struct CollateralOpts {
bytes32 ilk;
address gem;
address join;
address clip;
address calc;
address pip;
bool isLiquidatable;
bool isOSM;
bool whitelistOSM;
uint256 ilkDebtCeiling;
uint256 minVaultAmount;
uint256 maxLiquidationAmount;
uint256 liquidationPenalty;
uint256 ilkStabilityFee;
uint256 startingPriceFactor;
uint256 breakerTolerance;
uint256 auctionDuration;
uint256 permittedDrop;
uint256 liquidationRatio;
uint256 kprFlatReward;
uint256 kprPctReward;
}
////// lib/dss-exec-lib/src/DssExecLib.sol
//
// DssExecLib.sol -- MakerDAO Executive Spellcrafting Library
//
// Copyright (C) 2020-2022 Dai Foundation
//
// 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.8.16; */
/* import { CollateralOpts } from "./CollateralOpts.sol"; */
interface Initializable {
function init(bytes32) external;
}
interface Authorizable {
function rely(address) external;
function deny(address) external;
function setAuthority(address) external;
}
interface Fileable {
function file(bytes32, address) external;
function file(bytes32, uint256) external;
function file(bytes32, bytes32, uint256) external;
function file(bytes32, bytes32, address) external;
}
interface Drippable {
function drip() external returns (uint256);
function drip(bytes32) external returns (uint256);
}
interface Pricing {
function poke(bytes32) external;
}
interface ERC20 {
function decimals() external returns (uint8);
}
interface DssVat {
function hope(address) external;
function nope(address) external;
function ilks(bytes32) external returns (uint256 Art, uint256 rate, uint256 spot, uint256 line, uint256 dust);
function Line() external view returns (uint256);
function suck(address, address, uint256) external;
}
interface ClipLike {
function vat() external returns (address);
function dog() external returns (address);
function spotter() external view returns (address);
function calc() external view returns (address);
function ilk() external returns (bytes32);
}
interface DogLike {
function ilks(bytes32) external returns (address clip, uint256 chop, uint256 hole, uint256 dirt);
}
interface JoinLike {
function vat() external returns (address);
function ilk() external returns (bytes32);
function gem() external returns (address);
function dec() external returns (uint256);
function join(address, uint256) external;
function exit(address, uint256) external;
}
// Includes Median and OSM functions
interface OracleLike_2 {
function src() external view returns (address);
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 orb0() external view returns (address);
function orb1() external view returns (address);
}
interface MomLike {
function setOsm(bytes32, address) external;
function setPriceTolerance(address, uint256) external;
}
interface RegistryLike {
function add(address) external;
function xlip(bytes32) external view returns (address);
}
// https://github.com/makerdao/dss-chain-log
interface ChainlogLike {
function setVersion(string calldata) external;
function setIPFS(string calldata) external;
function setSha256sum(string calldata) external;
function getAddress(bytes32) external view returns (address);
function setAddress(bytes32, address) external;
function removeAddress(bytes32) external;
}
interface IAMLike {
function ilks(bytes32) external view returns (uint256,uint256,uint48,uint48,uint48);
function setIlk(bytes32,uint256,uint256,uint256) external;
function remIlk(bytes32) external;
function exec(bytes32) external returns (uint256);
}
interface LerpFactoryLike {
function newLerp(bytes32 name_, address target_, bytes32 what_, uint256 startTime_, uint256 start_, uint256 end_, uint256 duration_) external returns (address);
function newIlkLerp(bytes32 name_, address target_, bytes32 ilk_, bytes32 what_, uint256 startTime_, uint256 start_, uint256 end_, uint256 duration_) external returns (address);
}
interface LerpLike {
function tick() external returns (uint256);
}
interface RwaOracleLike {
function bump(bytes32 ilk, uint256 val) external;
}
library DssExecLib {
/* WARNING
The following library code acts as an interface to the actual DssExecLib
library, which can be found in its own deployed contract. Only trust the actual
library's implementation.
*/
address constant public LOG = 0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F;
uint256 constant internal WAD = 10 ** 18;
uint256 constant internal RAY = 10 ** 27;
uint256 constant internal RAD = 10 ** 45;
uint256 constant internal THOUSAND = 10 ** 3;
uint256 constant internal MILLION = 10 ** 6;
uint256 constant internal BPS_ONE_PCT = 100;
uint256 constant internal BPS_ONE_HUNDRED_PCT = 100 * BPS_ONE_PCT;
uint256 constant internal RATES_ONE_HUNDRED_PCT = 1000000021979553151239153027;
function dai() public view returns (address) { return getChangelogAddress("MCD_DAI"); }
function vat() public view returns (address) { return getChangelogAddress("MCD_VAT"); }
function dog() public view returns (address) { return getChangelogAddress("MCD_DOG"); }
function vow() public view returns (address) { return getChangelogAddress("MCD_VOW"); }
function end() public view returns (address) { return getChangelogAddress("MCD_END"); }
function reg() public view returns (address) { return getChangelogAddress("ILK_REGISTRY"); }
function daiJoin() public view returns (address) { return getChangelogAddress("MCD_JOIN_DAI"); }
function lerpFab() public view returns (address) { return getChangelogAddress("LERP_FAB"); }
function clip(bytes32 _ilk) public view returns (address _clip) {}
function flip(bytes32 _ilk) public view returns (address _flip) {}
function calc(bytes32 _ilk) public view returns (address _calc) {}
function getChangelogAddress(bytes32 _key) public view returns (address) {}
function setAuthority(address _base, address _authority) public {}
function canCast(uint40 _ts, bool _officeHours) public pure returns (bool) {}
function nextCastTime(uint40 _eta, uint40 _ts, bool _officeHours) public pure returns (uint256 castTime) {}
function setValue(address _base, bytes32 _what, uint256 _amt) public {}
function setValue(address _base, bytes32 _ilk, bytes32 _what, uint256 _amt) public {}
function setIlkMinVaultAmount(bytes32 _ilk, uint256 _amount) public {}
function sendPaymentFromSurplusBuffer(address _target, uint256 _amount) public {}
function linearInterpolation(bytes32 _name, address _target, bytes32 _ilk, bytes32 _what, uint256 _startTime, uint256 _start, uint256 _end, uint256 _duration) public returns (address) {}
}
////// lib/dss-exec-lib/src/DssAction.sol
//
// DssAction.sol -- DSS Executive Spell Actions
//
// Copyright (C) 2020-2022 Dai Foundation
//
// 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.8.16; */
/* import { DssExecLib } from "./DssExecLib.sol"; */
/* import { CollateralOpts } from "./CollateralOpts.sol"; */
interface OracleLike_1 {
function src() external view returns (address);
}
abstract contract DssAction {
using DssExecLib for *;
// Modifier used to limit execution time when office hours is enabled
modifier limited {
require(DssExecLib.canCast(uint40(block.timestamp), officeHours()), "Outside office hours");
_;
}
// Office Hours defaults to true by default.
// To disable office hours, override this function and
// return false in the inherited action.
function officeHours() public view virtual returns (bool) {
return true;
}
// DssExec calls execute. We limit this function subject to officeHours modifier.
function execute() external limited {
actions();
}
// DssAction developer must override `actions()` and place all actions to be called inside.
// The DssExec function will call this subject to the officeHours limiter
// By keeping this function public we allow simulations of `execute()` on the actions outside of the cast time.
function actions() public virtual;
// Provides a descriptive tag for bot consumption
// This should be modified weekly to provide a summary of the actions
// Hash: seth keccak -- "$(wget https://<executive-vote-canonical-post> -q -O - 2>/dev/null)"
function description() external view virtual returns (string memory);
// Returns the next available cast time
function nextCastTime(uint256 eta) external view returns (uint256 castTime) {
require(eta <= type(uint40).max);
castTime = DssExecLib.nextCastTime(uint40(eta), uint40(block.timestamp), officeHours());
}
}
////// lib/dss-exec-lib/src/DssExec.sol
//
// DssExec.sol -- MakerDAO Executive Spell Template
//
// Copyright (C) 2020-2022 Dai Foundation
//
// 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.8.16; */
interface PauseAbstract {
function delay() external view returns (uint256);
function plot(address, bytes32, bytes calldata, uint256) external;
function exec(address, bytes32, bytes calldata, uint256) external returns (bytes memory);
}
interface Changelog {
function getAddress(bytes32) external view returns (address);
}
interface SpellAction {
function officeHours() external view returns (bool);
function description() external view returns (string memory);
function nextCastTime(uint256) external view returns (uint256);
}
contract DssExec {
Changelog constant public log = Changelog(0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F);
uint256 public eta;
bytes public sig;
bool public done;
bytes32 immutable public tag;
address immutable public action;
uint256 immutable public expiration;
PauseAbstract immutable public pause;
// Provides a descriptive tag for bot consumption
// This should be modified weekly to provide a summary of the actions
// Hash: seth keccak -- "$(wget https://<executive-vote-canonical-post> -q -O - 2>/dev/null)"
function description() external view returns (string memory) {
return SpellAction(action).description();
}
function officeHours() external view returns (bool) {
return SpellAction(action).officeHours();
}
function nextCastTime() external view returns (uint256 castTime) {
return SpellAction(action).nextCastTime(eta);
}
// @param _description A string description of the spell
// @param _expiration The timestamp this spell will expire. (Ex. block.timestamp + 30 days)
// @param _spellAction The address of the spell action
constructor(uint256 _expiration, address _spellAction) {
pause = PauseAbstract(log.getAddress("MCD_PAUSE"));
expiration = _expiration;
action = _spellAction;
sig = abi.encodeWithSignature("execute()");
bytes32 _tag; // Required for assembly access
address _action = _spellAction; // Required for assembly access
assembly { _tag := extcodehash(_action) }
tag = _tag;
}
function schedule() public {
require(block.timestamp <= expiration, "This contract has expired");
require(eta == 0, "This spell has already been scheduled");
eta = block.timestamp + PauseAbstract(pause).delay();
pause.plot(action, tag, sig, eta);
}
function cast() public {
require(!done, "spell-already-cast");
done = true;
pause.exec(action, tag, sig, eta);
}
}
////// src/DssSpell.sol
// SPDX-FileCopyrightText: © 2020 Dai Foundation <www.daifoundation.org>
//
// 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.8.16; */
/* import "dss-exec-lib/DssExec.sol"; */
/* import "dss-exec-lib/DssAction.sol"; */
interface VestLike {
function restrict(uint256) external;
function create(address, uint256, uint256, uint256, uint256, address) external returns (uint256);
}
contract DssSpellAction is DssAction {
// Provides a descriptive tag for bot consumption
// This should be modified weekly to provide a summary of the actions
// Hash: cast keccak -- "$(wget https://raw.githubusercontent.com/makerdao/community/367dde95eb4847b63f238465c26150f3b5d08586/governance/votes/Executive%20vote%20-%20February%208%2C%202023.md -q -O - 2>/dev/null)"
string public constant override description =
"2023-02-08 MakerDAO Executive Spell | Hash: 0xa86c6329b0f02e635752d606ffa4157a44cc2265921aab5b3872d35ea6e8d389";
// Turn office hours off
function officeHours() public pure override returns (bool) {
return false;
}
// 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/QmVp4mhhbwWGTfbh2BzwQB9eiBrQBKiqcPRZCaAxNUaar6
//
// uint256 internal constant X_PCT_RATE = ;
// uint256 internal constant MILLION = 10 ** 6;
// uint256 internal constant RAY = 10 ** 27;
uint256 internal constant WAD = 10 ** 18;
address immutable public MCD_VEST_DAI = DssExecLib.getChangelogAddress("MCD_VEST_DAI");
// Wed 01 Feb 2023 12:00:00 AM UTC
uint256 constant public FEB_01_2023 = 1675209600;
// Mon 31 Jul 2023 11:59:59 PM UTC
uint256 constant public AUG_01_2023 = 1690847999;
address constant public CHAINLINK_AUTOMATION = 0x5E9dfc5fe95A0754084fB235D58752274314924b;
address constant public COLDIRON = 0x6634e3555DBF4B149c5AEC99D579A2469015AEca;
address constant public FLIPFLOPFLAP = 0x688d508f3a6B0a377e266405A1583B3316f9A2B3;
address constant public GFXLABS = 0xa6e8772af29b29B9202a073f8E36f447689BEef6;
address constant public FLIPSIDE = 0x1ef753934C40a72a60EaB12A68B6f8854439AA78;
address constant public MHONKASALOTEEMULAU = 0x97Fb39171ACd7C82c439b6158EA2F71D26ba383d;
address constant public FEEDBLACKLOOPS = 0x80882f2A36d49fC46C3c654F7f9cB9a2Bf0423e1;
address constant public PENNBLOCKCHAIN = 0x2165D41aF0d8d5034b9c266597c1A415FA0253bd;
address constant public JUSTINCASE = 0xE070c2dCfcf6C6409202A8a210f71D51dbAe9473;
address constant public STABLENODE = 0x3B91eBDfBC4B78d778f62632a4004804AC5d2DB0;
address constant public LBSBLOCKCHAIN = 0xB83b3e9C8E3393889Afb272D354A7a3Bd1Fbcf5C;
address constant public FRONTIERRESEARCH = 0xA2d55b89654079987CF3985aEff5A7Bd44DA15A8;
address constant public BLOCKCHAINCOLUMBIA = 0xdC1F98682F4F8a5c6d54F345F448437b83f5E432;
address constant public CHRISBLEC = 0xa3f0AbB4Ba74512b5a736C5759446e9B50FDA170;
address constant public CODEKNIGHT = 0x46dFcBc2aFD5DD8789Ef0737fEdb03489D33c428;
address constant public ONESTONE = 0x4eFb12d515801eCfa3Be456B5F348D3CD68f9E8a;
address constant public CONSENSYS = 0xE78658A8acfE982Fde841abb008e57e6545e38b3;
address constant public PVL = 0x6ebB1A9031177208A4CA50164206BF2Fa5ff7416;
function actions() public override {
// Dust Parameter Changes
// https://vote.makerdao.com/polling/QmRfegL4#vote-breakdown
// Reduce dust for ETH-A, WBTC-A, and WSTETH-A to 7,500 DAI.
DssExecLib.setIlkMinVaultAmount("ETH-A", 7_500);
DssExecLib.setIlkMinVaultAmount("WBTC-A", 7_500);
DssExecLib.setIlkMinVaultAmount("WSTETH-A", 7_500);
// Reduce dust for ETH-C, WBTC-C, and WSTETH-B to 3,500 DAI.
DssExecLib.setIlkMinVaultAmount("ETH-C", 3_500);
DssExecLib.setIlkMinVaultAmount("WBTC-C", 3_500);
DssExecLib.setIlkMinVaultAmount("WSTETH-B", 3_500);
// Reduce dust for ETH-B and WBTC-B to 25,000 DAI.
DssExecLib.setIlkMinVaultAmount("ETH-B", 25_000);
DssExecLib.setIlkMinVaultAmount("WBTC-B", 25_000);
// Chainlink Automation Keeper Network Stream Setup
// https://vote.makerdao.com/polling/QmXeWcrX
VestLike(MCD_VEST_DAI).restrict(
VestLike(MCD_VEST_DAI).create(
CHAINLINK_AUTOMATION, // usr
181_000 * WAD, // tot
FEB_01_2023, // bgn
AUG_01_2023 - FEB_01_2023, // tau
0, // eta
address(0) // mgr
)
);
// Recognized Delegate Compensation
// https://mips.makerdao.com/mips/details/MIP61
DssExecLib.sendPaymentFromSurplusBuffer(COLDIRON, 12_000);
DssExecLib.sendPaymentFromSurplusBuffer(FLIPFLOPFLAP, 12_000);
DssExecLib.sendPaymentFromSurplusBuffer(GFXLABS, 11_653);
DssExecLib.sendPaymentFromSurplusBuffer(FLIPSIDE, 11_407);
DssExecLib.sendPaymentFromSurplusBuffer(MHONKASALOTEEMULAU, 11_064);
DssExecLib.sendPaymentFromSurplusBuffer(FEEDBLACKLOOPS, 10_807);
DssExecLib.sendPaymentFromSurplusBuffer(PENNBLOCKCHAIN, 10_738);
DssExecLib.sendPaymentFromSurplusBuffer(JUSTINCASE, 9_588);
DssExecLib.sendPaymentFromSurplusBuffer(STABLENODE, 9_496);
DssExecLib.sendPaymentFromSurplusBuffer(LBSBLOCKCHAIN, 3_797);
DssExecLib.sendPaymentFromSurplusBuffer(FRONTIERRESEARCH, 2_419);
DssExecLib.sendPaymentFromSurplusBuffer(BLOCKCHAINCOLUMBIA, 1_656);
DssExecLib.sendPaymentFromSurplusBuffer(CHRISBLEC, 1_001);
DssExecLib.sendPaymentFromSurplusBuffer(CODEKNIGHT, 939);
DssExecLib.sendPaymentFromSurplusBuffer(ONESTONE, 352);
DssExecLib.sendPaymentFromSurplusBuffer(CONSENSYS, 96);
DssExecLib.sendPaymentFromSurplusBuffer(PVL, 35);
}
}
contract DssSpell is DssExec {
constructor() DssExec(block.timestamp + 30 days, address(new DssSpellAction())) {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"action","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cast","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"done","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"eta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"expiration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"log","outputs":[{"internalType":"contract Changelog","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextCastTime","outputs":[{"internalType":"uint256","name":"castTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"officeHours","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[{"internalType":"contract PauseAbstract","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"schedule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sig","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tag","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}]Contract Creation Code
6101006040523480156200001257600080fd5b5062278d004262000024919062000247565b604051620000329062000200565b604051809103906000f0801580156200004f573d6000803e3d6000fd5b5073da0ab1e0017debcd72be8599041a2aa3ba7e740f73ffffffffffffffffffffffffffffffffffffffff166321f8a7216040518163ffffffff1660e01b81526004016200009d90620002a8565b602060405180830381865afa158015620000bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e191906200032d565b73ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff16815250508160c081815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506040516024016040516020818303038152906040527f61461954000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060019081620001e39190620005cf565b50600080829050803f9150816080818152505050505050620006b6565b6125c4806200194683390190565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000254826200020e565b915062000261836200020e565b92508282019050808211156200027c576200027b62000218565b5b92915050565b7f4d43445f50415553450000000000000000000000000000000000000000000000815250565b6000602082019050620002be6000830162000282565b919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002f582620002c8565b9050919050565b6200030781620002e8565b81146200031357600080fd5b50565b6000815190506200032781620002fc565b92915050565b600060208284031215620003465762000345620002c3565b5b6000620003568482850162000316565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003e157607f821691505b602082108103620003f757620003f662000399565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004617fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000422565b6200046d868362000422565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620004b0620004aa620004a4846200020e565b62000485565b6200020e565b9050919050565b6000819050919050565b620004cc836200048f565b620004e4620004db82620004b7565b8484546200042f565b825550505050565b600090565b620004fb620004ec565b62000508818484620004c1565b505050565b5b81811015620005305762000524600082620004f1565b6001810190506200050e565b5050565b601f8211156200057f576200054981620003fd565b620005548462000412565b8101602085101562000564578190505b6200057c620005738562000412565b8301826200050d565b50505b505050565b600082821c905092915050565b6000620005a46000198460080262000584565b1980831691505092915050565b6000620005bf838362000591565b9150826002028217905092915050565b620005da826200035f565b67ffffffffffffffff811115620005f657620005f56200036a565b5b620006028254620003c8565b6200060f82828562000534565b600060209050601f83116001811462000647576000841562000632578287015190505b6200063e8582620005b1565b865550620006ae565b601f1984166200065786620003fd565b60005b8281101562000681578489015182556001820191506020850194506020810190506200065a565b86831015620006a157848901516200069d601f89168262000591565b8355505b6001600288020188555050505b505050505050565b60805160a05160c05160e0516112096200073d6000396000818161047601528181610505015281816106ac015261074c0152600081816102e501526106050152600081816102c101528181610347015281816103dd0152818161054101528181610788015261082a0152600081816103210152818161056201526107a901526112096000f3fe608060405234801561001057600080fd5b50600436106100ce5760003560e01c80637284e4161161008c578063ae8421e111610066578063ae8421e1146101cd578063b0604a26146101eb578063f7992d85146101f5578063fe7d47bb14610213576100ce565b80637284e416146101875780638456cb59146101a557806396d373e5146101c3576100ce565b8062a7029b146100d35780630a7a1c4d146100f15780634665096d1461010f57806351973ec91461012d57806351f910661461014b5780636e832f0714610169575b600080fd5b6100db610231565b6040516100e89190610959565b60405180910390f35b6100f96102bf565b60405161010691906109bc565b60405180910390f35b6101176102e3565b60405161012491906109f0565b60405180910390f35b610135610307565b6040516101429190610a6a565b60405180910390f35b61015361031f565b6040516101609190610a9e565b60405180910390f35b610171610343565b60405161017e9190610ad4565b60405180910390f35b61018f6103d9565b60405161019c9190610b44565b60405180910390f35b6101ad610474565b6040516101ba9190610b87565b60405180910390f35b6101cb610498565b005b6101d56105f0565b6040516101e29190610ad4565b60405180910390f35b6101f3610603565b005b6101fd610820565b60405161020a91906109f0565b60405180910390f35b61021b610826565b60405161022891906109f0565b60405180910390f35b6001805461023e90610bd1565b80601f016020809104026020016040519081016040528092919081815260200182805461026a90610bd1565b80156102b75780601f1061028c576101008083540402835291602001916102b7565b820191906000526020600020905b81548152906001019060200180831161029a57829003601f168201915b505050505081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b73da0ab1e0017debcd72be8599041a2aa3ba7e740f81565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636e832f076040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d49190610c42565b905090565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637284e4166040518163ffffffff1660e01b8152600401600060405180830381865afa158015610446573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061046f9190610d95565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600260009054906101000a900460ff16156104e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104df90610e2a565b60405180910390fd5b6001600260006101000a81548160ff0219169083151502179055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663168ccd677f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060016000546040518563ffffffff1660e01b81526004016105a59493929190610ee3565b6000604051808303816000875af11580156105c4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906105ed9190610fd0565b50565b600260009054906101000a900460ff1681565b7f0000000000000000000000000000000000000000000000000000000000000000421115610666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065d90611065565b60405180910390fd5b60008054146106aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a1906110f7565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636a42b8f86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610715573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107399190611143565b42610744919061119f565b6000819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166346d2fbbb7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060016000546040518563ffffffff1660e01b81526004016107ec9493929190610ee3565b600060405180830381600087803b15801561080657600080fd5b505af115801561081a573d6000803e3d6000fd5b50505050565b60005481565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bf0fbcec6000546040518263ffffffff1660e01b815260040161088391906109f0565b602060405180830381865afa1580156108a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c49190611143565b905090565b600081519050919050565b600082825260208201905092915050565b60005b838110156109035780820151818401526020810190506108e8565b60008484015250505050565b6000601f19601f8301169050919050565b600061092b826108c9565b61093581856108d4565b93506109458185602086016108e5565b61094e8161090f565b840191505092915050565b600060208201905081810360008301526109738184610920565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006109a68261097b565b9050919050565b6109b68161099b565b82525050565b60006020820190506109d160008301846109ad565b92915050565b6000819050919050565b6109ea816109d7565b82525050565b6000602082019050610a0560008301846109e1565b92915050565b6000819050919050565b6000610a30610a2b610a268461097b565b610a0b565b61097b565b9050919050565b6000610a4282610a15565b9050919050565b6000610a5482610a37565b9050919050565b610a6481610a49565b82525050565b6000602082019050610a7f6000830184610a5b565b92915050565b6000819050919050565b610a9881610a85565b82525050565b6000602082019050610ab36000830184610a8f565b92915050565b60008115159050919050565b610ace81610ab9565b82525050565b6000602082019050610ae96000830184610ac5565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610b1682610aef565b610b208185610afa565b9350610b308185602086016108e5565b610b398161090f565b840191505092915050565b60006020820190508181036000830152610b5e8184610b0b565b905092915050565b6000610b7182610a37565b9050919050565b610b8181610b66565b82525050565b6000602082019050610b9c6000830184610b78565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610be957607f821691505b602082108103610bfc57610bfb610ba2565b5b50919050565b6000604051905090565b600080fd5b600080fd5b610c1f81610ab9565b8114610c2a57600080fd5b50565b600081519050610c3c81610c16565b92915050565b600060208284031215610c5857610c57610c0c565b5b6000610c6684828501610c2d565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610cb18261090f565b810181811067ffffffffffffffff82111715610cd057610ccf610c79565b5b80604052505050565b6000610ce3610c02565b9050610cef8282610ca8565b919050565b600067ffffffffffffffff821115610d0f57610d0e610c79565b5b610d188261090f565b9050602081019050919050565b6000610d38610d3384610cf4565b610cd9565b905082815260208101848484011115610d5457610d53610c74565b5b610d5f8482856108e5565b509392505050565b600082601f830112610d7c57610d7b610c6f565b5b8151610d8c848260208601610d25565b91505092915050565b600060208284031215610dab57610daa610c0c565b5b600082015167ffffffffffffffff811115610dc957610dc8610c11565b5b610dd584828501610d67565b91505092915050565b7f7370656c6c2d616c72656164792d636173740000000000000000000000000000600082015250565b6000610e14601283610afa565b9150610e1f82610dde565b602082019050919050565b60006020820190508181036000830152610e4381610e07565b9050919050565b60008190508160005260206000209050919050565b60008154610e6c81610bd1565b610e7681866108d4565b94506001821660008114610e915760018114610ea757610eda565b60ff198316865281151560200286019350610eda565b610eb085610e4a565b60005b83811015610ed257815481890152600182019150602081019050610eb3565b808801955050505b50505092915050565b6000608082019050610ef860008301876109ad565b610f056020830186610a8f565b8181036040830152610f178185610e5f565b9050610f2660608301846109e1565b95945050505050565b600067ffffffffffffffff821115610f4a57610f49610c79565b5b610f538261090f565b9050602081019050919050565b6000610f73610f6e84610f2f565b610cd9565b905082815260208101848484011115610f8f57610f8e610c74565b5b610f9a8482856108e5565b509392505050565b600082601f830112610fb757610fb6610c6f565b5b8151610fc7848260208601610f60565b91505092915050565b600060208284031215610fe657610fe5610c0c565b5b600082015167ffffffffffffffff81111561100457611003610c11565b5b61101084828501610fa2565b91505092915050565b7f5468697320636f6e747261637420686173206578706972656400000000000000600082015250565b600061104f601983610afa565b915061105a82611019565b602082019050919050565b6000602082019050818103600083015261107e81611042565b9050919050565b7f54686973207370656c6c2068617320616c7265616479206265656e207363686560008201527f64756c6564000000000000000000000000000000000000000000000000000000602082015250565b60006110e1602583610afa565b91506110ec82611085565b604082019050919050565b60006020820190508181036000830152611110816110d4565b9050919050565b611120816109d7565b811461112b57600080fd5b50565b60008151905061113d81611117565b92915050565b60006020828403121561115957611158610c0c565b5b60006111678482850161112e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006111aa826109d7565b91506111b5836109d7565b92508282019050808211156111cd576111cc611170565b5b9291505056fea26469706673582212202ab9304c970d229a568bec443192975d0bb3353a816a241073e5227effb4c3f764736f6c6343000810003360a0604052738de6ddbcd5053d32292aaa0d2105a32d108484a663a16ed56f6040518163ffffffff1660e01b81526004016200003b90620000eb565b602060405180830381865af415801562000059573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200007f919062000170565b73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250348015620000be57600080fd5b50620001a2565b7f4d43445f564553545f4441490000000000000000000000000000000000000000815250565b60006020820190506200010160008301620000c5565b919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000138826200010b565b9050919050565b6200014a816200012b565b81146200015657600080fd5b50565b6000815190506200016a816200013f565b92915050565b60006020828403121562000189576200018862000106565b5b6000620001998482850162000159565b91505092915050565b6080516123f8620001cc6000396000818161068601528181610b420152610b7e01526123f86000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80637e562417116100de578063a154fdfa11610097578063dc6eec1711610071578063dc6eec1714610425578063f423ca4914610443578063f704f2af14610461578063f99e36bc1461047f5761018e565b8063a154fdfa146103b9578063bf0fbcec146103d7578063c7ae06bd146104075761018e565b80637e5624171461030557806389ecdf88146103235780638aacd08e146103415780638ae6823f1461035f57806393d576231461037d57806395f7794e1461039b5761018e565b806345be18761161014b57806364ac152c1161012557806364ac152c1461028d5780636e832f07146102ab5780636f6be4ee146102c95780637284e416146102e75761018e565b806345be187614610247578063614619541461026557806362d430f21461026f5761018e565b806306093da7146101935780630808b784146101b1578063227233f3146101cf5780632d602c34146101ed5780633452f9a61461020b578063432fd41314610229575b600080fd5b61019b610489565b6040516101a8919061155e565b60405180910390f35b6101b96104a1565b6040516101c6919061155e565b60405180910390f35b6101d76104b9565b6040516101e4919061155e565b60405180910390f35b6101f56104d1565b604051610202919061155e565b60405180910390f35b6102136104e9565b604051610220919061155e565b60405180910390f35b610231610501565b60405161023e919061155e565b60405180910390f35b61024f610519565b60405161025c919061155e565b60405180910390f35b61026d610531565b005b6102776105fb565b604051610284919061155e565b60405180910390f35b610295610613565b6040516102a2919061155e565b60405180910390f35b6102b361062b565b6040516102c09190611594565b60405180910390f35b6102d1610630565b6040516102de919061155e565b60405180910390f35b6102ef610648565b6040516102fc919061163f565b60405180910390f35b61030d610664565b60405161031a919061167a565b60405180910390f35b61032b61066c565b604051610338919061155e565b60405180910390f35b610349610684565b604051610356919061155e565b60405180910390f35b6103676106a8565b604051610374919061155e565b60405180910390f35b6103856106c0565b604051610392919061155e565b60405180910390f35b6103a36106d8565b6040516103b0919061155e565b60405180910390f35b6103c16106f0565b6040516103ce919061155e565b60405180910390f35b6103f160048036038101906103ec91906116c6565b610708565b6040516103fe919061167a565b60405180910390f35b61040f6107a8565b60405161041c919061155e565b60405180910390f35b61042d6107c0565b60405161043a919061155e565b60405180910390f35b61044b6107d8565b604051610458919061155e565b60405180910390f35b6104696107f0565b604051610476919061167a565b60405180910390f35b6104876107f8565b005b73b83b3e9c8e3393889afb272d354a7a3bd1fbcf5c81565b73dc1f98682f4f8a5c6d54f345f448437b83f5e43281565b73a6e8772af29b29b9202a073f8e36f447689beef681565b735e9dfc5fe95a0754084fb235d58752274314924b81565b73688d508f3a6b0a377e266405a1583b3316f9a2b381565b731ef753934c40a72a60eab12a68b6f8854439aa7881565b73a3f0abb4ba74512b5a736c5759446e9b50fda17081565b738de6ddbcd5053d32292aaa0d2105a32d108484a66335329d4c4261055461062b565b6040518363ffffffff1660e01b8152600401610571929190611722565b602060405180830381865af415801561058e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b29190611777565b6105f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e8906117f0565b60405180910390fd5b6105f96107f8565b565b73e070c2dcfcf6c6409202a8a210f71d51dbae947381565b736ebb1a9031177208a4ca50164206bf2fa5ff741681565b600090565b73a2d55b89654079987cf3985aeff5a7bd44da15a881565b6040518060a00160405280606e8152602001612355606e913981565b6364c84aff81565b73e78658a8acfe982fde841abb008e57e6545e38b381565b7f000000000000000000000000000000000000000000000000000000000000000081565b736634e3555dbf4b149c5aec99d579a2469015aeca81565b733b91ebdfbc4b78d778f62632a4004804ac5d2db081565b7397fb39171acd7c82c439b6158ea2f71d26ba383d81565b732165d41af0d8d5034b9c266597c1a415fa0253bd81565b600064ffffffffff801682111561071e57600080fd5b738de6ddbcd5053d32292aaa0d2105a32d108484a663d2557456834261074261062b565b6040518463ffffffff1660e01b815260040161076093929190611810565b602060405180830381865af415801561077d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a1919061185c565b9050919050565b734efb12d515801ecfa3be456b5f348d3cd68f9e8a81565b7380882f2a36d49fc46c3c654f7f9cb9a2bf0423e181565b7346dfcbc2afd5dd8789ef0737fedb03489d33c42881565b6363d9ab8081565b738de6ddbcd5053d32292aaa0d2105a32d108484a6635fc132c1611d4c6040518263ffffffff1660e01b815260040161083191906118f4565b60006040518083038186803b15801561084957600080fd5b505af415801561085d573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a6635fc132c1611d4c6040518263ffffffff1660e01b815260040161089a9190611941565b60006040518083038186803b1580156108b257600080fd5b505af41580156108c6573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a6635fc132c1611d4c6040518263ffffffff1660e01b8152600401610903919061198e565b60006040518083038186803b15801561091b57600080fd5b505af415801561092f573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a6635fc132c1610dac6040518263ffffffff1660e01b815260040161096c9190611a16565b60006040518083038186803b15801561098457600080fd5b505af4158015610998573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a6635fc132c1610dac6040518263ffffffff1660e01b81526004016109d59190611a63565b60006040518083038186803b1580156109ed57600080fd5b505af4158015610a01573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a6635fc132c1610dac6040518263ffffffff1660e01b8152600401610a3e9190611ab0565b60006040518083038186803b158015610a5657600080fd5b505af4158015610a6a573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a6635fc132c16161a86040518263ffffffff1660e01b8152600401610aa79190611b38565b60006040518083038186803b158015610abf57600080fd5b505af4158015610ad3573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a6635fc132c16161a86040518263ffffffff1660e01b8152600401610b109190611b85565b60006040518083038186803b158015610b2857600080fd5b505af4158015610b3c573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633c433d5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663db64ff8f735e9dfc5fe95a0754084fb235d58752274314924b670de0b6b3a76400006202c308610be49190611bdb565b6363d9ab80806364c84aff610bf99190611c35565b6000806040518763ffffffff1660e01b8152600401610c1d96959493929190611ca4565b6020604051808303816000875af1158015610c3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c60919061185c565b6040518263ffffffff1660e01b8152600401610c7c919061167a565b600060405180830381600087803b158015610c9657600080fd5b505af1158015610caa573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a663b1698f41736634e3555dbf4b149c5aec99d579a2469015aeca612ee06040518363ffffffff1660e01b8152600401610cfd929190611d4f565b60006040518083038186803b158015610d1557600080fd5b505af4158015610d29573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a663b1698f4173688d508f3a6b0a377e266405a1583b3316f9a2b3612ee06040518363ffffffff1660e01b8152600401610d7c929190611d4f565b60006040518083038186803b158015610d9457600080fd5b505af4158015610da8573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a663b1698f4173a6e8772af29b29b9202a073f8e36f447689beef6612d856040518363ffffffff1660e01b8152600401610dfb929190611db3565b60006040518083038186803b158015610e1357600080fd5b505af4158015610e27573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a663b1698f41731ef753934c40a72a60eab12a68b6f8854439aa78612c8f6040518363ffffffff1660e01b8152600401610e7a929190611e17565b60006040518083038186803b158015610e9257600080fd5b505af4158015610ea6573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a663b1698f417397fb39171acd7c82c439b6158ea2f71d26ba383d612b386040518363ffffffff1660e01b8152600401610ef9929190611e7b565b60006040518083038186803b158015610f1157600080fd5b505af4158015610f25573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a663b1698f417380882f2a36d49fc46c3c654f7f9cb9a2bf0423e1612a376040518363ffffffff1660e01b8152600401610f78929190611edf565b60006040518083038186803b158015610f9057600080fd5b505af4158015610fa4573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a663b1698f41732165d41af0d8d5034b9c266597c1a415fa0253bd6129f26040518363ffffffff1660e01b8152600401610ff7929190611f43565b60006040518083038186803b15801561100f57600080fd5b505af4158015611023573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a663b1698f4173e070c2dcfcf6c6409202a8a210f71d51dbae94736125746040518363ffffffff1660e01b8152600401611076929190611fa7565b60006040518083038186803b15801561108e57600080fd5b505af41580156110a2573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a663b1698f41733b91ebdfbc4b78d778f62632a4004804ac5d2db06125186040518363ffffffff1660e01b81526004016110f592919061200b565b60006040518083038186803b15801561110d57600080fd5b505af4158015611121573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a663b1698f4173b83b3e9c8e3393889afb272d354a7a3bd1fbcf5c610ed56040518363ffffffff1660e01b815260040161117492919061206f565b60006040518083038186803b15801561118c57600080fd5b505af41580156111a0573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a663b1698f4173a2d55b89654079987cf3985aeff5a7bd44da15a86109736040518363ffffffff1660e01b81526004016111f39291906120d3565b60006040518083038186803b15801561120b57600080fd5b505af415801561121f573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a663b1698f4173dc1f98682f4f8a5c6d54f345f448437b83f5e4326106786040518363ffffffff1660e01b8152600401611272929190612137565b60006040518083038186803b15801561128a57600080fd5b505af415801561129e573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a663b1698f4173a3f0abb4ba74512b5a736c5759446e9b50fda1706103e96040518363ffffffff1660e01b81526004016112f192919061219b565b60006040518083038186803b15801561130957600080fd5b505af415801561131d573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a663b1698f417346dfcbc2afd5dd8789ef0737fedb03489d33c4286103ab6040518363ffffffff1660e01b81526004016113709291906121ff565b60006040518083038186803b15801561138857600080fd5b505af415801561139c573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a663b1698f41734efb12d515801ecfa3be456b5f348d3cd68f9e8a6101606040518363ffffffff1660e01b81526004016113ef929190612263565b60006040518083038186803b15801561140757600080fd5b505af415801561141b573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a663b1698f4173e78658a8acfe982fde841abb008e57e6545e38b360606040518363ffffffff1660e01b815260040161146d9291906122c7565b60006040518083038186803b15801561148557600080fd5b505af4158015611499573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a663b1698f41736ebb1a9031177208a4ca50164206bf2fa5ff741660236040518363ffffffff1660e01b81526004016114eb92919061232b565b60006040518083038186803b15801561150357600080fd5b505af4158015611517573d6000803e3d6000fd5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115488261151d565b9050919050565b6115588161153d565b82525050565b6000602082019050611573600083018461154f565b92915050565b60008115159050919050565b61158e81611579565b82525050565b60006020820190506115a96000830184611585565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156115e95780820151818401526020810190506115ce565b60008484015250505050565b6000601f19601f8301169050919050565b6000611611826115af565b61161b81856115ba565b935061162b8185602086016115cb565b611634816115f5565b840191505092915050565b600060208201905081810360008301526116598184611606565b905092915050565b6000819050919050565b61167481611661565b82525050565b600060208201905061168f600083018461166b565b92915050565b600080fd5b6116a381611661565b81146116ae57600080fd5b50565b6000813590506116c08161169a565b92915050565b6000602082840312156116dc576116db611695565b5b60006116ea848285016116b1565b91505092915050565b600064ffffffffff82169050919050565b61170d816116f3565b82525050565b61171c81611579565b82525050565b60006040820190506117376000830185611704565b6117446020830184611713565b9392505050565b61175481611579565b811461175f57600080fd5b50565b6000815190506117718161174b565b92915050565b60006020828403121561178d5761178c611695565b5b600061179b84828501611762565b91505092915050565b7f4f757473696465206f666669636520686f757273000000000000000000000000600082015250565b60006117da6014836115ba565b91506117e5826117a4565b602082019050919050565b60006020820190508181036000830152611809816117cd565b9050919050565b60006060820190506118256000830186611704565b6118326020830185611704565b61183f6040830184611713565b949350505050565b6000815190506118568161169a565b92915050565b60006020828403121561187257611871611695565b5b600061188084828501611847565b91505092915050565b7f4554482d41000000000000000000000000000000000000000000000000000000815250565b6000819050919050565b6000819050919050565b60006118de6118d96118d4846118af565b6118b9565b611661565b9050919050565b6118ee816118c3565b82525050565b600060408201905061190860008301611889565b61191560208301846118e5565b92915050565b7f574254432d410000000000000000000000000000000000000000000000000000815250565b60006040820190506119556000830161191b565b61196260208301846118e5565b92915050565b7f5753544554482d41000000000000000000000000000000000000000000000000815250565b60006040820190506119a260008301611968565b6119af60208301846118e5565b92915050565b7f4554482d43000000000000000000000000000000000000000000000000000000815250565b6000819050919050565b6000611a006119fb6119f6846119db565b6118b9565b611661565b9050919050565b611a10816119e5565b82525050565b6000604082019050611a2a600083016119b5565b611a376020830184611a07565b92915050565b7f574254432d430000000000000000000000000000000000000000000000000000815250565b6000604082019050611a7760008301611a3d565b611a846020830184611a07565b92915050565b7f5753544554482d42000000000000000000000000000000000000000000000000815250565b6000604082019050611ac460008301611a8a565b611ad16020830184611a07565b92915050565b7f4554482d42000000000000000000000000000000000000000000000000000000815250565b6000819050919050565b6000611b22611b1d611b1884611afd565b6118b9565b611661565b9050919050565b611b3281611b07565b82525050565b6000604082019050611b4c60008301611ad7565b611b596020830184611b29565b92915050565b7f574254432d420000000000000000000000000000000000000000000000000000815250565b6000604082019050611b9960008301611b5f565b611ba66020830184611b29565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611be682611661565b9150611bf183611661565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611c2a57611c29611bac565b5b828202905092915050565b6000611c4082611661565b9150611c4b83611661565b9250828203905081811115611c6357611c62611bac565b5b92915050565b6000819050919050565b6000611c8e611c89611c8484611c69565b6118b9565b611661565b9050919050565b611c9e81611c73565b82525050565b600060c082019050611cb9600083018961154f565b611cc6602083018861166b565b611cd3604083018761166b565b611ce0606083018661166b565b611ced6080830185611c95565b611cfa60a083018461154f565b979650505050505050565b611d0e8161153d565b82525050565b6000819050919050565b6000611d39611d34611d2f84611d14565b6118b9565b611661565b9050919050565b611d4981611d1e565b82525050565b6000604082019050611d646000830185611d05565b611d716020830184611d40565b9392505050565b6000819050919050565b6000611d9d611d98611d9384611d78565b6118b9565b611661565b9050919050565b611dad81611d82565b82525050565b6000604082019050611dc86000830185611d05565b611dd56020830184611da4565b9392505050565b6000819050919050565b6000611e01611dfc611df784611ddc565b6118b9565b611661565b9050919050565b611e1181611de6565b82525050565b6000604082019050611e2c6000830185611d05565b611e396020830184611e08565b9392505050565b6000819050919050565b6000611e65611e60611e5b84611e40565b6118b9565b611661565b9050919050565b611e7581611e4a565b82525050565b6000604082019050611e906000830185611d05565b611e9d6020830184611e6c565b9392505050565b6000819050919050565b6000611ec9611ec4611ebf84611ea4565b6118b9565b611661565b9050919050565b611ed981611eae565b82525050565b6000604082019050611ef46000830185611d05565b611f016020830184611ed0565b9392505050565b6000819050919050565b6000611f2d611f28611f2384611f08565b6118b9565b611661565b9050919050565b611f3d81611f12565b82525050565b6000604082019050611f586000830185611d05565b611f656020830184611f34565b9392505050565b6000819050919050565b6000611f91611f8c611f8784611f6c565b6118b9565b611661565b9050919050565b611fa181611f76565b82525050565b6000604082019050611fbc6000830185611d05565b611fc96020830184611f98565b9392505050565b6000819050919050565b6000611ff5611ff0611feb84611fd0565b6118b9565b611661565b9050919050565b61200581611fda565b82525050565b60006040820190506120206000830185611d05565b61202d6020830184611ffc565b9392505050565b6000819050919050565b600061205961205461204f84612034565b6118b9565b611661565b9050919050565b6120698161203e565b82525050565b60006040820190506120846000830185611d05565b6120916020830184612060565b9392505050565b6000819050919050565b60006120bd6120b86120b384612098565b6118b9565b611661565b9050919050565b6120cd816120a2565b82525050565b60006040820190506120e86000830185611d05565b6120f560208301846120c4565b9392505050565b6000819050919050565b600061212161211c612117846120fc565b6118b9565b611661565b9050919050565b61213181612106565b82525050565b600060408201905061214c6000830185611d05565b6121596020830184612128565b9392505050565b6000819050919050565b600061218561218061217b84612160565b6118b9565b611661565b9050919050565b6121958161216a565b82525050565b60006040820190506121b06000830185611d05565b6121bd602083018461218c565b9392505050565b6000819050919050565b60006121e96121e46121df846121c4565b6118b9565b611661565b9050919050565b6121f9816121ce565b82525050565b60006040820190506122146000830185611d05565b61222160208301846121f0565b9392505050565b6000819050919050565b600061224d61224861224384612228565b6118b9565b611661565b9050919050565b61225d81612232565b82525050565b60006040820190506122786000830185611d05565b6122856020830184612254565b9392505050565b6000819050919050565b60006122b16122ac6122a78461228c565b6118b9565b611661565b9050919050565b6122c181612296565b82525050565b60006040820190506122dc6000830185611d05565b6122e960208301846122b8565b9392505050565b6000819050919050565b600061231561231061230b846122f0565b6118b9565b611661565b9050919050565b612325816122fa565b82525050565b60006040820190506123406000830185611d05565b61234d602083018461231c565b939250505056fe323032332d30322d3038204d616b657244414f20457865637574697665205370656c6c207c20486173683a20307861383663363332396230663032653633353735326436303666666134313537613434636332323635393231616162356233383732643335656136653864333839a2646970667358221220bf27c6c9914d588e746113852af3b6ecd0b48c9d41c8e8547cf95d87a79c14a064736f6c63430008100033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ce5760003560e01c80637284e4161161008c578063ae8421e111610066578063ae8421e1146101cd578063b0604a26146101eb578063f7992d85146101f5578063fe7d47bb14610213576100ce565b80637284e416146101875780638456cb59146101a557806396d373e5146101c3576100ce565b8062a7029b146100d35780630a7a1c4d146100f15780634665096d1461010f57806351973ec91461012d57806351f910661461014b5780636e832f0714610169575b600080fd5b6100db610231565b6040516100e89190610959565b60405180910390f35b6100f96102bf565b60405161010691906109bc565b60405180910390f35b6101176102e3565b60405161012491906109f0565b60405180910390f35b610135610307565b6040516101429190610a6a565b60405180910390f35b61015361031f565b6040516101609190610a9e565b60405180910390f35b610171610343565b60405161017e9190610ad4565b60405180910390f35b61018f6103d9565b60405161019c9190610b44565b60405180910390f35b6101ad610474565b6040516101ba9190610b87565b60405180910390f35b6101cb610498565b005b6101d56105f0565b6040516101e29190610ad4565b60405180910390f35b6101f3610603565b005b6101fd610820565b60405161020a91906109f0565b60405180910390f35b61021b610826565b60405161022891906109f0565b60405180910390f35b6001805461023e90610bd1565b80601f016020809104026020016040519081016040528092919081815260200182805461026a90610bd1565b80156102b75780601f1061028c576101008083540402835291602001916102b7565b820191906000526020600020905b81548152906001019060200180831161029a57829003601f168201915b505050505081565b7f00000000000000000000000015e94da27027e9ed4bfbb1e2b96e10432f55e64381565b7f00000000000000000000000000000000000000000000000000000000640b530f81565b73da0ab1e0017debcd72be8599041a2aa3ba7e740f81565b7f45e072d56a56fb9508a14499cdbf29b49e7cc756dc873f4890ddd80e18be38f381565b60007f00000000000000000000000015e94da27027e9ed4bfbb1e2b96e10432f55e64373ffffffffffffffffffffffffffffffffffffffff16636e832f076040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d49190610c42565b905090565b60607f00000000000000000000000015e94da27027e9ed4bfbb1e2b96e10432f55e64373ffffffffffffffffffffffffffffffffffffffff16637284e4166040518163ffffffff1660e01b8152600401600060405180830381865afa158015610446573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061046f9190610d95565b905090565b7f000000000000000000000000be286431454714f511008713973d3b053a2d38f381565b600260009054906101000a900460ff16156104e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104df90610e2a565b60405180910390fd5b6001600260006101000a81548160ff0219169083151502179055507f000000000000000000000000be286431454714f511008713973d3b053a2d38f373ffffffffffffffffffffffffffffffffffffffff1663168ccd677f00000000000000000000000015e94da27027e9ed4bfbb1e2b96e10432f55e6437f45e072d56a56fb9508a14499cdbf29b49e7cc756dc873f4890ddd80e18be38f360016000546040518563ffffffff1660e01b81526004016105a59493929190610ee3565b6000604051808303816000875af11580156105c4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906105ed9190610fd0565b50565b600260009054906101000a900460ff1681565b7f00000000000000000000000000000000000000000000000000000000640b530f421115610666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065d90611065565b60405180910390fd5b60008054146106aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a1906110f7565b60405180910390fd5b7f000000000000000000000000be286431454714f511008713973d3b053a2d38f373ffffffffffffffffffffffffffffffffffffffff16636a42b8f86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610715573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107399190611143565b42610744919061119f565b6000819055507f000000000000000000000000be286431454714f511008713973d3b053a2d38f373ffffffffffffffffffffffffffffffffffffffff166346d2fbbb7f00000000000000000000000015e94da27027e9ed4bfbb1e2b96e10432f55e6437f45e072d56a56fb9508a14499cdbf29b49e7cc756dc873f4890ddd80e18be38f360016000546040518563ffffffff1660e01b81526004016107ec9493929190610ee3565b600060405180830381600087803b15801561080657600080fd5b505af115801561081a573d6000803e3d6000fd5b50505050565b60005481565b60007f00000000000000000000000015e94da27027e9ed4bfbb1e2b96e10432f55e64373ffffffffffffffffffffffffffffffffffffffff1663bf0fbcec6000546040518263ffffffff1660e01b815260040161088391906109f0565b602060405180830381865afa1580156108a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c49190611143565b905090565b600081519050919050565b600082825260208201905092915050565b60005b838110156109035780820151818401526020810190506108e8565b60008484015250505050565b6000601f19601f8301169050919050565b600061092b826108c9565b61093581856108d4565b93506109458185602086016108e5565b61094e8161090f565b840191505092915050565b600060208201905081810360008301526109738184610920565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006109a68261097b565b9050919050565b6109b68161099b565b82525050565b60006020820190506109d160008301846109ad565b92915050565b6000819050919050565b6109ea816109d7565b82525050565b6000602082019050610a0560008301846109e1565b92915050565b6000819050919050565b6000610a30610a2b610a268461097b565b610a0b565b61097b565b9050919050565b6000610a4282610a15565b9050919050565b6000610a5482610a37565b9050919050565b610a6481610a49565b82525050565b6000602082019050610a7f6000830184610a5b565b92915050565b6000819050919050565b610a9881610a85565b82525050565b6000602082019050610ab36000830184610a8f565b92915050565b60008115159050919050565b610ace81610ab9565b82525050565b6000602082019050610ae96000830184610ac5565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610b1682610aef565b610b208185610afa565b9350610b308185602086016108e5565b610b398161090f565b840191505092915050565b60006020820190508181036000830152610b5e8184610b0b565b905092915050565b6000610b7182610a37565b9050919050565b610b8181610b66565b82525050565b6000602082019050610b9c6000830184610b78565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610be957607f821691505b602082108103610bfc57610bfb610ba2565b5b50919050565b6000604051905090565b600080fd5b600080fd5b610c1f81610ab9565b8114610c2a57600080fd5b50565b600081519050610c3c81610c16565b92915050565b600060208284031215610c5857610c57610c0c565b5b6000610c6684828501610c2d565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610cb18261090f565b810181811067ffffffffffffffff82111715610cd057610ccf610c79565b5b80604052505050565b6000610ce3610c02565b9050610cef8282610ca8565b919050565b600067ffffffffffffffff821115610d0f57610d0e610c79565b5b610d188261090f565b9050602081019050919050565b6000610d38610d3384610cf4565b610cd9565b905082815260208101848484011115610d5457610d53610c74565b5b610d5f8482856108e5565b509392505050565b600082601f830112610d7c57610d7b610c6f565b5b8151610d8c848260208601610d25565b91505092915050565b600060208284031215610dab57610daa610c0c565b5b600082015167ffffffffffffffff811115610dc957610dc8610c11565b5b610dd584828501610d67565b91505092915050565b7f7370656c6c2d616c72656164792d636173740000000000000000000000000000600082015250565b6000610e14601283610afa565b9150610e1f82610dde565b602082019050919050565b60006020820190508181036000830152610e4381610e07565b9050919050565b60008190508160005260206000209050919050565b60008154610e6c81610bd1565b610e7681866108d4565b94506001821660008114610e915760018114610ea757610eda565b60ff198316865281151560200286019350610eda565b610eb085610e4a565b60005b83811015610ed257815481890152600182019150602081019050610eb3565b808801955050505b50505092915050565b6000608082019050610ef860008301876109ad565b610f056020830186610a8f565b8181036040830152610f178185610e5f565b9050610f2660608301846109e1565b95945050505050565b600067ffffffffffffffff821115610f4a57610f49610c79565b5b610f538261090f565b9050602081019050919050565b6000610f73610f6e84610f2f565b610cd9565b905082815260208101848484011115610f8f57610f8e610c74565b5b610f9a8482856108e5565b509392505050565b600082601f830112610fb757610fb6610c6f565b5b8151610fc7848260208601610f60565b91505092915050565b600060208284031215610fe657610fe5610c0c565b5b600082015167ffffffffffffffff81111561100457611003610c11565b5b61101084828501610fa2565b91505092915050565b7f5468697320636f6e747261637420686173206578706972656400000000000000600082015250565b600061104f601983610afa565b915061105a82611019565b602082019050919050565b6000602082019050818103600083015261107e81611042565b9050919050565b7f54686973207370656c6c2068617320616c7265616479206265656e207363686560008201527f64756c6564000000000000000000000000000000000000000000000000000000602082015250565b60006110e1602583610afa565b91506110ec82611085565b604082019050919050565b60006020820190508181036000830152611110816110d4565b9050919050565b611120816109d7565b811461112b57600080fd5b50565b60008151905061113d81611117565b92915050565b60006020828403121561115957611158610c0c565b5b60006111678482850161112e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006111aa826109d7565b91506111b5836109d7565b92508282019050808211156111cd576111cc611170565b5b9291505056fea26469706673582212202ab9304c970d229a568bec443192975d0bb3353a816a241073e5227effb4c3f764736f6c63430008100033
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 35 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.