ETH Price: $3,829.84 (+5.33%)

Contract

0x7D000a1B9439740692F8942A296E1810955F5000
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

1 address found via
Transaction Hash
Method
Block
From
To
Transfer Ownersh...210222402024-10-22 16:13:2350 days ago1729613603IN
0x7D000a1B...0955F5000
0 ETH0.0005251818.30630424
Set Authorized M...208215102024-09-24 16:00:2378 days ago1727193623IN
0x7D000a1B...0955F5000
0 ETH0.0031176931.95968215
Approve199507342024-05-26 1:21:23199 days ago1716686483IN
0x7D000a1B...0955F5000
0 ETH0.000140333.03237304
Transfer197967512024-05-04 12:30:11221 days ago1714825811IN
0x7D000a1B...0955F5000
0 ETH0.000320016.84429372
Transfer186655722023-11-27 21:11:23380 days ago1701119483IN
0x7D000a1B...0955F5000
0 ETH0.0014620631.26133732
Transfer184821272023-11-02 4:48:59405 days ago1698900539IN
0x7D000a1B...0955F5000
0 ETH0.0005842719.69328071
Transfer184821152023-11-02 4:46:35405 days ago1698900395IN
0x7D000a1B...0955F5000
0 ETH0.0009547220.41352855
Transfer184809642023-11-02 0:54:35405 days ago1698886475IN
0x7D000a1B...0955F5000
0 ETH0.0009144930.82333666
Approve184674422023-10-31 3:29:35407 days ago1698722975IN
0x7D000a1B...0955F5000
0 ETH0.0008421318.19653063
Transfer182196792023-09-26 11:33:35442 days ago1695728015IN
0x7D000a1B...0955F5000
0 ETH0.0006390312.39184224
Transfer181763082023-09-20 9:48:35448 days ago1695203315IN
0x7D000a1B...0955F5000
0 ETH0.0006519512.64243278
Approve181279622023-09-13 14:25:11455 days ago1694615111IN
0x7D000a1B...0955F5000
0 ETH0.0009203719.75894154
Transfer180239072023-08-30 0:40:59469 days ago1693356059IN
0x7D000a1B...0955F5000
0 ETH0.0008020317.15331654
Transfer176809302023-07-13 0:06:35517 days ago1689206795IN
0x7D000a1B...0955F5000
0 ETH0.0012253326.19970945
Transfer176809242023-07-13 0:05:23517 days ago1689206723IN
0x7D000a1B...0955F5000
0 ETH0.0007024226.14251883
Transfer173547902023-05-28 3:16:59563 days ago1685243819IN
0x7D000a1B...0955F5000
0 ETH0.0006761122.78851517
Transfer173547432023-05-28 3:07:35563 days ago1685243255IN
0x7D000a1B...0955F5000
0 ETH0.0006493521.88652935
Transfer172531572023-05-13 19:35:35578 days ago1684006535IN
0x7D000a1B...0955F5000
0 ETH0.0019394841.45874015
Transfer171685432023-05-01 21:07:35590 days ago1682975255IN
0x7D000a1B...0955F5000
0 ETH0.0026588198.95491761
Transfer170674612023-04-17 15:44:59604 days ago1681746299IN
0x7D000a1B...0955F5000
0 ETH0.0020411143.62012244
Transfer170364522023-04-13 4:37:23608 days ago1681360643IN
0x7D000a1B...0955F5000
0 ETH0.0011238424.0296455
Transfer169963622023-04-07 11:37:23614 days ago1680867443IN
0x7D000a1B...0955F5000
0 ETH0.0009160719.58719081
Transfer169956942023-04-07 9:20:11614 days ago1680859211IN
0x7D000a1B...0955F5000
0 ETH0.0011589124.76682153
Transfer169898632023-04-06 13:29:23615 days ago1680787763IN
0x7D000a1B...0955F5000
0 ETH0.0015869833.92375955
Transfer166782212023-02-21 16:59:23659 days ago1676998763IN
0x7D000a1B...0955F5000
0 ETH0.0020768740.28300374
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
165207122023-01-30 16:03:35681 days ago1675094615
0x7D000a1B...0955F5000
0.07084985 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
X7D

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-16
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.15;

/*

 /$$   /$$ /$$$$$$$$       /$$$$$$$$ /$$
| $$  / $$|_____ $$/      | $$_____/|__/
|  $$/ $$/     /$$/       | $$       /$$ /$$$$$$$   /$$$$$$  /$$$$$$$   /$$$$$$$  /$$$$$$
 \  $$$$/     /$$/        | $$$$$   | $$| $$__  $$ |____  $$| $$__  $$ /$$_____/ /$$__  $$
  >$$  $$    /$$/         | $$__/   | $$| $$  \ $$  /$$$$$$$| $$  \ $$| $$      | $$$$$$$$
 /$$/\  $$  /$$/          | $$      | $$| $$  | $$ /$$__  $$| $$  | $$| $$      | $$_____/
| $$  \ $$ /$$/           | $$      | $$| $$  | $$|  $$$$$$$| $$  | $$|  $$$$$$$|  $$$$$$$
|__/  |__/|__/            |__/      |__/|__/  |__/ \_______/|__/  |__/ \_______/ \_______/

Contract: ERC-20 Token X7 Deposit (X7D)

NOTE: DO NOT SEND FUNDS DIRECTLY TO THIS CONTRACT! THEY WILL BE CLAIMED BY THE ECOSYSTEM!

X7D is the ETH backed token of the X7 ecosystem. X7D can be minted from ETH by authorizedMinters and burned to ETH by authorizedRedeemers.
All ETH underpinning X7D will be custodied by smart contracts.

Unlike a strictly wrapped token like WETH, the X7D token contract does not custody any ETH itself. It instead defers this job to authorizedMinters and authorizedRedeemers. This provides flexibility to deploy multiple mechanisms for minting X7D and redeeming X7D into ETH at various timescales, with various associated caveats, and with various multipliers or percentage returns.

The X7D Lending Pool Reserve smart contract will be the first authorizedMinter and authorizedRedeemer.

This contract will NOT be renounced.

The following are the only functions that can be called on the contract that affect the contract:

    function setAuthorizedMinter(address minterAddress, bool isAuthorized) external onlyOwner {
        require(authorizedMinter[minterAddress] != isAuthorized, "Minter already has specified authorization");
        authorizedMinter[minterAddress] = isAuthorized;

        if (isAuthorized) {
            authorizedMintersIndex[minterAddress] = authorizedMinters.length;
            authorizedMinters.push(minterAddress);
        } else {
            uint256 lastMinterIndex = authorizedMinters.length - 1;
            address lastMinter = authorizedMinters[lastMinterIndex];
            uint256 minterIndex = authorizedMintersIndex[minterAddress];
            authorizedMinters[minterIndex] = lastMinter;
            authorizedMintersIndex[lastMinter] = minterIndex;
            delete authorizedMintersIndex[minterAddress];
            authorizedMinters.pop();
        }

        emit AuthorizedMinterSet(minterAddress, isAuthorized);
    }

    function setAuthorizedRedeemer(address redeemerAddress, bool isAuthorized) external onlyOwner {
        require(authorizedRedeemer[redeemerAddress] != isAuthorized, "Redeemer already has specified authorization");
        authorizedRedeemer[redeemerAddress] = isAuthorized;

        if (isAuthorized) {
            authorizedRedeemersIndex[redeemerAddress] = authorizedRedeemers.length;
            authorizedRedeemers.push(redeemerAddress);
        } else {
            uint256 lastRedeemerIndex = authorizedRedeemers.length - 1;
            address lastRedeemer = authorizedRedeemers[lastRedeemerIndex];
            uint256 redeemerIndex = authorizedRedeemersIndex[redeemerAddress];
            authorizedRedeemers[redeemerIndex] = lastRedeemer;
            authorizedRedeemersIndex[lastRedeemer] = redeemerIndex;
            delete authorizedRedeemersIndex[redeemerAddress];
            authorizedRedeemers.pop();
        }

        emit AuthorizedRedeemerSet(redeemerAddress, isAuthorized);
    }

    function setRecoveredTokenRecipient(address tokenRecipient_) external onlyOwner {
        require(recoveredTokenRecipient != tokenRecipient_);
        address oldRecipient = recoveredTokenRecipient;
        recoveredTokenRecipient = tokenRecipient_;
        emit RecoveredTokenRecipientSet(oldRecipient, tokenRecipient_);
    }

    function setRecoveredETHRecipient(address ETHRecipient_) external onlyOwner {
        require(recoveredETHRecipient != ETHRecipient_);
        address oldRecipient = recoveredETHRecipient;
        recoveredETHRecipient = ETHRecipient_;
        emit RecoveredETHRecipientSet(oldRecipient, ETHRecipient_);
    }

These functions will be passed to DAO governance once the ecosystem stabilizes.

*/

abstract contract Ownable {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor(address owner_) {
        _transferOwnership(owner_);
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    function _checkOwner() internal view virtual {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {

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

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

    function totalSupply() external view returns (uint256);

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

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

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

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

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

interface IERC20Metadata is IERC20 {

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

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

    function decimals() external view returns (uint8);
}

contract ERC20 is IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = msg.sender;
        _transfer(owner, to, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = msg.sender;
        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = msg.sender;
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = msg.sender;
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = msg.sender;
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }

        _balances[to] += amount;

        emit Transfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }
}

// The primary X7D interface for minting and burning from authorized Minters and Burners.
interface IX7D {
    function mint(address to, uint256 amount) external;
    function burn(address from, uint256 amount) external;
}


interface X7DMinter {
// A minter should implement the following two functions.

    // Call this function to explicitly mint X7D
    function depositETH() external payable;

    // Call this function to return ETH to this contract without minting X7D
    //
    //  This is important as a valid mechanism for a minter to mint from ETH
    //  would be to implement a receive function to automatically mint X7D.
    function returnETH() external payable;
}


interface X7DBurner {
// A burner/redeemer should implement the following two functions.

    // Call this function to redeem (burn) X7D for ETH
    function withdrawETH(uint256 amount) external;
}

abstract contract TokensCanBeRecovered is Ownable {
    bytes4 private constant TRANSFERSELECTOR = bytes4(keccak256(bytes('transfer(address,uint256)')));
    address public recoveredTokenRecipient;

    event RecoveredTokenRecipientSet(address oldRecipient, address newRecipient);

    function setRecoveredTokenRecipient(address tokenRecipient_) external onlyOwner {
        require(recoveredTokenRecipient != tokenRecipient_);
        address oldRecipient = recoveredTokenRecipient;
        recoveredTokenRecipient = tokenRecipient_;
        emit RecoveredTokenRecipientSet(oldRecipient, tokenRecipient_);
    }

    function recoverTokens(address tokenAddress) external {
        require(recoveredTokenRecipient != address(0));
        _safeTransfer(tokenAddress, recoveredTokenRecipient, IERC20(tokenAddress).balanceOf(address(this)));
    }

    function _safeTransfer(address token, address to, uint value) private {
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(TRANSFERSELECTOR, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TRANSFER_FAILED');
    }
}

abstract contract ETHCanBeRecovered is Ownable {

    address public recoveredETHRecipient;

    event RecoveredETHRecipientSet(address oldRecipient, address newRecipient);

    function setRecoveredETHRecipient(address ETHRecipient_) external onlyOwner {
        require(recoveredETHRecipient != ETHRecipient_);
        address oldRecipient = recoveredETHRecipient;
        recoveredETHRecipient = ETHRecipient_;
        emit RecoveredETHRecipientSet(oldRecipient, ETHRecipient_);
    }

    function recoverETH() external {
        require(recoveredETHRecipient != address(0));
        (bool success,) = recoveredETHRecipient.call{value: address(this).balance}("");
        require(success);
    }
}

contract X7D is ERC20, Ownable, TokensCanBeRecovered, ETHCanBeRecovered, IX7D {

    mapping(address => bool) public authorizedMinter;
    mapping(address => bool) public authorizedRedeemer;

    address[] public authorizedMinters;
    address[] public authorizedRedeemers;

    // Internal index mapping for array maintenance
    mapping(address => uint256) authorizedMintersIndex;
    mapping(address => uint256) authorizedRedeemersIndex;

    event AuthorizedMinterSet(address indexed minterAddress, bool isAuthorized);
    event AuthorizedRedeemerSet(address indexed redeemerAddress, bool isAuthorized);

    constructor() ERC20("X7 Deposit", "X7D") Ownable(msg.sender) {}

    receive() external payable {}

    function authorizedMintersCount() external view returns (uint256) {
        return authorizedMinters.length;
    }

    function authorizedRedeemersCount() external view returns (uint256) {
        return authorizedRedeemers.length;
    }

    function setAuthorizedMinter(address minterAddress, bool isAuthorized) external onlyOwner {
        require(authorizedMinter[minterAddress] != isAuthorized, "Minter already has specified authorization");
        authorizedMinter[minterAddress] = isAuthorized;

        if (isAuthorized) {
            authorizedMintersIndex[minterAddress] = authorizedMinters.length;
            authorizedMinters.push(minterAddress);
        } else {
            uint256 lastMinterIndex = authorizedMinters.length - 1;
            address lastMinter = authorizedMinters[lastMinterIndex];
            uint256 minterIndex = authorizedMintersIndex[minterAddress];
            authorizedMinters[minterIndex] = lastMinter;
            authorizedMintersIndex[lastMinter] = minterIndex;
            delete authorizedMintersIndex[minterAddress];
            authorizedMinters.pop();
        }

        emit AuthorizedMinterSet(minterAddress, isAuthorized);
    }

    function setAuthorizedRedeemer(address redeemerAddress, bool isAuthorized) external onlyOwner {
        require(authorizedRedeemer[redeemerAddress] != isAuthorized, "Redeemer already has specified authorization");
        authorizedRedeemer[redeemerAddress] = isAuthorized;

        if (isAuthorized) {
            authorizedRedeemersIndex[redeemerAddress] = authorizedRedeemers.length;
            authorizedRedeemers.push(redeemerAddress);
        } else {
            uint256 lastRedeemerIndex = authorizedRedeemers.length - 1;
            address lastRedeemer = authorizedRedeemers[lastRedeemerIndex];
            uint256 redeemerIndex = authorizedRedeemersIndex[redeemerAddress];
            authorizedRedeemers[redeemerIndex] = lastRedeemer;
            authorizedRedeemersIndex[lastRedeemer] = redeemerIndex;
            delete authorizedRedeemersIndex[redeemerAddress];
            authorizedRedeemers.pop();
        }

        emit AuthorizedRedeemerSet(redeemerAddress, isAuthorized);
    }

    function mint(address to, uint256 amount) external {
        require(authorizedMinter[msg.sender], "Not authorized to mint X7D");
        _mint(to, amount);
    }

    function burn(address from, uint256 amount) external {
        require(authorizedRedeemer[msg.sender], "Not authorized to burn X7D");
        _burn(from, amount);
    }

    function circulatingSupply() external view returns (uint256) {
        return totalSupply() - balanceOf(address(0xdEaD));
    }
}

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":"minterAddress","type":"address"},{"indexed":false,"internalType":"bool","name":"isAuthorized","type":"bool"}],"name":"AuthorizedMinterSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"redeemerAddress","type":"address"},{"indexed":false,"internalType":"bool","name":"isAuthorized","type":"bool"}],"name":"AuthorizedRedeemerSet","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":"address","name":"oldRecipient","type":"address"},{"indexed":false,"internalType":"address","name":"newRecipient","type":"address"}],"name":"RecoveredETHRecipientSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRecipient","type":"address"},{"indexed":false,"internalType":"address","name":"newRecipient","type":"address"}],"name":"RecoveredTokenRecipientSet","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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authorizedMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"authorizedMinters","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"authorizedMintersCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authorizedRedeemer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"authorizedRedeemers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"authorizedRedeemersCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"recoverTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoveredETHRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoveredTokenRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minterAddress","type":"address"},{"internalType":"bool","name":"isAuthorized","type":"bool"}],"name":"setAuthorizedMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"redeemerAddress","type":"address"},{"internalType":"bool","name":"isAuthorized","type":"bool"}],"name":"setAuthorizedRedeemer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ETHRecipient_","type":"address"}],"name":"setRecoveredETHRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenRecipient_","type":"address"}],"name":"setRecoveredTokenRecipient","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":"amount","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":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b50336040518060400160405280600a815260200169160dc811195c1bdcda5d60b21b81525060405180604001604052806003815260200162160dd160ea1b815250816003908162000063919062000184565b50600462000072828262000184565b50505062000086816200008d60201b60201c565b5062000250565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200010a57607f821691505b6020821081036200012b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200017f57600081815260208120601f850160051c810160208610156200015a5750805b601f850160051c820191505b818110156200017b5782815560010162000166565b5050505b505050565b81516001600160401b03811115620001a057620001a0620000df565b620001b881620001b18454620000f5565b8462000131565b602080601f831160018114620001f05760008415620001d75750858301515b600019600386901b1c1916600185901b1785556200017b565b600085815260208120601f198616915b82811015620002215788860151825594840194600190910190840162000200565b5085821015620002405787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b611a3e80620002606000396000f3fe6080604052600436106101dc5760003560e01c80636ab1325211610102578063a457c2d711610095578063e22212af11610064578063e22212af1461055a578063ed58bad81461057a578063f2fde38b1461059a578063f9bdbc23146105ba57600080fd5b8063a457c2d7146104da578063a9059cbb146104fa578063cabcd2481461051a578063dd62ed3e1461053a57600080fd5b80638da5cb5b116100d15780638da5cb5b146104725780639358928b1461049057806395d89b41146104a55780639dc29fac146104ba57600080fd5b80636ab13252146103f257806370a0823114610407578063715018a61461043d578063895d0f7a1461045257600080fd5b8063203729001161017a57806340c10f191161014957806340c10f191461037d57806343d03bd51461039d578063499263e8146103bd5780634cc388c5146103dd57600080fd5b806320372900146102f157806323b872dd14610321578063313ce56714610341578063395093511461035d57600080fd5b8063095ea7b3116101b6578063095ea7b31461024a57806316114acd1461027a57806318160ddd1461029a57806319e6b607146102b957600080fd5b8063060af1ab146101e85780630614117a1461020a57806306fdde031461021f57600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b50610208610203366004611793565b6105ea565b005b34801561021657600080fd5b5061020861066e565b34801561022b57600080fd5b506102346106e6565b60405161024191906117e1565b60405180910390f35b34801561025657600080fd5b5061026a610265366004611814565b610778565b6040519015158152602001610241565b34801561028657600080fd5b50610208610295366004611793565b610790565b3480156102a657600080fd5b506002545b604051908152602001610241565b3480156102c557600080fd5b506102d96102d436600461183e565b61081f565b6040516001600160a01b039091168152602001610241565b3480156102fd57600080fd5b5061026a61030c366004611793565b60096020526000908152604090205460ff1681565b34801561032d57600080fd5b5061026a61033c366004611857565b610849565b34801561034d57600080fd5b5060405160128152602001610241565b34801561036957600080fd5b5061026a610378366004611814565b61086d565b34801561038957600080fd5b50610208610398366004611814565b61088f565b3480156103a957600080fd5b506006546102d9906001600160a01b031681565b3480156103c957600080fd5b506102d96103d836600461183e565b610901565b3480156103e957600080fd5b50600a546102ab565b3480156103fe57600080fd5b50600b546102ab565b34801561041357600080fd5b506102ab610422366004611793565b6001600160a01b031660009081526020819052604090205490565b34801561044957600080fd5b50610208610911565b34801561045e57600080fd5b506007546102d9906001600160a01b031681565b34801561047e57600080fd5b506005546001600160a01b03166102d9565b34801561049c57600080fd5b506102ab610925565b3480156104b157600080fd5b50610234610966565b3480156104c657600080fd5b506102086104d5366004611814565b610975565b3480156104e657600080fd5b5061026a6104f5366004611814565b6109de565b34801561050657600080fd5b5061026a610515366004611814565b610a59565b34801561052657600080fd5b506102086105353660046118a1565b610a67565b34801561054657600080fd5b506102ab6105553660046118d8565b610cb0565b34801561056657600080fd5b50610208610575366004611793565b610cdb565b34801561058657600080fd5b506102086105953660046118a1565b610d57565b3480156105a657600080fd5b506102086105b5366004611793565b610f92565b3480156105c657600080fd5b5061026a6105d5366004611793565b60086020526000908152604090205460ff1681565b6105f2611008565b6007546001600160a01b0380831691160361060c57600080fd5b600780546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fa263c85dbf95383d903ef3a4075bf5f19095feef53ae33c895c7aa2224b9920991015b60405180910390a15050565b6007546001600160a01b031661068357600080fd5b6007546040516000916001600160a01b03169047908381818185875af1925050503d80600081146106d0576040519150601f19603f3d011682016040523d82523d6000602084013e6106d5565b606091505b50509050806106e357600080fd5b50565b6060600380546106f59061190b565b80601f01602080910402602001604051908101604052809291908181526020018280546107219061190b565b801561076e5780601f106107435761010080835404028352916020019161076e565b820191906000526020600020905b81548152906001019060200180831161075157829003601f168201915b5050505050905090565b600033610786818585611071565b5060019392505050565b6006546001600160a01b03166107a557600080fd5b6006546040516370a0823160e01b81523060048201526106e39183916001600160a01b03918216918316906370a0823190602401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190611945565b611196565b600a818154811061082f57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000336108578582856112d3565b61086285858561134d565b506001949350505050565b6000336107868185856108808383610cb0565b61088a9190611974565b611071565b3360009081526008602052604090205460ff166108f35760405162461bcd60e51b815260206004820152601a60248201527f4e6f7420617574686f72697a656420746f206d696e742058374400000000000060448201526064015b60405180910390fd5b6108fd828261151c565b5050565b600b818154811061082f57600080fd5b610919611008565b61092360006115fb565b565b61dead600090815260208190527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354600254610961919061198c565b905090565b6060600480546106f59061190b565b3360009081526009602052604090205460ff166109d45760405162461bcd60e51b815260206004820152601a60248201527f4e6f7420617574686f72697a656420746f206275726e2058374400000000000060448201526064016108ea565b6108fd828261164d565b600033816109ec8286610cb0565b905083811015610a4c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108ea565b6108628286868403611071565b60003361078681858561134d565b610a6f611008565b6001600160a01b03821660009081526009602052604090205481151560ff909116151503610af45760405162461bcd60e51b815260206004820152602c60248201527f52656465656d657220616c72656164792068617320737065636966696564206160448201526b3aba3437b934bd30ba34b7b760a11b60648201526084016108ea565b6001600160a01b0382166000908152600960205260409020805460ff19168215801591909117909155610b8257600b80546001600160a01b0384166000818152600d60205260408120839055600183018455929092527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055610c67565b600b54600090610b949060019061198c565b90506000600b8281548110610bab57610bab6119a3565b60009182526020808320909101546001600160a01b038781168452600d909252604090922054600b805492909316935091839183908110610bee57610bee6119a3565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790558483168252600d90526040808220849055918716815290812055600b805480610c4157610c416119b9565b600082815260209020810160001990810180546001600160a01b03191690550190555050505b816001600160a01b03167fa0f100ed64819faec412526950846bf3f2666f788d027d108865781d229461e982604051610ca4911515815260200190565b60405180910390a25050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610ce3611008565b6006546001600160a01b03808316911603610cfd57600080fd5b600680546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fd961bdc876de67ab892dce771ca242760d9512ce261e2f72cc48ce42996c54769101610662565b610d5f611008565b6001600160a01b03821660009081526008602052604090205481151560ff909116151503610de25760405162461bcd60e51b815260206004820152602a60248201527f4d696e74657220616c72656164792068617320737065636966696564206175746044820152693437b934bd30ba34b7b760b11b60648201526084016108ea565b6001600160a01b0382166000908152600860205260409020805460ff19168215801591909117909155610e7057600a80546001600160a01b0384166000818152600c60205260408120839055600183018455929092527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055610f55565b600a54600090610e829060019061198c565b90506000600a8281548110610e9957610e996119a3565b60009182526020808320909101546001600160a01b038781168452600c909252604090922054600a805492909316935091839183908110610edc57610edc6119a3565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790558483168252600c90526040808220849055918716815290812055600a805480610f2f57610f2f6119b9565b600082815260209020810160001990810180546001600160a01b03191690550190555050505b816001600160a01b03167f17f5b635c984bd6bd0661fd547f6085ef1a0813ef0c42d24b12a06f6824b5e0882604051610ca4911515815260200190565b610f9a611008565b6001600160a01b038116610fff5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108ea565b6106e3816115fb565b3361101b6005546001600160a01b031690565b6001600160a01b0316146109235760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108ea565b6001600160a01b0383166110d35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108ea565b6001600160a01b0382166111345760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108ea565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1790529151600092839287169161122291906119cf565b6000604051808303816000865af19150503d806000811461125f576040519150601f19603f3d011682016040523d82523d6000602084013e611264565b606091505b509150915081801561128e57508051158061128e57508080602001905181019061128e91906119eb565b6112cc5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b60448201526064016108ea565b5050505050565b60006112df8484610cb0565b90506000198114611347578181101561133a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016108ea565b6113478484848403611071565b50505050565b6001600160a01b0383166113b15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108ea565b6001600160a01b0382166114135760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108ea565b6001600160a01b0383166000908152602081905260409020548181101561148b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108ea565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906114c2908490611974565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161150e91815260200190565b60405180910390a350505050565b6001600160a01b0382166115725760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016108ea565b80600260008282546115849190611974565b90915550506001600160a01b038216600090815260208190526040812080548392906115b1908490611974565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166116ad5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016108ea565b6001600160a01b038216600090815260208190526040902054818110156117215760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016108ea565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611189565b80356001600160a01b038116811461178e57600080fd5b919050565b6000602082840312156117a557600080fd5b6117ae82611777565b9392505050565b60005b838110156117d05781810151838201526020016117b8565b838111156113475750506000910152565b60208152600082518060208401526118008160408501602087016117b5565b601f01601f19169190910160400192915050565b6000806040838503121561182757600080fd5b61183083611777565b946020939093013593505050565b60006020828403121561185057600080fd5b5035919050565b60008060006060848603121561186c57600080fd5b61187584611777565b925061188360208501611777565b9150604084013590509250925092565b80151581146106e357600080fd5b600080604083850312156118b457600080fd5b6118bd83611777565b915060208301356118cd81611893565b809150509250929050565b600080604083850312156118eb57600080fd5b6118f483611777565b915061190260208401611777565b90509250929050565b600181811c9082168061191f57607f821691505b60208210810361193f57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561195757600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156119875761198761195e565b500190565b60008282101561199e5761199e61195e565b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600082516119e18184602087016117b5565b9190910192915050565b6000602082840312156119fd57600080fd5b81516117ae8161189356fea26469706673582212202a9ecce3200a34ffd7b255ddcfce62a26d2542179baf381b5cb87d5ba3edc8da64736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c80636ab1325211610102578063a457c2d711610095578063e22212af11610064578063e22212af1461055a578063ed58bad81461057a578063f2fde38b1461059a578063f9bdbc23146105ba57600080fd5b8063a457c2d7146104da578063a9059cbb146104fa578063cabcd2481461051a578063dd62ed3e1461053a57600080fd5b80638da5cb5b116100d15780638da5cb5b146104725780639358928b1461049057806395d89b41146104a55780639dc29fac146104ba57600080fd5b80636ab13252146103f257806370a0823114610407578063715018a61461043d578063895d0f7a1461045257600080fd5b8063203729001161017a57806340c10f191161014957806340c10f191461037d57806343d03bd51461039d578063499263e8146103bd5780634cc388c5146103dd57600080fd5b806320372900146102f157806323b872dd14610321578063313ce56714610341578063395093511461035d57600080fd5b8063095ea7b3116101b6578063095ea7b31461024a57806316114acd1461027a57806318160ddd1461029a57806319e6b607146102b957600080fd5b8063060af1ab146101e85780630614117a1461020a57806306fdde031461021f57600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b50610208610203366004611793565b6105ea565b005b34801561021657600080fd5b5061020861066e565b34801561022b57600080fd5b506102346106e6565b60405161024191906117e1565b60405180910390f35b34801561025657600080fd5b5061026a610265366004611814565b610778565b6040519015158152602001610241565b34801561028657600080fd5b50610208610295366004611793565b610790565b3480156102a657600080fd5b506002545b604051908152602001610241565b3480156102c557600080fd5b506102d96102d436600461183e565b61081f565b6040516001600160a01b039091168152602001610241565b3480156102fd57600080fd5b5061026a61030c366004611793565b60096020526000908152604090205460ff1681565b34801561032d57600080fd5b5061026a61033c366004611857565b610849565b34801561034d57600080fd5b5060405160128152602001610241565b34801561036957600080fd5b5061026a610378366004611814565b61086d565b34801561038957600080fd5b50610208610398366004611814565b61088f565b3480156103a957600080fd5b506006546102d9906001600160a01b031681565b3480156103c957600080fd5b506102d96103d836600461183e565b610901565b3480156103e957600080fd5b50600a546102ab565b3480156103fe57600080fd5b50600b546102ab565b34801561041357600080fd5b506102ab610422366004611793565b6001600160a01b031660009081526020819052604090205490565b34801561044957600080fd5b50610208610911565b34801561045e57600080fd5b506007546102d9906001600160a01b031681565b34801561047e57600080fd5b506005546001600160a01b03166102d9565b34801561049c57600080fd5b506102ab610925565b3480156104b157600080fd5b50610234610966565b3480156104c657600080fd5b506102086104d5366004611814565b610975565b3480156104e657600080fd5b5061026a6104f5366004611814565b6109de565b34801561050657600080fd5b5061026a610515366004611814565b610a59565b34801561052657600080fd5b506102086105353660046118a1565b610a67565b34801561054657600080fd5b506102ab6105553660046118d8565b610cb0565b34801561056657600080fd5b50610208610575366004611793565b610cdb565b34801561058657600080fd5b506102086105953660046118a1565b610d57565b3480156105a657600080fd5b506102086105b5366004611793565b610f92565b3480156105c657600080fd5b5061026a6105d5366004611793565b60086020526000908152604090205460ff1681565b6105f2611008565b6007546001600160a01b0380831691160361060c57600080fd5b600780546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fa263c85dbf95383d903ef3a4075bf5f19095feef53ae33c895c7aa2224b9920991015b60405180910390a15050565b6007546001600160a01b031661068357600080fd5b6007546040516000916001600160a01b03169047908381818185875af1925050503d80600081146106d0576040519150601f19603f3d011682016040523d82523d6000602084013e6106d5565b606091505b50509050806106e357600080fd5b50565b6060600380546106f59061190b565b80601f01602080910402602001604051908101604052809291908181526020018280546107219061190b565b801561076e5780601f106107435761010080835404028352916020019161076e565b820191906000526020600020905b81548152906001019060200180831161075157829003601f168201915b5050505050905090565b600033610786818585611071565b5060019392505050565b6006546001600160a01b03166107a557600080fd5b6006546040516370a0823160e01b81523060048201526106e39183916001600160a01b03918216918316906370a0823190602401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190611945565b611196565b600a818154811061082f57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000336108578582856112d3565b61086285858561134d565b506001949350505050565b6000336107868185856108808383610cb0565b61088a9190611974565b611071565b3360009081526008602052604090205460ff166108f35760405162461bcd60e51b815260206004820152601a60248201527f4e6f7420617574686f72697a656420746f206d696e742058374400000000000060448201526064015b60405180910390fd5b6108fd828261151c565b5050565b600b818154811061082f57600080fd5b610919611008565b61092360006115fb565b565b61dead600090815260208190527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354600254610961919061198c565b905090565b6060600480546106f59061190b565b3360009081526009602052604090205460ff166109d45760405162461bcd60e51b815260206004820152601a60248201527f4e6f7420617574686f72697a656420746f206275726e2058374400000000000060448201526064016108ea565b6108fd828261164d565b600033816109ec8286610cb0565b905083811015610a4c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108ea565b6108628286868403611071565b60003361078681858561134d565b610a6f611008565b6001600160a01b03821660009081526009602052604090205481151560ff909116151503610af45760405162461bcd60e51b815260206004820152602c60248201527f52656465656d657220616c72656164792068617320737065636966696564206160448201526b3aba3437b934bd30ba34b7b760a11b60648201526084016108ea565b6001600160a01b0382166000908152600960205260409020805460ff19168215801591909117909155610b8257600b80546001600160a01b0384166000818152600d60205260408120839055600183018455929092527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055610c67565b600b54600090610b949060019061198c565b90506000600b8281548110610bab57610bab6119a3565b60009182526020808320909101546001600160a01b038781168452600d909252604090922054600b805492909316935091839183908110610bee57610bee6119a3565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790558483168252600d90526040808220849055918716815290812055600b805480610c4157610c416119b9565b600082815260209020810160001990810180546001600160a01b03191690550190555050505b816001600160a01b03167fa0f100ed64819faec412526950846bf3f2666f788d027d108865781d229461e982604051610ca4911515815260200190565b60405180910390a25050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610ce3611008565b6006546001600160a01b03808316911603610cfd57600080fd5b600680546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fd961bdc876de67ab892dce771ca242760d9512ce261e2f72cc48ce42996c54769101610662565b610d5f611008565b6001600160a01b03821660009081526008602052604090205481151560ff909116151503610de25760405162461bcd60e51b815260206004820152602a60248201527f4d696e74657220616c72656164792068617320737065636966696564206175746044820152693437b934bd30ba34b7b760b11b60648201526084016108ea565b6001600160a01b0382166000908152600860205260409020805460ff19168215801591909117909155610e7057600a80546001600160a01b0384166000818152600c60205260408120839055600183018455929092527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055610f55565b600a54600090610e829060019061198c565b90506000600a8281548110610e9957610e996119a3565b60009182526020808320909101546001600160a01b038781168452600c909252604090922054600a805492909316935091839183908110610edc57610edc6119a3565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790558483168252600c90526040808220849055918716815290812055600a805480610f2f57610f2f6119b9565b600082815260209020810160001990810180546001600160a01b03191690550190555050505b816001600160a01b03167f17f5b635c984bd6bd0661fd547f6085ef1a0813ef0c42d24b12a06f6824b5e0882604051610ca4911515815260200190565b610f9a611008565b6001600160a01b038116610fff5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108ea565b6106e3816115fb565b3361101b6005546001600160a01b031690565b6001600160a01b0316146109235760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108ea565b6001600160a01b0383166110d35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108ea565b6001600160a01b0382166111345760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108ea565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1790529151600092839287169161122291906119cf565b6000604051808303816000865af19150503d806000811461125f576040519150601f19603f3d011682016040523d82523d6000602084013e611264565b606091505b509150915081801561128e57508051158061128e57508080602001905181019061128e91906119eb565b6112cc5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b60448201526064016108ea565b5050505050565b60006112df8484610cb0565b90506000198114611347578181101561133a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016108ea565b6113478484848403611071565b50505050565b6001600160a01b0383166113b15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108ea565b6001600160a01b0382166114135760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108ea565b6001600160a01b0383166000908152602081905260409020548181101561148b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108ea565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906114c2908490611974565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161150e91815260200190565b60405180910390a350505050565b6001600160a01b0382166115725760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016108ea565b80600260008282546115849190611974565b90915550506001600160a01b038216600090815260208190526040812080548392906115b1908490611974565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166116ad5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016108ea565b6001600160a01b038216600090815260208190526040902054818110156117215760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016108ea565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611189565b80356001600160a01b038116811461178e57600080fd5b919050565b6000602082840312156117a557600080fd5b6117ae82611777565b9392505050565b60005b838110156117d05781810151838201526020016117b8565b838111156113475750506000910152565b60208152600082518060208401526118008160408501602087016117b5565b601f01601f19169190910160400192915050565b6000806040838503121561182757600080fd5b61183083611777565b946020939093013593505050565b60006020828403121561185057600080fd5b5035919050565b60008060006060848603121561186c57600080fd5b61187584611777565b925061188360208501611777565b9150604084013590509250925092565b80151581146106e357600080fd5b600080604083850312156118b457600080fd5b6118bd83611777565b915060208301356118cd81611893565b809150509250929050565b600080604083850312156118eb57600080fd5b6118f483611777565b915061190260208401611777565b90509250929050565b600181811c9082168061191f57607f821691505b60208210810361193f57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561195757600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156119875761198761195e565b500190565b60008282101561199e5761199e61195e565b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600082516119e18184602087016117b5565b9190910192915050565b6000602082840312156119fd57600080fd5b81516117ae8161189356fea26469706673582212202a9ecce3200a34ffd7b255ddcfce62a26d2542179baf381b5cb87d5ba3edc8da64736f6c634300080f0033

Deployed Bytecode Sourcemap

14002:3462:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13463:314;;;;;;;;;;-1:-1:-1;13463:314:0;;;;;:::i;:::-;;:::i;:::-;;13785:210;;;;;;;;;;;;;:::i;6812:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7742:199;;;;;;;;;;-1:-1:-1;7742:199:0;;;;;:::i;:::-;;:::i;:::-;;;1458:14:1;;1451:22;1433:41;;1421:2;1406:18;7742:199:0;1293:187:1;12751:229:0;;;;;;;;;;-1:-1:-1;12751:229:0;;;;;:::i;:::-;;:::i;7133:108::-;;;;;;;;;;-1:-1:-1;7221:12:0;;7133:108;;;1631:25:1;;;1619:2;1604:18;7133:108:0;1485:177:1;14203:34:0;;;;;;;;;;-1:-1:-1;14203:34:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2016:32:1;;;1998:51;;1986:2;1971:18;14203:34:0;1852:203:1;14144:50:0;;;;;;;;;;-1:-1:-1;14144:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7949:293;;;;;;;;;;-1:-1:-1;7949:293:0;;;;;:::i;:::-;;:::i;7032:93::-;;;;;;;;;;-1:-1:-1;7032:93:0;;7115:2;2535:36:1;;2523:2;2508:18;7032:93:0;2393:184:1;8250:236:0;;;;;;;;;;-1:-1:-1;8250:236:0;;;;;:::i;:::-;;:::i;16980:165::-;;;;;;;;;;-1:-1:-1;16980:165:0;;;;;:::i;:::-;;:::i;12279:38::-;;;;;;;;;;-1:-1:-1;12279:38:0;;;;-1:-1:-1;;;;;12279:38:0;;;14244:36;;;;;;;;;;-1:-1:-1;14244:36:0;;;;;:::i;:::-;;:::i;14738:116::-;;;;;;;;;;-1:-1:-1;14822:17:0;:24;14738:116;;14862:120;;;;;;;;;;-1:-1:-1;14948:19:0;:26;14862:120;;7249:127;;;;;;;;;;-1:-1:-1;7249:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7350:18:0;7323:7;7350:18;;;;;;;;;;;;7249:127;4959:103;;;;;;;;;;;;;:::i;13335:36::-;;;;;;;;;;-1:-1:-1;13335:36:0;;;;-1:-1:-1;;;;;13335:36:0;;;4726:87;;;;;;;;;;-1:-1:-1;4799:6:0;;-1:-1:-1;;;;;4799:6:0;4726:87;;17332:129;;;;;;;;;;;;;:::i;6920:104::-;;;;;;;;;;;;;:::i;17153:171::-;;;;;;;;;;-1:-1:-1;17153:171:0;;;;;:::i;:::-;;:::i;8494:434::-;;;;;;;;;;-1:-1:-1;8494:434:0;;;;;:::i;:::-;;:::i;7384:191::-;;;;;;;;;;-1:-1:-1;7384:191:0;;;;;:::i;:::-;;:::i;15954:1018::-;;;;;;;;;;-1:-1:-1;15954:1018:0;;;;;:::i;:::-;;:::i;7583:151::-;;;;;;;;;;-1:-1:-1;7583:151:0;;;;;:::i;:::-;;:::i;12411:332::-;;;;;;;;;;-1:-1:-1;12411:332:0;;;;;:::i;:::-;;:::i;14990:956::-;;;;;;;;;;-1:-1:-1;14990:956:0;;;;;:::i;:::-;;:::i;5070:201::-;;;;;;;;;;-1:-1:-1;5070:201:0;;;;;:::i;:::-;;:::i;14089:48::-;;;;;;;;;;-1:-1:-1;14089:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13463:314;4685:13;:11;:13::i;:::-;13558:21:::1;::::0;-1:-1:-1;;;;;13558:38:0;;::::1;:21:::0;::::1;:38:::0;13550:47:::1;;;::::0;::::1;;13631:21;::::0;;-1:-1:-1;;;;;13663:37:0;;::::1;-1:-1:-1::0;;;;;;13663:37:0;::::1;::::0;::::1;::::0;;;13716:53:::1;::::0;;13631:21;;;::::1;3502:34:1::0;;;3567:2;3552:18;;3545:43;;;;13716:53:0::1;::::0;3437:18:1;13716:53:0::1;;;;;;;;13539:238;13463:314:::0;:::o;13785:210::-;13835:21;;-1:-1:-1;;;;;13835:21:0;13827:44;;;;;;13900:21;;:60;;13883:12;;-1:-1:-1;;;;;13900:21:0;;13934;;13883:12;13900:60;13883:12;13900:60;13934:21;13900;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13882:78;;;13979:7;13971:16;;;;;;13816:179;13785:210::o;6812:100::-;6866:13;6899:5;6892:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6812:100;:::o;7742:199::-;7825:4;7858:10;7879:32;7858:10;7895:7;7904:6;7879:8;:32::i;:::-;-1:-1:-1;7929:4:0;;7742:199;-1:-1:-1;;;7742:199:0:o;12751:229::-;12824:23;;-1:-1:-1;;;;;12824:23:0;12816:46;;;;;;12901:23;;12926:45;;-1:-1:-1;;;12926:45:0;;12965:4;12926:45;;;1998:51:1;12873:99:0;;12887:12;;-1:-1:-1;;;;;12901:23:0;;;;12926:30;;;;;1971:18:1;;12926:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12873:13;:99::i;14203:34::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14203:34:0;;-1:-1:-1;14203:34:0;:::o;7949:293::-;8080:4;8115:10;8136:38;8152:4;8115:10;8167:6;8136:15;:38::i;:::-;8185:27;8195:4;8201:2;8205:6;8185:9;:27::i;:::-;-1:-1:-1;8230:4:0;;7949:293;-1:-1:-1;;;;7949:293:0:o;8250:236::-;8338:4;8371:10;8392:64;8371:10;8408:7;8445:10;8417:25;8371:10;8408:7;8417:9;:25::i;:::-;:38;;;;:::i;:::-;8392:8;:64::i;16980:165::-;17067:10;17050:28;;;;:16;:28;;;;;;;;17042:67;;;;-1:-1:-1;;;17042:67:0;;4850:2:1;17042:67:0;;;4832:21:1;4889:2;4869:18;;;4862:30;4928:28;4908:18;;;4901:56;4974:18;;17042:67:0;;;;;;;;;17120:17;17126:2;17130:6;17120:5;:17::i;:::-;16980:165;;:::o;14244:36::-;;;;;;;;;;;;4959:103;4685:13;:11;:13::i;:::-;5024:30:::1;5051:1;5024:18;:30::i;:::-;4959:103::o:0;17332:129::-;17445:6;17384:7;7350:18;;;;;;;;;7221:12;;17411:42;;;;:::i;:::-;17404:49;;17332:129;:::o;6920:104::-;6976:13;7009:7;7002:14;;;;;:::i;17153:171::-;17244:10;17225:30;;;;:18;:30;;;;;;;;17217:69;;;;-1:-1:-1;;;17217:69:0;;5335:2:1;17217:69:0;;;5317:21:1;5374:2;5354:18;;;5347:30;5413:28;5393:18;;;5386:56;5459:18;;17217:69:0;5133:350:1;17217:69:0;17297:19;17303:4;17309:6;17297:5;:19::i;8494:434::-;8587:4;8620:10;8587:4;8668:25;8620:10;8685:7;8668:9;:25::i;:::-;8641:52;;8732:15;8712:16;:35;;8704:85;;;;-1:-1:-1;;;8704:85:0;;5690:2:1;8704:85:0;;;5672:21:1;5729:2;5709:18;;;5702:30;5768:34;5748:18;;;5741:62;-1:-1:-1;;;5819:18:1;;;5812:35;5864:19;;8704:85:0;5488:401:1;8704:85:0;8825:60;8834:5;8841:7;8869:15;8850:16;:34;8825:8;:60::i;7384:191::-;7463:4;7496:10;7517:28;7496:10;7534:2;7538:6;7517:9;:28::i;15954:1018::-;4685:13;:11;:13::i;:::-;-1:-1:-1;;;;;16067:35:0;::::1;;::::0;;;:18:::1;:35;::::0;;;;;:51;::::1;;:35;::::0;;::::1;:51;;::::0;16059:108:::1;;;::::0;-1:-1:-1;;;16059:108:0;;6096:2:1;16059:108:0::1;::::0;::::1;6078:21:1::0;6135:2;6115:18;;;6108:30;6174:34;6154:18;;;6147:62;-1:-1:-1;;;6225:18:1;;;6218:42;6277:19;;16059:108:0::1;5894:408:1::0;16059:108:0::1;-1:-1:-1::0;;;;;16178:35:0;::::1;;::::0;;;:18:::1;:35;::::0;;;;:50;;-1:-1:-1;;16178:50:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;16241:654:::1;;16318:19;:26:::0;;-1:-1:-1;;;;;16274:41:0;::::1;;::::0;;;:24:::1;:41;::::0;;;;:70;;;16359:41:::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;16359:41:0::1;::::0;;::::1;::::0;;16241:654:::1;;;16461:19;:26:::0;16433:25:::1;::::0;16461:30:::1;::::0;16490:1:::1;::::0;16461:30:::1;:::i;:::-;16433:58;;16506:20;16529:19;16549:17;16529:38;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;16606:41:0;;::::1;::::0;;:24:::1;:41:::0;;;;;;;;16662:19:::1;:34:::0;;16529:38;;;::::1;::::0;-1:-1:-1;16606:41:0;16529:38;;16606:41;;16662:34;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:49:::0;;-1:-1:-1;;;;;;16662:49:0::1;-1:-1:-1::0;;;;;16662:49:0;;::::1;;::::0;;16726:38;;::::1;::::0;;:24:::1;:38:::0;;;;;;:54;;;16802:41;;::::1;::::0;;;;;16795:48;16858:19:::1;:25:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;16858:25:0;;;;;-1:-1:-1;;;;;;16858:25:0::1;::::0;;;;;-1:-1:-1;;;16241:654:0::1;16934:15;-1:-1:-1::0;;;;;16912:52:0::1;;16951:12;16912:52;;;;1458:14:1::0;1451:22;1433:41;;1421:2;1406:18;;1293:187;16912:52:0::1;;;;;;;;15954:1018:::0;;:::o;7583:151::-;-1:-1:-1;;;;;7699:18:0;;;7672:7;7699:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7583:151::o;12411:332::-;4685:13;:11;:13::i;:::-;12510:23:::1;::::0;-1:-1:-1;;;;;12510:42:0;;::::1;:23:::0;::::1;:42:::0;12502:51:::1;;;::::0;::::1;;12587:23;::::0;;-1:-1:-1;;;;;12621:41:0;;::::1;-1:-1:-1::0;;;;;;12621:41:0;::::1;::::0;::::1;::::0;;;12678:57:::1;::::0;;12587:23;;;::::1;3502:34:1::0;;;3567:2;3552:18;;3545:43;;;;12678:57:0::1;::::0;3437:18:1;12678:57:0::1;3290:304:1::0;14990:956:0;4685:13;:11;:13::i;:::-;-1:-1:-1;;;;;15099:31:0;::::1;;::::0;;;:16:::1;:31;::::0;;;;;:47;::::1;;:31;::::0;;::::1;:47;;::::0;15091:102:::1;;;::::0;-1:-1:-1;;;15091:102:0;;6773:2:1;15091:102:0::1;::::0;::::1;6755:21:1::0;6812:2;6792:18;;;6785:30;6851:34;6831:18;;;6824:62;-1:-1:-1;;;6902:18:1;;;6895:40;6952:19;;15091:102:0::1;6571:406:1::0;15091:102:0::1;-1:-1:-1::0;;;;;15204:31:0;::::1;;::::0;;;:16:::1;:31;::::0;;;;:46;;-1:-1:-1;;15204:46:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;15263:610:::1;;15336:17;:24:::0;;-1:-1:-1;;;;;15296:37:0;::::1;;::::0;;;:22:::1;:37;::::0;;;;:64;;;15375:37:::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;15375:37:0::1;::::0;;::::1;::::0;;15263:610:::1;;;15471:17;:24:::0;15445:23:::1;::::0;15471:28:::1;::::0;15498:1:::1;::::0;15471:28:::1;:::i;:::-;15445:54;;15514:18;15535:17;15553:15;15535:34;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;15606:37:0;;::::1;::::0;;:22:::1;:37:::0;;;;;;;;15658:17:::1;:30:::0;;15535:34;;;::::1;::::0;-1:-1:-1;15606:37:0;15535:34;;15606:37;;15658:30;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:43:::0;;-1:-1:-1;;;;;;15658:43:0::1;-1:-1:-1::0;;;;;15658:43:0;;::::1;;::::0;;15716:34;;::::1;::::0;;:22:::1;:34:::0;;;;;;:48;;;15786:37;;::::1;::::0;;;;;15779:44;15838:17:::1;:23:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;15838:23:0;;;;;-1:-1:-1;;;;;;15838:23:0::1;::::0;;;;;-1:-1:-1;;;15263:610:0::1;15910:13;-1:-1:-1::0;;;;;15890:48:0::1;;15925:12;15890:48;;;;1458:14:1::0;1451:22;1433:41;;1421:2;1406:18;;1293:187;5070:201:0;4685:13;:11;:13::i;:::-;-1:-1:-1;;;;;5159:22:0;::::1;5151:73;;;::::0;-1:-1:-1;;;5151:73:0;;7184:2:1;5151:73:0::1;::::0;::::1;7166:21:1::0;7223:2;7203:18;;;7196:30;7262:34;7242:18;;;7235:62;-1:-1:-1;;;7313:18:1;;;7306:36;7359:19;;5151:73:0::1;6982:402:1::0;5151:73:0::1;5235:28;5254:8;5235:18;:28::i;4821:130::-:0;4896:10;4885:7;4799:6;;-1:-1:-1;;;;;4799:6:0;;4726:87;4885:7;-1:-1:-1;;;;;4885:21:0;;4877:66;;;;-1:-1:-1;;;4877:66:0;;7591:2:1;4877:66:0;;;7573:21:1;;;7610:18;;;7603:30;7669:34;7649:18;;;7642:62;7721:18;;4877:66:0;7389:356:1;10360:380:0;-1:-1:-1;;;;;10496:19:0;;10488:68;;;;-1:-1:-1;;;10488:68:0;;7952:2:1;10488:68:0;;;7934:21:1;7991:2;7971:18;;;7964:30;8030:34;8010:18;;;8003:62;-1:-1:-1;;;8081:18:1;;;8074:34;8125:19;;10488:68:0;7750:400:1;10488:68:0;-1:-1:-1;;;;;10575:21:0;;10567:68;;;;-1:-1:-1;;;10567:68:0;;8357:2:1;10567:68:0;;;8339:21:1;8396:2;8376:18;;;8369:30;8435:34;8415:18;;;8408:62;-1:-1:-1;;;8486:18:1;;;8479:32;8528:19;;10567:68:0;8155:398:1;10567:68:0;-1:-1:-1;;;;;10648:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10700:32;;1631:25:1;;;10700:32:0;;1604:18:1;10700:32:0;;;;;;;;10360:380;;;:::o;12988:284::-;12236:34;;;;;;;;;;;;;;;;;13116:51;;-1:-1:-1;;;;;8750:32:1;;;13116:51:0;;;8732::1;8799:18;;;;8792:34;;;13116:51:0;;;;;;;;;;8705:18:1;;;;13116:51:0;;;;;;;-1:-1:-1;;;;;13116:51:0;-1:-1:-1;;;13116:51:0;;;13105:63;;-1:-1:-1;;;;13105:10:0;;;:63;;13116:51;13105:63;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13069:99;;;;13187:7;:57;;;;-1:-1:-1;13199:11:0;;:16;;:44;;;13230:4;13219:24;;;;;;;;;;;;:::i;:::-;13179:85;;;;-1:-1:-1;;;13179:85:0;;9568:2:1;13179:85:0;;;9550:21:1;9607:2;9587:18;;;9580:30;-1:-1:-1;;;9626:18:1;;;9619:45;9681:18;;13179:85:0;9366:339:1;13179:85:0;13058:214;;12988:284;;;:::o;10748:453::-;10883:24;10910:25;10920:5;10927:7;10910:9;:25::i;:::-;10883:52;;-1:-1:-1;;10950:16:0;:37;10946:248;;11032:6;11012:16;:26;;11004:68;;;;-1:-1:-1;;;11004:68:0;;9912:2:1;11004:68:0;;;9894:21:1;9951:2;9931:18;;;9924:30;9990:31;9970:18;;;9963:59;10039:18;;11004:68:0;9710:353:1;11004:68:0;11116:51;11125:5;11132:7;11160:6;11141:16;:25;11116:8;:51::i;:::-;10872:329;10748:453;;;:::o;8936:572::-;-1:-1:-1;;;;;9067:18:0;;9059:68;;;;-1:-1:-1;;;9059:68:0;;10270:2:1;9059:68:0;;;10252:21:1;10309:2;10289:18;;;10282:30;10348:34;10328:18;;;10321:62;-1:-1:-1;;;10399:18:1;;;10392:35;10444:19;;9059:68:0;10068:401:1;9059:68:0;-1:-1:-1;;;;;9146:16:0;;9138:64;;;;-1:-1:-1;;;9138:64:0;;10676:2:1;9138:64:0;;;10658:21:1;10715:2;10695:18;;;10688:30;10754:34;10734:18;;;10727:62;-1:-1:-1;;;10805:18:1;;;10798:33;10848:19;;9138:64:0;10474:399:1;9138:64:0;-1:-1:-1;;;;;9237:15:0;;9215:19;9237:15;;;;;;;;;;;9271:21;;;;9263:72;;;;-1:-1:-1;;;9263:72:0;;11080:2:1;9263:72:0;;;11062:21:1;11119:2;11099:18;;;11092:30;11158:34;11138:18;;;11131:62;-1:-1:-1;;;11209:18:1;;;11202:36;11255:19;;9263:72:0;10878:402:1;9263:72:0;-1:-1:-1;;;;;9371:15:0;;;:9;:15;;;;;;;;;;;9389:20;;;9371:38;;9433:13;;;;;;;;:23;;9403:6;;9371:9;9433:23;;9403:6;;9433:23;:::i;:::-;;;;;;;;9489:2;-1:-1:-1;;;;;9474:26:0;9483:4;-1:-1:-1;;;;;9474:26:0;;9493:6;9474:26;;;;1631:25:1;;1619:2;1604:18;;1485:177;9474:26:0;;;;;;;;9048:460;8936:572;;;:::o;9516:276::-;-1:-1:-1;;;;;9600:21:0;;9592:65;;;;-1:-1:-1;;;9592:65:0;;11487:2:1;9592:65:0;;;11469:21:1;11526:2;11506:18;;;11499:30;11565:33;11545:18;;;11538:61;11616:18;;9592:65:0;11285:355:1;9592:65:0;9686:6;9670:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;9703:18:0;;:9;:18;;;;;;;;;;:28;;9725:6;;9703:9;:28;;9725:6;;9703:28;:::i;:::-;;;;-1:-1:-1;;9747:37:0;;1631:25:1;;;-1:-1:-1;;;;;9747:37:0;;;9764:1;;9747:37;;1619:2:1;1604:18;9747:37:0;;;;;;;9516:276;;:::o;5279:191::-;5372:6;;;-1:-1:-1;;;;;5389:17:0;;;-1:-1:-1;;;;;;5389:17:0;;;;;;;5422:40;;5372:6;;;5389:17;5372:6;;5422:40;;5353:16;;5422:40;5342:128;5279:191;:::o;9800:552::-;-1:-1:-1;;;;;9884:21:0;;9876:67;;;;-1:-1:-1;;;9876:67:0;;11847:2:1;9876:67:0;;;11829:21:1;11886:2;11866:18;;;11859:30;11925:34;11905:18;;;11898:62;-1:-1:-1;;;11976:18:1;;;11969:31;12017:19;;9876:67:0;11645:397:1;9876:67:0;-1:-1:-1;;;;;9981:18:0;;9956:22;9981:18;;;;;;;;;;;10018:24;;;;10010:71;;;;-1:-1:-1;;;10010:71:0;;12249:2:1;10010:71:0;;;12231:21:1;12288:2;12268:18;;;12261:30;12327:34;12307:18;;;12300:62;-1:-1:-1;;;12378:18:1;;;12371:32;12420:19;;10010:71:0;12047:398:1;10010:71:0;-1:-1:-1;;;;;10117:18:0;;:9;:18;;;;;;;;;;;10138:23;;;10117:44;;10256:12;:22;;;;;;;10307:37;1631:25:1;;;10117:9:0;;:18;10307:37;;1604:18:1;10307:37:0;1485:177:1;14:173;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;:::-;333:39;192:186;-1:-1:-1;;;192:186:1:o;383:258::-;455:1;465:113;479:6;476:1;473:13;465:113;;;555:11;;;549:18;536:11;;;529:39;501:2;494:10;465:113;;;596:6;593:1;590:13;587:48;;;-1:-1:-1;;631:1:1;613:16;;606:27;383:258::o;646:383::-;795:2;784:9;777:21;758:4;827:6;821:13;870:6;865:2;854:9;850:18;843:34;886:66;945:6;940:2;929:9;925:18;920:2;912:6;908:15;886:66;:::i;:::-;1013:2;992:15;-1:-1:-1;;988:29:1;973:45;;;;1020:2;969:54;;646:383;-1:-1:-1;;646:383:1:o;1034:254::-;1102:6;1110;1163:2;1151:9;1142:7;1138:23;1134:32;1131:52;;;1179:1;1176;1169:12;1131:52;1202:29;1221:9;1202:29;:::i;:::-;1192:39;1278:2;1263:18;;;;1250:32;;-1:-1:-1;;;1034:254:1:o;1667:180::-;1726:6;1779:2;1767:9;1758:7;1754:23;1750:32;1747:52;;;1795:1;1792;1785:12;1747:52;-1:-1:-1;1818:23:1;;1667:180;-1:-1:-1;1667:180:1:o;2060:328::-;2137:6;2145;2153;2206:2;2194:9;2185:7;2181:23;2177:32;2174:52;;;2222:1;2219;2212:12;2174:52;2245:29;2264:9;2245:29;:::i;:::-;2235:39;;2293:38;2327:2;2316:9;2312:18;2293:38;:::i;:::-;2283:48;;2378:2;2367:9;2363:18;2350:32;2340:42;;2060:328;;;;;:::o;2582:118::-;2668:5;2661:13;2654:21;2647:5;2644:32;2634:60;;2690:1;2687;2680:12;2705:315;2770:6;2778;2831:2;2819:9;2810:7;2806:23;2802:32;2799:52;;;2847:1;2844;2837:12;2799:52;2870:29;2889:9;2870:29;:::i;:::-;2860:39;;2949:2;2938:9;2934:18;2921:32;2962:28;2984:5;2962:28;:::i;:::-;3009:5;2999:15;;;2705:315;;;;;:::o;3025:260::-;3093:6;3101;3154:2;3142:9;3133:7;3129:23;3125:32;3122:52;;;3170:1;3167;3160:12;3122:52;3193:29;3212:9;3193:29;:::i;:::-;3183:39;;3241:38;3275:2;3264:9;3260:18;3241:38;:::i;:::-;3231:48;;3025:260;;;;;:::o;3809:380::-;3888:1;3884:12;;;;3931;;;3952:61;;4006:4;3998:6;3994:17;3984:27;;3952:61;4059:2;4051:6;4048:14;4028:18;4025:38;4022:161;;4105:10;4100:3;4096:20;4093:1;4086:31;4140:4;4137:1;4130:15;4168:4;4165:1;4158:15;4022:161;;3809:380;;;:::o;4194:184::-;4264:6;4317:2;4305:9;4296:7;4292:23;4288:32;4285:52;;;4333:1;4330;4323:12;4285:52;-1:-1:-1;4356:16:1;;4194:184;-1:-1:-1;4194:184:1:o;4383:127::-;4444:10;4439:3;4435:20;4432:1;4425:31;4475:4;4472:1;4465:15;4499:4;4496:1;4489:15;4515:128;4555:3;4586:1;4582:6;4579:1;4576:13;4573:39;;;4592:18;;:::i;:::-;-1:-1:-1;4628:9:1;;4515:128::o;5003:125::-;5043:4;5071:1;5068;5065:8;5062:34;;;5076:18;;:::i;:::-;-1:-1:-1;5113:9:1;;5003:125::o;6307:127::-;6368:10;6363:3;6359:20;6356:1;6349:31;6399:4;6396:1;6389:15;6423:4;6420:1;6413:15;6439:127;6500:10;6495:3;6491:20;6488:1;6481:31;6531:4;6528:1;6521:15;6555:4;6552:1;6545:15;8837:274;8966:3;9004:6;8998:13;9020:53;9066:6;9061:3;9054:4;9046:6;9042:17;9020:53;:::i;:::-;9089:16;;;;;8837:274;-1:-1:-1;;8837:274:1:o;9116:245::-;9183:6;9236:2;9224:9;9215:7;9211:23;9207:32;9204:52;;;9252:1;9249;9242:12;9204:52;9284:9;9278:16;9303:28;9325:5;9303:28;:::i

Swarm Source

ipfs://2a9ecce3200a34ffd7b255ddcfce62a26d2542179baf381b5cb87d5ba3edc8da

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  ]
[ 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.