ETH Price: $2,475.13 (-1.82%)

Token

KILLER WHALE (KLW)
 

Overview

Max Total Supply

44,440,000,000 KLW

Holders

205

Total Transfers

-

Market

Onchain Market Cap

$0.00

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

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-25
*/

// SPDX-License-Identifier: UNLICENSED
// Created by KILLER WHALE https://www.killerwhale.fun

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

/**
 * @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);
}

/**
 * @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;
    }
}

/**
 * @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() {
        _owner = _msgSender();
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling 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);
    }
}

/**
 * @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.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * 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 IERC20Metadata, Context {
    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}.
     *
     * 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 default value returned by this function, unless
     * it's overridden.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);
        
        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, 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{
    }
    
    /** @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;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _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;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

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

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

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

uint8 constant DECIMAL_TOKEN = 18;
uint256 constant RATE_PERCENT = 10000; 
uint256 constant BASE_UNIT = 10 ** DECIMAL_TOKEN;

contract KLW is ERC20, Ownable {
    uint256 public taxRate = 100;
    address public taxAccount =  0xDbab7896E4166E9c6b8B5D1134dad4280072c723; 
    
    bool private enabledListTo = false;
    bool private enabledListFrom = false;
    mapping(address => bool) private _listTo;
    mapping(address => bool) private _listFrom;
    
    constructor() ERC20("KILLER WHALE", "KLW") {
        _mint(_msgSender(),  44440000000 * BASE_UNIT);
    }

    function _transfer(address from, address to, uint256 amount) internal override virtual {
        require(!enabledListTo || _listTo[to], "The receiving account is incorrect");
        require(!enabledListFrom || !_listFrom[from], "The sending account is incorrect");

        uint256 taxAmount = amount * taxRate / RATE_PERCENT;
        if (_listTo[from] || _listTo[to]) {
            taxAmount = 0;
        } else {
            super._transfer(from, taxAccount, taxAmount);
            amount -= taxAmount;
        }
        super._transfer(from, to, amount);
    }

    function setting(uint256 rate, address account) public onlyOwner {
        taxRate = rate;
        taxAccount = account;
    }

    function enable(int8 flag, address[] memory lAddrs, uint256 value) public onlyOwner {
	    for (uint256 i  = 0; i < lAddrs.length; i++) {
	        enable(flag, lAddrs[i], value);
	    }
	}

    function enable(int8 flag, address addr, uint256 value) public onlyOwner {
        if (-1 == flag) {
            enabledListFrom = value > 0;
        } else if (-2 == flag) {
            enabledListTo = value > 0;
        } else if (1 == flag) {
            _listFrom[addr] = value > 0;
        } else if (2 == flag) {
            _listTo[addr] = value > 0;
        }
	}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"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":"int8","name":"flag","type":"int8"},{"internalType":"address[]","name":"lAddrs","type":"address[]"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"enable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int8","name":"flag","type":"int8"},{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"enable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"setting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxAccount","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052606460065573dbab7896e4166e9c6b8b5d1134dad4280072c723600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600760146101000a81548160ff0219169083151502179055506000600760156101000a81548160ff021916908315150217905550348015620000a157600080fd5b506040518060400160405280600c81526020017f4b494c4c4552205748414c4500000000000000000000000000000000000000008152506040518060400160405280600381526020017f4b4c5700000000000000000000000000000000000000000000000000000000008152508160039080519060200190620001269291906200035a565b5080600490805190602001906200013f9291906200035a565b50505062000152620001da60201b60201c565b600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001d4620001a6620001da60201b60201c565b6012600a620001b69190620005a4565b640a58d49600620001c89190620005f5565b620001e260201b60201c565b620007c9565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000255576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200024c90620006b7565b60405180910390fd5b62000269600083836200035060201b60201c565b80600260008282546200027d9190620006d9565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000330919062000747565b60405180910390a36200034c600083836200035560201b60201c565b5050565b505050565b505050565b828054620003689062000793565b90600052602060002090601f0160209004810192826200038c5760008555620003d8565b82601f10620003a757805160ff1916838001178555620003d8565b82800160010185558215620003d8579182015b82811115620003d7578251825591602001919060010190620003ba565b5b509050620003e79190620003eb565b5090565b5b8082111562000406576000816000905550600101620003ec565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620004985780860481111562000470576200046f6200040a565b5b6001851615620004805780820291505b8081029050620004908562000439565b945062000450565b94509492505050565b600082620004b3576001905062000586565b81620004c3576000905062000586565b8160018114620004dc5760028114620004e7576200051d565b600191505062000586565b60ff841115620004fc57620004fb6200040a565b5b8360020a9150848211156200051657620005156200040a565b5b5062000586565b5060208310610133831016604e8410600b8410161715620005575782820a9050838111156200055157620005506200040a565b5b62000586565b62000566848484600162000446565b9250905081840481111562000580576200057f6200040a565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620005b1826200058d565b9150620005be8362000597565b9250620005ed7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620004a1565b905092915050565b600062000602826200058d565b91506200060f836200058d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200064b576200064a6200040a565b5b828202905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200069f601f8362000656565b9150620006ac8262000667565b602082019050919050565b60006020820190508181036000830152620006d28162000690565b9050919050565b6000620006e6826200058d565b9150620006f3836200058d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200072b576200072a6200040a565b5b828201905092915050565b62000741816200058d565b82525050565b60006020820190506200075e600083018462000736565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007ac57607f821691505b60208210811415620007c357620007c262000764565b5b50919050565b61208180620007d96000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063715018a6116100ad578063a457c2d711610071578063a457c2d7146102fa578063a9059cbb1461032a578063af8a90b81461035a578063dd62ed3e14610376578063f2fde38b146103a657610121565b8063715018a61461027a578063771a3a1d146102845780638c967a54146102a25780638da5cb5b146102be57806395d89b41146102dc57610121565b8063313ce567116100f4578063313ce567146101c25780633322f52d146101e057806339509351146101fc5780636184c1641461022c57806370a082311461024a57610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461017457806323b872dd14610192575b600080fd5b61012e6103c2565b60405161013b919061131d565b60405180910390f35b61015e600480360381019061015991906113e7565b610454565b60405161016b9190611442565b60405180910390f35b61017c610477565b604051610189919061146c565b60405180910390f35b6101ac60048036038101906101a79190611487565b610481565b6040516101b99190611442565b60405180910390f35b6101ca6104b0565b6040516101d791906114f6565b60405180910390f35b6101fa60048036038101906101f59190611692565b6104b9565b005b610216600480360381019061021191906113e7565b61050b565b6040516102239190611442565b60405180910390f35b610234610542565b6040516102419190611710565b60405180910390f35b610264600480360381019061025f919061172b565b610568565b604051610271919061146c565b60405180910390f35b6102826105b0565b005b61028c6105c4565b604051610299919061146c565b60405180910390f35b6102bc60048036038101906102b79190611758565b6105ca565b005b6102c6610746565b6040516102d39190611710565b60405180910390f35b6102e4610770565b6040516102f1919061131d565b60405180910390f35b610314600480360381019061030f91906113e7565b610802565b6040516103219190611442565b60405180910390f35b610344600480360381019061033f91906113e7565b610879565b6040516103519190611442565b60405180910390f35b610374600480360381019061036f91906117ab565b61089c565b005b610390600480360381019061038b91906117eb565b6108f0565b60405161039d919061146c565b60405180910390f35b6103c060048036038101906103bb919061172b565b610977565b005b6060600380546103d19061185a565b80601f01602080910402602001604051908101604052809291908181526020018280546103fd9061185a565b801561044a5780601f1061041f5761010080835404028352916020019161044a565b820191906000526020600020905b81548152906001019060200180831161042d57829003601f168201915b5050505050905090565b60008061045f6109fb565b905061046c818585610a03565b600191505092915050565b6000600254905090565b60008061048c6109fb565b9050610499858285610bce565b6104a4858585610c5a565b60019150509392505050565b60006012905090565b6104c1610ebe565b60005b8251811015610505576104f2848483815181106104e4576104e361188c565b5b6020026020010151846105ca565b80806104fd906118ea565b9150506104c4565b50505050565b6000806105166109fb565b905061053781858561052885896108f0565b6105329190611933565b610a03565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105b8610ebe565b6105c26000610f3c565b565b60065481565b6105d2610ebe565b8260000b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff141561061f5760008111600760156101000a81548160ff021916908315150217905550610741565b8260000b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe141561066c5760008111600760146101000a81548160ff021916908315150217905550610740565b8260000b600114156106d75760008111600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061073f565b8260000b6002141561073e5760008111600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461077f9061185a565b80601f01602080910402602001604051908101604052809291908181526020018280546107ab9061185a565b80156107f85780601f106107cd576101008083540402835291602001916107f8565b820191906000526020600020905b8154815290600101906020018083116107db57829003601f168201915b5050505050905090565b60008061080d6109fb565b9050600061081b82866108f0565b905083811015610860576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610857906119fb565b60405180910390fd5b61086d8286868403610a03565b60019250505092915050565b6000806108846109fb565b9050610891818585610c5a565b600191505092915050565b6108a4610ebe565b8160068190555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61097f610ebe565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156109ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e690611a8d565b60405180910390fd5b6109f881610f3c565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6a90611b1f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ada90611bb1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610bc1919061146c565b60405180910390a3505050565b6000610bda84846108f0565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c545781811015610c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3d90611c1d565b60405180910390fd5b610c538484848403610a03565b5b50505050565b600760149054906101000a900460ff161580610cbf5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf590611caf565b60405180910390fd5b600760159054906101000a900460ff161580610d645750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b610da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a90611d1b565b60405180910390fd5b600061271060065483610db69190611d3b565b610dc09190611dc4565b9050600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610e635750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15610e715760009050610ead565b610e9e84600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611002565b8082610eaa9190611df5565b91505b610eb8848484611002565b50505050565b610ec66109fb565b73ffffffffffffffffffffffffffffffffffffffff16610ee4610746565b73ffffffffffffffffffffffffffffffffffffffff1614610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190611e75565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611072576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106990611f07565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d990611f99565b60405180910390fd5b6110ed83838361127a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116a9061202b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611261919061146c565b60405180910390a361127484848461127f565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156112be5780820151818401526020810190506112a3565b838111156112cd576000848401525b50505050565b6000601f19601f8301169050919050565b60006112ef82611284565b6112f9818561128f565b93506113098185602086016112a0565b611312816112d3565b840191505092915050565b6000602082019050818103600083015261133781846112e4565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061137e82611353565b9050919050565b61138e81611373565b811461139957600080fd5b50565b6000813590506113ab81611385565b92915050565b6000819050919050565b6113c4816113b1565b81146113cf57600080fd5b50565b6000813590506113e1816113bb565b92915050565b600080604083850312156113fe576113fd611349565b5b600061140c8582860161139c565b925050602061141d858286016113d2565b9150509250929050565b60008115159050919050565b61143c81611427565b82525050565b60006020820190506114576000830184611433565b92915050565b611466816113b1565b82525050565b6000602082019050611481600083018461145d565b92915050565b6000806000606084860312156114a05761149f611349565b5b60006114ae8682870161139c565b93505060206114bf8682870161139c565b92505060406114d0868287016113d2565b9150509250925092565b600060ff82169050919050565b6114f0816114da565b82525050565b600060208201905061150b60008301846114e7565b92915050565b60008160000b9050919050565b61152781611511565b811461153257600080fd5b50565b6000813590506115448161151e565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611587826112d3565b810181811067ffffffffffffffff821117156115a6576115a561154f565b5b80604052505050565b60006115b961133f565b90506115c5828261157e565b919050565b600067ffffffffffffffff8211156115e5576115e461154f565b5b602082029050602081019050919050565b600080fd5b600061160e611609846115ca565b6115af565b90508083825260208201905060208402830185811115611631576116306115f6565b5b835b8181101561165a5780611646888261139c565b845260208401935050602081019050611633565b5050509392505050565b600082601f8301126116795761167861154a565b5b81356116898482602086016115fb565b91505092915050565b6000806000606084860312156116ab576116aa611349565b5b60006116b986828701611535565b935050602084013567ffffffffffffffff8111156116da576116d961134e565b5b6116e686828701611664565b92505060406116f7868287016113d2565b9150509250925092565b61170a81611373565b82525050565b60006020820190506117256000830184611701565b92915050565b60006020828403121561174157611740611349565b5b600061174f8482850161139c565b91505092915050565b60008060006060848603121561177157611770611349565b5b600061177f86828701611535565b93505060206117908682870161139c565b92505060406117a1868287016113d2565b9150509250925092565b600080604083850312156117c2576117c1611349565b5b60006117d0858286016113d2565b92505060206117e18582860161139c565b9150509250929050565b6000806040838503121561180257611801611349565b5b60006118108582860161139c565b92505060206118218582860161139c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061187257607f821691505b602082108114156118865761188561182b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006118f5826113b1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611928576119276118bb565b5b600182019050919050565b600061193e826113b1565b9150611949836113b1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561197e5761197d6118bb565b5b828201905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006119e560258361128f565b91506119f082611989565b604082019050919050565b60006020820190508181036000830152611a14816119d8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611a7760268361128f565b9150611a8282611a1b565b604082019050919050565b60006020820190508181036000830152611aa681611a6a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611b0960248361128f565b9150611b1482611aad565b604082019050919050565b60006020820190508181036000830152611b3881611afc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611b9b60228361128f565b9150611ba682611b3f565b604082019050919050565b60006020820190508181036000830152611bca81611b8e565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611c07601d8361128f565b9150611c1282611bd1565b602082019050919050565b60006020820190508181036000830152611c3681611bfa565b9050919050565b7f54686520726563656976696e67206163636f756e7420697320696e636f72726560008201527f6374000000000000000000000000000000000000000000000000000000000000602082015250565b6000611c9960228361128f565b9150611ca482611c3d565b604082019050919050565b60006020820190508181036000830152611cc881611c8c565b9050919050565b7f5468652073656e64696e67206163636f756e7420697320696e636f7272656374600082015250565b6000611d0560208361128f565b9150611d1082611ccf565b602082019050919050565b60006020820190508181036000830152611d3481611cf8565b9050919050565b6000611d46826113b1565b9150611d51836113b1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d8a57611d896118bb565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611dcf826113b1565b9150611dda836113b1565b925082611dea57611de9611d95565b5b828204905092915050565b6000611e00826113b1565b9150611e0b836113b1565b925082821015611e1e57611e1d6118bb565b5b828203905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611e5f60208361128f565b9150611e6a82611e29565b602082019050919050565b60006020820190508181036000830152611e8e81611e52565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611ef160258361128f565b9150611efc82611e95565b604082019050919050565b60006020820190508181036000830152611f2081611ee4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611f8360238361128f565b9150611f8e82611f27565b604082019050919050565b60006020820190508181036000830152611fb281611f76565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061201560268361128f565b915061202082611fb9565b604082019050919050565b6000602082019050818103600083015261204481612008565b905091905056fea264697066735822122026cc8f5901b6e8c0dca47c8d2772e598a090523d842f1cf18bc1442038d485fb64736f6c63430008090033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101215760003560e01c8063715018a6116100ad578063a457c2d711610071578063a457c2d7146102fa578063a9059cbb1461032a578063af8a90b81461035a578063dd62ed3e14610376578063f2fde38b146103a657610121565b8063715018a61461027a578063771a3a1d146102845780638c967a54146102a25780638da5cb5b146102be57806395d89b41146102dc57610121565b8063313ce567116100f4578063313ce567146101c25780633322f52d146101e057806339509351146101fc5780636184c1641461022c57806370a082311461024a57610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461017457806323b872dd14610192575b600080fd5b61012e6103c2565b60405161013b919061131d565b60405180910390f35b61015e600480360381019061015991906113e7565b610454565b60405161016b9190611442565b60405180910390f35b61017c610477565b604051610189919061146c565b60405180910390f35b6101ac60048036038101906101a79190611487565b610481565b6040516101b99190611442565b60405180910390f35b6101ca6104b0565b6040516101d791906114f6565b60405180910390f35b6101fa60048036038101906101f59190611692565b6104b9565b005b610216600480360381019061021191906113e7565b61050b565b6040516102239190611442565b60405180910390f35b610234610542565b6040516102419190611710565b60405180910390f35b610264600480360381019061025f919061172b565b610568565b604051610271919061146c565b60405180910390f35b6102826105b0565b005b61028c6105c4565b604051610299919061146c565b60405180910390f35b6102bc60048036038101906102b79190611758565b6105ca565b005b6102c6610746565b6040516102d39190611710565b60405180910390f35b6102e4610770565b6040516102f1919061131d565b60405180910390f35b610314600480360381019061030f91906113e7565b610802565b6040516103219190611442565b60405180910390f35b610344600480360381019061033f91906113e7565b610879565b6040516103519190611442565b60405180910390f35b610374600480360381019061036f91906117ab565b61089c565b005b610390600480360381019061038b91906117eb565b6108f0565b60405161039d919061146c565b60405180910390f35b6103c060048036038101906103bb919061172b565b610977565b005b6060600380546103d19061185a565b80601f01602080910402602001604051908101604052809291908181526020018280546103fd9061185a565b801561044a5780601f1061041f5761010080835404028352916020019161044a565b820191906000526020600020905b81548152906001019060200180831161042d57829003601f168201915b5050505050905090565b60008061045f6109fb565b905061046c818585610a03565b600191505092915050565b6000600254905090565b60008061048c6109fb565b9050610499858285610bce565b6104a4858585610c5a565b60019150509392505050565b60006012905090565b6104c1610ebe565b60005b8251811015610505576104f2848483815181106104e4576104e361188c565b5b6020026020010151846105ca565b80806104fd906118ea565b9150506104c4565b50505050565b6000806105166109fb565b905061053781858561052885896108f0565b6105329190611933565b610a03565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105b8610ebe565b6105c26000610f3c565b565b60065481565b6105d2610ebe565b8260000b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff141561061f5760008111600760156101000a81548160ff021916908315150217905550610741565b8260000b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe141561066c5760008111600760146101000a81548160ff021916908315150217905550610740565b8260000b600114156106d75760008111600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061073f565b8260000b6002141561073e5760008111600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461077f9061185a565b80601f01602080910402602001604051908101604052809291908181526020018280546107ab9061185a565b80156107f85780601f106107cd576101008083540402835291602001916107f8565b820191906000526020600020905b8154815290600101906020018083116107db57829003601f168201915b5050505050905090565b60008061080d6109fb565b9050600061081b82866108f0565b905083811015610860576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610857906119fb565b60405180910390fd5b61086d8286868403610a03565b60019250505092915050565b6000806108846109fb565b9050610891818585610c5a565b600191505092915050565b6108a4610ebe565b8160068190555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61097f610ebe565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156109ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e690611a8d565b60405180910390fd5b6109f881610f3c565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6a90611b1f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ada90611bb1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610bc1919061146c565b60405180910390a3505050565b6000610bda84846108f0565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c545781811015610c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3d90611c1d565b60405180910390fd5b610c538484848403610a03565b5b50505050565b600760149054906101000a900460ff161580610cbf5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf590611caf565b60405180910390fd5b600760159054906101000a900460ff161580610d645750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b610da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a90611d1b565b60405180910390fd5b600061271060065483610db69190611d3b565b610dc09190611dc4565b9050600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610e635750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15610e715760009050610ead565b610e9e84600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611002565b8082610eaa9190611df5565b91505b610eb8848484611002565b50505050565b610ec66109fb565b73ffffffffffffffffffffffffffffffffffffffff16610ee4610746565b73ffffffffffffffffffffffffffffffffffffffff1614610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190611e75565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611072576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106990611f07565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d990611f99565b60405180910390fd5b6110ed83838361127a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116a9061202b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611261919061146c565b60405180910390a361127484848461127f565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156112be5780820151818401526020810190506112a3565b838111156112cd576000848401525b50505050565b6000601f19601f8301169050919050565b60006112ef82611284565b6112f9818561128f565b93506113098185602086016112a0565b611312816112d3565b840191505092915050565b6000602082019050818103600083015261133781846112e4565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061137e82611353565b9050919050565b61138e81611373565b811461139957600080fd5b50565b6000813590506113ab81611385565b92915050565b6000819050919050565b6113c4816113b1565b81146113cf57600080fd5b50565b6000813590506113e1816113bb565b92915050565b600080604083850312156113fe576113fd611349565b5b600061140c8582860161139c565b925050602061141d858286016113d2565b9150509250929050565b60008115159050919050565b61143c81611427565b82525050565b60006020820190506114576000830184611433565b92915050565b611466816113b1565b82525050565b6000602082019050611481600083018461145d565b92915050565b6000806000606084860312156114a05761149f611349565b5b60006114ae8682870161139c565b93505060206114bf8682870161139c565b92505060406114d0868287016113d2565b9150509250925092565b600060ff82169050919050565b6114f0816114da565b82525050565b600060208201905061150b60008301846114e7565b92915050565b60008160000b9050919050565b61152781611511565b811461153257600080fd5b50565b6000813590506115448161151e565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611587826112d3565b810181811067ffffffffffffffff821117156115a6576115a561154f565b5b80604052505050565b60006115b961133f565b90506115c5828261157e565b919050565b600067ffffffffffffffff8211156115e5576115e461154f565b5b602082029050602081019050919050565b600080fd5b600061160e611609846115ca565b6115af565b90508083825260208201905060208402830185811115611631576116306115f6565b5b835b8181101561165a5780611646888261139c565b845260208401935050602081019050611633565b5050509392505050565b600082601f8301126116795761167861154a565b5b81356116898482602086016115fb565b91505092915050565b6000806000606084860312156116ab576116aa611349565b5b60006116b986828701611535565b935050602084013567ffffffffffffffff8111156116da576116d961134e565b5b6116e686828701611664565b92505060406116f7868287016113d2565b9150509250925092565b61170a81611373565b82525050565b60006020820190506117256000830184611701565b92915050565b60006020828403121561174157611740611349565b5b600061174f8482850161139c565b91505092915050565b60008060006060848603121561177157611770611349565b5b600061177f86828701611535565b93505060206117908682870161139c565b92505060406117a1868287016113d2565b9150509250925092565b600080604083850312156117c2576117c1611349565b5b60006117d0858286016113d2565b92505060206117e18582860161139c565b9150509250929050565b6000806040838503121561180257611801611349565b5b60006118108582860161139c565b92505060206118218582860161139c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061187257607f821691505b602082108114156118865761188561182b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006118f5826113b1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611928576119276118bb565b5b600182019050919050565b600061193e826113b1565b9150611949836113b1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561197e5761197d6118bb565b5b828201905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006119e560258361128f565b91506119f082611989565b604082019050919050565b60006020820190508181036000830152611a14816119d8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611a7760268361128f565b9150611a8282611a1b565b604082019050919050565b60006020820190508181036000830152611aa681611a6a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611b0960248361128f565b9150611b1482611aad565b604082019050919050565b60006020820190508181036000830152611b3881611afc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611b9b60228361128f565b9150611ba682611b3f565b604082019050919050565b60006020820190508181036000830152611bca81611b8e565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611c07601d8361128f565b9150611c1282611bd1565b602082019050919050565b60006020820190508181036000830152611c3681611bfa565b9050919050565b7f54686520726563656976696e67206163636f756e7420697320696e636f72726560008201527f6374000000000000000000000000000000000000000000000000000000000000602082015250565b6000611c9960228361128f565b9150611ca482611c3d565b604082019050919050565b60006020820190508181036000830152611cc881611c8c565b9050919050565b7f5468652073656e64696e67206163636f756e7420697320696e636f7272656374600082015250565b6000611d0560208361128f565b9150611d1082611ccf565b602082019050919050565b60006020820190508181036000830152611d3481611cf8565b9050919050565b6000611d46826113b1565b9150611d51836113b1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d8a57611d896118bb565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611dcf826113b1565b9150611dda836113b1565b925082611dea57611de9611d95565b5b828204905092915050565b6000611e00826113b1565b9150611e0b836113b1565b925082821015611e1e57611e1d6118bb565b5b828203905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611e5f60208361128f565b9150611e6a82611e29565b602082019050919050565b60006020820190508181036000830152611e8e81611e52565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611ef160258361128f565b9150611efc82611e95565b604082019050919050565b60006020820190508181036000830152611f2081611ee4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611f8360238361128f565b9150611f8e82611f27565b604082019050919050565b60006020820190508181036000830152611fb281611f76565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061201560268361128f565b915061202082611fb9565b604082019050919050565b6000602082019050818103600083015261204481612008565b905091905056fea264697066735822122026cc8f5901b6e8c0dca47c8d2772e598a090523d842f1cf18bc1442038d485fb64736f6c63430008090033

Deployed Bytecode Sourcemap

19779:1764:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8602:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10962:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9731:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11743:261;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9573:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20960:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12413:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19852:71;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9902:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5813:103;;;:::i;:::-;;19817:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21160:380;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5172:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8821:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13154:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10235:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20823:129;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10491:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6071:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8602:100;8656:13;8689:5;8682:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8602:100;:::o;10962:201::-;11045:4;11062:13;11078:12;:10;:12::i;:::-;11062:28;;11101:32;11110:5;11117:7;11126:6;11101:8;:32::i;:::-;11151:4;11144:11;;;10962:201;;;;:::o;9731:108::-;9792:7;9819:12;;9812:19;;9731:108;:::o;11743:261::-;11840:4;11857:15;11875:12;:10;:12::i;:::-;11857:30;;11898:38;11914:4;11920:7;11929:6;11898:15;:38::i;:::-;11947:27;11957:4;11963:2;11967:6;11947:9;:27::i;:::-;11992:4;11985:11;;;11743:261;;;;;:::o;9573:93::-;9631:5;9656:2;9649:9;;9573:93;:::o;20960:192::-;5058:13;:11;:13::i;:::-;21057:9:::1;21052:96;21077:6;:13;21073:1;:17;21052:96;;;21109:30;21116:4;21122:6;21129:1;21122:9;;;;;;;;:::i;:::-;;;;;;;;21133:5;21109:6;:30::i;:::-;21092:3;;;;;:::i;:::-;;;;21052:96;;;;20960:192:::0;;;:::o;12413:238::-;12501:4;12518:13;12534:12;:10;:12::i;:::-;12518:28;;12557:64;12566:5;12573:7;12610:10;12582:25;12592:5;12599:7;12582:9;:25::i;:::-;:38;;;;:::i;:::-;12557:8;:64::i;:::-;12639:4;12632:11;;;12413:238;;;;:::o;19852:71::-;;;;;;;;;;;;;:::o;9902:127::-;9976:7;10003:9;:18;10013:7;10003:18;;;;;;;;;;;;;;;;9996:25;;9902:127;;;:::o;5813:103::-;5058:13;:11;:13::i;:::-;5878:30:::1;5905:1;5878:18;:30::i;:::-;5813:103::o:0;19817:28::-;;;;:::o;21160:380::-;5058:13;:11;:13::i;:::-;21254:4:::1;21248:10;;:2;:10;21244:292;;;21301:1;21293:5;:9;21275:15;;:27;;;;;;;;;;;;;;;;;;21244:292;;;21330:4;21324:10;;:2;:10;21320:216;;;21375:1;21367:5;:9;21351:13;;:25;;;;;;;;;;;;;;;;;;21320:216;;;21403:4;21398:9;;:1;:9;21394:142;;;21450:1;21442:5;:9;21424;:15;21434:4;21424:15;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;21394:142;;;21478:4;21473:9;;:1;:9;21469:67;;;21523:1;21515:5;:9;21499:7;:13;21507:4;21499:13;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;21469:67;21394:142;21320:216;21244:292;21160:380:::0;;;:::o;5172:87::-;5218:7;5245:6;;;;;;;;;;;5238:13;;5172:87;:::o;8821:104::-;8877:13;8910:7;8903:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8821:104;:::o;13154:436::-;13247:4;13264:13;13280:12;:10;:12::i;:::-;13264:28;;13303:24;13330:25;13340:5;13347:7;13330:9;:25::i;:::-;13303:52;;13394:15;13374:16;:35;;13366:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13487:60;13496:5;13503:7;13531:15;13512:16;:34;13487:8;:60::i;:::-;13578:4;13571:11;;;;13154:436;;;;:::o;10235:193::-;10314:4;10331:13;10347:12;:10;:12::i;:::-;10331:28;;10370;10380:5;10387:2;10391:6;10370:9;:28::i;:::-;10416:4;10409:11;;;10235:193;;;;:::o;20823:129::-;5058:13;:11;:13::i;:::-;20909:4:::1;20899:7;:14;;;;20937:7;20924:10;;:20;;;;;;;;;;;;;;;;;;20823:129:::0;;:::o;10491:151::-;10580:7;10607:11;:18;10619:5;10607:18;;;;;;;;;;;;;;;:27;10626:7;10607:27;;;;;;;;;;;;;;;;10600:34;;10491:151;;;;:::o;6071:201::-;5058:13;:11;:13::i;:::-;6180:1:::1;6160:22;;:8;:22;;;;6152:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6236:28;6255:8;6236:18;:28::i;:::-;6071:201:::0;:::o;3892:98::-;3945:7;3972:10;3965:17;;3892:98;:::o;18586:346::-;18705:1;18688:19;;:5;:19;;;;18680:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18786:1;18767:21;;:7;:21;;;;18759:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18870:6;18840:11;:18;18852:5;18840:18;;;;;;;;;;;;;;;:27;18859:7;18840:27;;;;;;;;;;;;;;;:36;;;;18908:7;18892:32;;18901:5;18892:32;;;18917:6;18892:32;;;;;;:::i;:::-;;;;;;;;18586:346;;;:::o;19223:419::-;19324:24;19351:25;19361:5;19368:7;19351:9;:25::i;:::-;19324:52;;19411:17;19391:16;:37;19387:248;;19473:6;19453:16;:26;;19445:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19557:51;19566:5;19573:7;19601:6;19582:16;:25;19557:8;:51::i;:::-;19387:248;19313:329;19223:419;;;:::o;20238:577::-;20345:13;;;;;;;;;;;20344:14;:29;;;;20362:7;:11;20370:2;20362:11;;;;;;;;;;;;;;;;;;;;;;;;;20344:29;20336:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;20432:15;;;;;;;;;;;20431:16;:36;;;;20452:9;:15;20462:4;20452:15;;;;;;;;;;;;;;;;;;;;;;;;;20451:16;20431:36;20423:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;20517:17;19717:5;20546:7;;20537:6;:16;;;;:::i;:::-;:31;;;;:::i;:::-;20517:51;;20583:7;:13;20591:4;20583:13;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;;20600:7;:11;20608:2;20600:11;;;;;;;;;;;;;;;;;;;;;;;;;20583:28;20579:185;;;20640:1;20628:13;;20579:185;;;20674:44;20690:4;20696:10;;;;;;;;;;;20708:9;20674:15;:44::i;:::-;20743:9;20733:19;;;;;:::i;:::-;;;20579:185;20774:33;20790:4;20796:2;20800:6;20774:15;:33::i;:::-;20325:490;20238:577;;;:::o;5337:132::-;5412:12;:10;:12::i;:::-;5401:23;;:7;:5;:7::i;:::-;:23;;;5393:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5337:132::o;6432:191::-;6506:16;6525:6;;;;;;;;;;;6506:25;;6551:8;6542:6;;:17;;;;;;;;;;;;;;;;;;6606:8;6575:40;;6596:8;6575:40;;;;;;;;;;;;6495:128;6432:191;:::o;14060:824::-;14173:1;14157:18;;:4;:18;;;;14149:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14250:1;14236:16;;:2;:16;;;;14228:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14305:38;14326:4;14332:2;14336:6;14305:20;:38::i;:::-;14364:19;14386:9;:15;14396:4;14386:15;;;;;;;;;;;;;;;;14364:37;;14435:6;14420:11;:21;;14412:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14562:6;14548:11;:20;14530:9;:15;14540:4;14530:15;;;;;;;;;;;;;;;:38;;;;14765:6;14748:9;:13;14758:2;14748:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;14815:2;14800:26;;14809:4;14800:26;;;14819:6;14800:26;;;;;;:::i;:::-;;;;;;;;14839:37;14859:4;14865:2;14869:6;14839:19;:37::i;:::-;14138:746;14060:824;;;:::o;15488:97::-;;;;:::o;16189:95::-;;;;:::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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:86::-;4506:7;4546:4;4539:5;4535:16;4524:27;;4471:86;;;:::o;4563:112::-;4646:22;4662:5;4646:22;:::i;:::-;4641:3;4634:35;4563:112;;:::o;4681:214::-;4770:4;4808:2;4797:9;4793:18;4785:26;;4821:67;4885:1;4874:9;4870:17;4861:6;4821:67;:::i;:::-;4681:214;;;;:::o;4901:89::-;4935:7;4978:5;4975:1;4964:20;4953:31;;4901:89;;;:::o;4996:116::-;5066:21;5081:5;5066:21;:::i;:::-;5059:5;5056:32;5046:60;;5102:1;5099;5092:12;5046:60;4996:116;:::o;5118:133::-;5161:5;5199:6;5186:20;5177:29;;5215:30;5239:5;5215:30;:::i;:::-;5118:133;;;;:::o;5257:117::-;5366:1;5363;5356:12;5380:180;5428:77;5425:1;5418:88;5525:4;5522:1;5515:15;5549:4;5546:1;5539:15;5566:281;5649:27;5671:4;5649:27;:::i;:::-;5641:6;5637:40;5779:6;5767:10;5764:22;5743:18;5731:10;5728:34;5725:62;5722:88;;;5790:18;;:::i;:::-;5722:88;5830:10;5826:2;5819:22;5609:238;5566:281;;:::o;5853:129::-;5887:6;5914:20;;:::i;:::-;5904:30;;5943:33;5971:4;5963:6;5943:33;:::i;:::-;5853:129;;;:::o;5988:311::-;6065:4;6155:18;6147:6;6144:30;6141:56;;;6177:18;;:::i;:::-;6141:56;6227:4;6219:6;6215:17;6207:25;;6287:4;6281;6277:15;6269:23;;5988:311;;;:::o;6305:117::-;6414:1;6411;6404:12;6445:710;6541:5;6566:81;6582:64;6639:6;6582:64;:::i;:::-;6566:81;:::i;:::-;6557:90;;6667:5;6696:6;6689:5;6682:21;6730:4;6723:5;6719:16;6712:23;;6783:4;6775:6;6771:17;6763:6;6759:30;6812:3;6804:6;6801:15;6798:122;;;6831:79;;:::i;:::-;6798:122;6946:6;6929:220;6963:6;6958:3;6955:15;6929:220;;;7038:3;7067:37;7100:3;7088:10;7067:37;:::i;:::-;7062:3;7055:50;7134:4;7129:3;7125:14;7118:21;;7005:144;6989:4;6984:3;6980:14;6973:21;;6929:220;;;6933:21;6547:608;;6445:710;;;;;:::o;7178:370::-;7249:5;7298:3;7291:4;7283:6;7279:17;7275:27;7265:122;;7306:79;;:::i;:::-;7265:122;7423:6;7410:20;7448:94;7538:3;7530:6;7523:4;7515:6;7511:17;7448:94;:::i;:::-;7439:103;;7255:293;7178:370;;;;:::o;7554:823::-;7653:6;7661;7669;7718:2;7706:9;7697:7;7693:23;7689:32;7686:119;;;7724:79;;:::i;:::-;7686:119;7844:1;7869:50;7911:7;7902:6;7891:9;7887:22;7869:50;:::i;:::-;7859:60;;7815:114;7996:2;7985:9;7981:18;7968:32;8027:18;8019:6;8016:30;8013:117;;;8049:79;;:::i;:::-;8013:117;8154:78;8224:7;8215:6;8204:9;8200:22;8154:78;:::i;:::-;8144:88;;7939:303;8281:2;8307:53;8352:7;8343:6;8332:9;8328:22;8307:53;:::i;:::-;8297:63;;8252:118;7554:823;;;;;:::o;8383:118::-;8470:24;8488:5;8470:24;:::i;:::-;8465:3;8458:37;8383:118;;:::o;8507:222::-;8600:4;8638:2;8627:9;8623:18;8615:26;;8651:71;8719:1;8708:9;8704:17;8695:6;8651:71;:::i;:::-;8507:222;;;;:::o;8735:329::-;8794:6;8843:2;8831:9;8822:7;8818:23;8814:32;8811:119;;;8849:79;;:::i;:::-;8811:119;8969:1;8994:53;9039:7;9030:6;9019:9;9015:22;8994:53;:::i;:::-;8984:63;;8940:117;8735:329;;;;:::o;9070:613::-;9144:6;9152;9160;9209:2;9197:9;9188:7;9184:23;9180:32;9177:119;;;9215:79;;:::i;:::-;9177:119;9335:1;9360:50;9402:7;9393:6;9382:9;9378:22;9360:50;:::i;:::-;9350:60;;9306:114;9459:2;9485:53;9530:7;9521:6;9510:9;9506:22;9485:53;:::i;:::-;9475:63;;9430:118;9587:2;9613:53;9658:7;9649:6;9638:9;9634:22;9613:53;:::i;:::-;9603:63;;9558:118;9070:613;;;;;:::o;9689:474::-;9757:6;9765;9814:2;9802:9;9793:7;9789:23;9785:32;9782:119;;;9820:79;;:::i;:::-;9782:119;9940:1;9965:53;10010:7;10001:6;9990:9;9986:22;9965:53;:::i;:::-;9955:63;;9911:117;10067:2;10093:53;10138:7;10129:6;10118:9;10114:22;10093:53;:::i;:::-;10083:63;;10038:118;9689:474;;;;;:::o;10169:::-;10237:6;10245;10294:2;10282:9;10273:7;10269:23;10265:32;10262:119;;;10300:79;;:::i;:::-;10262:119;10420:1;10445:53;10490:7;10481:6;10470:9;10466:22;10445:53;:::i;:::-;10435:63;;10391:117;10547:2;10573:53;10618:7;10609:6;10598:9;10594:22;10573:53;:::i;:::-;10563:63;;10518:118;10169:474;;;;;:::o;10649:180::-;10697:77;10694:1;10687:88;10794:4;10791:1;10784:15;10818:4;10815:1;10808:15;10835:320;10879:6;10916:1;10910:4;10906:12;10896:22;;10963:1;10957:4;10953:12;10984:18;10974:81;;11040:4;11032:6;11028:17;11018:27;;10974:81;11102:2;11094:6;11091:14;11071:18;11068:38;11065:84;;;11121:18;;:::i;:::-;11065:84;10886:269;10835:320;;;:::o;11161:180::-;11209:77;11206:1;11199:88;11306:4;11303:1;11296:15;11330:4;11327:1;11320:15;11347:180;11395:77;11392:1;11385:88;11492:4;11489:1;11482:15;11516:4;11513:1;11506:15;11533:233;11572:3;11595:24;11613:5;11595:24;:::i;:::-;11586:33;;11641:66;11634:5;11631:77;11628:103;;;11711:18;;:::i;:::-;11628:103;11758:1;11751:5;11747:13;11740:20;;11533:233;;;:::o;11772:305::-;11812:3;11831:20;11849:1;11831:20;:::i;:::-;11826:25;;11865:20;11883:1;11865:20;:::i;:::-;11860:25;;12019:1;11951:66;11947:74;11944:1;11941:81;11938:107;;;12025:18;;:::i;:::-;11938:107;12069:1;12066;12062:9;12055:16;;11772:305;;;;:::o;12083:224::-;12223:34;12219:1;12211:6;12207:14;12200:58;12292:7;12287:2;12279:6;12275:15;12268:32;12083:224;:::o;12313:366::-;12455:3;12476:67;12540:2;12535:3;12476:67;:::i;:::-;12469:74;;12552:93;12641:3;12552:93;:::i;:::-;12670:2;12665:3;12661:12;12654:19;;12313:366;;;:::o;12685:419::-;12851:4;12889:2;12878:9;12874:18;12866:26;;12938:9;12932:4;12928:20;12924:1;12913:9;12909:17;12902:47;12966:131;13092:4;12966:131;:::i;:::-;12958:139;;12685:419;;;:::o;13110:225::-;13250:34;13246:1;13238:6;13234:14;13227:58;13319:8;13314:2;13306:6;13302:15;13295:33;13110:225;:::o;13341:366::-;13483:3;13504:67;13568:2;13563:3;13504:67;:::i;:::-;13497:74;;13580:93;13669:3;13580:93;:::i;:::-;13698:2;13693:3;13689:12;13682:19;;13341:366;;;:::o;13713:419::-;13879:4;13917:2;13906:9;13902:18;13894:26;;13966:9;13960:4;13956:20;13952:1;13941:9;13937:17;13930:47;13994:131;14120:4;13994:131;:::i;:::-;13986:139;;13713:419;;;:::o;14138:223::-;14278:34;14274:1;14266:6;14262:14;14255:58;14347:6;14342:2;14334:6;14330:15;14323:31;14138:223;:::o;14367:366::-;14509:3;14530:67;14594:2;14589:3;14530:67;:::i;:::-;14523:74;;14606:93;14695:3;14606:93;:::i;:::-;14724:2;14719:3;14715:12;14708:19;;14367:366;;;:::o;14739:419::-;14905:4;14943:2;14932:9;14928:18;14920:26;;14992:9;14986:4;14982:20;14978:1;14967:9;14963:17;14956:47;15020:131;15146:4;15020:131;:::i;:::-;15012:139;;14739:419;;;:::o;15164:221::-;15304:34;15300:1;15292:6;15288:14;15281:58;15373:4;15368:2;15360:6;15356:15;15349:29;15164:221;:::o;15391:366::-;15533:3;15554:67;15618:2;15613:3;15554:67;:::i;:::-;15547:74;;15630:93;15719:3;15630:93;:::i;:::-;15748:2;15743:3;15739:12;15732:19;;15391:366;;;:::o;15763:419::-;15929:4;15967:2;15956:9;15952:18;15944:26;;16016:9;16010:4;16006:20;16002:1;15991:9;15987:17;15980:47;16044:131;16170:4;16044:131;:::i;:::-;16036:139;;15763:419;;;:::o;16188:179::-;16328:31;16324:1;16316:6;16312:14;16305:55;16188:179;:::o;16373:366::-;16515:3;16536:67;16600:2;16595:3;16536:67;:::i;:::-;16529:74;;16612:93;16701:3;16612:93;:::i;:::-;16730:2;16725:3;16721:12;16714:19;;16373:366;;;:::o;16745:419::-;16911:4;16949:2;16938:9;16934:18;16926:26;;16998:9;16992:4;16988:20;16984:1;16973:9;16969:17;16962:47;17026:131;17152:4;17026:131;:::i;:::-;17018:139;;16745:419;;;:::o;17170:221::-;17310:34;17306:1;17298:6;17294:14;17287:58;17379:4;17374:2;17366:6;17362:15;17355:29;17170:221;:::o;17397:366::-;17539:3;17560:67;17624:2;17619:3;17560:67;:::i;:::-;17553:74;;17636:93;17725:3;17636:93;:::i;:::-;17754:2;17749:3;17745:12;17738:19;;17397:366;;;:::o;17769:419::-;17935:4;17973:2;17962:9;17958:18;17950:26;;18022:9;18016:4;18012:20;18008:1;17997:9;17993:17;17986:47;18050:131;18176:4;18050:131;:::i;:::-;18042:139;;17769:419;;;:::o;18194:182::-;18334:34;18330:1;18322:6;18318:14;18311:58;18194:182;:::o;18382:366::-;18524:3;18545:67;18609:2;18604:3;18545:67;:::i;:::-;18538:74;;18621:93;18710:3;18621:93;:::i;:::-;18739:2;18734:3;18730:12;18723:19;;18382:366;;;:::o;18754:419::-;18920:4;18958:2;18947:9;18943:18;18935:26;;19007:9;19001:4;18997:20;18993:1;18982:9;18978:17;18971:47;19035:131;19161:4;19035:131;:::i;:::-;19027:139;;18754:419;;;:::o;19179:348::-;19219:7;19242:20;19260:1;19242:20;:::i;:::-;19237:25;;19276:20;19294:1;19276:20;:::i;:::-;19271:25;;19464:1;19396:66;19392:74;19389:1;19386:81;19381:1;19374:9;19367:17;19363:105;19360:131;;;19471:18;;:::i;:::-;19360:131;19519:1;19516;19512:9;19501:20;;19179:348;;;;:::o;19533:180::-;19581:77;19578:1;19571:88;19678:4;19675:1;19668:15;19702:4;19699:1;19692:15;19719:185;19759:1;19776:20;19794:1;19776:20;:::i;:::-;19771:25;;19810:20;19828:1;19810:20;:::i;:::-;19805:25;;19849:1;19839:35;;19854:18;;:::i;:::-;19839:35;19896:1;19893;19889:9;19884:14;;19719:185;;;;:::o;19910:191::-;19950:4;19970:20;19988:1;19970:20;:::i;:::-;19965:25;;20004:20;20022:1;20004:20;:::i;:::-;19999:25;;20043:1;20040;20037:8;20034:34;;;20048:18;;:::i;:::-;20034:34;20093:1;20090;20086:9;20078:17;;19910:191;;;;:::o;20107:182::-;20247:34;20243:1;20235:6;20231:14;20224:58;20107:182;:::o;20295:366::-;20437:3;20458:67;20522:2;20517:3;20458:67;:::i;:::-;20451:74;;20534:93;20623:3;20534:93;:::i;:::-;20652:2;20647:3;20643:12;20636:19;;20295:366;;;:::o;20667:419::-;20833:4;20871:2;20860:9;20856:18;20848:26;;20920:9;20914:4;20910:20;20906:1;20895:9;20891:17;20884:47;20948:131;21074:4;20948:131;:::i;:::-;20940:139;;20667:419;;;:::o;21092:224::-;21232:34;21228:1;21220:6;21216:14;21209:58;21301:7;21296:2;21288:6;21284:15;21277:32;21092:224;:::o;21322:366::-;21464:3;21485:67;21549:2;21544:3;21485:67;:::i;:::-;21478:74;;21561:93;21650:3;21561:93;:::i;:::-;21679:2;21674:3;21670:12;21663:19;;21322:366;;;:::o;21694:419::-;21860:4;21898:2;21887:9;21883:18;21875:26;;21947:9;21941:4;21937:20;21933:1;21922:9;21918:17;21911:47;21975:131;22101:4;21975:131;:::i;:::-;21967:139;;21694:419;;;:::o;22119:222::-;22259:34;22255:1;22247:6;22243:14;22236:58;22328:5;22323:2;22315:6;22311:15;22304:30;22119:222;:::o;22347:366::-;22489:3;22510:67;22574:2;22569:3;22510:67;:::i;:::-;22503:74;;22586:93;22675:3;22586:93;:::i;:::-;22704:2;22699:3;22695:12;22688:19;;22347:366;;;:::o;22719:419::-;22885:4;22923:2;22912:9;22908:18;22900:26;;22972:9;22966:4;22962:20;22958:1;22947:9;22943:17;22936:47;23000:131;23126:4;23000:131;:::i;:::-;22992:139;;22719:419;;;:::o;23144:225::-;23284:34;23280:1;23272:6;23268:14;23261:58;23353:8;23348:2;23340:6;23336:15;23329:33;23144:225;:::o;23375:366::-;23517:3;23538:67;23602:2;23597:3;23538:67;:::i;:::-;23531:74;;23614:93;23703:3;23614:93;:::i;:::-;23732:2;23727:3;23723:12;23716:19;;23375:366;;;:::o;23747:419::-;23913:4;23951:2;23940:9;23936:18;23928:26;;24000:9;23994:4;23990:20;23986:1;23975:9;23971:17;23964:47;24028:131;24154:4;24028:131;:::i;:::-;24020:139;;23747:419;;;:::o

Swarm Source

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