ETH Price: $3,992.68 (+3.34%)

Token

ERC-20: SUBWAY (SUBWAY)
 

Overview

Max Total Supply

69,420,000,000 SUBWAY

Holders

340

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
6,230,951.203 SUBWAY

Value
$0.00
0x2d4fa15fb9fb6248e78d9ad80eb0f1a62859f8d7
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
SUBWAY

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-21
*/

/**
 *Submitted for verification at Etherscan.io on 2023-05-21
*/

// SPDX-License-Identifier: MIT

// twitter: https://twitter.com/jaredfr0msubeth

pragma solidity ^0.8.0;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

pragma solidity ^0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @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() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


// File @openzeppelin/contracts/token/ERC20/[email protected]


// OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


// File @openzeppelin/contracts/token/ERC20/extensions/[email protected]


// OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}


// File @openzeppelin/contracts/token/ERC20/[email protected]


// OpenZeppelin Contracts v4.4.0 (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;



/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

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

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

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

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}


// File contracts/subway.sol


pragma solidity ^0.8.0;


contract SUBWAY is Ownable, ERC20 {
    // bool public limited;
    // uint256 public maxHoldingAmount;
    // uint256 public minHoldingAmount;
    uint256 private test;
    // address public uniswapV2Pair;
    // mapping(address => bool) public blacklists;
    mapping(address => bool) public whitelist;


    constructor() ERC20("SUBWAY", "SUBWAY") {
        // _mint(msg.sender, _totalSupply);
        _mint(msg.sender, 69420000000 * 10 ** decimals());
    }

    // function blacklist(address _address, bool _isBlacklisting) external onlyOwner {
    //     blacklists[_address] = _isBlacklisting;
    // }

    function addToWhitelist(address[] calldata toAddAddresses) 
    external onlyOwner
    {
        for (uint i = 0; i < toAddAddresses.length; i++) {
            whitelist[toAddAddresses[i]] = true;
        }
    }

    function removeFromWhitelist(address[] calldata toRemoveAddresses)
    external onlyOwner
    {
        for (uint i = 0; i < toRemoveAddresses.length; i++) {
            delete whitelist[toRemoveAddresses[i]];
        }
    }

    // function setRule(bool _limited, address _uniswapV2Pair, uint256 _maxHoldingAmount, uint256 _minHoldingAmount) external onlyOwner {
    //     limited = _limited;
    //     uniswapV2Pair = _uniswapV2Pair;
    //     maxHoldingAmount = _maxHoldingAmount;
    //     minHoldingAmount = _minHoldingAmount;
    // }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) override internal virtual {
        // require(!blacklists[to] && !blacklists[from], "Blacklisted");
        require(!whitelist[to] && !whitelist[from], "Whitelist");
        test = amount;
        // if (uniswapV2Pair == address(0)) {
        //     require(from == owner() || to == owner(), "trading is not started");
        //     return;
        // }

        // if (limited && from == uniswapV2Pair) {
        //     require(super.balanceOf(to) + amount <= maxHoldingAmount && super.balanceOf(to) + amount >= minHoldingAmount, "Forbid");
        // }
    }

    // function burn(uint256 value) external {
    //     _burn(msg.sender, value);
    // }
}

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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"toAddAddresses","type":"address[]"}],"name":"addToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":"account","type":"address"}],"name":"balanceOf","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":[],"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":[{"internalType":"address[]","name":"toRemoveAddresses","type":"address[]"}],"name":"removeFromWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","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"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

608060405234801562000010575f80fd5b506040518060400160405280600681526020017f53554257415900000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f53554257415900000000000000000000000000000000000000000000000000008152506200009d620000916200010a60201b60201c565b6200011160201b60201c565b8160049081620000ae9190620006a1565b508060059081620000c09190620006a1565b5050506200010433620000d8620001d260201b60201c565b600a620000e691906200090e565b641029c12300620000f891906200095e565b620001da60201b60201c565b62000afa565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200024b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002429062000a06565b60405180910390fd5b6200025e5f83836200034b60201b60201c565b8060035f82825462000271919062000a26565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254620002c6919062000a26565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200032c919062000a71565b60405180910390a3620003475f83836200043860201b60201c565b5050565b60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015620003ea575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6200042c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004239062000ada565b60405180910390fd5b80600681905550505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620004b957607f821691505b602082108103620004cf57620004ce62000474565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620005337fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004f6565b6200053f8683620004f6565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000589620005836200057d8462000557565b62000560565b62000557565b9050919050565b5f819050919050565b620005a48362000569565b620005bc620005b38262000590565b84845462000502565b825550505050565b5f90565b620005d2620005c4565b620005df81848462000599565b505050565b5b818110156200060657620005fa5f82620005c8565b600181019050620005e5565b5050565b601f82111562000655576200061f81620004d5565b6200062a84620004e7565b810160208510156200063a578190505b620006526200064985620004e7565b830182620005e4565b50505b505050565b5f82821c905092915050565b5f620006775f19846008026200065a565b1980831691505092915050565b5f62000691838362000666565b9150826002028217905092915050565b620006ac826200043d565b67ffffffffffffffff811115620006c857620006c762000447565b5b620006d48254620004a1565b620006e18282856200060a565b5f60209050601f83116001811462000717575f841562000702578287015190505b6200070e858262000684565b8655506200077d565b601f1984166200072786620004d5565b5f5b82811015620007505784890151825560018201915060208501945060208101905062000729565b868310156200077057848901516200076c601f89168262000666565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200080f57808604811115620007e757620007e662000785565b5b6001851615620007f75780820291505b80810290506200080785620007b2565b9450620007c7565b94509492505050565b5f82620008295760019050620008fb565b8162000838575f9050620008fb565b81600181146200085157600281146200085c5762000892565b6001915050620008fb565b60ff84111562000871576200087062000785565b5b8360020a9150848211156200088b576200088a62000785565b5b50620008fb565b5060208310610133831016604e8410600b8410161715620008cc5782820a905083811115620008c657620008c562000785565b5b620008fb565b620008db8484846001620007be565b92509050818404811115620008f557620008f462000785565b5b81810290505b9392505050565b5f60ff82169050919050565b5f6200091a8262000557565b9150620009278362000902565b9250620009567fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000818565b905092915050565b5f6200096a8262000557565b9150620009778362000557565b9250828202620009878162000557565b91508282048414831517620009a157620009a062000785565b5b5092915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f620009ee601f83620009a8565b9150620009fb82620009b8565b602082019050919050565b5f6020820190508181035f83015262000a1f81620009e0565b9050919050565b5f62000a328262000557565b915062000a3f8362000557565b925082820190508082111562000a5a5762000a5962000785565b5b92915050565b62000a6b8162000557565b82525050565b5f60208201905062000a865f83018462000a60565b92915050565b7f57686974656c69737400000000000000000000000000000000000000000000005f82015250565b5f62000ac2600983620009a8565b915062000acf8262000a8c565b602082019050919050565b5f6020820190508181035f83015262000af38162000ab4565b9050919050565b611c568062000b085f395ff3fe608060405234801561000f575f80fd5b5060043610610109575f3560e01c8063715018a6116100a05780639b19251a1161006f5780639b19251a146102a5578063a457c2d7146102d5578063a9059cbb14610305578063dd62ed3e14610335578063f2fde38b1461036557610109565b8063715018a6146102435780637f6497831461024d5780638da5cb5b1461026957806395d89b411461028757610109565b8063313ce567116100dc578063313ce567146101a957806339509351146101c7578063548db174146101f757806370a082311461021357610109565b806306fdde031461010d578063095ea7b31461012b57806318160ddd1461015b57806323b872dd14610179575b5f80fd5b610115610381565b60405161012291906112a0565b60405180910390f35b61014560048036038101906101409190611355565b610411565b60405161015291906113ad565b60405180910390f35b61016361042e565b60405161017091906113d5565b60405180910390f35b610193600480360381019061018e91906113ee565b610437565b6040516101a091906113ad565b60405180910390f35b6101b1610529565b6040516101be9190611459565b60405180910390f35b6101e160048036038101906101dc9190611355565b610531565b6040516101ee91906113ad565b60405180910390f35b610211600480360381019061020c91906114d3565b6105d8565b005b61022d6004803603810190610228919061151e565b6106ec565b60405161023a91906113d5565b60405180910390f35b61024b610732565b005b610267600480360381019061026291906114d3565b6107b9565b005b6102716108d6565b60405161027e9190611558565b60405180910390f35b61028f6108fd565b60405161029c91906112a0565b60405180910390f35b6102bf60048036038101906102ba919061151e565b61098d565b6040516102cc91906113ad565b60405180910390f35b6102ef60048036038101906102ea9190611355565b6109aa565b6040516102fc91906113ad565b60405180910390f35b61031f600480360381019061031a9190611355565b610a90565b60405161032c91906113ad565b60405180910390f35b61034f600480360381019061034a9190611571565b610aad565b60405161035c91906113d5565b60405180910390f35b61037f600480360381019061037a919061151e565b610b2f565b005b606060048054610390906115dc565b80601f01602080910402602001604051908101604052809291908181526020018280546103bc906115dc565b80156104075780601f106103de57610100808354040283529160200191610407565b820191905f5260205f20905b8154815290600101906020018083116103ea57829003601f168201915b5050505050905090565b5f61042461041d610c25565b8484610c2c565b6001905092915050565b5f600354905090565b5f610443848484610def565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61048a610c25565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610509576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105009061167c565b60405180910390fd5b61051d85610515610c25565b858403610c2c565b60019150509392505050565b5f6012905090565b5f6105ce61053d610c25565b848460025f61054a610c25565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546105c991906116c7565b610c2c565b6001905092915050565b6105e0610c25565b73ffffffffffffffffffffffffffffffffffffffff166105fe6108d6565b73ffffffffffffffffffffffffffffffffffffffff1614610654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064b90611744565b60405180910390fd5b5f5b828290508110156106e75760075f84848481811061067757610676611762565b5b905060200201602081019061068c919061151e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff021916905580806106df9061178f565b915050610656565b505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61073a610c25565b73ffffffffffffffffffffffffffffffffffffffff166107586108d6565b73ffffffffffffffffffffffffffffffffffffffff16146107ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a590611744565b60405180910390fd5b6107b75f611067565b565b6107c1610c25565b73ffffffffffffffffffffffffffffffffffffffff166107df6108d6565b73ffffffffffffffffffffffffffffffffffffffff1614610835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082c90611744565b60405180910390fd5b5f5b828290508110156108d157600160075f85858581811061085a57610859611762565b5b905060200201602081019061086f919061151e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806108c99061178f565b915050610837565b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461090c906115dc565b80601f0160208091040260200160405190810160405280929190818152602001828054610938906115dc565b80156109835780601f1061095a57610100808354040283529160200191610983565b820191905f5260205f20905b81548152906001019060200180831161096657829003601f168201915b5050505050905090565b6007602052805f5260405f205f915054906101000a900460ff1681565b5f8060025f6109b7610c25565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6890611846565b60405180910390fd5b610a85610a7c610c25565b85858403610c2c565b600191505092915050565b5f610aa3610a9c610c25565b8484610def565b6001905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610b37610c25565b73ffffffffffffffffffffffffffffffffffffffff16610b556108d6565b73ffffffffffffffffffffffffffffffffffffffff1614610bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba290611744565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c10906118d4565b60405180910390fd5b610c2281611067565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9190611962565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cff906119f0565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610de291906113d5565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5490611a7e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec290611b0c565b60405180910390fd5b610ed6838383611128565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5190611b9a565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610fea91906116c7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161104e91906113d5565b60405180910390a3611061848484611211565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156111c6575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fc90611c02565b60405180910390fd5b80600681905550505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561124d578082015181840152602081019050611232565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61127282611216565b61127c8185611220565b935061128c818560208601611230565b61129581611258565b840191505092915050565b5f6020820190508181035f8301526112b88184611268565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6112f1826112c8565b9050919050565b611301816112e7565b811461130b575f80fd5b50565b5f8135905061131c816112f8565b92915050565b5f819050919050565b61133481611322565b811461133e575f80fd5b50565b5f8135905061134f8161132b565b92915050565b5f806040838503121561136b5761136a6112c0565b5b5f6113788582860161130e565b925050602061138985828601611341565b9150509250929050565b5f8115159050919050565b6113a781611393565b82525050565b5f6020820190506113c05f83018461139e565b92915050565b6113cf81611322565b82525050565b5f6020820190506113e85f8301846113c6565b92915050565b5f805f60608486031215611405576114046112c0565b5b5f6114128682870161130e565b93505060206114238682870161130e565b925050604061143486828701611341565b9150509250925092565b5f60ff82169050919050565b6114538161143e565b82525050565b5f60208201905061146c5f83018461144a565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261149357611492611472565b5b8235905067ffffffffffffffff8111156114b0576114af611476565b5b6020830191508360208202830111156114cc576114cb61147a565b5b9250929050565b5f80602083850312156114e9576114e86112c0565b5b5f83013567ffffffffffffffff811115611506576115056112c4565b5b6115128582860161147e565b92509250509250929050565b5f60208284031215611533576115326112c0565b5b5f6115408482850161130e565b91505092915050565b611552816112e7565b82525050565b5f60208201905061156b5f830184611549565b92915050565b5f8060408385031215611587576115866112c0565b5b5f6115948582860161130e565b92505060206115a58582860161130e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806115f357607f821691505b602082108103611606576116056115af565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f611666602883611220565b91506116718261160c565b604082019050919050565b5f6020820190508181035f8301526116938161165a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6116d182611322565b91506116dc83611322565b92508282019050808211156116f4576116f361169a565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61172e602083611220565b9150611739826116fa565b602082019050919050565b5f6020820190508181035f83015261175b81611722565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61179982611322565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036117cb576117ca61169a565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f611830602583611220565b915061183b826117d6565b604082019050919050565b5f6020820190508181035f83015261185d81611824565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6118be602683611220565b91506118c982611864565b604082019050919050565b5f6020820190508181035f8301526118eb816118b2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61194c602483611220565b9150611957826118f2565b604082019050919050565b5f6020820190508181035f83015261197981611940565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6119da602283611220565b91506119e582611980565b604082019050919050565b5f6020820190508181035f830152611a07816119ce565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611a68602583611220565b9150611a7382611a0e565b604082019050919050565b5f6020820190508181035f830152611a9581611a5c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f611af6602383611220565b9150611b0182611a9c565b604082019050919050565b5f6020820190508181035f830152611b2381611aea565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f611b84602683611220565b9150611b8f82611b2a565b604082019050919050565b5f6020820190508181035f830152611bb181611b78565b9050919050565b7f57686974656c69737400000000000000000000000000000000000000000000005f82015250565b5f611bec600983611220565b9150611bf782611bb8565b602082019050919050565b5f6020820190508181035f830152611c1981611be0565b905091905056fea2646970667358221220e0128e9edf534073ccb4ea52a2d864ca856cb70250870fe6b17d194d5907f3e564736f6c63430008140033

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610109575f3560e01c8063715018a6116100a05780639b19251a1161006f5780639b19251a146102a5578063a457c2d7146102d5578063a9059cbb14610305578063dd62ed3e14610335578063f2fde38b1461036557610109565b8063715018a6146102435780637f6497831461024d5780638da5cb5b1461026957806395d89b411461028757610109565b8063313ce567116100dc578063313ce567146101a957806339509351146101c7578063548db174146101f757806370a082311461021357610109565b806306fdde031461010d578063095ea7b31461012b57806318160ddd1461015b57806323b872dd14610179575b5f80fd5b610115610381565b60405161012291906112a0565b60405180910390f35b61014560048036038101906101409190611355565b610411565b60405161015291906113ad565b60405180910390f35b61016361042e565b60405161017091906113d5565b60405180910390f35b610193600480360381019061018e91906113ee565b610437565b6040516101a091906113ad565b60405180910390f35b6101b1610529565b6040516101be9190611459565b60405180910390f35b6101e160048036038101906101dc9190611355565b610531565b6040516101ee91906113ad565b60405180910390f35b610211600480360381019061020c91906114d3565b6105d8565b005b61022d6004803603810190610228919061151e565b6106ec565b60405161023a91906113d5565b60405180910390f35b61024b610732565b005b610267600480360381019061026291906114d3565b6107b9565b005b6102716108d6565b60405161027e9190611558565b60405180910390f35b61028f6108fd565b60405161029c91906112a0565b60405180910390f35b6102bf60048036038101906102ba919061151e565b61098d565b6040516102cc91906113ad565b60405180910390f35b6102ef60048036038101906102ea9190611355565b6109aa565b6040516102fc91906113ad565b60405180910390f35b61031f600480360381019061031a9190611355565b610a90565b60405161032c91906113ad565b60405180910390f35b61034f600480360381019061034a9190611571565b610aad565b60405161035c91906113d5565b60405180910390f35b61037f600480360381019061037a919061151e565b610b2f565b005b606060048054610390906115dc565b80601f01602080910402602001604051908101604052809291908181526020018280546103bc906115dc565b80156104075780601f106103de57610100808354040283529160200191610407565b820191905f5260205f20905b8154815290600101906020018083116103ea57829003601f168201915b5050505050905090565b5f61042461041d610c25565b8484610c2c565b6001905092915050565b5f600354905090565b5f610443848484610def565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61048a610c25565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610509576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105009061167c565b60405180910390fd5b61051d85610515610c25565b858403610c2c565b60019150509392505050565b5f6012905090565b5f6105ce61053d610c25565b848460025f61054a610c25565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546105c991906116c7565b610c2c565b6001905092915050565b6105e0610c25565b73ffffffffffffffffffffffffffffffffffffffff166105fe6108d6565b73ffffffffffffffffffffffffffffffffffffffff1614610654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064b90611744565b60405180910390fd5b5f5b828290508110156106e75760075f84848481811061067757610676611762565b5b905060200201602081019061068c919061151e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff021916905580806106df9061178f565b915050610656565b505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61073a610c25565b73ffffffffffffffffffffffffffffffffffffffff166107586108d6565b73ffffffffffffffffffffffffffffffffffffffff16146107ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a590611744565b60405180910390fd5b6107b75f611067565b565b6107c1610c25565b73ffffffffffffffffffffffffffffffffffffffff166107df6108d6565b73ffffffffffffffffffffffffffffffffffffffff1614610835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082c90611744565b60405180910390fd5b5f5b828290508110156108d157600160075f85858581811061085a57610859611762565b5b905060200201602081019061086f919061151e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806108c99061178f565b915050610837565b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461090c906115dc565b80601f0160208091040260200160405190810160405280929190818152602001828054610938906115dc565b80156109835780601f1061095a57610100808354040283529160200191610983565b820191905f5260205f20905b81548152906001019060200180831161096657829003601f168201915b5050505050905090565b6007602052805f5260405f205f915054906101000a900460ff1681565b5f8060025f6109b7610c25565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6890611846565b60405180910390fd5b610a85610a7c610c25565b85858403610c2c565b600191505092915050565b5f610aa3610a9c610c25565b8484610def565b6001905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610b37610c25565b73ffffffffffffffffffffffffffffffffffffffff16610b556108d6565b73ffffffffffffffffffffffffffffffffffffffff1614610bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba290611744565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c10906118d4565b60405180910390fd5b610c2281611067565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9190611962565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cff906119f0565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610de291906113d5565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5490611a7e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec290611b0c565b60405180910390fd5b610ed6838383611128565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5190611b9a565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610fea91906116c7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161104e91906113d5565b60405180910390a3611061848484611211565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156111c6575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fc90611c02565b60405180910390fd5b80600681905550505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561124d578082015181840152602081019050611232565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61127282611216565b61127c8185611220565b935061128c818560208601611230565b61129581611258565b840191505092915050565b5f6020820190508181035f8301526112b88184611268565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6112f1826112c8565b9050919050565b611301816112e7565b811461130b575f80fd5b50565b5f8135905061131c816112f8565b92915050565b5f819050919050565b61133481611322565b811461133e575f80fd5b50565b5f8135905061134f8161132b565b92915050565b5f806040838503121561136b5761136a6112c0565b5b5f6113788582860161130e565b925050602061138985828601611341565b9150509250929050565b5f8115159050919050565b6113a781611393565b82525050565b5f6020820190506113c05f83018461139e565b92915050565b6113cf81611322565b82525050565b5f6020820190506113e85f8301846113c6565b92915050565b5f805f60608486031215611405576114046112c0565b5b5f6114128682870161130e565b93505060206114238682870161130e565b925050604061143486828701611341565b9150509250925092565b5f60ff82169050919050565b6114538161143e565b82525050565b5f60208201905061146c5f83018461144a565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261149357611492611472565b5b8235905067ffffffffffffffff8111156114b0576114af611476565b5b6020830191508360208202830111156114cc576114cb61147a565b5b9250929050565b5f80602083850312156114e9576114e86112c0565b5b5f83013567ffffffffffffffff811115611506576115056112c4565b5b6115128582860161147e565b92509250509250929050565b5f60208284031215611533576115326112c0565b5b5f6115408482850161130e565b91505092915050565b611552816112e7565b82525050565b5f60208201905061156b5f830184611549565b92915050565b5f8060408385031215611587576115866112c0565b5b5f6115948582860161130e565b92505060206115a58582860161130e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806115f357607f821691505b602082108103611606576116056115af565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f611666602883611220565b91506116718261160c565b604082019050919050565b5f6020820190508181035f8301526116938161165a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6116d182611322565b91506116dc83611322565b92508282019050808211156116f4576116f361169a565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61172e602083611220565b9150611739826116fa565b602082019050919050565b5f6020820190508181035f83015261175b81611722565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61179982611322565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036117cb576117ca61169a565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f611830602583611220565b915061183b826117d6565b604082019050919050565b5f6020820190508181035f83015261185d81611824565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6118be602683611220565b91506118c982611864565b604082019050919050565b5f6020820190508181035f8301526118eb816118b2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61194c602483611220565b9150611957826118f2565b604082019050919050565b5f6020820190508181035f83015261197981611940565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6119da602283611220565b91506119e582611980565b604082019050919050565b5f6020820190508181035f830152611a07816119ce565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611a68602583611220565b9150611a7382611a0e565b604082019050919050565b5f6020820190508181035f830152611a9581611a5c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f611af6602383611220565b9150611b0182611a9c565b604082019050919050565b5f6020820190508181035f830152611b2381611aea565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f611b84602683611220565b9150611b8f82611b2a565b604082019050919050565b5f6020820190508181035f830152611bb181611b78565b9050919050565b7f57686974656c69737400000000000000000000000000000000000000000000005f82015250565b5f611bec600983611220565b9150611bf782611bb8565b602082019050919050565b5f6020820190508181035f830152611c1981611be0565b905091905056fea2646970667358221220e0128e9edf534073ccb4ea52a2d864ca856cb70250870fe6b17d194d5907f3e564736f6c63430008140033

Deployed Bytecode Sourcemap

18653:2207:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8627:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10794:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9747:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11445:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9589:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12346:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19513:231;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9918:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2028:103;;;:::i;:::-;;19287:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1377:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8846:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18922:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13064:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10258:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10496:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2286:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8627:100;8681:13;8714:5;8707:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8627:100;:::o;10794:169::-;10877:4;10894:39;10903:12;:10;:12::i;:::-;10917:7;10926:6;10894:8;:39::i;:::-;10951:4;10944:11;;10794:169;;;;:::o;9747:108::-;9808:7;9835:12;;9828:19;;9747:108;:::o;11445:492::-;11585:4;11602:36;11612:6;11620:9;11631:6;11602:9;:36::i;:::-;11651:24;11678:11;:19;11690:6;11678:19;;;;;;;;;;;;;;;:33;11698:12;:10;:12::i;:::-;11678:33;;;;;;;;;;;;;;;;11651:60;;11750:6;11730:16;:26;;11722:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11837:57;11846:6;11854:12;:10;:12::i;:::-;11887:6;11868:16;:25;11837:8;:57::i;:::-;11925:4;11918:11;;;11445:492;;;;;:::o;9589:93::-;9647:5;9672:2;9665:9;;9589:93;:::o;12346:215::-;12434:4;12451:80;12460:12;:10;:12::i;:::-;12474:7;12520:10;12483:11;:25;12495:12;:10;:12::i;:::-;12483:25;;;;;;;;;;;;;;;:34;12509:7;12483:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12451:8;:80::i;:::-;12549:4;12542:11;;12346:215;;;;:::o;19513:231::-;1608:12;:10;:12::i;:::-;1597:23;;:7;:5;:7::i;:::-;:23;;;1589:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19625:6:::1;19620:117;19641:17;;:24;;19637:1;:28;19620:117;;;19694:9;:31;19704:17;;19722:1;19704:20;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19694:31;;;;;;;;;;;;;;;;19687:38;;;;;;;;;;;19667:3;;;;;:::i;:::-;;;;19620:117;;;;19513:231:::0;;:::o;9918:127::-;9992:7;10019:9;:18;10029:7;10019:18;;;;;;;;;;;;;;;;10012:25;;9918:127;;;:::o;2028:103::-;1608:12;:10;:12::i;:::-;1597:23;;:7;:5;:7::i;:::-;:23;;;1589:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2093:30:::1;2120:1;2093:18;:30::i;:::-;2028:103::o:0;19287:218::-;1608:12;:10;:12::i;:::-;1597:23;;:7;:5;:7::i;:::-;:23;;;1589:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19392:6:::1;19387:111;19408:14;;:21;;19404:1;:25;19387:111;;;19482:4;19451:9;:28;19461:14;;19476:1;19461:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19451:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;19431:3;;;;;:::i;:::-;;;;19387:111;;;;19287:218:::0;;:::o;1377:87::-;1423:7;1450:6;;;;;;;;;;;1443:13;;1377:87;:::o;8846:104::-;8902:13;8935:7;8928:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8846:104;:::o;18922:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;13064:413::-;13157:4;13174:24;13201:11;:25;13213:12;:10;:12::i;:::-;13201:25;;;;;;;;;;;;;;;:34;13227:7;13201:34;;;;;;;;;;;;;;;;13174:61;;13274:15;13254:16;:35;;13246:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13367:67;13376:12;:10;:12::i;:::-;13390:7;13418:15;13399:16;:34;13367:8;:67::i;:::-;13465:4;13458:11;;;13064:413;;;;:::o;10258:175::-;10344:4;10361:42;10371:12;:10;:12::i;:::-;10385:9;10396:6;10361:9;:42::i;:::-;10421:4;10414:11;;10258:175;;;;:::o;10496:151::-;10585:7;10612:11;:18;10624:5;10612:18;;;;;;;;;;;;;;;:27;10631:7;10612:27;;;;;;;;;;;;;;;;10605:34;;10496:151;;;;:::o;2286:201::-;1608:12;:10;:12::i;:::-;1597:23;;:7;:5;:7::i;:::-;:23;;;1589:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2395:1:::1;2375:22;;:8;:22;;::::0;2367:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2451:28;2470:8;2451:18;:28::i;:::-;2286:201:::0;:::o;217:98::-;270:7;297:10;290:17;;217:98;:::o;16748:380::-;16901:1;16884:19;;:5;:19;;;16876:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16982:1;16963:21;;:7;:21;;;16955:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17066:6;17036:11;:18;17048:5;17036:18;;;;;;;;;;;;;;;:27;17055:7;17036:27;;;;;;;;;;;;;;;:36;;;;17104:7;17088:32;;17097:5;17088:32;;;17113:6;17088:32;;;;;;:::i;:::-;;;;;;;;16748:380;;;:::o;13967:733::-;14125:1;14107:20;;:6;:20;;;14099:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14209:1;14188:23;;:9;:23;;;14180:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14264:47;14285:6;14293:9;14304:6;14264:20;:47::i;:::-;14324:21;14348:9;:17;14358:6;14348:17;;;;;;;;;;;;;;;;14324:41;;14401:6;14384:13;:23;;14376:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14522:6;14506:13;:22;14486:9;:17;14496:6;14486:17;;;;;;;;;;;;;;;:42;;;;14574:6;14550:9;:20;14560:9;14550:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;14615:9;14598:35;;14607:6;14598:35;;;14626:6;14598:35;;;;;;:::i;:::-;;;;;;;;14646:46;14666:6;14674:9;14685:6;14646:19;:46::i;:::-;14088:612;13967:733;;;:::o;2647:191::-;2721:16;2740:6;;;;;;;;;;;2721:25;;2766:8;2757:6;;:17;;;;;;;;;;;;;;;;;;2821:8;2790:40;;2811:8;2790:40;;;;;;;;;;;;2710:128;2647:191;:::o;20079:680::-;20305:9;:13;20315:2;20305:13;;;;;;;;;;;;;;;;;;;;;;;;;20304:14;:34;;;;;20323:9;:15;20333:4;20323:15;;;;;;;;;;;;;;;;;;;;;;;;;20322:16;20304:34;20296:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;20370:6;20363:4;:13;;;;20079:680;;;:::o;18457:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:117::-;4962:1;4959;4952:12;4976:117;5085:1;5082;5075:12;5099:117;5208:1;5205;5198:12;5239:568;5312:8;5322:6;5372:3;5365:4;5357:6;5353:17;5349:27;5339:122;;5380:79;;:::i;:::-;5339:122;5493:6;5480:20;5470:30;;5523:18;5515:6;5512:30;5509:117;;;5545:79;;:::i;:::-;5509:117;5659:4;5651:6;5647:17;5635:29;;5713:3;5705:4;5697:6;5693:17;5683:8;5679:32;5676:41;5673:128;;;5720:79;;:::i;:::-;5673:128;5239:568;;;;;:::o;5813:559::-;5899:6;5907;5956:2;5944:9;5935:7;5931:23;5927:32;5924:119;;;5962:79;;:::i;:::-;5924:119;6110:1;6099:9;6095:17;6082:31;6140:18;6132:6;6129:30;6126:117;;;6162:79;;:::i;:::-;6126:117;6275:80;6347:7;6338:6;6327:9;6323:22;6275:80;:::i;:::-;6257:98;;;;6053:312;5813:559;;;;;:::o;6378:329::-;6437:6;6486:2;6474:9;6465:7;6461:23;6457:32;6454:119;;;6492:79;;:::i;:::-;6454:119;6612:1;6637:53;6682:7;6673:6;6662:9;6658:22;6637:53;:::i;:::-;6627:63;;6583:117;6378:329;;;;:::o;6713:118::-;6800:24;6818:5;6800:24;:::i;:::-;6795:3;6788:37;6713:118;;:::o;6837:222::-;6930:4;6968:2;6957:9;6953:18;6945:26;;6981:71;7049:1;7038:9;7034:17;7025:6;6981:71;:::i;:::-;6837:222;;;;:::o;7065:474::-;7133:6;7141;7190:2;7178:9;7169:7;7165:23;7161:32;7158:119;;;7196:79;;:::i;:::-;7158:119;7316:1;7341:53;7386:7;7377:6;7366:9;7362:22;7341:53;:::i;:::-;7331:63;;7287:117;7443:2;7469:53;7514:7;7505:6;7494:9;7490:22;7469:53;:::i;:::-;7459:63;;7414:118;7065:474;;;;;:::o;7545:180::-;7593:77;7590:1;7583:88;7690:4;7687:1;7680:15;7714:4;7711:1;7704:15;7731:320;7775:6;7812:1;7806:4;7802:12;7792:22;;7859:1;7853:4;7849:12;7880:18;7870:81;;7936:4;7928:6;7924:17;7914:27;;7870:81;7998:2;7990:6;7987:14;7967:18;7964:38;7961:84;;8017:18;;:::i;:::-;7961:84;7782:269;7731:320;;;:::o;8057:227::-;8197:34;8193:1;8185:6;8181:14;8174:58;8266:10;8261:2;8253:6;8249:15;8242:35;8057:227;:::o;8290:366::-;8432:3;8453:67;8517:2;8512:3;8453:67;:::i;:::-;8446:74;;8529:93;8618:3;8529:93;:::i;:::-;8647:2;8642:3;8638:12;8631:19;;8290:366;;;:::o;8662:419::-;8828:4;8866:2;8855:9;8851:18;8843:26;;8915:9;8909:4;8905:20;8901:1;8890:9;8886:17;8879:47;8943:131;9069:4;8943:131;:::i;:::-;8935:139;;8662:419;;;:::o;9087:180::-;9135:77;9132:1;9125:88;9232:4;9229:1;9222:15;9256:4;9253:1;9246:15;9273:191;9313:3;9332:20;9350:1;9332:20;:::i;:::-;9327:25;;9366:20;9384:1;9366:20;:::i;:::-;9361:25;;9409:1;9406;9402:9;9395:16;;9430:3;9427:1;9424:10;9421:36;;;9437:18;;:::i;:::-;9421:36;9273:191;;;;:::o;9470:182::-;9610:34;9606:1;9598:6;9594:14;9587:58;9470:182;:::o;9658:366::-;9800:3;9821:67;9885:2;9880:3;9821:67;:::i;:::-;9814:74;;9897:93;9986:3;9897:93;:::i;:::-;10015:2;10010:3;10006:12;9999:19;;9658:366;;;:::o;10030:419::-;10196:4;10234:2;10223:9;10219:18;10211:26;;10283:9;10277:4;10273:20;10269:1;10258:9;10254:17;10247:47;10311:131;10437:4;10311:131;:::i;:::-;10303:139;;10030:419;;;:::o;10455:180::-;10503:77;10500:1;10493:88;10600:4;10597:1;10590:15;10624:4;10621:1;10614:15;10641:233;10680:3;10703:24;10721:5;10703:24;:::i;:::-;10694:33;;10749:66;10742:5;10739:77;10736:103;;10819:18;;:::i;:::-;10736:103;10866:1;10859:5;10855:13;10848:20;;10641:233;;;:::o;10880:224::-;11020:34;11016:1;11008:6;11004:14;10997:58;11089:7;11084:2;11076:6;11072:15;11065:32;10880:224;:::o;11110:366::-;11252:3;11273:67;11337:2;11332:3;11273:67;:::i;:::-;11266:74;;11349:93;11438:3;11349:93;:::i;:::-;11467:2;11462:3;11458:12;11451:19;;11110:366;;;:::o;11482:419::-;11648:4;11686:2;11675:9;11671:18;11663:26;;11735:9;11729:4;11725:20;11721:1;11710:9;11706:17;11699:47;11763:131;11889:4;11763:131;:::i;:::-;11755:139;;11482:419;;;:::o;11907:225::-;12047:34;12043:1;12035:6;12031:14;12024:58;12116:8;12111:2;12103:6;12099:15;12092:33;11907:225;:::o;12138:366::-;12280:3;12301:67;12365:2;12360:3;12301:67;:::i;:::-;12294:74;;12377:93;12466:3;12377:93;:::i;:::-;12495:2;12490:3;12486:12;12479:19;;12138:366;;;:::o;12510:419::-;12676:4;12714:2;12703:9;12699:18;12691:26;;12763:9;12757:4;12753:20;12749:1;12738:9;12734:17;12727:47;12791:131;12917:4;12791:131;:::i;:::-;12783:139;;12510:419;;;:::o;12935:223::-;13075:34;13071:1;13063:6;13059:14;13052:58;13144:6;13139:2;13131:6;13127:15;13120:31;12935:223;:::o;13164:366::-;13306:3;13327:67;13391:2;13386:3;13327:67;:::i;:::-;13320:74;;13403:93;13492:3;13403:93;:::i;:::-;13521:2;13516:3;13512:12;13505:19;;13164:366;;;:::o;13536:419::-;13702:4;13740:2;13729:9;13725:18;13717:26;;13789:9;13783:4;13779:20;13775:1;13764:9;13760:17;13753:47;13817:131;13943:4;13817:131;:::i;:::-;13809:139;;13536:419;;;:::o;13961:221::-;14101:34;14097:1;14089:6;14085:14;14078:58;14170:4;14165:2;14157:6;14153:15;14146:29;13961:221;:::o;14188:366::-;14330:3;14351:67;14415:2;14410:3;14351:67;:::i;:::-;14344:74;;14427:93;14516:3;14427:93;:::i;:::-;14545:2;14540:3;14536:12;14529:19;;14188:366;;;:::o;14560:419::-;14726:4;14764:2;14753:9;14749:18;14741:26;;14813:9;14807:4;14803:20;14799:1;14788:9;14784:17;14777:47;14841:131;14967:4;14841:131;:::i;:::-;14833:139;;14560:419;;;:::o;14985:224::-;15125:34;15121:1;15113:6;15109:14;15102:58;15194:7;15189:2;15181:6;15177:15;15170:32;14985:224;:::o;15215:366::-;15357:3;15378:67;15442:2;15437:3;15378:67;:::i;:::-;15371:74;;15454:93;15543:3;15454:93;:::i;:::-;15572:2;15567:3;15563:12;15556:19;;15215:366;;;:::o;15587:419::-;15753:4;15791:2;15780:9;15776:18;15768:26;;15840:9;15834:4;15830:20;15826:1;15815:9;15811:17;15804:47;15868:131;15994:4;15868:131;:::i;:::-;15860:139;;15587:419;;;:::o;16012:222::-;16152:34;16148:1;16140:6;16136:14;16129:58;16221:5;16216:2;16208:6;16204:15;16197:30;16012:222;:::o;16240:366::-;16382:3;16403:67;16467:2;16462:3;16403:67;:::i;:::-;16396:74;;16479:93;16568:3;16479:93;:::i;:::-;16597:2;16592:3;16588:12;16581:19;;16240:366;;;:::o;16612:419::-;16778:4;16816:2;16805:9;16801:18;16793:26;;16865:9;16859:4;16855:20;16851:1;16840:9;16836:17;16829:47;16893:131;17019:4;16893:131;:::i;:::-;16885:139;;16612:419;;;:::o;17037:225::-;17177:34;17173:1;17165:6;17161:14;17154:58;17246:8;17241:2;17233:6;17229:15;17222:33;17037:225;:::o;17268:366::-;17410:3;17431:67;17495:2;17490:3;17431:67;:::i;:::-;17424:74;;17507:93;17596:3;17507:93;:::i;:::-;17625:2;17620:3;17616:12;17609:19;;17268:366;;;:::o;17640:419::-;17806:4;17844:2;17833:9;17829:18;17821:26;;17893:9;17887:4;17883:20;17879:1;17868:9;17864:17;17857:47;17921:131;18047:4;17921:131;:::i;:::-;17913:139;;17640:419;;;:::o;18065:159::-;18205:11;18201:1;18193:6;18189:14;18182:35;18065:159;:::o;18230:365::-;18372:3;18393:66;18457:1;18452:3;18393:66;:::i;:::-;18386:73;;18468:93;18557:3;18468:93;:::i;:::-;18586:2;18581:3;18577:12;18570:19;;18230:365;;;:::o;18601:419::-;18767:4;18805:2;18794:9;18790:18;18782:26;;18854:9;18848:4;18844:20;18840:1;18829:9;18825:17;18818:47;18882:131;19008:4;18882:131;:::i;:::-;18874:139;;18601:419;;;:::o

Swarm Source

ipfs://e0128e9edf534073ccb4ea52a2d864ca856cb70250870fe6b17d194d5907f3e5
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.