ETH Price: $3,379.69 (+3.72%)

Contract

0x622236BB180256B6Ae1a935DaE08dC0356141632
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer210932462024-11-01 13:58:4752 days ago1730469527IN
Mirror: WRITE Token
0 ETH0.0005180417.39979527
Approve209974792024-10-19 5:18:5965 days ago1729315139IN
Mirror: WRITE Token
0 ETH0.0003417114.05035616
Approve209970812024-10-19 3:58:5965 days ago1729310339IN
Mirror: WRITE Token
0 ETH0.000357927.67999185
Transfer207252952024-09-11 5:30:47103 days ago1726032647IN
Mirror: WRITE Token
0 ETH0.000093722
Accept Ownership206302902024-08-28 23:12:35117 days ago1724886755IN
Mirror: WRITE Token
0 ETH0.000044111.33139092
Approve205753822024-08-21 7:03:47124 days ago1724223827IN
Mirror: WRITE Token
0 ETH0.000026751.1
Approve205502012024-08-17 18:42:23128 days ago1723920143IN
Mirror: WRITE Token
0 ETH0.000033861.39221569
Permit198535232024-05-12 11:04:35225 days ago1715511875IN
Mirror: WRITE Token
0 ETH0.000228214.18161198
Register197630782024-04-29 19:33:47238 days ago1714419227IN
Mirror: WRITE Token
0 ETH0.0018213610.62301486
Register197630262024-04-29 19:23:11238 days ago1714418591IN
Mirror: WRITE Token
0 ETH0.0019903411.60773097
Approve197422992024-04-26 21:48:11241 days ago1714168091IN
Mirror: WRITE Token
0 ETH0.000255795.52562625
Register195413852024-03-29 18:17:59269 days ago1711736279IN
Mirror: WRITE Token
0 ETH0.0047262627.56561982
Register194673392024-03-19 7:34:11279 days ago1710833651IN
Mirror: WRITE Token
0 ETH0.0050394329.3962976
Register192383942024-02-16 5:29:23311 days ago1708061363IN
Mirror: WRITE Token
0 ETH0.0031322618.26332337
Register192246302024-02-14 7:10:23313 days ago1707894623IN
Mirror: WRITE Token
0 ETH0.0026434215.41194506
Register191863712024-02-08 22:19:59319 days ago1707430799IN
Mirror: WRITE Token
0 ETH0.0091898353.58315821
Register191250882024-01-31 7:49:47327 days ago1706687387IN
Mirror: WRITE Token
0 ETH0.0028158716.41163162
Register191199632024-01-30 14:36:47328 days ago1706625407IN
Mirror: WRITE Token
0 ETH0.0050176729.26937501
Register191168222024-01-30 4:05:35328 days ago1706587535IN
Mirror: WRITE Token
0 ETH0.0021288412.41632817
Transfer191168012024-01-30 4:01:23328 days ago1706587283IN
Mirror: WRITE Token
0 ETH0.0006547412.67379983
Register191167212024-01-30 3:45:11328 days ago1706586311IN
Mirror: WRITE Token
0 ETH0.0019784511.53762243
Register191131472024-01-29 15:42:47329 days ago1706542967IN
Mirror: WRITE Token
0 ETH0.0036331721.17063042
Register190927302024-01-26 19:01:59332 days ago1706295719IN
Mirror: WRITE Token
0 ETH0.0036093321.05267447
Register190592012024-01-22 2:05:35336 days ago1705889135IN
Mirror: WRITE Token
0 ETH0.0019178911.18444643
Register190277072024-01-17 16:10:59341 days ago1705507859IN
Mirror: WRITE Token
0 ETH0.0098495557.45091163
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MirrorWriteToken

Compiler Version
v0.6.8+commit.0bbfe453

Optimization Enabled:
Yes with 2000 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-02-05
*/

//SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity 0.6.8;
pragma experimental ABIEncoderV2;

interface IMirrorWriteToken {
    function register(string calldata label, address owner) external;

    function registrationCost() external view returns (uint256);

    // ============ ERC20 Interface ============

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    function nonces(address owner) external view returns (uint256);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
}

/**
 * @title MirrorWriteToken
 * @author MirrorXYZ
 *
 *  An ERC20 that grants access to the ENS namespace through a
 *  burn-and-register model.
 */
contract MirrorWriteToken is IMirrorWriteToken {
    using SafeMath for uint256;

    // ============ Immutable ERC20 Attributes ============

    string public constant override symbol = "WRITE";
    string public constant override name = "Mirror Write Token";
    uint8 public constant override decimals = 18;

    // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public constant PERMIT_TYPEHASH =
        0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;
    bytes32 public immutable override DOMAIN_SEPARATOR;

    // ============ Immutable Registration Configuration ============

    uint256 internal constant REGISTRATION_COST = 1e18;

    // ============ Mutable Ownership Configuration ============

    address private _owner;
    /**
     * @dev Allows for two-step ownership transfer, whereby the next owner
     * needs to accept the ownership transfer explicitly.
     */
    address private _nextOwner;

    // ============ Mutable Registration Configuration ============

    bool public registrable = true;
    address public ensRegistrar;

    // ============ Mutable ERC20 Attributes ============

    uint256 public override totalSupply;
    mapping(address => uint256) public override balanceOf;
    mapping(address => mapping(address => uint256)) public override allowance;
    mapping(address => uint256) public override nonces;

    // ============ Events ============

    event Registered(string label, address owner);
    event Mint(address indexed to, uint256 amount);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    // ============ Modifiers ============

    modifier canRegister() {
        require(registrable, "MirrorWriteToken: registration is closed.");
        _;
    }

    modifier onlyOwner() {
        require(isOwner(), "MirrorWriteToken: caller is not the owner.");
        _;
    }

    modifier onlyNextOwner() {
        require(
            isNextOwner(),
            "MirrorWriteToken: current owner must set caller as next owner."
        );
        _;
    }

    // ============ Constructor ============

    constructor() public {
        uint256 chainId = _getChainId();

        DOMAIN_SEPARATOR = keccak256(
            abi.encode(
                keccak256(
                    "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
                ),
                keccak256(bytes(name)),
                keccak256(bytes("1")),
                chainId,
                address(this)
            )
        );

        _owner = tx.origin;
        emit OwnershipTransferred(address(0), _owner);
    }

    // ============ Minting ============

    /**
     * @dev Function to mint tokens
     * @param to The address that will receive the minted tokens.
     * @param amount The amount of tokens to mint.
     */
    function mint(address to, uint256 amount) external onlyOwner {
        _mint(to, amount);

        emit Mint(to, amount);
    }

    // ============ Registration ============

    /**
     * @dev Returns the cost of registration in tokens with full decimals.
     */
    function registrationCost() external view override returns (uint256) {
        return REGISTRATION_COST;
    }

    /**
     * Burns the sender's invite tokens and registers an ENS given label to a given address.
     * @param label The user's ENS label, e.g. "dev" for dev.mirror.xyz.
     * @param owner The address that should own the label.
     */
    function register(string calldata label, address owner)
        external
        override
        canRegister
    {
        _burn(msg.sender, REGISTRATION_COST);

        emit Registered(label, owner);

        IMirrorENSRegistrar(ensRegistrar).register(label, owner);
    }

    // ============ Ownership ============

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    /**
     * @dev Returns true if the caller is the next owner.
     */
    function isNextOwner() public view returns (bool) {
        return msg.sender == _nextOwner;
    }

    /**
     * @dev Allows a new account (`newOwner`) to accept ownership.
     * Can only be called by the current owner.
     */
    function transferOwnership(address nextOwner_) external onlyOwner {
        require(
            nextOwner_ != address(0),
            "MirrorWriteToken: next owner is the zero address."
        );

        _nextOwner = nextOwner_;
    }

    /**
     * @dev Cancel a transfer of ownership to a new account.
     * Can only be called by the current owner.
     */
    function cancelOwnershipTransfer() external onlyOwner {
        delete _nextOwner;
    }

    /**
     * @dev Transfers ownership of the contract to the caller.
     * Can only be called by a new potential owner set by the current owner.
     */
    function acceptOwnership() external onlyNextOwner {
        delete _nextOwner;

        emit OwnershipTransferred(_owner, msg.sender);

        _owner = msg.sender;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() external onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    // ============ Configuration Management ============

    /**
     * Allows the owner to change the ENS Registrar address.
     */
    function setENSRegistrar(address ensRegistrar_) external onlyOwner {
        ensRegistrar = ensRegistrar_;
    }

    /**
     * Allows the owner to pause registration.
     */
    function setRegistrable(bool registrable_) external onlyOwner {
        registrable = registrable_;
    }

    // ============ ERC20 Spec ============

    function _mint(address to, uint256 value) internal {
        totalSupply = totalSupply.add(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(address(0), to, value);
    }

    function _burn(address from, uint256 value) internal {
        balanceOf[from] = balanceOf[from].sub(value);
        totalSupply = totalSupply.sub(value);
        emit Transfer(from, address(0), value);
    }

    function _approve(
        address owner,
        address spender,
        uint256 value
    ) private {
        allowance[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    function _transfer(
        address from,
        address to,
        uint256 value
    ) private {
        balanceOf[from] = balanceOf[from].sub(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(from, to, value);
    }

    function approve(address spender, uint256 value)
        external
        override
        returns (bool)
    {
        _approve(msg.sender, spender, value);
        return true;
    }

    function transfer(address to, uint256 value)
        external
        override
        returns (bool)
    {
        _transfer(msg.sender, to, value);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external override returns (bool) {
        if (allowance[from][msg.sender] != uint256(-1)) {
            allowance[from][msg.sender] = allowance[from][msg.sender].sub(
                value
            );
        }
        _transfer(from, to, value);
        return true;
    }

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external override {
        require(deadline >= block.timestamp, "MirrorWriteToken: EXPIRED");
        bytes32 digest =
            keccak256(
                abi.encodePacked(
                    "\x19\x01",
                    DOMAIN_SEPARATOR,
                    keccak256(
                        abi.encode(
                            PERMIT_TYPEHASH,
                            owner,
                            spender,
                            value,
                            nonces[owner]++,
                            deadline
                        )
                    )
                )
            );
        address recoveredAddress = ecrecover(digest, v, r, s);
        require(
            recoveredAddress != address(0) && recoveredAddress == owner,
            "MirrorWriteToken: INVALID_SIGNATURE"
        );
        _approve(owner, spender, value);
    }

    function _getChainId() private pure returns (uint256 chainId) {
        assembly {
            chainId := chainid()
        }
    }
}

// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)

library SafeMath {
    function add(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require((z = x + y) >= x, "ds-math-add-overflow");
    }

    function sub(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require((z = x - y) <= x, "ds-math-sub-underflow");
    }

    function mul(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require(y == 0 || (z = x * y) / y == x, "ds-math-mul-overflow");
    }
}

interface IENSReverseRegistrar {
    function claim(address _owner) external returns (bytes32);

    function claimWithResolver(address _owner, address _resolver)
        external
        returns (bytes32);

    function setName(string calldata _name) external returns (bytes32);

    function node(address _addr) external pure returns (bytes32);
}

interface IMirrorENSRegistrar {
    function changeRootNodeOwner(address newOwner_) external;

    function register(string calldata label_, address owner_) external;

    function updateENSReverseRegistrar() external;
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"label","type":"string"},{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"Registered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cancelOwnershipTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ensRegistrar","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNextOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"label","type":"string"},{"internalType":"address","name":"owner","type":"address"}],"name":"register","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"registrable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registrationCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ensRegistrar_","type":"address"}],"name":"setENSRegistrar","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"registrable_","type":"bool"}],"name":"setRegistrable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"nextOwner_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a06040526001805460ff60a01b1916600160a01b17905534801561002357600080fd5b5060006100376001600160e01b0361014016565b905060405161004590610144565b604080519182900382208282018252601283527126b4b93937b9102bb934ba32902a37b5b2b760711b6020938401528151808301835260018152603160f81b9084015290516100dc927fe3c5fba7e7d499c24be0aa50ce0c02ee9d919f283b491ed7dc05b9dd6fe0c9e2917fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69186913091016101ae565b60408051601f19818403018152908290528051602090910120608052600080546001600160a01b03191632178082556001600160a01b0316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506101da565b4690565b7f454950373132446f6d61696e28737472696e67206e616d652c737472696e672081527f76657273696f6e2c75696e7432353620636861696e49642c6164647265737320602082015271766572696679696e67436f6e74726163742960701b604082015260520190565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b6080516113c56101f9600039806105e3528061094152506113c56000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c8063715018a6116100ee578063c2c589f011610097578063dc4a7f7f11610071578063dc4a7f7f1461031d578063dd62ed3e14610325578063ed459df214610338578063f2fde38b14610340576101ae565b8063c2c589f0146102e2578063d2d71d5c146102f7578063d505accf1461030a576101ae565b80638f32d59b116100c85780638f32d59b146102bf57806395d89b41146102c7578063a9059cbb146102cf576101ae565b8063715018a61461029c57806379ba5097146102a45780637ecebe00146102ac576101ae565b806330adf81f1161015b57806340c10f191161013557806340c10f191461025b57806343fb5f691461026e57806355a8deab1461028157806370a0823114610289576101ae565b806330adf81f14610236578063313ce5671461023e5780633644e51514610253576101ae565b80631e59c5291161018c5780631e59c5291461020657806323452b9c1461021b57806323b872dd14610223576101ae565b806306fdde03146101b3578063095ea7b3146101d157806318160ddd146101f1575b600080fd5b6101bb610353565b6040516101c891906110a0565b60405180910390f35b6101e46101df366004610ee6565b61038c565b6040516101c89190610ff9565b6101f96103a3565b6040516101c89190611004565b610219610214366004610f30565b6103a9565b005b6102196104bd565b6101e4610231366004610e33565b610500565b6101f96105b8565b6102466105dc565b6040516101c89190611369565b6101f96105e1565b610219610269366004610ee6565b610605565b61021961027c366004610f10565b610678565b6101e46106e6565b6101f9610297366004610ddd565b610707565b610219610719565b610219610794565b6101f96102ba366004610ddd565b61082e565b6101e4610840565b6101bb610851565b6101e46102dd366004610ee6565b61088a565b6102ea610897565b6040516101c89190610fe5565b610219610305366004610ddd565b6108a6565b610219610318366004610e73565b6108f9565b6101f9610a85565b6101f9610333366004610dff565b610a91565b6101e4610aae565b61021961034e366004610ddd565b610abf565b6040518060400160405280601281526020017f4d6972726f7220577269746520546f6b656e000000000000000000000000000081525081565b6000610399338484610b38565b5060015b92915050565b60035481565b60015474010000000000000000000000000000000000000000900460ff166103ec5760405162461bcd60e51b81526004016103e390611278565b60405180910390fd5b6103fe33670de0b6b3a7640000610ba0565b7f50f74ca45caac8020b8d891bd13ea5a2d79564986ee6a839f0d914896388322d8383836040516104319392919061105f565b60405180910390a16002546040517f1e59c5290000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690631e59c529906104869086908690869060040161105f565b600060405180830381600087803b1580156104a057600080fd5b505af11580156104b4573d6000803e3d6000fd5b50505050505050565b6104c5610840565b6104e15760405162461bcd60e51b81526004016103e39061130c565b6001805473ffffffffffffffffffffffffffffffffffffffff19169055565b6001600160a01b03831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146105a3576001600160a01b038416600090815260056020908152604080832033845290915290205461057e908363ffffffff610c4216565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b6105ae848484610c65565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b7f000000000000000000000000000000000000000000000000000000000000000081565b61060d610840565b6106295760405162461bcd60e51b81526004016103e39061130c565b6106338282610d15565b816001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161066c9190611004565b60405180910390a25050565b610680610840565b61069c5760405162461bcd60e51b81526004016103e39061130c565b6001805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60015474010000000000000000000000000000000000000000900460ff1681565b60046020526000908152604090205481565b610721610840565b61073d5760405162461bcd60e51b81526004016103e39061130c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b61079c610aae565b6107b85760405162461bcd60e51b81526004016103e39061112a565b6001805473ffffffffffffffffffffffffffffffffffffffff191690556000805460405133926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff191633179055565b60066020526000908152604090205481565b6000546001600160a01b0316331490565b6040518060400160405280600581526020017f575249544500000000000000000000000000000000000000000000000000000081525081565b6000610399338484610c65565b6002546001600160a01b031681565b6108ae610840565b6108ca5760405162461bcd60e51b81526004016103e39061130c565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b428410156109195760405162461bcd60e51b81526004016103e3906112d5565b6001600160a01b038716600090815260066020908152604080832080546001810190915590517f000000000000000000000000000000000000000000000000000000000000000092610997927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d9290918d910161100d565b604051602081830303815290604052805190602001206040516020016109be929190610faf565b6040516020818303038152906040528051906020012090506000600182868686604051600081526020016040526040516109fb9493929190611041565b6020604051602081039080840390855afa158015610a1d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610a535750886001600160a01b0316816001600160a01b0316145b610a6f5760405162461bcd60e51b81526004016103e39061121b565b610a7a898989610b38565b505050505050505050565b670de0b6b3a764000090565b600560209081526000928352604080842090915290825290205481565b6001546001600160a01b0316331490565b610ac7610840565b610ae35760405162461bcd60e51b81526004016103e39061130c565b6001600160a01b038116610b095760405162461bcd60e51b81526004016103e3906111be565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6001600160a01b0380841660008181526005602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b93908590611004565b60405180910390a3505050565b6001600160a01b038216600090815260046020526040902054610bc9908263ffffffff610c4216565b6001600160a01b038316600090815260046020526040902055600354610bf5908263ffffffff610c4216565b6003556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c36908590611004565b60405180910390a35050565b8082038281111561039d5760405162461bcd60e51b81526004016103e3906110f3565b6001600160a01b038316600090815260046020526040902054610c8e908263ffffffff610c4216565b6001600160a01b038085166000908152600460205260408082209390935590841681522054610cc3908263ffffffff610da316565b6001600160a01b0380841660008181526004602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b93908590611004565b600354610d28908263ffffffff610da316565b6003556001600160a01b038216600090815260046020526040902054610d54908263ffffffff610da316565b6001600160a01b0383166000818152600460205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c36908590611004565b8082018281101561039d5760405162461bcd60e51b81526004016103e390611187565b80356001600160a01b038116811461039d57600080fd5b600060208284031215610dee578081fd5b610df88383610dc6565b9392505050565b60008060408385031215610e11578081fd5b610e1b8484610dc6565b9150610e2a8460208501610dc6565b90509250929050565b600080600060608486031215610e47578081fd5b8335610e5281611377565b92506020840135610e6281611377565b929592945050506040919091013590565b600080600080600080600060e0888a031215610e8d578283fd5b610e978989610dc6565b9650610ea68960208a01610dc6565b95506040880135945060608801359350608088013560ff81168114610ec9578384fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610ef8578182fd5b610f028484610dc6565b946020939093013593505050565b600060208284031215610f21578081fd5b81358015158114610df8578182fd5b600080600060408486031215610f44578283fd5b833567ffffffffffffffff80821115610f5b578485fd5b81860187601f820112610f6c578586fd5b8035925081831115610f7c578586fd5b876020848301011115610f8d578586fd5b602081019550505080925050610fa68560208601610dc6565b90509250925092565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b901515815260200190565b90815260200190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b93845260ff9290921660208401526040830152606082015260800190565b6000604082528360408301528385606084013780606085840101526060601f19601f86011683010190506001600160a01b0383166020830152949350505050565b6000602080835283518082850152825b818110156110cc578581018301518582016040015282016110b0565b818111156110dd5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252603e908201527f4d6972726f725772697465546f6b656e3a2063757272656e74206f776e65722060408201527f6d757374207365742063616c6c6572206173206e657874206f776e65722e0000606082015260800190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526031908201527f4d6972726f725772697465546f6b656e3a206e657874206f776e65722069732060408201527f746865207a65726f20616464726573732e000000000000000000000000000000606082015260800190565b60208082526023908201527f4d6972726f725772697465546f6b656e3a20494e56414c49445f5349474e415460408201527f5552450000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4d6972726f725772697465546f6b656e3a20726567697374726174696f6e206960408201527f7320636c6f7365642e0000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f4d6972726f725772697465546f6b656e3a204558504952454400000000000000604082015260600190565b6020808252602a908201527f4d6972726f725772697465546f6b656e3a2063616c6c6572206973206e6f742060408201527f746865206f776e65722e00000000000000000000000000000000000000000000606082015260800190565b60ff91909116815260200190565b6001600160a01b038116811461138c57600080fd5b5056fea2646970667358221220c41de69de3ee288af73e59634ec6c1652fcaec8d705aea7b46223fac4a8be41f64736f6c63430006080033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101ae5760003560e01c8063715018a6116100ee578063c2c589f011610097578063dc4a7f7f11610071578063dc4a7f7f1461031d578063dd62ed3e14610325578063ed459df214610338578063f2fde38b14610340576101ae565b8063c2c589f0146102e2578063d2d71d5c146102f7578063d505accf1461030a576101ae565b80638f32d59b116100c85780638f32d59b146102bf57806395d89b41146102c7578063a9059cbb146102cf576101ae565b8063715018a61461029c57806379ba5097146102a45780637ecebe00146102ac576101ae565b806330adf81f1161015b57806340c10f191161013557806340c10f191461025b57806343fb5f691461026e57806355a8deab1461028157806370a0823114610289576101ae565b806330adf81f14610236578063313ce5671461023e5780633644e51514610253576101ae565b80631e59c5291161018c5780631e59c5291461020657806323452b9c1461021b57806323b872dd14610223576101ae565b806306fdde03146101b3578063095ea7b3146101d157806318160ddd146101f1575b600080fd5b6101bb610353565b6040516101c891906110a0565b60405180910390f35b6101e46101df366004610ee6565b61038c565b6040516101c89190610ff9565b6101f96103a3565b6040516101c89190611004565b610219610214366004610f30565b6103a9565b005b6102196104bd565b6101e4610231366004610e33565b610500565b6101f96105b8565b6102466105dc565b6040516101c89190611369565b6101f96105e1565b610219610269366004610ee6565b610605565b61021961027c366004610f10565b610678565b6101e46106e6565b6101f9610297366004610ddd565b610707565b610219610719565b610219610794565b6101f96102ba366004610ddd565b61082e565b6101e4610840565b6101bb610851565b6101e46102dd366004610ee6565b61088a565b6102ea610897565b6040516101c89190610fe5565b610219610305366004610ddd565b6108a6565b610219610318366004610e73565b6108f9565b6101f9610a85565b6101f9610333366004610dff565b610a91565b6101e4610aae565b61021961034e366004610ddd565b610abf565b6040518060400160405280601281526020017f4d6972726f7220577269746520546f6b656e000000000000000000000000000081525081565b6000610399338484610b38565b5060015b92915050565b60035481565b60015474010000000000000000000000000000000000000000900460ff166103ec5760405162461bcd60e51b81526004016103e390611278565b60405180910390fd5b6103fe33670de0b6b3a7640000610ba0565b7f50f74ca45caac8020b8d891bd13ea5a2d79564986ee6a839f0d914896388322d8383836040516104319392919061105f565b60405180910390a16002546040517f1e59c5290000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690631e59c529906104869086908690869060040161105f565b600060405180830381600087803b1580156104a057600080fd5b505af11580156104b4573d6000803e3d6000fd5b50505050505050565b6104c5610840565b6104e15760405162461bcd60e51b81526004016103e39061130c565b6001805473ffffffffffffffffffffffffffffffffffffffff19169055565b6001600160a01b03831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146105a3576001600160a01b038416600090815260056020908152604080832033845290915290205461057e908363ffffffff610c4216565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b6105ae848484610c65565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b7fbb3b02f70d0455a66f398878e70aa6ad732e2392117f0766ce164665eac3b02d81565b61060d610840565b6106295760405162461bcd60e51b81526004016103e39061130c565b6106338282610d15565b816001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161066c9190611004565b60405180910390a25050565b610680610840565b61069c5760405162461bcd60e51b81526004016103e39061130c565b6001805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60015474010000000000000000000000000000000000000000900460ff1681565b60046020526000908152604090205481565b610721610840565b61073d5760405162461bcd60e51b81526004016103e39061130c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b61079c610aae565b6107b85760405162461bcd60e51b81526004016103e39061112a565b6001805473ffffffffffffffffffffffffffffffffffffffff191690556000805460405133926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff191633179055565b60066020526000908152604090205481565b6000546001600160a01b0316331490565b6040518060400160405280600581526020017f575249544500000000000000000000000000000000000000000000000000000081525081565b6000610399338484610c65565b6002546001600160a01b031681565b6108ae610840565b6108ca5760405162461bcd60e51b81526004016103e39061130c565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b428410156109195760405162461bcd60e51b81526004016103e3906112d5565b6001600160a01b038716600090815260066020908152604080832080546001810190915590517fbb3b02f70d0455a66f398878e70aa6ad732e2392117f0766ce164665eac3b02d92610997927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d9290918d910161100d565b604051602081830303815290604052805190602001206040516020016109be929190610faf565b6040516020818303038152906040528051906020012090506000600182868686604051600081526020016040526040516109fb9493929190611041565b6020604051602081039080840390855afa158015610a1d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610a535750886001600160a01b0316816001600160a01b0316145b610a6f5760405162461bcd60e51b81526004016103e39061121b565b610a7a898989610b38565b505050505050505050565b670de0b6b3a764000090565b600560209081526000928352604080842090915290825290205481565b6001546001600160a01b0316331490565b610ac7610840565b610ae35760405162461bcd60e51b81526004016103e39061130c565b6001600160a01b038116610b095760405162461bcd60e51b81526004016103e3906111be565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6001600160a01b0380841660008181526005602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b93908590611004565b60405180910390a3505050565b6001600160a01b038216600090815260046020526040902054610bc9908263ffffffff610c4216565b6001600160a01b038316600090815260046020526040902055600354610bf5908263ffffffff610c4216565b6003556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c36908590611004565b60405180910390a35050565b8082038281111561039d5760405162461bcd60e51b81526004016103e3906110f3565b6001600160a01b038316600090815260046020526040902054610c8e908263ffffffff610c4216565b6001600160a01b038085166000908152600460205260408082209390935590841681522054610cc3908263ffffffff610da316565b6001600160a01b0380841660008181526004602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b93908590611004565b600354610d28908263ffffffff610da316565b6003556001600160a01b038216600090815260046020526040902054610d54908263ffffffff610da316565b6001600160a01b0383166000818152600460205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c36908590611004565b8082018281101561039d5760405162461bcd60e51b81526004016103e390611187565b80356001600160a01b038116811461039d57600080fd5b600060208284031215610dee578081fd5b610df88383610dc6565b9392505050565b60008060408385031215610e11578081fd5b610e1b8484610dc6565b9150610e2a8460208501610dc6565b90509250929050565b600080600060608486031215610e47578081fd5b8335610e5281611377565b92506020840135610e6281611377565b929592945050506040919091013590565b600080600080600080600060e0888a031215610e8d578283fd5b610e978989610dc6565b9650610ea68960208a01610dc6565b95506040880135945060608801359350608088013560ff81168114610ec9578384fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610ef8578182fd5b610f028484610dc6565b946020939093013593505050565b600060208284031215610f21578081fd5b81358015158114610df8578182fd5b600080600060408486031215610f44578283fd5b833567ffffffffffffffff80821115610f5b578485fd5b81860187601f820112610f6c578586fd5b8035925081831115610f7c578586fd5b876020848301011115610f8d578586fd5b602081019550505080925050610fa68560208601610dc6565b90509250925092565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b901515815260200190565b90815260200190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b93845260ff9290921660208401526040830152606082015260800190565b6000604082528360408301528385606084013780606085840101526060601f19601f86011683010190506001600160a01b0383166020830152949350505050565b6000602080835283518082850152825b818110156110cc578581018301518582016040015282016110b0565b818111156110dd5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252603e908201527f4d6972726f725772697465546f6b656e3a2063757272656e74206f776e65722060408201527f6d757374207365742063616c6c6572206173206e657874206f776e65722e0000606082015260800190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526031908201527f4d6972726f725772697465546f6b656e3a206e657874206f776e65722069732060408201527f746865207a65726f20616464726573732e000000000000000000000000000000606082015260800190565b60208082526023908201527f4d6972726f725772697465546f6b656e3a20494e56414c49445f5349474e415460408201527f5552450000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4d6972726f725772697465546f6b656e3a20726567697374726174696f6e206960408201527f7320636c6f7365642e0000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f4d6972726f725772697465546f6b656e3a204558504952454400000000000000604082015260600190565b6020808252602a908201527f4d6972726f725772697465546f6b656e3a2063616c6c6572206973206e6f742060408201527f746865206f776e65722e00000000000000000000000000000000000000000000606082015260800190565b60ff91909116815260200190565b6001600160a01b038116811461138c57600080fd5b5056fea2646970667358221220c41de69de3ee288af73e59634ec6c1652fcaec8d705aea7b46223fac4a8be41f64736f6c63430006080033

Deployed Bytecode Sourcemap

1753:9467:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1753:9467:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;1960:59:0;;;:::i;:::-;;;;;;;;;;;;;;;;9198:191;;;;;;;;;:::i;:::-;;;;;;;;2989:35;;;:::i;:::-;;;;;;;;5642:284;;;;;;;;;:::i;:::-;;6861:90;;;:::i;9588:382::-;;;;;;;;;:::i;2184:117::-;;;:::i;2026:44::-;;;:::i;:::-;;;;;;;;2308:50;;;:::i;4994:131::-;;;;;;;;;:::i;8125:107::-;;;;;;;;;:::i;2855:30::-;;;:::i;3031:53::-;;;;;;;;;:::i;7646:142::-;;;:::i;7119:176::-;;;:::i;3171:50::-;;;;;;;;;:::i;6060:92::-;;;:::i;1905:48::-;;;:::i;9397:183::-;;;;;;;;;:::i;2892:27::-;;;:::i;:::-;;;;;;;;7937:114;;;;;;;;;:::i;9978:1096::-;;;;;;;;;:::i;5276:112::-;;;:::i;3091:73::-;;;;;;;;;:::i;6237:100::-;;;:::i;6480:244::-;;;;;;;;;:::i;1960:59::-;;;;;;;;;;;;;;;;;;;:::o;9198:191::-;9301:4;9323:36;9332:10;9344:7;9353:5;9323:8;:36::i;:::-;-1:-1:-1;9377:4:0;9198:191;;;;;:::o;2989:35::-;;;;:::o;5642:284::-;3779:11;;;;;;;3771:65;;;;-1:-1:-1;;;3771:65:0;;;;;;;;;;;;;;;;;5771:36:::1;5777:10;2486:4;5771:5;:36::i;:::-;5825:24;5836:5;;5843;5825:24;;;;;;;;;;;;;;;;;5882:12;::::0;5862:56:::1;::::0;;;;-1:-1:-1;;;;;5882:12:0;;::::1;::::0;5862:42:::1;::::0;:56:::1;::::0;5905:5;;;;5912;;5862:56:::1;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;5862:56:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;5862:56:0;;;;5642:284:::0;;;:::o;6861:90::-;3904:9;:7;:9::i;:::-;3896:64;;;;-1:-1:-1;;;3896:64:0;;;;;;;;;6933:10:::1;6926:17:::0;;-1:-1:-1;;6926:17:0::1;::::0;;6861:90::o;9588:382::-;-1:-1:-1;;;;;9733:15:0;;9712:4;9733:15;;;:9;:15;;;;;;;;9749:10;9733:27;;;;;;;;9772:2;9733:42;9729:175;;-1:-1:-1;;;;;9822:15:0;;;;;;:9;:15;;;;;;;;9838:10;9822:27;;;;;;;;:70;;9872:5;9822:70;:31;:70;:::i;:::-;-1:-1:-1;;;;;9792:15:0;;;;;;:9;:15;;;;;;;;9808:10;9792:27;;;;;;;:100;9729:175;9914:26;9924:4;9930:2;9934:5;9914:9;:26::i;:::-;-1:-1:-1;9958:4:0;9588:382;;;;;:::o;2184:117::-;2235:66;2184:117;:::o;2026:44::-;2068:2;2026:44;:::o;2308:50::-;;;:::o;4994:131::-;3904:9;:7;:9::i;:::-;3896:64;;;;-1:-1:-1;;;3896:64:0;;;;;;;;;5066:17:::1;5072:2;5076:6;5066:5;:17::i;:::-;5106:2;-1:-1:-1::0;;;;;5101:16:0::1;;5110:6;5101:16;;;;;;;;;;;;;;;4994:131:::0;;:::o;8125:107::-;3904:9;:7;:9::i;:::-;3896:64;;;;-1:-1:-1;;;3896:64:0;;;;;;;;;8198:11:::1;:26:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;8125:107::o;2855:30::-;;;;;;;;;:::o;3031:53::-;;;;;;;;;;;;;:::o;7646:142::-;3904:9;:7;:9::i;:::-;3896:64;;;;-1:-1:-1;;;3896:64:0;;;;;;;;;7747:1:::1;7731:6:::0;;7710:40:::1;::::0;-1:-1:-1;;;;;7731:6:0;;::::1;::::0;7710:40:::1;::::0;7747:1;;7710:40:::1;7778:1;7761:19:::0;;-1:-1:-1;;7761:19:0::1;::::0;;7646:142::o;7119:176::-;4046:13;:11;:13::i;:::-;4024:125;;;;-1:-1:-1;;;4024:125:0;;;;;;;;;7187:10:::1;7180:17:::0;;-1:-1:-1;;7180:17:0::1;::::0;;-1:-1:-1;7236:6:0;;7215:40:::1;::::0;7244:10:::1;::::0;-1:-1:-1;;;;;7236:6:0;;::::1;::::0;7215:40:::1;::::0;::::1;7268:6;:19:::0;;-1:-1:-1;;7268:19:0::1;7277:10;7268:19;::::0;;7119:176::o;3171:50::-;;;;;;;;;;;;;:::o;6060:92::-;6100:4;6138:6;-1:-1:-1;;;;;6138:6:0;6124:10;:20;;6060:92::o;1905:48::-;;;;;;;;;;;;;;;;;;;:::o;9397:183::-;9496:4;9518:32;9528:10;9540:2;9544:5;9518:9;:32::i;2892:27::-;;;-1:-1:-1;;;;;2892:27:0;;:::o;7937:114::-;3904:9;:7;:9::i;:::-;3896:64;;;;-1:-1:-1;;;3896:64:0;;;;;;;;;8015:12:::1;:28:::0;;-1:-1:-1;;8015:28:0::1;-1:-1:-1::0;;;;;8015:28:0;;;::::1;::::0;;;::::1;::::0;;7937:114::o;9978:1096::-;10209:15;10197:8;:27;;10189:65;;;;-1:-1:-1;;;10189:65:0;;;;;;;;;-1:-1:-1;;;;;10667:13:0;;10265:14;10667:13;;;:6;:13;;;;;;;;:15;;;;;;;;10470:278;;10395:16;;10470:278;;2235:66;;10557:5;;10593:7;;10631:5;;10667:15;;10713:8;;10470:278;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10470:278:0;;;10434:337;;;;;;10323:467;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10323:467:0;;;10295:510;;;;;;10265:540;;10816:24;10843:26;10853:6;10861:1;10864;10867;10843:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;10843:26:0;;-1:-1:-1;;10843:26:0;;;-1:-1:-1;;;;;;;10902:30:0;;;;;;:59;;;10956:5;-1:-1:-1;;;;;10936:25:0;:16;-1:-1:-1;;;;;10936:25:0;;10902:59;10880:144;;;;-1:-1:-1;;;10880:144:0;;;;;;;;;11035:31;11044:5;11051:7;11060:5;11035:8;:31::i;:::-;9978:1096;;;;;;;;;:::o;5276:112::-;2486:4;5276:112;:::o;3091:73::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;6237:100::-;6319:10;;-1:-1:-1;;;;;6319:10:0;6305;:24;;6237:100::o;6480:244::-;3904:9;:7;:9::i;:::-;3896:64;;;;-1:-1:-1;;;3896:64:0;;;;;;;;;-1:-1:-1;;;;;6579:24:0;::::1;6557:123;;;;-1:-1:-1::0;;;6557:123:0::1;;;;;;;;;6693:10;:23:::0;;-1:-1:-1;;6693:23:0::1;-1:-1:-1::0;;;;;6693:23:0;;;::::1;::::0;;;::::1;::::0;;6480:244::o;8719:206::-;-1:-1:-1;;;;;8837:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;;:33;;;8886:31;;;;;8865:5;;8886:31;;;;;;;;;;8719:206;;;:::o;8499:212::-;-1:-1:-1;;;;;8581:15:0;;;;;;:9;:15;;;;;;:26;;8601:5;8581:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;8563:15:0;;;;;;:9;:15;;;;;:44;8632:11;;:22;;8648:5;8632:22;:15;:22;:::i;:::-;8618:11;:36;8670:33;;8693:1;;-1:-1:-1;;;;;8670:33:0;;;;;;;8697:5;;8670:33;;;;;;;;;;8499:212;;:::o;11501:138::-;11594:5;;;11589:16;;;;11581:50;;;;-1:-1:-1;;;11581:50:0;;;;;;;;8933:257;-1:-1:-1;;;;;9064:15:0;;;;;;:9;:15;;;;;;:26;;9084:5;9064:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;9046:15:0;;;;;;;:9;:15;;;;;;:44;;;;9117:13;;;;;;;:24;;9135:5;9117:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;9101:13:0;;;;;;;:9;:13;;;;;;;:40;;;;9157:25;;;;;;;;;;9176:5;;9157:25;;8287:204;8363:11;;:22;;8379:5;8363:22;:15;:22;:::i;:::-;8349:11;:36;-1:-1:-1;;;;;8412:13:0;;;;;;:9;:13;;;;;;:24;;8430:5;8412:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;8396:13:0;;;;;;:9;:13;;;;;;:40;;;;8452:31;;8396:13;;;8452:31;;;;8477:5;;8452:31;;11356:137;11449:5;;;11444:16;;;;11436:49;;;;-1:-1:-1;;;11436:49:0;;;;;;;;5:130:-1;72:20;;-1:-1;;;;;17129:54;;18038:35;;18028:2;;18087:1;;18077:12;1040:241;;1144:2;1132:9;1123:7;1119:23;1115:32;1112:2;;;-1:-1;;1150:12;1112:2;1212:53;1257:7;1233:22;1212:53;;;1202:63;1106:175;-1:-1;;;1106:175;1288:366;;;1409:2;1397:9;1388:7;1384:23;1380:32;1377:2;;;-1:-1;;1415:12;1377:2;1477:53;1522:7;1498:22;1477:53;;;1467:63;;1585:53;1630:7;1567:2;1610:9;1606:22;1585:53;;;1575:63;;1371:283;;;;;;1661:491;;;;1799:2;1787:9;1778:7;1774:23;1770:32;1767:2;;;-1:-1;;1805:12;1767:2;85:6;72:20;97:33;124:5;97:33;;;1857:63;-1:-1;1957:2;1996:22;;72:20;97:33;72:20;97:33;;;1761:391;;1965:63;;-1:-1;;;2065:2;2104:22;;;;837:20;;1761:391;2159:991;;;;;;;;2363:3;2351:9;2342:7;2338:23;2334:33;2331:2;;;-1:-1;;2370:12;2331:2;2432:53;2477:7;2453:22;2432:53;;;2422:63;;2540:53;2585:7;2522:2;2565:9;2561:22;2540:53;;;2530:63;;2630:2;2673:9;2669:22;837:20;2638:63;;2738:2;2781:9;2777:22;837:20;2746:63;;2846:3;2888:9;2884:22;972:20;17345:4;18552:5;17334:16;18529:5;18526:33;18516:2;;-1:-1;;18563:12;18516:2;2325:825;;;;-1:-1;2325:825;;;;2855:61;2953:3;2993:22;;340:20;;-1:-1;3062:3;3102:22;;;340:20;;2325:825;-1:-1;;2325:825;3157:366;;;3278:2;3266:9;3257:7;3253:23;3249:32;3246:2;;;-1:-1;;3284:12;3246:2;3346:53;3391:7;3367:22;3346:53;;;3336:63;3436:2;3475:22;;;;837:20;;-1:-1;;;3240:283;3530:235;;3631:2;3619:9;3610:7;3606:23;3602:32;3599:2;;;-1:-1;;3637:12;3599:2;219:6;206:20;18184:5;16962:13;16955:21;18162:5;18159:32;18149:2;;-1:-1;;18195:12;3772:492;;;;3913:2;3901:9;3892:7;3888:23;3884:32;3881:2;;;-1:-1;;3919:12;3881:2;3977:17;3964:31;4015:18;;4007:6;4004:30;4001:2;;;-1:-1;;4037:12;4001:2;4123:6;4112:9;4108:22;540:3;533:4;525:6;521:17;517:27;507:2;;-1:-1;;548:12;507:2;591:6;578:20;568:30;;4015:18;610:6;607:30;604:2;;;-1:-1;;640:12;604:2;735:3;684:4;715:17;676:6;701:32;;698:41;695:2;;;-1:-1;;742:12;695:2;684:4;676:6;672:17;4065:75;;;;;;;;4195:53;4240:7;684:4;4220:9;4216:22;4195:53;;;4185:63;;3875:389;;;;;;9061:659;6502:66;6482:87;;6467:1;6588:11;;4573:37;;;;9572:12;;;4573:37;9683:12;;;9306:414;9727:222;-1:-1;;;;;17129:54;;;;4342:37;;9854:2;9839:18;;9825:124;9956:210;16962:13;;16955:21;4456:34;;10077:2;10062:18;;10048:118;10173:222;4573:37;;;10300:2;10285:18;;10271:124;10402:780;4573:37;;;-1:-1;;;;;17129:54;;;10834:2;10819:18;;4342:37;17129:54;;;;10917:2;10902:18;;4342:37;11000:2;10985:18;;4573:37;11083:3;11068:19;;4573:37;;;;11167:3;11152:19;;4573:37;10669:3;10654:19;;10640:542;11189:548;4573:37;;;17345:4;17334:16;;;;11557:2;11542:18;;9014:35;11640:2;11625:18;;4573:37;11723:2;11708:18;;4573:37;11396:3;11381:19;;11367:370;11744:441;;11929:2;11950:17;11943:47;16588:6;11929:2;11918:9;11914:18;16576:19;17444:6;17439:3;16616:14;11918:9;16616:14;17421:30;-1:-1;16616:14;17491:6;11918:9;17482:16;;17475:27;16616:14;-1:-1;;17962:2;5092:6;17942:14;17938:28;11918:9;5061:39;;11996:96;;-1:-1;;;;;17133:5;17129:54;16625:4;12160:9;12156:18;4342:37;11900:285;;;;;;;12192:310;;12339:2;;12360:17;12353:47;5259:5;16431:12;16588:6;12339:2;12328:9;12324:18;16576:19;-1:-1;17589:101;17603:6;17600:1;17597:13;17589:101;;;17670:11;;;;;17664:18;17651:11;;;16616:14;17651:11;17644:39;17618:10;;17589:101;;;17705:6;17702:1;17699:13;17696:2;;;-1:-1;16616:14;17761:6;12328:9;17752:16;;17745:27;17696:2;-1:-1;17962:2;17942:14;-1:-1;;17938:28;5417:39;;;;16616:14;5417:39;;12310:192;-1:-1;;;12310:192;12509:416;12709:2;12723:47;;;5693:2;12694:18;;;16576:19;5729:23;16616:14;;;5709:44;5772:12;;;12680:245;12932:416;13132:2;13146:47;;;6023:2;13117:18;;;16576:19;6059:34;16616:14;;;6039:55;6128:32;6114:12;;;6107:54;6180:12;;;13103:245;13355:416;13555:2;13569:47;;;6838:2;13540:18;;;16576:19;6874:22;16616:14;;;6854:43;6916:12;;;13526:245;13778:416;13978:2;13992:47;;;7167:2;13963:18;;;16576:19;7203:34;16616:14;;;7183:55;7272:19;7258:12;;;7251:41;7311:12;;;13949:245;14201:416;14401:2;14415:47;;;7562:2;14386:18;;;16576:19;7598:34;16616:14;;;7578:55;7667:5;7653:12;;;7646:27;7692:12;;;14372:245;14624:416;14824:2;14838:47;;;7943:2;14809:18;;;16576:19;7979:34;16616:14;;;7959:55;8048:11;8034:12;;;8027:33;8079:12;;;14795:245;15047:416;15247:2;15261:47;;;8330:2;15232:18;;;16576:19;8366:27;16616:14;;;8346:48;8413:12;;;15218:245;15470:416;15670:2;15684:47;;;8664:2;15655:18;;;16576:19;8700:34;16616:14;;;8680:55;8769:12;8755;;;8748:34;8801:12;;;15641:245;16122:214;17345:4;17334:16;;;;9014:35;;16245:2;16230:18;;16216:120;17979:117;-1:-1;;;;;18066:5;17129:54;18041:5;18038:35;18028:2;;18087:1;;18077:12;18028:2;18022:74;

Swarm Source

ipfs://c41de69de3ee288af73e59634ec6c1652fcaec8d705aea7b46223fac4a8be41f

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.