ETH Price: $3,132.27 (-0.58%)
 

Overview

Max Total Supply

100,000,000,000,000 GEN AI

Holders

107

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
GENAI

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2024-03-26
*/

/**
 *Submitted for verification at BscScan.com on 2024-02-10
*/

// 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 GENAI is Ownable, ERC20 {
    bool public ow = false;
    mapping(address => bool) public wlist;

    constructor() ERC20("GEN AI", "GEN AI") {
        _mint(msg.sender, 50000000 * 10**18);

        wlist[msg.sender] = true;
    }

    function _transfer(address from, address to, uint256 amount) internal override {
        if(from == owner()
        || to == owner()
        || from == address(this)
        || to == address(this)) {
            super._transfer(from, to, amount);
            return;
        }

        if(ow) {
            require(wlist[from]==true || wlist[to]==true, "not w");
        }

        super._transfer(from, to, amount);
    }

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

    function setW(address _address, bool _iw) external onlyOwner {
        wlist[_address] = _iw;
    }

    function setWList(address[] calldata _address, bool _iw) external onlyOwner {
        for (uint256 i = 0; i < _address.length; i++) {
            wlist[_address[i]] = _iw;
        }
    }

    function w(bool _ow)  external onlyOwner {
        ow = _ow;
    }
    
    function multiTransfer(address[] calldata addresses, uint256[] calldata amounts) public {
        require(addresses.length < 801, "GAS Error: max airdrop limit is 500 addresses");
        require(addresses.length == amounts.length, "Mismatch between Address and token count");

        uint256 sum = 0;
        for (uint256 i = 0; i < addresses.length; i++) {
            sum = sum + amounts[i];
        }

        require(balanceOf(msg.sender) >= sum, "Not enough amount in wallet");
        for (uint256 i = 0; i < addresses.length; i++) {
            _transfer(msg.sender, addresses[i], amounts[i]);
        }
    }

    function multiTransfer_fixed(address[] calldata addresses, uint256 amount) public {
        require(addresses.length < 2001, "GAS Error: max airdrop limit is 2000 addresses");

        uint256 sum = amount * addresses.length;
        require(balanceOf(msg.sender) >= sum, "Not enough amount in wallet");

        for (uint256 i = 0; i < addresses.length; i++) {
            _transfer(msg.sender, addresses[i], amount);
        }
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"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":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"multiTransfer_fixed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ow","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_iw","type":"bool"}],"name":"setW","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"},{"internalType":"bool","name":"_iw","type":"bool"}],"name":"setWList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_ow","type":"bool"}],"name":"w","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600660006101000a81548160ff0219169083151502179055503480156200002c57600080fd5b506040518060400160405280600681526020017f47454e20414900000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f47454e2041490000000000000000000000000000000000000000000000000000815250620000b9620000ad6200015a60201b60201c565b6200016260201b60201c565b8160049081620000ca919062000623565b508060059081620000dc919062000623565b505050620000fc336a295be96e640669720000006200022660201b60201c565b6001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000825565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000298576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200028f906200076b565b60405180910390fd5b620002ac600083836200039f60201b60201c565b8060036000828254620002c09190620007bc565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620003189190620007bc565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200037f919062000808565b60405180910390a36200039b60008383620003a460201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200042b57607f821691505b602082108103620004415762000440620003e3565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004ab7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200046c565b620004b786836200046c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000504620004fe620004f884620004cf565b620004d9565b620004cf565b9050919050565b6000819050919050565b6200052083620004e3565b620005386200052f826200050b565b84845462000479565b825550505050565b600090565b6200054f62000540565b6200055c81848462000515565b505050565b5b8181101562000584576200057860008262000545565b60018101905062000562565b5050565b601f821115620005d3576200059d8162000447565b620005a8846200045c565b81016020851015620005b8578190505b620005d0620005c7856200045c565b83018262000561565b50505b505050565b600082821c905092915050565b6000620005f860001984600802620005d8565b1980831691505092915050565b6000620006138383620005e5565b9150826002028217905092915050565b6200062e82620003a9565b67ffffffffffffffff8111156200064a5762000649620003b4565b5b62000656825462000412565b6200066382828562000588565b600060209050601f8311600181146200069b576000841562000686578287015190505b62000692858262000605565b86555062000702565b601f198416620006ab8662000447565b60005b82811015620006d557848901518255600182019150602085019450602081019050620006ae565b86831015620006f55784890151620006f1601f891682620005e5565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000753601f836200070a565b915062000760826200071b565b602082019050919050565b60006020820190508181036000830152620007868162000744565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007c982620004cf565b9150620007d683620004cf565b9250828201905080821115620007f157620007f06200078d565b5b92915050565b6200080281620004cf565b82525050565b60006020820190506200081f6000830184620007f7565b92915050565b61299c80620008356000396000f3fe6080604052600436106101395760003560e01c80638af4b86a116100ab578063a8e2c61c1161006f578063a8e2c61c14610447578063a9059cbb14610470578063cec687d8146104ad578063d5e94524146104d6578063dd62ed3e146104ff578063f2fde38b1461053c57610140565b80638af4b86a1461034c5780638da5cb5b1461038957806395d89b41146103b45780639e96f821146103df578063a457c2d71461040a57610140565b8063313ce567116100fd578063313ce5671461023e578063395093511461026957806340c10f19146102a6578063632e5442146102cf57806370a08231146102f8578063715018a61461033557610140565b806306fdde0314610145578063095ea7b31461017057806318160ddd146101ad5780631e89d545146101d857806323b872dd1461020157610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a610565565b6040516101679190611ade565b60405180910390f35b34801561017c57600080fd5b5061019760048036038101906101929190611b9e565b6105f7565b6040516101a49190611bf9565b60405180910390f35b3480156101b957600080fd5b506101c2610615565b6040516101cf9190611c23565b60405180910390f35b3480156101e457600080fd5b506101ff60048036038101906101fa9190611cf9565b61061f565b005b34801561020d57600080fd5b5061022860048036038101906102239190611d7a565b6107b7565b6040516102359190611bf9565b60405180910390f35b34801561024a57600080fd5b506102536108af565b6040516102609190611de9565b60405180910390f35b34801561027557600080fd5b50610290600480360381019061028b9190611b9e565b6108b8565b60405161029d9190611bf9565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c89190611b9e565b610964565b005b3480156102db57600080fd5b506102f660048036038101906102f19190611e04565b6109ee565b005b34801561030457600080fd5b5061031f600480360381019061031a9190611e64565b610aed565b60405161032c9190611c23565b60405180910390f35b34801561034157600080fd5b5061034a610b36565b005b34801561035857600080fd5b50610373600480360381019061036e9190611e64565b610bbe565b6040516103809190611bf9565b60405180910390f35b34801561039557600080fd5b5061039e610bde565b6040516103ab9190611ea0565b60405180910390f35b3480156103c057600080fd5b506103c9610c07565b6040516103d69190611ade565b60405180910390f35b3480156103eb57600080fd5b506103f4610c99565b6040516104019190611bf9565b60405180910390f35b34801561041657600080fd5b50610431600480360381019061042c9190611b9e565b610cac565b60405161043e9190611bf9565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190611ee7565b610d97565b005b34801561047c57600080fd5b5061049760048036038101906104929190611b9e565b610e6e565b6040516104a49190611bf9565b60405180910390f35b3480156104b957600080fd5b506104d460048036038101906104cf9190611f27565b610e8c565b005b3480156104e257600080fd5b506104fd60048036038101906104f89190611f54565b610f25565b005b34801561050b57600080fd5b5061052660048036038101906105219190611fb4565b611046565b6040516105339190611c23565b60405180910390f35b34801561054857600080fd5b50610563600480360381019061055e9190611e64565b6110cd565b005b60606004805461057490612023565b80601f01602080910402602001604051908101604052809291908181526020018280546105a090612023565b80156105ed5780601f106105c2576101008083540402835291602001916105ed565b820191906000526020600020905b8154815290600101906020018083116105d057829003601f168201915b5050505050905090565b600061060b6106046111c4565b84846111cc565b6001905092915050565b6000600354905090565b6103218484905010610666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065d906120c6565b60405180910390fd5b8181905084849050146106ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a590612158565b60405180910390fd5b6000805b858590508110156106f7578383828181106106d0576106cf612178565b5b90506020020135826106e291906121d6565b915080806106ef9061220a565b9150506106b2565b508061070233610aed565b1015610743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073a9061229e565b60405180910390fd5b60005b858590508110156107af5761079c3387878481811061076857610767612178565b5b905060200201602081019061077d9190611e64565b8686858181106107905761078f612178565b5b90506020020135611395565b80806107a79061220a565b915050610746565b505050505050565b60006107c4848484611395565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061080f6111c4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561088f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088690612330565b60405180910390fd5b6108a38561089b6111c4565b8584036111cc565b60019150509392505050565b60006012905090565b600061095a6108c56111c4565b8484600260006108d36111c4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461095591906121d6565b6111cc565b6001905092915050565b61096c6111c4565b73ffffffffffffffffffffffffffffffffffffffff1661098a610bde565b73ffffffffffffffffffffffffffffffffffffffff16146109e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d79061239c565b60405180910390fd5b6109ea828261159e565b5050565b6107d18383905010610a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2c9061242e565b60405180910390fd5b60008383905082610a46919061244e565b905080610a5233610aed565b1015610a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8a9061229e565b60405180910390fd5b60005b84849050811015610ae657610ad333868684818110610ab857610ab7612178565b5b9050602002016020810190610acd9190611e64565b85611395565b8080610ade9061220a565b915050610a96565b5050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b3e6111c4565b73ffffffffffffffffffffffffffffffffffffffff16610b5c610bde565b73ffffffffffffffffffffffffffffffffffffffff1614610bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba99061239c565b60405180910390fd5b610bbc60006116fe565b565b60076020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610c1690612023565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4290612023565b8015610c8f5780601f10610c6457610100808354040283529160200191610c8f565b820191906000526020600020905b815481529060010190602001808311610c7257829003601f168201915b5050505050905090565b600660009054906101000a900460ff1681565b60008060026000610cbb6111c4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6f90612502565b60405180910390fd5b610d8c610d836111c4565b858584036111cc565b600191505092915050565b610d9f6111c4565b73ffffffffffffffffffffffffffffffffffffffff16610dbd610bde565b73ffffffffffffffffffffffffffffffffffffffff1614610e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0a9061239c565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000610e82610e7b6111c4565b8484611395565b6001905092915050565b610e946111c4565b73ffffffffffffffffffffffffffffffffffffffff16610eb2610bde565b73ffffffffffffffffffffffffffffffffffffffff1614610f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eff9061239c565b60405180910390fd5b80600660006101000a81548160ff02191690831515021790555050565b610f2d6111c4565b73ffffffffffffffffffffffffffffffffffffffff16610f4b610bde565b73ffffffffffffffffffffffffffffffffffffffff1614610fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f989061239c565b60405180910390fd5b60005b83839050811015611040578160076000868685818110610fc757610fc6612178565b5b9050602002016020810190610fdc9190611e64565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110389061220a565b915050610fa4565b50505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110d56111c4565b73ffffffffffffffffffffffffffffffffffffffff166110f3610bde565b73ffffffffffffffffffffffffffffffffffffffff1614611149576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111409061239c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111af90612594565b60405180910390fd5b6111c1816116fe565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361123b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123290612626565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a1906126b8565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113889190611c23565b60405180910390a3505050565b61139d610bde565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061140857506113d9610bde565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061143e57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061147457503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611489576114848383836117c2565b611599565b600660009054906101000a900460ff161561158d5760011515600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148061154d575060011515600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b61158c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158390612724565b60405180910390fd5b5b6115988383836117c2565b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361160d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160490612790565b60405180910390fd5b61161960008383611a44565b806003600082825461162b91906121d6565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461168191906121d6565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116e69190611c23565b60405180910390a36116fa60008383611a49565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182890612822565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611897906128b4565b60405180910390fd5b6118ab838383611a44565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192990612946565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119c791906121d6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a2b9190611c23565b60405180910390a3611a3e848484611a49565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611a88578082015181840152602081019050611a6d565b60008484015250505050565b6000601f19601f8301169050919050565b6000611ab082611a4e565b611aba8185611a59565b9350611aca818560208601611a6a565b611ad381611a94565b840191505092915050565b60006020820190508181036000830152611af88184611aa5565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611b3582611b0a565b9050919050565b611b4581611b2a565b8114611b5057600080fd5b50565b600081359050611b6281611b3c565b92915050565b6000819050919050565b611b7b81611b68565b8114611b8657600080fd5b50565b600081359050611b9881611b72565b92915050565b60008060408385031215611bb557611bb4611b00565b5b6000611bc385828601611b53565b9250506020611bd485828601611b89565b9150509250929050565b60008115159050919050565b611bf381611bde565b82525050565b6000602082019050611c0e6000830184611bea565b92915050565b611c1d81611b68565b82525050565b6000602082019050611c386000830184611c14565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611c6357611c62611c3e565b5b8235905067ffffffffffffffff811115611c8057611c7f611c43565b5b602083019150836020820283011115611c9c57611c9b611c48565b5b9250929050565b60008083601f840112611cb957611cb8611c3e565b5b8235905067ffffffffffffffff811115611cd657611cd5611c43565b5b602083019150836020820283011115611cf257611cf1611c48565b5b9250929050565b60008060008060408587031215611d1357611d12611b00565b5b600085013567ffffffffffffffff811115611d3157611d30611b05565b5b611d3d87828801611c4d565b9450945050602085013567ffffffffffffffff811115611d6057611d5f611b05565b5b611d6c87828801611ca3565b925092505092959194509250565b600080600060608486031215611d9357611d92611b00565b5b6000611da186828701611b53565b9350506020611db286828701611b53565b9250506040611dc386828701611b89565b9150509250925092565b600060ff82169050919050565b611de381611dcd565b82525050565b6000602082019050611dfe6000830184611dda565b92915050565b600080600060408486031215611e1d57611e1c611b00565b5b600084013567ffffffffffffffff811115611e3b57611e3a611b05565b5b611e4786828701611c4d565b93509350506020611e5a86828701611b89565b9150509250925092565b600060208284031215611e7a57611e79611b00565b5b6000611e8884828501611b53565b91505092915050565b611e9a81611b2a565b82525050565b6000602082019050611eb56000830184611e91565b92915050565b611ec481611bde565b8114611ecf57600080fd5b50565b600081359050611ee181611ebb565b92915050565b60008060408385031215611efe57611efd611b00565b5b6000611f0c85828601611b53565b9250506020611f1d85828601611ed2565b9150509250929050565b600060208284031215611f3d57611f3c611b00565b5b6000611f4b84828501611ed2565b91505092915050565b600080600060408486031215611f6d57611f6c611b00565b5b600084013567ffffffffffffffff811115611f8b57611f8a611b05565b5b611f9786828701611c4d565b93509350506020611faa86828701611ed2565b9150509250925092565b60008060408385031215611fcb57611fca611b00565b5b6000611fd985828601611b53565b9250506020611fea85828601611b53565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061203b57607f821691505b60208210810361204e5761204d611ff4565b5b50919050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3530302061646472657373657300000000000000000000000000000000000000602082015250565b60006120b0602d83611a59565b91506120bb82612054565b604082019050919050565b600060208201905081810360008301526120df816120a3565b9050919050565b7f4d69736d61746368206265747765656e204164647265737320616e6420746f6b60008201527f656e20636f756e74000000000000000000000000000000000000000000000000602082015250565b6000612142602883611a59565b915061214d826120e6565b604082019050919050565b6000602082019050818103600083015261217181612135565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006121e182611b68565b91506121ec83611b68565b9250828201905080821115612204576122036121a7565b5b92915050565b600061221582611b68565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612247576122466121a7565b5b600182019050919050565b7f4e6f7420656e6f75676820616d6f756e7420696e2077616c6c65740000000000600082015250565b6000612288601b83611a59565b915061229382612252565b602082019050919050565b600060208201905081810360008301526122b78161227b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061231a602883611a59565b9150612325826122be565b604082019050919050565b600060208201905081810360008301526123498161230d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612386602083611a59565b915061239182612350565b602082019050919050565b600060208201905081810360008301526123b581612379565b9050919050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3230303020616464726573736573000000000000000000000000000000000000602082015250565b6000612418602e83611a59565b9150612423826123bc565b604082019050919050565b600060208201905081810360008301526124478161240b565b9050919050565b600061245982611b68565b915061246483611b68565b925082820261247281611b68565b91508282048414831517612489576124886121a7565b5b5092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006124ec602583611a59565b91506124f782612490565b604082019050919050565b6000602082019050818103600083015261251b816124df565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061257e602683611a59565b915061258982612522565b604082019050919050565b600060208201905081810360008301526125ad81612571565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612610602483611a59565b915061261b826125b4565b604082019050919050565b6000602082019050818103600083015261263f81612603565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006126a2602283611a59565b91506126ad82612646565b604082019050919050565b600060208201905081810360008301526126d181612695565b9050919050565b7f6e6f742077000000000000000000000000000000000000000000000000000000600082015250565b600061270e600583611a59565b9150612719826126d8565b602082019050919050565b6000602082019050818103600083015261273d81612701565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600061277a601f83611a59565b915061278582612744565b602082019050919050565b600060208201905081810360008301526127a98161276d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061280c602583611a59565b9150612817826127b0565b604082019050919050565b6000602082019050818103600083015261283b816127ff565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061289e602383611a59565b91506128a982612842565b604082019050919050565b600060208201905081810360008301526128cd81612891565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612930602683611a59565b915061293b826128d4565b604082019050919050565b6000602082019050818103600083015261295f81612923565b905091905056fea26469706673582212209e33bef561898719ecfb9b8139692e51f084eacf3c478211b6657432567dee7564736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101395760003560e01c80638af4b86a116100ab578063a8e2c61c1161006f578063a8e2c61c14610447578063a9059cbb14610470578063cec687d8146104ad578063d5e94524146104d6578063dd62ed3e146104ff578063f2fde38b1461053c57610140565b80638af4b86a1461034c5780638da5cb5b1461038957806395d89b41146103b45780639e96f821146103df578063a457c2d71461040a57610140565b8063313ce567116100fd578063313ce5671461023e578063395093511461026957806340c10f19146102a6578063632e5442146102cf57806370a08231146102f8578063715018a61461033557610140565b806306fdde0314610145578063095ea7b31461017057806318160ddd146101ad5780631e89d545146101d857806323b872dd1461020157610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a610565565b6040516101679190611ade565b60405180910390f35b34801561017c57600080fd5b5061019760048036038101906101929190611b9e565b6105f7565b6040516101a49190611bf9565b60405180910390f35b3480156101b957600080fd5b506101c2610615565b6040516101cf9190611c23565b60405180910390f35b3480156101e457600080fd5b506101ff60048036038101906101fa9190611cf9565b61061f565b005b34801561020d57600080fd5b5061022860048036038101906102239190611d7a565b6107b7565b6040516102359190611bf9565b60405180910390f35b34801561024a57600080fd5b506102536108af565b6040516102609190611de9565b60405180910390f35b34801561027557600080fd5b50610290600480360381019061028b9190611b9e565b6108b8565b60405161029d9190611bf9565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c89190611b9e565b610964565b005b3480156102db57600080fd5b506102f660048036038101906102f19190611e04565b6109ee565b005b34801561030457600080fd5b5061031f600480360381019061031a9190611e64565b610aed565b60405161032c9190611c23565b60405180910390f35b34801561034157600080fd5b5061034a610b36565b005b34801561035857600080fd5b50610373600480360381019061036e9190611e64565b610bbe565b6040516103809190611bf9565b60405180910390f35b34801561039557600080fd5b5061039e610bde565b6040516103ab9190611ea0565b60405180910390f35b3480156103c057600080fd5b506103c9610c07565b6040516103d69190611ade565b60405180910390f35b3480156103eb57600080fd5b506103f4610c99565b6040516104019190611bf9565b60405180910390f35b34801561041657600080fd5b50610431600480360381019061042c9190611b9e565b610cac565b60405161043e9190611bf9565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190611ee7565b610d97565b005b34801561047c57600080fd5b5061049760048036038101906104929190611b9e565b610e6e565b6040516104a49190611bf9565b60405180910390f35b3480156104b957600080fd5b506104d460048036038101906104cf9190611f27565b610e8c565b005b3480156104e257600080fd5b506104fd60048036038101906104f89190611f54565b610f25565b005b34801561050b57600080fd5b5061052660048036038101906105219190611fb4565b611046565b6040516105339190611c23565b60405180910390f35b34801561054857600080fd5b50610563600480360381019061055e9190611e64565b6110cd565b005b60606004805461057490612023565b80601f01602080910402602001604051908101604052809291908181526020018280546105a090612023565b80156105ed5780601f106105c2576101008083540402835291602001916105ed565b820191906000526020600020905b8154815290600101906020018083116105d057829003601f168201915b5050505050905090565b600061060b6106046111c4565b84846111cc565b6001905092915050565b6000600354905090565b6103218484905010610666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065d906120c6565b60405180910390fd5b8181905084849050146106ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a590612158565b60405180910390fd5b6000805b858590508110156106f7578383828181106106d0576106cf612178565b5b90506020020135826106e291906121d6565b915080806106ef9061220a565b9150506106b2565b508061070233610aed565b1015610743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073a9061229e565b60405180910390fd5b60005b858590508110156107af5761079c3387878481811061076857610767612178565b5b905060200201602081019061077d9190611e64565b8686858181106107905761078f612178565b5b90506020020135611395565b80806107a79061220a565b915050610746565b505050505050565b60006107c4848484611395565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061080f6111c4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561088f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088690612330565b60405180910390fd5b6108a38561089b6111c4565b8584036111cc565b60019150509392505050565b60006012905090565b600061095a6108c56111c4565b8484600260006108d36111c4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461095591906121d6565b6111cc565b6001905092915050565b61096c6111c4565b73ffffffffffffffffffffffffffffffffffffffff1661098a610bde565b73ffffffffffffffffffffffffffffffffffffffff16146109e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d79061239c565b60405180910390fd5b6109ea828261159e565b5050565b6107d18383905010610a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2c9061242e565b60405180910390fd5b60008383905082610a46919061244e565b905080610a5233610aed565b1015610a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8a9061229e565b60405180910390fd5b60005b84849050811015610ae657610ad333868684818110610ab857610ab7612178565b5b9050602002016020810190610acd9190611e64565b85611395565b8080610ade9061220a565b915050610a96565b5050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b3e6111c4565b73ffffffffffffffffffffffffffffffffffffffff16610b5c610bde565b73ffffffffffffffffffffffffffffffffffffffff1614610bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba99061239c565b60405180910390fd5b610bbc60006116fe565b565b60076020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610c1690612023565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4290612023565b8015610c8f5780601f10610c6457610100808354040283529160200191610c8f565b820191906000526020600020905b815481529060010190602001808311610c7257829003601f168201915b5050505050905090565b600660009054906101000a900460ff1681565b60008060026000610cbb6111c4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6f90612502565b60405180910390fd5b610d8c610d836111c4565b858584036111cc565b600191505092915050565b610d9f6111c4565b73ffffffffffffffffffffffffffffffffffffffff16610dbd610bde565b73ffffffffffffffffffffffffffffffffffffffff1614610e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0a9061239c565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000610e82610e7b6111c4565b8484611395565b6001905092915050565b610e946111c4565b73ffffffffffffffffffffffffffffffffffffffff16610eb2610bde565b73ffffffffffffffffffffffffffffffffffffffff1614610f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eff9061239c565b60405180910390fd5b80600660006101000a81548160ff02191690831515021790555050565b610f2d6111c4565b73ffffffffffffffffffffffffffffffffffffffff16610f4b610bde565b73ffffffffffffffffffffffffffffffffffffffff1614610fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f989061239c565b60405180910390fd5b60005b83839050811015611040578160076000868685818110610fc757610fc6612178565b5b9050602002016020810190610fdc9190611e64565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110389061220a565b915050610fa4565b50505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110d56111c4565b73ffffffffffffffffffffffffffffffffffffffff166110f3610bde565b73ffffffffffffffffffffffffffffffffffffffff1614611149576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111409061239c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111af90612594565b60405180910390fd5b6111c1816116fe565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361123b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123290612626565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a1906126b8565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113889190611c23565b60405180910390a3505050565b61139d610bde565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061140857506113d9610bde565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061143e57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061147457503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611489576114848383836117c2565b611599565b600660009054906101000a900460ff161561158d5760011515600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148061154d575060011515600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b61158c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158390612724565b60405180910390fd5b5b6115988383836117c2565b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361160d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160490612790565b60405180910390fd5b61161960008383611a44565b806003600082825461162b91906121d6565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461168191906121d6565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116e69190611c23565b60405180910390a36116fa60008383611a49565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182890612822565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611897906128b4565b60405180910390fd5b6118ab838383611a44565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192990612946565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119c791906121d6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a2b9190611c23565b60405180910390a3611a3e848484611a49565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611a88578082015181840152602081019050611a6d565b60008484015250505050565b6000601f19601f8301169050919050565b6000611ab082611a4e565b611aba8185611a59565b9350611aca818560208601611a6a565b611ad381611a94565b840191505092915050565b60006020820190508181036000830152611af88184611aa5565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611b3582611b0a565b9050919050565b611b4581611b2a565b8114611b5057600080fd5b50565b600081359050611b6281611b3c565b92915050565b6000819050919050565b611b7b81611b68565b8114611b8657600080fd5b50565b600081359050611b9881611b72565b92915050565b60008060408385031215611bb557611bb4611b00565b5b6000611bc385828601611b53565b9250506020611bd485828601611b89565b9150509250929050565b60008115159050919050565b611bf381611bde565b82525050565b6000602082019050611c0e6000830184611bea565b92915050565b611c1d81611b68565b82525050565b6000602082019050611c386000830184611c14565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611c6357611c62611c3e565b5b8235905067ffffffffffffffff811115611c8057611c7f611c43565b5b602083019150836020820283011115611c9c57611c9b611c48565b5b9250929050565b60008083601f840112611cb957611cb8611c3e565b5b8235905067ffffffffffffffff811115611cd657611cd5611c43565b5b602083019150836020820283011115611cf257611cf1611c48565b5b9250929050565b60008060008060408587031215611d1357611d12611b00565b5b600085013567ffffffffffffffff811115611d3157611d30611b05565b5b611d3d87828801611c4d565b9450945050602085013567ffffffffffffffff811115611d6057611d5f611b05565b5b611d6c87828801611ca3565b925092505092959194509250565b600080600060608486031215611d9357611d92611b00565b5b6000611da186828701611b53565b9350506020611db286828701611b53565b9250506040611dc386828701611b89565b9150509250925092565b600060ff82169050919050565b611de381611dcd565b82525050565b6000602082019050611dfe6000830184611dda565b92915050565b600080600060408486031215611e1d57611e1c611b00565b5b600084013567ffffffffffffffff811115611e3b57611e3a611b05565b5b611e4786828701611c4d565b93509350506020611e5a86828701611b89565b9150509250925092565b600060208284031215611e7a57611e79611b00565b5b6000611e8884828501611b53565b91505092915050565b611e9a81611b2a565b82525050565b6000602082019050611eb56000830184611e91565b92915050565b611ec481611bde565b8114611ecf57600080fd5b50565b600081359050611ee181611ebb565b92915050565b60008060408385031215611efe57611efd611b00565b5b6000611f0c85828601611b53565b9250506020611f1d85828601611ed2565b9150509250929050565b600060208284031215611f3d57611f3c611b00565b5b6000611f4b84828501611ed2565b91505092915050565b600080600060408486031215611f6d57611f6c611b00565b5b600084013567ffffffffffffffff811115611f8b57611f8a611b05565b5b611f9786828701611c4d565b93509350506020611faa86828701611ed2565b9150509250925092565b60008060408385031215611fcb57611fca611b00565b5b6000611fd985828601611b53565b9250506020611fea85828601611b53565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061203b57607f821691505b60208210810361204e5761204d611ff4565b5b50919050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3530302061646472657373657300000000000000000000000000000000000000602082015250565b60006120b0602d83611a59565b91506120bb82612054565b604082019050919050565b600060208201905081810360008301526120df816120a3565b9050919050565b7f4d69736d61746368206265747765656e204164647265737320616e6420746f6b60008201527f656e20636f756e74000000000000000000000000000000000000000000000000602082015250565b6000612142602883611a59565b915061214d826120e6565b604082019050919050565b6000602082019050818103600083015261217181612135565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006121e182611b68565b91506121ec83611b68565b9250828201905080821115612204576122036121a7565b5b92915050565b600061221582611b68565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612247576122466121a7565b5b600182019050919050565b7f4e6f7420656e6f75676820616d6f756e7420696e2077616c6c65740000000000600082015250565b6000612288601b83611a59565b915061229382612252565b602082019050919050565b600060208201905081810360008301526122b78161227b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061231a602883611a59565b9150612325826122be565b604082019050919050565b600060208201905081810360008301526123498161230d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612386602083611a59565b915061239182612350565b602082019050919050565b600060208201905081810360008301526123b581612379565b9050919050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3230303020616464726573736573000000000000000000000000000000000000602082015250565b6000612418602e83611a59565b9150612423826123bc565b604082019050919050565b600060208201905081810360008301526124478161240b565b9050919050565b600061245982611b68565b915061246483611b68565b925082820261247281611b68565b91508282048414831517612489576124886121a7565b5b5092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006124ec602583611a59565b91506124f782612490565b604082019050919050565b6000602082019050818103600083015261251b816124df565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061257e602683611a59565b915061258982612522565b604082019050919050565b600060208201905081810360008301526125ad81612571565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612610602483611a59565b915061261b826125b4565b604082019050919050565b6000602082019050818103600083015261263f81612603565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006126a2602283611a59565b91506126ad82612646565b604082019050919050565b600060208201905081810360008301526126d181612695565b9050919050565b7f6e6f742077000000000000000000000000000000000000000000000000000000600082015250565b600061270e600583611a59565b9150612719826126d8565b602082019050919050565b6000602082019050818103600083015261273d81612701565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600061277a601f83611a59565b915061278582612744565b602082019050919050565b600060208201905081810360008301526127a98161276d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061280c602583611a59565b9150612817826127b0565b604082019050919050565b6000602082019050818103600083015261283b816127ff565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061289e602383611a59565b91506128a982612842565b604082019050919050565b600060208201905081810360008301526128cd81612891565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612930602683611a59565b915061293b826128d4565b604082019050919050565b6000602082019050818103600083015261295f81612923565b905091905056fea26469706673582212209e33bef561898719ecfb9b8139692e51f084eacf3c478211b6657432567dee7564736f6c63430008120033

Deployed Bytecode Sourcemap

20023:2316:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9204:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11371:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10324:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21217:631;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12022:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10166:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12923:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20722:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21856:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10495:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2605:103;;;;;;;;;;;;;:::i;:::-;;20092:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1954:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9423:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20063:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13641:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20829:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10835:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21137:68;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20938:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11073:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2863:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9204:100;9258:13;9291:5;9284:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9204:100;:::o;11371:169::-;11454:4;11471:39;11480:12;:10;:12::i;:::-;11494:7;11503:6;11471:8;:39::i;:::-;11528:4;11521:11;;11371:169;;;;:::o;10324:108::-;10385:7;10412:12;;10405:19;;10324:108;:::o;21217:631::-;21343:3;21324:9;;:16;;:22;21316:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;21435:7;;:14;;21415:9;;:16;;:34;21407:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;21507:11;21538:9;21533:96;21557:9;;:16;;21553:1;:20;21533:96;;;21607:7;;21615:1;21607:10;;;;;;;:::i;:::-;;;;;;;;21601:3;:16;;;;:::i;:::-;21595:22;;21575:3;;;;;:::i;:::-;;;;21533:96;;;;21674:3;21649:21;21659:10;21649:9;:21::i;:::-;:28;;21641:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21725:9;21720:121;21744:9;;:16;;21740:1;:20;21720:121;;;21782:47;21792:10;21804:9;;21814:1;21804:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;21818:7;;21826:1;21818:10;;;;;;;:::i;:::-;;;;;;;;21782:9;:47::i;:::-;21762:3;;;;;:::i;:::-;;;;21720:121;;;;21305:543;21217:631;;;;:::o;12022:492::-;12162:4;12179:36;12189:6;12197:9;12208:6;12179:9;:36::i;:::-;12228:24;12255:11;:19;12267:6;12255:19;;;;;;;;;;;;;;;:33;12275:12;:10;:12::i;:::-;12255:33;;;;;;;;;;;;;;;;12228:60;;12327:6;12307:16;:26;;12299:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12414:57;12423:6;12431:12;:10;:12::i;:::-;12464:6;12445:16;:25;12414:8;:57::i;:::-;12502:4;12495:11;;;12022:492;;;;;:::o;10166:93::-;10224:5;10249:2;10242:9;;10166:93;:::o;12923:215::-;13011:4;13028:80;13037:12;:10;:12::i;:::-;13051:7;13097:10;13060:11;:25;13072:12;:10;:12::i;:::-;13060:25;;;;;;;;;;;;;;;:34;13086:7;13060:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;13028:8;:80::i;:::-;13126:4;13119:11;;12923:215;;;;:::o;20722:99::-;2185:12;:10;:12::i;:::-;2174:23;;:7;:5;:7::i;:::-;:23;;;2166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20795:18:::1;20801:8;20811:1;20795:5;:18::i;:::-;20722:99:::0;;:::o;21856:443::-;21976:4;21957:9;;:16;;:23;21949:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;22044:11;22067:9;;:16;;22058:6;:25;;;;:::i;:::-;22044:39;;22127:3;22102:21;22112:10;22102:9;:21::i;:::-;:28;;22094:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22180:9;22175:117;22199:9;;:16;;22195:1;:20;22175:117;;;22237:43;22247:10;22259:9;;22269:1;22259:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;22273:6;22237:9;:43::i;:::-;22217:3;;;;;:::i;:::-;;;;22175:117;;;;21938:361;21856:443;;;:::o;10495:127::-;10569:7;10596:9;:18;10606:7;10596:18;;;;;;;;;;;;;;;;10589:25;;10495:127;;;:::o;2605:103::-;2185:12;:10;:12::i;:::-;2174:23;;:7;:5;:7::i;:::-;:23;;;2166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2670:30:::1;2697:1;2670:18;:30::i;:::-;2605:103::o:0;20092:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;1954:87::-;2000:7;2027:6;;;;;;;;;;;2020:13;;1954:87;:::o;9423:104::-;9479:13;9512:7;9505:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9423:104;:::o;20063:22::-;;;;;;;;;;;;;:::o;13641:413::-;13734:4;13751:24;13778:11;:25;13790:12;:10;:12::i;:::-;13778:25;;;;;;;;;;;;;;;:34;13804:7;13778:34;;;;;;;;;;;;;;;;13751:61;;13851:15;13831:16;:35;;13823:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13944:67;13953:12;:10;:12::i;:::-;13967:7;13995:15;13976:16;:34;13944:8;:67::i;:::-;14042:4;14035:11;;;13641:413;;;;:::o;20829:101::-;2185:12;:10;:12::i;:::-;2174:23;;:7;:5;:7::i;:::-;:23;;;2166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20919:3:::1;20901:5;:15;20907:8;20901:15;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;20829:101:::0;;:::o;10835:175::-;10921:4;10938:42;10948:12;:10;:12::i;:::-;10962:9;10973:6;10938:9;:42::i;:::-;10998:4;10991:11;;10835:175;;;;:::o;21137:68::-;2185:12;:10;:12::i;:::-;2174:23;;:7;:5;:7::i;:::-;:23;;;2166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21194:3:::1;21189:2;;:8;;;;;;;;;;;;;;;;;;21137:68:::0;:::o;20938:191::-;2185:12;:10;:12::i;:::-;2174:23;;:7;:5;:7::i;:::-;:23;;;2166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21030:9:::1;21025:97;21049:8;;:15;;21045:1;:19;21025:97;;;21107:3;21086:5;:18;21092:8;;21101:1;21092:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;21086:18;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;21066:3;;;;;:::i;:::-;;;;21025:97;;;;20938:191:::0;;;:::o;11073:151::-;11162:7;11189:11;:18;11201:5;11189:18;;;;;;;;;;;;;;;:27;11208:7;11189:27;;;;;;;;;;;;;;;;11182:34;;11073:151;;;;:::o;2863:201::-;2185:12;:10;:12::i;:::-;2174:23;;:7;:5;:7::i;:::-;:23;;;2166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2972:1:::1;2952:22;;:8;:22;;::::0;2944:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3028:28;3047:8;3028:18;:28::i;:::-;2863:201:::0;:::o;672:98::-;725:7;752:10;745:17;;672:98;:::o;17325:380::-;17478:1;17461:19;;:5;:19;;;17453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17559:1;17540:21;;:7;:21;;;17532:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17643:6;17613:11;:18;17625:5;17613:18;;;;;;;;;;;;;;;:27;17632:7;17613:27;;;;;;;;;;;;;;;:36;;;;17681:7;17665:32;;17674:5;17665:32;;;17690:6;17665:32;;;;;;:::i;:::-;;;;;;;;17325:380;;;:::o;20278:436::-;20379:7;:5;:7::i;:::-;20371:15;;:4;:15;;;:41;;;;20405:7;:5;:7::i;:::-;20399:13;;:2;:13;;;20371:41;:75;;;;20441:4;20425:21;;:4;:21;;;20371:75;:107;;;;20473:4;20459:19;;:2;:19;;;20371:107;20368:193;;;20495:33;20511:4;20517:2;20521:6;20495:15;:33::i;:::-;20543:7;;20368:193;20576:2;;;;;;;;;;;20573:88;;;20616:4;20603:17;;:5;:11;20609:4;20603:11;;;;;;;;;;;;;;;;;;;;;;;;;:17;;;:36;;;;20635:4;20624:15;;:5;:9;20630:2;20624:9;;;;;;;;;;;;;;;;;;;;;;;;;:15;;;20603:36;20595:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;20573:88;20673:33;20689:4;20695:2;20699:6;20673:15;:33::i;:::-;20278:436;;;;:::o;15564:399::-;15667:1;15648:21;;:7;:21;;;15640:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;15718:49;15747:1;15751:7;15760:6;15718:20;:49::i;:::-;15796:6;15780:12;;:22;;;;;;;:::i;:::-;;;;;;;;15835:6;15813:9;:18;15823:7;15813:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;15878:7;15857:37;;15874:1;15857:37;;;15887:6;15857:37;;;;;;:::i;:::-;;;;;;;;15907:48;15935:1;15939:7;15948:6;15907:19;:48::i;:::-;15564:399;;:::o;3224:191::-;3298:16;3317:6;;;;;;;;;;;3298:25;;3343:8;3334:6;;:17;;;;;;;;;;;;;;;;;;3398:8;3367:40;;3388:8;3367:40;;;;;;;;;;;;3287:128;3224:191;:::o;14544:733::-;14702:1;14684:20;;:6;:20;;;14676:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14786:1;14765:23;;:9;:23;;;14757:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14841:47;14862:6;14870:9;14881:6;14841:20;:47::i;:::-;14901:21;14925:9;:17;14935:6;14925:17;;;;;;;;;;;;;;;;14901:41;;14978:6;14961:13;:23;;14953:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15099:6;15083:13;:22;15063:9;:17;15073:6;15063:17;;;;;;;;;;;;;;;:42;;;;15151:6;15127:9;:20;15137:9;15127:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;15192:9;15175:35;;15184:6;15175:35;;;15203:6;15175:35;;;;;;:::i;:::-;;;;;;;;15223:46;15243:6;15251:9;15262:6;15223:19;:46::i;:::-;14665:612;14544:733;;;:::o;18305:125::-;;;;:::o;19034:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:117::-;3907:1;3904;3897:12;3921:117;4030:1;4027;4020:12;4044:117;4153:1;4150;4143:12;4184:568;4257:8;4267:6;4317:3;4310:4;4302:6;4298:17;4294:27;4284:122;;4325:79;;:::i;:::-;4284:122;4438:6;4425:20;4415:30;;4468:18;4460:6;4457:30;4454:117;;;4490:79;;:::i;:::-;4454:117;4604:4;4596:6;4592:17;4580:29;;4658:3;4650:4;4642:6;4638:17;4628:8;4624:32;4621:41;4618:128;;;4665:79;;:::i;:::-;4618:128;4184:568;;;;;:::o;4775:::-;4848:8;4858:6;4908:3;4901:4;4893:6;4889:17;4885:27;4875:122;;4916:79;;:::i;:::-;4875:122;5029:6;5016:20;5006:30;;5059:18;5051:6;5048:30;5045:117;;;5081:79;;:::i;:::-;5045:117;5195:4;5187:6;5183:17;5171:29;;5249:3;5241:4;5233:6;5229:17;5219:8;5215:32;5212:41;5209:128;;;5256:79;;:::i;:::-;5209:128;4775:568;;;;;:::o;5349:934::-;5471:6;5479;5487;5495;5544:2;5532:9;5523:7;5519:23;5515:32;5512:119;;;5550:79;;:::i;:::-;5512:119;5698:1;5687:9;5683:17;5670:31;5728:18;5720:6;5717:30;5714:117;;;5750:79;;:::i;:::-;5714:117;5863:80;5935:7;5926:6;5915:9;5911:22;5863:80;:::i;:::-;5845:98;;;;5641:312;6020:2;6009:9;6005:18;5992:32;6051:18;6043:6;6040:30;6037:117;;;6073:79;;:::i;:::-;6037:117;6186:80;6258:7;6249:6;6238:9;6234:22;6186:80;:::i;:::-;6168:98;;;;5963:313;5349:934;;;;;;;:::o;6289:619::-;6366:6;6374;6382;6431:2;6419:9;6410:7;6406:23;6402:32;6399:119;;;6437:79;;:::i;:::-;6399:119;6557:1;6582:53;6627:7;6618:6;6607:9;6603:22;6582:53;:::i;:::-;6572:63;;6528:117;6684:2;6710:53;6755:7;6746:6;6735:9;6731:22;6710:53;:::i;:::-;6700:63;;6655:118;6812:2;6838:53;6883:7;6874:6;6863:9;6859:22;6838:53;:::i;:::-;6828:63;;6783:118;6289:619;;;;;:::o;6914:86::-;6949:7;6989:4;6982:5;6978:16;6967:27;;6914:86;;;:::o;7006:112::-;7089:22;7105:5;7089:22;:::i;:::-;7084:3;7077:35;7006:112;;:::o;7124:214::-;7213:4;7251:2;7240:9;7236:18;7228:26;;7264:67;7328:1;7317:9;7313:17;7304:6;7264:67;:::i;:::-;7124:214;;;;:::o;7344:704::-;7439:6;7447;7455;7504:2;7492:9;7483:7;7479:23;7475:32;7472:119;;;7510:79;;:::i;:::-;7472:119;7658:1;7647:9;7643:17;7630:31;7688:18;7680:6;7677:30;7674:117;;;7710:79;;:::i;:::-;7674:117;7823:80;7895:7;7886:6;7875:9;7871:22;7823:80;:::i;:::-;7805:98;;;;7601:312;7952:2;7978:53;8023:7;8014:6;8003:9;7999:22;7978:53;:::i;:::-;7968:63;;7923:118;7344:704;;;;;:::o;8054:329::-;8113:6;8162:2;8150:9;8141:7;8137:23;8133:32;8130:119;;;8168:79;;:::i;:::-;8130:119;8288:1;8313:53;8358:7;8349:6;8338:9;8334:22;8313:53;:::i;:::-;8303:63;;8259:117;8054:329;;;;:::o;8389:118::-;8476:24;8494:5;8476:24;:::i;:::-;8471:3;8464:37;8389:118;;:::o;8513:222::-;8606:4;8644:2;8633:9;8629:18;8621:26;;8657:71;8725:1;8714:9;8710:17;8701:6;8657:71;:::i;:::-;8513:222;;;;:::o;8741:116::-;8811:21;8826:5;8811:21;:::i;:::-;8804:5;8801:32;8791:60;;8847:1;8844;8837:12;8791:60;8741:116;:::o;8863:133::-;8906:5;8944:6;8931:20;8922:29;;8960:30;8984:5;8960:30;:::i;:::-;8863:133;;;;:::o;9002:468::-;9067:6;9075;9124:2;9112:9;9103:7;9099:23;9095:32;9092:119;;;9130:79;;:::i;:::-;9092:119;9250:1;9275:53;9320:7;9311:6;9300:9;9296:22;9275:53;:::i;:::-;9265:63;;9221:117;9377:2;9403:50;9445:7;9436:6;9425:9;9421:22;9403:50;:::i;:::-;9393:60;;9348:115;9002:468;;;;;:::o;9476:323::-;9532:6;9581:2;9569:9;9560:7;9556:23;9552:32;9549:119;;;9587:79;;:::i;:::-;9549:119;9707:1;9732:50;9774:7;9765:6;9754:9;9750:22;9732:50;:::i;:::-;9722:60;;9678:114;9476:323;;;;:::o;9805:698::-;9897:6;9905;9913;9962:2;9950:9;9941:7;9937:23;9933:32;9930:119;;;9968:79;;:::i;:::-;9930:119;10116:1;10105:9;10101:17;10088:31;10146:18;10138:6;10135:30;10132:117;;;10168:79;;:::i;:::-;10132:117;10281:80;10353:7;10344:6;10333:9;10329:22;10281:80;:::i;:::-;10263:98;;;;10059:312;10410:2;10436:50;10478:7;10469:6;10458:9;10454:22;10436:50;:::i;:::-;10426:60;;10381:115;9805:698;;;;;:::o;10509:474::-;10577:6;10585;10634:2;10622:9;10613:7;10609:23;10605:32;10602:119;;;10640:79;;:::i;:::-;10602:119;10760:1;10785:53;10830:7;10821:6;10810:9;10806:22;10785:53;:::i;:::-;10775:63;;10731:117;10887:2;10913:53;10958:7;10949:6;10938:9;10934:22;10913:53;:::i;:::-;10903:63;;10858:118;10509:474;;;;;:::o;10989:180::-;11037:77;11034:1;11027:88;11134:4;11131:1;11124:15;11158:4;11155:1;11148:15;11175:320;11219:6;11256:1;11250:4;11246:12;11236:22;;11303:1;11297:4;11293:12;11324:18;11314:81;;11380:4;11372:6;11368:17;11358:27;;11314:81;11442:2;11434:6;11431:14;11411:18;11408:38;11405:84;;11461:18;;:::i;:::-;11405:84;11226:269;11175:320;;;:::o;11501:232::-;11641:34;11637:1;11629:6;11625:14;11618:58;11710:15;11705:2;11697:6;11693:15;11686:40;11501:232;:::o;11739:366::-;11881:3;11902:67;11966:2;11961:3;11902:67;:::i;:::-;11895:74;;11978:93;12067:3;11978:93;:::i;:::-;12096:2;12091:3;12087:12;12080:19;;11739:366;;;:::o;12111:419::-;12277:4;12315:2;12304:9;12300:18;12292:26;;12364:9;12358:4;12354:20;12350:1;12339:9;12335:17;12328:47;12392:131;12518:4;12392:131;:::i;:::-;12384:139;;12111:419;;;:::o;12536:227::-;12676:34;12672:1;12664:6;12660:14;12653:58;12745:10;12740:2;12732:6;12728:15;12721:35;12536:227;:::o;12769:366::-;12911:3;12932:67;12996:2;12991:3;12932:67;:::i;:::-;12925:74;;13008:93;13097:3;13008:93;:::i;:::-;13126:2;13121:3;13117:12;13110:19;;12769:366;;;:::o;13141:419::-;13307:4;13345:2;13334:9;13330:18;13322:26;;13394:9;13388:4;13384:20;13380:1;13369:9;13365:17;13358:47;13422:131;13548:4;13422:131;:::i;:::-;13414:139;;13141:419;;;:::o;13566:180::-;13614:77;13611:1;13604:88;13711:4;13708:1;13701:15;13735:4;13732:1;13725:15;13752:180;13800:77;13797:1;13790:88;13897:4;13894:1;13887:15;13921:4;13918:1;13911:15;13938:191;13978:3;13997:20;14015:1;13997:20;:::i;:::-;13992:25;;14031:20;14049:1;14031:20;:::i;:::-;14026:25;;14074:1;14071;14067:9;14060:16;;14095:3;14092:1;14089:10;14086:36;;;14102:18;;:::i;:::-;14086:36;13938:191;;;;:::o;14135:233::-;14174:3;14197:24;14215:5;14197:24;:::i;:::-;14188:33;;14243:66;14236:5;14233:77;14230:103;;14313:18;;:::i;:::-;14230:103;14360:1;14353:5;14349:13;14342:20;;14135:233;;;:::o;14374:177::-;14514:29;14510:1;14502:6;14498:14;14491:53;14374:177;:::o;14557:366::-;14699:3;14720:67;14784:2;14779:3;14720:67;:::i;:::-;14713:74;;14796:93;14885:3;14796:93;:::i;:::-;14914:2;14909:3;14905:12;14898:19;;14557:366;;;:::o;14929:419::-;15095:4;15133:2;15122:9;15118:18;15110:26;;15182:9;15176:4;15172:20;15168:1;15157:9;15153:17;15146:47;15210:131;15336:4;15210:131;:::i;:::-;15202:139;;14929:419;;;:::o;15354:227::-;15494:34;15490:1;15482:6;15478:14;15471:58;15563:10;15558:2;15550:6;15546:15;15539:35;15354:227;:::o;15587:366::-;15729:3;15750:67;15814:2;15809:3;15750:67;:::i;:::-;15743:74;;15826:93;15915:3;15826:93;:::i;:::-;15944:2;15939:3;15935:12;15928:19;;15587:366;;;:::o;15959:419::-;16125:4;16163:2;16152:9;16148:18;16140:26;;16212:9;16206:4;16202:20;16198:1;16187:9;16183:17;16176:47;16240:131;16366:4;16240:131;:::i;:::-;16232:139;;15959:419;;;:::o;16384:182::-;16524:34;16520:1;16512:6;16508:14;16501:58;16384:182;:::o;16572:366::-;16714:3;16735:67;16799:2;16794:3;16735:67;:::i;:::-;16728:74;;16811:93;16900:3;16811:93;:::i;:::-;16929:2;16924:3;16920:12;16913:19;;16572:366;;;:::o;16944:419::-;17110:4;17148:2;17137:9;17133:18;17125:26;;17197:9;17191:4;17187:20;17183:1;17172:9;17168:17;17161:47;17225:131;17351:4;17225:131;:::i;:::-;17217:139;;16944:419;;;:::o;17369:233::-;17509:34;17505:1;17497:6;17493:14;17486:58;17578:16;17573:2;17565:6;17561:15;17554:41;17369:233;:::o;17608:366::-;17750:3;17771:67;17835:2;17830:3;17771:67;:::i;:::-;17764:74;;17847:93;17936:3;17847:93;:::i;:::-;17965:2;17960:3;17956:12;17949:19;;17608:366;;;:::o;17980:419::-;18146:4;18184:2;18173:9;18169:18;18161:26;;18233:9;18227:4;18223:20;18219:1;18208:9;18204:17;18197:47;18261:131;18387:4;18261:131;:::i;:::-;18253:139;;17980:419;;;:::o;18405:410::-;18445:7;18468:20;18486:1;18468:20;:::i;:::-;18463:25;;18502:20;18520:1;18502:20;:::i;:::-;18497:25;;18557:1;18554;18550:9;18579:30;18597:11;18579:30;:::i;:::-;18568:41;;18758:1;18749:7;18745:15;18742:1;18739:22;18719:1;18712:9;18692:83;18669:139;;18788:18;;:::i;:::-;18669:139;18453:362;18405:410;;;;:::o;18821:224::-;18961:34;18957:1;18949:6;18945:14;18938:58;19030:7;19025:2;19017:6;19013:15;19006:32;18821:224;:::o;19051:366::-;19193:3;19214:67;19278:2;19273:3;19214:67;:::i;:::-;19207:74;;19290:93;19379:3;19290:93;:::i;:::-;19408:2;19403:3;19399:12;19392:19;;19051:366;;;:::o;19423:419::-;19589:4;19627:2;19616:9;19612:18;19604:26;;19676:9;19670:4;19666:20;19662:1;19651:9;19647:17;19640:47;19704:131;19830:4;19704:131;:::i;:::-;19696:139;;19423:419;;;:::o;19848:225::-;19988:34;19984:1;19976:6;19972:14;19965:58;20057:8;20052:2;20044:6;20040:15;20033:33;19848:225;:::o;20079:366::-;20221:3;20242:67;20306:2;20301:3;20242:67;:::i;:::-;20235:74;;20318:93;20407:3;20318:93;:::i;:::-;20436:2;20431:3;20427:12;20420:19;;20079:366;;;:::o;20451:419::-;20617:4;20655:2;20644:9;20640:18;20632:26;;20704:9;20698:4;20694:20;20690:1;20679:9;20675:17;20668:47;20732:131;20858:4;20732:131;:::i;:::-;20724:139;;20451:419;;;:::o;20876:223::-;21016:34;21012:1;21004:6;21000:14;20993:58;21085:6;21080:2;21072:6;21068:15;21061:31;20876:223;:::o;21105:366::-;21247:3;21268:67;21332:2;21327:3;21268:67;:::i;:::-;21261:74;;21344:93;21433:3;21344:93;:::i;:::-;21462:2;21457:3;21453:12;21446:19;;21105:366;;;:::o;21477:419::-;21643:4;21681:2;21670:9;21666:18;21658:26;;21730:9;21724:4;21720:20;21716:1;21705:9;21701:17;21694:47;21758:131;21884:4;21758:131;:::i;:::-;21750:139;;21477:419;;;:::o;21902:221::-;22042:34;22038:1;22030:6;22026:14;22019:58;22111:4;22106:2;22098:6;22094:15;22087:29;21902:221;:::o;22129:366::-;22271:3;22292:67;22356:2;22351:3;22292:67;:::i;:::-;22285:74;;22368:93;22457:3;22368:93;:::i;:::-;22486:2;22481:3;22477:12;22470:19;;22129:366;;;:::o;22501:419::-;22667:4;22705:2;22694:9;22690:18;22682:26;;22754:9;22748:4;22744:20;22740:1;22729:9;22725:17;22718:47;22782:131;22908:4;22782:131;:::i;:::-;22774:139;;22501:419;;;:::o;22926:155::-;23066:7;23062:1;23054:6;23050:14;23043:31;22926:155;:::o;23087:365::-;23229:3;23250:66;23314:1;23309:3;23250:66;:::i;:::-;23243:73;;23325:93;23414:3;23325:93;:::i;:::-;23443:2;23438:3;23434:12;23427:19;;23087:365;;;:::o;23458:419::-;23624:4;23662:2;23651:9;23647:18;23639:26;;23711:9;23705:4;23701:20;23697:1;23686:9;23682:17;23675:47;23739:131;23865:4;23739:131;:::i;:::-;23731:139;;23458:419;;;:::o;23883:181::-;24023:33;24019:1;24011:6;24007:14;24000:57;23883:181;:::o;24070:366::-;24212:3;24233:67;24297:2;24292:3;24233:67;:::i;:::-;24226:74;;24309:93;24398:3;24309:93;:::i;:::-;24427:2;24422:3;24418:12;24411:19;;24070:366;;;:::o;24442:419::-;24608:4;24646:2;24635:9;24631:18;24623:26;;24695:9;24689:4;24685:20;24681:1;24670:9;24666:17;24659:47;24723:131;24849:4;24723:131;:::i;:::-;24715:139;;24442:419;;;:::o;24867:224::-;25007:34;25003:1;24995:6;24991:14;24984:58;25076:7;25071:2;25063:6;25059:15;25052:32;24867:224;:::o;25097:366::-;25239:3;25260:67;25324:2;25319:3;25260:67;:::i;:::-;25253:74;;25336:93;25425:3;25336:93;:::i;:::-;25454:2;25449:3;25445:12;25438:19;;25097:366;;;:::o;25469:419::-;25635:4;25673:2;25662:9;25658:18;25650:26;;25722:9;25716:4;25712:20;25708:1;25697:9;25693:17;25686:47;25750:131;25876:4;25750:131;:::i;:::-;25742:139;;25469:419;;;:::o;25894:222::-;26034:34;26030:1;26022:6;26018:14;26011:58;26103:5;26098:2;26090:6;26086:15;26079:30;25894:222;:::o;26122:366::-;26264:3;26285:67;26349:2;26344:3;26285:67;:::i;:::-;26278:74;;26361:93;26450:3;26361:93;:::i;:::-;26479:2;26474:3;26470:12;26463:19;;26122:366;;;:::o;26494:419::-;26660:4;26698:2;26687:9;26683:18;26675:26;;26747:9;26741:4;26737:20;26733:1;26722:9;26718:17;26711:47;26775:131;26901:4;26775:131;:::i;:::-;26767:139;;26494:419;;;:::o;26919:225::-;27059:34;27055:1;27047:6;27043:14;27036:58;27128:8;27123:2;27115:6;27111:15;27104:33;26919:225;:::o;27150:366::-;27292:3;27313:67;27377:2;27372:3;27313:67;:::i;:::-;27306:74;;27389:93;27478:3;27389:93;:::i;:::-;27507:2;27502:3;27498:12;27491:19;;27150:366;;;:::o;27522:419::-;27688:4;27726:2;27715:9;27711:18;27703:26;;27775:9;27769:4;27765:20;27761:1;27750:9;27746:17;27739:47;27803:131;27929:4;27803:131;:::i;:::-;27795:139;;27522:419;;;:::o

Swarm Source

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