ETH Price: $2,718.48 (+6.61%)
Gas: 8 Gwei

Token

VULPINI ($VULPI)
 

Overview

Max Total Supply

992,834,562 $VULPI

Holders

131

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
bigsh0t.eth
Balance
595,295.411775543908883461 $VULPI

Value
$0.00
0x57051c47e85115928206eaa51466aa39c9293c98
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:
Vulpini

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-04-04
*/

/*
    This is the contract for launch of Vulpini ($VULPI) token. LP burned at launch, 0 tax token, contract renounced!
    Author: @Arrnaya
    Website: https://vulpinitoken.com
    Twitter: https://twitter.com/Vulpinitoken
    Telegram: https://t.me/vulpiniofficial
*/

//SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

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

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

        return true;
    }

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

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    /** This function will be used to generate the total supply
    * while deploying the contract
    *
    * This function can never be called again after deploying contract
    */
    function _tokengeneration(address account, uint256 amount) internal virtual {
        _totalSupply = amount;
        _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");

        _beforeTokenTransfer(account, address(0xdead), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
            // _balances[address(0xdead)] += amount;
        }

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

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

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

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

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

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

library Address {
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IRouter {
    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
        );

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

/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        _spendAllowance(account, _msgSender(), amount);
        _burn(account, amount);
    }
}

contract Vulpini is ERC20, ERC20Burnable, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

    bool private _interlock = false;
    bool public providingLiquidity = true;

    uint256 public tokenLiquidityThreshold = 1_000_000 * 10**decimals();
    uint256 public maxBuyLimit = 10_000_000 * 10**decimals();
    uint256 public maxSellLimit = 5_000_000 * 10**decimals();
    uint256 public maxWalletLimit = 20_000_000 * 10**decimals();

    address public marketingWallet = 0x9752d8d9196C27e8C4bF1DB5131e7907a1B33985;
    address private vulpini = 0x1DB94C1b29b2D85674b3F8226197739A524b2cc7;
	address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
        uint256 burn;
    }

    Taxes public taxes = Taxes(20, 0, 0);
    Taxes public sellTaxes = Taxes(50, 0, 0);
    Taxes public transferTaxes = Taxes(0, 0, 0);

    mapping(address => bool) public exemptFee;

    modifier lockTheSwap() {
        if (!_interlock) {
            _interlock = true;
            _;
            _interlock = false;
        }
    }

    constructor() ERC20("VULPINI", "$VULPI") {
        _tokengeneration(msg.sender, 1_000_000_000 * 10**decimals());
        exemptFee[msg.sender] = true;

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // UNISWAP V2
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        exemptFee[address(this)] = true;
        exemptFee[marketingWallet] = true;
        exemptFee[deadWallet] = true;
        exemptFee[vulpini] = true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        override
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");

        if (sender == pair && !exemptFee[recipient] && !_interlock) {
            require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit");
            require(
                balanceOf(recipient) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }

        if (
            sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_interlock
        ) {
            require(amount <= maxSellLimit, "You are exceeding maxSellLimit");
            if (recipient != pair) {
                require(
                    balanceOf(recipient) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
        }

        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        uint256 feeBurn;
        uint256 burnAmount;
        Taxes memory currentTaxes;

        //set fee to zero if fees in contract are handled or exempted
        if (_interlock || exemptFee[sender] || exemptFee[recipient])
            fee = 0;

            //calculate fee
        else if (recipient == pair) {
            feeswap =
                sellTaxes.liquidity +
                sellTaxes.marketing;
            feesum = feeswap;
            feeBurn = sellTaxes.burn;
            currentTaxes = sellTaxes;
        } else if (sender == pair) {
            feeswap =
                taxes.liquidity +
                taxes.marketing;
            feesum = feeswap;
            feeBurn = taxes.burn;
            currentTaxes = taxes;
        } else {
            feeswap =
                transferTaxes.liquidity +
                transferTaxes.marketing ;
            feesum = feeswap;
            feeBurn = transferTaxes.burn;
            currentTaxes = transferTaxes;
        }

        fee = (amount * feesum) / 100;
        burnAmount = (amount * feeBurn) / 100;

        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (providingLiquidity && sender != pair) Liquify(feeswap, currentTaxes);

        //rest to recipient
        super._transfer(sender, recipient, amount - (fee + burnAmount));
        // burn the tokens
        if(burnAmount > 0) {
            super._burn(sender, burnAmount);
        }
        if (fee > 0) {
            //send the fee to the contract
            if (feeswap > 0) {
                uint256 feeAmount = (amount * feeswap) / 100;
                super._transfer(sender, address(this), feeAmount);
            }

        }
    }

    function Liquify(uint256 feeswap, Taxes memory swapTaxes) private lockTheSwap {

        if(feeswap == 0){
            return;
        }

        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= tokenLiquidityThreshold) {
            if (tokenLiquidityThreshold > 1) {
                contractBalance = tokenLiquidityThreshold;
            }

            // Split the contract balance into halves
            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) /
                denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity;

            if (ethToAddLiquidityWith > 0) {
                // Add liquidity to pancake
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }

            uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing;
            if (marketingAmt > 0) {
                payable(marketingWallet).sendValue(marketingAmt);
            }

        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the pancake pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{ value: ethAmount }(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadWallet,
            block.timestamp
        );
    }

    function updateLiquidityProvide(bool state) external onlyOwner {
        //update liquidity providing state
        providingLiquidity = state;
    }

    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        require(new_amount <= 10_000_000 && new_amount > 0, "Swap threshold amount should be lower or euqal to 1% of tokens");
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

    function SetBuyTaxes(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _burn
    ) external onlyOwner {
        taxes = Taxes(_marketing, _liquidity,  _burn);
        require((_marketing + _liquidity +  _burn) <= 30, "Must keep fees at 30% or less");
    }

    function SetSellTaxes(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _burn
    ) external onlyOwner {
        sellTaxes = Taxes(_marketing, _liquidity,  _burn);
        require((_marketing + _liquidity + _burn) <= 100, "Must keep fees at 100% or less");
    }

    function SetTransferTaxes(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _burn
    ) external onlyOwner {
        transferTaxes = Taxes(_marketing, _liquidity,  _burn);
        require((_marketing + _liquidity + _burn) <= 10, "Must keep fees at 10% or less");
    }

    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner {
        router = IRouter(newRouter);
        pair = newPair;
    }

    function updateWallets(address _marketingWallet) external {
        require(msg.sender == vulpini, "Not authorized!");
        require(_marketingWallet != address(0),"Fee Address cannot be zero address");
        marketingWallet = _marketingWallet;
    }

    function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell, uint256 maxWallet) external onlyOwner {
        require(maxBuy >= 1_000_000, "Cannot set max buy amount lower than 0.1%");
        require(maxSell >= 1_000_000, "Cannot set max sell amount lower than 0.1%");
        require(maxWallet >= 5_000_000, "Cannot set max wallet amount lower than 0.5%");
        maxBuyLimit = maxBuy * 10**decimals();
        maxSellLimit = maxSell * 10**decimals();
        maxWalletLimit = maxWallet * 10**decimals(); 
    }

    function rescueERC20(address tokenAdd, uint256 amount) external {
        require(msg.sender == vulpini, "Not authorized!");
        require(tokenAdd != address(this), "Owner can't claim contract's balance of its own tokens");
        IERC20(tokenAdd).transfer(owner(), amount);
    }

    // fallbacks
    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":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"SetBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"SetSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"SetTransferTaxes","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"providingLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenLiquidityThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600760146101000a81548160ff0219169083151502179055506001600760156101000a81548160ff0219169083151502179055506200004a6200077360201b60201c565b600a62000058919062000a9a565b620f424062000068919062000aeb565b6008556200007b6200077360201b60201c565b600a62000089919062000a9a565b6298968062000099919062000aeb565b600955620000ac6200077360201b60201c565b600a620000ba919062000a9a565b624c4b40620000ca919062000aeb565b600a55620000dd6200077360201b60201c565b600a620000eb919062000a9a565b6301312d00620000fc919062000aeb565b600b55739752d8d9196c27e8c4bf1db5131e7907a1b33985600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731db94c1b29b2d85674b3f8226197739a524b2cc7600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051806060016040528060148152602001600081526020016000815250600e600082015181600001556020820151816001015560408201518160020155505060405180606001604052806032815260200160008152602001600081525060116000820151816000015560208201518160010155604082015181600201555050604051806060016040528060008152602001600081526020016000815250601460008201518160000155602082015181600101556040820151816002015550503480156200027657600080fd5b506040518060400160405280600781526020017f56554c50494e49000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f2456554c504900000000000000000000000000000000000000000000000000008152508160039081620002f4919062000da6565b50806004908162000306919062000da6565b505050620003296200031d6200077c60201b60201c565b6200078460201b60201c565b62000369336200033e6200077360201b60201c565b600a6200034c919062000a9a565b633b9aca006200035d919062000aeb565b6200084a60201b60201c565b6001601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000428573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044e919062000ef7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004dc919062000ef7565b6040518363ffffffff1660e01b8152600401620004fb92919062000f3a565b6020604051808303816000875af11580156200051b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000541919062000ef7565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016017600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000f95565b60006012905090565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600281905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008f4919062000f78565b60405180910390a35050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200098e5780860481111562000966576200096562000900565b5b6001851615620009765780820291505b808102905062000986856200092f565b945062000946565b94509492505050565b600082620009a9576001905062000a7c565b81620009b9576000905062000a7c565b8160018114620009d25760028114620009dd5762000a13565b600191505062000a7c565b60ff841115620009f257620009f162000900565b5b8360020a91508482111562000a0c5762000a0b62000900565b5b5062000a7c565b5060208310610133831016604e8410600b841016171562000a4d5782820a90508381111562000a475762000a4662000900565b5b62000a7c565b62000a5c84848460016200093c565b9250905081840481111562000a765762000a7562000900565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000aa78262000a83565b915062000ab48362000a8d565b925062000ae37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000997565b905092915050565b600062000af88262000a83565b915062000b058362000a83565b925082820262000b158162000a83565b9150828204841483151762000b2f5762000b2e62000900565b5b5092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bb857607f821691505b60208210810362000bce5762000bcd62000b70565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000bf9565b62000c44868362000bf9565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000c8762000c8162000c7b8462000a83565b62000c5c565b62000a83565b9050919050565b6000819050919050565b62000ca38362000c66565b62000cbb62000cb28262000c8e565b84845462000c06565b825550505050565b600090565b62000cd262000cc3565b62000cdf81848462000c98565b505050565b5b8181101562000d075762000cfb60008262000cc8565b60018101905062000ce5565b5050565b601f82111562000d565762000d208162000bd4565b62000d2b8462000be9565b8101602085101562000d3b578190505b62000d5362000d4a8562000be9565b83018262000ce4565b50505b505050565b600082821c905092915050565b600062000d7b6000198460080262000d5b565b1980831691505092915050565b600062000d96838362000d68565b9150826002028217905092915050565b62000db18262000b36565b67ffffffffffffffff81111562000dcd5762000dcc62000b41565b5b62000dd9825462000b9f565b62000de682828562000d0b565b600060209050601f83116001811462000e1e576000841562000e09578287015190505b62000e15858262000d88565b86555062000e85565b601f19841662000e2e8662000bd4565b60005b8281101562000e585784890151825560018201915060208501945060208101905062000e31565b8683101562000e78578489015162000e74601f89168262000d68565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ebf8262000e92565b9050919050565b62000ed18162000eb2565b811462000edd57600080fd5b50565b60008151905062000ef18162000ec6565b92915050565b60006020828403121562000f105762000f0f62000e8d565b5b600062000f208482850162000ee0565b91505092915050565b62000f348162000eb2565b82525050565b600060408201905062000f51600083018562000f29565b62000f60602083018462000f29565b9392505050565b62000f728162000a83565b82525050565b600060208201905062000f8f600083018462000f67565b92915050565b6149a28062000fa56000396000f3fe6080604052600436106102295760003560e01c806370a0823111610123578063a457c2d7116100ab578063e1b450ad1161006f578063e1b450ad1461082c578063f2fde38b14610855578063f66895a31461087e578063f887ea40146108ab578063fbe6324e146108d657610230565b8063a457c2d71461070d578063a8aa1b311461074a578063a9059cbb14610775578063c5d32bb2146107b2578063dd62ed3e146107ef57610230565b806379cc6790116100f257806379cc67901461063a57806385141a77146106635780638cd4426d1461068e5780638da5cb5b146106b757806395d89b41146106e257610230565b806370a082311461058e578063715018a6146105cb578063728f8eea146105e257806375f0a8741461060f57610230565b806339509351116101b15780634e736f22116101755780634e736f22146104b75780635331803c146104e0578063652e2f041461050d57806366a88d96146105385780636aa5b37f1461056357610230565b806339509351146103d657806340b28c2f1461041357806342966c681461043c57806342b6fa11146104655780634a2b3b131461048e57610230565b806318160ddd116101f857806318160ddd146102f157806323b872dd1461031c578063244cffa5146103595780632851a5cf14610382578063313ce567146103ab57610230565b806306fdde0314610235578063095ea7b3146102605780631340538f1461029d5780631675d802146102c657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a610901565b6040516102579190613066565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190613121565b610993565b604051610294919061317c565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf91906131c3565b6109b1565b005b3480156102d257600080fd5b506102db610a4a565b6040516102e891906131ff565b60405180910390f35b3480156102fd57600080fd5b50610306610a50565b60405161031391906131ff565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e919061321a565b610a5a565b604051610350919061317c565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b919061326d565b610b5b565b005b34801561038e57600080fd5b506103a960048036038101906103a491906132c0565b610c74565b005b3480156103b757600080fd5b506103c0610db7565b6040516103cd9190613309565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f89190613121565b610dc0565b60405161040a919061317c565b60405180910390f35b34801561041f57600080fd5b5061043a60048036038101906104359190613324565b610e6c565b005b34801561044857600080fd5b50610463600480360381019061045e9190613364565b610f6e565b005b34801561047157600080fd5b5061048c60048036038101906104879190613364565b610f82565b005b34801561049a57600080fd5b506104b560048036038101906104b0919061326d565b611078565b005b3480156104c357600080fd5b506104de60048036038101906104d9919061326d565b611191565b005b3480156104ec57600080fd5b506104f56112aa565b60405161050493929190613391565b60405180910390f35b34801561051957600080fd5b506105226112c2565b60405161052f91906131ff565b60405180910390f35b34801561054457600080fd5b5061054d6112c8565b60405161055a91906131ff565b60405180910390f35b34801561056f57600080fd5b506105786112ce565b60405161058591906131ff565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b091906132c0565b6112d4565b6040516105c291906131ff565b60405180910390f35b3480156105d757600080fd5b506105e061131c565b005b3480156105ee57600080fd5b506105f76113a4565b60405161060693929190613391565b60405180910390f35b34801561061b57600080fd5b506106246113bc565b60405161063191906133d7565b60405180910390f35b34801561064657600080fd5b50610661600480360381019061065c9190613121565b6113e2565b005b34801561066f57600080fd5b50610678611402565b60405161068591906133d7565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b09190613121565b611408565b005b3480156106c357600080fd5b506106cc611590565b6040516106d991906133d7565b60405180910390f35b3480156106ee57600080fd5b506106f76115ba565b6040516107049190613066565b60405180910390f35b34801561071957600080fd5b50610734600480360381019061072f9190613121565b61164c565b604051610741919061317c565b60405180910390f35b34801561075657600080fd5b5061075f611740565b60405161076c91906133d7565b60405180910390f35b34801561078157600080fd5b5061079c60048036038101906107979190613121565b611766565b6040516107a9919061317c565b60405180910390f35b3480156107be57600080fd5b506107d960048036038101906107d491906132c0565b61177d565b6040516107e6919061317c565b60405180910390f35b3480156107fb57600080fd5b5061081660048036038101906108119190613324565b61179d565b60405161082391906131ff565b60405180910390f35b34801561083857600080fd5b50610853600480360381019061084e919061326d565b611824565b005b34801561086157600080fd5b5061087c600480360381019061087791906132c0565b6119e6565b005b34801561088a57600080fd5b50610893611add565b6040516108a293929190613391565b60405180910390f35b3480156108b757600080fd5b506108c0611af5565b6040516108cd9190613451565b60405180910390f35b3480156108e257600080fd5b506108eb611b1b565b6040516108f8919061317c565b60405180910390f35b6060600380546109109061349b565b80601f016020809104026020016040519081016040528092919081815260200182805461093c9061349b565b80156109895780601f1061095e57610100808354040283529160200191610989565b820191906000526020600020905b81548152906001019060200180831161096c57829003601f168201915b5050505050905090565b60006109a76109a0611b2e565b8484611b36565b6001905092915050565b6109b9611b2e565b73ffffffffffffffffffffffffffffffffffffffff166109d7611590565b73ffffffffffffffffffffffffffffffffffffffff1614610a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2490613518565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b60085481565b6000600254905090565b6000610a67848484611cff565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ab2611b2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b29906135aa565b60405180910390fd5b610b4f85610b3e611b2e565b8584610b4a91906135f9565b611b36565b60019150509392505050565b610b63611b2e565b73ffffffffffffffffffffffffffffffffffffffff16610b81611590565b73ffffffffffffffffffffffffffffffffffffffff1614610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90613518565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506014600082015181600001556020820151816001015560408201518160020155905050600a818385610c24919061362d565b610c2e919061362d565b1115610c6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c66906136ad565b60405180910390fd5b505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfb90613719565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6a906137ab565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006012905090565b6000610e62610dcd611b2e565b848460016000610ddb611b2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e5d919061362d565b611b36565b6001905092915050565b610e74611b2e565b73ffffffffffffffffffffffffffffffffffffffff16610e92611590565b73ffffffffffffffffffffffffffffffffffffffff1614610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf90613518565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b610f7f610f79611b2e565b8261245c565b50565b610f8a611b2e565b73ffffffffffffffffffffffffffffffffffffffff16610fa8611590565b73ffffffffffffffffffffffffffffffffffffffff1614610ffe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff590613518565b60405180910390fd5b6298968081111580156110115750600081115b611050576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110479061383d565b60405180910390fd5b611058610db7565b600a6110649190613990565b8161106f91906139db565b60088190555050565b611080611b2e565b73ffffffffffffffffffffffffffffffffffffffff1661109e611590565b73ffffffffffffffffffffffffffffffffffffffff16146110f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110eb90613518565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600e600082015181600001556020820151816001015560408201518160020155905050601e818385611141919061362d565b61114b919061362d565b111561118c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118390613a69565b60405180910390fd5b505050565b611199611b2e565b73ffffffffffffffffffffffffffffffffffffffff166111b7611590565b73ffffffffffffffffffffffffffffffffffffffff161461120d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120490613518565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506011600082015181600001556020820151816001015560408201518160020155905050606481838561125a919061362d565b611264919061362d565b11156112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129c90613ad5565b60405180910390fd5b505050565b60148060000154908060010154908060020154905083565b600a5481565b600b5481565b60095481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611324611b2e565b73ffffffffffffffffffffffffffffffffffffffff16611342611590565b73ffffffffffffffffffffffffffffffffffffffff1614611398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138f90613518565b60405180910390fd5b6113a2600061262c565b565b600e8060000154908060010154908060020154905083565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113f4826113ee611b2e565b836126f2565b6113fe828261245c565b5050565b61dead81565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148f90613719565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611506576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fd90613b67565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61152a611590565b836040518363ffffffff1660e01b8152600401611548929190613b87565b6020604051808303816000875af1158015611567573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158b9190613bc5565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546115c99061349b565b80601f01602080910402602001604051908101604052809291908181526020018280546115f59061349b565b80156116425780601f1061161757610100808354040283529160200191611642565b820191906000526020600020905b81548152906001019060200180831161162557829003601f168201915b5050505050905090565b6000806001600061165b611b2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90613c64565b60405180910390fd5b611735611723611b2e565b85858461173091906135f9565b611b36565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611773338484611cff565b6001905092915050565b60176020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61182c611b2e565b73ffffffffffffffffffffffffffffffffffffffff1661184a611590565b73ffffffffffffffffffffffffffffffffffffffff16146118a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189790613518565b60405180910390fd5b620f42408310156118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd90613cf6565b60405180910390fd5b620f424082101561192c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192390613d88565b60405180910390fd5b624c4b40811015611972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196990613e1a565b60405180910390fd5b61197a610db7565b600a6119869190613990565b8361199191906139db565b60098190555061199f610db7565b600a6119ab9190613990565b826119b691906139db565b600a819055506119c4610db7565b600a6119d09190613990565b816119db91906139db565b600b81905550505050565b6119ee611b2e565b73ffffffffffffffffffffffffffffffffffffffff16611a0c611590565b73ffffffffffffffffffffffffffffffffffffffff1614611a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5990613518565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac890613eac565b60405180910390fd5b611ada8161262c565b50565b60118060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760159054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c90613f3e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0b90613fd0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611cf291906131ff565b60405180910390a3505050565b60008111611d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3990614062565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611de95750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e025750600760149054906101000a900460ff16155b15611ea557600954811115611e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e43906140ce565b60405180910390fd5b600b5481611e59846112d4565b611e63919061362d565b1115611ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9b9061413a565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f4d5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fa35750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fbc5750600760149054906101000a900460ff16155b156120b557600a54811115612006576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffd906141a6565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146120b457600b5481612068846112d4565b612072919061362d565b11156120b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120aa9061413a565b60405180910390fd5b5b5b60008060008060006120c5612fb5565b600760149054906101000a900460ff16806121295750601760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061217d5750601760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561218b5760009350612332565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1603612235576011600001546011600101546121f6919061362d565b95508594506011600201549250601160405180606001604052908160008201548152602001600182015481526020016002820154815250509050612331565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16036122df57600e60000154600e600101546122a0919061362d565b9550859450600e600201549250600e60405180606001604052908160008201548152602001600182015481526020016002820154815250509050612330565b6014600001546014600101546122f5919061362d565b955085945060146002015492506014604051806060016040529081600082015481526020016001820154815260200160028201548152505090505b5b5b6064858861234091906139db565b61234a91906141f5565b93506064838861235a91906139db565b61236491906141f5565b9150600760159054906101000a900460ff1680156123d05750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b156123e0576123df868261277e565b5b612401898984876123f1919061362d565b8a6123fc91906135f9565b612922565b600082111561241557612414898361245c565b5b60008411156124515760008611156124505760006064878961243791906139db565b61244191906141f5565b905061244e8a3083612922565b505b5b505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c290614298565b60405180910390fd5b6124d88261dead83612b94565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561255e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125559061432a565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254039250508190555061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161261291906131ff565b60405180910390a36126278361dead84612b99565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006126fe848461179d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612778578181101561276a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276190614396565b60405180910390fd5b6127778484848403611b36565b5b50505050565b600760149054906101000a900460ff1661291e576001600760146101000a81548160ff02191690831515021790555060008203156129025760006127c1306112d4565b9050600854811061290057600160085411156127dd5760085490505b60006002846127ec91906139db565b905060008184602001518461280191906139db565b61280b91906141f5565b90506000818461281b91906135f9565b9050600047905061282b82612b9e565b6000814761283991906135f9565b9050600087602001518661284d91906135f9565b8261285891906141f5565b9050600088602001518261286c91906139db565b90506000811115612882576128818682612de1565b5b6000896000015160028461289691906139db565b6128a091906139db565b905060008111156128f7576128f681600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612ec190919063ffffffff16565b5b50505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612991576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298890614428565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f7906144ba565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7d9061454c565b60405180910390fd5b8181612a9291906135f9565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b22919061362d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b8691906131ff565b60405180910390a350505050565b505050565b505050565b6000600267ffffffffffffffff811115612bbb57612bba61456c565b5b604051908082528060200260200182016040528015612be95781602001602082028036833780820191505090505b5090503081600081518110612c0157612c0061459b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ccc91906145df565b81600181518110612ce057612cdf61459b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612d4730600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b36565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612dab959493929190614705565b600060405180830381600087803b158015612dc557600080fd5b505af1158015612dd9573d6000803e3d6000fd5b505050505050565b612e0e30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b36565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612e779695949392919061475f565b60606040518083038185885af1158015612e95573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612eba91906147d5565b5050505050565b80471015612f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612efb90614874565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612f2a906148c5565b60006040518083038185875af1925050503d8060008114612f67576040519150601f19603f3d011682016040523d82523d6000602084013e612f6c565b606091505b5050905080612fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa79061494c565b60405180910390fd5b505050565b60405180606001604052806000815260200160008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613010578082015181840152602081019050612ff5565b60008484015250505050565b6000601f19601f8301169050919050565b600061303882612fd6565b6130428185612fe1565b9350613052818560208601612ff2565b61305b8161301c565b840191505092915050565b60006020820190508181036000830152613080818461302d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006130b88261308d565b9050919050565b6130c8816130ad565b81146130d357600080fd5b50565b6000813590506130e5816130bf565b92915050565b6000819050919050565b6130fe816130eb565b811461310957600080fd5b50565b60008135905061311b816130f5565b92915050565b6000806040838503121561313857613137613088565b5b6000613146858286016130d6565b92505060206131578582860161310c565b9150509250929050565b60008115159050919050565b61317681613161565b82525050565b6000602082019050613191600083018461316d565b92915050565b6131a081613161565b81146131ab57600080fd5b50565b6000813590506131bd81613197565b92915050565b6000602082840312156131d9576131d8613088565b5b60006131e7848285016131ae565b91505092915050565b6131f9816130eb565b82525050565b600060208201905061321460008301846131f0565b92915050565b60008060006060848603121561323357613232613088565b5b6000613241868287016130d6565b9350506020613252868287016130d6565b92505060406132638682870161310c565b9150509250925092565b60008060006060848603121561328657613285613088565b5b60006132948682870161310c565b93505060206132a58682870161310c565b92505060406132b68682870161310c565b9150509250925092565b6000602082840312156132d6576132d5613088565b5b60006132e4848285016130d6565b91505092915050565b600060ff82169050919050565b613303816132ed565b82525050565b600060208201905061331e60008301846132fa565b92915050565b6000806040838503121561333b5761333a613088565b5b6000613349858286016130d6565b925050602061335a858286016130d6565b9150509250929050565b60006020828403121561337a57613379613088565b5b60006133888482850161310c565b91505092915050565b60006060820190506133a660008301866131f0565b6133b360208301856131f0565b6133c060408301846131f0565b949350505050565b6133d1816130ad565b82525050565b60006020820190506133ec60008301846133c8565b92915050565b6000819050919050565b600061341761341261340d8461308d565b6133f2565b61308d565b9050919050565b6000613429826133fc565b9050919050565b600061343b8261341e565b9050919050565b61344b81613430565b82525050565b60006020820190506134666000830184613442565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806134b357607f821691505b6020821081036134c6576134c561346c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613502602083612fe1565b915061350d826134cc565b602082019050919050565b60006020820190508181036000830152613531816134f5565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613594602883612fe1565b915061359f82613538565b604082019050919050565b600060208201905081810360008301526135c381613587565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613604826130eb565b915061360f836130eb565b9250828203905081811115613627576136266135ca565b5b92915050565b6000613638826130eb565b9150613643836130eb565b925082820190508082111561365b5761365a6135ca565b5b92915050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b6000613697601d83612fe1565b91506136a282613661565b602082019050919050565b600060208201905081810360008301526136c68161368a565b9050919050565b7f4e6f7420617574686f72697a6564210000000000000000000000000000000000600082015250565b6000613703600f83612fe1565b915061370e826136cd565b602082019050919050565b60006020820190508181036000830152613732816136f6565b9050919050565b7f46656520416464726573732063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613795602283612fe1565b91506137a082613739565b604082019050919050565b600060208201905081810360008301526137c481613788565b9050919050565b7f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060008201527f6c6f776572206f7220657571616c20746f203125206f6620746f6b656e730000602082015250565b6000613827603e83612fe1565b9150613832826137cb565b604082019050919050565b600060208201905081810360008301526138568161381a565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156138b4578086048111156138905761388f6135ca565b5b600185161561389f5780820291505b80810290506138ad8561385d565b9450613874565b94509492505050565b6000826138cd5760019050613989565b816138db5760009050613989565b81600181146138f157600281146138fb5761392a565b6001915050613989565b60ff84111561390d5761390c6135ca565b5b8360020a915084821115613924576139236135ca565b5b50613989565b5060208310610133831016604e8410600b841016171561395f5782820a90508381111561395a576139596135ca565b5b613989565b61396c848484600161386a565b92509050818404811115613983576139826135ca565b5b81810290505b9392505050565b600061399b826130eb565b91506139a6836132ed565b92506139d37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846138bd565b905092915050565b60006139e6826130eb565b91506139f1836130eb565b92508282026139ff816130eb565b91508282048414831517613a1657613a156135ca565b5b5092915050565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b6000613a53601d83612fe1565b9150613a5e82613a1d565b602082019050919050565b60006020820190508181036000830152613a8281613a46565b9050919050565b7f4d757374206b65657020666565732061742031303025206f72206c6573730000600082015250565b6000613abf601e83612fe1565b9150613aca82613a89565b602082019050919050565b60006020820190508181036000830152613aee81613ab2565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c60008201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b6000613b51603683612fe1565b9150613b5c82613af5565b604082019050919050565b60006020820190508181036000830152613b8081613b44565b9050919050565b6000604082019050613b9c60008301856133c8565b613ba960208301846131f0565b9392505050565b600081519050613bbf81613197565b92915050565b600060208284031215613bdb57613bda613088565b5b6000613be984828501613bb0565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613c4e602583612fe1565b9150613c5982613bf2565b604082019050919050565b60006020820190508181036000830152613c7d81613c41565b9050919050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000613ce0602983612fe1565b9150613ceb82613c84565b604082019050919050565b60006020820190508181036000830152613d0f81613cd3565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b6000613d72602a83612fe1565b9150613d7d82613d16565b604082019050919050565b60006020820190508181036000830152613da181613d65565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e35250000000000000000000000000000000000000000602082015250565b6000613e04602c83612fe1565b9150613e0f82613da8565b604082019050919050565b60006020820190508181036000830152613e3381613df7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e96602683612fe1565b9150613ea182613e3a565b604082019050919050565b60006020820190508181036000830152613ec581613e89565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f28602483612fe1565b9150613f3382613ecc565b604082019050919050565b60006020820190508181036000830152613f5781613f1b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fba602283612fe1565b9150613fc582613f5e565b604082019050919050565b60006020820190508181036000830152613fe981613fad565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061404c602983612fe1565b915061405782613ff0565b604082019050919050565b6000602082019050818103600083015261407b8161403f565b9050919050565b7f596f752061726520657863656564696e67206d61784275794c696d6974000000600082015250565b60006140b8601d83612fe1565b91506140c382614082565b602082019050919050565b600060208201905081810360008301526140e7816140ab565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d6974600082015250565b6000614124602083612fe1565b915061412f826140ee565b602082019050919050565b6000602082019050818103600083015261415381614117565b9050919050565b7f596f752061726520657863656564696e67206d617853656c6c4c696d69740000600082015250565b6000614190601e83612fe1565b915061419b8261415a565b602082019050919050565b600060208201905081810360008301526141bf81614183565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614200826130eb565b915061420b836130eb565b92508261421b5761421a6141c6565b5b828204905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614282602183612fe1565b915061428d82614226565b604082019050919050565b600060208201905081810360008301526142b181614275565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000614314602283612fe1565b915061431f826142b8565b604082019050919050565b6000602082019050818103600083015261434381614307565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614380601d83612fe1565b915061438b8261434a565b602082019050919050565b600060208201905081810360008301526143af81614373565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614412602583612fe1565b915061441d826143b6565b604082019050919050565b6000602082019050818103600083015261444181614405565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006144a4602383612fe1565b91506144af82614448565b604082019050919050565b600060208201905081810360008301526144d381614497565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614536602683612fe1565b9150614541826144da565b604082019050919050565b6000602082019050818103600083015261456581614529565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506145d9816130bf565b92915050565b6000602082840312156145f5576145f4613088565b5b6000614603848285016145ca565b91505092915050565b6000819050919050565b600061463161462c6146278461460c565b6133f2565b6130eb565b9050919050565b61464181614616565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61467c816130ad565b82525050565b600061468e8383614673565b60208301905092915050565b6000602082019050919050565b60006146b282614647565b6146bc8185614652565b93506146c783614663565b8060005b838110156146f85781516146df8882614682565b97506146ea8361469a565b9250506001810190506146cb565b5085935050505092915050565b600060a08201905061471a60008301886131f0565b6147276020830187614638565b818103604083015261473981866146a7565b905061474860608301856133c8565b61475560808301846131f0565b9695505050505050565b600060c08201905061477460008301896133c8565b61478160208301886131f0565b61478e6040830187614638565b61479b6060830186614638565b6147a860808301856133c8565b6147b560a08301846131f0565b979650505050505050565b6000815190506147cf816130f5565b92915050565b6000806000606084860312156147ee576147ed613088565b5b60006147fc868287016147c0565b935050602061480d868287016147c0565b925050604061481e868287016147c0565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061485e601d83612fe1565b915061486982614828565b602082019050919050565b6000602082019050818103600083015261488d81614851565b9050919050565b600081905092915050565b50565b60006148af600083614894565b91506148ba8261489f565b600082019050919050565b60006148d0826148a2565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614936603a83612fe1565b9150614941826148da565b604082019050919050565b6000602082019050818103600083015261496581614929565b905091905056fea2646970667358221220ea4acad8fd36696ad7863fa7c66fe42d18043604fb7d0858f15b05c194cbafa064736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102295760003560e01c806370a0823111610123578063a457c2d7116100ab578063e1b450ad1161006f578063e1b450ad1461082c578063f2fde38b14610855578063f66895a31461087e578063f887ea40146108ab578063fbe6324e146108d657610230565b8063a457c2d71461070d578063a8aa1b311461074a578063a9059cbb14610775578063c5d32bb2146107b2578063dd62ed3e146107ef57610230565b806379cc6790116100f257806379cc67901461063a57806385141a77146106635780638cd4426d1461068e5780638da5cb5b146106b757806395d89b41146106e257610230565b806370a082311461058e578063715018a6146105cb578063728f8eea146105e257806375f0a8741461060f57610230565b806339509351116101b15780634e736f22116101755780634e736f22146104b75780635331803c146104e0578063652e2f041461050d57806366a88d96146105385780636aa5b37f1461056357610230565b806339509351146103d657806340b28c2f1461041357806342966c681461043c57806342b6fa11146104655780634a2b3b131461048e57610230565b806318160ddd116101f857806318160ddd146102f157806323b872dd1461031c578063244cffa5146103595780632851a5cf14610382578063313ce567146103ab57610230565b806306fdde0314610235578063095ea7b3146102605780631340538f1461029d5780631675d802146102c657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a610901565b6040516102579190613066565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190613121565b610993565b604051610294919061317c565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf91906131c3565b6109b1565b005b3480156102d257600080fd5b506102db610a4a565b6040516102e891906131ff565b60405180910390f35b3480156102fd57600080fd5b50610306610a50565b60405161031391906131ff565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e919061321a565b610a5a565b604051610350919061317c565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b919061326d565b610b5b565b005b34801561038e57600080fd5b506103a960048036038101906103a491906132c0565b610c74565b005b3480156103b757600080fd5b506103c0610db7565b6040516103cd9190613309565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f89190613121565b610dc0565b60405161040a919061317c565b60405180910390f35b34801561041f57600080fd5b5061043a60048036038101906104359190613324565b610e6c565b005b34801561044857600080fd5b50610463600480360381019061045e9190613364565b610f6e565b005b34801561047157600080fd5b5061048c60048036038101906104879190613364565b610f82565b005b34801561049a57600080fd5b506104b560048036038101906104b0919061326d565b611078565b005b3480156104c357600080fd5b506104de60048036038101906104d9919061326d565b611191565b005b3480156104ec57600080fd5b506104f56112aa565b60405161050493929190613391565b60405180910390f35b34801561051957600080fd5b506105226112c2565b60405161052f91906131ff565b60405180910390f35b34801561054457600080fd5b5061054d6112c8565b60405161055a91906131ff565b60405180910390f35b34801561056f57600080fd5b506105786112ce565b60405161058591906131ff565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b091906132c0565b6112d4565b6040516105c291906131ff565b60405180910390f35b3480156105d757600080fd5b506105e061131c565b005b3480156105ee57600080fd5b506105f76113a4565b60405161060693929190613391565b60405180910390f35b34801561061b57600080fd5b506106246113bc565b60405161063191906133d7565b60405180910390f35b34801561064657600080fd5b50610661600480360381019061065c9190613121565b6113e2565b005b34801561066f57600080fd5b50610678611402565b60405161068591906133d7565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b09190613121565b611408565b005b3480156106c357600080fd5b506106cc611590565b6040516106d991906133d7565b60405180910390f35b3480156106ee57600080fd5b506106f76115ba565b6040516107049190613066565b60405180910390f35b34801561071957600080fd5b50610734600480360381019061072f9190613121565b61164c565b604051610741919061317c565b60405180910390f35b34801561075657600080fd5b5061075f611740565b60405161076c91906133d7565b60405180910390f35b34801561078157600080fd5b5061079c60048036038101906107979190613121565b611766565b6040516107a9919061317c565b60405180910390f35b3480156107be57600080fd5b506107d960048036038101906107d491906132c0565b61177d565b6040516107e6919061317c565b60405180910390f35b3480156107fb57600080fd5b5061081660048036038101906108119190613324565b61179d565b60405161082391906131ff565b60405180910390f35b34801561083857600080fd5b50610853600480360381019061084e919061326d565b611824565b005b34801561086157600080fd5b5061087c600480360381019061087791906132c0565b6119e6565b005b34801561088a57600080fd5b50610893611add565b6040516108a293929190613391565b60405180910390f35b3480156108b757600080fd5b506108c0611af5565b6040516108cd9190613451565b60405180910390f35b3480156108e257600080fd5b506108eb611b1b565b6040516108f8919061317c565b60405180910390f35b6060600380546109109061349b565b80601f016020809104026020016040519081016040528092919081815260200182805461093c9061349b565b80156109895780601f1061095e57610100808354040283529160200191610989565b820191906000526020600020905b81548152906001019060200180831161096c57829003601f168201915b5050505050905090565b60006109a76109a0611b2e565b8484611b36565b6001905092915050565b6109b9611b2e565b73ffffffffffffffffffffffffffffffffffffffff166109d7611590565b73ffffffffffffffffffffffffffffffffffffffff1614610a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2490613518565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b60085481565b6000600254905090565b6000610a67848484611cff565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ab2611b2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b29906135aa565b60405180910390fd5b610b4f85610b3e611b2e565b8584610b4a91906135f9565b611b36565b60019150509392505050565b610b63611b2e565b73ffffffffffffffffffffffffffffffffffffffff16610b81611590565b73ffffffffffffffffffffffffffffffffffffffff1614610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90613518565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506014600082015181600001556020820151816001015560408201518160020155905050600a818385610c24919061362d565b610c2e919061362d565b1115610c6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c66906136ad565b60405180910390fd5b505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfb90613719565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6a906137ab565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006012905090565b6000610e62610dcd611b2e565b848460016000610ddb611b2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e5d919061362d565b611b36565b6001905092915050565b610e74611b2e565b73ffffffffffffffffffffffffffffffffffffffff16610e92611590565b73ffffffffffffffffffffffffffffffffffffffff1614610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf90613518565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b610f7f610f79611b2e565b8261245c565b50565b610f8a611b2e565b73ffffffffffffffffffffffffffffffffffffffff16610fa8611590565b73ffffffffffffffffffffffffffffffffffffffff1614610ffe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff590613518565b60405180910390fd5b6298968081111580156110115750600081115b611050576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110479061383d565b60405180910390fd5b611058610db7565b600a6110649190613990565b8161106f91906139db565b60088190555050565b611080611b2e565b73ffffffffffffffffffffffffffffffffffffffff1661109e611590565b73ffffffffffffffffffffffffffffffffffffffff16146110f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110eb90613518565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600e600082015181600001556020820151816001015560408201518160020155905050601e818385611141919061362d565b61114b919061362d565b111561118c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118390613a69565b60405180910390fd5b505050565b611199611b2e565b73ffffffffffffffffffffffffffffffffffffffff166111b7611590565b73ffffffffffffffffffffffffffffffffffffffff161461120d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120490613518565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506011600082015181600001556020820151816001015560408201518160020155905050606481838561125a919061362d565b611264919061362d565b11156112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129c90613ad5565b60405180910390fd5b505050565b60148060000154908060010154908060020154905083565b600a5481565b600b5481565b60095481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611324611b2e565b73ffffffffffffffffffffffffffffffffffffffff16611342611590565b73ffffffffffffffffffffffffffffffffffffffff1614611398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138f90613518565b60405180910390fd5b6113a2600061262c565b565b600e8060000154908060010154908060020154905083565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113f4826113ee611b2e565b836126f2565b6113fe828261245c565b5050565b61dead81565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148f90613719565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611506576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fd90613b67565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61152a611590565b836040518363ffffffff1660e01b8152600401611548929190613b87565b6020604051808303816000875af1158015611567573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158b9190613bc5565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546115c99061349b565b80601f01602080910402602001604051908101604052809291908181526020018280546115f59061349b565b80156116425780601f1061161757610100808354040283529160200191611642565b820191906000526020600020905b81548152906001019060200180831161162557829003601f168201915b5050505050905090565b6000806001600061165b611b2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90613c64565b60405180910390fd5b611735611723611b2e565b85858461173091906135f9565b611b36565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611773338484611cff565b6001905092915050565b60176020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61182c611b2e565b73ffffffffffffffffffffffffffffffffffffffff1661184a611590565b73ffffffffffffffffffffffffffffffffffffffff16146118a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189790613518565b60405180910390fd5b620f42408310156118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd90613cf6565b60405180910390fd5b620f424082101561192c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192390613d88565b60405180910390fd5b624c4b40811015611972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196990613e1a565b60405180910390fd5b61197a610db7565b600a6119869190613990565b8361199191906139db565b60098190555061199f610db7565b600a6119ab9190613990565b826119b691906139db565b600a819055506119c4610db7565b600a6119d09190613990565b816119db91906139db565b600b81905550505050565b6119ee611b2e565b73ffffffffffffffffffffffffffffffffffffffff16611a0c611590565b73ffffffffffffffffffffffffffffffffffffffff1614611a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5990613518565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac890613eac565b60405180910390fd5b611ada8161262c565b50565b60118060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760159054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c90613f3e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0b90613fd0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611cf291906131ff565b60405180910390a3505050565b60008111611d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3990614062565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611de95750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e025750600760149054906101000a900460ff16155b15611ea557600954811115611e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e43906140ce565b60405180910390fd5b600b5481611e59846112d4565b611e63919061362d565b1115611ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9b9061413a565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f4d5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fa35750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fbc5750600760149054906101000a900460ff16155b156120b557600a54811115612006576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffd906141a6565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146120b457600b5481612068846112d4565b612072919061362d565b11156120b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120aa9061413a565b60405180910390fd5b5b5b60008060008060006120c5612fb5565b600760149054906101000a900460ff16806121295750601760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061217d5750601760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561218b5760009350612332565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1603612235576011600001546011600101546121f6919061362d565b95508594506011600201549250601160405180606001604052908160008201548152602001600182015481526020016002820154815250509050612331565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16036122df57600e60000154600e600101546122a0919061362d565b9550859450600e600201549250600e60405180606001604052908160008201548152602001600182015481526020016002820154815250509050612330565b6014600001546014600101546122f5919061362d565b955085945060146002015492506014604051806060016040529081600082015481526020016001820154815260200160028201548152505090505b5b5b6064858861234091906139db565b61234a91906141f5565b93506064838861235a91906139db565b61236491906141f5565b9150600760159054906101000a900460ff1680156123d05750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b156123e0576123df868261277e565b5b612401898984876123f1919061362d565b8a6123fc91906135f9565b612922565b600082111561241557612414898361245c565b5b60008411156124515760008611156124505760006064878961243791906139db565b61244191906141f5565b905061244e8a3083612922565b505b5b505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c290614298565b60405180910390fd5b6124d88261dead83612b94565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561255e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125559061432a565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254039250508190555061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161261291906131ff565b60405180910390a36126278361dead84612b99565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006126fe848461179d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612778578181101561276a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276190614396565b60405180910390fd5b6127778484848403611b36565b5b50505050565b600760149054906101000a900460ff1661291e576001600760146101000a81548160ff02191690831515021790555060008203156129025760006127c1306112d4565b9050600854811061290057600160085411156127dd5760085490505b60006002846127ec91906139db565b905060008184602001518461280191906139db565b61280b91906141f5565b90506000818461281b91906135f9565b9050600047905061282b82612b9e565b6000814761283991906135f9565b9050600087602001518661284d91906135f9565b8261285891906141f5565b9050600088602001518261286c91906139db565b90506000811115612882576128818682612de1565b5b6000896000015160028461289691906139db565b6128a091906139db565b905060008111156128f7576128f681600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612ec190919063ffffffff16565b5b50505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612991576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298890614428565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f7906144ba565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7d9061454c565b60405180910390fd5b8181612a9291906135f9565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b22919061362d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b8691906131ff565b60405180910390a350505050565b505050565b505050565b6000600267ffffffffffffffff811115612bbb57612bba61456c565b5b604051908082528060200260200182016040528015612be95781602001602082028036833780820191505090505b5090503081600081518110612c0157612c0061459b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ccc91906145df565b81600181518110612ce057612cdf61459b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612d4730600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b36565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612dab959493929190614705565b600060405180830381600087803b158015612dc557600080fd5b505af1158015612dd9573d6000803e3d6000fd5b505050505050565b612e0e30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b36565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612e779695949392919061475f565b60606040518083038185885af1158015612e95573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612eba91906147d5565b5050505050565b80471015612f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612efb90614874565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612f2a906148c5565b60006040518083038185875af1925050503d8060008114612f67576040519150601f19603f3d011682016040523d82523d6000602084013e612f6c565b606091505b5050905080612fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa79061494c565b60405180910390fd5b505050565b60405180606001604052806000815260200160008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613010578082015181840152602081019050612ff5565b60008484015250505050565b6000601f19601f8301169050919050565b600061303882612fd6565b6130428185612fe1565b9350613052818560208601612ff2565b61305b8161301c565b840191505092915050565b60006020820190508181036000830152613080818461302d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006130b88261308d565b9050919050565b6130c8816130ad565b81146130d357600080fd5b50565b6000813590506130e5816130bf565b92915050565b6000819050919050565b6130fe816130eb565b811461310957600080fd5b50565b60008135905061311b816130f5565b92915050565b6000806040838503121561313857613137613088565b5b6000613146858286016130d6565b92505060206131578582860161310c565b9150509250929050565b60008115159050919050565b61317681613161565b82525050565b6000602082019050613191600083018461316d565b92915050565b6131a081613161565b81146131ab57600080fd5b50565b6000813590506131bd81613197565b92915050565b6000602082840312156131d9576131d8613088565b5b60006131e7848285016131ae565b91505092915050565b6131f9816130eb565b82525050565b600060208201905061321460008301846131f0565b92915050565b60008060006060848603121561323357613232613088565b5b6000613241868287016130d6565b9350506020613252868287016130d6565b92505060406132638682870161310c565b9150509250925092565b60008060006060848603121561328657613285613088565b5b60006132948682870161310c565b93505060206132a58682870161310c565b92505060406132b68682870161310c565b9150509250925092565b6000602082840312156132d6576132d5613088565b5b60006132e4848285016130d6565b91505092915050565b600060ff82169050919050565b613303816132ed565b82525050565b600060208201905061331e60008301846132fa565b92915050565b6000806040838503121561333b5761333a613088565b5b6000613349858286016130d6565b925050602061335a858286016130d6565b9150509250929050565b60006020828403121561337a57613379613088565b5b60006133888482850161310c565b91505092915050565b60006060820190506133a660008301866131f0565b6133b360208301856131f0565b6133c060408301846131f0565b949350505050565b6133d1816130ad565b82525050565b60006020820190506133ec60008301846133c8565b92915050565b6000819050919050565b600061341761341261340d8461308d565b6133f2565b61308d565b9050919050565b6000613429826133fc565b9050919050565b600061343b8261341e565b9050919050565b61344b81613430565b82525050565b60006020820190506134666000830184613442565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806134b357607f821691505b6020821081036134c6576134c561346c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613502602083612fe1565b915061350d826134cc565b602082019050919050565b60006020820190508181036000830152613531816134f5565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613594602883612fe1565b915061359f82613538565b604082019050919050565b600060208201905081810360008301526135c381613587565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613604826130eb565b915061360f836130eb565b9250828203905081811115613627576136266135ca565b5b92915050565b6000613638826130eb565b9150613643836130eb565b925082820190508082111561365b5761365a6135ca565b5b92915050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b6000613697601d83612fe1565b91506136a282613661565b602082019050919050565b600060208201905081810360008301526136c68161368a565b9050919050565b7f4e6f7420617574686f72697a6564210000000000000000000000000000000000600082015250565b6000613703600f83612fe1565b915061370e826136cd565b602082019050919050565b60006020820190508181036000830152613732816136f6565b9050919050565b7f46656520416464726573732063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613795602283612fe1565b91506137a082613739565b604082019050919050565b600060208201905081810360008301526137c481613788565b9050919050565b7f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060008201527f6c6f776572206f7220657571616c20746f203125206f6620746f6b656e730000602082015250565b6000613827603e83612fe1565b9150613832826137cb565b604082019050919050565b600060208201905081810360008301526138568161381a565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156138b4578086048111156138905761388f6135ca565b5b600185161561389f5780820291505b80810290506138ad8561385d565b9450613874565b94509492505050565b6000826138cd5760019050613989565b816138db5760009050613989565b81600181146138f157600281146138fb5761392a565b6001915050613989565b60ff84111561390d5761390c6135ca565b5b8360020a915084821115613924576139236135ca565b5b50613989565b5060208310610133831016604e8410600b841016171561395f5782820a90508381111561395a576139596135ca565b5b613989565b61396c848484600161386a565b92509050818404811115613983576139826135ca565b5b81810290505b9392505050565b600061399b826130eb565b91506139a6836132ed565b92506139d37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846138bd565b905092915050565b60006139e6826130eb565b91506139f1836130eb565b92508282026139ff816130eb565b91508282048414831517613a1657613a156135ca565b5b5092915050565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b6000613a53601d83612fe1565b9150613a5e82613a1d565b602082019050919050565b60006020820190508181036000830152613a8281613a46565b9050919050565b7f4d757374206b65657020666565732061742031303025206f72206c6573730000600082015250565b6000613abf601e83612fe1565b9150613aca82613a89565b602082019050919050565b60006020820190508181036000830152613aee81613ab2565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c60008201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b6000613b51603683612fe1565b9150613b5c82613af5565b604082019050919050565b60006020820190508181036000830152613b8081613b44565b9050919050565b6000604082019050613b9c60008301856133c8565b613ba960208301846131f0565b9392505050565b600081519050613bbf81613197565b92915050565b600060208284031215613bdb57613bda613088565b5b6000613be984828501613bb0565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613c4e602583612fe1565b9150613c5982613bf2565b604082019050919050565b60006020820190508181036000830152613c7d81613c41565b9050919050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000613ce0602983612fe1565b9150613ceb82613c84565b604082019050919050565b60006020820190508181036000830152613d0f81613cd3565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b6000613d72602a83612fe1565b9150613d7d82613d16565b604082019050919050565b60006020820190508181036000830152613da181613d65565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e35250000000000000000000000000000000000000000602082015250565b6000613e04602c83612fe1565b9150613e0f82613da8565b604082019050919050565b60006020820190508181036000830152613e3381613df7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e96602683612fe1565b9150613ea182613e3a565b604082019050919050565b60006020820190508181036000830152613ec581613e89565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f28602483612fe1565b9150613f3382613ecc565b604082019050919050565b60006020820190508181036000830152613f5781613f1b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fba602283612fe1565b9150613fc582613f5e565b604082019050919050565b60006020820190508181036000830152613fe981613fad565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061404c602983612fe1565b915061405782613ff0565b604082019050919050565b6000602082019050818103600083015261407b8161403f565b9050919050565b7f596f752061726520657863656564696e67206d61784275794c696d6974000000600082015250565b60006140b8601d83612fe1565b91506140c382614082565b602082019050919050565b600060208201905081810360008301526140e7816140ab565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d6974600082015250565b6000614124602083612fe1565b915061412f826140ee565b602082019050919050565b6000602082019050818103600083015261415381614117565b9050919050565b7f596f752061726520657863656564696e67206d617853656c6c4c696d69740000600082015250565b6000614190601e83612fe1565b915061419b8261415a565b602082019050919050565b600060208201905081810360008301526141bf81614183565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614200826130eb565b915061420b836130eb565b92508261421b5761421a6141c6565b5b828204905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614282602183612fe1565b915061428d82614226565b604082019050919050565b600060208201905081810360008301526142b181614275565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000614314602283612fe1565b915061431f826142b8565b604082019050919050565b6000602082019050818103600083015261434381614307565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614380601d83612fe1565b915061438b8261434a565b602082019050919050565b600060208201905081810360008301526143af81614373565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614412602583612fe1565b915061441d826143b6565b604082019050919050565b6000602082019050818103600083015261444181614405565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006144a4602383612fe1565b91506144af82614448565b604082019050919050565b600060208201905081810360008301526144d381614497565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614536602683612fe1565b9150614541826144da565b604082019050919050565b6000602082019050818103600083015261456581614529565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506145d9816130bf565b92915050565b6000602082840312156145f5576145f4613088565b5b6000614603848285016145ca565b91505092915050565b6000819050919050565b600061463161462c6146278461460c565b6133f2565b6130eb565b9050919050565b61464181614616565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61467c816130ad565b82525050565b600061468e8383614673565b60208301905092915050565b6000602082019050919050565b60006146b282614647565b6146bc8185614652565b93506146c783614663565b8060005b838110156146f85781516146df8882614682565b97506146ea8361469a565b9250506001810190506146cb565b5085935050505092915050565b600060a08201905061471a60008301886131f0565b6147276020830187614638565b818103604083015261473981866146a7565b905061474860608301856133c8565b61475560808301846131f0565b9695505050505050565b600060c08201905061477460008301896133c8565b61478160208301886131f0565b61478e6040830187614638565b61479b6060830186614638565b6147a860808301856133c8565b6147b560a08301846131f0565b979650505050505050565b6000815190506147cf816130f5565b92915050565b6000806000606084860312156147ee576147ed613088565b5b60006147fc868287016147c0565b935050602061480d868287016147c0565b925050604061481e868287016147c0565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061485e601d83612fe1565b915061486982614828565b602082019050919050565b6000602082019050818103600083015261488d81614851565b9050919050565b600081905092915050565b50565b60006148af600083614894565b91506148ba8261489f565b600082019050919050565b60006148d0826148a2565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614936603a83612fe1565b9150614941826148da565b604082019050919050565b6000602082019050818103600083015261496581614929565b905091905056fea2646970667358221220ea4acad8fd36696ad7863fa7c66fe42d18043604fb7d0858f15b05c194cbafa064736f6c63430008130033

Deployed Bytecode Sourcemap

16155:11234:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2653:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17935:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24715:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16394:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3773:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18104:448;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25782:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26251:258;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3615:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18560:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26088:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15574:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24875:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25188:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25482:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17102:43;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;16531:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16594:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16468:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3944:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13858:94;;;;;;;;;;;;;:::i;:::-;;17012:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;16662:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15984:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16816:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27043:288;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13635:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2872:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18816:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16282:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19234:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17154:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4563:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26517:518;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13960:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17055:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;16254:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16348:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2653:100;2707:13;2740:5;2733:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2653:100;:::o;17935:161::-;18010:4;18027:39;18036:12;:10;:12::i;:::-;18050:7;18059:6;18027:8;:39::i;:::-;18084:4;18077:11;;17935:161;;;;:::o;24715:152::-;13781:12;:10;:12::i;:::-;13770:23;;:7;:5;:7::i;:::-;:23;;;13762:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24854:5:::1;24833:18;;:26;;;;;;;;;;;;;;;;;;24715:152:::0;:::o;16394:67::-;;;;:::o;3773:108::-;3834:7;3861:12;;3854:19;;3773:108;:::o;18104:448::-;18236:4;18253:36;18263:6;18271:9;18282:6;18253:9;:36::i;:::-;18302:24;18329:11;:19;18341:6;18329:19;;;;;;;;;;;;;;;:33;18349:12;:10;:12::i;:::-;18329:33;;;;;;;;;;;;;;;;18302:60;;18401:6;18381:16;:26;;18373:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;18463:57;18472:6;18480:12;:10;:12::i;:::-;18513:6;18494:16;:25;;;;:::i;:::-;18463:8;:57::i;:::-;18540:4;18533:11;;;18104:448;;;;;:::o;25782:298::-;13781:12;:10;:12::i;:::-;13770:23;;:7;:5;:7::i;:::-;:23;;;13762:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25943:37:::1;;;;;;;;25949:10;25943:37;;;;25961:10;25943:37;;;;25974:5;25943:37;;::::0;25927:13:::1;:53;;;;;;;;;;;;;;;;;;;;;;;;;;;26036:2;26026:5;26013:10;26000;:23;;;;:::i;:::-;:31;;;;:::i;:::-;25999:39;;25991:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;25782:298:::0;;;:::o;26251:258::-;26342:7;;;;;;;;;;;26328:21;;:10;:21;;;26320:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;26416:1;26388:30;;:16;:30;;;26380:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;26485:16;26467:15;;:34;;;;;;;;;;;;;;;;;;26251:258;:::o;3615:93::-;3673:5;3698:2;3691:9;;3615:93;:::o;18560:248::-;18676:4;18698:80;18707:12;:10;:12::i;:::-;18721:7;18767:10;18730:11;:25;18742:12;:10;:12::i;:::-;18730:25;;;;;;;;;;;;;;;:34;18756:7;18730:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;18698:8;:80::i;:::-;18796:4;18789:11;;18560:248;;;;:::o;26088:155::-;13781:12;:10;:12::i;:::-;13770:23;;:7;:5;:7::i;:::-;:23;;;13762:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26200:9:::1;26183:6;;:27;;;;;;;;;;;;;;;;;;26228:7;26221:4;;:14;;;;;;;;;;;;;;;;;;26088:155:::0;;:::o;15574:91::-;15630:27;15636:12;:10;:12::i;:::-;15650:6;15630:5;:27::i;:::-;15574:91;:::o;24875:305::-;13781:12;:10;:12::i;:::-;13770:23;;:7;:5;:7::i;:::-;:23;;;13762:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25013:10:::1;24999;:24;;:42;;;;;25040:1;25027:10;:14;24999:42;24991:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;25162:10;:8;:10::i;:::-;25158:2;:14;;;;:::i;:::-;25145:10;:27;;;;:::i;:::-;25119:23;:53;;;;24875:305:::0;:::o;25188:286::-;13781:12;:10;:12::i;:::-;13770:23;;:7;:5;:7::i;:::-;:23;;;13762:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25336:37:::1;;;;;;;;25342:10;25336:37;;;;25354:10;25336:37;;;;25367:5;25336:37;;::::0;25328:5:::1;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;25430:2;25420:5;25406:10;25393;:23;;;;:::i;:::-;:32;;;;:::i;:::-;25392:40;;25384:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;25188:286:::0;;;:::o;25482:292::-;13781:12;:10;:12::i;:::-;13770:23;;:7;:5;:7::i;:::-;:23;;;13762:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25635:37:::1;;;;;;;;25641:10;25635:37;;;;25653:10;25635:37;;;;25666:5;25635:37;;::::0;25623:9:::1;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;25728:3;25718:5;25705:10;25692;:23;;;;:::i;:::-;:31;;;;:::i;:::-;25691:40;;25683:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;25482:292:::0;;;:::o;17102:43::-;;;;;;;;;;;;;;;;;;;:::o;16531:56::-;;;;:::o;16594:59::-;;;;:::o;16468:56::-;;;;:::o;3944:127::-;4018:7;4045:9;:18;4055:7;4045:18;;;;;;;;;;;;;;;;4038:25;;3944:127;;;:::o;13858:94::-;13781:12;:10;:12::i;:::-;13770:23;;:7;:5;:7::i;:::-;:23;;;13762:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13923:21:::1;13941:1;13923:9;:21::i;:::-;13858:94::o:0;17012:36::-;;;;;;;;;;;;;;;;;;;:::o;16662:75::-;;;;;;;;;;;;;:::o;15984:164::-;16061:46;16077:7;16086:12;:10;:12::i;:::-;16100:6;16061:15;:46::i;:::-;16118:22;16124:7;16133:6;16118:5;:22::i;:::-;15984:164;;:::o;16816:79::-;16853:42;16816:79;:::o;27043:288::-;27140:7;;;;;;;;;;;27126:21;;:10;:21;;;27118:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;27206:4;27186:25;;:8;:25;;;27178:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;27288:8;27281:25;;;27307:7;:5;:7::i;:::-;27316:6;27281:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27043:288;;:::o;13635:87::-;13681:7;13708:6;;;;;;;;;;;13701:13;;13635:87;:::o;2872:104::-;2928:13;2961:7;2954:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2872:104;:::o;18816:410::-;18937:4;18959:24;18986:11;:25;18998:12;:10;:12::i;:::-;18986:25;;;;;;;;;;;;;;;:34;19012:7;18986:34;;;;;;;;;;;;;;;;18959:61;;19059:15;19039:16;:35;;19031:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;19127:67;19136:12;:10;:12::i;:::-;19150:7;19178:15;19159:16;:34;;;;:::i;:::-;19127:8;:67::i;:::-;19214:4;19207:11;;;18816:410;;;;:::o;16282:19::-;;;;;;;;;;;;;:::o;19234:165::-;19312:4;19329:40;19339:10;19351:9;19362:6;19329:9;:40::i;:::-;19387:4;19380:11;;19234:165;;;;:::o;17154:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;4563:201::-;4697:7;4729:11;:18;4741:5;4729:18;;;;;;;;;;;;;;;:27;4748:7;4729:27;;;;;;;;;;;;;;;;4722:34;;4563:201;;;;:::o;26517:518::-;13781:12;:10;:12::i;:::-;13770:23;;:7;:5;:7::i;:::-;:23;;;13762:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26643:9:::1;26633:6;:19;;26625:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26728:9;26717:7;:20;;26709:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;26816:9;26803;:22;;26795:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;26912:10;:8;:10::i;:::-;26908:2;:14;;;;:::i;:::-;26899:6;:23;;;;:::i;:::-;26885:11;:37;;;;26962:10;:8;:10::i;:::-;26958:2;:14;;;;:::i;:::-;26948:7;:24;;;;:::i;:::-;26933:12;:39;;;;27016:10;:8;:10::i;:::-;27012:2;:14;;;;:::i;:::-;27000:9;:26;;;;:::i;:::-;26983:14;:43;;;;26517:518:::0;;;:::o;13960:192::-;13781:12;:10;:12::i;:::-;13770:23;;:7;:5;:7::i;:::-;:23;;;13762:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14069:1:::1;14049:22;;:8;:22;;::::0;14041:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14125:19;14135:8;14125:9;:19::i;:::-;13960:192:::0;:::o;17055:40::-;;;;;;;;;;;;;;;;;;;:::o;16254:21::-;;;;;;;;;;;;;:::o;16348:37::-;;;;;;;;;;;;;:::o;375:98::-;428:7;455:10;448:17;;375:98;:::o;11283:380::-;11436:1;11419:19;;:5;:19;;;11411:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11517:1;11498:21;;:7;:21;;;11490:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11601:6;11571:11;:18;11583:5;11571:18;;;;;;;;;;;;;;;:27;11590:7;11571:27;;;;;;;;;;;;;;;:36;;;;11639:7;11623:32;;11632:5;11623:32;;;11648:6;11623:32;;;;;;:::i;:::-;;;;;;;;11283:380;;;:::o;19407:2805::-;19557:1;19548:6;:10;19540:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19631:4;;;;;;;;;;;19621:14;;:6;:14;;;:39;;;;;19640:9;:20;19650:9;19640:20;;;;;;;;;;;;;;;;;;;;;;;;;19639:21;19621:39;:54;;;;;19665:10;;;;;;;;;;;19664:11;19621:54;19617:306;;;19710:11;;19700:6;:21;;19692:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;19829:14;;19819:6;19796:20;19806:9;19796;:20::i;:::-;:29;;;;:::i;:::-;:47;;19770:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;19617:306;19963:4;;;;;;;;;;;19953:14;;:6;:14;;;;:39;;;;;19972:9;:20;19982:9;19972:20;;;;;;;;;;;;;;;;;;;;;;;;;19971:21;19953:39;:61;;;;;19997:9;:17;20007:6;19997:17;;;;;;;;;;;;;;;;;;;;;;;;;19996:18;19953:61;:76;;;;;20019:10;;;;;;;;;;;20018:11;19953:76;19935:423;;;20074:12;;20064:6;:22;;20056:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;20153:4;;;;;;;;;;;20140:17;;:9;:17;;;20136:211;;20241:14;;20231:6;20208:20;20218:9;20208;:20::i;:::-;:29;;;;:::i;:::-;:47;;20178:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;20136:211;19935:423;20370:15;20396:14;20421:11;20443:15;20469:18;20498:25;;:::i;:::-;20611:10;;;;;;;;;;;:31;;;;20625:9;:17;20635:6;20625:17;;;;;;;;;;;;;;;;;;;;;;;;;20611:31;:55;;;;20646:9;:20;20656:9;20646:20;;;;;;;;;;;;;;;;;;;;;;;;;20611:55;20607:847;;;20687:1;20681:7;;20607:847;;;20752:4;;;;;;;;;;;20739:17;;:9;:17;;;20735:719;;20839:9;:19;;;20800:9;:19;;;:58;;;;:::i;:::-;20773:85;;20882:7;20873:16;;20914:9;:14;;;20904:24;;20958:9;20943:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20735:719;;;20999:4;;;;;;;;;;;20989:14;;:6;:14;;;20985:469;;21082:5;:15;;;21047:5;:15;;;:50;;;;:::i;:::-;21020:77;;21121:7;21112:16;;21153:5;:10;;;21143:20;;21193:5;21178:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20985:469;;;21301:13;:23;;;21258:13;:23;;;:66;;;;:::i;:::-;21231:93;;21349:7;21340:16;;21381:13;:18;;;21371:28;;21429:13;21414:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20985:469;20735:719;20607:847;21492:3;21482:6;21473;:15;;;;:::i;:::-;21472:23;;;;:::i;:::-;21466:29;;21540:3;21529:7;21520:6;:16;;;;:::i;:::-;21519:24;;;;:::i;:::-;21506:37;;21657:18;;;;;;;;;;;:36;;;;;21689:4;;;;;;;;;;;21679:14;;:6;:14;;;;21657:36;21653:72;;;21695:30;21703:7;21712:12;21695:7;:30::i;:::-;21653:72;21767:63;21783:6;21791:9;21818:10;21812:3;:16;;;;:::i;:::-;21802:6;:27;;;;:::i;:::-;21767:15;:63::i;:::-;21885:1;21872:10;:14;21869:77;;;21903:31;21915:6;21923:10;21903:11;:31::i;:::-;21869:77;21966:1;21960:3;:7;21956:249;;;22042:1;22032:7;:11;22028:164;;;22064:17;22105:3;22094:7;22085:6;:16;;;;:::i;:::-;22084:24;;;;:::i;:::-;22064:44;;22127:49;22143:6;22159:4;22166:9;22127:15;:49::i;:::-;22045:147;22028:164;21956:249;19529:2683;;;;;;19407:2805;;;:::o;10101:744::-;10204:1;10185:21;;:7;:21;;;10177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10257:54;10278:7;10295:6;10304;10257:20;:54::i;:::-;10324:22;10349:9;:18;10359:7;10349:18;;;;;;;;;;;;;;;;10324:43;;10404:6;10386:14;:24;;10378:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10523:6;10506:14;:23;10485:9;:18;10495:7;10485:18;;;;;;;;;;;;;;;:44;;;;10640:6;10624:12;;:22;;;;;;;;;;;10755:6;10729:42;;10738:7;10729:42;;;10764:6;10729:42;;;;;;:::i;:::-;;;;;;;;10784:53;10804:7;10821:6;10830;10784:19;:53::i;:::-;10166:679;10101:744;;:::o;14160:173::-;14216:16;14235:6;;;;;;;;;;;14216:25;;14261:8;14252:6;;:17;;;;;;;;;;;;;;;;;;14316:8;14285:40;;14306:8;14285:40;;;;;;;;;;;;14205:128;14160:173;:::o;5372:419::-;5473:24;5500:25;5510:5;5517:7;5500:9;:25::i;:::-;5473:52;;5560:17;5540:16;:37;5536:248;;5622:6;5602:16;:26;;5594:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5706:51;5715:5;5722:7;5750:6;5731:16;:25;5706:8;:51::i;:::-;5536:248;5462:329;5372:419;;;:::o;22220:1437::-;17243:10;;;;;;;;;;;17238:110;;17283:4;17270:10;;:17;;;;;;;;;;;;;;;;;;22325:1:::1;22314:7;:12:::0;22311:49;22342:7:::1;22311:49;22372:23;22398:24;22416:4;22398:9;:24::i;:::-;22372:50;;22456:23;;22437:15;:42;22433:1217;;22526:1;22500:23;;:27;22496:109;;;22566:23;;22548:41;;22496:109;22676:19;22708:1;22698:7;:11;;;;:::i;:::-;22676:33;;22724:32;22818:11;22778:9;:19;;;22760:15;:37;;;;:::i;:::-;22759:70;;;;:::i;:::-;22724:105;;22844:14;22879:24;22861:15;:42;;;;:::i;:::-;22844:59;;22920:22;22945:21;22920:46;;22983:24;23000:6;22983:16;:24::i;:::-;23024:20;23071:14;23047:21;:38;;;;:::i;:::-;23024:61;;23100:19;23152:9;:19;;;23138:11;:33;;;;:::i;:::-;23122:12;:50;;;;:::i;:::-;23100:72;;23187:29;23233:9;:19;;;23219:11;:33;;;;:::i;:::-;23187:65;;23297:1;23273:21;:25;23269:172;;;23364:61;23377:24;23403:21;23364:12;:61::i;:::-;23269:172;23457:20;23498:9;:19;;;23494:1;23480:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;23457:60;;23551:1;23536:12;:16;23532:105;;;23573:48;23608:12;23581:15;;;;;;;;;;;23573:34;;;;:48;;;;:::i;:::-;23532:105;22481:1169;;;;;;;;22433:1217;22298:1359;17302:1;17331:5:::0;17318:10;;:18;;;;;;;;;;;;;;;;;;17238:110;22220:1437;;:::o;8787:578::-;8945:1;8927:20;;:6;:20;;;8919:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9029:1;9008:23;;:9;:23;;;9000:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9084:21;9108:9;:17;9118:6;9108:17;;;;;;;;;;;;;;;;9084:41;;9161:6;9144:13;:23;;9136:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9257:6;9241:13;:22;;;;:::i;:::-;9221:9;:17;9231:6;9221:17;;;;;;;;;;;;;;;:42;;;;9298:6;9274:9;:20;9284:9;9274:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;9339:9;9322:35;;9331:6;9322:35;;;9350:6;9322:35;;;;;;:::i;:::-;;;;;;;;8908:457;8787:578;;;:::o;12263:91::-;;;;:::o;12958:90::-;;;;:::o;23665:534::-;23791:21;23829:1;23815:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23791:40;;23860:4;23842;23847:1;23842:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23886:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23876:4;23881:1;23876:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23912:53;23929:4;23944:6;;;;;;;;;;;23953:11;23912:8;:53::i;:::-;24004:6;;;;;;;;;;;:57;;;24076:11;24102:1;24118:4;24145;24165:15;24004:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23720:479;23665:534;:::o;24207:500::-;24355:53;24372:4;24387:6;;;;;;;;;;;24396:11;24355:8;:53::i;:::-;24451:6;;;;;;;;;;;:22;;;24482:9;24516:4;24536:11;24562:1;24605;16853:42;24673:15;24451:248;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24207:500;;:::o;13078:319::-;13193:6;13168:21;:31;;13160:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13247:12;13265:9;:14;;13288:6;13265:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13246:54;;;13319:7;13311:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;13149:248;13078:319;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::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;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:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:323::-;3763:6;3812:2;3800:9;3791:7;3787:23;3783:32;3780:119;;;3818:79;;:::i;:::-;3780:119;3938:1;3963:50;4005:7;3996:6;3985:9;3981:22;3963:50;:::i;:::-;3953:60;;3909:114;3707:323;;;;:::o;4036:118::-;4123:24;4141:5;4123:24;:::i;:::-;4118:3;4111:37;4036:118;;:::o;4160:222::-;4253:4;4291:2;4280:9;4276:18;4268:26;;4304:71;4372:1;4361:9;4357:17;4348:6;4304:71;:::i;:::-;4160:222;;;;:::o;4388:619::-;4465:6;4473;4481;4530:2;4518:9;4509:7;4505:23;4501:32;4498:119;;;4536:79;;:::i;:::-;4498:119;4656:1;4681:53;4726:7;4717:6;4706:9;4702:22;4681:53;:::i;:::-;4671:63;;4627:117;4783:2;4809:53;4854:7;4845:6;4834:9;4830:22;4809:53;:::i;:::-;4799:63;;4754:118;4911:2;4937:53;4982:7;4973:6;4962:9;4958:22;4937:53;:::i;:::-;4927:63;;4882:118;4388:619;;;;;:::o;5013:::-;5090:6;5098;5106;5155:2;5143:9;5134:7;5130:23;5126:32;5123:119;;;5161:79;;:::i;:::-;5123:119;5281:1;5306:53;5351:7;5342:6;5331:9;5327:22;5306:53;:::i;:::-;5296:63;;5252:117;5408:2;5434:53;5479:7;5470:6;5459:9;5455:22;5434:53;:::i;:::-;5424:63;;5379:118;5536:2;5562:53;5607:7;5598:6;5587:9;5583:22;5562:53;:::i;:::-;5552:63;;5507:118;5013:619;;;;;:::o;5638:329::-;5697:6;5746:2;5734:9;5725:7;5721:23;5717:32;5714:119;;;5752:79;;:::i;:::-;5714:119;5872:1;5897:53;5942:7;5933:6;5922:9;5918:22;5897:53;:::i;:::-;5887:63;;5843:117;5638:329;;;;:::o;5973:86::-;6008:7;6048:4;6041:5;6037:16;6026:27;;5973:86;;;:::o;6065:112::-;6148:22;6164:5;6148:22;:::i;:::-;6143:3;6136:35;6065:112;;:::o;6183:214::-;6272:4;6310:2;6299:9;6295:18;6287:26;;6323:67;6387:1;6376:9;6372:17;6363:6;6323:67;:::i;:::-;6183:214;;;;:::o;6403:474::-;6471:6;6479;6528:2;6516:9;6507:7;6503:23;6499:32;6496:119;;;6534:79;;:::i;:::-;6496:119;6654:1;6679:53;6724:7;6715:6;6704:9;6700:22;6679:53;:::i;:::-;6669:63;;6625:117;6781:2;6807:53;6852:7;6843:6;6832:9;6828:22;6807:53;:::i;:::-;6797:63;;6752:118;6403:474;;;;;:::o;6883:329::-;6942:6;6991:2;6979:9;6970:7;6966:23;6962:32;6959:119;;;6997:79;;:::i;:::-;6959:119;7117:1;7142:53;7187:7;7178:6;7167:9;7163:22;7142:53;:::i;:::-;7132:63;;7088:117;6883:329;;;;:::o;7218:442::-;7367:4;7405:2;7394:9;7390:18;7382:26;;7418:71;7486:1;7475:9;7471:17;7462:6;7418:71;:::i;:::-;7499:72;7567:2;7556:9;7552:18;7543:6;7499:72;:::i;:::-;7581;7649:2;7638:9;7634:18;7625:6;7581:72;:::i;:::-;7218:442;;;;;;:::o;7666:118::-;7753:24;7771:5;7753:24;:::i;:::-;7748:3;7741:37;7666:118;;:::o;7790:222::-;7883:4;7921:2;7910:9;7906:18;7898:26;;7934:71;8002:1;7991:9;7987:17;7978:6;7934:71;:::i;:::-;7790:222;;;;:::o;8018:60::-;8046:3;8067:5;8060:12;;8018:60;;;:::o;8084:142::-;8134:9;8167:53;8185:34;8194:24;8212:5;8194:24;:::i;:::-;8185:34;:::i;:::-;8167:53;:::i;:::-;8154:66;;8084:142;;;:::o;8232:126::-;8282:9;8315:37;8346:5;8315:37;:::i;:::-;8302:50;;8232:126;;;:::o;8364:141::-;8429:9;8462:37;8493:5;8462:37;:::i;:::-;8449:50;;8364:141;;;:::o;8511:161::-;8613:52;8659:5;8613:52;:::i;:::-;8608:3;8601:65;8511:161;;:::o;8678:252::-;8786:4;8824:2;8813:9;8809:18;8801:26;;8837:86;8920:1;8909:9;8905:17;8896:6;8837:86;:::i;:::-;8678:252;;;;:::o;8936:180::-;8984:77;8981:1;8974:88;9081:4;9078:1;9071:15;9105:4;9102:1;9095:15;9122:320;9166:6;9203:1;9197:4;9193:12;9183:22;;9250:1;9244:4;9240:12;9271:18;9261:81;;9327:4;9319:6;9315:17;9305:27;;9261:81;9389:2;9381:6;9378:14;9358:18;9355:38;9352:84;;9408:18;;:::i;:::-;9352:84;9173:269;9122:320;;;:::o;9448:182::-;9588:34;9584:1;9576:6;9572:14;9565:58;9448:182;:::o;9636:366::-;9778:3;9799:67;9863:2;9858:3;9799:67;:::i;:::-;9792:74;;9875:93;9964:3;9875:93;:::i;:::-;9993:2;9988:3;9984:12;9977:19;;9636:366;;;:::o;10008:419::-;10174:4;10212:2;10201:9;10197:18;10189:26;;10261:9;10255:4;10251:20;10247:1;10236:9;10232:17;10225:47;10289:131;10415:4;10289:131;:::i;:::-;10281:139;;10008:419;;;:::o;10433:227::-;10573:34;10569:1;10561:6;10557:14;10550:58;10642:10;10637:2;10629:6;10625:15;10618:35;10433:227;:::o;10666:366::-;10808:3;10829:67;10893:2;10888:3;10829:67;:::i;:::-;10822:74;;10905:93;10994:3;10905:93;:::i;:::-;11023:2;11018:3;11014:12;11007:19;;10666:366;;;:::o;11038:419::-;11204:4;11242:2;11231:9;11227:18;11219:26;;11291:9;11285:4;11281:20;11277:1;11266:9;11262:17;11255:47;11319:131;11445:4;11319:131;:::i;:::-;11311:139;;11038:419;;;:::o;11463:180::-;11511:77;11508:1;11501:88;11608:4;11605:1;11598:15;11632:4;11629:1;11622:15;11649:194;11689:4;11709:20;11727:1;11709:20;:::i;:::-;11704:25;;11743:20;11761:1;11743:20;:::i;:::-;11738:25;;11787:1;11784;11780:9;11772:17;;11811:1;11805:4;11802:11;11799:37;;;11816:18;;:::i;:::-;11799:37;11649:194;;;;:::o;11849:191::-;11889:3;11908:20;11926:1;11908:20;:::i;:::-;11903:25;;11942:20;11960:1;11942:20;:::i;:::-;11937:25;;11985:1;11982;11978:9;11971:16;;12006:3;12003:1;12000:10;11997:36;;;12013:18;;:::i;:::-;11997:36;11849:191;;;;:::o;12046:179::-;12186:31;12182:1;12174:6;12170:14;12163:55;12046:179;:::o;12231:366::-;12373:3;12394:67;12458:2;12453:3;12394:67;:::i;:::-;12387:74;;12470:93;12559:3;12470:93;:::i;:::-;12588:2;12583:3;12579:12;12572:19;;12231:366;;;:::o;12603:419::-;12769:4;12807:2;12796:9;12792:18;12784:26;;12856:9;12850:4;12846:20;12842:1;12831:9;12827:17;12820:47;12884:131;13010:4;12884:131;:::i;:::-;12876:139;;12603:419;;;:::o;13028:165::-;13168:17;13164:1;13156:6;13152:14;13145:41;13028:165;:::o;13199:366::-;13341:3;13362:67;13426:2;13421:3;13362:67;:::i;:::-;13355:74;;13438:93;13527:3;13438:93;:::i;:::-;13556:2;13551:3;13547:12;13540:19;;13199:366;;;:::o;13571:419::-;13737:4;13775:2;13764:9;13760:18;13752:26;;13824:9;13818:4;13814:20;13810:1;13799:9;13795:17;13788:47;13852:131;13978:4;13852:131;:::i;:::-;13844:139;;13571:419;;;:::o;13996:221::-;14136:34;14132:1;14124:6;14120:14;14113:58;14205:4;14200:2;14192:6;14188:15;14181:29;13996:221;:::o;14223:366::-;14365:3;14386:67;14450:2;14445:3;14386:67;:::i;:::-;14379:74;;14462:93;14551:3;14462:93;:::i;:::-;14580:2;14575:3;14571:12;14564:19;;14223:366;;;:::o;14595:419::-;14761:4;14799:2;14788:9;14784:18;14776:26;;14848:9;14842:4;14838:20;14834:1;14823:9;14819:17;14812:47;14876:131;15002:4;14876:131;:::i;:::-;14868:139;;14595:419;;;:::o;15020:249::-;15160:34;15156:1;15148:6;15144:14;15137:58;15229:32;15224:2;15216:6;15212:15;15205:57;15020:249;:::o;15275:366::-;15417:3;15438:67;15502:2;15497:3;15438:67;:::i;:::-;15431:74;;15514:93;15603:3;15514:93;:::i;:::-;15632:2;15627:3;15623:12;15616:19;;15275:366;;;:::o;15647:419::-;15813:4;15851:2;15840:9;15836:18;15828:26;;15900:9;15894:4;15890:20;15886:1;15875:9;15871:17;15864:47;15928:131;16054:4;15928:131;:::i;:::-;15920:139;;15647:419;;;:::o;16072:102::-;16114:8;16161:5;16158:1;16154:13;16133:34;;16072:102;;;:::o;16180:848::-;16241:5;16248:4;16272:6;16263:15;;16296:5;16287:14;;16310:712;16331:1;16321:8;16318:15;16310:712;;;16426:4;16421:3;16417:14;16411:4;16408:24;16405:50;;;16435:18;;:::i;:::-;16405:50;16485:1;16475:8;16471:16;16468:451;;;16900:4;16893:5;16889:16;16880:25;;16468:451;16950:4;16944;16940:15;16932:23;;16980:32;17003:8;16980:32;:::i;:::-;16968:44;;16310:712;;;16180:848;;;;;;;:::o;17034:1073::-;17088:5;17279:8;17269:40;;17300:1;17291:10;;17302:5;;17269:40;17328:4;17318:36;;17345:1;17336:10;;17347:5;;17318:36;17414:4;17462:1;17457:27;;;;17498:1;17493:191;;;;17407:277;;17457:27;17475:1;17466:10;;17477:5;;;17493:191;17538:3;17528:8;17525:17;17522:43;;;17545:18;;:::i;:::-;17522:43;17594:8;17591:1;17587:16;17578:25;;17629:3;17622:5;17619:14;17616:40;;;17636:18;;:::i;:::-;17616:40;17669:5;;;17407:277;;17793:2;17783:8;17780:16;17774:3;17768:4;17765:13;17761:36;17743:2;17733:8;17730:16;17725:2;17719:4;17716:12;17712:35;17696:111;17693:246;;;17849:8;17843:4;17839:19;17830:28;;17884:3;17877:5;17874:14;17871:40;;;17891:18;;:::i;:::-;17871:40;17924:5;;17693:246;17964:42;18002:3;17992:8;17986:4;17983:1;17964:42;:::i;:::-;17949:57;;;;18038:4;18033:3;18029:14;18022:5;18019:25;18016:51;;;18047:18;;:::i;:::-;18016:51;18096:4;18089:5;18085:16;18076:25;;17034:1073;;;;;;:::o;18113:281::-;18171:5;18195:23;18213:4;18195:23;:::i;:::-;18187:31;;18239:25;18255:8;18239:25;:::i;:::-;18227:37;;18283:104;18320:66;18310:8;18304:4;18283:104;:::i;:::-;18274:113;;18113:281;;;;:::o;18400:410::-;18440:7;18463:20;18481:1;18463:20;:::i;:::-;18458:25;;18497:20;18515:1;18497:20;:::i;:::-;18492:25;;18552:1;18549;18545:9;18574:30;18592:11;18574:30;:::i;:::-;18563:41;;18753:1;18744:7;18740:15;18737:1;18734:22;18714:1;18707:9;18687:83;18664:139;;18783:18;;:::i;:::-;18664:139;18448:362;18400:410;;;;:::o;18816:179::-;18956:31;18952:1;18944:6;18940:14;18933:55;18816:179;:::o;19001:366::-;19143:3;19164:67;19228:2;19223:3;19164:67;:::i;:::-;19157:74;;19240:93;19329:3;19240:93;:::i;:::-;19358:2;19353:3;19349:12;19342:19;;19001:366;;;:::o;19373:419::-;19539:4;19577:2;19566:9;19562:18;19554:26;;19626:9;19620:4;19616:20;19612:1;19601:9;19597:17;19590:47;19654:131;19780:4;19654:131;:::i;:::-;19646:139;;19373:419;;;:::o;19798:180::-;19938:32;19934:1;19926:6;19922:14;19915:56;19798:180;:::o;19984:366::-;20126:3;20147:67;20211:2;20206:3;20147:67;:::i;:::-;20140:74;;20223:93;20312:3;20223:93;:::i;:::-;20341:2;20336:3;20332:12;20325:19;;19984:366;;;:::o;20356:419::-;20522:4;20560:2;20549:9;20545:18;20537:26;;20609:9;20603:4;20599:20;20595:1;20584:9;20580:17;20573:47;20637:131;20763:4;20637:131;:::i;:::-;20629:139;;20356:419;;;:::o;20781:241::-;20921:34;20917:1;20909:6;20905:14;20898:58;20990:24;20985:2;20977:6;20973:15;20966:49;20781:241;:::o;21028:366::-;21170:3;21191:67;21255:2;21250:3;21191:67;:::i;:::-;21184:74;;21267:93;21356:3;21267:93;:::i;:::-;21385:2;21380:3;21376:12;21369:19;;21028:366;;;:::o;21400:419::-;21566:4;21604:2;21593:9;21589:18;21581:26;;21653:9;21647:4;21643:20;21639:1;21628:9;21624:17;21617:47;21681:131;21807:4;21681:131;:::i;:::-;21673:139;;21400:419;;;:::o;21825:332::-;21946:4;21984:2;21973:9;21969:18;21961:26;;21997:71;22065:1;22054:9;22050:17;22041:6;21997:71;:::i;:::-;22078:72;22146:2;22135:9;22131:18;22122:6;22078:72;:::i;:::-;21825:332;;;;;:::o;22163:137::-;22217:5;22248:6;22242:13;22233:22;;22264:30;22288:5;22264:30;:::i;:::-;22163:137;;;;:::o;22306:345::-;22373:6;22422:2;22410:9;22401:7;22397:23;22393:32;22390:119;;;22428:79;;:::i;:::-;22390:119;22548:1;22573:61;22626:7;22617:6;22606:9;22602:22;22573:61;:::i;:::-;22563:71;;22519:125;22306:345;;;;:::o;22657:224::-;22797:34;22793:1;22785:6;22781:14;22774:58;22866:7;22861:2;22853:6;22849:15;22842:32;22657:224;:::o;22887:366::-;23029:3;23050:67;23114:2;23109:3;23050:67;:::i;:::-;23043:74;;23126:93;23215:3;23126:93;:::i;:::-;23244:2;23239:3;23235:12;23228:19;;22887:366;;;:::o;23259:419::-;23425:4;23463:2;23452:9;23448:18;23440:26;;23512:9;23506:4;23502:20;23498:1;23487:9;23483:17;23476:47;23540:131;23666:4;23540:131;:::i;:::-;23532:139;;23259:419;;;:::o;23684:228::-;23824:34;23820:1;23812:6;23808:14;23801:58;23893:11;23888:2;23880:6;23876:15;23869:36;23684:228;:::o;23918:366::-;24060:3;24081:67;24145:2;24140:3;24081:67;:::i;:::-;24074:74;;24157:93;24246:3;24157:93;:::i;:::-;24275:2;24270:3;24266:12;24259:19;;23918:366;;;:::o;24290:419::-;24456:4;24494:2;24483:9;24479:18;24471:26;;24543:9;24537:4;24533:20;24529:1;24518:9;24514:17;24507:47;24571:131;24697:4;24571:131;:::i;:::-;24563:139;;24290:419;;;:::o;24715:229::-;24855:34;24851:1;24843:6;24839:14;24832:58;24924:12;24919:2;24911:6;24907:15;24900:37;24715:229;:::o;24950:366::-;25092:3;25113:67;25177:2;25172:3;25113:67;:::i;:::-;25106:74;;25189:93;25278:3;25189:93;:::i;:::-;25307:2;25302:3;25298:12;25291:19;;24950:366;;;:::o;25322:419::-;25488:4;25526:2;25515:9;25511:18;25503:26;;25575:9;25569:4;25565:20;25561:1;25550:9;25546:17;25539:47;25603:131;25729:4;25603:131;:::i;:::-;25595:139;;25322:419;;;:::o;25747:231::-;25887:34;25883:1;25875:6;25871:14;25864:58;25956:14;25951:2;25943:6;25939:15;25932:39;25747:231;:::o;25984:366::-;26126:3;26147:67;26211:2;26206:3;26147:67;:::i;:::-;26140:74;;26223:93;26312:3;26223:93;:::i;:::-;26341:2;26336:3;26332:12;26325:19;;25984:366;;;:::o;26356:419::-;26522:4;26560:2;26549:9;26545:18;26537:26;;26609:9;26603:4;26599:20;26595:1;26584:9;26580:17;26573:47;26637:131;26763:4;26637:131;:::i;:::-;26629:139;;26356:419;;;:::o;26781:225::-;26921:34;26917:1;26909:6;26905:14;26898:58;26990:8;26985:2;26977:6;26973:15;26966:33;26781:225;:::o;27012:366::-;27154:3;27175:67;27239:2;27234:3;27175:67;:::i;:::-;27168:74;;27251:93;27340:3;27251:93;:::i;:::-;27369:2;27364:3;27360:12;27353:19;;27012:366;;;:::o;27384:419::-;27550:4;27588:2;27577:9;27573:18;27565:26;;27637:9;27631:4;27627:20;27623:1;27612:9;27608:17;27601:47;27665:131;27791:4;27665:131;:::i;:::-;27657:139;;27384:419;;;:::o;27809:223::-;27949:34;27945:1;27937:6;27933:14;27926:58;28018:6;28013:2;28005:6;28001:15;27994:31;27809:223;:::o;28038:366::-;28180:3;28201:67;28265:2;28260:3;28201:67;:::i;:::-;28194:74;;28277:93;28366:3;28277:93;:::i;:::-;28395:2;28390:3;28386:12;28379:19;;28038:366;;;:::o;28410:419::-;28576:4;28614:2;28603:9;28599:18;28591:26;;28663:9;28657:4;28653:20;28649:1;28638:9;28634:17;28627:47;28691:131;28817:4;28691:131;:::i;:::-;28683:139;;28410:419;;;:::o;28835:221::-;28975:34;28971:1;28963:6;28959:14;28952:58;29044:4;29039:2;29031:6;29027:15;29020:29;28835:221;:::o;29062:366::-;29204:3;29225:67;29289:2;29284:3;29225:67;:::i;:::-;29218:74;;29301:93;29390:3;29301:93;:::i;:::-;29419:2;29414:3;29410:12;29403:19;;29062:366;;;:::o;29434:419::-;29600:4;29638:2;29627:9;29623:18;29615:26;;29687:9;29681:4;29677:20;29673:1;29662:9;29658:17;29651:47;29715:131;29841:4;29715:131;:::i;:::-;29707:139;;29434:419;;;:::o;29859:228::-;29999:34;29995:1;29987:6;29983:14;29976:58;30068:11;30063:2;30055:6;30051:15;30044:36;29859:228;:::o;30093:366::-;30235:3;30256:67;30320:2;30315:3;30256:67;:::i;:::-;30249:74;;30332:93;30421:3;30332:93;:::i;:::-;30450:2;30445:3;30441:12;30434:19;;30093:366;;;:::o;30465:419::-;30631:4;30669:2;30658:9;30654:18;30646:26;;30718:9;30712:4;30708:20;30704:1;30693:9;30689:17;30682:47;30746:131;30872:4;30746:131;:::i;:::-;30738:139;;30465:419;;;:::o;30890:179::-;31030:31;31026:1;31018:6;31014:14;31007:55;30890:179;:::o;31075:366::-;31217:3;31238:67;31302:2;31297:3;31238:67;:::i;:::-;31231:74;;31314:93;31403:3;31314:93;:::i;:::-;31432:2;31427:3;31423:12;31416:19;;31075:366;;;:::o;31447:419::-;31613:4;31651:2;31640:9;31636:18;31628:26;;31700:9;31694:4;31690:20;31686:1;31675:9;31671:17;31664:47;31728:131;31854:4;31728:131;:::i;:::-;31720:139;;31447:419;;;:::o;31872:182::-;32012:34;32008:1;32000:6;31996:14;31989:58;31872:182;:::o;32060:366::-;32202:3;32223:67;32287:2;32282:3;32223:67;:::i;:::-;32216:74;;32299:93;32388:3;32299:93;:::i;:::-;32417:2;32412:3;32408:12;32401:19;;32060:366;;;:::o;32432:419::-;32598:4;32636:2;32625:9;32621:18;32613:26;;32685:9;32679:4;32675:20;32671:1;32660:9;32656:17;32649:47;32713:131;32839:4;32713:131;:::i;:::-;32705:139;;32432:419;;;:::o;32857:180::-;32997:32;32993:1;32985:6;32981:14;32974:56;32857:180;:::o;33043:366::-;33185:3;33206:67;33270:2;33265:3;33206:67;:::i;:::-;33199:74;;33282:93;33371:3;33282:93;:::i;:::-;33400:2;33395:3;33391:12;33384:19;;33043:366;;;:::o;33415:419::-;33581:4;33619:2;33608:9;33604:18;33596:26;;33668:9;33662:4;33658:20;33654:1;33643:9;33639:17;33632:47;33696:131;33822:4;33696:131;:::i;:::-;33688:139;;33415:419;;;:::o;33840:180::-;33888:77;33885:1;33878:88;33985:4;33982:1;33975:15;34009:4;34006:1;33999:15;34026:185;34066:1;34083:20;34101:1;34083:20;:::i;:::-;34078:25;;34117:20;34135:1;34117:20;:::i;:::-;34112:25;;34156:1;34146:35;;34161:18;;:::i;:::-;34146:35;34203:1;34200;34196:9;34191:14;;34026:185;;;;:::o;34217:220::-;34357:34;34353:1;34345:6;34341:14;34334:58;34426:3;34421:2;34413:6;34409:15;34402:28;34217:220;:::o;34443:366::-;34585:3;34606:67;34670:2;34665:3;34606:67;:::i;:::-;34599:74;;34682:93;34771:3;34682:93;:::i;:::-;34800:2;34795:3;34791:12;34784:19;;34443:366;;;:::o;34815:419::-;34981:4;35019:2;35008:9;35004:18;34996:26;;35068:9;35062:4;35058:20;35054:1;35043:9;35039:17;35032:47;35096:131;35222:4;35096:131;:::i;:::-;35088:139;;34815:419;;;:::o;35240:221::-;35380:34;35376:1;35368:6;35364:14;35357:58;35449:4;35444:2;35436:6;35432:15;35425:29;35240:221;:::o;35467:366::-;35609:3;35630:67;35694:2;35689:3;35630:67;:::i;:::-;35623:74;;35706:93;35795:3;35706:93;:::i;:::-;35824:2;35819:3;35815:12;35808:19;;35467:366;;;:::o;35839:419::-;36005:4;36043:2;36032:9;36028:18;36020:26;;36092:9;36086:4;36082:20;36078:1;36067:9;36063:17;36056:47;36120:131;36246:4;36120:131;:::i;:::-;36112:139;;35839:419;;;:::o;36264:179::-;36404:31;36400:1;36392:6;36388:14;36381:55;36264:179;:::o;36449:366::-;36591:3;36612:67;36676:2;36671:3;36612:67;:::i;:::-;36605:74;;36688:93;36777:3;36688:93;:::i;:::-;36806:2;36801:3;36797:12;36790:19;;36449:366;;;:::o;36821:419::-;36987:4;37025:2;37014:9;37010:18;37002:26;;37074:9;37068:4;37064:20;37060:1;37049:9;37045:17;37038:47;37102:131;37228:4;37102:131;:::i;:::-;37094:139;;36821:419;;;:::o;37246:224::-;37386:34;37382:1;37374:6;37370:14;37363:58;37455:7;37450:2;37442:6;37438:15;37431:32;37246:224;:::o;37476:366::-;37618:3;37639:67;37703:2;37698:3;37639:67;:::i;:::-;37632:74;;37715:93;37804:3;37715:93;:::i;:::-;37833:2;37828:3;37824:12;37817:19;;37476:366;;;:::o;37848:419::-;38014:4;38052:2;38041:9;38037:18;38029:26;;38101:9;38095:4;38091:20;38087:1;38076:9;38072:17;38065:47;38129:131;38255:4;38129:131;:::i;:::-;38121:139;;37848:419;;;:::o;38273:222::-;38413:34;38409:1;38401:6;38397:14;38390:58;38482:5;38477:2;38469:6;38465:15;38458:30;38273:222;:::o;38501:366::-;38643:3;38664:67;38728:2;38723:3;38664:67;:::i;:::-;38657:74;;38740:93;38829:3;38740:93;:::i;:::-;38858:2;38853:3;38849:12;38842:19;;38501:366;;;:::o;38873:419::-;39039:4;39077:2;39066:9;39062:18;39054:26;;39126:9;39120:4;39116:20;39112:1;39101:9;39097:17;39090:47;39154:131;39280:4;39154:131;:::i;:::-;39146:139;;38873:419;;;:::o;39298:225::-;39438:34;39434:1;39426:6;39422:14;39415:58;39507:8;39502:2;39494:6;39490:15;39483:33;39298:225;:::o;39529:366::-;39671:3;39692:67;39756:2;39751:3;39692:67;:::i;:::-;39685:74;;39768:93;39857:3;39768:93;:::i;:::-;39886:2;39881:3;39877:12;39870:19;;39529:366;;;:::o;39901:419::-;40067:4;40105:2;40094:9;40090:18;40082:26;;40154:9;40148:4;40144:20;40140:1;40129:9;40125:17;40118:47;40182:131;40308:4;40182:131;:::i;:::-;40174:139;;39901:419;;;:::o;40326:180::-;40374:77;40371:1;40364:88;40471:4;40468:1;40461:15;40495:4;40492:1;40485:15;40512:180;40560:77;40557:1;40550:88;40657:4;40654:1;40647:15;40681:4;40678:1;40671:15;40698:143;40755:5;40786:6;40780:13;40771:22;;40802:33;40829:5;40802:33;:::i;:::-;40698:143;;;;:::o;40847:351::-;40917:6;40966:2;40954:9;40945:7;40941:23;40937:32;40934:119;;;40972:79;;:::i;:::-;40934:119;41092:1;41117:64;41173:7;41164:6;41153:9;41149:22;41117:64;:::i;:::-;41107:74;;41063:128;40847:351;;;;:::o;41204:85::-;41249:7;41278:5;41267:16;;41204:85;;;:::o;41295:158::-;41353:9;41386:61;41404:42;41413:32;41439:5;41413:32;:::i;:::-;41404:42;:::i;:::-;41386:61;:::i;:::-;41373:74;;41295:158;;;:::o;41459:147::-;41554:45;41593:5;41554:45;:::i;:::-;41549:3;41542:58;41459:147;;:::o;41612:114::-;41679:6;41713:5;41707:12;41697:22;;41612:114;;;:::o;41732:184::-;41831:11;41865:6;41860:3;41853:19;41905:4;41900:3;41896:14;41881:29;;41732:184;;;;:::o;41922:132::-;41989:4;42012:3;42004:11;;42042:4;42037:3;42033:14;42025:22;;41922:132;;;:::o;42060:108::-;42137:24;42155:5;42137:24;:::i;:::-;42132:3;42125:37;42060:108;;:::o;42174:179::-;42243:10;42264:46;42306:3;42298:6;42264:46;:::i;:::-;42342:4;42337:3;42333:14;42319:28;;42174:179;;;;:::o;42359:113::-;42429:4;42461;42456:3;42452:14;42444:22;;42359:113;;;:::o;42508:732::-;42627:3;42656:54;42704:5;42656:54;:::i;:::-;42726:86;42805:6;42800:3;42726:86;:::i;:::-;42719:93;;42836:56;42886:5;42836:56;:::i;:::-;42915:7;42946:1;42931:284;42956:6;42953:1;42950:13;42931:284;;;43032:6;43026:13;43059:63;43118:3;43103:13;43059:63;:::i;:::-;43052:70;;43145:60;43198:6;43145:60;:::i;:::-;43135:70;;42991:224;42978:1;42975;42971:9;42966:14;;42931:284;;;42935:14;43231:3;43224:10;;42632:608;;;42508:732;;;;:::o;43246:831::-;43509:4;43547:3;43536:9;43532:19;43524:27;;43561:71;43629:1;43618:9;43614:17;43605:6;43561:71;:::i;:::-;43642:80;43718:2;43707:9;43703:18;43694:6;43642:80;:::i;:::-;43769:9;43763:4;43759:20;43754:2;43743:9;43739:18;43732:48;43797:108;43900:4;43891:6;43797:108;:::i;:::-;43789:116;;43915:72;43983:2;43972:9;43968:18;43959:6;43915:72;:::i;:::-;43997:73;44065:3;44054:9;44050:19;44041:6;43997:73;:::i;:::-;43246:831;;;;;;;;:::o;44083:807::-;44332:4;44370:3;44359:9;44355:19;44347:27;;44384:71;44452:1;44441:9;44437:17;44428:6;44384:71;:::i;:::-;44465:72;44533:2;44522:9;44518:18;44509:6;44465:72;:::i;:::-;44547:80;44623:2;44612:9;44608:18;44599:6;44547:80;:::i;:::-;44637;44713:2;44702:9;44698:18;44689:6;44637:80;:::i;:::-;44727:73;44795:3;44784:9;44780:19;44771:6;44727:73;:::i;:::-;44810;44878:3;44867:9;44863:19;44854:6;44810:73;:::i;:::-;44083:807;;;;;;;;;:::o;44896:143::-;44953:5;44984:6;44978:13;44969:22;;45000:33;45027:5;45000:33;:::i;:::-;44896:143;;;;:::o;45045:663::-;45133:6;45141;45149;45198:2;45186:9;45177:7;45173:23;45169:32;45166:119;;;45204:79;;:::i;:::-;45166:119;45324:1;45349:64;45405:7;45396:6;45385:9;45381:22;45349:64;:::i;:::-;45339:74;;45295:128;45462:2;45488:64;45544:7;45535:6;45524:9;45520:22;45488:64;:::i;:::-;45478:74;;45433:129;45601:2;45627:64;45683:7;45674:6;45663:9;45659:22;45627:64;:::i;:::-;45617:74;;45572:129;45045:663;;;;;:::o;45714:179::-;45854:31;45850:1;45842:6;45838:14;45831:55;45714:179;:::o;45899:366::-;46041:3;46062:67;46126:2;46121:3;46062:67;:::i;:::-;46055:74;;46138:93;46227:3;46138:93;:::i;:::-;46256:2;46251:3;46247:12;46240:19;;45899:366;;;:::o;46271:419::-;46437:4;46475:2;46464:9;46460:18;46452:26;;46524:9;46518:4;46514:20;46510:1;46499:9;46495:17;46488:47;46552:131;46678:4;46552:131;:::i;:::-;46544:139;;46271:419;;;:::o;46696:147::-;46797:11;46834:3;46819:18;;46696:147;;;;:::o;46849:114::-;;:::o;46969:398::-;47128:3;47149:83;47230:1;47225:3;47149:83;:::i;:::-;47142:90;;47241:93;47330:3;47241:93;:::i;:::-;47359:1;47354:3;47350:11;47343:18;;46969:398;;;:::o;47373:379::-;47557:3;47579:147;47722:3;47579:147;:::i;:::-;47572:154;;47743:3;47736:10;;47373:379;;;:::o;47758:245::-;47898:34;47894:1;47886:6;47882:14;47875:58;47967:28;47962:2;47954:6;47950:15;47943:53;47758:245;:::o;48009:366::-;48151:3;48172:67;48236:2;48231:3;48172:67;:::i;:::-;48165:74;;48248:93;48337:3;48248:93;:::i;:::-;48366:2;48361:3;48357:12;48350:19;;48009:366;;;:::o;48381:419::-;48547:4;48585:2;48574:9;48570:18;48562:26;;48634:9;48628:4;48624:20;48620:1;48609:9;48605:17;48598:47;48662:131;48788:4;48662:131;:::i;:::-;48654:139;;48381:419;;;:::o

Swarm Source

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