ETH Price: $3,491.31 (+2.56%)
Gas: 3 Gwei

Token

Voyager Inu (VINU)
 

Overview

Max Total Supply

100,000,000 VINU

Holders

41

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
353,136.794037383649548308 VINU

Value
$0.00
0x8eda684d159ff9af0a46a04cfd63d0e5240aec93
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:
VoyagerInu

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-14
*/

/**
 *Submitted for verification at Etherscan.io on 2022-07-11
*/

// SPDX-License-Identifier: MIT

/*
* https://t.me/VoyagerInuCommunity

// File: @openzeppelin/contracts/utils/math/SafeMath.sol


// OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol)

pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol


// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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);

    /**
     * @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 `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, 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 `from` to `to` 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol


// OpenZeppelin Contracts v4.4.1 (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/utils/Context.sol


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

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/token/ERC20/ERC20.sol


// OpenZeppelin Contracts (last updated v4.7.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:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, 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}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, 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}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, 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) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, 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) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * 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:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

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

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, 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 Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    /**
     * @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: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v4.7.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 Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        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: voyager.sol


pragma solidity ^0.8.4;

contract VoyagerInu is ERC20, Ownable {

    using SafeMath for uint256;

    mapping(address => bool) private pair;
    bool public tradingOpen;
    uint256 public _maxWalletSize = 500000 * 10 ** decimals();
    uint256 private _totalSupply = 100000000 * 10 ** decimals();

    constructor() ERC20("Voyager Inu", "VINU") {

        _mint(msg.sender, 100000000 * 10 ** decimals());
        
    }

    function addPair(address toPair) public onlyOwner {
        require(!pair[toPair], "This pair is already excluded");
        pair[toPair] = true;
    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

    function removeLimits() public onlyOwner{
        _maxWalletSize = _totalSupply;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

       if(from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            //buy 
            
            if(from != owner() && to != owner() && pair[from]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "TOKEN: Amount exceeds maximum wallet size");
                
            }
            
            // transfer
           
            if(from != owner() && to != owner() && !(pair[to]) && !(pair[from])) {
                require(balanceOf(to) + amount <= _maxWalletSize, "TOKEN: Balance exceeds max wallet size!");
            }

       }

       super._transfer(from, to, amount);

    }

}

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":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toPair","type":"address"}],"name":"addPair","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":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","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":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052620000146200017b60201b60201c565b600a620000229190620005c5565b6207a12062000032919062000702565b600855620000456200017b60201b60201c565b600a620000539190620005c5565b6305f5e10062000064919062000702565b6009553480156200007457600080fd5b506040518060400160405280600b81526020017f566f796167657220496e750000000000000000000000000000000000000000008152506040518060400160405280600481526020017f56494e55000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000f9929190620003d5565b50806004908051906020019062000112929190620003d5565b50505062000135620001296200018460201b60201c565b6200018c60201b60201c565b62000175336200014a6200017b60201b60201c565b600a620001589190620005c5565b6305f5e10062000169919062000702565b6200025260201b60201c565b62000844565b60006012905090565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620002c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002bc90620004bd565b60405180910390fd5b620002d960008383620003cb60201b60201c565b8060026000828254620002ed91906200050d565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200034491906200050d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003ab9190620004df565b60405180910390a3620003c760008383620003d060201b60201c565b5050565b505050565b505050565b828054620003e3906200077a565b90600052602060002090601f01602090048101928262000407576000855562000453565b82601f106200042257805160ff191683800117855562000453565b8280016001018555821562000453579182015b828111156200045257825182559160200191906001019062000435565b5b50905062000462919062000466565b5090565b5b808211156200048157600081600090555060010162000467565b5090565b600062000494601f83620004fc565b9150620004a1826200081b565b602082019050919050565b620004b78162000763565b82525050565b60006020820190508181036000830152620004d88162000485565b9050919050565b6000602082019050620004f66000830184620004ac565b92915050565b600082825260208201905092915050565b60006200051a8262000763565b9150620005278362000763565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200055f576200055e620007b0565b5b828201905092915050565b6000808291508390505b6001851115620005bc57808604811115620005945762000593620007b0565b5b6001851615620005a45780820291505b8081029050620005b4856200080e565b945062000574565b94509492505050565b6000620005d28262000763565b9150620005df836200076d565b92506200060e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000616565b905092915050565b600082620006285760019050620006fb565b81620006385760009050620006fb565b81600181146200065157600281146200065c5762000692565b6001915050620006fb565b60ff841115620006715762000670620007b0565b5b8360020a9150848211156200068b576200068a620007b0565b5b50620006fb565b5060208310610133831016604e8410600b8410161715620006cc5782820a905083811115620006c657620006c5620007b0565b5b620006fb565b620006db84848460016200056a565b92509050818404811115620006f557620006f4620007b0565b5b81810290505b9392505050565b60006200070f8262000763565b91506200071c8362000763565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007585762000757620007b0565b5b828202905092915050565b6000819050919050565b600060ff82169050919050565b600060028204905060018216806200079357607f821691505b60208210811415620007aa57620007a9620007df565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61204980620008546000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638f70ccf7116100ad578063c2b7bbb611610071578063c2b7bbb614610335578063dd62ed3e14610351578063ea1644d514610381578063f2fde38b1461039d578063ffb54a99146103b95761012c565b80638f70ccf71461027d5780638f9a55c01461029957806395d89b41146102b7578063a457c2d7146102d5578063a9059cbb146103055761012c565b806339509351116100f457806339509351146101eb57806370a082311461021b578063715018a61461024b578063751039fc146102555780638da5cb5b1461025f5761012c565b806306fdde0314610131578063095ea7b31461014f57806318160ddd1461017f57806323b872dd1461019d578063313ce567146101cd575b600080fd5b6101396103d7565b604051610146919061183b565b60405180910390f35b61016960048036038101906101649190611518565b610469565b6040516101769190611820565b60405180910390f35b61018761048c565b6040516101949190611a1d565b60405180910390f35b6101b760048036038101906101b291906114c9565b610496565b6040516101c49190611820565b60405180910390f35b6101d56104c5565b6040516101e29190611a38565b60405180910390f35b61020560048036038101906102009190611518565b6104ce565b6040516102129190611820565b60405180910390f35b61023560048036038101906102309190611464565b610505565b6040516102429190611a1d565b60405180910390f35b61025361054d565b005b61025d610561565b005b610267610574565b6040516102749190611805565b60405180910390f35b61029760048036038101906102929190611554565b61059e565b005b6102a16105c3565b6040516102ae9190611a1d565b60405180910390f35b6102bf6105c9565b6040516102cc919061183b565b60405180910390f35b6102ef60048036038101906102ea9190611518565b61065b565b6040516102fc9190611820565b60405180910390f35b61031f600480360381019061031a9190611518565b6106d2565b60405161032c9190611820565b60405180910390f35b61034f600480360381019061034a9190611464565b6106f5565b005b61036b6004803603810190610366919061148d565b6107e5565b6040516103789190611a1d565b60405180910390f35b61039b6004803603810190610396919061157d565b61086c565b005b6103b760048036038101906103b29190611464565b61087e565b005b6103c1610902565b6040516103ce9190611820565b60405180910390f35b6060600380546103e690611b4d565b80601f016020809104026020016040519081016040528092919081815260200182805461041290611b4d565b801561045f5780601f106104345761010080835404028352916020019161045f565b820191906000526020600020905b81548152906001019060200180831161044257829003601f168201915b5050505050905090565b600080610474610915565b905061048181858561091d565b600191505092915050565b6000600254905090565b6000806104a1610915565b90506104ae858285610ae8565b6104b9858585610b74565b60019150509392505050565b60006012905090565b6000806104d9610915565b90506104fa8185856104eb85896107e5565b6104f59190611a6f565b61091d565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610555611056565b61055f60006110d4565b565b610569611056565b600954600881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6105a6611056565b80600760006101000a81548160ff02191690831515021790555050565b60085481565b6060600480546105d890611b4d565b80601f016020809104026020016040519081016040528092919081815260200182805461060490611b4d565b80156106515780601f1061062657610100808354040283529160200191610651565b820191906000526020600020905b81548152906001019060200180831161063457829003601f168201915b5050505050905090565b600080610666610915565b9050600061067482866107e5565b9050838110156106b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b0906119fd565b60405180910390fd5b6106c6828686840361091d565b60019250505092915050565b6000806106dd610915565b90506106ea818585610b74565b600191505092915050565b6106fd611056565b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561078a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107819061187d565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610874611056565b8060088190555050565b610886611056565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156108f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ed906118bd565b60405180910390fd5b6108ff816110d4565b50565b600760009054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561098d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610984906119dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156109fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f4906118dd565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610adb9190611a1d565b60405180910390a3505050565b6000610af484846107e5565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b6e5781811015610b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b579061191d565b60405180910390fd5b610b6d848484840361091d565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdb906119bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4b9061185d565b60405180910390fd5b60008111610c97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8e9061199d565b60405180910390fd5b610c9f610574565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610d0d5750610cdd610574565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561104657600760009054906101000a900460ff16610d9c57610d2e610574565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d929061189d565b60405180910390fd5b5b610da4610574565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610e125750610de2610574565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015610e675750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15610ec55760085481610e7984610505565b610e839190611a6f565b1115610ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebb9061195d565b60405180910390fd5b5b610ecd610574565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610f3b5750610f0b610574565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015610f915750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015610fe75750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156110455760085481610ff984610505565b6110039190611a6f565b1115611044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103b906118fd565b60405180910390fd5b5b5b61105183838361119a565b505050565b61105e610915565b73ffffffffffffffffffffffffffffffffffffffff1661107c610574565b73ffffffffffffffffffffffffffffffffffffffff16146110d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c99061197d565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561120a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611201906119bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561127a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112719061185d565b60405180910390fd5b61128583838361141b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561130b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113029061193d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461139e9190611a6f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114029190611a1d565b60405180910390a3611415848484611420565b50505050565b505050565b505050565b60008135905061143481611fce565b92915050565b60008135905061144981611fe5565b92915050565b60008135905061145e81611ffc565b92915050565b60006020828403121561147657600080fd5b600061148484828501611425565b91505092915050565b600080604083850312156114a057600080fd5b60006114ae85828601611425565b92505060206114bf85828601611425565b9150509250929050565b6000806000606084860312156114de57600080fd5b60006114ec86828701611425565b93505060206114fd86828701611425565b925050604061150e8682870161144f565b9150509250925092565b6000806040838503121561152b57600080fd5b600061153985828601611425565b925050602061154a8582860161144f565b9150509250929050565b60006020828403121561156657600080fd5b60006115748482850161143a565b91505092915050565b60006020828403121561158f57600080fd5b600061159d8482850161144f565b91505092915050565b6115af81611ac5565b82525050565b6115be81611ad7565b82525050565b60006115cf82611a53565b6115d98185611a5e565b93506115e9818560208601611b1a565b6115f281611bdd565b840191505092915050565b600061160a602383611a5e565b915061161582611bee565b604082019050919050565b600061162d601d83611a5e565b915061163882611c3d565b602082019050919050565b6000611650603f83611a5e565b915061165b82611c66565b604082019050919050565b6000611673602683611a5e565b915061167e82611cb5565b604082019050919050565b6000611696602283611a5e565b91506116a182611d04565b604082019050919050565b60006116b9602783611a5e565b91506116c482611d53565b604082019050919050565b60006116dc601d83611a5e565b91506116e782611da2565b602082019050919050565b60006116ff602683611a5e565b915061170a82611dcb565b604082019050919050565b6000611722602983611a5e565b915061172d82611e1a565b604082019050919050565b6000611745602083611a5e565b915061175082611e69565b602082019050919050565b6000611768602983611a5e565b915061177382611e92565b604082019050919050565b600061178b602583611a5e565b915061179682611ee1565b604082019050919050565b60006117ae602483611a5e565b91506117b982611f30565b604082019050919050565b60006117d1602583611a5e565b91506117dc82611f7f565b604082019050919050565b6117f081611b03565b82525050565b6117ff81611b0d565b82525050565b600060208201905061181a60008301846115a6565b92915050565b600060208201905061183560008301846115b5565b92915050565b6000602082019050818103600083015261185581846115c4565b905092915050565b60006020820190508181036000830152611876816115fd565b9050919050565b6000602082019050818103600083015261189681611620565b9050919050565b600060208201905081810360008301526118b681611643565b9050919050565b600060208201905081810360008301526118d681611666565b9050919050565b600060208201905081810360008301526118f681611689565b9050919050565b60006020820190508181036000830152611916816116ac565b9050919050565b60006020820190508181036000830152611936816116cf565b9050919050565b60006020820190508181036000830152611956816116f2565b9050919050565b6000602082019050818103600083015261197681611715565b9050919050565b6000602082019050818103600083015261199681611738565b9050919050565b600060208201905081810360008301526119b68161175b565b9050919050565b600060208201905081810360008301526119d68161177e565b9050919050565b600060208201905081810360008301526119f6816117a1565b9050919050565b60006020820190508181036000830152611a16816117c4565b9050919050565b6000602082019050611a3260008301846117e7565b92915050565b6000602082019050611a4d60008301846117f6565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611a7a82611b03565b9150611a8583611b03565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611aba57611ab9611b7f565b5b828201905092915050565b6000611ad082611ae3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611b38578082015181840152602081019050611b1d565b83811115611b47576000848401525b50505050565b60006002820490506001821680611b6557607f821691505b60208210811415611b7957611b78611bae565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f54686973207061697220697320616c7265616479206578636c75646564000000600082015250565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2042616c616e63652065786365656473206d61782077616c6c6560008201527f742073697a652100000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a20416d6f756e742065786365656473206d6178696d756d20776160008201527f6c6c65742073697a650000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b611fd781611ac5565b8114611fe257600080fd5b50565b611fee81611ad7565b8114611ff957600080fd5b50565b61200581611b03565b811461201057600080fd5b5056fea2646970667358221220499719d4b7bef96383f61c1d4d5e04e68827f1e4a368734923ad76a5e8d812c464736f6c63430008040033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061012c5760003560e01c80638f70ccf7116100ad578063c2b7bbb611610071578063c2b7bbb614610335578063dd62ed3e14610351578063ea1644d514610381578063f2fde38b1461039d578063ffb54a99146103b95761012c565b80638f70ccf71461027d5780638f9a55c01461029957806395d89b41146102b7578063a457c2d7146102d5578063a9059cbb146103055761012c565b806339509351116100f457806339509351146101eb57806370a082311461021b578063715018a61461024b578063751039fc146102555780638da5cb5b1461025f5761012c565b806306fdde0314610131578063095ea7b31461014f57806318160ddd1461017f57806323b872dd1461019d578063313ce567146101cd575b600080fd5b6101396103d7565b604051610146919061183b565b60405180910390f35b61016960048036038101906101649190611518565b610469565b6040516101769190611820565b60405180910390f35b61018761048c565b6040516101949190611a1d565b60405180910390f35b6101b760048036038101906101b291906114c9565b610496565b6040516101c49190611820565b60405180910390f35b6101d56104c5565b6040516101e29190611a38565b60405180910390f35b61020560048036038101906102009190611518565b6104ce565b6040516102129190611820565b60405180910390f35b61023560048036038101906102309190611464565b610505565b6040516102429190611a1d565b60405180910390f35b61025361054d565b005b61025d610561565b005b610267610574565b6040516102749190611805565b60405180910390f35b61029760048036038101906102929190611554565b61059e565b005b6102a16105c3565b6040516102ae9190611a1d565b60405180910390f35b6102bf6105c9565b6040516102cc919061183b565b60405180910390f35b6102ef60048036038101906102ea9190611518565b61065b565b6040516102fc9190611820565b60405180910390f35b61031f600480360381019061031a9190611518565b6106d2565b60405161032c9190611820565b60405180910390f35b61034f600480360381019061034a9190611464565b6106f5565b005b61036b6004803603810190610366919061148d565b6107e5565b6040516103789190611a1d565b60405180910390f35b61039b6004803603810190610396919061157d565b61086c565b005b6103b760048036038101906103b29190611464565b61087e565b005b6103c1610902565b6040516103ce9190611820565b60405180910390f35b6060600380546103e690611b4d565b80601f016020809104026020016040519081016040528092919081815260200182805461041290611b4d565b801561045f5780601f106104345761010080835404028352916020019161045f565b820191906000526020600020905b81548152906001019060200180831161044257829003601f168201915b5050505050905090565b600080610474610915565b905061048181858561091d565b600191505092915050565b6000600254905090565b6000806104a1610915565b90506104ae858285610ae8565b6104b9858585610b74565b60019150509392505050565b60006012905090565b6000806104d9610915565b90506104fa8185856104eb85896107e5565b6104f59190611a6f565b61091d565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610555611056565b61055f60006110d4565b565b610569611056565b600954600881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6105a6611056565b80600760006101000a81548160ff02191690831515021790555050565b60085481565b6060600480546105d890611b4d565b80601f016020809104026020016040519081016040528092919081815260200182805461060490611b4d565b80156106515780601f1061062657610100808354040283529160200191610651565b820191906000526020600020905b81548152906001019060200180831161063457829003601f168201915b5050505050905090565b600080610666610915565b9050600061067482866107e5565b9050838110156106b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b0906119fd565b60405180910390fd5b6106c6828686840361091d565b60019250505092915050565b6000806106dd610915565b90506106ea818585610b74565b600191505092915050565b6106fd611056565b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561078a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107819061187d565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610874611056565b8060088190555050565b610886611056565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156108f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ed906118bd565b60405180910390fd5b6108ff816110d4565b50565b600760009054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561098d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610984906119dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156109fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f4906118dd565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610adb9190611a1d565b60405180910390a3505050565b6000610af484846107e5565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b6e5781811015610b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b579061191d565b60405180910390fd5b610b6d848484840361091d565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdb906119bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4b9061185d565b60405180910390fd5b60008111610c97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8e9061199d565b60405180910390fd5b610c9f610574565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610d0d5750610cdd610574565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561104657600760009054906101000a900460ff16610d9c57610d2e610574565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d929061189d565b60405180910390fd5b5b610da4610574565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610e125750610de2610574565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015610e675750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15610ec55760085481610e7984610505565b610e839190611a6f565b1115610ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebb9061195d565b60405180910390fd5b5b610ecd610574565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610f3b5750610f0b610574565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015610f915750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015610fe75750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156110455760085481610ff984610505565b6110039190611a6f565b1115611044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103b906118fd565b60405180910390fd5b5b5b61105183838361119a565b505050565b61105e610915565b73ffffffffffffffffffffffffffffffffffffffff1661107c610574565b73ffffffffffffffffffffffffffffffffffffffff16146110d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c99061197d565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561120a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611201906119bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561127a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112719061185d565b60405180910390fd5b61128583838361141b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561130b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113029061193d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461139e9190611a6f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114029190611a1d565b60405180910390a3611415848484611420565b50505050565b505050565b505050565b60008135905061143481611fce565b92915050565b60008135905061144981611fe5565b92915050565b60008135905061145e81611ffc565b92915050565b60006020828403121561147657600080fd5b600061148484828501611425565b91505092915050565b600080604083850312156114a057600080fd5b60006114ae85828601611425565b92505060206114bf85828601611425565b9150509250929050565b6000806000606084860312156114de57600080fd5b60006114ec86828701611425565b93505060206114fd86828701611425565b925050604061150e8682870161144f565b9150509250925092565b6000806040838503121561152b57600080fd5b600061153985828601611425565b925050602061154a8582860161144f565b9150509250929050565b60006020828403121561156657600080fd5b60006115748482850161143a565b91505092915050565b60006020828403121561158f57600080fd5b600061159d8482850161144f565b91505092915050565b6115af81611ac5565b82525050565b6115be81611ad7565b82525050565b60006115cf82611a53565b6115d98185611a5e565b93506115e9818560208601611b1a565b6115f281611bdd565b840191505092915050565b600061160a602383611a5e565b915061161582611bee565b604082019050919050565b600061162d601d83611a5e565b915061163882611c3d565b602082019050919050565b6000611650603f83611a5e565b915061165b82611c66565b604082019050919050565b6000611673602683611a5e565b915061167e82611cb5565b604082019050919050565b6000611696602283611a5e565b91506116a182611d04565b604082019050919050565b60006116b9602783611a5e565b91506116c482611d53565b604082019050919050565b60006116dc601d83611a5e565b91506116e782611da2565b602082019050919050565b60006116ff602683611a5e565b915061170a82611dcb565b604082019050919050565b6000611722602983611a5e565b915061172d82611e1a565b604082019050919050565b6000611745602083611a5e565b915061175082611e69565b602082019050919050565b6000611768602983611a5e565b915061177382611e92565b604082019050919050565b600061178b602583611a5e565b915061179682611ee1565b604082019050919050565b60006117ae602483611a5e565b91506117b982611f30565b604082019050919050565b60006117d1602583611a5e565b91506117dc82611f7f565b604082019050919050565b6117f081611b03565b82525050565b6117ff81611b0d565b82525050565b600060208201905061181a60008301846115a6565b92915050565b600060208201905061183560008301846115b5565b92915050565b6000602082019050818103600083015261185581846115c4565b905092915050565b60006020820190508181036000830152611876816115fd565b9050919050565b6000602082019050818103600083015261189681611620565b9050919050565b600060208201905081810360008301526118b681611643565b9050919050565b600060208201905081810360008301526118d681611666565b9050919050565b600060208201905081810360008301526118f681611689565b9050919050565b60006020820190508181036000830152611916816116ac565b9050919050565b60006020820190508181036000830152611936816116cf565b9050919050565b60006020820190508181036000830152611956816116f2565b9050919050565b6000602082019050818103600083015261197681611715565b9050919050565b6000602082019050818103600083015261199681611738565b9050919050565b600060208201905081810360008301526119b68161175b565b9050919050565b600060208201905081810360008301526119d68161177e565b9050919050565b600060208201905081810360008301526119f6816117a1565b9050919050565b60006020820190508181036000830152611a16816117c4565b9050919050565b6000602082019050611a3260008301846117e7565b92915050565b6000602082019050611a4d60008301846117f6565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611a7a82611b03565b9150611a8583611b03565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611aba57611ab9611b7f565b5b828201905092915050565b6000611ad082611ae3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611b38578082015181840152602081019050611b1d565b83811115611b47576000848401525b50505050565b60006002820490506001821680611b6557607f821691505b60208210811415611b7957611b78611bae565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f54686973207061697220697320616c7265616479206578636c75646564000000600082015250565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2042616c616e63652065786365656473206d61782077616c6c6560008201527f742073697a652100000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a20416d6f756e742065786365656473206d6178696d756d20776160008201527f6c6c65742073697a650000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b611fd781611ac5565b8114611fe257600080fd5b50565b611fee81611ad7565b8114611ff957600080fd5b50565b61200581611b03565b811461201057600080fd5b5056fea2646970667358221220499719d4b7bef96383f61c1d4d5e04e68827f1e4a368734923ad76a5e8d812c464736f6c63430008040033

Deployed Bytecode Sourcemap

27381:2073:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13842:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16193:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14962:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16974:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14804:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17678:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15133:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26511:103;;;:::i;:::-;;28192:88;;;:::i;:::-;;25863:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27960:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27537:57;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14061:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18419:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15466:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27798:154;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15722:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28069:115;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26769:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27507:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13842:100;13896:13;13929:5;13922:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13842:100;:::o;16193:201::-;16276:4;16293:13;16309:12;:10;:12::i;:::-;16293:28;;16332:32;16341:5;16348:7;16357:6;16332:8;:32::i;:::-;16382:4;16375:11;;;16193:201;;;;:::o;14962:108::-;15023:7;15050:12;;15043:19;;14962:108;:::o;16974:295::-;17105:4;17122:15;17140:12;:10;:12::i;:::-;17122:30;;17163:38;17179:4;17185:7;17194:6;17163:15;:38::i;:::-;17212:27;17222:4;17228:2;17232:6;17212:9;:27::i;:::-;17257:4;17250:11;;;16974:295;;;;;:::o;14804:93::-;14862:5;14887:2;14880:9;;14804:93;:::o;17678:238::-;17766:4;17783:13;17799:12;:10;:12::i;:::-;17783:28;;17822:64;17831:5;17838:7;17875:10;17847:25;17857:5;17864:7;17847:9;:25::i;:::-;:38;;;;:::i;:::-;17822:8;:64::i;:::-;17904:4;17897:11;;;17678:238;;;;:::o;15133:127::-;15207:7;15234:9;:18;15244:7;15234:18;;;;;;;;;;;;;;;;15227:25;;15133:127;;;:::o;26511:103::-;25749:13;:11;:13::i;:::-;26576:30:::1;26603:1;26576:18;:30::i;:::-;26511:103::o:0;28192:88::-;25749:13;:11;:13::i;:::-;28260:12:::1;;28243:14;:29;;;;28192:88::o:0;25863:87::-;25909:7;25936:6;;;;;;;;;;;25929:13;;25863:87;:::o;27960:101::-;25749:13;:11;:13::i;:::-;28041:12:::1;28027:11;;:26;;;;;;;;;;;;;;;;;;27960:101:::0;:::o;27537:57::-;;;;:::o;14061:104::-;14117:13;14150:7;14143:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14061:104;:::o;18419:436::-;18512:4;18529:13;18545:12;:10;:12::i;:::-;18529:28;;18568:24;18595:25;18605:5;18612:7;18595:9;:25::i;:::-;18568:52;;18659:15;18639:16;:35;;18631:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;18752:60;18761:5;18768:7;18796:15;18777:16;:34;18752:8;:60::i;:::-;18843:4;18836:11;;;;18419:436;;;;:::o;15466:193::-;15545:4;15562:13;15578:12;:10;:12::i;:::-;15562:28;;15601;15611:5;15618:2;15622:6;15601:9;:28::i;:::-;15647:4;15640:11;;;15466:193;;;;:::o;27798:154::-;25749:13;:11;:13::i;:::-;27868:4:::1;:12;27873:6;27868:12;;;;;;;;;;;;;;;;;;;;;;;;;27867:13;27859:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;27940:4;27925;:12;27930:6;27925:12;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;27798:154:::0;:::o;15722:151::-;15811:7;15838:11;:18;15850:5;15838:18;;;;;;;;;;;;;;;:27;15857:7;15838:27;;;;;;;;;;;;;;;;15831:34;;15722:151;;;;:::o;28069:115::-;25749:13;:11;:13::i;:::-;28163::::1;28146:14;:30;;;;28069:115:::0;:::o;26769:201::-;25749:13;:11;:13::i;:::-;26878:1:::1;26858:22;;:8;:22;;;;26850:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26934:28;26953:8;26934:18;:28::i;:::-;26769:201:::0;:::o;27507:23::-;;;;;;;;;;;;;:::o;11482:98::-;11535:7;11562:10;11555:17;;11482:98;:::o;22044:380::-;22197:1;22180:19;;:5;:19;;;;22172:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22278:1;22259:21;;:7;:21;;;;22251:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22362:6;22332:11;:18;22344:5;22332:18;;;;;;;;;;;;;;;:27;22351:7;22332:27;;;;;;;;;;;;;;;:36;;;;22400:7;22384:32;;22393:5;22384:32;;;22409:6;22384:32;;;;;;:::i;:::-;;;;;;;;22044:380;;;:::o;22715:453::-;22850:24;22877:25;22887:5;22894:7;22877:9;:25::i;:::-;22850:52;;22937:17;22917:16;:37;22913:248;;22999:6;22979:16;:26;;22971:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23083:51;23092:5;23099:7;23127:6;23108:16;:25;23083:8;:51::i;:::-;22913:248;22715:453;;;;:::o;28288:1161::-;28436:1;28420:18;;:4;:18;;;;28412:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28513:1;28499:16;;:2;:16;;;;28491:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28583:1;28574:6;:10;28566:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28653:7;:5;:7::i;:::-;28645:15;;:4;:15;;;;:32;;;;;28670:7;:5;:7::i;:::-;28664:13;;:2;:13;;;;28645:32;28642:753;;;28734:11;;;;;;;;;;;28729:144;;28782:7;:5;:7::i;:::-;28774:15;;:4;:15;;;28766:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;28729:144;28934:7;:5;:7::i;:::-;28926:15;;:4;:15;;;;:32;;;;;28951:7;:5;:7::i;:::-;28945:13;;:2;:13;;;;28926:32;:46;;;;;28962:4;:10;28967:4;28962:10;;;;;;;;;;;;;;;;;;;;;;;;;28926:46;28923:198;;;29027:14;;29017:6;29001:13;29011:2;29001:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;28993:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;28923:198;29198:7;:5;:7::i;:::-;29190:15;;:4;:15;;;;:32;;;;;29215:7;:5;:7::i;:::-;29209:13;;:2;:13;;;;29190:32;:47;;;;;29228:4;:8;29233:2;29228:8;;;;;;;;;;;;;;;;;;;;;;;;;29226:11;29190:47;:64;;;;;29243:4;:10;29248:4;29243:10;;;;;;;;;;;;;;;;;;;;;;;;;29241:13;29190:64;29187:196;;;29309:14;;29299:6;29283:13;29293:2;29283:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;29275:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;29187:196;28642:753;29406:33;29422:4;29428:2;29432:6;29406:15;:33::i;:::-;28288:1161;;;:::o;26028:132::-;26103:12;:10;:12::i;:::-;26092:23;;:7;:5;:7::i;:::-;:23;;;26084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26028:132::o;27130:191::-;27204:16;27223:6;;;;;;;;;;;27204:25;;27249:8;27240:6;;:17;;;;;;;;;;;;;;;;;;27304:8;27273:40;;27294:8;27273:40;;;;;;;;;;;;27130:191;;:::o;19325:671::-;19472:1;19456:18;;:4;:18;;;;19448:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19549:1;19535:16;;:2;:16;;;;19527:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19604:38;19625:4;19631:2;19635:6;19604:20;:38::i;:::-;19655:19;19677:9;:15;19687:4;19677:15;;;;;;;;;;;;;;;;19655:37;;19726:6;19711:11;:21;;19703:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;19843:6;19829:11;:20;19811:9;:15;19821:4;19811:15;;;;;;;;;;;;;;;:38;;;;19888:6;19871:9;:13;19881:2;19871:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;19927:2;19912:26;;19921:4;19912:26;;;19931:6;19912:26;;;;;;:::i;:::-;;;;;;;;19951:37;19971:4;19977:2;19981:6;19951:19;:37::i;:::-;19325:671;;;;:::o;23768:125::-;;;;:::o;24497:124::-;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:133::-;195:5;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;201:84;;;;:::o;291:139::-;337:5;375:6;362:20;353:29;;391:33;418:5;391:33;:::i;:::-;343:87;;;;:::o;436:262::-;495:6;544:2;532:9;523:7;519:23;515:32;512:2;;;560:1;557;550:12;512:2;603:1;628:53;673:7;664:6;653:9;649:22;628:53;:::i;:::-;618:63;;574:117;502:196;;;;:::o;704:407::-;772:6;780;829:2;817:9;808:7;804:23;800:32;797:2;;;845:1;842;835:12;797:2;888:1;913:53;958:7;949:6;938:9;934:22;913:53;:::i;:::-;903:63;;859:117;1015:2;1041:53;1086:7;1077:6;1066:9;1062:22;1041:53;:::i;:::-;1031:63;;986:118;787:324;;;;;:::o;1117:552::-;1194:6;1202;1210;1259:2;1247:9;1238:7;1234:23;1230:32;1227:2;;;1275:1;1272;1265:12;1227:2;1318:1;1343:53;1388:7;1379:6;1368:9;1364:22;1343:53;:::i;:::-;1333:63;;1289:117;1445:2;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1416:118;1573:2;1599:53;1644:7;1635:6;1624:9;1620:22;1599:53;:::i;:::-;1589:63;;1544:118;1217:452;;;;;:::o;1675:407::-;1743:6;1751;1800:2;1788:9;1779:7;1775:23;1771:32;1768:2;;;1816:1;1813;1806:12;1768:2;1859:1;1884:53;1929:7;1920:6;1909:9;1905:22;1884:53;:::i;:::-;1874:63;;1830:117;1986:2;2012:53;2057:7;2048:6;2037:9;2033:22;2012:53;:::i;:::-;2002:63;;1957:118;1758:324;;;;;:::o;2088:256::-;2144:6;2193:2;2181:9;2172:7;2168:23;2164:32;2161:2;;;2209:1;2206;2199:12;2161:2;2252:1;2277:50;2319:7;2310:6;2299:9;2295:22;2277:50;:::i;:::-;2267:60;;2223:114;2151:193;;;;:::o;2350:262::-;2409:6;2458:2;2446:9;2437:7;2433:23;2429:32;2426:2;;;2474:1;2471;2464:12;2426:2;2517:1;2542:53;2587:7;2578:6;2567:9;2563:22;2542:53;:::i;:::-;2532:63;;2488:117;2416:196;;;;:::o;2618:118::-;2705:24;2723:5;2705:24;:::i;:::-;2700:3;2693:37;2683:53;;:::o;2742:109::-;2823:21;2838:5;2823:21;:::i;:::-;2818:3;2811:34;2801:50;;:::o;2857:364::-;2945:3;2973:39;3006:5;2973:39;:::i;:::-;3028:71;3092:6;3087:3;3028:71;:::i;:::-;3021:78;;3108:52;3153:6;3148:3;3141:4;3134:5;3130:16;3108:52;:::i;:::-;3185:29;3207:6;3185:29;:::i;:::-;3180:3;3176:39;3169:46;;2949:272;;;;;:::o;3227:366::-;3369:3;3390:67;3454:2;3449:3;3390:67;:::i;:::-;3383:74;;3466:93;3555:3;3466:93;:::i;:::-;3584:2;3579:3;3575:12;3568:19;;3373:220;;;:::o;3599:366::-;3741:3;3762:67;3826:2;3821:3;3762:67;:::i;:::-;3755:74;;3838:93;3927:3;3838:93;:::i;:::-;3956:2;3951:3;3947:12;3940:19;;3745:220;;;:::o;3971:366::-;4113:3;4134:67;4198:2;4193:3;4134:67;:::i;:::-;4127:74;;4210:93;4299:3;4210:93;:::i;:::-;4328:2;4323:3;4319:12;4312:19;;4117:220;;;:::o;4343:366::-;4485:3;4506:67;4570:2;4565:3;4506:67;:::i;:::-;4499:74;;4582:93;4671:3;4582:93;:::i;:::-;4700:2;4695:3;4691:12;4684:19;;4489:220;;;:::o;4715:366::-;4857:3;4878:67;4942:2;4937:3;4878:67;:::i;:::-;4871:74;;4954:93;5043:3;4954:93;:::i;:::-;5072:2;5067:3;5063:12;5056:19;;4861:220;;;:::o;5087:366::-;5229:3;5250:67;5314:2;5309:3;5250:67;:::i;:::-;5243:74;;5326:93;5415:3;5326:93;:::i;:::-;5444:2;5439:3;5435:12;5428:19;;5233:220;;;:::o;5459:366::-;5601:3;5622:67;5686:2;5681:3;5622:67;:::i;:::-;5615:74;;5698:93;5787:3;5698:93;:::i;:::-;5816:2;5811:3;5807:12;5800:19;;5605:220;;;:::o;5831:366::-;5973:3;5994:67;6058:2;6053:3;5994:67;:::i;:::-;5987:74;;6070:93;6159:3;6070:93;:::i;:::-;6188:2;6183:3;6179:12;6172:19;;5977:220;;;:::o;6203:366::-;6345:3;6366:67;6430:2;6425:3;6366:67;:::i;:::-;6359:74;;6442:93;6531:3;6442:93;:::i;:::-;6560:2;6555:3;6551:12;6544:19;;6349:220;;;:::o;6575:366::-;6717:3;6738:67;6802:2;6797:3;6738:67;:::i;:::-;6731:74;;6814:93;6903:3;6814:93;:::i;:::-;6932:2;6927:3;6923:12;6916:19;;6721:220;;;:::o;6947:366::-;7089:3;7110:67;7174:2;7169:3;7110:67;:::i;:::-;7103:74;;7186:93;7275:3;7186:93;:::i;:::-;7304:2;7299:3;7295:12;7288:19;;7093:220;;;:::o;7319:366::-;7461:3;7482:67;7546:2;7541:3;7482:67;:::i;:::-;7475:74;;7558:93;7647:3;7558:93;:::i;:::-;7676:2;7671:3;7667:12;7660:19;;7465:220;;;:::o;7691:366::-;7833:3;7854:67;7918:2;7913:3;7854:67;:::i;:::-;7847:74;;7930:93;8019:3;7930:93;:::i;:::-;8048:2;8043:3;8039:12;8032:19;;7837:220;;;:::o;8063:366::-;8205:3;8226:67;8290:2;8285:3;8226:67;:::i;:::-;8219:74;;8302:93;8391:3;8302:93;:::i;:::-;8420:2;8415:3;8411:12;8404:19;;8209:220;;;:::o;8435:118::-;8522:24;8540:5;8522:24;:::i;:::-;8517:3;8510:37;8500:53;;:::o;8559:112::-;8642:22;8658:5;8642:22;:::i;:::-;8637:3;8630:35;8620:51;;:::o;8677:222::-;8770:4;8808:2;8797:9;8793:18;8785:26;;8821:71;8889:1;8878:9;8874:17;8865:6;8821:71;:::i;:::-;8775:124;;;;:::o;8905:210::-;8992:4;9030:2;9019:9;9015:18;9007:26;;9043:65;9105:1;9094:9;9090:17;9081:6;9043:65;:::i;:::-;8997:118;;;;:::o;9121:313::-;9234:4;9272:2;9261:9;9257:18;9249:26;;9321:9;9315:4;9311:20;9307:1;9296:9;9292:17;9285:47;9349:78;9422:4;9413:6;9349:78;:::i;:::-;9341:86;;9239:195;;;;:::o;9440:419::-;9606:4;9644:2;9633:9;9629:18;9621:26;;9693:9;9687:4;9683:20;9679:1;9668:9;9664:17;9657:47;9721:131;9847:4;9721:131;:::i;:::-;9713:139;;9611:248;;;:::o;9865:419::-;10031:4;10069:2;10058:9;10054:18;10046:26;;10118:9;10112:4;10108:20;10104:1;10093:9;10089:17;10082:47;10146:131;10272:4;10146:131;:::i;:::-;10138:139;;10036:248;;;:::o;10290:419::-;10456:4;10494:2;10483:9;10479:18;10471:26;;10543:9;10537:4;10533:20;10529:1;10518:9;10514:17;10507:47;10571:131;10697:4;10571:131;:::i;:::-;10563:139;;10461:248;;;:::o;10715:419::-;10881:4;10919:2;10908:9;10904:18;10896:26;;10968:9;10962:4;10958:20;10954:1;10943:9;10939:17;10932:47;10996:131;11122:4;10996:131;:::i;:::-;10988:139;;10886:248;;;:::o;11140:419::-;11306:4;11344:2;11333:9;11329:18;11321:26;;11393:9;11387:4;11383:20;11379:1;11368:9;11364:17;11357:47;11421:131;11547:4;11421:131;:::i;:::-;11413:139;;11311:248;;;:::o;11565:419::-;11731:4;11769:2;11758:9;11754:18;11746:26;;11818:9;11812:4;11808:20;11804:1;11793:9;11789:17;11782:47;11846:131;11972:4;11846:131;:::i;:::-;11838:139;;11736:248;;;:::o;11990:419::-;12156:4;12194:2;12183:9;12179:18;12171:26;;12243:9;12237:4;12233:20;12229:1;12218:9;12214:17;12207:47;12271:131;12397:4;12271:131;:::i;:::-;12263:139;;12161:248;;;:::o;12415:419::-;12581:4;12619:2;12608:9;12604:18;12596:26;;12668:9;12662:4;12658:20;12654:1;12643:9;12639:17;12632:47;12696:131;12822:4;12696:131;:::i;:::-;12688:139;;12586:248;;;:::o;12840:419::-;13006:4;13044:2;13033:9;13029:18;13021:26;;13093:9;13087:4;13083:20;13079:1;13068:9;13064:17;13057:47;13121:131;13247:4;13121:131;:::i;:::-;13113:139;;13011:248;;;:::o;13265:419::-;13431:4;13469:2;13458:9;13454:18;13446:26;;13518:9;13512:4;13508:20;13504:1;13493:9;13489:17;13482:47;13546:131;13672:4;13546:131;:::i;:::-;13538:139;;13436:248;;;:::o;13690:419::-;13856:4;13894:2;13883:9;13879:18;13871:26;;13943:9;13937:4;13933:20;13929:1;13918:9;13914:17;13907:47;13971:131;14097:4;13971:131;:::i;:::-;13963:139;;13861:248;;;:::o;14115:419::-;14281:4;14319:2;14308:9;14304:18;14296:26;;14368:9;14362:4;14358:20;14354:1;14343:9;14339:17;14332:47;14396:131;14522:4;14396:131;:::i;:::-;14388:139;;14286:248;;;:::o;14540:419::-;14706:4;14744:2;14733:9;14729:18;14721:26;;14793:9;14787:4;14783:20;14779:1;14768:9;14764:17;14757:47;14821:131;14947:4;14821:131;:::i;:::-;14813:139;;14711:248;;;:::o;14965:419::-;15131:4;15169:2;15158:9;15154:18;15146:26;;15218:9;15212:4;15208:20;15204:1;15193:9;15189:17;15182:47;15246:131;15372:4;15246:131;:::i;:::-;15238:139;;15136:248;;;:::o;15390:222::-;15483:4;15521:2;15510:9;15506:18;15498:26;;15534:71;15602:1;15591:9;15587:17;15578:6;15534:71;:::i;:::-;15488:124;;;;:::o;15618:214::-;15707:4;15745:2;15734:9;15730:18;15722:26;;15758:67;15822:1;15811:9;15807:17;15798:6;15758:67;:::i;:::-;15712:120;;;;:::o;15838:99::-;15890:6;15924:5;15918:12;15908:22;;15897:40;;;:::o;15943:169::-;16027:11;16061:6;16056:3;16049:19;16101:4;16096:3;16092:14;16077:29;;16039:73;;;;:::o;16118:305::-;16158:3;16177:20;16195:1;16177:20;:::i;:::-;16172:25;;16211:20;16229:1;16211:20;:::i;:::-;16206:25;;16365:1;16297:66;16293:74;16290:1;16287:81;16284:2;;;16371:18;;:::i;:::-;16284:2;16415:1;16412;16408:9;16401:16;;16162:261;;;;:::o;16429:96::-;16466:7;16495:24;16513:5;16495:24;:::i;:::-;16484:35;;16474:51;;;:::o;16531:90::-;16565:7;16608:5;16601:13;16594:21;16583:32;;16573:48;;;:::o;16627:126::-;16664:7;16704:42;16697:5;16693:54;16682:65;;16672:81;;;:::o;16759:77::-;16796:7;16825:5;16814:16;;16804:32;;;:::o;16842:86::-;16877:7;16917:4;16910:5;16906:16;16895:27;;16885:43;;;:::o;16934:307::-;17002:1;17012:113;17026:6;17023:1;17020:13;17012:113;;;17111:1;17106:3;17102:11;17096:18;17092:1;17087:3;17083:11;17076:39;17048:2;17045:1;17041:10;17036:15;;17012:113;;;17143:6;17140:1;17137:13;17134:2;;;17223:1;17214:6;17209:3;17205:16;17198:27;17134:2;16983:258;;;;:::o;17247:320::-;17291:6;17328:1;17322:4;17318:12;17308:22;;17375:1;17369:4;17365:12;17396:18;17386:2;;17452:4;17444:6;17440:17;17430:27;;17386:2;17514;17506:6;17503:14;17483:18;17480:38;17477:2;;;17533:18;;:::i;:::-;17477:2;17298:269;;;;:::o;17573:180::-;17621:77;17618:1;17611:88;17718:4;17715:1;17708:15;17742:4;17739:1;17732:15;17759:180;17807:77;17804:1;17797:88;17904:4;17901:1;17894:15;17928:4;17925:1;17918:15;17945:102;17986:6;18037:2;18033:7;18028:2;18021:5;18017:14;18013:28;18003:38;;17993:54;;;:::o;18053:222::-;18193:34;18189:1;18181:6;18177:14;18170:58;18262:5;18257:2;18249:6;18245:15;18238:30;18159:116;:::o;18281:179::-;18421:31;18417:1;18409:6;18405:14;18398:55;18387:73;:::o;18466:250::-;18606:34;18602:1;18594:6;18590:14;18583:58;18675:33;18670:2;18662:6;18658:15;18651:58;18572:144;:::o;18722:225::-;18862:34;18858:1;18850:6;18846:14;18839:58;18931:8;18926:2;18918:6;18914:15;18907:33;18828:119;:::o;18953:221::-;19093:34;19089:1;19081:6;19077:14;19070:58;19162:4;19157:2;19149:6;19145:15;19138:29;19059:115;:::o;19180:226::-;19320:34;19316:1;19308:6;19304:14;19297:58;19389:9;19384:2;19376:6;19372:15;19365:34;19286:120;:::o;19412:179::-;19552:31;19548:1;19540:6;19536:14;19529:55;19518:73;:::o;19597:225::-;19737:34;19733:1;19725:6;19721:14;19714:58;19806:8;19801:2;19793:6;19789:15;19782:33;19703:119;:::o;19828:228::-;19968:34;19964:1;19956:6;19952:14;19945:58;20037:11;20032:2;20024:6;20020:15;20013:36;19934:122;:::o;20062:182::-;20202:34;20198:1;20190:6;20186:14;20179:58;20168:76;:::o;20250:228::-;20390:34;20386:1;20378:6;20374:14;20367:58;20459:11;20454:2;20446:6;20442:15;20435:36;20356:122;:::o;20484:224::-;20624:34;20620:1;20612:6;20608:14;20601:58;20693:7;20688:2;20680:6;20676:15;20669:32;20590:118;:::o;20714:223::-;20854:34;20850:1;20842:6;20838:14;20831:58;20923:6;20918:2;20910:6;20906:15;20899:31;20820:117;:::o;20943:224::-;21083:34;21079:1;21071:6;21067:14;21060:58;21152:7;21147:2;21139:6;21135:15;21128:32;21049:118;:::o;21173:122::-;21246:24;21264:5;21246:24;:::i;:::-;21239:5;21236:35;21226:2;;21285:1;21282;21275:12;21226:2;21216:79;:::o;21301:116::-;21371:21;21386:5;21371:21;:::i;:::-;21364:5;21361:32;21351:2;;21407:1;21404;21397:12;21351:2;21341:76;:::o;21423:122::-;21496:24;21514:5;21496:24;:::i;:::-;21489:5;21486:35;21476:2;;21535:1;21532;21525:12;21476:2;21466:79;:::o

Swarm Source

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