ETH Price: $2,358.51 (-0.29%)

Token

VITAO (VITAO)
 

Overview

Max Total Supply

1,000,000 VITAO

Holders

109

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
6,999.999999999999999999 VITAO

Value
$0.00
0xd168343dA56d890656045B8530982bc13EBfD38b
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:
VITAO

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-07
*/

// Website:  https://vitaoai.com
// Twitter:  https://twitter.com/vitao_ai
// Telegram: https://t.me/vitao_ai_portal

// SPDX-License-Identifier: MIT

pragma solidity 0.8.21;

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

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);
}

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);
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. 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);
    }
}

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

contract VITAO is Ownable, ERC20 {
    event RemovedLimits();
    event TradingEnabled();
    event SwapBack(uint256 amount);

    address public uniswapV2Pair;
    IUniswapV2Router02 immutable router =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    uint256 SUPPLY = 1_000_000 * 10 ** 18;

    uint256 totalFee = 50;
    uint256 maxAmount = SUPPLY / 100;
    uint256 public maxWallet;
    uint256 public blockPenalty;
    uint256 totalPenaltyFee = 300;

    address public marketingWallet;
    address public _distribFund;
    address public _TAOFund;

    bool private tradingEnable;
    bool public limitsInEffect = true;
    uint256 public swapAt = (SUPPLY * 3) / 1000;

    mapping(address => bool) public isExcludedFromFees;

    constructor(address[] memory _whitelist) ERC20("VITAO", "VITAO") {
        marketingWallet = _msgSender();
        address pair = IUniswapV2Factory(router.factory()).createPair(
            address(this),
            router.WETH()
        );
        uniswapV2Pair = pair;

        isExcludedFromFees[_msgSender()] = true;
        isExcludedFromFees[address(this)] = true;
        isExcludedFromFees[address(router)] = true;
        _approve(_msgSender(), address(router), type(uint256).max);

        uint256 wlShares = (SUPPLY * 10) / 100;
        _mint(address(this), SUPPLY);
        _approve(address(this), owner(), SUPPLY);
        for (uint256 i = 0; i < _whitelist.length; i++) {
            transferFrom(address(this), _whitelist[i], wlShares / _whitelist.length);
        }
        transferFrom(address(this), owner(), SUPPLY - wlShares);
    }

    function updateSwapAt(uint256 value) external onlyOwner {
        require(
            value <= SUPPLY / 50,
            "Value must be less than or equal to SUPPLY / 50"
        );
        swapAt = value;
    }

    function openTrading(uint256 _blockPenalty) external onlyOwner {
        tradingEnable = true;
        blockPenalty = block.number + _blockPenalty;
        maxWallet = SUPPLY / 100;
        emit TradingEnabled();
    }

    function excludedFromFees(
        address _address,
        bool _value
    ) external onlyOwner {
        isExcludedFromFees[_address] = _value;
    }

    function removeLimits() external onlyOwner {
        require(limitsInEffect, "Limits already removed");
        limitsInEffect = false;
        maxWallet = SUPPLY;
        emit RemovedLimits();
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        if (
            isExcludedFromFees[from] ||
            isExcludedFromFees[to] ||
            (to != uniswapV2Pair && from != uniswapV2Pair) ||
            inSwap
        ) {
            super._transfer(from, to, amount);
            return;
        }

        require(tradingEnable, "Trading is not open");

        if (limitsInEffect) {
            if (from == uniswapV2Pair || to == uniswapV2Pair) {
                require(amount <= maxAmount, "Max Tx Exceeded");
            }
            if (to != uniswapV2Pair) {
                require(
                    balanceOf(to) + amount <= maxWallet,
                    "Max Wallet Exceeded"
                );
            }
        }

        uint256 totalFees = totalFee;

        if (block.number <= blockPenalty) {
            totalFees = totalPenaltyFee;
        }

        uint256 fees = (amount * totalFees) / 1000;
        require(fees < amount, "NEG");

        if (to == uniswapV2Pair && balanceOf(address(this)) >= swapAt) {
            swapBack();
        }

        if (fees > 0) {
            super._transfer(from, address(this), fees);
            amount = amount - fees;
        }
        super._transfer(from, to, amount);
    }

    bool private inSwap = false;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    function swapBack() public swapping {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), swapAt);

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapAt,
            0,
            path,
            address(this),
            block.timestamp
        );

        emit SwapBack(swapAt);
    }

    function setMarketingWallet(address payable _marketingWallet) onlyOwner external {
        marketingWallet = _marketingWallet;
    }

    function setTAOFund(address payable __TAOFund) external onlyOwner {
        _TAOFund = __TAOFund;
    }

    function setDistribFund(address payable __distrib) external onlyOwner {
        _distribFund = __distrib;
    }

    function emergency() external onlyOwner {
        _approve(address(this), owner(), balanceOf(address(this)));
        transferFrom(address(this), owner(), balanceOf(address(this)));
    }

    receive() external payable {
        uint256 value = msg.value;
        uint256 amountToTAOFund = (value * 40) / 100; // 60%
        uint256 amountToMarketing = (value * 20) / 100; // 60%
        uint256 amountToDistrib = value - amountToTAOFund - amountToMarketing;

        (bool sent, ) = payable(marketingWallet).call{value: amountToMarketing}(
            ""
        );

        require(sent, "Failed to send Ether");

        (sent, ) = payable(_distribFund).call{value: amountToDistrib}(
            ""
        );

        require(sent, "Failed to send Ether");

        (sent, ) = payable(_TAOFund).call{value: amountToTAOFund}("");

        require(sent, "Failed to send Ether");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address[]","name":"_whitelist","type":"address[]"}],"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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SwapBack","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_TAOFund","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_distribFund","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockPenalty","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":[],"name":"emergency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"excludedFromFees","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":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_blockPenalty","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"__distrib","type":"address"}],"name":"setDistribFund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"__TAOFund","type":"address"}],"name":"setTAOFund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"updateSwapAt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1681525069d3c21bcecceda1000000600755603260085560646007546200006f919062001602565b60095561012c600c556001600f60156101000a81548160ff0219169083151502179055506103e86003600754620000a7919062001639565b620000b3919062001602565b6010555f60125f6101000a81548160ff021916908315150217905550348015620000db575f80fd5b50604051620052e8380380620052e8833981810160405281019062000101919062001861565b6040518060400160405280600581526020017f564954414f0000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f564954414f0000000000000000000000000000000000000000000000000000008152506200018d62000181620005f260201b60201c565b620005f960201b60201c565b81600490816200019e919062001ade565b508060059081620001b0919062001ade565b505050620001c3620005f260201b60201c565b600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000275919062001bc2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002dd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000303919062001bc2565b6040518363ffffffff1660e01b81526004016200032292919062001c03565b6020604051808303815f875af11580156200033f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000365919062001bc2565b90508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160115f620003bc620005f260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f60805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620004fb620004cb620005f260201b60201c565b6080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620006ba60201b60201c565b5f6064600a6007546200050f919062001639565b6200051b919062001602565b905062000531306007546200088560201b60201c565b620005553062000546620009eb60201b60201c565b600754620006ba60201b60201c565b5f5b8351811015620005b6576200059f308583815181106200057c576200057b62001c2e565b5b602002602001015186518562000593919062001602565b62000a1260201b60201c565b508080620005ad9062001c5b565b91505062000557565b50620005e830620005cc620009eb60201b60201c565b83600754620005dc919062001ca7565b62000a1260201b60201c565b5050505062002439565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200072b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007229062001d65565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200079c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007939062001df9565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000878919062001e2a565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008f6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008ed9062001e93565b60405180910390fd5b620009095f838362000a5860201b60201c565b8060035f8282546200091c919062001eb3565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009cc919062001e2a565b60405180910390a3620009e75f838362000a5d60201b60201c565b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8062000a24620005f260201b60201c565b905062000a3985828562000a6260201b60201c565b62000a4c85858562000b0160201b60201c565b60019150509392505050565b505050565b505050565b5f62000a75848462000fea60201b60201c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811462000afb578181101562000ae5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000adc9062001f3b565b60405180910390fd5b62000afa8484848403620006ba60201b60201c565b5b50505050565b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168062000b9d575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8062000c50575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801562000c4f575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b8062000c67575060125f9054906101000a900460ff165b1562000c865762000c808383836200106c60201b60201c565b62000fe5565b600f60149054906101000a900460ff1662000cd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ccf9062001fa9565b60405180910390fd5b600f60159054906101000a900460ff161562000ea15760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148062000d96575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b1562000de55760095481111562000de4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ddb9062002017565b60405180910390fd5b5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462000ea057600a548162000e4f84620012f660201b60201c565b62000e5b919062001eb3565b111562000e9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e969062002085565b60405180910390fd5b5b5b5f6008549050600b54431162000eb757600c5490505b5f6103e8828462000ec9919062001639565b62000ed5919062001602565b905082811062000f1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f1390620020f3565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801562000f8b575060105462000f8830620012f660201b60201c565b10155b1562000fa25762000fa16200133c60201b60201c565b5b5f81111562000fcf5762000fbe8530836200106c60201b60201c565b808362000fcc919062001ca7565b92505b62000fe28585856200106c60201b60201c565b50505b505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620010dd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620010d49062002187565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200114e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001145906200221b565b60405180910390fd5b6200116183838362000a5860201b60201c565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015620011e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620011df90620022af565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051620012d5919062001e2a565b60405180910390a3620012f084848462000a5d60201b60201c565b50505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b600160125f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115620013755762001374620016a8565b5b604051908082528060200260200182016040528015620013a45781602001602082028036833780820191505090505b50905030815f81518110620013be57620013bd62001c2e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001444573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200146a919062001bc2565b8160018151811062001481576200148062001c2e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050620014d230608051601054620006ba60201b60201c565b60805173ffffffffffffffffffffffffffffffffffffffff1663791ac9476010545f8430426040518663ffffffff1660e01b815260040162001519959493929190620023d7565b5f604051808303815f87803b15801562001531575f80fd5b505af115801562001544573d5f803e3d5ffd5b505050507fd851aeb8e2074b285cc12da5e2fbf79e642e38f62ef8e59590790c157491ee056010546040516200157b919062001e2a565b60405180910390a1505f60125f6101000a81548160ff021916908315150217905550565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200160e826200159f565b91506200161b836200159f565b9250826200162e576200162d620015a8565b5b828204905092915050565b5f62001645826200159f565b915062001652836200159f565b925082820262001662816200159f565b915082820484148315176200167c576200167b620015d5565b5b5092915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b620016e08262001698565b810181811067ffffffffffffffff82111715620017025762001701620016a8565b5b80604052505050565b5f6200171662001683565b9050620017248282620016d5565b919050565b5f67ffffffffffffffff821115620017465762001745620016a8565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62001786826200175b565b9050919050565b62001798816200177a565b8114620017a3575f80fd5b50565b5f81519050620017b6816200178d565b92915050565b5f620017d2620017cc8462001729565b6200170b565b90508083825260208201905060208402830185811115620017f857620017f762001757565b5b835b81811015620018255780620018108882620017a6565b845260208401935050602081019050620017fa565b5050509392505050565b5f82601f83011262001846576200184562001694565b5b815162001858848260208601620017bc565b91505092915050565b5f602082840312156200187957620018786200168c565b5b5f82015167ffffffffffffffff81111562001899576200189862001690565b5b620018a7848285016200182f565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620018ff57607f821691505b602082108103620019155762001914620018ba565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620019797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200193c565b6200198586836200193c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f620019c6620019c0620019ba846200159f565b6200199d565b6200159f565b9050919050565b5f819050919050565b620019e183620019a6565b620019f9620019f082620019cd565b84845462001948565b825550505050565b5f90565b62001a0f62001a01565b62001a1c818484620019d6565b505050565b5b8181101562001a435762001a375f8262001a05565b60018101905062001a22565b5050565b601f82111562001a925762001a5c816200191b565b62001a67846200192d565b8101602085101562001a77578190505b62001a8f62001a86856200192d565b83018262001a21565b50505b505050565b5f82821c905092915050565b5f62001ab45f198460080262001a97565b1980831691505092915050565b5f62001ace838362001aa3565b9150826002028217905092915050565b62001ae982620018b0565b67ffffffffffffffff81111562001b055762001b04620016a8565b5b62001b118254620018e7565b62001b1e82828562001a47565b5f60209050601f83116001811462001b54575f841562001b3f578287015190505b62001b4b858262001ac1565b86555062001bba565b601f19841662001b64866200191b565b5f5b8281101562001b8d5784890151825560018201915060208501945060208101905062001b66565b8683101562001bad578489015162001ba9601f89168262001aa3565b8355505b6001600288020188555050505b505050505050565b5f6020828403121562001bda5762001bd96200168c565b5b5f62001be984828501620017a6565b91505092915050565b62001bfd816200177a565b82525050565b5f60408201905062001c185f83018562001bf2565b62001c27602083018462001bf2565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f62001c67826200159f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362001c9c5762001c9b620015d5565b5b600182019050919050565b5f62001cb3826200159f565b915062001cc0836200159f565b925082820390508181111562001cdb5762001cda620015d5565b5b92915050565b5f82825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f62001d4d60248362001ce1565b915062001d5a8262001cf1565b604082019050919050565b5f6020820190508181035f83015262001d7e8162001d3f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f62001de160228362001ce1565b915062001dee8262001d85565b604082019050919050565b5f6020820190508181035f83015262001e128162001dd3565b9050919050565b62001e24816200159f565b82525050565b5f60208201905062001e3f5f83018462001e19565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62001e7b601f8362001ce1565b915062001e888262001e45565b602082019050919050565b5f6020820190508181035f83015262001eac8162001e6d565b9050919050565b5f62001ebf826200159f565b915062001ecc836200159f565b925082820190508082111562001ee75762001ee6620015d5565b5b92915050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f62001f23601d8362001ce1565b915062001f308262001eed565b602082019050919050565b5f6020820190508181035f83015262001f548162001f15565b9050919050565b7f54726164696e67206973206e6f74206f70656e000000000000000000000000005f82015250565b5f62001f9160138362001ce1565b915062001f9e8262001f5b565b602082019050919050565b5f6020820190508181035f83015262001fc28162001f83565b9050919050565b7f4d617820547820457863656564656400000000000000000000000000000000005f82015250565b5f62001fff600f8362001ce1565b91506200200c8262001fc9565b602082019050919050565b5f6020820190508181035f830152620020308162001ff1565b9050919050565b7f4d61782057616c6c6574204578636565646564000000000000000000000000005f82015250565b5f6200206d60138362001ce1565b91506200207a8262002037565b602082019050919050565b5f6020820190508181035f8301526200209e816200205f565b9050919050565b7f4e454700000000000000000000000000000000000000000000000000000000005f82015250565b5f620020db60038362001ce1565b9150620020e882620020a5565b602082019050919050565b5f6020820190508181035f8301526200210c81620020cd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6200216f60258362001ce1565b91506200217c8262002113565b604082019050919050565b5f6020820190508181035f830152620021a08162002161565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6200220360238362001ce1565b91506200221082620021a7565b604082019050919050565b5f6020820190508181035f8301526200223481620021f5565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6200229760268362001ce1565b9150620022a4826200223b565b604082019050919050565b5f6020820190508181035f830152620022c88162002289565b9050919050565b5f819050919050565b5f620022f8620022f2620022ec84620022cf565b6200199d565b6200159f565b9050919050565b6200230a81620022d8565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b62002344816200177a565b82525050565b5f62002357838362002339565b60208301905092915050565b5f602082019050919050565b5f6200237b8262002310565b6200238781856200231a565b935062002394836200232a565b805f5b83811015620023ca578151620023ae88826200234a565b9750620023bb8362002363565b92505060018101905062002397565b5085935050505092915050565b5f60a082019050620023ec5f83018862001e19565b620023fb6020830187620022ff565b81810360408301526200240f81866200236f565b905062002420606083018562001bf2565b6200242f608083018462001e19565b9695505050505050565b608051612e88620024605f395f8181610e1d01528181610efc0152610f250152612e885ff3fe6080604052600436106101e5575f3560e01c80636abfe84611610101578063a457c2d711610094578063d163364911610063578063d16336491461095f578063dd62ed3e14610987578063f2fde38b146109c3578063f8b45b05146109eb5761049f565b8063a457c2d7146108a7578063a9059cbb146108e3578063c0bf47801461091f578063caa6fea4146109495761049f565b8063751039fc116100d0578063751039fc1461081357806375f0a874146108295780638da5cb5b1461085357806395d89b411461087d5761049f565b80636abfe846146107835780636ac5eeee146107ab57806370a08231146107c1578063715018a6146107fd5761049f565b8063316340ab116101795780634af0c1bb116101485780634af0c1bb146106cd5780634fbee193146106f75780635d098b3814610733578063634eac311461075b5761049f565b8063316340ab14610615578063395093511461063d57806349bd5a5e146106795780634a62bb65146106a35761049f565b806316697fc5116101b557806316697fc51461055d57806318160ddd1461058557806323b872dd146105af578063313ce567146105eb5761049f565b8062c768fe146104a357806306fdde03146104cd57806308aa2695146104f7578063095ea7b3146105215761049f565b3661049f575f3490505f60646028836101fe9190611f3d565b6102089190611fab565b90505f606460148461021a9190611f3d565b6102249190611fab565b90505f8183856102349190611fdb565b61023e9190611fdb565b90505f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516102869061203b565b5f6040518083038185875af1925050503d805f81146102c0576040519150601f19603f3d011682016040523d82523d5f602084013e6102c5565b606091505b5050905080610309576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610300906120a9565b60405180910390fd5b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161034e9061203b565b5f6040518083038185875af1925050503d805f8114610388576040519150601f19603f3d011682016040523d82523d5f602084013e61038d565b606091505b505080915050806103d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ca906120a9565b60405180910390fd5b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846040516104189061203b565b5f6040518083038185875af1925050503d805f8114610452576040519150601f19603f3d011682016040523d82523d5f602084013e610457565b606091505b5050809150508061049d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610494906120a9565b60405180910390fd5b005b5f80fd5b3480156104ae575f80fd5b506104b7610a15565b6040516104c491906120d6565b60405180910390f35b3480156104d8575f80fd5b506104e1610a1b565b6040516104ee9190612169565b60405180910390f35b348015610502575f80fd5b5061050b610aab565b60405161051891906120d6565b60405180910390f35b34801561052c575f80fd5b5061054760048036038101906105429190612211565b610ab1565b6040516105549190612269565b60405180910390f35b348015610568575f80fd5b50610583600480360381019061057e91906122ac565b610ad3565b005b348015610590575f80fd5b50610599610b33565b6040516105a691906120d6565b60405180910390f35b3480156105ba575f80fd5b506105d560048036038101906105d091906122ea565b610b3c565b6040516105e29190612269565b60405180910390f35b3480156105f6575f80fd5b506105ff610b6a565b60405161060c9190612355565b60405180910390f35b348015610620575f80fd5b5061063b600480360381019061063691906123a9565b610b72565b005b348015610648575f80fd5b50610663600480360381019061065e9190612211565b610bbd565b6040516106709190612269565b60405180910390f35b348015610684575f80fd5b5061068d610bf3565b60405161069a91906123e3565b60405180910390f35b3480156106ae575f80fd5b506106b7610c18565b6040516106c49190612269565b60405180910390f35b3480156106d8575f80fd5b506106e1610c2b565b6040516106ee91906123e3565b60405180910390f35b348015610702575f80fd5b5061071d600480360381019061071891906123fc565b610c50565b60405161072a9190612269565b60405180910390f35b34801561073e575f80fd5b50610759600480360381019061075491906123a9565b610c6d565b005b348015610766575f80fd5b50610781600480360381019061077c91906123a9565b610cb8565b005b34801561078e575f80fd5b506107a960048036038101906107a49190612427565b610d03565b005b3480156107b6575f80fd5b506107bf610d66565b005b3480156107cc575f80fd5b506107e760048036038101906107e291906123fc565b611008565b6040516107f491906120d6565b60405180910390f35b348015610808575f80fd5b5061081161104e565b005b34801561081e575f80fd5b50610827611061565b005b348015610834575f80fd5b5061083d611109565b60405161084a91906123e3565b60405180910390f35b34801561085e575f80fd5b5061086761112e565b60405161087491906123e3565b60405180910390f35b348015610888575f80fd5b50610891611155565b60405161089e9190612169565b60405180910390f35b3480156108b2575f80fd5b506108cd60048036038101906108c89190612211565b6111e5565b6040516108da9190612269565b60405180910390f35b3480156108ee575f80fd5b5061090960048036038101906109049190612211565b61125a565b6040516109169190612269565b60405180910390f35b34801561092a575f80fd5b5061093361127c565b60405161094091906123e3565b60405180910390f35b348015610954575f80fd5b5061095d6112a1565b005b34801561096a575f80fd5b5061098560048036038101906109809190612427565b6112e0565b005b348015610992575f80fd5b506109ad60048036038101906109a89190612452565b611359565b6040516109ba91906120d6565b60405180910390f35b3480156109ce575f80fd5b506109e960048036038101906109e491906123fc565b6113db565b005b3480156109f6575f80fd5b506109ff61145d565b604051610a0c91906120d6565b60405180910390f35b600b5481565b606060048054610a2a906124bd565b80601f0160208091040260200160405190810160405280929190818152602001828054610a56906124bd565b8015610aa15780601f10610a7857610100808354040283529160200191610aa1565b820191905f5260205f20905b815481529060010190602001808311610a8457829003601f168201915b5050505050905090565b60105481565b5f80610abb611463565b9050610ac881858561146a565b600191505092915050565b610adb61162d565b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f600354905090565b5f80610b46611463565b9050610b538582856116ab565b610b5e858585611736565b60019150509392505050565b5f6012905090565b610b7a61162d565b80600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f80610bc7611463565b9050610be8818585610bd98589611359565b610be391906124ed565b61146a565b600191505092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60159054906101000a900460ff1681565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6011602052805f5260405f205f915054906101000a900460ff1681565b610c7561162d565b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610cc061162d565b80600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610d0b61162d565b6032600754610d1a9190611fab565b811115610d5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5390612590565b60405180910390fd5b8060108190555050565b600160125f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115610d9c57610d9b6125ae565b5b604051908082528060200260200182016040528015610dca5781602001602082028036833780820191505090505b50905030815f81518110610de157610de06125db565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e84573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea8919061261c565b81600181518110610ebc57610ebb6125db565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610f23307f000000000000000000000000000000000000000000000000000000000000000060105461146a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9476010545f8430426040518663ffffffff1660e01b8152600401610f86959493929190612740565b5f604051808303815f87803b158015610f9d575f80fd5b505af1158015610faf573d5f803e3d5ffd5b505050507fd851aeb8e2074b285cc12da5e2fbf79e642e38f62ef8e59590790c157491ee05601054604051610fe491906120d6565b60405180910390a1505f60125f6101000a81548160ff021916908315150217905550565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61105661162d565b61105f5f611bcd565b565b61106961162d565b600f60159054906101000a900460ff166110b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110af906127e2565b60405180910390fd5b5f600f60156101000a81548160ff021916908315150217905550600754600a819055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054611164906124bd565b80601f0160208091040260200160405190810160405280929190818152602001828054611190906124bd565b80156111db5780601f106111b2576101008083540402835291602001916111db565b820191905f5260205f20905b8154815290600101906020018083116111be57829003601f168201915b5050505050905090565b5f806111ef611463565b90505f6111fc8286611359565b905083811015611241576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123890612870565b60405180910390fd5b61124e828686840361146a565b60019250505092915050565b5f80611264611463565b9050611271818585611736565b600191505092915050565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112a961162d565b6112c3306112b561112e565b6112be30611008565b61146a565b6112dd306112cf61112e565b6112d830611008565b610b3c565b50565b6112e861162d565b6001600f60146101000a81548160ff021916908315150217905550804361130f91906124ed565b600b8190555060646007546113249190611fab565b600a819055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a150565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6113e361162d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611451576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611448906128fe565b60405180910390fd5b61145a81611bcd565b50565b600a5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cf9061298c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d90612a1a565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161162091906120d6565b60405180910390a3505050565b611635611463565b73ffffffffffffffffffffffffffffffffffffffff1661165361112e565b73ffffffffffffffffffffffffffffffffffffffff16146116a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a090612a82565b60405180910390fd5b565b5f6116b68484611359565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146117305781811015611722576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171990612aea565b60405180910390fd5b61172f848484840361146a565b5b50505050565b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806117d1575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611882575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611881575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b80611898575060125f9054906101000a900460ff165b156118ad576118a8838383611c8e565b611bc8565b600f60149054906101000a900460ff166118fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f390612b52565b60405180910390fd5b600f60159054906101000a900460ff1615611ab15760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806119b8575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611a0357600954811115611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f990612bba565b60405180910390fd5b5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ab057600a5481611a6484611008565b611a6e91906124ed565b1115611aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa690612c22565b60405180910390fd5b5b5b5f6008549050600b544311611ac657600c5490505b5f6103e88284611ad69190611f3d565b611ae09190611fab565b9050828110611b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1b90612c8a565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b8a5750601054611b8730611008565b10155b15611b9857611b97610d66565b5b5f811115611bba57611bab853083611c8e565b8083611bb79190611fdb565b92505b611bc5858585611c8e565b50505b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf390612d18565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6190612da6565b60405180910390fd5b611d75838383611efd565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df090612e34565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ee491906120d6565b60405180910390a3611ef7848484611f02565b50505050565b505050565b505050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611f4782611f07565b9150611f5283611f07565b9250828202611f6081611f07565b91508282048414831517611f7757611f76611f10565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611fb582611f07565b9150611fc083611f07565b925082611fd057611fcf611f7e565b5b828204905092915050565b5f611fe582611f07565b9150611ff083611f07565b925082820390508181111561200857612007611f10565b5b92915050565b5f81905092915050565b50565b5f6120265f8361200e565b915061203182612018565b5f82019050919050565b5f6120458261201b565b9150819050919050565b5f82825260208201905092915050565b7f4661696c656420746f2073656e642045746865720000000000000000000000005f82015250565b5f61209360148361204f565b915061209e8261205f565b602082019050919050565b5f6020820190508181035f8301526120c081612087565b9050919050565b6120d081611f07565b82525050565b5f6020820190506120e95f8301846120c7565b92915050565b5f81519050919050565b5f5b838110156121165780820151818401526020810190506120fb565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61213b826120ef565b612145818561204f565b93506121558185602086016120f9565b61215e81612121565b840191505092915050565b5f6020820190508181035f8301526121818184612131565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6121b68261218d565b9050919050565b6121c6816121ac565b81146121d0575f80fd5b50565b5f813590506121e1816121bd565b92915050565b6121f081611f07565b81146121fa575f80fd5b50565b5f8135905061220b816121e7565b92915050565b5f806040838503121561222757612226612189565b5b5f612234858286016121d3565b9250506020612245858286016121fd565b9150509250929050565b5f8115159050919050565b6122638161224f565b82525050565b5f60208201905061227c5f83018461225a565b92915050565b61228b8161224f565b8114612295575f80fd5b50565b5f813590506122a681612282565b92915050565b5f80604083850312156122c2576122c1612189565b5b5f6122cf858286016121d3565b92505060206122e085828601612298565b9150509250929050565b5f805f6060848603121561230157612300612189565b5b5f61230e868287016121d3565b935050602061231f868287016121d3565b9250506040612330868287016121fd565b9150509250925092565b5f60ff82169050919050565b61234f8161233a565b82525050565b5f6020820190506123685f830184612346565b92915050565b5f6123788261218d565b9050919050565b6123888161236e565b8114612392575f80fd5b50565b5f813590506123a38161237f565b92915050565b5f602082840312156123be576123bd612189565b5b5f6123cb84828501612395565b91505092915050565b6123dd816121ac565b82525050565b5f6020820190506123f65f8301846123d4565b92915050565b5f6020828403121561241157612410612189565b5b5f61241e848285016121d3565b91505092915050565b5f6020828403121561243c5761243b612189565b5b5f612449848285016121fd565b91505092915050565b5f806040838503121561246857612467612189565b5b5f612475858286016121d3565b9250506020612486858286016121d3565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806124d457607f821691505b6020821081036124e7576124e6612490565b5b50919050565b5f6124f782611f07565b915061250283611f07565b925082820190508082111561251a57612519611f10565b5b92915050565b7f56616c7565206d757374206265206c657373207468616e206f7220657175616c5f8201527f20746f20535550504c59202f2035300000000000000000000000000000000000602082015250565b5f61257a602f8361204f565b915061258582612520565b604082019050919050565b5f6020820190508181035f8301526125a78161256e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612616816121bd565b92915050565b5f6020828403121561263157612630612189565b5b5f61263e84828501612608565b91505092915050565b5f819050919050565b5f819050919050565b5f61267361266e61266984612647565b612650565b611f07565b9050919050565b61268381612659565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6126bb816121ac565b82525050565b5f6126cc83836126b2565b60208301905092915050565b5f602082019050919050565b5f6126ee82612689565b6126f88185612693565b9350612703836126a3565b805f5b8381101561273357815161271a88826126c1565b9750612725836126d8565b925050600181019050612706565b5085935050505092915050565b5f60a0820190506127535f8301886120c7565b612760602083018761267a565b818103604083015261277281866126e4565b905061278160608301856123d4565b61278e60808301846120c7565b9695505050505050565b7f4c696d69747320616c72656164792072656d6f766564000000000000000000005f82015250565b5f6127cc60168361204f565b91506127d782612798565b602082019050919050565b5f6020820190508181035f8301526127f9816127c0565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61285a60258361204f565b915061286582612800565b604082019050919050565b5f6020820190508181035f8301526128878161284e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6128e860268361204f565b91506128f38261288e565b604082019050919050565b5f6020820190508181035f830152612915816128dc565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61297660248361204f565b91506129818261291c565b604082019050919050565b5f6020820190508181035f8301526129a38161296a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612a0460228361204f565b9150612a0f826129aa565b604082019050919050565b5f6020820190508181035f830152612a31816129f8565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612a6c60208361204f565b9150612a7782612a38565b602082019050919050565b5f6020820190508181035f830152612a9981612a60565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f612ad4601d8361204f565b9150612adf82612aa0565b602082019050919050565b5f6020820190508181035f830152612b0181612ac8565b9050919050565b7f54726164696e67206973206e6f74206f70656e000000000000000000000000005f82015250565b5f612b3c60138361204f565b9150612b4782612b08565b602082019050919050565b5f6020820190508181035f830152612b6981612b30565b9050919050565b7f4d617820547820457863656564656400000000000000000000000000000000005f82015250565b5f612ba4600f8361204f565b9150612baf82612b70565b602082019050919050565b5f6020820190508181035f830152612bd181612b98565b9050919050565b7f4d61782057616c6c6574204578636565646564000000000000000000000000005f82015250565b5f612c0c60138361204f565b9150612c1782612bd8565b602082019050919050565b5f6020820190508181035f830152612c3981612c00565b9050919050565b7f4e454700000000000000000000000000000000000000000000000000000000005f82015250565b5f612c7460038361204f565b9150612c7f82612c40565b602082019050919050565b5f6020820190508181035f830152612ca181612c68565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612d0260258361204f565b9150612d0d82612ca8565b604082019050919050565b5f6020820190508181035f830152612d2f81612cf6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612d9060238361204f565b9150612d9b82612d36565b604082019050919050565b5f6020820190508181035f830152612dbd81612d84565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612e1e60268361204f565b9150612e2982612dc4565b604082019050919050565b5f6020820190508181035f830152612e4b81612e12565b905091905056fea2646970667358221220fa3a9824df5cd7ec2187b838fe5c5cab3b77687f35b84a95cd64de434833077f64736f6c634300081500330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000313d9c34be8c5ddbc7bf0dea4aa292abd04c17580000000000000000000000009bff0f8b20e53af5af512901730ea5f8e0e91060000000000000000000000000b7f260287e4afcb174aad9b2d01dbccdc78c50ab000000000000000000000000ccd8e89667247062e16364573edbf71145b963390000000000000000000000006e1366b58bcf52383cb8b12e28fa7e634bea1dfa000000000000000000000000d7d2ff8a4a5c00c57a2d639566ac81aacd826b85000000000000000000000000c1967d6b5f99f3c1a6a74e55a9f000f2a08f0969000000000000000000000000e145ce55826484a8cf6189c237a7235c44692d03000000000000000000000000134ce2b823768251e435098fb9b0fef0a59be9a30000000000000000000000005d8b012da52b5ae8cedc3bbf21bca16a957058c7

Deployed Bytecode

0x6080604052600436106101e5575f3560e01c80636abfe84611610101578063a457c2d711610094578063d163364911610063578063d16336491461095f578063dd62ed3e14610987578063f2fde38b146109c3578063f8b45b05146109eb5761049f565b8063a457c2d7146108a7578063a9059cbb146108e3578063c0bf47801461091f578063caa6fea4146109495761049f565b8063751039fc116100d0578063751039fc1461081357806375f0a874146108295780638da5cb5b1461085357806395d89b411461087d5761049f565b80636abfe846146107835780636ac5eeee146107ab57806370a08231146107c1578063715018a6146107fd5761049f565b8063316340ab116101795780634af0c1bb116101485780634af0c1bb146106cd5780634fbee193146106f75780635d098b3814610733578063634eac311461075b5761049f565b8063316340ab14610615578063395093511461063d57806349bd5a5e146106795780634a62bb65146106a35761049f565b806316697fc5116101b557806316697fc51461055d57806318160ddd1461058557806323b872dd146105af578063313ce567146105eb5761049f565b8062c768fe146104a357806306fdde03146104cd57806308aa2695146104f7578063095ea7b3146105215761049f565b3661049f575f3490505f60646028836101fe9190611f3d565b6102089190611fab565b90505f606460148461021a9190611f3d565b6102249190611fab565b90505f8183856102349190611fdb565b61023e9190611fdb565b90505f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516102869061203b565b5f6040518083038185875af1925050503d805f81146102c0576040519150601f19603f3d011682016040523d82523d5f602084013e6102c5565b606091505b5050905080610309576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610300906120a9565b60405180910390fd5b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161034e9061203b565b5f6040518083038185875af1925050503d805f8114610388576040519150601f19603f3d011682016040523d82523d5f602084013e61038d565b606091505b505080915050806103d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ca906120a9565b60405180910390fd5b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846040516104189061203b565b5f6040518083038185875af1925050503d805f8114610452576040519150601f19603f3d011682016040523d82523d5f602084013e610457565b606091505b5050809150508061049d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610494906120a9565b60405180910390fd5b005b5f80fd5b3480156104ae575f80fd5b506104b7610a15565b6040516104c491906120d6565b60405180910390f35b3480156104d8575f80fd5b506104e1610a1b565b6040516104ee9190612169565b60405180910390f35b348015610502575f80fd5b5061050b610aab565b60405161051891906120d6565b60405180910390f35b34801561052c575f80fd5b5061054760048036038101906105429190612211565b610ab1565b6040516105549190612269565b60405180910390f35b348015610568575f80fd5b50610583600480360381019061057e91906122ac565b610ad3565b005b348015610590575f80fd5b50610599610b33565b6040516105a691906120d6565b60405180910390f35b3480156105ba575f80fd5b506105d560048036038101906105d091906122ea565b610b3c565b6040516105e29190612269565b60405180910390f35b3480156105f6575f80fd5b506105ff610b6a565b60405161060c9190612355565b60405180910390f35b348015610620575f80fd5b5061063b600480360381019061063691906123a9565b610b72565b005b348015610648575f80fd5b50610663600480360381019061065e9190612211565b610bbd565b6040516106709190612269565b60405180910390f35b348015610684575f80fd5b5061068d610bf3565b60405161069a91906123e3565b60405180910390f35b3480156106ae575f80fd5b506106b7610c18565b6040516106c49190612269565b60405180910390f35b3480156106d8575f80fd5b506106e1610c2b565b6040516106ee91906123e3565b60405180910390f35b348015610702575f80fd5b5061071d600480360381019061071891906123fc565b610c50565b60405161072a9190612269565b60405180910390f35b34801561073e575f80fd5b50610759600480360381019061075491906123a9565b610c6d565b005b348015610766575f80fd5b50610781600480360381019061077c91906123a9565b610cb8565b005b34801561078e575f80fd5b506107a960048036038101906107a49190612427565b610d03565b005b3480156107b6575f80fd5b506107bf610d66565b005b3480156107cc575f80fd5b506107e760048036038101906107e291906123fc565b611008565b6040516107f491906120d6565b60405180910390f35b348015610808575f80fd5b5061081161104e565b005b34801561081e575f80fd5b50610827611061565b005b348015610834575f80fd5b5061083d611109565b60405161084a91906123e3565b60405180910390f35b34801561085e575f80fd5b5061086761112e565b60405161087491906123e3565b60405180910390f35b348015610888575f80fd5b50610891611155565b60405161089e9190612169565b60405180910390f35b3480156108b2575f80fd5b506108cd60048036038101906108c89190612211565b6111e5565b6040516108da9190612269565b60405180910390f35b3480156108ee575f80fd5b5061090960048036038101906109049190612211565b61125a565b6040516109169190612269565b60405180910390f35b34801561092a575f80fd5b5061093361127c565b60405161094091906123e3565b60405180910390f35b348015610954575f80fd5b5061095d6112a1565b005b34801561096a575f80fd5b5061098560048036038101906109809190612427565b6112e0565b005b348015610992575f80fd5b506109ad60048036038101906109a89190612452565b611359565b6040516109ba91906120d6565b60405180910390f35b3480156109ce575f80fd5b506109e960048036038101906109e491906123fc565b6113db565b005b3480156109f6575f80fd5b506109ff61145d565b604051610a0c91906120d6565b60405180910390f35b600b5481565b606060048054610a2a906124bd565b80601f0160208091040260200160405190810160405280929190818152602001828054610a56906124bd565b8015610aa15780601f10610a7857610100808354040283529160200191610aa1565b820191905f5260205f20905b815481529060010190602001808311610a8457829003601f168201915b5050505050905090565b60105481565b5f80610abb611463565b9050610ac881858561146a565b600191505092915050565b610adb61162d565b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f600354905090565b5f80610b46611463565b9050610b538582856116ab565b610b5e858585611736565b60019150509392505050565b5f6012905090565b610b7a61162d565b80600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f80610bc7611463565b9050610be8818585610bd98589611359565b610be391906124ed565b61146a565b600191505092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60159054906101000a900460ff1681565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6011602052805f5260405f205f915054906101000a900460ff1681565b610c7561162d565b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610cc061162d565b80600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610d0b61162d565b6032600754610d1a9190611fab565b811115610d5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5390612590565b60405180910390fd5b8060108190555050565b600160125f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115610d9c57610d9b6125ae565b5b604051908082528060200260200182016040528015610dca5781602001602082028036833780820191505090505b50905030815f81518110610de157610de06125db565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e84573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea8919061261c565b81600181518110610ebc57610ebb6125db565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610f23307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d60105461146a565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9476010545f8430426040518663ffffffff1660e01b8152600401610f86959493929190612740565b5f604051808303815f87803b158015610f9d575f80fd5b505af1158015610faf573d5f803e3d5ffd5b505050507fd851aeb8e2074b285cc12da5e2fbf79e642e38f62ef8e59590790c157491ee05601054604051610fe491906120d6565b60405180910390a1505f60125f6101000a81548160ff021916908315150217905550565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61105661162d565b61105f5f611bcd565b565b61106961162d565b600f60159054906101000a900460ff166110b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110af906127e2565b60405180910390fd5b5f600f60156101000a81548160ff021916908315150217905550600754600a819055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054611164906124bd565b80601f0160208091040260200160405190810160405280929190818152602001828054611190906124bd565b80156111db5780601f106111b2576101008083540402835291602001916111db565b820191905f5260205f20905b8154815290600101906020018083116111be57829003601f168201915b5050505050905090565b5f806111ef611463565b90505f6111fc8286611359565b905083811015611241576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123890612870565b60405180910390fd5b61124e828686840361146a565b60019250505092915050565b5f80611264611463565b9050611271818585611736565b600191505092915050565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112a961162d565b6112c3306112b561112e565b6112be30611008565b61146a565b6112dd306112cf61112e565b6112d830611008565b610b3c565b50565b6112e861162d565b6001600f60146101000a81548160ff021916908315150217905550804361130f91906124ed565b600b8190555060646007546113249190611fab565b600a819055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a150565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6113e361162d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611451576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611448906128fe565b60405180910390fd5b61145a81611bcd565b50565b600a5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cf9061298c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d90612a1a565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161162091906120d6565b60405180910390a3505050565b611635611463565b73ffffffffffffffffffffffffffffffffffffffff1661165361112e565b73ffffffffffffffffffffffffffffffffffffffff16146116a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a090612a82565b60405180910390fd5b565b5f6116b68484611359565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146117305781811015611722576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171990612aea565b60405180910390fd5b61172f848484840361146a565b5b50505050565b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806117d1575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611882575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611881575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b80611898575060125f9054906101000a900460ff165b156118ad576118a8838383611c8e565b611bc8565b600f60149054906101000a900460ff166118fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f390612b52565b60405180910390fd5b600f60159054906101000a900460ff1615611ab15760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806119b8575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611a0357600954811115611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f990612bba565b60405180910390fd5b5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ab057600a5481611a6484611008565b611a6e91906124ed565b1115611aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa690612c22565b60405180910390fd5b5b5b5f6008549050600b544311611ac657600c5490505b5f6103e88284611ad69190611f3d565b611ae09190611fab565b9050828110611b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1b90612c8a565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b8a5750601054611b8730611008565b10155b15611b9857611b97610d66565b5b5f811115611bba57611bab853083611c8e565b8083611bb79190611fdb565b92505b611bc5858585611c8e565b50505b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf390612d18565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6190612da6565b60405180910390fd5b611d75838383611efd565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df090612e34565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ee491906120d6565b60405180910390a3611ef7848484611f02565b50505050565b505050565b505050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611f4782611f07565b9150611f5283611f07565b9250828202611f6081611f07565b91508282048414831517611f7757611f76611f10565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611fb582611f07565b9150611fc083611f07565b925082611fd057611fcf611f7e565b5b828204905092915050565b5f611fe582611f07565b9150611ff083611f07565b925082820390508181111561200857612007611f10565b5b92915050565b5f81905092915050565b50565b5f6120265f8361200e565b915061203182612018565b5f82019050919050565b5f6120458261201b565b9150819050919050565b5f82825260208201905092915050565b7f4661696c656420746f2073656e642045746865720000000000000000000000005f82015250565b5f61209360148361204f565b915061209e8261205f565b602082019050919050565b5f6020820190508181035f8301526120c081612087565b9050919050565b6120d081611f07565b82525050565b5f6020820190506120e95f8301846120c7565b92915050565b5f81519050919050565b5f5b838110156121165780820151818401526020810190506120fb565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61213b826120ef565b612145818561204f565b93506121558185602086016120f9565b61215e81612121565b840191505092915050565b5f6020820190508181035f8301526121818184612131565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6121b68261218d565b9050919050565b6121c6816121ac565b81146121d0575f80fd5b50565b5f813590506121e1816121bd565b92915050565b6121f081611f07565b81146121fa575f80fd5b50565b5f8135905061220b816121e7565b92915050565b5f806040838503121561222757612226612189565b5b5f612234858286016121d3565b9250506020612245858286016121fd565b9150509250929050565b5f8115159050919050565b6122638161224f565b82525050565b5f60208201905061227c5f83018461225a565b92915050565b61228b8161224f565b8114612295575f80fd5b50565b5f813590506122a681612282565b92915050565b5f80604083850312156122c2576122c1612189565b5b5f6122cf858286016121d3565b92505060206122e085828601612298565b9150509250929050565b5f805f6060848603121561230157612300612189565b5b5f61230e868287016121d3565b935050602061231f868287016121d3565b9250506040612330868287016121fd565b9150509250925092565b5f60ff82169050919050565b61234f8161233a565b82525050565b5f6020820190506123685f830184612346565b92915050565b5f6123788261218d565b9050919050565b6123888161236e565b8114612392575f80fd5b50565b5f813590506123a38161237f565b92915050565b5f602082840312156123be576123bd612189565b5b5f6123cb84828501612395565b91505092915050565b6123dd816121ac565b82525050565b5f6020820190506123f65f8301846123d4565b92915050565b5f6020828403121561241157612410612189565b5b5f61241e848285016121d3565b91505092915050565b5f6020828403121561243c5761243b612189565b5b5f612449848285016121fd565b91505092915050565b5f806040838503121561246857612467612189565b5b5f612475858286016121d3565b9250506020612486858286016121d3565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806124d457607f821691505b6020821081036124e7576124e6612490565b5b50919050565b5f6124f782611f07565b915061250283611f07565b925082820190508082111561251a57612519611f10565b5b92915050565b7f56616c7565206d757374206265206c657373207468616e206f7220657175616c5f8201527f20746f20535550504c59202f2035300000000000000000000000000000000000602082015250565b5f61257a602f8361204f565b915061258582612520565b604082019050919050565b5f6020820190508181035f8301526125a78161256e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612616816121bd565b92915050565b5f6020828403121561263157612630612189565b5b5f61263e84828501612608565b91505092915050565b5f819050919050565b5f819050919050565b5f61267361266e61266984612647565b612650565b611f07565b9050919050565b61268381612659565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6126bb816121ac565b82525050565b5f6126cc83836126b2565b60208301905092915050565b5f602082019050919050565b5f6126ee82612689565b6126f88185612693565b9350612703836126a3565b805f5b8381101561273357815161271a88826126c1565b9750612725836126d8565b925050600181019050612706565b5085935050505092915050565b5f60a0820190506127535f8301886120c7565b612760602083018761267a565b818103604083015261277281866126e4565b905061278160608301856123d4565b61278e60808301846120c7565b9695505050505050565b7f4c696d69747320616c72656164792072656d6f766564000000000000000000005f82015250565b5f6127cc60168361204f565b91506127d782612798565b602082019050919050565b5f6020820190508181035f8301526127f9816127c0565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61285a60258361204f565b915061286582612800565b604082019050919050565b5f6020820190508181035f8301526128878161284e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6128e860268361204f565b91506128f38261288e565b604082019050919050565b5f6020820190508181035f830152612915816128dc565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61297660248361204f565b91506129818261291c565b604082019050919050565b5f6020820190508181035f8301526129a38161296a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612a0460228361204f565b9150612a0f826129aa565b604082019050919050565b5f6020820190508181035f830152612a31816129f8565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612a6c60208361204f565b9150612a7782612a38565b602082019050919050565b5f6020820190508181035f830152612a9981612a60565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f612ad4601d8361204f565b9150612adf82612aa0565b602082019050919050565b5f6020820190508181035f830152612b0181612ac8565b9050919050565b7f54726164696e67206973206e6f74206f70656e000000000000000000000000005f82015250565b5f612b3c60138361204f565b9150612b4782612b08565b602082019050919050565b5f6020820190508181035f830152612b6981612b30565b9050919050565b7f4d617820547820457863656564656400000000000000000000000000000000005f82015250565b5f612ba4600f8361204f565b9150612baf82612b70565b602082019050919050565b5f6020820190508181035f830152612bd181612b98565b9050919050565b7f4d61782057616c6c6574204578636565646564000000000000000000000000005f82015250565b5f612c0c60138361204f565b9150612c1782612bd8565b602082019050919050565b5f6020820190508181035f830152612c3981612c00565b9050919050565b7f4e454700000000000000000000000000000000000000000000000000000000005f82015250565b5f612c7460038361204f565b9150612c7f82612c40565b602082019050919050565b5f6020820190508181035f830152612ca181612c68565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612d0260258361204f565b9150612d0d82612ca8565b604082019050919050565b5f6020820190508181035f830152612d2f81612cf6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612d9060238361204f565b9150612d9b82612d36565b604082019050919050565b5f6020820190508181035f830152612dbd81612d84565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612e1e60268361204f565b9150612e2982612dc4565b604082019050919050565b5f6020820190508181035f830152612e4b81612e12565b905091905056fea2646970667358221220fa3a9824df5cd7ec2187b838fe5c5cab3b77687f35b84a95cd64de434833077f64736f6c63430008150033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000313d9c34be8c5ddbc7bf0dea4aa292abd04c17580000000000000000000000009bff0f8b20e53af5af512901730ea5f8e0e91060000000000000000000000000b7f260287e4afcb174aad9b2d01dbccdc78c50ab000000000000000000000000ccd8e89667247062e16364573edbf71145b963390000000000000000000000006e1366b58bcf52383cb8b12e28fa7e634bea1dfa000000000000000000000000d7d2ff8a4a5c00c57a2d639566ac81aacd826b85000000000000000000000000c1967d6b5f99f3c1a6a74e55a9f000f2a08f0969000000000000000000000000e145ce55826484a8cf6189c237a7235c44692d03000000000000000000000000134ce2b823768251e435098fb9b0fef0a59be9a30000000000000000000000005d8b012da52b5ae8cedc3bbf21bca16a957058c7

-----Decoded View---------------
Arg [0] : _whitelist (address[]): 0x313D9C34bE8c5DdBc7Bf0dEa4AA292aBD04C1758,0x9BFf0F8b20e53aF5Af512901730ea5F8e0E91060,0xb7F260287E4afcb174aAd9b2d01dbCCdC78C50AB,0xCcd8E89667247062E16364573EdbF71145b96339,0x6e1366b58BCf52383Cb8b12e28FA7e634Bea1dfA,0xD7D2fF8a4A5c00C57a2D639566aC81aacD826b85,0xC1967D6b5f99F3c1a6A74e55A9F000F2A08F0969,0xE145cE55826484a8Cf6189C237A7235C44692d03,0x134cE2b823768251E435098fB9b0FeF0a59bE9a3,0x5D8B012da52b5ae8CeDC3bbf21bCa16A957058C7

-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [2] : 000000000000000000000000313d9c34be8c5ddbc7bf0dea4aa292abd04c1758
Arg [3] : 0000000000000000000000009bff0f8b20e53af5af512901730ea5f8e0e91060
Arg [4] : 000000000000000000000000b7f260287e4afcb174aad9b2d01dbccdc78c50ab
Arg [5] : 000000000000000000000000ccd8e89667247062e16364573edbf71145b96339
Arg [6] : 0000000000000000000000006e1366b58bcf52383cb8b12e28fa7e634bea1dfa
Arg [7] : 000000000000000000000000d7d2ff8a4a5c00c57a2d639566ac81aacd826b85
Arg [8] : 000000000000000000000000c1967d6b5f99f3c1a6a74e55a9f000f2a08f0969
Arg [9] : 000000000000000000000000e145ce55826484a8cf6189c237a7235c44692d03
Arg [10] : 000000000000000000000000134ce2b823768251e435098fb9b0fef0a59be9a3
Arg [11] : 0000000000000000000000005d8b012da52b5ae8cedc3bbf21bca16a957058c7


Deployed Bytecode Sourcemap

22646:5765:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27731:13;27747:9;27731:25;;27767:23;27808:3;27802:2;27794:5;:10;;;;:::i;:::-;27793:18;;;;:::i;:::-;27767:44;;27829:25;27872:3;27866:2;27858:5;:10;;;;:::i;:::-;27857:18;;;;:::i;:::-;27829:46;;27893:23;27945:17;27927:15;27919:5;:23;;;;:::i;:::-;:43;;;;:::i;:::-;27893:69;;27976:9;27999:15;;;;;;;;;;;27991:29;;28028:17;27991:83;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27975:99;;;28095:4;28087:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;28156:12;;;;;;;;;;;28148:26;;28182:15;28148:78;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28137:89;;;;;28247:4;28239:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;28308:8;;;;;;;;;;;28300:22;;28330:15;28300:50;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28289:61;;;;;28371:4;28363:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;27720:688;22646:5765;;;;23079:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11653:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23327:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14013:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24775:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12782:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14794:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12624:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27261:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15464:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22782:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23287:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23188:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23379:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27119:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27374:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24319:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26658:453;;;;;;;;;;;;;:::i;:::-;;12953:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10186:103;;;;;;;;;;;;;:::i;:::-;;24940:204;;;;;;;;;;;;;:::i;:::-;;23151:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9545:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11872:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16205:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13286:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23222:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27495:190;;;;;;;;;;;;;:::i;:::-;;24544:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13542:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10444:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23048:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23079:27;;;;:::o;11653:100::-;11707:13;11740:5;11733:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11653:100;:::o;23327:43::-;;;;:::o;14013:201::-;14096:4;14113:13;14129:12;:10;:12::i;:::-;14113:28;;14152:32;14161:5;14168:7;14177:6;14152:8;:32::i;:::-;14202:4;14195:11;;;14013:201;;;;:::o;24775:157::-;9431:13;:11;:13::i;:::-;24918:6:::1;24887:18;:28;24906:8;24887:28;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;24775:157:::0;;:::o;12782:108::-;12843:7;12870:12;;12863:19;;12782:108;:::o;14794:261::-;14891:4;14908:15;14926:12;:10;:12::i;:::-;14908:30;;14949:38;14965:4;14971:7;14980:6;14949:15;:38::i;:::-;14998:27;15008:4;15014:2;15018:6;14998:9;:27::i;:::-;15043:4;15036:11;;;14794:261;;;;;:::o;12624:93::-;12682:5;12707:2;12700:9;;12624:93;:::o;27261:105::-;9431:13;:11;:13::i;:::-;27349:9:::1;27338:8;;:20;;;;;;;;;;;;;;;;;;27261:105:::0;:::o;15464:238::-;15552:4;15569:13;15585:12;:10;:12::i;:::-;15569:28;;15608:64;15617:5;15624:7;15661:10;15633:25;15643:5;15650:7;15633:9;:25::i;:::-;:38;;;;:::i;:::-;15608:8;:64::i;:::-;15690:4;15683:11;;;15464:238;;;;:::o;22782:28::-;;;;;;;;;;;;;:::o;23287:33::-;;;;;;;;;;;;;:::o;23188:27::-;;;;;;;;;;;;;:::o;23379:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;27119:134::-;9431:13;:11;:13::i;:::-;27229:16:::1;27211:15;;:34;;;;;;;;;;;;;;;;;;27119:134:::0;:::o;27374:113::-;9431:13;:11;:13::i;:::-;27470:9:::1;27455:12;;:24;;;;;;;;;;;;;;;;;;27374:113:::0;:::o;24319:217::-;9431:13;:11;:13::i;:::-;24426:2:::1;24417:6;;:11;;;;:::i;:::-;24408:5;:20;;24386:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;24523:5;24514:6;:14;;;;24319:217:::0;:::o;26658:453::-;26601:4;26592:6;;:13;;;;;;;;;;;;;;;;;;26705:21:::1;26743:1;26729:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26705:40;;26774:4;26756;26761:1;26756:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;26800:6;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26790:4;26795:1;26790:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;26826:48;26843:4;26858:6;26867;;26826:8;:48::i;:::-;26887:6;:57;;;26959:6;;26980:1;26996:4;27023;27043:15;26887:182;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;27087:16;27096:6;;27087:16;;;;;;:::i;:::-;;;;;;;;26694:417;26637:5:::0;26628:6;;:14;;;;;;;;;;;;;;;;;;26658:453::o;12953:127::-;13027:7;13054:9;:18;13064:7;13054:18;;;;;;;;;;;;;;;;13047:25;;12953:127;;;:::o;10186:103::-;9431:13;:11;:13::i;:::-;10251:30:::1;10278:1;10251:18;:30::i;:::-;10186:103::o:0;24940:204::-;9431:13;:11;:13::i;:::-;25002:14:::1;;;;;;;;;;;24994:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;25071:5;25054:14;;:22;;;;;;;;;;;;;;;;;;25099:6;;25087:9;:18;;;;25121:15;;;;;;;;;;24940:204::o:0;23151:30::-;;;;;;;;;;;;;:::o;9545:87::-;9591:7;9618:6;;;;;;;;;;;9611:13;;9545:87;:::o;11872:104::-;11928:13;11961:7;11954:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11872:104;:::o;16205:436::-;16298:4;16315:13;16331:12;:10;:12::i;:::-;16315:28;;16354:24;16381:25;16391:5;16398:7;16381:9;:25::i;:::-;16354:52;;16445:15;16425:16;:35;;16417:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;16538:60;16547:5;16554:7;16582:15;16563:16;:34;16538:8;:60::i;:::-;16629:4;16622:11;;;;16205:436;;;;:::o;13286:193::-;13365:4;13382:13;13398:12;:10;:12::i;:::-;13382:28;;13421;13431:5;13438:2;13442:6;13421:9;:28::i;:::-;13467:4;13460:11;;;13286:193;;;;:::o;23222:23::-;;;;;;;;;;;;;:::o;27495:190::-;9431:13;:11;:13::i;:::-;27546:58:::1;27563:4;27570:7;:5;:7::i;:::-;27579:24;27597:4;27579:9;:24::i;:::-;27546:8;:58::i;:::-;27615:62;27636:4;27643:7;:5;:7::i;:::-;27652:24;27670:4;27652:9;:24::i;:::-;27615:12;:62::i;:::-;;27495:190::o:0;24544:223::-;9431:13;:11;:13::i;:::-;24634:4:::1;24618:13;;:20;;;;;;;;;;;;;;;;;;24679:13;24664:12;:28;;;;:::i;:::-;24649:12;:43;;;;24724:3;24715:6;;:12;;;;:::i;:::-;24703:9;:24;;;;24743:16;;;;;;;;;;24544:223:::0;:::o;13542:151::-;13631:7;13658:11;:18;13670:5;13658:18;;;;;;;;;;;;;;;:27;13677:7;13658:27;;;;;;;;;;;;;;;;13651:34;;13542:151;;;;:::o;10444:201::-;9431:13;:11;:13::i;:::-;10553:1:::1;10533:22;;:8;:22;;::::0;10525:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10609:28;10628:8;10609:18;:28::i;:::-;10444:201:::0;:::o;23048:24::-;;;;:::o;5730:98::-;5783:7;5810:10;5803:17;;5730:98;:::o;20198:346::-;20317:1;20300:19;;:5;:19;;;20292:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20398:1;20379:21;;:7;:21;;;20371:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20482:6;20452:11;:18;20464:5;20452:18;;;;;;;;;;;;;;;:27;20471:7;20452:27;;;;;;;;;;;;;;;:36;;;;20520:7;20504:32;;20513:5;20504:32;;;20529:6;20504:32;;;;;;:::i;:::-;;;;;;;;20198:346;;;:::o;9710:132::-;9785:12;:10;:12::i;:::-;9774:23;;:7;:5;:7::i;:::-;:23;;;9766:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9710:132::o;20835:419::-;20936:24;20963:25;20973:5;20980:7;20963:9;:25::i;:::-;20936:52;;21023:17;21003:16;:37;20999:248;;21085:6;21065:16;:26;;21057:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21169:51;21178:5;21185:7;21213:6;21194:16;:25;21169:8;:51::i;:::-;20999:248;20925:329;20835:419;;;:::o;25152:1365::-;25294:18;:24;25313:4;25294:24;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;25335:18;:22;25354:2;25335:22;;;;;;;;;;;;;;;;;;;;;;;;;25294:63;:126;;;;25381:13;;;;;;;;;;;25375:19;;:2;:19;;;;:44;;;;;25406:13;;;;;;;;;;;25398:21;;:4;:21;;;;25375:44;25294:126;:149;;;;25437:6;;;;;;;;;;;25294:149;25276:260;;;25470:33;25486:4;25492:2;25496:6;25470:15;:33::i;:::-;25518:7;;25276:260;25556:13;;;;;;;;;;;25548:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;25610:14;;;;;;;;;;;25606:380;;;25653:13;;;;;;;;;;;25645:21;;:4;:21;;;:44;;;;25676:13;;;;;;;;;;;25670:19;;:2;:19;;;25645:44;25641:132;;;25728:9;;25718:6;:19;;25710:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;25641:132;25797:13;;;;;;;;;;;25791:19;;:2;:19;;;25787:188;;25887:9;;25877:6;25861:13;25871:2;25861:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;25831:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;25787:188;25606:380;25998:17;26018:8;;25998:28;;26059:12;;26043;:28;26039:88;;26100:15;;26088:27;;26039:88;26139:12;26177:4;26164:9;26155:6;:18;;;;:::i;:::-;26154:27;;;;:::i;:::-;26139:42;;26207:6;26200:4;:13;26192:29;;;;;;;;;;;;:::i;:::-;;;;;;;;;26244:13;;;;;;;;;;;26238:19;;:2;:19;;;:57;;;;;26289:6;;26261:24;26279:4;26261:9;:24::i;:::-;:34;;26238:57;26234:100;;;26312:10;:8;:10::i;:::-;26234:100;26357:1;26350:4;:8;26346:120;;;26375:42;26391:4;26405;26412;26375:15;:42::i;:::-;26450:4;26441:6;:13;;;;:::i;:::-;26432:22;;26346:120;26476:33;26492:4;26498:2;26502:6;26476:15;:33::i;:::-;25265:1252;;25152:1365;;;;:::o;10805:191::-;10879:16;10898:6;;;;;;;;;;;10879:25;;10924:8;10915:6;;:17;;;;;;;;;;;;;;;;;;10979:8;10948:40;;10969:8;10948:40;;;;;;;;;;;;10868:128;10805:191;:::o;17111:806::-;17224:1;17208:18;;:4;:18;;;17200:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17301:1;17287:16;;:2;:16;;;17279:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17356:38;17377:4;17383:2;17387:6;17356:20;:38::i;:::-;17407:19;17429:9;:15;17439:4;17429:15;;;;;;;;;;;;;;;;17407:37;;17478:6;17463:11;:21;;17455:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;17595:6;17581:11;:20;17563:9;:15;17573:4;17563:15;;;;;;;;;;;;;;;:38;;;;17798:6;17781:9;:13;17791:2;17781:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;17848:2;17833:26;;17842:4;17833:26;;;17852:6;17833:26;;;;;;:::i;:::-;;;;;;;;17872:37;17892:4;17898:2;17902:6;17872:19;:37::i;:::-;17189:728;17111:806;;;:::o;21854:91::-;;;;:::o;22549:90::-;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:180::-;138:77;135:1;128:88;235:4;232:1;225:15;259:4;256:1;249:15;276:410;316:7;339:20;357:1;339:20;:::i;:::-;334:25;;373:20;391:1;373:20;:::i;:::-;368:25;;428:1;425;421:9;450:30;468:11;450:30;:::i;:::-;439:41;;629:1;620:7;616:15;613:1;610:22;590:1;583:9;563:83;540:139;;659:18;;:::i;:::-;540:139;324:362;276:410;;;;:::o;692:180::-;740:77;737:1;730:88;837:4;834:1;827:15;861:4;858:1;851:15;878:185;918:1;935:20;953:1;935:20;:::i;:::-;930:25;;969:20;987:1;969:20;:::i;:::-;964:25;;1008:1;998:35;;1013:18;;:::i;:::-;998:35;1055:1;1052;1048:9;1043:14;;878:185;;;;:::o;1069:194::-;1109:4;1129:20;1147:1;1129:20;:::i;:::-;1124:25;;1163:20;1181:1;1163:20;:::i;:::-;1158:25;;1207:1;1204;1200:9;1192:17;;1231:1;1225:4;1222:11;1219:37;;;1236:18;;:::i;:::-;1219:37;1069:194;;;;:::o;1269:147::-;1370:11;1407:3;1392:18;;1269:147;;;;:::o;1422:114::-;;:::o;1542:398::-;1701:3;1722:83;1803:1;1798:3;1722:83;:::i;:::-;1715:90;;1814:93;1903:3;1814:93;:::i;:::-;1932:1;1927:3;1923:11;1916:18;;1542:398;;;:::o;1946:379::-;2130:3;2152:147;2295:3;2152:147;:::i;:::-;2145:154;;2316:3;2309:10;;1946:379;;;:::o;2331:169::-;2415:11;2449:6;2444:3;2437:19;2489:4;2484:3;2480:14;2465:29;;2331:169;;;;:::o;2506:170::-;2646:22;2642:1;2634:6;2630:14;2623:46;2506:170;:::o;2682:366::-;2824:3;2845:67;2909:2;2904:3;2845:67;:::i;:::-;2838:74;;2921:93;3010:3;2921:93;:::i;:::-;3039:2;3034:3;3030:12;3023:19;;2682:366;;;:::o;3054:419::-;3220:4;3258:2;3247:9;3243:18;3235:26;;3307:9;3301:4;3297:20;3293:1;3282:9;3278:17;3271:47;3335:131;3461:4;3335:131;:::i;:::-;3327:139;;3054:419;;;:::o;3479:118::-;3566:24;3584:5;3566:24;:::i;:::-;3561:3;3554:37;3479:118;;:::o;3603:222::-;3696:4;3734:2;3723:9;3719:18;3711:26;;3747:71;3815:1;3804:9;3800:17;3791:6;3747:71;:::i;:::-;3603:222;;;;:::o;3831:99::-;3883:6;3917:5;3911:12;3901:22;;3831:99;;;:::o;3936:246::-;4017:1;4027:113;4041:6;4038:1;4035:13;4027:113;;;4126:1;4121:3;4117:11;4111:18;4107:1;4102:3;4098:11;4091:39;4063:2;4060:1;4056:10;4051:15;;4027:113;;;4174:1;4165:6;4160:3;4156:16;4149:27;3998:184;3936:246;;;:::o;4188:102::-;4229:6;4280:2;4276:7;4271:2;4264:5;4260:14;4256:28;4246:38;;4188:102;;;:::o;4296:377::-;4384:3;4412:39;4445:5;4412:39;:::i;:::-;4467:71;4531:6;4526:3;4467:71;:::i;:::-;4460:78;;4547:65;4605:6;4600:3;4593:4;4586:5;4582:16;4547:65;:::i;:::-;4637:29;4659:6;4637:29;:::i;:::-;4632:3;4628:39;4621:46;;4388:285;4296:377;;;;:::o;4679:313::-;4792:4;4830:2;4819:9;4815:18;4807:26;;4879:9;4873:4;4869:20;4865:1;4854:9;4850:17;4843:47;4907:78;4980:4;4971:6;4907:78;:::i;:::-;4899:86;;4679:313;;;;:::o;5079:117::-;5188:1;5185;5178:12;5325:126;5362:7;5402:42;5395:5;5391:54;5380:65;;5325:126;;;:::o;5457:96::-;5494:7;5523:24;5541:5;5523:24;:::i;:::-;5512:35;;5457:96;;;:::o;5559:122::-;5632:24;5650:5;5632:24;:::i;:::-;5625:5;5622:35;5612:63;;5671:1;5668;5661:12;5612:63;5559:122;:::o;5687:139::-;5733:5;5771:6;5758:20;5749:29;;5787:33;5814:5;5787:33;:::i;:::-;5687:139;;;;:::o;5832:122::-;5905:24;5923:5;5905:24;:::i;:::-;5898:5;5895:35;5885:63;;5944:1;5941;5934:12;5885:63;5832:122;:::o;5960:139::-;6006:5;6044:6;6031:20;6022:29;;6060:33;6087:5;6060:33;:::i;:::-;5960:139;;;;:::o;6105:474::-;6173:6;6181;6230:2;6218:9;6209:7;6205:23;6201:32;6198:119;;;6236:79;;:::i;:::-;6198:119;6356:1;6381:53;6426:7;6417:6;6406:9;6402:22;6381:53;:::i;:::-;6371:63;;6327:117;6483:2;6509:53;6554:7;6545:6;6534:9;6530:22;6509:53;:::i;:::-;6499:63;;6454:118;6105:474;;;;;:::o;6585:90::-;6619:7;6662:5;6655:13;6648:21;6637:32;;6585:90;;;:::o;6681:109::-;6762:21;6777:5;6762:21;:::i;:::-;6757:3;6750:34;6681:109;;:::o;6796:210::-;6883:4;6921:2;6910:9;6906:18;6898:26;;6934:65;6996:1;6985:9;6981:17;6972:6;6934:65;:::i;:::-;6796:210;;;;:::o;7012:116::-;7082:21;7097:5;7082:21;:::i;:::-;7075:5;7072:32;7062:60;;7118:1;7115;7108:12;7062:60;7012:116;:::o;7134:133::-;7177:5;7215:6;7202:20;7193:29;;7231:30;7255:5;7231:30;:::i;:::-;7134:133;;;;:::o;7273:468::-;7338:6;7346;7395:2;7383:9;7374:7;7370:23;7366:32;7363:119;;;7401:79;;:::i;:::-;7363:119;7521:1;7546:53;7591:7;7582:6;7571:9;7567:22;7546:53;:::i;:::-;7536:63;;7492:117;7648:2;7674:50;7716:7;7707:6;7696:9;7692:22;7674:50;:::i;:::-;7664:60;;7619:115;7273:468;;;;;:::o;7747:619::-;7824:6;7832;7840;7889:2;7877:9;7868:7;7864:23;7860:32;7857:119;;;7895:79;;:::i;:::-;7857:119;8015:1;8040:53;8085:7;8076:6;8065:9;8061:22;8040:53;:::i;:::-;8030:63;;7986:117;8142:2;8168:53;8213:7;8204:6;8193:9;8189:22;8168:53;:::i;:::-;8158:63;;8113:118;8270:2;8296:53;8341:7;8332:6;8321:9;8317:22;8296:53;:::i;:::-;8286:63;;8241:118;7747:619;;;;;:::o;8372:86::-;8407:7;8447:4;8440:5;8436:16;8425:27;;8372:86;;;:::o;8464:112::-;8547:22;8563:5;8547:22;:::i;:::-;8542:3;8535:35;8464:112;;:::o;8582:214::-;8671:4;8709:2;8698:9;8694:18;8686:26;;8722:67;8786:1;8775:9;8771:17;8762:6;8722:67;:::i;:::-;8582:214;;;;:::o;8802:104::-;8847:7;8876:24;8894:5;8876:24;:::i;:::-;8865:35;;8802:104;;;:::o;8912:138::-;8993:32;9019:5;8993:32;:::i;:::-;8986:5;8983:43;8973:71;;9040:1;9037;9030:12;8973:71;8912:138;:::o;9056:155::-;9110:5;9148:6;9135:20;9126:29;;9164:41;9199:5;9164:41;:::i;:::-;9056:155;;;;:::o;9217:345::-;9284:6;9333:2;9321:9;9312:7;9308:23;9304:32;9301:119;;;9339:79;;:::i;:::-;9301:119;9459:1;9484:61;9537:7;9528:6;9517:9;9513:22;9484:61;:::i;:::-;9474:71;;9430:125;9217:345;;;;:::o;9568:118::-;9655:24;9673:5;9655:24;:::i;:::-;9650:3;9643:37;9568:118;;:::o;9692:222::-;9785:4;9823:2;9812:9;9808:18;9800:26;;9836:71;9904:1;9893:9;9889:17;9880:6;9836:71;:::i;:::-;9692:222;;;;:::o;9920:329::-;9979:6;10028:2;10016:9;10007:7;10003:23;9999:32;9996:119;;;10034:79;;:::i;:::-;9996:119;10154:1;10179:53;10224:7;10215:6;10204:9;10200:22;10179:53;:::i;:::-;10169:63;;10125:117;9920:329;;;;:::o;10255:::-;10314:6;10363:2;10351:9;10342:7;10338:23;10334:32;10331:119;;;10369:79;;:::i;:::-;10331:119;10489:1;10514:53;10559:7;10550:6;10539:9;10535:22;10514:53;:::i;:::-;10504:63;;10460:117;10255:329;;;;:::o;10590:474::-;10658:6;10666;10715:2;10703:9;10694:7;10690:23;10686:32;10683:119;;;10721:79;;:::i;:::-;10683:119;10841:1;10866:53;10911:7;10902:6;10891:9;10887:22;10866:53;:::i;:::-;10856:63;;10812:117;10968:2;10994:53;11039:7;11030:6;11019:9;11015:22;10994:53;:::i;:::-;10984:63;;10939:118;10590:474;;;;;:::o;11070:180::-;11118:77;11115:1;11108:88;11215:4;11212:1;11205:15;11239:4;11236:1;11229:15;11256:320;11300:6;11337:1;11331:4;11327:12;11317:22;;11384:1;11378:4;11374:12;11405:18;11395:81;;11461:4;11453:6;11449:17;11439:27;;11395:81;11523:2;11515:6;11512:14;11492:18;11489:38;11486:84;;11542:18;;:::i;:::-;11486:84;11307:269;11256:320;;;:::o;11582:191::-;11622:3;11641:20;11659:1;11641:20;:::i;:::-;11636:25;;11675:20;11693:1;11675:20;:::i;:::-;11670:25;;11718:1;11715;11711:9;11704:16;;11739:3;11736:1;11733:10;11730:36;;;11746:18;;:::i;:::-;11730:36;11582:191;;;;:::o;11779:234::-;11919:34;11915:1;11907:6;11903:14;11896:58;11988:17;11983:2;11975:6;11971:15;11964:42;11779:234;:::o;12019:366::-;12161:3;12182:67;12246:2;12241:3;12182:67;:::i;:::-;12175:74;;12258:93;12347:3;12258:93;:::i;:::-;12376:2;12371:3;12367:12;12360:19;;12019:366;;;:::o;12391:419::-;12557:4;12595:2;12584:9;12580:18;12572:26;;12644:9;12638:4;12634:20;12630:1;12619:9;12615:17;12608:47;12672:131;12798:4;12672:131;:::i;:::-;12664:139;;12391:419;;;:::o;12816:180::-;12864:77;12861:1;12854:88;12961:4;12958:1;12951:15;12985:4;12982:1;12975:15;13002:180;13050:77;13047:1;13040:88;13147:4;13144:1;13137:15;13171:4;13168:1;13161:15;13188:143;13245:5;13276:6;13270:13;13261:22;;13292:33;13319:5;13292:33;:::i;:::-;13188:143;;;;:::o;13337:351::-;13407:6;13456:2;13444:9;13435:7;13431:23;13427:32;13424:119;;;13462:79;;:::i;:::-;13424:119;13582:1;13607:64;13663:7;13654:6;13643:9;13639:22;13607:64;:::i;:::-;13597:74;;13553:128;13337:351;;;;:::o;13694:85::-;13739:7;13768:5;13757:16;;13694:85;;;:::o;13785:60::-;13813:3;13834:5;13827:12;;13785:60;;;:::o;13851:158::-;13909:9;13942:61;13960:42;13969:32;13995:5;13969:32;:::i;:::-;13960:42;:::i;:::-;13942:61;:::i;:::-;13929:74;;13851:158;;;:::o;14015:147::-;14110:45;14149:5;14110:45;:::i;:::-;14105:3;14098:58;14015:147;;:::o;14168:114::-;14235:6;14269:5;14263:12;14253:22;;14168:114;;;:::o;14288:184::-;14387:11;14421:6;14416:3;14409:19;14461:4;14456:3;14452:14;14437:29;;14288:184;;;;:::o;14478:132::-;14545:4;14568:3;14560:11;;14598:4;14593:3;14589:14;14581:22;;14478:132;;;:::o;14616:108::-;14693:24;14711:5;14693:24;:::i;:::-;14688:3;14681:37;14616:108;;:::o;14730:179::-;14799:10;14820:46;14862:3;14854:6;14820:46;:::i;:::-;14898:4;14893:3;14889:14;14875:28;;14730:179;;;;:::o;14915:113::-;14985:4;15017;15012:3;15008:14;15000:22;;14915:113;;;:::o;15064:732::-;15183:3;15212:54;15260:5;15212:54;:::i;:::-;15282:86;15361:6;15356:3;15282:86;:::i;:::-;15275:93;;15392:56;15442:5;15392:56;:::i;:::-;15471:7;15502:1;15487:284;15512:6;15509:1;15506:13;15487:284;;;15588:6;15582:13;15615:63;15674:3;15659:13;15615:63;:::i;:::-;15608:70;;15701:60;15754:6;15701:60;:::i;:::-;15691:70;;15547:224;15534:1;15531;15527:9;15522:14;;15487:284;;;15491:14;15787:3;15780:10;;15188:608;;;15064:732;;;;:::o;15802:831::-;16065:4;16103:3;16092:9;16088:19;16080:27;;16117:71;16185:1;16174:9;16170:17;16161:6;16117:71;:::i;:::-;16198:80;16274:2;16263:9;16259:18;16250:6;16198:80;:::i;:::-;16325:9;16319:4;16315:20;16310:2;16299:9;16295:18;16288:48;16353:108;16456:4;16447:6;16353:108;:::i;:::-;16345:116;;16471:72;16539:2;16528:9;16524:18;16515:6;16471:72;:::i;:::-;16553:73;16621:3;16610:9;16606:19;16597:6;16553:73;:::i;:::-;15802:831;;;;;;;;:::o;16639:172::-;16779:24;16775:1;16767:6;16763:14;16756:48;16639:172;:::o;16817:366::-;16959:3;16980:67;17044:2;17039:3;16980:67;:::i;:::-;16973:74;;17056:93;17145:3;17056:93;:::i;:::-;17174:2;17169:3;17165:12;17158:19;;16817:366;;;:::o;17189:419::-;17355:4;17393:2;17382:9;17378:18;17370:26;;17442:9;17436:4;17432:20;17428:1;17417:9;17413:17;17406:47;17470:131;17596:4;17470:131;:::i;:::-;17462:139;;17189:419;;;:::o;17614:224::-;17754:34;17750:1;17742:6;17738:14;17731:58;17823:7;17818:2;17810:6;17806:15;17799:32;17614:224;:::o;17844:366::-;17986:3;18007:67;18071:2;18066:3;18007:67;:::i;:::-;18000:74;;18083:93;18172:3;18083:93;:::i;:::-;18201:2;18196:3;18192:12;18185:19;;17844:366;;;:::o;18216:419::-;18382:4;18420:2;18409:9;18405:18;18397:26;;18469:9;18463:4;18459:20;18455:1;18444:9;18440:17;18433:47;18497:131;18623:4;18497:131;:::i;:::-;18489:139;;18216:419;;;:::o;18641:225::-;18781:34;18777:1;18769:6;18765:14;18758:58;18850:8;18845:2;18837:6;18833:15;18826:33;18641:225;:::o;18872:366::-;19014:3;19035:67;19099:2;19094:3;19035:67;:::i;:::-;19028:74;;19111:93;19200:3;19111:93;:::i;:::-;19229:2;19224:3;19220:12;19213:19;;18872:366;;;:::o;19244:419::-;19410:4;19448:2;19437:9;19433:18;19425:26;;19497:9;19491:4;19487:20;19483:1;19472:9;19468:17;19461:47;19525:131;19651:4;19525:131;:::i;:::-;19517:139;;19244:419;;;:::o;19669:223::-;19809:34;19805:1;19797:6;19793:14;19786:58;19878:6;19873:2;19865:6;19861:15;19854:31;19669:223;:::o;19898:366::-;20040:3;20061:67;20125:2;20120:3;20061:67;:::i;:::-;20054:74;;20137:93;20226:3;20137:93;:::i;:::-;20255:2;20250:3;20246:12;20239:19;;19898:366;;;:::o;20270:419::-;20436:4;20474:2;20463:9;20459:18;20451:26;;20523:9;20517:4;20513:20;20509:1;20498:9;20494:17;20487:47;20551:131;20677:4;20551:131;:::i;:::-;20543:139;;20270:419;;;:::o;20695:221::-;20835:34;20831:1;20823:6;20819:14;20812:58;20904:4;20899:2;20891:6;20887:15;20880:29;20695:221;:::o;20922:366::-;21064:3;21085:67;21149:2;21144:3;21085:67;:::i;:::-;21078:74;;21161:93;21250:3;21161:93;:::i;:::-;21279:2;21274:3;21270:12;21263:19;;20922:366;;;:::o;21294:419::-;21460:4;21498:2;21487:9;21483:18;21475:26;;21547:9;21541:4;21537:20;21533:1;21522:9;21518:17;21511:47;21575:131;21701:4;21575:131;:::i;:::-;21567:139;;21294:419;;;:::o;21719:182::-;21859:34;21855:1;21847:6;21843:14;21836:58;21719:182;:::o;21907:366::-;22049:3;22070:67;22134:2;22129:3;22070:67;:::i;:::-;22063:74;;22146:93;22235:3;22146:93;:::i;:::-;22264:2;22259:3;22255:12;22248:19;;21907:366;;;:::o;22279:419::-;22445:4;22483:2;22472:9;22468:18;22460:26;;22532:9;22526:4;22522:20;22518:1;22507:9;22503:17;22496:47;22560:131;22686:4;22560:131;:::i;:::-;22552:139;;22279:419;;;:::o;22704:179::-;22844:31;22840:1;22832:6;22828:14;22821:55;22704:179;:::o;22889:366::-;23031:3;23052:67;23116:2;23111:3;23052:67;:::i;:::-;23045:74;;23128:93;23217:3;23128:93;:::i;:::-;23246:2;23241:3;23237:12;23230:19;;22889:366;;;:::o;23261:419::-;23427:4;23465:2;23454:9;23450:18;23442:26;;23514:9;23508:4;23504:20;23500:1;23489:9;23485:17;23478:47;23542:131;23668:4;23542:131;:::i;:::-;23534:139;;23261:419;;;:::o;23686:169::-;23826:21;23822:1;23814:6;23810:14;23803:45;23686:169;:::o;23861:366::-;24003:3;24024:67;24088:2;24083:3;24024:67;:::i;:::-;24017:74;;24100:93;24189:3;24100:93;:::i;:::-;24218:2;24213:3;24209:12;24202:19;;23861:366;;;:::o;24233:419::-;24399:4;24437:2;24426:9;24422:18;24414:26;;24486:9;24480:4;24476:20;24472:1;24461:9;24457:17;24450:47;24514:131;24640:4;24514:131;:::i;:::-;24506:139;;24233:419;;;:::o;24658:165::-;24798:17;24794:1;24786:6;24782:14;24775:41;24658:165;:::o;24829:366::-;24971:3;24992:67;25056:2;25051:3;24992:67;:::i;:::-;24985:74;;25068:93;25157:3;25068:93;:::i;:::-;25186:2;25181:3;25177:12;25170:19;;24829:366;;;:::o;25201:419::-;25367:4;25405:2;25394:9;25390:18;25382:26;;25454:9;25448:4;25444:20;25440:1;25429:9;25425:17;25418:47;25482:131;25608:4;25482:131;:::i;:::-;25474:139;;25201:419;;;:::o;25626:169::-;25766:21;25762:1;25754:6;25750:14;25743:45;25626:169;:::o;25801:366::-;25943:3;25964:67;26028:2;26023:3;25964:67;:::i;:::-;25957:74;;26040:93;26129:3;26040:93;:::i;:::-;26158:2;26153:3;26149:12;26142:19;;25801:366;;;:::o;26173:419::-;26339:4;26377:2;26366:9;26362:18;26354:26;;26426:9;26420:4;26416:20;26412:1;26401:9;26397:17;26390:47;26454:131;26580:4;26454:131;:::i;:::-;26446:139;;26173:419;;;:::o;26598:153::-;26738:5;26734:1;26726:6;26722:14;26715:29;26598:153;:::o;26757:365::-;26899:3;26920:66;26984:1;26979:3;26920:66;:::i;:::-;26913:73;;26995:93;27084:3;26995:93;:::i;:::-;27113:2;27108:3;27104:12;27097:19;;26757:365;;;:::o;27128:419::-;27294:4;27332:2;27321:9;27317:18;27309:26;;27381:9;27375:4;27371:20;27367:1;27356:9;27352:17;27345:47;27409:131;27535:4;27409:131;:::i;:::-;27401:139;;27128:419;;;:::o;27553:224::-;27693:34;27689:1;27681:6;27677:14;27670:58;27762:7;27757:2;27749:6;27745:15;27738:32;27553:224;:::o;27783:366::-;27925:3;27946:67;28010:2;28005:3;27946:67;:::i;:::-;27939:74;;28022:93;28111:3;28022:93;:::i;:::-;28140:2;28135:3;28131:12;28124:19;;27783:366;;;:::o;28155:419::-;28321:4;28359:2;28348:9;28344:18;28336:26;;28408:9;28402:4;28398:20;28394:1;28383:9;28379:17;28372:47;28436:131;28562:4;28436:131;:::i;:::-;28428:139;;28155:419;;;:::o;28580:222::-;28720:34;28716:1;28708:6;28704:14;28697:58;28789:5;28784:2;28776:6;28772:15;28765:30;28580:222;:::o;28808:366::-;28950:3;28971:67;29035:2;29030:3;28971:67;:::i;:::-;28964:74;;29047:93;29136:3;29047:93;:::i;:::-;29165:2;29160:3;29156:12;29149:19;;28808:366;;;:::o;29180:419::-;29346:4;29384:2;29373:9;29369:18;29361:26;;29433:9;29427:4;29423:20;29419:1;29408:9;29404:17;29397:47;29461:131;29587:4;29461:131;:::i;:::-;29453:139;;29180:419;;;:::o;29605:225::-;29745:34;29741:1;29733:6;29729:14;29722:58;29814:8;29809:2;29801:6;29797:15;29790:33;29605:225;:::o;29836:366::-;29978:3;29999:67;30063:2;30058:3;29999:67;:::i;:::-;29992:74;;30075:93;30164:3;30075:93;:::i;:::-;30193:2;30188:3;30184:12;30177:19;;29836:366;;;:::o;30208:419::-;30374:4;30412:2;30401:9;30397:18;30389:26;;30461:9;30455:4;30451:20;30447:1;30436:9;30432:17;30425:47;30489:131;30615:4;30489:131;:::i;:::-;30481:139;;30208:419;;;:::o

Swarm Source

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