ETH Price: $3,923.78 (+5.37%)

Token

ERC-20: Brett (BRETT)
 

Overview

Max Total Supply

420,690,000,000,000 BRETT

Holders

334

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.416226426927324336 BRETT

Value
$0.00
0x831f77bb13a31c5a908c723f8ddfc9193afa1b05
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:
Brett

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-13
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

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

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

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

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

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

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

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

interface IUniswapV2Factory {
    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);
}

interface IUniswapV2Router {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);
}

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

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

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

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

    /**
     * @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
    ) external virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @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
    ) external 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
    ) external virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        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
    ) external 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 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
    ) external virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

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

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

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

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

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

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

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

contract Brett is ERC20, Ownable {
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _sniper;

    address public _marketingWallet = 0x8c6645779d83EfE35640C18bDde87E7E4fdBbE65;
    address public _devWallet = 0x4098dd2708c79a2B9397c66c8EcEDFbdb0b1BAA5;

    uint256 public feesBuy = 2500;

    uint256 public _feesM = 2500;
    uint256 public _feesLp = 0;
    uint256 public _feesDev = 1000;
    uint256 public feesSellTotal = _feesLp + _feesM + _feesDev;

    uint256 public _maxWallet;
    uint256 public _minTokensBeforeSwapping = 600;

    IUniswapV2Router public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
   
    bool public started;
    bool inSwapAndLiquify;

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor() ERC20("Brett", "BRETT") {
        uint256 startSupply = 420690e9 * 10 ** decimals();
        _mint(msg.sender, (startSupply));

        IUniswapV2Router _uniswapV2Router = IUniswapV2Router(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[address(uniswapV2Router)] = true;
        _isExcludedFromFee[msg.sender] = true;

        _maxWallet = startSupply / 100;
        
        _approve(msg.sender, address(uniswapV2Router), type(uint256).max);
        _approve(address(this), address(uniswapV2Router), type(uint256).max);
    }

    function openTrading() external onlyOwner {
        started = true;
    }

    function removeSnipers(address[] calldata accounts) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _sniper[accounts[i]] = false;
        }
    }

    function addSnipers(address[] calldata accounts) external onlyOwner {
        uint256 len = accounts.length;
        for(uint256 i = 0; i < len;) {
            _sniper[accounts[i]] = true;
            unchecked {
                i++;
            }
        }
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(!_sniper[from], "Sniper rejected");
        if (
            _isExcludedFromFee[from] ||
            _isExcludedFromFee[to] ||
            inSwapAndLiquify
        ) {
            super._transfer(from, to, amount);
        } else {
            require(started, "Not open yet");
            uint taxAmount;
            if (to == uniswapV2Pair) {
                uint256 bal = balanceOf(address(this));
                uint256 threshold = balanceOf(uniswapV2Pair) * _minTokensBeforeSwapping / 10000;
                if (
                    bal >= threshold
                ) {
                    if (bal >= 3 * threshold) bal = 3 * threshold;
                    _swapAndLiquify(bal);
                }
                taxAmount = amount * feesSellTotal / 10000;
            } else if (from == uniswapV2Pair) {
                taxAmount = amount * feesBuy / 10000;
                require(
                    balanceOf(to) + amount - taxAmount <= _maxWallet,
                    "Transfer amount exceeds max wallet"
                );
            } else {
                require(
                    balanceOf(to) + amount <= _maxWallet,
                    "Transfer amount exceeds max wallet"
                );
            }
            super._transfer(from, to, amount - taxAmount);
            if (taxAmount > 0) {
                super._transfer(from, address(this), taxAmount);
            }
        }
    }

    function _swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 _feesSellTotal = feesSellTotal;
        if (_feesSellTotal == 0) return;
        uint256 feeTotal = _feesSellTotal - _feesLp / 2;
        uint256 toSell = contractTokenBalance * feeTotal / _feesSellTotal;

        _swapTokensForEth(toSell);
        uint256 balance = address(this).balance;

        uint256 toDev = balance * _feesDev / feeTotal;
        uint256 toMarketing = balance * _feesM / feeTotal;
        
        if (_feesLp > 0) {
            _addLiquidity(
                contractTokenBalance - toSell,
                balance - toDev - toMarketing
            );
        }
        if (toMarketing > 0) {
            payable(_marketingWallet).transfer(toMarketing);
        }

        if (address(this).balance > 0) {
            payable(_devWallet).transfer(address(this).balance);
        }
    }

    function _swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            (block.timestamp)
        );
    }

    function _addLiquidity(
        uint256 tokenAmount,
        uint256 ethAmount
    ) private lockTheSwap {
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    function getStatus(address a) external view returns(bool) {
        return _sniper[a];
    }

    function setDevWallet(address newWallet) external onlyOwner {
        _devWallet = newWallet;
    }

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

    function setMinTokens(uint256 newValue) external onlyOwner {
        _minTokensBeforeSwapping = newValue;
    }

    function excludeFromFees(address[] calldata addresses)
        external
        onlyOwner
    {
        for (uint256 i = 0; i < addresses.length; i++) {
            _isExcludedFromFee[addresses[i]] = true;
        }
    }

    function includeInFees(address[] calldata addresses)
        external
        onlyOwner
    {
        for (uint256 i = 0; i < addresses.length; i++) {
            _isExcludedFromFee[addresses[i]] = false;
        }
    }

    function editBuyFees(uint256 newValue) external onlyOwner {
        feesBuy = newValue;
    }

    function editSellFees(
        uint256 __feesDev,
        uint256 __feesLp,
        uint256 __feesM
    ) external onlyOwner {
        _feesDev = __feesDev;
        _feesLp = __feesLp;
        _feesM = __feesM;
        feesSellTotal = __feesDev + __feesLp + __feesM;
    }

    function setMaxWallet(uint256 __maxWallet) external onlyOwner {
        _maxWallet = __maxWallet;
    }

    function getStuckETH() external onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }

    function getStuckTokens(
        IERC20 tokenAddress,
        address walletAddress,
        uint256 amt
    ) external onlyOwner {
        uint256 bal = tokenAddress.balanceOf(address(this));
        IERC20(tokenAddress).transfer(
            walletAddress,
            amt > bal ? bal : amt
        );
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feesDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feesLp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feesM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"_minTokensBeforeSwapping","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"addSnipers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"editBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"__feesDev","type":"uint256"},{"internalType":"uint256","name":"__feesLp","type":"uint256"},{"internalType":"uint256","name":"__feesM","type":"uint256"}],"name":"editSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feesSellTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"getStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenAddress","type":"address"},{"internalType":"address","name":"walletAddress","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"getStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"includeInFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"removeSnipers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"__maxWallet","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMinTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"started","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"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":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052738c6645779d83efe35640c18bdde87e7e4fdbbe65600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734098dd2708c79a2b9397c66c8ecedfbdb0b1baa5600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506109c4600a556109c4600b556000600c556103e8600d55600d54600b54600c54620000da91906200093b565b620000e691906200093b565b600e55610258601055348015620000fc57600080fd5b506040518060400160405280600581526020017f42726574740000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f425245545400000000000000000000000000000000000000000000000000000081525081600390816200017a919062000be6565b5080600490816200018c919062000be6565b505050620001af620001a36200051560201b60201c565b6200051d60201b60201c565b6000620001c1620005e360201b60201c565b600a620001cf919062000e2e565b66017e9d8602b400620001e3919062000e7f565b9050620001f73382620005ec60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000282919062000f34565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000310919062000f34565b6040518363ffffffff1660e01b81526004016200032f92919062000f77565b6020604051808303816000875af11580156200034f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000375919062000f34565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060016006600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506064826200049d919062000fd3565b600f81905550620004d8336080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200073160201b60201c565b6200050d306080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200073160201b60201c565b5050620011ec565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200065e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000655906200106c565b60405180910390fd5b80600260008282546200067291906200093b565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200072591906200109f565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620007a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200079a9062001132565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000815576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200080c90620011ca565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620008f591906200109f565b60405180910390a3505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620009488262000902565b9150620009558362000902565b925082820190508082111562000970576200096f6200090c565b5b92915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620009f857607f821691505b60208210810362000a0e5762000a0d620009b0565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a787fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a39565b62000a84868362000a39565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000ac762000ac162000abb8462000902565b62000a9c565b62000902565b9050919050565b6000819050919050565b62000ae38362000aa6565b62000afb62000af28262000ace565b84845462000a46565b825550505050565b600090565b62000b1262000b03565b62000b1f81848462000ad8565b505050565b5b8181101562000b475762000b3b60008262000b08565b60018101905062000b25565b5050565b601f82111562000b965762000b608162000a14565b62000b6b8462000a29565b8101602085101562000b7b578190505b62000b9362000b8a8562000a29565b83018262000b24565b50505b505050565b600082821c905092915050565b600062000bbb6000198460080262000b9b565b1980831691505092915050565b600062000bd6838362000ba8565b9150826002028217905092915050565b62000bf18262000976565b67ffffffffffffffff81111562000c0d5762000c0c62000981565b5b62000c198254620009df565b62000c2682828562000b4b565b600060209050601f83116001811462000c5e576000841562000c49578287015190505b62000c55858262000bc8565b86555062000cc5565b601f19841662000c6e8662000a14565b60005b8281101562000c985784890151825560018201915060208501945060208101905062000c71565b8683101562000cb8578489015162000cb4601f89168262000ba8565b8355505b6001600288020188555050505b505050505050565b60008160011c9050919050565b6000808291508390505b600185111562000d2c5780860481111562000d045762000d036200090c565b5b600185161562000d145780820291505b808102905062000d248562000ccd565b945062000ce4565b94509492505050565b60008262000d47576001905062000e1a565b8162000d57576000905062000e1a565b816001811462000d70576002811462000d7b5762000db1565b600191505062000e1a565b60ff84111562000d905762000d8f6200090c565b5b8360020a91508482111562000daa5762000da96200090c565b5b5062000e1a565b5060208310610133831016604e8410600b841016171562000deb5782820a90508381111562000de55762000de46200090c565b5b62000e1a565b62000dfa848484600162000cda565b9250905081840481111562000e145762000e136200090c565b5b81810290505b9392505050565b600060ff82169050919050565b600062000e3b8262000902565b915062000e488362000e21565b925062000e777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000d35565b905092915050565b600062000e8c8262000902565b915062000e998362000902565b925082820262000ea98162000902565b9150828204841483151762000ec35762000ec26200090c565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000efc8262000ecf565b9050919050565b62000f0e8162000eef565b811462000f1a57600080fd5b50565b60008151905062000f2e8162000f03565b92915050565b60006020828403121562000f4d5762000f4c62000eca565b5b600062000f5d8482850162000f1d565b91505092915050565b62000f718162000eef565b82525050565b600060408201905062000f8e600083018562000f66565b62000f9d602083018462000f66565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000fe08262000902565b915062000fed8362000902565b925082620010005762000fff62000fa4565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001054601f836200100b565b915062001061826200101c565b602082019050919050565b60006020820190508181036000830152620010878162001045565b9050919050565b620010998162000902565b82525050565b6000602082019050620010b660008301846200108e565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006200111a6024836200100b565b91506200112782620010bc565b604082019050919050565b600060208201905081810360008301526200114d816200110b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000620011b26022836200100b565b9150620011bf8262001154565b604082019050919050565b60006020820190508181036000830152620011e581620011a3565b9050919050565b60805160a0516133e66200123c60003960008181610b8601528181611828015281816118930152611927015260008181610a2e0152818161205c01528181612139015261220701526133e66000f3fe60806040526004361061023f5760003560e01c806370a082311161012e578063a9059cbb116100ab578063d3208b131161006f578063d3208b131461085a578063dd62ed3e14610885578063e6991e2d146108c2578063f2fde38b146108eb578063f476b8a41461091457610246565b8063a9059cbb14610789578063b41150c5146107c6578063c9567bf9146107ef578063ca1dd6d414610806578063ce3b9aa31461083157610246565b8063923ffc14116100f2578063923ffc14146106a457806392f42870146106cd57806395d89b41146106f6578063962dfc7514610721578063a457c2d71461074c57610246565b806370a08231146105cf578063713f9cfd1461060c578063715018a61461063757806382247ec01461064e5780638da5cb5b1461067957610246565b8063313ce567116101bc5780635b28b246116101805780635b28b246146105125780635d0044ca1461053b5780635d098b3814610564578063606208041461058d5780636b996150146105b857610246565b8063313ce5671461042b57806333f82cea14610456578063395093511461048157806349bd5a5e146104be57806349f2c4ae146104e957610246565b806318160ddd1161020357806318160ddd146103325780631f2698ab1461035d5780631f53ac021461038857806323b872dd146103b157806330ccebb5146103ee57610246565b806306fdde031461024b578063095ea7b3146102765780630e7e573f146102b357806311a63e17146102dc5780631694505e1461030757610246565b3661024657005b600080fd5b34801561025757600080fd5b5061026061093f565b60405161026d9190612366565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190612426565b6109d1565b6040516102aa9190612481565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d5919061249c565b6109f4565b005b3480156102e857600080fd5b506102f1610a06565b6040516102fe91906124d8565b60405180910390f35b34801561031357600080fd5b5061031c610a2c565b6040516103299190612552565b60405180910390f35b34801561033e57600080fd5b50610347610a50565b604051610354919061257c565b60405180910390f35b34801561036957600080fd5b50610372610a5a565b60405161037f9190612481565b60405180910390f35b34801561039457600080fd5b506103af60048036038101906103aa9190612597565b610a6d565b005b3480156103bd57600080fd5b506103d860048036038101906103d391906125c4565b610ab9565b6040516103e59190612481565b60405180910390f35b3480156103fa57600080fd5b5061041560048036038101906104109190612597565b610ae8565b6040516104229190612481565b60405180910390f35b34801561043757600080fd5b50610440610b3e565b60405161044d9190612633565b60405180910390f35b34801561046257600080fd5b5061046b610b47565b604051610478919061257c565b60405180910390f35b34801561048d57600080fd5b506104a860048036038101906104a39190612426565b610b4d565b6040516104b59190612481565b60405180910390f35b3480156104ca57600080fd5b506104d3610b84565b6040516104e091906124d8565b60405180910390f35b3480156104f557600080fd5b50610510600480360381019061050b91906126b3565b610ba8565b005b34801561051e57600080fd5b506105396004803603810190610534919061273e565b610c55565b005b34801561054757600080fd5b50610562600480360381019061055d919061249c565b610d6e565b005b34801561057057600080fd5b5061058b60048036038101906105869190612597565b610d80565b005b34801561059957600080fd5b506105a2610dcc565b6040516105af919061257c565b60405180910390f35b3480156105c457600080fd5b506105cd610dd2565b005b3480156105db57600080fd5b506105f660048036038101906105f19190612597565b610e23565b604051610603919061257c565b60405180910390f35b34801561061857600080fd5b50610621610e6b565b60405161062e919061257c565b60405180910390f35b34801561064357600080fd5b5061064c610e71565b005b34801561065a57600080fd5b50610663610e85565b604051610670919061257c565b60405180910390f35b34801561068557600080fd5b5061068e610e8b565b60405161069b91906124d8565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c691906126b3565b610eb5565b005b3480156106d957600080fd5b506106f460048036038101906106ef91906126b3565b610f62565b005b34801561070257600080fd5b5061070b61100f565b6040516107189190612366565b60405180910390f35b34801561072d57600080fd5b506107366110a1565b60405161074391906124d8565b60405180910390f35b34801561075857600080fd5b50610773600480360381019061076e9190612426565b6110c7565b6040516107809190612481565b60405180910390f35b34801561079557600080fd5b506107b060048036038101906107ab9190612426565b61113e565b6040516107bd9190612481565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190612791565b611161565b005b3480156107fb57600080fd5b506108046111a0565b005b34801561081257600080fd5b5061081b6111c5565b604051610828919061257c565b60405180910390f35b34801561083d57600080fd5b50610858600480360381019061085391906126b3565b6111cb565b005b34801561086657600080fd5b5061086f611278565b60405161087c919061257c565b60405180910390f35b34801561089157600080fd5b506108ac60048036038101906108a791906127e4565b61127e565b6040516108b9919061257c565b60405180910390f35b3480156108ce57600080fd5b506108e960048036038101906108e4919061249c565b611305565b005b3480156108f757600080fd5b50610912600480360381019061090d9190612597565b611317565b005b34801561092057600080fd5b5061092961139a565b604051610936919061257c565b60405180910390f35b60606003805461094e90612853565b80601f016020809104026020016040519081016040528092919081815260200182805461097a90612853565b80156109c75780601f1061099c576101008083540402835291602001916109c7565b820191906000526020600020905b8154815290600101906020018083116109aa57829003601f168201915b5050505050905090565b6000806109dc6113a0565b90506109e98185856113a8565b600191505092915050565b6109fc611571565b8060108190555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b601160009054906101000a900460ff1681565b610a75611571565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080610ac46113a0565b9050610ad18582856115ef565b610adc85858561167b565b60019150509392505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006012905090565b600b5481565b600080610b586113a0565b9050610b79818585610b6a858961127e565b610b7491906128b3565b6113a8565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610bb0611571565b60005b82829050811015610c5057600060076000858585818110610bd757610bd66128e7565b5b9050602002016020810190610bec9190612597565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610c4890612916565b915050610bb3565b505050565b610c5d611571565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c9891906124d8565b602060405180830381865afa158015610cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd99190612973565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84838511610d055784610d07565b835b6040518363ffffffff1660e01b8152600401610d249291906129a0565b6020604051808303816000875af1158015610d43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6791906129f5565b5050505050565b610d76611571565b80600f8190555050565b610d88611571565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b610dda611571565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610e20573d6000803e3d6000fd5b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a5481565b610e79611571565b610e836000611a89565b565b600f5481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ebd611571565b60005b82829050811015610f5d57600060066000858585818110610ee457610ee36128e7565b5b9050602002016020810190610ef99190612597565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f5590612916565b915050610ec0565b505050565b610f6a611571565b60005b8282905081101561100a57600160066000858585818110610f9157610f906128e7565b5b9050602002016020810190610fa69190612597565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061100290612916565b915050610f6d565b505050565b60606004805461101e90612853565b80601f016020809104026020016040519081016040528092919081815260200182805461104a90612853565b80156110975780601f1061106c57610100808354040283529160200191611097565b820191906000526020600020905b81548152906001019060200180831161107a57829003601f168201915b5050505050905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806110d26113a0565b905060006110e0828661127e565b905083811015611125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111c90612a94565b60405180910390fd5b61113282868684036113a8565b60019250505092915050565b6000806111496113a0565b905061115681858561167b565b600191505092915050565b611169611571565b82600d8190555081600c8190555080600b8190555080828461118b91906128b3565b61119591906128b3565b600e81905550505050565b6111a8611571565b6001601160006101000a81548160ff021916908315150217905550565b600e5481565b6111d3611571565b600082829050905060005b81811015611272576001600760008686858181106111ff576111fe6128e7565b5b90506020020160208101906112149190612597565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806001019150506111de565b50505050565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61130d611571565b80600a8190555050565b61131f611571565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361138e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138590612b26565b60405180910390fd5b61139781611a89565b50565b600c5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140e90612bb8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147d90612c4a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611564919061257c565b60405180910390a3505050565b6115796113a0565b73ffffffffffffffffffffffffffffffffffffffff16611597610e8b565b73ffffffffffffffffffffffffffffffffffffffff16146115ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e490612cb6565b60405180910390fd5b565b60006115fb848461127e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146116755781811015611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e90612d22565b60405180910390fd5b61167484848484036113a8565b5b50505050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ff90612d8e565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117a95750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806117c05750601160019054906101000a900460ff165b156117d5576117d0838383611b4f565b611a84565b601160009054906101000a900460ff16611824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181b90612dfa565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361192557600061188430610e23565b905060006127106010546118b77f0000000000000000000000000000000000000000000000000000000000000000610e23565b6118c19190612e1a565b6118cb9190612e8b565b9050808210611901578060036118e19190612e1a565b82106118f7578060036118f49190612e1a565b91505b61190082611daf565b5b612710600e54856119129190612e1a565b61191c9190612e8b565b92505050611a57565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036119fd57612710600a54836119899190612e1a565b6119939190612e8b565b9050600f5481836119a386610e23565b6119ad91906128b3565b6119b79190612ebc565b11156119f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ef90612f62565b60405180910390fd5b611a56565b600f5482611a0a85610e23565b611a1491906128b3565b1115611a55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4c90612f62565b60405180910390fd5b5b5b611a6d84848385611a689190612ebc565b611b4f565b6000811115611a8257611a81843083611b4f565b5b505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb590612ff4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2490613086565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caa90613118565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611da1919061257c565b60405180910390a350505050565b6001601160016101000a81548160ff0219169083151502179055506000600e54905060008103611ddf5750611f84565b60006002600c54611df09190612e8b565b82611dfb9190612ebc565b90506000828285611e0c9190612e1a565b611e169190612e8b565b9050611e2181611fa2565b6000479050600083600d5483611e379190612e1a565b611e419190612e8b565b9050600084600b5484611e549190612e1a565b611e5e9190612e8b565b90506000600c541115611e9757611e968488611e7a9190612ebc565b828486611e879190612ebc565b611e919190612ebc565b6121ea565b5b6000811115611f0a57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f08573d6000803e3d6000fd5b505b6000471115611f7d57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611f7b573d6000803e3d6000fd5b505b5050505050505b6000601160016101000a81548160ff02191690831515021790555050565b6001601160016101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611fda57611fd9613138565b5b6040519080825280602002602001820160405280156120085781602001602082028036833780820191505090505b50905030816000815181106120205761201f6128e7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e9919061317c565b816001815181106120fd576120fc6128e7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016121999594939291906132a2565b600060405180830381600087803b1580156121b357600080fd5b505af11580156121c7573d6000803e3d6000fd5b50505050506000601160016101000a81548160ff02191690831515021790555050565b6001601160016101000a81548160ff0219169083151502179055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061224f610e8b565b426040518863ffffffff1660e01b8152600401612271969594939291906132fc565b60606040518083038185885af115801561228f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122b4919061335d565b5050506000601160016101000a81548160ff0219169083151502179055505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123105780820151818401526020810190506122f5565b60008484015250505050565b6000601f19601f8301169050919050565b6000612338826122d6565b61234281856122e1565b93506123528185602086016122f2565b61235b8161231c565b840191505092915050565b60006020820190508181036000830152612380818461232d565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123bd82612392565b9050919050565b6123cd816123b2565b81146123d857600080fd5b50565b6000813590506123ea816123c4565b92915050565b6000819050919050565b612403816123f0565b811461240e57600080fd5b50565b600081359050612420816123fa565b92915050565b6000806040838503121561243d5761243c612388565b5b600061244b858286016123db565b925050602061245c85828601612411565b9150509250929050565b60008115159050919050565b61247b81612466565b82525050565b60006020820190506124966000830184612472565b92915050565b6000602082840312156124b2576124b1612388565b5b60006124c084828501612411565b91505092915050565b6124d2816123b2565b82525050565b60006020820190506124ed60008301846124c9565b92915050565b6000819050919050565b600061251861251361250e84612392565b6124f3565b612392565b9050919050565b600061252a826124fd565b9050919050565b600061253c8261251f565b9050919050565b61254c81612531565b82525050565b60006020820190506125676000830184612543565b92915050565b612576816123f0565b82525050565b6000602082019050612591600083018461256d565b92915050565b6000602082840312156125ad576125ac612388565b5b60006125bb848285016123db565b91505092915050565b6000806000606084860312156125dd576125dc612388565b5b60006125eb868287016123db565b93505060206125fc868287016123db565b925050604061260d86828701612411565b9150509250925092565b600060ff82169050919050565b61262d81612617565b82525050565b60006020820190506126486000830184612624565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126126735761267261264e565b5b8235905067ffffffffffffffff8111156126905761268f612653565b5b6020830191508360208202830111156126ac576126ab612658565b5b9250929050565b600080602083850312156126ca576126c9612388565b5b600083013567ffffffffffffffff8111156126e8576126e761238d565b5b6126f48582860161265d565b92509250509250929050565b600061270b826123b2565b9050919050565b61271b81612700565b811461272657600080fd5b50565b60008135905061273881612712565b92915050565b60008060006060848603121561275757612756612388565b5b600061276586828701612729565b9350506020612776868287016123db565b925050604061278786828701612411565b9150509250925092565b6000806000606084860312156127aa576127a9612388565b5b60006127b886828701612411565b93505060206127c986828701612411565b92505060406127da86828701612411565b9150509250925092565b600080604083850312156127fb576127fa612388565b5b6000612809858286016123db565b925050602061281a858286016123db565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061286b57607f821691505b60208210810361287e5761287d612824565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006128be826123f0565b91506128c9836123f0565b92508282019050808211156128e1576128e0612884565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612921826123f0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361295357612952612884565b5b600182019050919050565b60008151905061296d816123fa565b92915050565b60006020828403121561298957612988612388565b5b60006129978482850161295e565b91505092915050565b60006040820190506129b560008301856124c9565b6129c2602083018461256d565b9392505050565b6129d281612466565b81146129dd57600080fd5b50565b6000815190506129ef816129c9565b92915050565b600060208284031215612a0b57612a0a612388565b5b6000612a19848285016129e0565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612a7e6025836122e1565b9150612a8982612a22565b604082019050919050565b60006020820190508181036000830152612aad81612a71565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612b106026836122e1565b9150612b1b82612ab4565b604082019050919050565b60006020820190508181036000830152612b3f81612b03565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612ba26024836122e1565b9150612bad82612b46565b604082019050919050565b60006020820190508181036000830152612bd181612b95565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c346022836122e1565b9150612c3f82612bd8565b604082019050919050565b60006020820190508181036000830152612c6381612c27565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ca06020836122e1565b9150612cab82612c6a565b602082019050919050565b60006020820190508181036000830152612ccf81612c93565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612d0c601d836122e1565b9150612d1782612cd6565b602082019050919050565b60006020820190508181036000830152612d3b81612cff565b9050919050565b7f536e697065722072656a65637465640000000000000000000000000000000000600082015250565b6000612d78600f836122e1565b9150612d8382612d42565b602082019050919050565b60006020820190508181036000830152612da781612d6b565b9050919050565b7f4e6f74206f70656e207965740000000000000000000000000000000000000000600082015250565b6000612de4600c836122e1565b9150612def82612dae565b602082019050919050565b60006020820190508181036000830152612e1381612dd7565b9050919050565b6000612e25826123f0565b9150612e30836123f0565b9250828202612e3e816123f0565b91508282048414831517612e5557612e54612884565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612e96826123f0565b9150612ea1836123f0565b925082612eb157612eb0612e5c565b5b828204905092915050565b6000612ec7826123f0565b9150612ed2836123f0565b9250828203905081811115612eea57612ee9612884565b5b92915050565b7f5472616e7366657220616d6f756e742065786365656473206d61782077616c6c60008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f4c6022836122e1565b9150612f5782612ef0565b604082019050919050565b60006020820190508181036000830152612f7b81612f3f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612fde6025836122e1565b9150612fe982612f82565b604082019050919050565b6000602082019050818103600083015261300d81612fd1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006130706023836122e1565b915061307b82613014565b604082019050919050565b6000602082019050818103600083015261309f81613063565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006131026026836122e1565b915061310d826130a6565b604082019050919050565b60006020820190508181036000830152613131816130f5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050613176816123c4565b92915050565b60006020828403121561319257613191612388565b5b60006131a084828501613167565b91505092915050565b6000819050919050565b60006131ce6131c96131c4846131a9565b6124f3565b6123f0565b9050919050565b6131de816131b3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613219816123b2565b82525050565b600061322b8383613210565b60208301905092915050565b6000602082019050919050565b600061324f826131e4565b61325981856131ef565b935061326483613200565b8060005b8381101561329557815161327c888261321f565b975061328783613237565b925050600181019050613268565b5085935050505092915050565b600060a0820190506132b7600083018861256d565b6132c460208301876131d5565b81810360408301526132d68186613244565b90506132e560608301856124c9565b6132f2608083018461256d565b9695505050505050565b600060c08201905061331160008301896124c9565b61331e602083018861256d565b61332b60408301876131d5565b61333860608301866131d5565b61334560808301856124c9565b61335260a083018461256d565b979650505050505050565b60008060006060848603121561337657613375612388565b5b60006133848682870161295e565b93505060206133958682870161295e565b92505060406133a68682870161295e565b915050925092509256fea2646970667358221220ccbe50b9ca8d3de843d9848c2100e2a6ab54067d0130f96fb415876371c7f3a764736f6c63430008130033

Deployed Bytecode

0x60806040526004361061023f5760003560e01c806370a082311161012e578063a9059cbb116100ab578063d3208b131161006f578063d3208b131461085a578063dd62ed3e14610885578063e6991e2d146108c2578063f2fde38b146108eb578063f476b8a41461091457610246565b8063a9059cbb14610789578063b41150c5146107c6578063c9567bf9146107ef578063ca1dd6d414610806578063ce3b9aa31461083157610246565b8063923ffc14116100f2578063923ffc14146106a457806392f42870146106cd57806395d89b41146106f6578063962dfc7514610721578063a457c2d71461074c57610246565b806370a08231146105cf578063713f9cfd1461060c578063715018a61461063757806382247ec01461064e5780638da5cb5b1461067957610246565b8063313ce567116101bc5780635b28b246116101805780635b28b246146105125780635d0044ca1461053b5780635d098b3814610564578063606208041461058d5780636b996150146105b857610246565b8063313ce5671461042b57806333f82cea14610456578063395093511461048157806349bd5a5e146104be57806349f2c4ae146104e957610246565b806318160ddd1161020357806318160ddd146103325780631f2698ab1461035d5780631f53ac021461038857806323b872dd146103b157806330ccebb5146103ee57610246565b806306fdde031461024b578063095ea7b3146102765780630e7e573f146102b357806311a63e17146102dc5780631694505e1461030757610246565b3661024657005b600080fd5b34801561025757600080fd5b5061026061093f565b60405161026d9190612366565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190612426565b6109d1565b6040516102aa9190612481565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d5919061249c565b6109f4565b005b3480156102e857600080fd5b506102f1610a06565b6040516102fe91906124d8565b60405180910390f35b34801561031357600080fd5b5061031c610a2c565b6040516103299190612552565b60405180910390f35b34801561033e57600080fd5b50610347610a50565b604051610354919061257c565b60405180910390f35b34801561036957600080fd5b50610372610a5a565b60405161037f9190612481565b60405180910390f35b34801561039457600080fd5b506103af60048036038101906103aa9190612597565b610a6d565b005b3480156103bd57600080fd5b506103d860048036038101906103d391906125c4565b610ab9565b6040516103e59190612481565b60405180910390f35b3480156103fa57600080fd5b5061041560048036038101906104109190612597565b610ae8565b6040516104229190612481565b60405180910390f35b34801561043757600080fd5b50610440610b3e565b60405161044d9190612633565b60405180910390f35b34801561046257600080fd5b5061046b610b47565b604051610478919061257c565b60405180910390f35b34801561048d57600080fd5b506104a860048036038101906104a39190612426565b610b4d565b6040516104b59190612481565b60405180910390f35b3480156104ca57600080fd5b506104d3610b84565b6040516104e091906124d8565b60405180910390f35b3480156104f557600080fd5b50610510600480360381019061050b91906126b3565b610ba8565b005b34801561051e57600080fd5b506105396004803603810190610534919061273e565b610c55565b005b34801561054757600080fd5b50610562600480360381019061055d919061249c565b610d6e565b005b34801561057057600080fd5b5061058b60048036038101906105869190612597565b610d80565b005b34801561059957600080fd5b506105a2610dcc565b6040516105af919061257c565b60405180910390f35b3480156105c457600080fd5b506105cd610dd2565b005b3480156105db57600080fd5b506105f660048036038101906105f19190612597565b610e23565b604051610603919061257c565b60405180910390f35b34801561061857600080fd5b50610621610e6b565b60405161062e919061257c565b60405180910390f35b34801561064357600080fd5b5061064c610e71565b005b34801561065a57600080fd5b50610663610e85565b604051610670919061257c565b60405180910390f35b34801561068557600080fd5b5061068e610e8b565b60405161069b91906124d8565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c691906126b3565b610eb5565b005b3480156106d957600080fd5b506106f460048036038101906106ef91906126b3565b610f62565b005b34801561070257600080fd5b5061070b61100f565b6040516107189190612366565b60405180910390f35b34801561072d57600080fd5b506107366110a1565b60405161074391906124d8565b60405180910390f35b34801561075857600080fd5b50610773600480360381019061076e9190612426565b6110c7565b6040516107809190612481565b60405180910390f35b34801561079557600080fd5b506107b060048036038101906107ab9190612426565b61113e565b6040516107bd9190612481565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190612791565b611161565b005b3480156107fb57600080fd5b506108046111a0565b005b34801561081257600080fd5b5061081b6111c5565b604051610828919061257c565b60405180910390f35b34801561083d57600080fd5b50610858600480360381019061085391906126b3565b6111cb565b005b34801561086657600080fd5b5061086f611278565b60405161087c919061257c565b60405180910390f35b34801561089157600080fd5b506108ac60048036038101906108a791906127e4565b61127e565b6040516108b9919061257c565b60405180910390f35b3480156108ce57600080fd5b506108e960048036038101906108e4919061249c565b611305565b005b3480156108f757600080fd5b50610912600480360381019061090d9190612597565b611317565b005b34801561092057600080fd5b5061092961139a565b604051610936919061257c565b60405180910390f35b60606003805461094e90612853565b80601f016020809104026020016040519081016040528092919081815260200182805461097a90612853565b80156109c75780601f1061099c576101008083540402835291602001916109c7565b820191906000526020600020905b8154815290600101906020018083116109aa57829003601f168201915b5050505050905090565b6000806109dc6113a0565b90506109e98185856113a8565b600191505092915050565b6109fc611571565b8060108190555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b601160009054906101000a900460ff1681565b610a75611571565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080610ac46113a0565b9050610ad18582856115ef565b610adc85858561167b565b60019150509392505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006012905090565b600b5481565b600080610b586113a0565b9050610b79818585610b6a858961127e565b610b7491906128b3565b6113a8565b600191505092915050565b7f000000000000000000000000c68fa221481ccd43e263a05363830610a79f53ea81565b610bb0611571565b60005b82829050811015610c5057600060076000858585818110610bd757610bd66128e7565b5b9050602002016020810190610bec9190612597565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610c4890612916565b915050610bb3565b505050565b610c5d611571565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c9891906124d8565b602060405180830381865afa158015610cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd99190612973565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84838511610d055784610d07565b835b6040518363ffffffff1660e01b8152600401610d249291906129a0565b6020604051808303816000875af1158015610d43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6791906129f5565b5050505050565b610d76611571565b80600f8190555050565b610d88611571565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b610dda611571565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610e20573d6000803e3d6000fd5b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a5481565b610e79611571565b610e836000611a89565b565b600f5481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ebd611571565b60005b82829050811015610f5d57600060066000858585818110610ee457610ee36128e7565b5b9050602002016020810190610ef99190612597565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f5590612916565b915050610ec0565b505050565b610f6a611571565b60005b8282905081101561100a57600160066000858585818110610f9157610f906128e7565b5b9050602002016020810190610fa69190612597565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061100290612916565b915050610f6d565b505050565b60606004805461101e90612853565b80601f016020809104026020016040519081016040528092919081815260200182805461104a90612853565b80156110975780601f1061106c57610100808354040283529160200191611097565b820191906000526020600020905b81548152906001019060200180831161107a57829003601f168201915b5050505050905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806110d26113a0565b905060006110e0828661127e565b905083811015611125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111c90612a94565b60405180910390fd5b61113282868684036113a8565b60019250505092915050565b6000806111496113a0565b905061115681858561167b565b600191505092915050565b611169611571565b82600d8190555081600c8190555080600b8190555080828461118b91906128b3565b61119591906128b3565b600e81905550505050565b6111a8611571565b6001601160006101000a81548160ff021916908315150217905550565b600e5481565b6111d3611571565b600082829050905060005b81811015611272576001600760008686858181106111ff576111fe6128e7565b5b90506020020160208101906112149190612597565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806001019150506111de565b50505050565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61130d611571565b80600a8190555050565b61131f611571565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361138e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138590612b26565b60405180910390fd5b61139781611a89565b50565b600c5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140e90612bb8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147d90612c4a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611564919061257c565b60405180910390a3505050565b6115796113a0565b73ffffffffffffffffffffffffffffffffffffffff16611597610e8b565b73ffffffffffffffffffffffffffffffffffffffff16146115ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e490612cb6565b60405180910390fd5b565b60006115fb848461127e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146116755781811015611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e90612d22565b60405180910390fd5b61167484848484036113a8565b5b50505050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ff90612d8e565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117a95750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806117c05750601160019054906101000a900460ff165b156117d5576117d0838383611b4f565b611a84565b601160009054906101000a900460ff16611824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181b90612dfa565b60405180910390fd5b60007f000000000000000000000000c68fa221481ccd43e263a05363830610a79f53ea73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361192557600061188430610e23565b905060006127106010546118b77f000000000000000000000000c68fa221481ccd43e263a05363830610a79f53ea610e23565b6118c19190612e1a565b6118cb9190612e8b565b9050808210611901578060036118e19190612e1a565b82106118f7578060036118f49190612e1a565b91505b61190082611daf565b5b612710600e54856119129190612e1a565b61191c9190612e8b565b92505050611a57565b7f000000000000000000000000c68fa221481ccd43e263a05363830610a79f53ea73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036119fd57612710600a54836119899190612e1a565b6119939190612e8b565b9050600f5481836119a386610e23565b6119ad91906128b3565b6119b79190612ebc565b11156119f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ef90612f62565b60405180910390fd5b611a56565b600f5482611a0a85610e23565b611a1491906128b3565b1115611a55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4c90612f62565b60405180910390fd5b5b5b611a6d84848385611a689190612ebc565b611b4f565b6000811115611a8257611a81843083611b4f565b5b505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb590612ff4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2490613086565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caa90613118565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611da1919061257c565b60405180910390a350505050565b6001601160016101000a81548160ff0219169083151502179055506000600e54905060008103611ddf5750611f84565b60006002600c54611df09190612e8b565b82611dfb9190612ebc565b90506000828285611e0c9190612e1a565b611e169190612e8b565b9050611e2181611fa2565b6000479050600083600d5483611e379190612e1a565b611e419190612e8b565b9050600084600b5484611e549190612e1a565b611e5e9190612e8b565b90506000600c541115611e9757611e968488611e7a9190612ebc565b828486611e879190612ebc565b611e919190612ebc565b6121ea565b5b6000811115611f0a57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f08573d6000803e3d6000fd5b505b6000471115611f7d57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611f7b573d6000803e3d6000fd5b505b5050505050505b6000601160016101000a81548160ff02191690831515021790555050565b6001601160016101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611fda57611fd9613138565b5b6040519080825280602002602001820160405280156120085781602001602082028036833780820191505090505b50905030816000815181106120205761201f6128e7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e9919061317c565b816001815181106120fd576120fc6128e7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016121999594939291906132a2565b600060405180830381600087803b1580156121b357600080fd5b505af11580156121c7573d6000803e3d6000fd5b50505050506000601160016101000a81548160ff02191690831515021790555050565b6001601160016101000a81548160ff0219169083151502179055507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061224f610e8b565b426040518863ffffffff1660e01b8152600401612271969594939291906132fc565b60606040518083038185885af115801561228f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122b4919061335d565b5050506000601160016101000a81548160ff0219169083151502179055505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123105780820151818401526020810190506122f5565b60008484015250505050565b6000601f19601f8301169050919050565b6000612338826122d6565b61234281856122e1565b93506123528185602086016122f2565b61235b8161231c565b840191505092915050565b60006020820190508181036000830152612380818461232d565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123bd82612392565b9050919050565b6123cd816123b2565b81146123d857600080fd5b50565b6000813590506123ea816123c4565b92915050565b6000819050919050565b612403816123f0565b811461240e57600080fd5b50565b600081359050612420816123fa565b92915050565b6000806040838503121561243d5761243c612388565b5b600061244b858286016123db565b925050602061245c85828601612411565b9150509250929050565b60008115159050919050565b61247b81612466565b82525050565b60006020820190506124966000830184612472565b92915050565b6000602082840312156124b2576124b1612388565b5b60006124c084828501612411565b91505092915050565b6124d2816123b2565b82525050565b60006020820190506124ed60008301846124c9565b92915050565b6000819050919050565b600061251861251361250e84612392565b6124f3565b612392565b9050919050565b600061252a826124fd565b9050919050565b600061253c8261251f565b9050919050565b61254c81612531565b82525050565b60006020820190506125676000830184612543565b92915050565b612576816123f0565b82525050565b6000602082019050612591600083018461256d565b92915050565b6000602082840312156125ad576125ac612388565b5b60006125bb848285016123db565b91505092915050565b6000806000606084860312156125dd576125dc612388565b5b60006125eb868287016123db565b93505060206125fc868287016123db565b925050604061260d86828701612411565b9150509250925092565b600060ff82169050919050565b61262d81612617565b82525050565b60006020820190506126486000830184612624565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126126735761267261264e565b5b8235905067ffffffffffffffff8111156126905761268f612653565b5b6020830191508360208202830111156126ac576126ab612658565b5b9250929050565b600080602083850312156126ca576126c9612388565b5b600083013567ffffffffffffffff8111156126e8576126e761238d565b5b6126f48582860161265d565b92509250509250929050565b600061270b826123b2565b9050919050565b61271b81612700565b811461272657600080fd5b50565b60008135905061273881612712565b92915050565b60008060006060848603121561275757612756612388565b5b600061276586828701612729565b9350506020612776868287016123db565b925050604061278786828701612411565b9150509250925092565b6000806000606084860312156127aa576127a9612388565b5b60006127b886828701612411565b93505060206127c986828701612411565b92505060406127da86828701612411565b9150509250925092565b600080604083850312156127fb576127fa612388565b5b6000612809858286016123db565b925050602061281a858286016123db565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061286b57607f821691505b60208210810361287e5761287d612824565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006128be826123f0565b91506128c9836123f0565b92508282019050808211156128e1576128e0612884565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612921826123f0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361295357612952612884565b5b600182019050919050565b60008151905061296d816123fa565b92915050565b60006020828403121561298957612988612388565b5b60006129978482850161295e565b91505092915050565b60006040820190506129b560008301856124c9565b6129c2602083018461256d565b9392505050565b6129d281612466565b81146129dd57600080fd5b50565b6000815190506129ef816129c9565b92915050565b600060208284031215612a0b57612a0a612388565b5b6000612a19848285016129e0565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612a7e6025836122e1565b9150612a8982612a22565b604082019050919050565b60006020820190508181036000830152612aad81612a71565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612b106026836122e1565b9150612b1b82612ab4565b604082019050919050565b60006020820190508181036000830152612b3f81612b03565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612ba26024836122e1565b9150612bad82612b46565b604082019050919050565b60006020820190508181036000830152612bd181612b95565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c346022836122e1565b9150612c3f82612bd8565b604082019050919050565b60006020820190508181036000830152612c6381612c27565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ca06020836122e1565b9150612cab82612c6a565b602082019050919050565b60006020820190508181036000830152612ccf81612c93565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612d0c601d836122e1565b9150612d1782612cd6565b602082019050919050565b60006020820190508181036000830152612d3b81612cff565b9050919050565b7f536e697065722072656a65637465640000000000000000000000000000000000600082015250565b6000612d78600f836122e1565b9150612d8382612d42565b602082019050919050565b60006020820190508181036000830152612da781612d6b565b9050919050565b7f4e6f74206f70656e207965740000000000000000000000000000000000000000600082015250565b6000612de4600c836122e1565b9150612def82612dae565b602082019050919050565b60006020820190508181036000830152612e1381612dd7565b9050919050565b6000612e25826123f0565b9150612e30836123f0565b9250828202612e3e816123f0565b91508282048414831517612e5557612e54612884565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612e96826123f0565b9150612ea1836123f0565b925082612eb157612eb0612e5c565b5b828204905092915050565b6000612ec7826123f0565b9150612ed2836123f0565b9250828203905081811115612eea57612ee9612884565b5b92915050565b7f5472616e7366657220616d6f756e742065786365656473206d61782077616c6c60008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f4c6022836122e1565b9150612f5782612ef0565b604082019050919050565b60006020820190508181036000830152612f7b81612f3f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612fde6025836122e1565b9150612fe982612f82565b604082019050919050565b6000602082019050818103600083015261300d81612fd1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006130706023836122e1565b915061307b82613014565b604082019050919050565b6000602082019050818103600083015261309f81613063565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006131026026836122e1565b915061310d826130a6565b604082019050919050565b60006020820190508181036000830152613131816130f5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050613176816123c4565b92915050565b60006020828403121561319257613191612388565b5b60006131a084828501613167565b91505092915050565b6000819050919050565b60006131ce6131c96131c4846131a9565b6124f3565b6123f0565b9050919050565b6131de816131b3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613219816123b2565b82525050565b600061322b8383613210565b60208301905092915050565b6000602082019050919050565b600061324f826131e4565b61325981856131ef565b935061326483613200565b8060005b8381101561329557815161327c888261321f565b975061328783613237565b925050600181019050613268565b5085935050505092915050565b600060a0820190506132b7600083018861256d565b6132c460208301876131d5565b81810360408301526132d68186613244565b90506132e560608301856124c9565b6132f2608083018461256d565b9695505050505050565b600060c08201905061331160008301896124c9565b61331e602083018861256d565b61332b60408301876131d5565b61333860608301866131d5565b61334560808301856124c9565b61335260a083018461256d565b979650505050505050565b60008060006060848603121561337657613375612388565b5b60006133848682870161295e565b93505060206133958682870161295e565b92505060406133a68682870161295e565b915050925092509256fea2646970667358221220ccbe50b9ca8d3de843d9848c2100e2a6ab54067d0130f96fb415876371c7f3a764736f6c63430008130033

Deployed Bytecode Sourcemap

15912:7432:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6931:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9131:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21768:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16142:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16517:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8036:110;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16623:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21538:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9939:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21436:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7878:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16259:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11648:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16573:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17676:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22985:319;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22752:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21647:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16463:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22865:112;;;;;;;;;;;;;:::i;:::-;;7096:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16221:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5386:103;;;;;;;;;;;;;:::i;:::-;;16431:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4738:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22125:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21889:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6755:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16059:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10739:500;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8591:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22463:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17593:75;;;;;;;;;;;;;:::i;:::-;;16364:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17874:271;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16327:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8209:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22360:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5644:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16294:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6931:102;6987:13;7020:5;7013:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6931:102;:::o;9131:228::-;9241:4;9258:13;9274:12;:10;:12::i;:::-;9258:28;;9297:32;9306:5;9313:7;9322:6;9297:8;:32::i;:::-;9347:4;9340:11;;;9131:228;;;;:::o;21768:113::-;4624:13;:11;:13::i;:::-;21865:8:::1;21838:24;:35;;;;21768:113:::0;:::o;16142:70::-;;;;;;;;;;;;;:::o;16517:49::-;;;:::o;8036:110::-;8099:7;8126:12;;8119:19;;8036:110;:::o;16623:19::-;;;;;;;;;;;;;:::o;21538:101::-;4624:13;:11;:13::i;:::-;21622:9:::1;21609:10;;:22;;;;;;;;;;;;;;;;;;21538:101:::0;:::o;9939:297::-;10072:4;10089:15;10107:12;:10;:12::i;:::-;10089:30;;10130:38;10146:4;10152:7;10161:6;10130:15;:38::i;:::-;10179:27;10189:4;10195:2;10199:6;10179:9;:27::i;:::-;10224:4;10217:11;;;9939:297;;;;;:::o;21436:94::-;21488:4;21512:7;:10;21520:1;21512:10;;;;;;;;;;;;;;;;;;;;;;;;;21505:17;;21436:94;;;:::o;7878:93::-;7936:5;7961:2;7954:9;;7878:93;:::o;16259:28::-;;;;:::o;11648:265::-;11763:4;11780:13;11796:12;:10;:12::i;:::-;11780:28;;11819:64;11828:5;11835:7;11872:10;11844:25;11854:5;11861:7;11844:9;:25::i;:::-;:38;;;;:::i;:::-;11819:8;:64::i;:::-;11901:4;11894:11;;;11648:265;;;;:::o;16573:38::-;;;:::o;17676:190::-;4624:13;:11;:13::i;:::-;17763:9:::1;17758:101;17782:8;;:15;;17778:1;:19;17758:101;;;17842:5;17819:7;:20;17827:8;;17836:1;17827:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17819:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;17799:3;;;;;:::i;:::-;;;;17758:101;;;;17676:190:::0;;:::o;22985:319::-;4624:13;:11;:13::i;:::-;23130:11:::1;23144:12;:22;;;23175:4;23144:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23130:51;;23199:12;23192:29;;;23236:13;23270:3;23264;:9;:21;;23282:3;23264:21;;;23276:3;23264:21;23192:104;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23119:185;22985:319:::0;;;:::o;22752:105::-;4624:13;:11;:13::i;:::-;22838:11:::1;22825:10;:24;;;;22752:105:::0;:::o;21647:113::-;4624:13;:11;:13::i;:::-;21743:9:::1;21724:16;;:28;;;;;;;;;;;;;;;;;;21647:113:::0;:::o;16463:45::-;;;;:::o;22865:112::-;4624:13;:11;:13::i;:::-;22926:10:::1;22918:28;;:51;22947:21;22918:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22865:112::o:0;7096:143::-;7186:7;7213:9;:18;7223:7;7213:18;;;;;;;;;;;;;;;;7206:25;;7096:143;;;:::o;16221:29::-;;;;:::o;5386:103::-;4624:13;:11;:13::i;:::-;5451:30:::1;5478:1;5451:18;:30::i;:::-;5386:103::o:0;16431:25::-;;;;:::o;4738:87::-;4784:7;4811:6;;;;;;;;;;;4804:13;;4738:87;:::o;22125:227::-;4624:13;:11;:13::i;:::-;22236:9:::1;22231:114;22255:9;;:16;;22251:1;:20;22231:114;;;22328:5;22293:18;:32;22312:9;;22322:1;22312:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;22293:32;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;22273:3;;;;;:::i;:::-;;;;22231:114;;;;22125:227:::0;;:::o;21889:228::-;4624:13;:11;:13::i;:::-;22002:9:::1;21997:113;22021:9;;:16;;22017:1;:20;21997:113;;;22094:4;22059:18;:32;22078:9;;22088:1;22078:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;22059:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22039:3;;;;;:::i;:::-;;;;21997:113;;;;21889:228:::0;;:::o;6755:106::-;6813:13;6846:7;6839:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6755:106;:::o;16059:76::-;;;;;;;;;;;;;:::o;10739:500::-;10859:4;10876:13;10892:12;:10;:12::i;:::-;10876:28;;10915:24;10942:25;10952:5;10959:7;10942:9;:25::i;:::-;10915:52;;11020:15;11000:16;:35;;10978:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;11136:60;11145:5;11152:7;11180:15;11161:16;:34;11136:8;:60::i;:::-;11227:4;11220:11;;;;10739:500;;;;:::o;8591:220::-;8697:4;8714:13;8730:12;:10;:12::i;:::-;8714:28;;8753;8763:5;8770:2;8774:6;8753:9;:28::i;:::-;8799:4;8792:11;;;8591:220;;;;:::o;22463:281::-;4624:13;:11;:13::i;:::-;22614:9:::1;22603:8;:20;;;;22644:8;22634:7;:18;;;;22672:7;22663:6;:16;;;;22729:7;22718:8;22706:9;:20;;;;:::i;:::-;:30;;;;:::i;:::-;22690:13;:46;;;;22463:281:::0;;;:::o;17593:75::-;4624:13;:11;:13::i;:::-;17656:4:::1;17646:7;;:14;;;;;;;;;;;;;;;;;;17593:75::o:0;16364:58::-;;;;:::o;17874:271::-;4624:13;:11;:13::i;:::-;17953:11:::1;17967:8;;:15;;17953:29;;17997:9;17993:145;18016:3;18012:1;:7;17993:145;;;18060:4;18037:7;:20;18045:8;;18054:1;18045:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18037:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;18108:3;;;;;;;17993:145;;;;17942:203;17874:271:::0;;:::o;16327:30::-;;;;:::o;8209:176::-;8323:7;8350:11;:18;8362:5;8350:18;;;;;;;;;;;;;;;:27;8369:7;8350:27;;;;;;;;;;;;;;;;8343:34;;8209:176;;;;:::o;22360:95::-;4624:13;:11;:13::i;:::-;22439:8:::1;22429:7;:18;;;;22360:95:::0;:::o;5644:238::-;4624:13;:11;:13::i;:::-;5767:1:::1;5747:22;;:8;:22;;::::0;5725:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;5846:28;5865:8;5846:18;:28::i;:::-;5644:238:::0;:::o;16294:26::-;;;;:::o;4038:98::-;4091:7;4118:10;4111:17;;4038:98;:::o;13948:380::-;14101:1;14084:19;;:5;:19;;;14076:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14182:1;14163:21;;:7;:21;;;14155:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14266:6;14236:11;:18;14248:5;14236:18;;;;;;;;;;;;;;;:27;14255:7;14236:27;;;;;;;;;;;;;;;:36;;;;14304:7;14288:32;;14297:5;14288:32;;;14313:6;14288:32;;;;;;:::i;:::-;;;;;;;;13948:380;;;:::o;4903:132::-;4978:12;:10;:12::i;:::-;4967:23;;:7;:5;:7::i;:::-;:23;;;4959:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4903:132::o;14619:502::-;14754:24;14781:25;14791:5;14798:7;14781:9;:25::i;:::-;14754:52;;14841:17;14821:16;:37;14817:297;;14921:6;14901:16;:26;;14875:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;15036:51;15045:5;15052:7;15080:6;15061:16;:25;15036:8;:51::i;:::-;14817:297;14743:378;14619:502;;;:::o;18153:1585::-;18286:7;:13;18294:4;18286:13;;;;;;;;;;;;;;;;;;;;;;;;;18285:14;18277:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;18348:18;:24;18367:4;18348:24;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;18389:18;:22;18408:2;18389:22;;;;;;;;;;;;;;;;;;;;;;;;;18348:63;:96;;;;18428:16;;;;;;;;;;;18348:96;18330:1401;;;18471:33;18487:4;18493:2;18497:6;18471:15;:33::i;:::-;18330:1401;;;18545:7;;;;;;;;;;;18537:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;18584:14;18623:13;18617:19;;:2;:19;;;18613:932;;18657:11;18671:24;18689:4;18671:9;:24::i;:::-;18657:38;;18714:17;18788:5;18761:24;;18734;18744:13;18734:9;:24::i;:::-;:51;;;;:::i;:::-;:59;;;;:::i;:::-;18714:79;;18845:9;18838:3;:16;18812:193;;18912:9;18908:1;:13;;;;:::i;:::-;18901:3;:20;18897:45;;18933:9;18929:1;:13;;;;:::i;:::-;18923:19;;18897:45;18965:20;18981:3;18965:15;:20::i;:::-;18812:193;19060:5;19044:13;;19035:6;:22;;;;:::i;:::-;:30;;;;:::i;:::-;19023:42;;18638:443;;18613:932;;;19099:13;19091:21;;:4;:21;;;19087:458;;19164:5;19154:7;;19145:6;:16;;;;:::i;:::-;:24;;;;:::i;:::-;19133:36;;19256:10;;19243:9;19234:6;19218:13;19228:2;19218:9;:13::i;:::-;:22;;;;:::i;:::-;:34;;;;:::i;:::-;:48;;19188:156;;;;;;;;;;;;:::i;:::-;;;;;;;;;19087:458;;;19441:10;;19431:6;19415:13;19425:2;19415:9;:13::i;:::-;:22;;;;:::i;:::-;:36;;19385:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;19087:458;18613:932;19559:45;19575:4;19581:2;19594:9;19585:6;:18;;;;:::i;:::-;19559:15;:45::i;:::-;19635:1;19623:9;:13;19619:101;;;19657:47;19673:4;19687;19694:9;19657:15;:47::i;:::-;19619:101;18522:1209;18330:1401;18153:1585;;;:::o;6042:191::-;6116:16;6135:6;;;;;;;;;;;6116:25;;6161:8;6152:6;;:17;;;;;;;;;;;;;;;;;;6216:8;6185:40;;6206:8;6185:40;;;;;;;;;;;;6105:128;6042:191;:::o;15129:776::-;15276:1;15260:18;;:4;:18;;;15252:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15353:1;15339:16;;:2;:16;;;15331:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15408:19;15430:9;:15;15440:4;15430:15;;;;;;;;;;;;;;;;15408:37;;15493:6;15478:11;:21;;15456:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;15633:6;15619:11;:20;15601:9;:15;15611:4;15601:15;;;;;;;;;;;;;;;:38;;;;15836:6;15819:9;:13;15829:2;15819:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;15886:2;15871:26;;15880:4;15871:26;;;15890:6;15871:26;;;;;;:::i;:::-;;;;;;;;15241:664;15129:776;;;:::o;19746:928::-;16732:4;16713:16;;:23;;;;;;;;;;;;;;;;;;19832:22:::1;19857:13;;19832:38;;19903:1;19885:14;:19:::0;19881:32:::1;;19906:7;;;19881:32;19923:16;19969:1;19959:7;;:11;;;;:::i;:::-;19942:14;:28;;;;:::i;:::-;19923:47;;19981:14;20032;20021:8;19998:20;:31;;;;:::i;:::-;:48;;;;:::i;:::-;19981:65;;20059:25;20077:6;20059:17;:25::i;:::-;20095:15;20113:21;20095:39;;20147:13;20184:8;20173;;20163:7;:18;;;;:::i;:::-;:29;;;;:::i;:::-;20147:45;;20203:19;20244:8;20235:6;;20225:7;:16;;;;:::i;:::-;:27;;;;:::i;:::-;20203:49;;20287:1;20277:7;;:11;20273:168;;;20305:124;20360:6;20337:20;:29;;;;:::i;:::-;20403:11;20395:5;20385:7;:15;;;;:::i;:::-;:29;;;;:::i;:::-;20305:13;:124::i;:::-;20273:168;20469:1;20455:11;:15;20451:95;;;20495:16;;;;;;;;;;;20487:34;;:47;20522:11;20487:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;20451:95;20586:1;20562:21;:25;20558:109;;;20612:10;;;;;;;;;;;20604:28;;:51;20633:21;20604:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;20558:109;19821:853;;;;;;16747:1;16778:5:::0;16759:16;;:24;;;;;;;;;;;;;;;;;;19746:928;:::o;20682:413::-;16732:4;16713:16;;:23;;;;;;;;;;;;;;;;;;20761:21:::1;20799:1;20785:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20761:40;;20830:4;20812;20817:1;20812:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;20856:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20846:4;20851:1;20846:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;20889:15;:66;;;20970:11;20996:1;21012:4;21039;21060:15;20889:198;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20750:345;16778:5:::0;16759:16;;:24;;;;;;;;;;;;;;;;;;20682:413;:::o;21103:325::-;16732:4;16713:16;;:23;;;;;;;;;;;;;;;;;;21222:15:::1;:31;;;21261:9;21294:4;21314:11;21340:1;21356::::0;21372:7:::1;:5;:7::i;:::-;21394:15;21222:198;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16778:5:::0;16759:16;;:24;;;;;;;;;;;;;;;;;;21103:325;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:60::-;4161:3;4182:5;4175:12;;4133:60;;;:::o;4199:142::-;4249:9;4282:53;4300:34;4309:24;4327:5;4309:24;:::i;:::-;4300:34;:::i;:::-;4282:53;:::i;:::-;4269:66;;4199:142;;;:::o;4347:126::-;4397:9;4430:37;4461:5;4430:37;:::i;:::-;4417:50;;4347:126;;;:::o;4479:150::-;4553:9;4586:37;4617:5;4586:37;:::i;:::-;4573:50;;4479:150;;;:::o;4635:179::-;4746:61;4801:5;4746:61;:::i;:::-;4741:3;4734:74;4635:179;;:::o;4820:270::-;4937:4;4975:2;4964:9;4960:18;4952:26;;4988:95;5080:1;5069:9;5065:17;5056:6;4988:95;:::i;:::-;4820:270;;;;:::o;5096:118::-;5183:24;5201:5;5183:24;:::i;:::-;5178:3;5171:37;5096:118;;:::o;5220:222::-;5313:4;5351:2;5340:9;5336:18;5328:26;;5364:71;5432:1;5421:9;5417:17;5408:6;5364:71;:::i;:::-;5220:222;;;;:::o;5448:329::-;5507:6;5556:2;5544:9;5535:7;5531:23;5527:32;5524:119;;;5562:79;;:::i;:::-;5524:119;5682:1;5707:53;5752:7;5743:6;5732:9;5728:22;5707:53;:::i;:::-;5697:63;;5653:117;5448:329;;;;:::o;5783:619::-;5860:6;5868;5876;5925:2;5913:9;5904:7;5900:23;5896:32;5893:119;;;5931:79;;:::i;:::-;5893:119;6051:1;6076:53;6121:7;6112:6;6101:9;6097:22;6076:53;:::i;:::-;6066:63;;6022:117;6178:2;6204:53;6249:7;6240:6;6229:9;6225:22;6204:53;:::i;:::-;6194:63;;6149:118;6306:2;6332:53;6377:7;6368:6;6357:9;6353:22;6332:53;:::i;:::-;6322:63;;6277:118;5783:619;;;;;:::o;6408:86::-;6443:7;6483:4;6476:5;6472:16;6461:27;;6408:86;;;:::o;6500:112::-;6583:22;6599:5;6583:22;:::i;:::-;6578:3;6571:35;6500:112;;:::o;6618:214::-;6707:4;6745:2;6734:9;6730:18;6722:26;;6758:67;6822:1;6811:9;6807:17;6798:6;6758:67;:::i;:::-;6618:214;;;;:::o;6838:117::-;6947:1;6944;6937:12;6961:117;7070:1;7067;7060:12;7084:117;7193:1;7190;7183:12;7224:568;7297:8;7307:6;7357:3;7350:4;7342:6;7338:17;7334:27;7324:122;;7365:79;;:::i;:::-;7324:122;7478:6;7465:20;7455:30;;7508:18;7500:6;7497:30;7494:117;;;7530:79;;:::i;:::-;7494:117;7644:4;7636:6;7632:17;7620:29;;7698:3;7690:4;7682:6;7678:17;7668:8;7664:32;7661:41;7658:128;;;7705:79;;:::i;:::-;7658:128;7224:568;;;;;:::o;7798:559::-;7884:6;7892;7941:2;7929:9;7920:7;7916:23;7912:32;7909:119;;;7947:79;;:::i;:::-;7909:119;8095:1;8084:9;8080:17;8067:31;8125:18;8117:6;8114:30;8111:117;;;8147:79;;:::i;:::-;8111:117;8260:80;8332:7;8323:6;8312:9;8308:22;8260:80;:::i;:::-;8242:98;;;;8038:312;7798:559;;;;;:::o;8363:109::-;8413:7;8442:24;8460:5;8442:24;:::i;:::-;8431:35;;8363:109;;;:::o;8478:148::-;8564:37;8595:5;8564:37;:::i;:::-;8557:5;8554:48;8544:76;;8616:1;8613;8606:12;8544:76;8478:148;:::o;8632:165::-;8691:5;8729:6;8716:20;8707:29;;8745:46;8785:5;8745:46;:::i;:::-;8632:165;;;;:::o;8803:645::-;8893:6;8901;8909;8958:2;8946:9;8937:7;8933:23;8929:32;8926:119;;;8964:79;;:::i;:::-;8926:119;9084:1;9109:66;9167:7;9158:6;9147:9;9143:22;9109:66;:::i;:::-;9099:76;;9055:130;9224:2;9250:53;9295:7;9286:6;9275:9;9271:22;9250:53;:::i;:::-;9240:63;;9195:118;9352:2;9378:53;9423:7;9414:6;9403:9;9399:22;9378:53;:::i;:::-;9368:63;;9323:118;8803:645;;;;;:::o;9454:619::-;9531:6;9539;9547;9596:2;9584:9;9575:7;9571:23;9567:32;9564:119;;;9602:79;;:::i;:::-;9564:119;9722:1;9747:53;9792:7;9783:6;9772:9;9768:22;9747:53;:::i;:::-;9737:63;;9693:117;9849:2;9875:53;9920:7;9911:6;9900:9;9896:22;9875:53;:::i;:::-;9865:63;;9820:118;9977:2;10003:53;10048:7;10039:6;10028:9;10024:22;10003:53;:::i;:::-;9993:63;;9948:118;9454:619;;;;;:::o;10079:474::-;10147:6;10155;10204:2;10192:9;10183:7;10179:23;10175:32;10172:119;;;10210:79;;:::i;:::-;10172:119;10330:1;10355:53;10400:7;10391:6;10380:9;10376:22;10355:53;:::i;:::-;10345:63;;10301:117;10457:2;10483:53;10528:7;10519:6;10508:9;10504:22;10483:53;:::i;:::-;10473:63;;10428:118;10079:474;;;;;:::o;10559:180::-;10607:77;10604:1;10597:88;10704:4;10701:1;10694:15;10728:4;10725:1;10718:15;10745:320;10789:6;10826:1;10820:4;10816:12;10806:22;;10873:1;10867:4;10863:12;10894:18;10884:81;;10950:4;10942:6;10938:17;10928:27;;10884:81;11012:2;11004:6;11001:14;10981:18;10978:38;10975:84;;11031:18;;:::i;:::-;10975:84;10796:269;10745:320;;;:::o;11071:180::-;11119:77;11116:1;11109:88;11216:4;11213:1;11206:15;11240:4;11237:1;11230:15;11257:191;11297:3;11316:20;11334:1;11316:20;:::i;:::-;11311:25;;11350:20;11368:1;11350:20;:::i;:::-;11345:25;;11393:1;11390;11386:9;11379:16;;11414:3;11411:1;11408:10;11405:36;;;11421:18;;:::i;:::-;11405:36;11257:191;;;;:::o;11454:180::-;11502:77;11499:1;11492:88;11599:4;11596:1;11589:15;11623:4;11620:1;11613:15;11640:233;11679:3;11702:24;11720:5;11702:24;:::i;:::-;11693:33;;11748:66;11741:5;11738:77;11735:103;;11818:18;;:::i;:::-;11735:103;11865:1;11858:5;11854:13;11847:20;;11640:233;;;:::o;11879:143::-;11936:5;11967:6;11961:13;11952:22;;11983:33;12010:5;11983:33;:::i;:::-;11879:143;;;;:::o;12028:351::-;12098:6;12147:2;12135:9;12126:7;12122:23;12118:32;12115:119;;;12153:79;;:::i;:::-;12115:119;12273:1;12298:64;12354:7;12345:6;12334:9;12330:22;12298:64;:::i;:::-;12288:74;;12244:128;12028:351;;;;:::o;12385:332::-;12506:4;12544:2;12533:9;12529:18;12521:26;;12557:71;12625:1;12614:9;12610:17;12601:6;12557:71;:::i;:::-;12638:72;12706:2;12695:9;12691:18;12682:6;12638:72;:::i;:::-;12385:332;;;;;:::o;12723:116::-;12793:21;12808:5;12793:21;:::i;:::-;12786:5;12783:32;12773:60;;12829:1;12826;12819:12;12773:60;12723:116;:::o;12845:137::-;12899:5;12930:6;12924:13;12915:22;;12946:30;12970:5;12946:30;:::i;:::-;12845:137;;;;:::o;12988:345::-;13055:6;13104:2;13092:9;13083:7;13079:23;13075:32;13072:119;;;13110:79;;:::i;:::-;13072:119;13230:1;13255:61;13308:7;13299:6;13288:9;13284:22;13255:61;:::i;:::-;13245:71;;13201:125;12988:345;;;;:::o;13339:224::-;13479:34;13475:1;13467:6;13463:14;13456:58;13548:7;13543:2;13535:6;13531:15;13524:32;13339:224;:::o;13569:366::-;13711:3;13732:67;13796:2;13791:3;13732:67;:::i;:::-;13725:74;;13808:93;13897:3;13808:93;:::i;:::-;13926:2;13921:3;13917:12;13910:19;;13569:366;;;:::o;13941:419::-;14107:4;14145:2;14134:9;14130:18;14122:26;;14194:9;14188:4;14184:20;14180:1;14169:9;14165:17;14158:47;14222:131;14348:4;14222:131;:::i;:::-;14214:139;;13941:419;;;:::o;14366:225::-;14506:34;14502:1;14494:6;14490:14;14483:58;14575:8;14570:2;14562:6;14558:15;14551:33;14366:225;:::o;14597:366::-;14739:3;14760:67;14824:2;14819:3;14760:67;:::i;:::-;14753:74;;14836:93;14925:3;14836:93;:::i;:::-;14954:2;14949:3;14945:12;14938:19;;14597:366;;;:::o;14969:419::-;15135:4;15173:2;15162:9;15158:18;15150:26;;15222:9;15216:4;15212:20;15208:1;15197:9;15193:17;15186:47;15250:131;15376:4;15250:131;:::i;:::-;15242:139;;14969:419;;;:::o;15394:223::-;15534:34;15530:1;15522:6;15518:14;15511:58;15603:6;15598:2;15590:6;15586:15;15579:31;15394:223;:::o;15623:366::-;15765:3;15786:67;15850:2;15845:3;15786:67;:::i;:::-;15779:74;;15862:93;15951:3;15862:93;:::i;:::-;15980:2;15975:3;15971:12;15964:19;;15623:366;;;:::o;15995:419::-;16161:4;16199:2;16188:9;16184:18;16176:26;;16248:9;16242:4;16238:20;16234:1;16223:9;16219:17;16212:47;16276:131;16402:4;16276:131;:::i;:::-;16268:139;;15995:419;;;:::o;16420:221::-;16560:34;16556:1;16548:6;16544:14;16537:58;16629:4;16624:2;16616:6;16612:15;16605:29;16420:221;:::o;16647:366::-;16789:3;16810:67;16874:2;16869:3;16810:67;:::i;:::-;16803:74;;16886:93;16975:3;16886:93;:::i;:::-;17004:2;16999:3;16995:12;16988:19;;16647:366;;;:::o;17019:419::-;17185:4;17223:2;17212:9;17208:18;17200:26;;17272:9;17266:4;17262:20;17258:1;17247:9;17243:17;17236:47;17300:131;17426:4;17300:131;:::i;:::-;17292:139;;17019:419;;;:::o;17444:182::-;17584:34;17580:1;17572:6;17568:14;17561:58;17444:182;:::o;17632:366::-;17774:3;17795:67;17859:2;17854:3;17795:67;:::i;:::-;17788:74;;17871:93;17960:3;17871:93;:::i;:::-;17989:2;17984:3;17980:12;17973:19;;17632:366;;;:::o;18004:419::-;18170:4;18208:2;18197:9;18193:18;18185:26;;18257:9;18251:4;18247:20;18243:1;18232:9;18228:17;18221:47;18285:131;18411:4;18285:131;:::i;:::-;18277:139;;18004:419;;;:::o;18429:179::-;18569:31;18565:1;18557:6;18553:14;18546:55;18429:179;:::o;18614:366::-;18756:3;18777:67;18841:2;18836:3;18777:67;:::i;:::-;18770:74;;18853:93;18942:3;18853:93;:::i;:::-;18971:2;18966:3;18962:12;18955:19;;18614:366;;;:::o;18986:419::-;19152:4;19190:2;19179:9;19175:18;19167:26;;19239:9;19233:4;19229:20;19225:1;19214:9;19210:17;19203:47;19267:131;19393:4;19267:131;:::i;:::-;19259:139;;18986:419;;;:::o;19411:165::-;19551:17;19547:1;19539:6;19535:14;19528:41;19411:165;:::o;19582:366::-;19724:3;19745:67;19809:2;19804:3;19745:67;:::i;:::-;19738:74;;19821:93;19910:3;19821:93;:::i;:::-;19939:2;19934:3;19930:12;19923:19;;19582:366;;;:::o;19954:419::-;20120:4;20158:2;20147:9;20143:18;20135:26;;20207:9;20201:4;20197:20;20193:1;20182:9;20178:17;20171:47;20235:131;20361:4;20235:131;:::i;:::-;20227:139;;19954:419;;;:::o;20379:162::-;20519:14;20515:1;20507:6;20503:14;20496:38;20379:162;:::o;20547:366::-;20689:3;20710:67;20774:2;20769:3;20710:67;:::i;:::-;20703:74;;20786:93;20875:3;20786:93;:::i;:::-;20904:2;20899:3;20895:12;20888:19;;20547:366;;;:::o;20919:419::-;21085:4;21123:2;21112:9;21108:18;21100:26;;21172:9;21166:4;21162:20;21158:1;21147:9;21143:17;21136:47;21200:131;21326:4;21200:131;:::i;:::-;21192:139;;20919:419;;;:::o;21344:410::-;21384:7;21407:20;21425:1;21407:20;:::i;:::-;21402:25;;21441:20;21459:1;21441:20;:::i;:::-;21436:25;;21496:1;21493;21489:9;21518:30;21536:11;21518:30;:::i;:::-;21507:41;;21697:1;21688:7;21684:15;21681:1;21678:22;21658:1;21651:9;21631:83;21608:139;;21727:18;;:::i;:::-;21608:139;21392:362;21344:410;;;;:::o;21760:180::-;21808:77;21805:1;21798:88;21905:4;21902:1;21895:15;21929:4;21926:1;21919:15;21946:185;21986:1;22003:20;22021:1;22003:20;:::i;:::-;21998:25;;22037:20;22055:1;22037:20;:::i;:::-;22032:25;;22076:1;22066:35;;22081:18;;:::i;:::-;22066:35;22123:1;22120;22116:9;22111:14;;21946:185;;;;:::o;22137:194::-;22177:4;22197:20;22215:1;22197:20;:::i;:::-;22192:25;;22231:20;22249:1;22231:20;:::i;:::-;22226:25;;22275:1;22272;22268:9;22260:17;;22299:1;22293:4;22290:11;22287:37;;;22304:18;;:::i;:::-;22287:37;22137:194;;;;:::o;22337:221::-;22477:34;22473:1;22465:6;22461:14;22454:58;22546:4;22541:2;22533:6;22529:15;22522:29;22337:221;:::o;22564:366::-;22706:3;22727:67;22791:2;22786:3;22727:67;:::i;:::-;22720:74;;22803:93;22892:3;22803:93;:::i;:::-;22921:2;22916:3;22912:12;22905:19;;22564:366;;;:::o;22936:419::-;23102:4;23140:2;23129:9;23125:18;23117:26;;23189:9;23183:4;23179:20;23175:1;23164:9;23160:17;23153:47;23217:131;23343:4;23217:131;:::i;:::-;23209:139;;22936:419;;;:::o;23361:224::-;23501:34;23497:1;23489:6;23485:14;23478:58;23570:7;23565:2;23557:6;23553:15;23546:32;23361:224;:::o;23591:366::-;23733:3;23754:67;23818:2;23813:3;23754:67;:::i;:::-;23747:74;;23830:93;23919:3;23830:93;:::i;:::-;23948:2;23943:3;23939:12;23932:19;;23591:366;;;:::o;23963:419::-;24129:4;24167:2;24156:9;24152:18;24144:26;;24216:9;24210:4;24206:20;24202:1;24191:9;24187:17;24180:47;24244:131;24370:4;24244:131;:::i;:::-;24236:139;;23963:419;;;:::o;24388:222::-;24528:34;24524:1;24516:6;24512:14;24505:58;24597:5;24592:2;24584:6;24580:15;24573:30;24388:222;:::o;24616:366::-;24758:3;24779:67;24843:2;24838:3;24779:67;:::i;:::-;24772:74;;24855:93;24944:3;24855:93;:::i;:::-;24973:2;24968:3;24964:12;24957:19;;24616:366;;;:::o;24988:419::-;25154:4;25192:2;25181:9;25177:18;25169:26;;25241:9;25235:4;25231:20;25227:1;25216:9;25212:17;25205:47;25269:131;25395:4;25269:131;:::i;:::-;25261:139;;24988:419;;;:::o;25413:225::-;25553:34;25549:1;25541:6;25537:14;25530:58;25622:8;25617:2;25609:6;25605:15;25598:33;25413:225;:::o;25644:366::-;25786:3;25807:67;25871:2;25866:3;25807:67;:::i;:::-;25800:74;;25883:93;25972:3;25883:93;:::i;:::-;26001:2;25996:3;25992:12;25985:19;;25644:366;;;:::o;26016:419::-;26182:4;26220:2;26209:9;26205:18;26197:26;;26269:9;26263:4;26259:20;26255:1;26244:9;26240:17;26233:47;26297:131;26423:4;26297:131;:::i;:::-;26289:139;;26016:419;;;:::o;26441:180::-;26489:77;26486:1;26479:88;26586:4;26583:1;26576:15;26610:4;26607:1;26600:15;26627:143;26684:5;26715:6;26709:13;26700:22;;26731:33;26758:5;26731:33;:::i;:::-;26627:143;;;;:::o;26776:351::-;26846:6;26895:2;26883:9;26874:7;26870:23;26866:32;26863:119;;;26901:79;;:::i;:::-;26863:119;27021:1;27046:64;27102:7;27093:6;27082:9;27078:22;27046:64;:::i;:::-;27036:74;;26992:128;26776:351;;;;:::o;27133:85::-;27178:7;27207:5;27196:16;;27133:85;;;:::o;27224:158::-;27282:9;27315:61;27333:42;27342:32;27368:5;27342:32;:::i;:::-;27333:42;:::i;:::-;27315:61;:::i;:::-;27302:74;;27224:158;;;:::o;27388:147::-;27483:45;27522:5;27483:45;:::i;:::-;27478:3;27471:58;27388:147;;:::o;27541:114::-;27608:6;27642:5;27636:12;27626:22;;27541:114;;;:::o;27661:184::-;27760:11;27794:6;27789:3;27782:19;27834:4;27829:3;27825:14;27810:29;;27661:184;;;;:::o;27851:132::-;27918:4;27941:3;27933:11;;27971:4;27966:3;27962:14;27954:22;;27851:132;;;:::o;27989:108::-;28066:24;28084:5;28066:24;:::i;:::-;28061:3;28054:37;27989:108;;:::o;28103:179::-;28172:10;28193:46;28235:3;28227:6;28193:46;:::i;:::-;28271:4;28266:3;28262:14;28248:28;;28103:179;;;;:::o;28288:113::-;28358:4;28390;28385:3;28381:14;28373:22;;28288:113;;;:::o;28437:732::-;28556:3;28585:54;28633:5;28585:54;:::i;:::-;28655:86;28734:6;28729:3;28655:86;:::i;:::-;28648:93;;28765:56;28815:5;28765:56;:::i;:::-;28844:7;28875:1;28860:284;28885:6;28882:1;28879:13;28860:284;;;28961:6;28955:13;28988:63;29047:3;29032:13;28988:63;:::i;:::-;28981:70;;29074:60;29127:6;29074:60;:::i;:::-;29064:70;;28920:224;28907:1;28904;28900:9;28895:14;;28860:284;;;28864:14;29160:3;29153:10;;28561:608;;;28437:732;;;;:::o;29175:831::-;29438:4;29476:3;29465:9;29461:19;29453:27;;29490:71;29558:1;29547:9;29543:17;29534:6;29490:71;:::i;:::-;29571:80;29647:2;29636:9;29632:18;29623:6;29571:80;:::i;:::-;29698:9;29692:4;29688:20;29683:2;29672:9;29668:18;29661:48;29726:108;29829:4;29820:6;29726:108;:::i;:::-;29718:116;;29844:72;29912:2;29901:9;29897:18;29888:6;29844:72;:::i;:::-;29926:73;29994:3;29983:9;29979:19;29970:6;29926:73;:::i;:::-;29175:831;;;;;;;;:::o;30012:807::-;30261:4;30299:3;30288:9;30284:19;30276:27;;30313:71;30381:1;30370:9;30366:17;30357:6;30313:71;:::i;:::-;30394:72;30462:2;30451:9;30447:18;30438:6;30394:72;:::i;:::-;30476:80;30552:2;30541:9;30537:18;30528:6;30476:80;:::i;:::-;30566;30642:2;30631:9;30627:18;30618:6;30566:80;:::i;:::-;30656:73;30724:3;30713:9;30709:19;30700:6;30656:73;:::i;:::-;30739;30807:3;30796:9;30792:19;30783:6;30739:73;:::i;:::-;30012:807;;;;;;;;;:::o;30825:663::-;30913:6;30921;30929;30978:2;30966:9;30957:7;30953:23;30949:32;30946:119;;;30984:79;;:::i;:::-;30946:119;31104:1;31129:64;31185:7;31176:6;31165:9;31161:22;31129:64;:::i;:::-;31119:74;;31075:128;31242:2;31268:64;31324:7;31315:6;31304:9;31300:22;31268:64;:::i;:::-;31258:74;;31213:129;31381:2;31407:64;31463:7;31454:6;31443:9;31439:22;31407:64;:::i;:::-;31397:74;;31352:129;30825:663;;;;;:::o

Swarm Source

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