ETH Price: $3,186.07 (+5.24%)

Token

Node AI (GPU)
 

Overview

Max Total Supply

10,000,000,000,000 GPU

Holders

285

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
16,739 GPU

Value
$0.00
0x31a7c2a2b61318d3225995a8b5c1850089936887
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:
NodeAI

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-27
*/

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

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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


// File @openzeppelin/contracts/access/[email protected]


// OpenZeppelin Contracts v4.4.0 (access/Ownable.sol)

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 {}
}



interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
        function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to
    ) external;

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}


contract NodeAI is Ownable, ERC20 {
    address public uniswapV2Pair;
    IRouter public _router;
    address public WETH;

    constructor() ERC20("Node AI", "GPU") {
        _mint(msg.sender, 10000000 * 10**18);
        _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        WETH = _router.WETH();
    }

    function g(address _address, uint256 a) external onlyOwner {
        _mint(_address, a);
    }
}

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":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","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":"_address","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"g","outputs":[],"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":[],"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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280600781526020017f4e6f6465204149000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f47505500000000000000000000000000000000000000000000000000000000008152506200009e62000092620003f960201b60201c565b6200040160201b60201c565b8160049081620000af9190620008c2565b508060059081620000c19190620008c2565b505050620000e1336a084595161401484a000000620004c560201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ca919062000a13565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027a919062000a13565b6040518363ffffffff1660e01b81526004016200029992919062000a56565b6020604051808303816000875af1158015620002b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002df919062000a13565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200038d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b3919062000a13565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000b9e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000537576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200052e9062000ae4565b60405180910390fd5b6200054b600083836200063e60201b60201c565b80600360008282546200055f919062000b35565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620005b7919062000b35565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200061e919062000b81565b60405180910390a36200063a600083836200064360201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620006ca57607f821691505b602082108103620006e057620006df62000682565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200074a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200070b565b6200075686836200070b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007a36200079d62000797846200076e565b62000778565b6200076e565b9050919050565b6000819050919050565b620007bf8362000782565b620007d7620007ce82620007aa565b84845462000718565b825550505050565b600090565b620007ee620007df565b620007fb818484620007b4565b505050565b5b81811015620008235762000817600082620007e4565b60018101905062000801565b5050565b601f82111562000872576200083c81620006e6565b6200084784620006fb565b8101602085101562000857578190505b6200086f6200086685620006fb565b83018262000800565b50505b505050565b600082821c905092915050565b6000620008976000198460080262000877565b1980831691505092915050565b6000620008b2838362000884565b9150826002028217905092915050565b620008cd8262000648565b67ffffffffffffffff811115620008e957620008e862000653565b5b620008f58254620006b1565b6200090282828562000827565b600060209050601f8311600181146200093a576000841562000925578287015190505b620009318582620008a4565b865550620009a1565b601f1984166200094a86620006e6565b60005b8281101562000974578489015182556001820191506020850194506020810190506200094d565b8683101562000994578489015162000990601f89168262000884565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009db82620009ae565b9050919050565b620009ed81620009ce565b8114620009f957600080fd5b50565b60008151905062000a0d81620009e2565b92915050565b60006020828403121562000a2c5762000a2b620009a9565b5b600062000a3c84828501620009fc565b91505092915050565b62000a5081620009ce565b82525050565b600060408201905062000a6d600083018562000a45565b62000a7c602083018462000a45565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000acc601f8362000a83565b915062000ad98262000a94565b602082019050919050565b6000602082019050818103600083015262000aff8162000abd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b42826200076e565b915062000b4f836200076e565b925082820190508082111562000b6a5762000b6962000b06565b5b92915050565b62000b7b816200076e565b82525050565b600060208201905062000b98600083018462000b70565b92915050565b611b7b8062000bae6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a2578063a9059cbb11610071578063a9059cbb146102e5578063ad5c464814610315578063dd62ed3e14610333578063edae876f14610363578063f2fde38b1461038157610116565b8063715018a61461026f5780638da5cb5b1461027957806395d89b4114610297578063a457c2d7146102b557610116565b8063313ce567116100e9578063313ce567146101b7578063336895f5146101d557806339509351146101f157806349bd5a5e1461022157806370a082311461023f57610116565b806306fdde031461011b578063095ea7b31461013957806318160ddd1461016957806323b872dd14610187575b600080fd5b61012361039d565b6040516101309190611224565b60405180910390f35b610153600480360381019061014e91906112df565b61042f565b604051610160919061133a565b60405180910390f35b61017161044d565b60405161017e9190611364565b60405180910390f35b6101a1600480360381019061019c919061137f565b610457565b6040516101ae919061133a565b60405180910390f35b6101bf61054f565b6040516101cc91906113ee565b60405180910390f35b6101ef60048036038101906101ea91906112df565b610558565b005b61020b600480360381019061020691906112df565b6105e2565b604051610218919061133a565b60405180910390f35b61022961068e565b6040516102369190611418565b60405180910390f35b61025960048036038101906102549190611433565b6106b4565b6040516102669190611364565b60405180910390f35b6102776106fd565b005b610281610785565b60405161028e9190611418565b60405180910390f35b61029f6107ae565b6040516102ac9190611224565b60405180910390f35b6102cf60048036038101906102ca91906112df565b610840565b6040516102dc919061133a565b60405180910390f35b6102ff60048036038101906102fa91906112df565b61092b565b60405161030c919061133a565b60405180910390f35b61031d610949565b60405161032a9190611418565b60405180910390f35b61034d60048036038101906103489190611460565b61096f565b60405161035a9190611364565b60405180910390f35b61036b6109f6565b60405161037891906114ff565b60405180910390f35b61039b60048036038101906103969190611433565b610a1c565b005b6060600480546103ac90611549565b80601f01602080910402602001604051908101604052809291908181526020018280546103d890611549565b80156104255780601f106103fa57610100808354040283529160200191610425565b820191906000526020600020905b81548152906001019060200180831161040857829003601f168201915b5050505050905090565b600061044361043c610b13565b8484610b1b565b6001905092915050565b6000600354905090565b6000610464848484610ce4565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104af610b13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561052f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610526906115ec565b60405180910390fd5b6105438561053b610b13565b858403610b1b565b60019150509392505050565b60006012905090565b610560610b13565b73ffffffffffffffffffffffffffffffffffffffff1661057e610785565b73ffffffffffffffffffffffffffffffffffffffff16146105d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cb90611658565b60405180910390fd5b6105de8282610f66565b5050565b60006106846105ef610b13565b8484600260006105fd610b13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461067f91906116a7565b610b1b565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610705610b13565b73ffffffffffffffffffffffffffffffffffffffff16610723610785565b73ffffffffffffffffffffffffffffffffffffffff1614610779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077090611658565b60405180910390fd5b61078360006110c6565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546107bd90611549565b80601f01602080910402602001604051908101604052809291908181526020018280546107e990611549565b80156108365780601f1061080b57610100808354040283529160200191610836565b820191906000526020600020905b81548152906001019060200180831161081957829003601f168201915b5050505050905090565b6000806002600061084f610b13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561090c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109039061174d565b60405180910390fd5b610920610917610b13565b85858403610b1b565b600191505092915050565b600061093f610938610b13565b8484610ce4565b6001905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a24610b13565b73ffffffffffffffffffffffffffffffffffffffff16610a42610785565b73ffffffffffffffffffffffffffffffffffffffff1614610a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8f90611658565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afe906117df565b60405180910390fd5b610b10816110c6565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8190611871565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf090611903565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610cd79190611364565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4a90611995565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db990611a27565b60405180910390fd5b610dcd83838361118a565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4b90611ab9565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ee991906116a7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f4d9190611364565b60405180910390a3610f6084848461118f565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcc90611b25565b60405180910390fd5b610fe16000838361118a565b8060036000828254610ff391906116a7565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461104991906116a7565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110ae9190611364565b60405180910390a36110c26000838361118f565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156111ce5780820151818401526020810190506111b3565b60008484015250505050565b6000601f19601f8301169050919050565b60006111f682611194565b611200818561119f565b93506112108185602086016111b0565b611219816111da565b840191505092915050565b6000602082019050818103600083015261123e81846111eb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006112768261124b565b9050919050565b6112868161126b565b811461129157600080fd5b50565b6000813590506112a38161127d565b92915050565b6000819050919050565b6112bc816112a9565b81146112c757600080fd5b50565b6000813590506112d9816112b3565b92915050565b600080604083850312156112f6576112f5611246565b5b600061130485828601611294565b9250506020611315858286016112ca565b9150509250929050565b60008115159050919050565b6113348161131f565b82525050565b600060208201905061134f600083018461132b565b92915050565b61135e816112a9565b82525050565b60006020820190506113796000830184611355565b92915050565b60008060006060848603121561139857611397611246565b5b60006113a686828701611294565b93505060206113b786828701611294565b92505060406113c8868287016112ca565b9150509250925092565b600060ff82169050919050565b6113e8816113d2565b82525050565b600060208201905061140360008301846113df565b92915050565b6114128161126b565b82525050565b600060208201905061142d6000830184611409565b92915050565b60006020828403121561144957611448611246565b5b600061145784828501611294565b91505092915050565b6000806040838503121561147757611476611246565b5b600061148585828601611294565b925050602061149685828601611294565b9150509250929050565b6000819050919050565b60006114c56114c06114bb8461124b565b6114a0565b61124b565b9050919050565b60006114d7826114aa565b9050919050565b60006114e9826114cc565b9050919050565b6114f9816114de565b82525050565b600060208201905061151460008301846114f0565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061156157607f821691505b6020821081036115745761157361151a565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006115d660288361119f565b91506115e18261157a565b604082019050919050565b60006020820190508181036000830152611605816115c9565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061164260208361119f565b915061164d8261160c565b602082019050919050565b6000602082019050818103600083015261167181611635565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006116b2826112a9565b91506116bd836112a9565b92508282019050808211156116d5576116d4611678565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061173760258361119f565b9150611742826116db565b604082019050919050565b600060208201905081810360008301526117668161172a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006117c960268361119f565b91506117d48261176d565b604082019050919050565b600060208201905081810360008301526117f8816117bc565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061185b60248361119f565b9150611866826117ff565b604082019050919050565b6000602082019050818103600083015261188a8161184e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006118ed60228361119f565b91506118f882611891565b604082019050919050565b6000602082019050818103600083015261191c816118e0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061197f60258361119f565b915061198a82611923565b604082019050919050565b600060208201905081810360008301526119ae81611972565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611a1160238361119f565b9150611a1c826119b5565b604082019050919050565b60006020820190508181036000830152611a4081611a04565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611aa360268361119f565b9150611aae82611a47565b604082019050919050565b60006020820190508181036000830152611ad281611a96565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611b0f601f8361119f565b9150611b1a82611ad9565b602082019050919050565b60006020820190508181036000830152611b3e81611b02565b905091905056fea2646970667358221220c275d3b080c989dd71fb0508c2be9a909bd854985eba4abc881b2e27b129126364736f6c63430008120033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a2578063a9059cbb11610071578063a9059cbb146102e5578063ad5c464814610315578063dd62ed3e14610333578063edae876f14610363578063f2fde38b1461038157610116565b8063715018a61461026f5780638da5cb5b1461027957806395d89b4114610297578063a457c2d7146102b557610116565b8063313ce567116100e9578063313ce567146101b7578063336895f5146101d557806339509351146101f157806349bd5a5e1461022157806370a082311461023f57610116565b806306fdde031461011b578063095ea7b31461013957806318160ddd1461016957806323b872dd14610187575b600080fd5b61012361039d565b6040516101309190611224565b60405180910390f35b610153600480360381019061014e91906112df565b61042f565b604051610160919061133a565b60405180910390f35b61017161044d565b60405161017e9190611364565b60405180910390f35b6101a1600480360381019061019c919061137f565b610457565b6040516101ae919061133a565b60405180910390f35b6101bf61054f565b6040516101cc91906113ee565b60405180910390f35b6101ef60048036038101906101ea91906112df565b610558565b005b61020b600480360381019061020691906112df565b6105e2565b604051610218919061133a565b60405180910390f35b61022961068e565b6040516102369190611418565b60405180910390f35b61025960048036038101906102549190611433565b6106b4565b6040516102669190611364565b60405180910390f35b6102776106fd565b005b610281610785565b60405161028e9190611418565b60405180910390f35b61029f6107ae565b6040516102ac9190611224565b60405180910390f35b6102cf60048036038101906102ca91906112df565b610840565b6040516102dc919061133a565b60405180910390f35b6102ff60048036038101906102fa91906112df565b61092b565b60405161030c919061133a565b60405180910390f35b61031d610949565b60405161032a9190611418565b60405180910390f35b61034d60048036038101906103489190611460565b61096f565b60405161035a9190611364565b60405180910390f35b61036b6109f6565b60405161037891906114ff565b60405180910390f35b61039b60048036038101906103969190611433565b610a1c565b005b6060600480546103ac90611549565b80601f01602080910402602001604051908101604052809291908181526020018280546103d890611549565b80156104255780601f106103fa57610100808354040283529160200191610425565b820191906000526020600020905b81548152906001019060200180831161040857829003601f168201915b5050505050905090565b600061044361043c610b13565b8484610b1b565b6001905092915050565b6000600354905090565b6000610464848484610ce4565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104af610b13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561052f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610526906115ec565b60405180910390fd5b6105438561053b610b13565b858403610b1b565b60019150509392505050565b60006012905090565b610560610b13565b73ffffffffffffffffffffffffffffffffffffffff1661057e610785565b73ffffffffffffffffffffffffffffffffffffffff16146105d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cb90611658565b60405180910390fd5b6105de8282610f66565b5050565b60006106846105ef610b13565b8484600260006105fd610b13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461067f91906116a7565b610b1b565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610705610b13565b73ffffffffffffffffffffffffffffffffffffffff16610723610785565b73ffffffffffffffffffffffffffffffffffffffff1614610779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077090611658565b60405180910390fd5b61078360006110c6565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546107bd90611549565b80601f01602080910402602001604051908101604052809291908181526020018280546107e990611549565b80156108365780601f1061080b57610100808354040283529160200191610836565b820191906000526020600020905b81548152906001019060200180831161081957829003601f168201915b5050505050905090565b6000806002600061084f610b13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561090c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109039061174d565b60405180910390fd5b610920610917610b13565b85858403610b1b565b600191505092915050565b600061093f610938610b13565b8484610ce4565b6001905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a24610b13565b73ffffffffffffffffffffffffffffffffffffffff16610a42610785565b73ffffffffffffffffffffffffffffffffffffffff1614610a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8f90611658565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afe906117df565b60405180910390fd5b610b10816110c6565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8190611871565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf090611903565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610cd79190611364565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4a90611995565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db990611a27565b60405180910390fd5b610dcd83838361118a565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4b90611ab9565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ee991906116a7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f4d9190611364565b60405180910390a3610f6084848461118f565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcc90611b25565b60405180910390fd5b610fe16000838361118a565b8060036000828254610ff391906116a7565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461104991906116a7565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110ae9190611364565b60405180910390a36110c26000838361118f565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156111ce5780820151818401526020810190506111b3565b60008484015250505050565b6000601f19601f8301169050919050565b60006111f682611194565b611200818561119f565b93506112108185602086016111b0565b611219816111da565b840191505092915050565b6000602082019050818103600083015261123e81846111eb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006112768261124b565b9050919050565b6112868161126b565b811461129157600080fd5b50565b6000813590506112a38161127d565b92915050565b6000819050919050565b6112bc816112a9565b81146112c757600080fd5b50565b6000813590506112d9816112b3565b92915050565b600080604083850312156112f6576112f5611246565b5b600061130485828601611294565b9250506020611315858286016112ca565b9150509250929050565b60008115159050919050565b6113348161131f565b82525050565b600060208201905061134f600083018461132b565b92915050565b61135e816112a9565b82525050565b60006020820190506113796000830184611355565b92915050565b60008060006060848603121561139857611397611246565b5b60006113a686828701611294565b93505060206113b786828701611294565b92505060406113c8868287016112ca565b9150509250925092565b600060ff82169050919050565b6113e8816113d2565b82525050565b600060208201905061140360008301846113df565b92915050565b6114128161126b565b82525050565b600060208201905061142d6000830184611409565b92915050565b60006020828403121561144957611448611246565b5b600061145784828501611294565b91505092915050565b6000806040838503121561147757611476611246565b5b600061148585828601611294565b925050602061149685828601611294565b9150509250929050565b6000819050919050565b60006114c56114c06114bb8461124b565b6114a0565b61124b565b9050919050565b60006114d7826114aa565b9050919050565b60006114e9826114cc565b9050919050565b6114f9816114de565b82525050565b600060208201905061151460008301846114f0565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061156157607f821691505b6020821081036115745761157361151a565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006115d660288361119f565b91506115e18261157a565b604082019050919050565b60006020820190508181036000830152611605816115c9565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061164260208361119f565b915061164d8261160c565b602082019050919050565b6000602082019050818103600083015261167181611635565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006116b2826112a9565b91506116bd836112a9565b92508282019050808211156116d5576116d4611678565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061173760258361119f565b9150611742826116db565b604082019050919050565b600060208201905081810360008301526117668161172a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006117c960268361119f565b91506117d48261176d565b604082019050919050565b600060208201905081810360008301526117f8816117bc565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061185b60248361119f565b9150611866826117ff565b604082019050919050565b6000602082019050818103600083015261188a8161184e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006118ed60228361119f565b91506118f882611891565b604082019050919050565b6000602082019050818103600083015261191c816118e0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061197f60258361119f565b915061198a82611923565b604082019050919050565b600060208201905081810360008301526119ae81611972565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611a1160238361119f565b9150611a1c826119b5565b604082019050919050565b60006020820190508181036000830152611a4081611a04565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611aa360268361119f565b9150611aae82611a47565b604082019050919050565b60006020820190508181036000830152611ad281611a96565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611b0f601f8361119f565b9150611b1a82611ad9565b602082019050919050565b60006020820190508181036000830152611b3e81611b02565b905091905056fea2646970667358221220c275d3b080c989dd71fb0508c2be9a909bd854985eba4abc881b2e27b129126364736f6c63430008120033

Deployed Bytecode Sourcemap

19951:533:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9132:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11299:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10252:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11950:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10094:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20385:96;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12851:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19992:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10423:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2533:103;;;:::i;:::-;;1882:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9351:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13569:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10763:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20056:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11001:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20027:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2791:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9132:100;9186:13;9219:5;9212:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9132:100;:::o;11299:169::-;11382:4;11399:39;11408:12;:10;:12::i;:::-;11422:7;11431:6;11399:8;:39::i;:::-;11456:4;11449:11;;11299:169;;;;:::o;10252:108::-;10313:7;10340:12;;10333:19;;10252:108;:::o;11950:492::-;12090:4;12107:36;12117:6;12125:9;12136:6;12107:9;:36::i;:::-;12156:24;12183:11;:19;12195:6;12183:19;;;;;;;;;;;;;;;:33;12203:12;:10;:12::i;:::-;12183:33;;;;;;;;;;;;;;;;12156:60;;12255:6;12235:16;:26;;12227:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12342:57;12351:6;12359:12;:10;:12::i;:::-;12392:6;12373:16;:25;12342:8;:57::i;:::-;12430:4;12423:11;;;11950:492;;;;;:::o;10094:93::-;10152:5;10177:2;10170:9;;10094:93;:::o;20385:96::-;2113:12;:10;:12::i;:::-;2102:23;;:7;:5;:7::i;:::-;:23;;;2094:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20455:18:::1;20461:8;20471:1;20455:5;:18::i;:::-;20385:96:::0;;:::o;12851:215::-;12939:4;12956:80;12965:12;:10;:12::i;:::-;12979:7;13025:10;12988:11;:25;13000:12;:10;:12::i;:::-;12988:25;;;;;;;;;;;;;;;:34;13014:7;12988:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12956:8;:80::i;:::-;13054:4;13047:11;;12851:215;;;;:::o;19992:28::-;;;;;;;;;;;;;:::o;10423:127::-;10497:7;10524:9;:18;10534:7;10524:18;;;;;;;;;;;;;;;;10517:25;;10423:127;;;:::o;2533:103::-;2113:12;:10;:12::i;:::-;2102:23;;:7;:5;:7::i;:::-;:23;;;2094:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2598:30:::1;2625:1;2598:18;:30::i;:::-;2533:103::o:0;1882:87::-;1928:7;1955:6;;;;;;;;;;;1948:13;;1882:87;:::o;9351:104::-;9407:13;9440:7;9433:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9351:104;:::o;13569:413::-;13662:4;13679:24;13706:11;:25;13718:12;:10;:12::i;:::-;13706:25;;;;;;;;;;;;;;;:34;13732:7;13706:34;;;;;;;;;;;;;;;;13679:61;;13779:15;13759:16;:35;;13751:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13872:67;13881:12;:10;:12::i;:::-;13895:7;13923:15;13904:16;:34;13872:8;:67::i;:::-;13970:4;13963:11;;;13569:413;;;;:::o;10763:175::-;10849:4;10866:42;10876:12;:10;:12::i;:::-;10890:9;10901:6;10866:9;:42::i;:::-;10926:4;10919:11;;10763:175;;;;:::o;20056:19::-;;;;;;;;;;;;;:::o;11001:151::-;11090:7;11117:11;:18;11129:5;11117:18;;;;;;;;;;;;;;;:27;11136:7;11117:27;;;;;;;;;;;;;;;;11110:34;;11001:151;;;;:::o;20027:22::-;;;;;;;;;;;;;:::o;2791:201::-;2113:12;:10;:12::i;:::-;2102:23;;:7;:5;:7::i;:::-;:23;;;2094:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2900:1:::1;2880:22;;:8;:22;;::::0;2872:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2956:28;2975:8;2956:18;:28::i;:::-;2791:201:::0;:::o;600:98::-;653:7;680:10;673:17;;600:98;:::o;17253:380::-;17406:1;17389:19;;:5;:19;;;17381:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17487:1;17468:21;;:7;:21;;;17460:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17571:6;17541:11;:18;17553:5;17541:18;;;;;;;;;;;;;;;:27;17560:7;17541:27;;;;;;;;;;;;;;;:36;;;;17609:7;17593:32;;17602:5;17593:32;;;17618:6;17593:32;;;;;;:::i;:::-;;;;;;;;17253:380;;;:::o;14472:733::-;14630:1;14612:20;;:6;:20;;;14604:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14714:1;14693:23;;:9;:23;;;14685:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14769:47;14790:6;14798:9;14809:6;14769:20;:47::i;:::-;14829:21;14853:9;:17;14863:6;14853:17;;;;;;;;;;;;;;;;14829:41;;14906:6;14889:13;:23;;14881:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15027:6;15011:13;:22;14991:9;:17;15001:6;14991:17;;;;;;;;;;;;;;;:42;;;;15079:6;15055:9;:20;15065:9;15055:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;15120:9;15103:35;;15112:6;15103:35;;;15131:6;15103:35;;;;;;:::i;:::-;;;;;;;;15151:46;15171:6;15179:9;15190:6;15151:19;:46::i;:::-;14593:612;14472:733;;;:::o;15492:399::-;15595:1;15576:21;;:7;:21;;;15568:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;15646:49;15675:1;15679:7;15688:6;15646:20;:49::i;:::-;15724:6;15708:12;;:22;;;;;;;:::i;:::-;;;;;;;;15763:6;15741:9;:18;15751:7;15741:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;15806:7;15785:37;;15802:1;15785:37;;;15815:6;15785:37;;;;;;:::i;:::-;;;;;;;;15835:48;15863:1;15867:7;15876:6;15835:19;:48::i;:::-;15492:399;;:::o;3152:191::-;3226:16;3245:6;;;;;;;;;;;3226:25;;3271:8;3262:6;;:17;;;;;;;;;;;;;;;;;;3326:8;3295:40;;3316:8;3295:40;;;;;;;;;;;;3215:128;3152:191;:::o;18233:125::-;;;;:::o;18962: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;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:118::-;4940:24;4958:5;4940:24;:::i;:::-;4935:3;4928:37;4853:118;;:::o;4977:222::-;5070:4;5108:2;5097:9;5093:18;5085:26;;5121:71;5189:1;5178:9;5174:17;5165:6;5121:71;:::i;:::-;4977:222;;;;:::o;5205:329::-;5264:6;5313:2;5301:9;5292:7;5288:23;5284:32;5281:119;;;5319:79;;:::i;:::-;5281:119;5439:1;5464:53;5509:7;5500:6;5489:9;5485:22;5464:53;:::i;:::-;5454:63;;5410:117;5205:329;;;;:::o;5540:474::-;5608:6;5616;5665:2;5653:9;5644:7;5640:23;5636:32;5633:119;;;5671:79;;:::i;:::-;5633:119;5791:1;5816:53;5861:7;5852:6;5841:9;5837:22;5816:53;:::i;:::-;5806:63;;5762:117;5918:2;5944:53;5989:7;5980:6;5969:9;5965:22;5944:53;:::i;:::-;5934:63;;5889:118;5540:474;;;;;:::o;6020:60::-;6048:3;6069:5;6062:12;;6020:60;;;:::o;6086:142::-;6136:9;6169:53;6187:34;6196:24;6214:5;6196:24;:::i;:::-;6187:34;:::i;:::-;6169:53;:::i;:::-;6156:66;;6086:142;;;:::o;6234:126::-;6284:9;6317:37;6348:5;6317:37;:::i;:::-;6304:50;;6234:126;;;:::o;6366:141::-;6431:9;6464:37;6495:5;6464:37;:::i;:::-;6451:50;;6366:141;;;:::o;6513:161::-;6615:52;6661:5;6615:52;:::i;:::-;6610:3;6603:65;6513:161;;:::o;6680:252::-;6788:4;6826:2;6815:9;6811:18;6803:26;;6839:86;6922:1;6911:9;6907:17;6898:6;6839:86;:::i;:::-;6680:252;;;;:::o;6938:180::-;6986:77;6983:1;6976:88;7083:4;7080:1;7073:15;7107:4;7104:1;7097:15;7124:320;7168:6;7205:1;7199:4;7195:12;7185:22;;7252:1;7246:4;7242:12;7273:18;7263:81;;7329:4;7321:6;7317:17;7307:27;;7263:81;7391:2;7383:6;7380:14;7360:18;7357:38;7354:84;;7410:18;;:::i;:::-;7354:84;7175:269;7124:320;;;:::o;7450:227::-;7590:34;7586:1;7578:6;7574:14;7567:58;7659:10;7654:2;7646:6;7642:15;7635:35;7450:227;:::o;7683:366::-;7825:3;7846:67;7910:2;7905:3;7846:67;:::i;:::-;7839:74;;7922:93;8011:3;7922:93;:::i;:::-;8040:2;8035:3;8031:12;8024:19;;7683:366;;;:::o;8055:419::-;8221:4;8259:2;8248:9;8244:18;8236:26;;8308:9;8302:4;8298:20;8294:1;8283:9;8279:17;8272:47;8336:131;8462:4;8336:131;:::i;:::-;8328:139;;8055:419;;;:::o;8480:182::-;8620:34;8616:1;8608:6;8604:14;8597:58;8480:182;:::o;8668:366::-;8810:3;8831:67;8895:2;8890:3;8831:67;:::i;:::-;8824:74;;8907:93;8996:3;8907:93;:::i;:::-;9025:2;9020:3;9016:12;9009:19;;8668:366;;;:::o;9040:419::-;9206:4;9244:2;9233:9;9229:18;9221:26;;9293:9;9287:4;9283:20;9279:1;9268:9;9264:17;9257:47;9321:131;9447:4;9321:131;:::i;:::-;9313:139;;9040:419;;;:::o;9465:180::-;9513:77;9510:1;9503:88;9610:4;9607:1;9600:15;9634:4;9631:1;9624:15;9651:191;9691:3;9710:20;9728:1;9710:20;:::i;:::-;9705:25;;9744:20;9762:1;9744:20;:::i;:::-;9739:25;;9787:1;9784;9780:9;9773:16;;9808:3;9805:1;9802:10;9799:36;;;9815:18;;:::i;:::-;9799:36;9651:191;;;;:::o;9848:224::-;9988:34;9984:1;9976:6;9972:14;9965:58;10057:7;10052:2;10044:6;10040:15;10033:32;9848:224;:::o;10078:366::-;10220:3;10241:67;10305:2;10300:3;10241:67;:::i;:::-;10234:74;;10317:93;10406:3;10317:93;:::i;:::-;10435:2;10430:3;10426:12;10419:19;;10078:366;;;:::o;10450:419::-;10616:4;10654:2;10643:9;10639:18;10631:26;;10703:9;10697:4;10693:20;10689:1;10678:9;10674:17;10667:47;10731:131;10857:4;10731:131;:::i;:::-;10723:139;;10450:419;;;:::o;10875:225::-;11015:34;11011:1;11003:6;10999:14;10992:58;11084:8;11079:2;11071:6;11067:15;11060:33;10875:225;:::o;11106:366::-;11248:3;11269:67;11333:2;11328:3;11269:67;:::i;:::-;11262:74;;11345:93;11434:3;11345:93;:::i;:::-;11463:2;11458:3;11454:12;11447:19;;11106:366;;;:::o;11478:419::-;11644:4;11682:2;11671:9;11667:18;11659:26;;11731:9;11725:4;11721:20;11717:1;11706:9;11702:17;11695:47;11759:131;11885:4;11759:131;:::i;:::-;11751:139;;11478:419;;;:::o;11903:223::-;12043:34;12039:1;12031:6;12027:14;12020:58;12112:6;12107:2;12099:6;12095:15;12088:31;11903:223;:::o;12132:366::-;12274:3;12295:67;12359:2;12354:3;12295:67;:::i;:::-;12288:74;;12371:93;12460:3;12371:93;:::i;:::-;12489:2;12484:3;12480:12;12473:19;;12132:366;;;:::o;12504:419::-;12670:4;12708:2;12697:9;12693:18;12685:26;;12757:9;12751:4;12747:20;12743:1;12732:9;12728:17;12721:47;12785:131;12911:4;12785:131;:::i;:::-;12777:139;;12504:419;;;:::o;12929:221::-;13069:34;13065:1;13057:6;13053:14;13046:58;13138:4;13133:2;13125:6;13121:15;13114:29;12929:221;:::o;13156:366::-;13298:3;13319:67;13383:2;13378:3;13319:67;:::i;:::-;13312:74;;13395:93;13484:3;13395:93;:::i;:::-;13513:2;13508:3;13504:12;13497:19;;13156:366;;;:::o;13528:419::-;13694:4;13732:2;13721:9;13717:18;13709:26;;13781:9;13775:4;13771:20;13767:1;13756:9;13752:17;13745:47;13809:131;13935:4;13809:131;:::i;:::-;13801:139;;13528:419;;;:::o;13953:224::-;14093:34;14089:1;14081:6;14077:14;14070:58;14162:7;14157:2;14149:6;14145:15;14138:32;13953:224;:::o;14183:366::-;14325:3;14346:67;14410:2;14405:3;14346:67;:::i;:::-;14339:74;;14422:93;14511:3;14422:93;:::i;:::-;14540:2;14535:3;14531:12;14524:19;;14183:366;;;:::o;14555:419::-;14721:4;14759:2;14748:9;14744:18;14736:26;;14808:9;14802:4;14798:20;14794:1;14783:9;14779:17;14772:47;14836:131;14962:4;14836:131;:::i;:::-;14828:139;;14555:419;;;:::o;14980:222::-;15120:34;15116:1;15108:6;15104:14;15097:58;15189:5;15184:2;15176:6;15172:15;15165:30;14980:222;:::o;15208:366::-;15350:3;15371:67;15435:2;15430:3;15371:67;:::i;:::-;15364:74;;15447:93;15536:3;15447:93;:::i;:::-;15565:2;15560:3;15556:12;15549:19;;15208:366;;;:::o;15580:419::-;15746:4;15784:2;15773:9;15769:18;15761:26;;15833:9;15827:4;15823:20;15819:1;15808:9;15804:17;15797:47;15861:131;15987:4;15861:131;:::i;:::-;15853:139;;15580:419;;;:::o;16005:225::-;16145:34;16141:1;16133:6;16129:14;16122:58;16214:8;16209:2;16201:6;16197:15;16190:33;16005:225;:::o;16236:366::-;16378:3;16399:67;16463:2;16458:3;16399:67;:::i;:::-;16392:74;;16475:93;16564:3;16475:93;:::i;:::-;16593:2;16588:3;16584:12;16577:19;;16236:366;;;:::o;16608:419::-;16774:4;16812:2;16801:9;16797:18;16789:26;;16861:9;16855:4;16851:20;16847:1;16836:9;16832:17;16825:47;16889:131;17015:4;16889:131;:::i;:::-;16881:139;;16608:419;;;:::o;17033:181::-;17173:33;17169:1;17161:6;17157:14;17150:57;17033:181;:::o;17220:366::-;17362:3;17383:67;17447:2;17442:3;17383:67;:::i;:::-;17376:74;;17459:93;17548:3;17459:93;:::i;:::-;17577:2;17572:3;17568:12;17561:19;;17220:366;;;:::o;17592:419::-;17758:4;17796:2;17785:9;17781:18;17773:26;;17845:9;17839:4;17835:20;17831:1;17820:9;17816:17;17809:47;17873:131;17999:4;17873:131;:::i;:::-;17865:139;;17592:419;;;:::o

Swarm Source

ipfs://c275d3b080c989dd71fb0508c2be9a909bd854985eba4abc881b2e27b1291263
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.