ETH Price: $3,361.36 (-1.67%)
Gas: 11 Gwei

Token

Wapple (WAPPLE)
 

Overview

Max Total Supply

1,000,000,000 WAPPLE

Holders

984

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
111,718.580050080540285098 WAPPLE

Value
$0.00
0xe551d6eb69de620370b5f63c8da0f4e31a1c2e99
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:
Wapple

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-17
*/

/**
https://wapple.care
https://x.com/wappleerc20
https://t.me/wappleerc20
https://www.tiktok.com/@wapplewapple

**/


// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
pragma experimental ABIEncoderV2;

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

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

contract Ownable is Context {
    address private _owner;

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

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

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

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

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

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

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

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

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

interface 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) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

    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"
        );
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

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

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

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

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

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(
        address to
    ) external returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);

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

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

//  Main Token Contract
contract Wapple is ERC20, Ownable {
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address public marketingWallet;
    address public devWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    bool public limitsInEffect = true;
    bool public swapEnabled = false;
    bool public tradingActive = false;

    uint256 public launchedAt;
    uint256 public launchedAtTimestamp;

    uint256 public buyTotalFees = 25;
    uint256 public buyMarketingFee = 25;
    uint256 public buyDevFee = 0;

    uint256 public sellTotalFees = 50;
    uint256 public sellMarketingFee = 50;
    uint256 public sellDevFee = 0;

    uint256 tokensForMarketing;
    uint256 tokenForDev;

    /******************/

    // exlcude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;
    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event marketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event devWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    constructor() ERC20("Wapple", "WAPPLE") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 totalSupply = 1_000_000_000 * 1e18; // 1 billion

        maxTransactionAmount = 20_000_000 * 1e18; // 2%   of total supply is maxTransactionAmountTxn
        maxWallet = 20_000_000 * 1e18; // 3 % of total supply is  maxWallet
        swapTokensAtAmount = 1_000_000 * 1e18; //.1% at start

        marketingWallet = address(msg.sender); // set as marketing wallet
        devWallet = address(msg.sender); // set as dev wallet
        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);

        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);

        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(owner(), totalSupply);
    }

    receive() external payable {}

    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() public onlyOwner {
        require(launchedAt == 0, "Already launched boi");
        launchedAt = block.number;
        launchedAtTimestamp = block.timestamp;
        tradingActive = true;
        swapEnabled = true;
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(
        uint256 newAmount
    ) external onlyOwner returns (bool) {
        swapTokensAtAmount = newAmount * (10 ** 18);
        return true;
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        maxTransactionAmount = newNum * (10 ** 18);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        maxWallet = newNum * (10 ** 18);
    }

    function excludeFromMaxTransaction(
        address updAds,
        bool isEx
    ) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _devFee
    ) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyDevFee;
    }

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _devFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellDevFee;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function setAutomatedMarketMakerPair(
        address pair,
        bool value
    ) public onlyOwner {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateMarketingWallet(
        address newMarketingWallet
    ) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }
                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = (amount * sellTotalFees) / 100;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
                tokenForDev += (fees * sellDevFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = (amount * buyTotalFees) / 100;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
                tokenForDev += (fees * buyDevFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

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

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForMarketing + tokenForDev;
        bool success;

        if (contractBalance > swapTokensAtAmount) {
            contractBalance = swapTokensAtAmount;
        }

        uint256 amountToSwapForETH = contractBalance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = (address(this).balance);
        uint256 ethForDev = (ethBalance * tokenForDev) / totalTokensToSwap;

        tokensForMarketing = 0;
        tokenForDev = 0;

        (success, ) = address(devWallet).call{value: ethForDev}("");
        (success, ) = address(marketingWallet).call{
            value: address(this).balance
        }("");
    }

    function withdrawETH(uint256 _amount) external onlyOwner {
        require(address(this).balance >= _amount, "Invalid Amount");
        payable(msg.sender).transfer(_amount);
    }

    function withdrawToken(IERC20 _token, uint256 _amount) external onlyOwner {
        require(_token.balanceOf(address(this)) >= _amount, "Invalid Amount");
        _token.transfer(msg.sender, _amount);
    }
}

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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","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":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAtTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055506019600e556019600f5560006010556032601155603260125560006013553480156200008057600080fd5b506040518060400160405280600681526020017f576170706c6500000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f574150504c4500000000000000000000000000000000000000000000000000008152508160039081620000fe919062000c93565b50806004908162000110919062000c93565b5050506200013362000127620004da60201b60201c565b620004e260201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200015f816001620005a860201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000205919062000de4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000293919062000de4565b6040518363ffffffff1660e01b8152600401620002b292919062000e27565b6020604051808303816000875af1158015620002d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f8919062000de4565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200034060a0516001620005a860201b60201c565b6200035560a05160016200069260201b60201c565b60006b033b2e3c9fd0803ce800000090506a108b2a2c280290940000006008819055506a108b2a2c28029094000000600a8190555069d3c21bcecceda100000060098190555033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200043f620004316200073360201b60201c565b60016200075d60201b60201c565b620004523060016200075d60201b60201c565b6200046761dead60016200075d60201b60201c565b620004896200047b6200073360201b60201c565b6001620005a860201b60201c565b6200049c306001620005a860201b60201c565b620004b161dead6001620005a860201b60201c565b620004d2620004c56200073360201b60201c565b826200089760201b60201c565b50506200101b565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005b8620004da60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005de6200073360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000637576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200062e9062000eb5565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200076d620004da60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007936200073360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007ec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007e39062000eb5565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200088b919062000ef4565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000909576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009009062000f61565b60405180910390fd5b6200091d6000838362000a0f60201b60201c565b806002600082825462000931919062000fb2565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000988919062000fb2565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009ef919062000ffe565b60405180910390a362000a0b6000838362000a1460201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a9b57607f821691505b60208210810362000ab15762000ab062000a53565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b1b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000adc565b62000b27868362000adc565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b7462000b6e62000b688462000b3f565b62000b49565b62000b3f565b9050919050565b6000819050919050565b62000b908362000b53565b62000ba862000b9f8262000b7b565b84845462000ae9565b825550505050565b600090565b62000bbf62000bb0565b62000bcc81848462000b85565b505050565b5b8181101562000bf45762000be860008262000bb5565b60018101905062000bd2565b5050565b601f82111562000c435762000c0d8162000ab7565b62000c188462000acc565b8101602085101562000c28578190505b62000c4062000c378562000acc565b83018262000bd1565b50505b505050565b600082821c905092915050565b600062000c686000198460080262000c48565b1980831691505092915050565b600062000c83838362000c55565b9150826002028217905092915050565b62000c9e8262000a19565b67ffffffffffffffff81111562000cba5762000cb962000a24565b5b62000cc6825462000a82565b62000cd382828562000bf8565b600060209050601f83116001811462000d0b576000841562000cf6578287015190505b62000d02858262000c75565b86555062000d72565b601f19841662000d1b8662000ab7565b60005b8281101562000d455784890151825560018201915060208501945060208101905062000d1e565b8683101562000d65578489015162000d61601f89168262000c55565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000dac8262000d7f565b9050919050565b62000dbe8162000d9f565b811462000dca57600080fd5b50565b60008151905062000dde8162000db3565b92915050565b60006020828403121562000dfd5762000dfc62000d7a565b5b600062000e0d8482850162000dcd565b91505092915050565b62000e218162000d9f565b82525050565b600060408201905062000e3e600083018562000e16565b62000e4d602083018462000e16565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000e9d60208362000e54565b915062000eaa8262000e65565b602082019050919050565b6000602082019050818103600083015262000ed08162000e8e565b9050919050565b60008115159050919050565b62000eee8162000ed7565b82525050565b600060208201905062000f0b600083018462000ee3565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000f49601f8362000e54565b915062000f568262000f11565b602082019050919050565b6000602082019050818103600083015262000f7c8162000f3a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000fbf8262000b3f565b915062000fcc8362000b3f565b925082820190508082111562000fe75762000fe662000f83565b5b92915050565b62000ff88162000b3f565b82525050565b600060208201905062001015600083018462000fed565b92915050565b60805160a0516147dc6200105d6000396000818161123c01526117f6015260008181610e860152818161341d015281816134fe015261352501526147dc6000f3fe6080604052600436106102e85760003560e01c80638da5cb5b11610190578063bbc0c742116100dc578063d257b34f11610095578063e2f456051161006f578063e2f4560514610b61578063f14210a614610b8c578063f2fde38b14610bb5578063f8b45b0514610bde576102ef565b8063d257b34f14610abc578063d85ba06314610af9578063dd62ed3e14610b24576102ef565b8063bbc0c742146109be578063bf56b371146109e9578063c024666814610a14578063c18bc19514610a3d578063c6d2577d14610a66578063c8c8ebe414610a91576102ef565b80639c3b4fdc11610149578063a457c2d711610123578063a457c2d7146108de578063a9059cbb1461091b578063aacebbe314610958578063b62496f514610981576102ef565b80639c3b4fdc1461085f5780639e281a981461088a578063a0d82dc5146108b3576102ef565b80638da5cb5b146107615780638ea5220f1461078c57806392136913146107b7578063924de9b7146107e257806395d89b411461080b5780639a7a23d614610836576102ef565b8063395093511161024f5780636ddd171311610208578063751039fc116101e2578063751039fc146106b75780637571336a146106e257806375f0a8741461070b5780637bce5a0414610736576102ef565b80636ddd17131461063857806370a0823114610663578063715018a6146106a0576102ef565b8063395093511461051457806349bd5a5e146105515780634a62bb651461057c5780634fbee193146105a757806366ca9b83146105e45780636a486a8e1461060d576102ef565b806318160ddd116102a157806318160ddd146104045780631816467f1461042f578063203e727e1461045857806323b872dd1461048157806327c8f835146104be578063313ce567146104e9576102ef565b806301339c21146102f457806302dbd8f81461030b57806306fdde0314610334578063095ea7b31461035f57806310d5de531461039c5780631694505e146103d9576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610c09565b005b34801561031757600080fd5b50610332600480360381019061032d91906135f6565b610d10565b005b34801561034057600080fd5b50610349610db4565b60405161035691906136c6565b60405180910390f35b34801561036b57600080fd5b5061038660048036038101906103819190613746565b610e46565b60405161039391906137a1565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be91906137bc565b610e64565b6040516103d091906137a1565b60405180910390f35b3480156103e557600080fd5b506103ee610e84565b6040516103fb9190613848565b60405180910390f35b34801561041057600080fd5b50610419610ea8565b6040516104269190613872565b60405180910390f35b34801561043b57600080fd5b50610456600480360381019061045191906137bc565b610eb2565b005b34801561046457600080fd5b5061047f600480360381019061047a919061388d565b610fee565b005b34801561048d57600080fd5b506104a860048036038101906104a391906138ba565b611087565b6040516104b591906137a1565b60405180910390f35b3480156104ca57600080fd5b506104d361117f565b6040516104e0919061391c565b60405180910390f35b3480156104f557600080fd5b506104fe611185565b60405161050b9190613953565b60405180910390f35b34801561052057600080fd5b5061053b60048036038101906105369190613746565b61118e565b60405161054891906137a1565b60405180910390f35b34801561055d57600080fd5b5061056661123a565b604051610573919061391c565b60405180910390f35b34801561058857600080fd5b5061059161125e565b60405161059e91906137a1565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c991906137bc565b611271565b6040516105db91906137a1565b60405180910390f35b3480156105f057600080fd5b5061060b600480360381019061060691906135f6565b6112c7565b005b34801561061957600080fd5b5061062261136b565b60405161062f9190613872565b60405180910390f35b34801561064457600080fd5b5061064d611371565b60405161065a91906137a1565b60405180910390f35b34801561066f57600080fd5b5061068a600480360381019061068591906137bc565b611384565b6040516106979190613872565b60405180910390f35b3480156106ac57600080fd5b506106b56113cc565b005b3480156106c357600080fd5b506106cc611454565b6040516106d991906137a1565b60405180910390f35b3480156106ee57600080fd5b506107096004803603810190610704919061399a565b6114f4565b005b34801561071757600080fd5b506107206115cb565b60405161072d919061391c565b60405180910390f35b34801561074257600080fd5b5061074b6115f1565b6040516107589190613872565b60405180910390f35b34801561076d57600080fd5b506107766115f7565b604051610783919061391c565b60405180910390f35b34801561079857600080fd5b506107a1611621565b6040516107ae919061391c565b60405180910390f35b3480156107c357600080fd5b506107cc611647565b6040516107d99190613872565b60405180910390f35b3480156107ee57600080fd5b50610809600480360381019061080491906139da565b61164d565b005b34801561081757600080fd5b506108206116e6565b60405161082d91906136c6565b60405180910390f35b34801561084257600080fd5b5061085d6004803603810190610858919061399a565b611778565b005b34801561086b57600080fd5b50610874611890565b6040516108819190613872565b60405180910390f35b34801561089657600080fd5b506108b160048036038101906108ac9190613a45565b611896565b005b3480156108bf57600080fd5b506108c8611a51565b6040516108d59190613872565b60405180910390f35b3480156108ea57600080fd5b5061090560048036038101906109009190613746565b611a57565b60405161091291906137a1565b60405180910390f35b34801561092757600080fd5b50610942600480360381019061093d9190613746565b611b42565b60405161094f91906137a1565b60405180910390f35b34801561096457600080fd5b5061097f600480360381019061097a91906137bc565b611b60565b005b34801561098d57600080fd5b506109a860048036038101906109a391906137bc565b611c9c565b6040516109b591906137a1565b60405180910390f35b3480156109ca57600080fd5b506109d3611cbc565b6040516109e091906137a1565b60405180910390f35b3480156109f557600080fd5b506109fe611ccf565b604051610a0b9190613872565b60405180910390f35b348015610a2057600080fd5b50610a3b6004803603810190610a36919061399a565b611cd5565b005b348015610a4957600080fd5b50610a646004803603810190610a5f919061388d565b611dfa565b005b348015610a7257600080fd5b50610a7b611e93565b604051610a889190613872565b60405180910390f35b348015610a9d57600080fd5b50610aa6611e99565b604051610ab39190613872565b60405180910390f35b348015610ac857600080fd5b50610ae36004803603810190610ade919061388d565b611e9f565b604051610af091906137a1565b60405180910390f35b348015610b0557600080fd5b50610b0e611f40565b604051610b1b9190613872565b60405180910390f35b348015610b3057600080fd5b50610b4b6004803603810190610b469190613a85565b611f46565b604051610b589190613872565b60405180910390f35b348015610b6d57600080fd5b50610b76611fcd565b604051610b839190613872565b60405180910390f35b348015610b9857600080fd5b50610bb36004803603810190610bae919061388d565b611fd3565b005b348015610bc157600080fd5b50610bdc6004803603810190610bd791906137bc565b6120dc565b005b348015610bea57600080fd5b50610bf36121d3565b604051610c009190613872565b60405180910390f35b610c116121d9565b73ffffffffffffffffffffffffffffffffffffffff16610c2f6115f7565b73ffffffffffffffffffffffffffffffffffffffff1614610c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7c90613b11565b60405180910390fd5b6000600c5414610cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc190613b7d565b60405180910390fd5b43600c8190555042600d819055506001600b60026101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b610d186121d9565b73ffffffffffffffffffffffffffffffffffffffff16610d366115f7565b73ffffffffffffffffffffffffffffffffffffffff1614610d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8390613b11565b60405180910390fd5b8160128190555080601381905550601354601254610daa9190613bcc565b6011819055505050565b606060038054610dc390613c2f565b80601f0160208091040260200160405190810160405280929190818152602001828054610def90613c2f565b8015610e3c5780601f10610e1157610100808354040283529160200191610e3c565b820191906000526020600020905b815481529060010190602001808311610e1f57829003601f168201915b5050505050905090565b6000610e5a610e536121d9565b84846121e1565b6001905092915050565b60176020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610eba6121d9565b73ffffffffffffffffffffffffffffffffffffffff16610ed86115f7565b73ffffffffffffffffffffffffffffffffffffffff1614610f2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2590613b11565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610ff66121d9565b73ffffffffffffffffffffffffffffffffffffffff166110146115f7565b73ffffffffffffffffffffffffffffffffffffffff161461106a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106190613b11565b60405180910390fd5b670de0b6b3a76400008161107e9190613c60565b60088190555050565b60006110948484846123aa565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110df6121d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561115f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115690613d14565b60405180910390fd5b6111738561116b6121d9565b8584036121e1565b60019150509392505050565b61dead81565b60006012905090565b600061123061119b6121d9565b8484600160006111a96121d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461122b9190613bcc565b6121e1565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60009054906101000a900460ff1681565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6112cf6121d9565b73ffffffffffffffffffffffffffffffffffffffff166112ed6115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133a90613b11565b60405180910390fd5b81600f8190555080601081905550601054600f546113619190613bcc565b600e819055505050565b60115481565b600b60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113d46121d9565b73ffffffffffffffffffffffffffffffffffffffff166113f26115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143f90613b11565b60405180910390fd5b6114526000612df7565b565b600061145e6121d9565b73ffffffffffffffffffffffffffffffffffffffff1661147c6115f7565b73ffffffffffffffffffffffffffffffffffffffff16146114d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c990613b11565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b6114fc6121d9565b73ffffffffffffffffffffffffffffffffffffffff1661151a6115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156790613b11565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b6116556121d9565b73ffffffffffffffffffffffffffffffffffffffff166116736115f7565b73ffffffffffffffffffffffffffffffffffffffff16146116c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c090613b11565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b6060600480546116f590613c2f565b80601f016020809104026020016040519081016040528092919081815260200182805461172190613c2f565b801561176e5780601f106117435761010080835404028352916020019161176e565b820191906000526020600020905b81548152906001019060200180831161175157829003601f168201915b5050505050905090565b6117806121d9565b73ffffffffffffffffffffffffffffffffffffffff1661179e6115f7565b73ffffffffffffffffffffffffffffffffffffffff16146117f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117eb90613b11565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187990613da6565b60405180910390fd5b61188c8282612ebd565b5050565b60105481565b61189e6121d9565b73ffffffffffffffffffffffffffffffffffffffff166118bc6115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190990613b11565b60405180910390fd5b808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161194c919061391c565b602060405180830381865afa158015611969573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198d9190613ddb565b10156119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c590613e54565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611a09929190613e74565b6020604051808303816000875af1158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c9190613eb2565b505050565b60135481565b60008060016000611a666121d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1a90613f51565b60405180910390fd5b611b37611b2e6121d9565b858584036121e1565b600191505092915050565b6000611b56611b4f6121d9565b84846123aa565b6001905092915050565b611b686121d9565b73ffffffffffffffffffffffffffffffffffffffff16611b866115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd390613b11565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60186020528060005260406000206000915054906101000a900460ff1681565b600b60029054906101000a900460ff1681565b600c5481565b611cdd6121d9565b73ffffffffffffffffffffffffffffffffffffffff16611cfb6115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4890613b11565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611dee91906137a1565b60405180910390a25050565b611e026121d9565b73ffffffffffffffffffffffffffffffffffffffff16611e206115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6d90613b11565b60405180910390fd5b670de0b6b3a764000081611e8a9190613c60565b600a8190555050565b600d5481565b60085481565b6000611ea96121d9565b73ffffffffffffffffffffffffffffffffffffffff16611ec76115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1490613b11565b60405180910390fd5b670de0b6b3a764000082611f319190613c60565b60098190555060019050919050565b600e5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b611fdb6121d9565b73ffffffffffffffffffffffffffffffffffffffff16611ff96115f7565b73ffffffffffffffffffffffffffffffffffffffff161461204f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204690613b11565b60405180910390fd5b80471015612092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208990613e54565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120d8573d6000803e3d6000fd5b5050565b6120e46121d9565b73ffffffffffffffffffffffffffffffffffffffff166121026115f7565b73ffffffffffffffffffffffffffffffffffffffff1614612158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214f90613b11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121be90613fe3565b60405180910390fd5b6121d081612df7565b50565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224790614075565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b690614107565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161239d9190613872565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612419576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241090614199565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247f9061422b565b60405180910390fd5b600081036124a15761249c83836000612f5e565b612df2565b600b60009054906101000a900460ff161561299c576124be6115f7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561252c57506124fc6115f7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125655750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561259f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125b85750600560149054906101000a900460ff16155b1561299b57600b60029054906101000a900460ff166126b257601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126725750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6126b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a890614297565b60405180910390fd5b5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127555750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127fc5760085481111561279f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279690614329565b60405180910390fd5b600a546127ab83611384565b826127b69190613bcc565b11156127f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ee90614395565b60405180910390fd5b61299a565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561289f5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128ee576008548111156128e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e090614427565b60405180910390fd5b612999565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661299857600a5461294b83611384565b826129569190613bcc565b1115612997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298e90614395565b60405180910390fd5b5b5b5b5b5b60006129a730611384565b9050600060095482101590508080156129cc5750600b60019054906101000a900460ff165b80156129e55750600560149054906101000a900460ff16155b8015612a3b5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612a915750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ae75750601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b2b576001600560146101000a81548160ff021916908315150217905550612b0f6131dd565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612be15750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612beb57600090505b60008115612de257601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c4e57506000601154115b15612cda57606460115486612c639190613c60565b612c6d9190614476565b905060115460125482612c809190613c60565b612c8a9190614476565b60146000828254612c9b9190613bcc565b9250508190555060115460135482612cb39190613c60565b612cbd9190614476565b60156000828254612cce9190613bcc565b92505081905550612dbe565b601860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d3557506000600e54115b15612dbd576064600e5486612d4a9190613c60565b612d549190614476565b9050600e54600f5482612d679190613c60565b612d719190614476565b60146000828254612d829190613bcc565b92505081905550600e5460105482612d9a9190613c60565b612da49190614476565b60156000828254612db59190613bcc565b925050819055505b5b6000811115612dd357612dd2873083612f5e565b5b8085612ddf91906144a7565b94505b612ded878787612f5e565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc490614199565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361303c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130339061422b565b60405180910390fd5b613047838383613374565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156130cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130c49061454d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546131609190613bcc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131c49190613872565b60405180910390a36131d7848484613379565b50505050565b60006131e830611384565b905060006015546014546131fc9190613bcc565b905060006009548311156132105760095492505b600083905061321e8161337e565b6000479050600084601554836132349190613c60565b61323e9190614476565b905060006014819055506000601581905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516132969061459e565b60006040518083038185875af1925050503d80600081146132d3576040519150601f19603f3d011682016040523d82523d6000602084013e6132d8565b606091505b505080945050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516133249061459e565b60006040518083038185875af1925050503d8060008114613361576040519150601f19603f3d011682016040523d82523d6000602084013e613366565b606091505b505080945050505050505050565b505050565b505050565b6000600267ffffffffffffffff81111561339b5761339a6145b3565b5b6040519080825280602002602001820160405280156133c95781602001602082028036833780820191505090505b50905030816000815181106133e1576133e06145e2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613486573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134aa9190614626565b816001815181106134be576134bd6145e2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613523307f0000000000000000000000000000000000000000000000000000000000000000846121e1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161358595949392919061474c565b600060405180830381600087803b15801561359f57600080fd5b505af11580156135b3573d6000803e3d6000fd5b505050505050565b600080fd5b6000819050919050565b6135d3816135c0565b81146135de57600080fd5b50565b6000813590506135f0816135ca565b92915050565b6000806040838503121561360d5761360c6135bb565b5b600061361b858286016135e1565b925050602061362c858286016135e1565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613670578082015181840152602081019050613655565b60008484015250505050565b6000601f19601f8301169050919050565b600061369882613636565b6136a28185613641565b93506136b2818560208601613652565b6136bb8161367c565b840191505092915050565b600060208201905081810360008301526136e0818461368d565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613713826136e8565b9050919050565b61372381613708565b811461372e57600080fd5b50565b6000813590506137408161371a565b92915050565b6000806040838503121561375d5761375c6135bb565b5b600061376b85828601613731565b925050602061377c858286016135e1565b9150509250929050565b60008115159050919050565b61379b81613786565b82525050565b60006020820190506137b66000830184613792565b92915050565b6000602082840312156137d2576137d16135bb565b5b60006137e084828501613731565b91505092915050565b6000819050919050565b600061380e613809613804846136e8565b6137e9565b6136e8565b9050919050565b6000613820826137f3565b9050919050565b600061383282613815565b9050919050565b61384281613827565b82525050565b600060208201905061385d6000830184613839565b92915050565b61386c816135c0565b82525050565b60006020820190506138876000830184613863565b92915050565b6000602082840312156138a3576138a26135bb565b5b60006138b1848285016135e1565b91505092915050565b6000806000606084860312156138d3576138d26135bb565b5b60006138e186828701613731565b93505060206138f286828701613731565b9250506040613903868287016135e1565b9150509250925092565b61391681613708565b82525050565b6000602082019050613931600083018461390d565b92915050565b600060ff82169050919050565b61394d81613937565b82525050565b60006020820190506139686000830184613944565b92915050565b61397781613786565b811461398257600080fd5b50565b6000813590506139948161396e565b92915050565b600080604083850312156139b1576139b06135bb565b5b60006139bf85828601613731565b92505060206139d085828601613985565b9150509250929050565b6000602082840312156139f0576139ef6135bb565b5b60006139fe84828501613985565b91505092915050565b6000613a1282613708565b9050919050565b613a2281613a07565b8114613a2d57600080fd5b50565b600081359050613a3f81613a19565b92915050565b60008060408385031215613a5c57613a5b6135bb565b5b6000613a6a85828601613a30565b9250506020613a7b858286016135e1565b9150509250929050565b60008060408385031215613a9c57613a9b6135bb565b5b6000613aaa85828601613731565b9250506020613abb85828601613731565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613afb602083613641565b9150613b0682613ac5565b602082019050919050565b60006020820190508181036000830152613b2a81613aee565b9050919050565b7f416c7265616479206c61756e6368656420626f69000000000000000000000000600082015250565b6000613b67601483613641565b9150613b7282613b31565b602082019050919050565b60006020820190508181036000830152613b9681613b5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bd7826135c0565b9150613be2836135c0565b9250828201905080821115613bfa57613bf9613b9d565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613c4757607f821691505b602082108103613c5a57613c59613c00565b5b50919050565b6000613c6b826135c0565b9150613c76836135c0565b9250828202613c84816135c0565b91508282048414831517613c9b57613c9a613b9d565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613cfe602883613641565b9150613d0982613ca2565b604082019050919050565b60006020820190508181036000830152613d2d81613cf1565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613d90603983613641565b9150613d9b82613d34565b604082019050919050565b60006020820190508181036000830152613dbf81613d83565b9050919050565b600081519050613dd5816135ca565b92915050565b600060208284031215613df157613df06135bb565b5b6000613dff84828501613dc6565b91505092915050565b7f496e76616c696420416d6f756e74000000000000000000000000000000000000600082015250565b6000613e3e600e83613641565b9150613e4982613e08565b602082019050919050565b60006020820190508181036000830152613e6d81613e31565b9050919050565b6000604082019050613e89600083018561390d565b613e966020830184613863565b9392505050565b600081519050613eac8161396e565b92915050565b600060208284031215613ec857613ec76135bb565b5b6000613ed684828501613e9d565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613f3b602583613641565b9150613f4682613edf565b604082019050919050565b60006020820190508181036000830152613f6a81613f2e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613fcd602683613641565b9150613fd882613f71565b604082019050919050565b60006020820190508181036000830152613ffc81613fc0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061405f602483613641565b915061406a82614003565b604082019050919050565b6000602082019050818103600083015261408e81614052565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006140f1602283613641565b91506140fc82614095565b604082019050919050565b60006020820190508181036000830152614120816140e4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614183602583613641565b915061418e82614127565b604082019050919050565b600060208201905081810360008301526141b281614176565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614215602383613641565b9150614220826141b9565b604082019050919050565b6000602082019050818103600083015261424481614208565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614281601683613641565b915061428c8261424b565b602082019050919050565b600060208201905081810360008301526142b081614274565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614313603583613641565b915061431e826142b7565b604082019050919050565b6000602082019050818103600083015261434281614306565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061437f601383613641565b915061438a82614349565b602082019050919050565b600060208201905081810360008301526143ae81614372565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614411603683613641565b915061441c826143b5565b604082019050919050565b6000602082019050818103600083015261444081614404565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614481826135c0565b915061448c836135c0565b92508261449c5761449b614447565b5b828204905092915050565b60006144b2826135c0565b91506144bd836135c0565b92508282039050818111156144d5576144d4613b9d565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614537602683613641565b9150614542826144db565b604082019050919050565b600060208201905081810360008301526145668161452a565b9050919050565b600081905092915050565b50565b600061458860008361456d565b915061459382614578565b600082019050919050565b60006145a98261457b565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506146208161371a565b92915050565b60006020828403121561463c5761463b6135bb565b5b600061464a84828501614611565b91505092915050565b6000819050919050565b600061467861467361466e84614653565b6137e9565b6135c0565b9050919050565b6146888161465d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6146c381613708565b82525050565b60006146d583836146ba565b60208301905092915050565b6000602082019050919050565b60006146f98261468e565b6147038185614699565b935061470e836146aa565b8060005b8381101561473f57815161472688826146c9565b9750614731836146e1565b925050600181019050614712565b5085935050505092915050565b600060a0820190506147616000830188613863565b61476e602083018761467f565b818103604083015261478081866146ee565b905061478f606083018561390d565b61479c6080830184613863565b969550505050505056fea2646970667358221220d8ba378c075c8f063ebbf362a141a301d0158a702e87f69996fe38a9f0be7a9664736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102e85760003560e01c80638da5cb5b11610190578063bbc0c742116100dc578063d257b34f11610095578063e2f456051161006f578063e2f4560514610b61578063f14210a614610b8c578063f2fde38b14610bb5578063f8b45b0514610bde576102ef565b8063d257b34f14610abc578063d85ba06314610af9578063dd62ed3e14610b24576102ef565b8063bbc0c742146109be578063bf56b371146109e9578063c024666814610a14578063c18bc19514610a3d578063c6d2577d14610a66578063c8c8ebe414610a91576102ef565b80639c3b4fdc11610149578063a457c2d711610123578063a457c2d7146108de578063a9059cbb1461091b578063aacebbe314610958578063b62496f514610981576102ef565b80639c3b4fdc1461085f5780639e281a981461088a578063a0d82dc5146108b3576102ef565b80638da5cb5b146107615780638ea5220f1461078c57806392136913146107b7578063924de9b7146107e257806395d89b411461080b5780639a7a23d614610836576102ef565b8063395093511161024f5780636ddd171311610208578063751039fc116101e2578063751039fc146106b75780637571336a146106e257806375f0a8741461070b5780637bce5a0414610736576102ef565b80636ddd17131461063857806370a0823114610663578063715018a6146106a0576102ef565b8063395093511461051457806349bd5a5e146105515780634a62bb651461057c5780634fbee193146105a757806366ca9b83146105e45780636a486a8e1461060d576102ef565b806318160ddd116102a157806318160ddd146104045780631816467f1461042f578063203e727e1461045857806323b872dd1461048157806327c8f835146104be578063313ce567146104e9576102ef565b806301339c21146102f457806302dbd8f81461030b57806306fdde0314610334578063095ea7b31461035f57806310d5de531461039c5780631694505e146103d9576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610c09565b005b34801561031757600080fd5b50610332600480360381019061032d91906135f6565b610d10565b005b34801561034057600080fd5b50610349610db4565b60405161035691906136c6565b60405180910390f35b34801561036b57600080fd5b5061038660048036038101906103819190613746565b610e46565b60405161039391906137a1565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be91906137bc565b610e64565b6040516103d091906137a1565b60405180910390f35b3480156103e557600080fd5b506103ee610e84565b6040516103fb9190613848565b60405180910390f35b34801561041057600080fd5b50610419610ea8565b6040516104269190613872565b60405180910390f35b34801561043b57600080fd5b50610456600480360381019061045191906137bc565b610eb2565b005b34801561046457600080fd5b5061047f600480360381019061047a919061388d565b610fee565b005b34801561048d57600080fd5b506104a860048036038101906104a391906138ba565b611087565b6040516104b591906137a1565b60405180910390f35b3480156104ca57600080fd5b506104d361117f565b6040516104e0919061391c565b60405180910390f35b3480156104f557600080fd5b506104fe611185565b60405161050b9190613953565b60405180910390f35b34801561052057600080fd5b5061053b60048036038101906105369190613746565b61118e565b60405161054891906137a1565b60405180910390f35b34801561055d57600080fd5b5061056661123a565b604051610573919061391c565b60405180910390f35b34801561058857600080fd5b5061059161125e565b60405161059e91906137a1565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c991906137bc565b611271565b6040516105db91906137a1565b60405180910390f35b3480156105f057600080fd5b5061060b600480360381019061060691906135f6565b6112c7565b005b34801561061957600080fd5b5061062261136b565b60405161062f9190613872565b60405180910390f35b34801561064457600080fd5b5061064d611371565b60405161065a91906137a1565b60405180910390f35b34801561066f57600080fd5b5061068a600480360381019061068591906137bc565b611384565b6040516106979190613872565b60405180910390f35b3480156106ac57600080fd5b506106b56113cc565b005b3480156106c357600080fd5b506106cc611454565b6040516106d991906137a1565b60405180910390f35b3480156106ee57600080fd5b506107096004803603810190610704919061399a565b6114f4565b005b34801561071757600080fd5b506107206115cb565b60405161072d919061391c565b60405180910390f35b34801561074257600080fd5b5061074b6115f1565b6040516107589190613872565b60405180910390f35b34801561076d57600080fd5b506107766115f7565b604051610783919061391c565b60405180910390f35b34801561079857600080fd5b506107a1611621565b6040516107ae919061391c565b60405180910390f35b3480156107c357600080fd5b506107cc611647565b6040516107d99190613872565b60405180910390f35b3480156107ee57600080fd5b50610809600480360381019061080491906139da565b61164d565b005b34801561081757600080fd5b506108206116e6565b60405161082d91906136c6565b60405180910390f35b34801561084257600080fd5b5061085d6004803603810190610858919061399a565b611778565b005b34801561086b57600080fd5b50610874611890565b6040516108819190613872565b60405180910390f35b34801561089657600080fd5b506108b160048036038101906108ac9190613a45565b611896565b005b3480156108bf57600080fd5b506108c8611a51565b6040516108d59190613872565b60405180910390f35b3480156108ea57600080fd5b5061090560048036038101906109009190613746565b611a57565b60405161091291906137a1565b60405180910390f35b34801561092757600080fd5b50610942600480360381019061093d9190613746565b611b42565b60405161094f91906137a1565b60405180910390f35b34801561096457600080fd5b5061097f600480360381019061097a91906137bc565b611b60565b005b34801561098d57600080fd5b506109a860048036038101906109a391906137bc565b611c9c565b6040516109b591906137a1565b60405180910390f35b3480156109ca57600080fd5b506109d3611cbc565b6040516109e091906137a1565b60405180910390f35b3480156109f557600080fd5b506109fe611ccf565b604051610a0b9190613872565b60405180910390f35b348015610a2057600080fd5b50610a3b6004803603810190610a36919061399a565b611cd5565b005b348015610a4957600080fd5b50610a646004803603810190610a5f919061388d565b611dfa565b005b348015610a7257600080fd5b50610a7b611e93565b604051610a889190613872565b60405180910390f35b348015610a9d57600080fd5b50610aa6611e99565b604051610ab39190613872565b60405180910390f35b348015610ac857600080fd5b50610ae36004803603810190610ade919061388d565b611e9f565b604051610af091906137a1565b60405180910390f35b348015610b0557600080fd5b50610b0e611f40565b604051610b1b9190613872565b60405180910390f35b348015610b3057600080fd5b50610b4b6004803603810190610b469190613a85565b611f46565b604051610b589190613872565b60405180910390f35b348015610b6d57600080fd5b50610b76611fcd565b604051610b839190613872565b60405180910390f35b348015610b9857600080fd5b50610bb36004803603810190610bae919061388d565b611fd3565b005b348015610bc157600080fd5b50610bdc6004803603810190610bd791906137bc565b6120dc565b005b348015610bea57600080fd5b50610bf36121d3565b604051610c009190613872565b60405180910390f35b610c116121d9565b73ffffffffffffffffffffffffffffffffffffffff16610c2f6115f7565b73ffffffffffffffffffffffffffffffffffffffff1614610c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7c90613b11565b60405180910390fd5b6000600c5414610cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc190613b7d565b60405180910390fd5b43600c8190555042600d819055506001600b60026101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b610d186121d9565b73ffffffffffffffffffffffffffffffffffffffff16610d366115f7565b73ffffffffffffffffffffffffffffffffffffffff1614610d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8390613b11565b60405180910390fd5b8160128190555080601381905550601354601254610daa9190613bcc565b6011819055505050565b606060038054610dc390613c2f565b80601f0160208091040260200160405190810160405280929190818152602001828054610def90613c2f565b8015610e3c5780601f10610e1157610100808354040283529160200191610e3c565b820191906000526020600020905b815481529060010190602001808311610e1f57829003601f168201915b5050505050905090565b6000610e5a610e536121d9565b84846121e1565b6001905092915050565b60176020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610eba6121d9565b73ffffffffffffffffffffffffffffffffffffffff16610ed86115f7565b73ffffffffffffffffffffffffffffffffffffffff1614610f2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2590613b11565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610ff66121d9565b73ffffffffffffffffffffffffffffffffffffffff166110146115f7565b73ffffffffffffffffffffffffffffffffffffffff161461106a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106190613b11565b60405180910390fd5b670de0b6b3a76400008161107e9190613c60565b60088190555050565b60006110948484846123aa565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110df6121d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561115f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115690613d14565b60405180910390fd5b6111738561116b6121d9565b8584036121e1565b60019150509392505050565b61dead81565b60006012905090565b600061123061119b6121d9565b8484600160006111a96121d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461122b9190613bcc565b6121e1565b6001905092915050565b7f00000000000000000000000023aad1c2e97aa0eece07f9d15e45a01fefe125f481565b600b60009054906101000a900460ff1681565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6112cf6121d9565b73ffffffffffffffffffffffffffffffffffffffff166112ed6115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133a90613b11565b60405180910390fd5b81600f8190555080601081905550601054600f546113619190613bcc565b600e819055505050565b60115481565b600b60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113d46121d9565b73ffffffffffffffffffffffffffffffffffffffff166113f26115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143f90613b11565b60405180910390fd5b6114526000612df7565b565b600061145e6121d9565b73ffffffffffffffffffffffffffffffffffffffff1661147c6115f7565b73ffffffffffffffffffffffffffffffffffffffff16146114d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c990613b11565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b6114fc6121d9565b73ffffffffffffffffffffffffffffffffffffffff1661151a6115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156790613b11565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b6116556121d9565b73ffffffffffffffffffffffffffffffffffffffff166116736115f7565b73ffffffffffffffffffffffffffffffffffffffff16146116c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c090613b11565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b6060600480546116f590613c2f565b80601f016020809104026020016040519081016040528092919081815260200182805461172190613c2f565b801561176e5780601f106117435761010080835404028352916020019161176e565b820191906000526020600020905b81548152906001019060200180831161175157829003601f168201915b5050505050905090565b6117806121d9565b73ffffffffffffffffffffffffffffffffffffffff1661179e6115f7565b73ffffffffffffffffffffffffffffffffffffffff16146117f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117eb90613b11565b60405180910390fd5b7f00000000000000000000000023aad1c2e97aa0eece07f9d15e45a01fefe125f473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187990613da6565b60405180910390fd5b61188c8282612ebd565b5050565b60105481565b61189e6121d9565b73ffffffffffffffffffffffffffffffffffffffff166118bc6115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190990613b11565b60405180910390fd5b808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161194c919061391c565b602060405180830381865afa158015611969573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198d9190613ddb565b10156119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c590613e54565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611a09929190613e74565b6020604051808303816000875af1158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c9190613eb2565b505050565b60135481565b60008060016000611a666121d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1a90613f51565b60405180910390fd5b611b37611b2e6121d9565b858584036121e1565b600191505092915050565b6000611b56611b4f6121d9565b84846123aa565b6001905092915050565b611b686121d9565b73ffffffffffffffffffffffffffffffffffffffff16611b866115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd390613b11565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60186020528060005260406000206000915054906101000a900460ff1681565b600b60029054906101000a900460ff1681565b600c5481565b611cdd6121d9565b73ffffffffffffffffffffffffffffffffffffffff16611cfb6115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4890613b11565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611dee91906137a1565b60405180910390a25050565b611e026121d9565b73ffffffffffffffffffffffffffffffffffffffff16611e206115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6d90613b11565b60405180910390fd5b670de0b6b3a764000081611e8a9190613c60565b600a8190555050565b600d5481565b60085481565b6000611ea96121d9565b73ffffffffffffffffffffffffffffffffffffffff16611ec76115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1490613b11565b60405180910390fd5b670de0b6b3a764000082611f319190613c60565b60098190555060019050919050565b600e5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b611fdb6121d9565b73ffffffffffffffffffffffffffffffffffffffff16611ff96115f7565b73ffffffffffffffffffffffffffffffffffffffff161461204f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204690613b11565b60405180910390fd5b80471015612092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208990613e54565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120d8573d6000803e3d6000fd5b5050565b6120e46121d9565b73ffffffffffffffffffffffffffffffffffffffff166121026115f7565b73ffffffffffffffffffffffffffffffffffffffff1614612158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214f90613b11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121be90613fe3565b60405180910390fd5b6121d081612df7565b50565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224790614075565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b690614107565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161239d9190613872565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612419576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241090614199565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247f9061422b565b60405180910390fd5b600081036124a15761249c83836000612f5e565b612df2565b600b60009054906101000a900460ff161561299c576124be6115f7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561252c57506124fc6115f7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125655750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561259f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125b85750600560149054906101000a900460ff16155b1561299b57600b60029054906101000a900460ff166126b257601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126725750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6126b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a890614297565b60405180910390fd5b5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127555750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127fc5760085481111561279f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279690614329565b60405180910390fd5b600a546127ab83611384565b826127b69190613bcc565b11156127f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ee90614395565b60405180910390fd5b61299a565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561289f5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128ee576008548111156128e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e090614427565b60405180910390fd5b612999565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661299857600a5461294b83611384565b826129569190613bcc565b1115612997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298e90614395565b60405180910390fd5b5b5b5b5b5b60006129a730611384565b9050600060095482101590508080156129cc5750600b60019054906101000a900460ff165b80156129e55750600560149054906101000a900460ff16155b8015612a3b5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612a915750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ae75750601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b2b576001600560146101000a81548160ff021916908315150217905550612b0f6131dd565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612be15750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612beb57600090505b60008115612de257601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c4e57506000601154115b15612cda57606460115486612c639190613c60565b612c6d9190614476565b905060115460125482612c809190613c60565b612c8a9190614476565b60146000828254612c9b9190613bcc565b9250508190555060115460135482612cb39190613c60565b612cbd9190614476565b60156000828254612cce9190613bcc565b92505081905550612dbe565b601860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d3557506000600e54115b15612dbd576064600e5486612d4a9190613c60565b612d549190614476565b9050600e54600f5482612d679190613c60565b612d719190614476565b60146000828254612d829190613bcc565b92505081905550600e5460105482612d9a9190613c60565b612da49190614476565b60156000828254612db59190613bcc565b925050819055505b5b6000811115612dd357612dd2873083612f5e565b5b8085612ddf91906144a7565b94505b612ded878787612f5e565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc490614199565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361303c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130339061422b565b60405180910390fd5b613047838383613374565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156130cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130c49061454d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546131609190613bcc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131c49190613872565b60405180910390a36131d7848484613379565b50505050565b60006131e830611384565b905060006015546014546131fc9190613bcc565b905060006009548311156132105760095492505b600083905061321e8161337e565b6000479050600084601554836132349190613c60565b61323e9190614476565b905060006014819055506000601581905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516132969061459e565b60006040518083038185875af1925050503d80600081146132d3576040519150601f19603f3d011682016040523d82523d6000602084013e6132d8565b606091505b505080945050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516133249061459e565b60006040518083038185875af1925050503d8060008114613361576040519150601f19603f3d011682016040523d82523d6000602084013e613366565b606091505b505080945050505050505050565b505050565b505050565b6000600267ffffffffffffffff81111561339b5761339a6145b3565b5b6040519080825280602002602001820160405280156133c95781602001602082028036833780820191505090505b50905030816000815181106133e1576133e06145e2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613486573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134aa9190614626565b816001815181106134be576134bd6145e2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613523307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846121e1565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161358595949392919061474c565b600060405180830381600087803b15801561359f57600080fd5b505af11580156135b3573d6000803e3d6000fd5b505050505050565b600080fd5b6000819050919050565b6135d3816135c0565b81146135de57600080fd5b50565b6000813590506135f0816135ca565b92915050565b6000806040838503121561360d5761360c6135bb565b5b600061361b858286016135e1565b925050602061362c858286016135e1565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613670578082015181840152602081019050613655565b60008484015250505050565b6000601f19601f8301169050919050565b600061369882613636565b6136a28185613641565b93506136b2818560208601613652565b6136bb8161367c565b840191505092915050565b600060208201905081810360008301526136e0818461368d565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613713826136e8565b9050919050565b61372381613708565b811461372e57600080fd5b50565b6000813590506137408161371a565b92915050565b6000806040838503121561375d5761375c6135bb565b5b600061376b85828601613731565b925050602061377c858286016135e1565b9150509250929050565b60008115159050919050565b61379b81613786565b82525050565b60006020820190506137b66000830184613792565b92915050565b6000602082840312156137d2576137d16135bb565b5b60006137e084828501613731565b91505092915050565b6000819050919050565b600061380e613809613804846136e8565b6137e9565b6136e8565b9050919050565b6000613820826137f3565b9050919050565b600061383282613815565b9050919050565b61384281613827565b82525050565b600060208201905061385d6000830184613839565b92915050565b61386c816135c0565b82525050565b60006020820190506138876000830184613863565b92915050565b6000602082840312156138a3576138a26135bb565b5b60006138b1848285016135e1565b91505092915050565b6000806000606084860312156138d3576138d26135bb565b5b60006138e186828701613731565b93505060206138f286828701613731565b9250506040613903868287016135e1565b9150509250925092565b61391681613708565b82525050565b6000602082019050613931600083018461390d565b92915050565b600060ff82169050919050565b61394d81613937565b82525050565b60006020820190506139686000830184613944565b92915050565b61397781613786565b811461398257600080fd5b50565b6000813590506139948161396e565b92915050565b600080604083850312156139b1576139b06135bb565b5b60006139bf85828601613731565b92505060206139d085828601613985565b9150509250929050565b6000602082840312156139f0576139ef6135bb565b5b60006139fe84828501613985565b91505092915050565b6000613a1282613708565b9050919050565b613a2281613a07565b8114613a2d57600080fd5b50565b600081359050613a3f81613a19565b92915050565b60008060408385031215613a5c57613a5b6135bb565b5b6000613a6a85828601613a30565b9250506020613a7b858286016135e1565b9150509250929050565b60008060408385031215613a9c57613a9b6135bb565b5b6000613aaa85828601613731565b9250506020613abb85828601613731565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613afb602083613641565b9150613b0682613ac5565b602082019050919050565b60006020820190508181036000830152613b2a81613aee565b9050919050565b7f416c7265616479206c61756e6368656420626f69000000000000000000000000600082015250565b6000613b67601483613641565b9150613b7282613b31565b602082019050919050565b60006020820190508181036000830152613b9681613b5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bd7826135c0565b9150613be2836135c0565b9250828201905080821115613bfa57613bf9613b9d565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613c4757607f821691505b602082108103613c5a57613c59613c00565b5b50919050565b6000613c6b826135c0565b9150613c76836135c0565b9250828202613c84816135c0565b91508282048414831517613c9b57613c9a613b9d565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613cfe602883613641565b9150613d0982613ca2565b604082019050919050565b60006020820190508181036000830152613d2d81613cf1565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613d90603983613641565b9150613d9b82613d34565b604082019050919050565b60006020820190508181036000830152613dbf81613d83565b9050919050565b600081519050613dd5816135ca565b92915050565b600060208284031215613df157613df06135bb565b5b6000613dff84828501613dc6565b91505092915050565b7f496e76616c696420416d6f756e74000000000000000000000000000000000000600082015250565b6000613e3e600e83613641565b9150613e4982613e08565b602082019050919050565b60006020820190508181036000830152613e6d81613e31565b9050919050565b6000604082019050613e89600083018561390d565b613e966020830184613863565b9392505050565b600081519050613eac8161396e565b92915050565b600060208284031215613ec857613ec76135bb565b5b6000613ed684828501613e9d565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613f3b602583613641565b9150613f4682613edf565b604082019050919050565b60006020820190508181036000830152613f6a81613f2e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613fcd602683613641565b9150613fd882613f71565b604082019050919050565b60006020820190508181036000830152613ffc81613fc0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061405f602483613641565b915061406a82614003565b604082019050919050565b6000602082019050818103600083015261408e81614052565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006140f1602283613641565b91506140fc82614095565b604082019050919050565b60006020820190508181036000830152614120816140e4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614183602583613641565b915061418e82614127565b604082019050919050565b600060208201905081810360008301526141b281614176565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614215602383613641565b9150614220826141b9565b604082019050919050565b6000602082019050818103600083015261424481614208565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614281601683613641565b915061428c8261424b565b602082019050919050565b600060208201905081810360008301526142b081614274565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614313603583613641565b915061431e826142b7565b604082019050919050565b6000602082019050818103600083015261434281614306565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061437f601383613641565b915061438a82614349565b602082019050919050565b600060208201905081810360008301526143ae81614372565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614411603683613641565b915061441c826143b5565b604082019050919050565b6000602082019050818103600083015261444081614404565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614481826135c0565b915061448c836135c0565b92508261449c5761449b614447565b5b828204905092915050565b60006144b2826135c0565b91506144bd836135c0565b92508282039050818111156144d5576144d4613b9d565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614537602683613641565b9150614542826144db565b604082019050919050565b600060208201905081810360008301526145668161452a565b9050919050565b600081905092915050565b50565b600061458860008361456d565b915061459382614578565b600082019050919050565b60006145a98261457b565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506146208161371a565b92915050565b60006020828403121561463c5761463b6135bb565b5b600061464a84828501614611565b91505092915050565b6000819050919050565b600061467861467361466e84614653565b6137e9565b6135c0565b9050919050565b6146888161465d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6146c381613708565b82525050565b60006146d583836146ba565b60208301905092915050565b6000602082019050919050565b60006146f98261468e565b6147038185614699565b935061470e836146aa565b8060005b8381101561473f57815161472688826146c9565b9750614731836146e1565b925050600181019050614712565b5085935050505092915050565b600060a0820190506147616000830188613863565b61476e602083018761467f565b818103604083015261478081866146ee565b905061478f606083018561390d565b61479c6080830184613863565b969550505050505056fea2646970667358221220d8ba378c075c8f063ebbf362a141a301d0158a702e87f69996fe38a9f0be7a9664736f6c63430008120033

Deployed Bytecode Sourcemap

15242:12841:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19126:246;;;;;;;;;;;;;:::i;:::-;;20514;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4775:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6172:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16298:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15283:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5264:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21700:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19637:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6374:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15386:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5106:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6911:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15341:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15663:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21865:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20266:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15976:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15703:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5435:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1207:103;;;;;;;;;;;;;:::i;:::-;;18899:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19893:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15478:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15897:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;899:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15515:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16016:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20158:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4994:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20958:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15939:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27871:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16059:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7209:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5586:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21468:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16517:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15741:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15783:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20768:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19769:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15815:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15548:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19442:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15858:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5849:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15590:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27680:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1465:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15630:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19126:246;1130:12;:10;:12::i;:::-;1119:23;;:7;:5;:7::i;:::-;:23;;;1111:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19194:1:::1;19180:10;;:15;19172:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;19244:12;19231:10;:25;;;;19289:15;19267:19;:37;;;;19331:4;19315:13;;:20;;;;;;;;;;;;;;;;;;19360:4;19346:11;;:18;;;;;;;;;;;;;;;;;;19126:246::o:0;20514:::-;1130:12;:10;:12::i;:::-;1119:23;;:7;:5;:7::i;:::-;:23;;;1111:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20652:13:::1;20633:16;:32;;;;20689:7;20676:10;:20;;;;20742:10;;20723:16;;:29;;;;:::i;:::-;20707:13;:45;;;;20514:246:::0;;:::o;4775:100::-;4829:13;4862:5;4855:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4775:100;:::o;6172:194::-;6280:4;6297:39;6306:12;:10;:12::i;:::-;6320:7;6329:6;6297:8;:39::i;:::-;6354:4;6347:11;;6172:194;;;;:::o;16298:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;15283:51::-;;;:::o;5264:108::-;5325:7;5352:12;;5345:19;;5264:108;:::o;21700:157::-;1130:12;:10;:12::i;:::-;1119:23;;:7;:5;:7::i;:::-;:23;;;1111:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21807:9:::1;;;;;;;;;;;21779:38;;21796:9;21779:38;;;;;;;;;;;;21840:9;21828;;:21;;;;;;;;;;;;;;;;;;21700:157:::0;:::o;19637:124::-;1130:12;:10;:12::i;:::-;1119:23;;:7;:5;:7::i;:::-;:23;;;1111:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19744:8:::1;19734:6;:19;;;;:::i;:::-;19711:20;:42;;;;19637:124:::0;:::o;6374:529::-;6514:4;6531:36;6541:6;6549:9;6560:6;6531:9;:36::i;:::-;6580:24;6607:11;:19;6619:6;6607:19;;;;;;;;;;;;;;;:33;6627:12;:10;:12::i;:::-;6607:33;;;;;;;;;;;;;;;;6580:60;;6693:6;6673:16;:26;;6651:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;6803:57;6812:6;6820:12;:10;:12::i;:::-;6853:6;6834:16;:25;6803:8;:57::i;:::-;6891:4;6884:11;;;6374:529;;;;;:::o;15386:53::-;15432:6;15386:53;:::o;5106:93::-;5164:5;5189:2;5182:9;;5106:93;:::o;6911:290::-;7024:4;7041:130;7064:12;:10;:12::i;:::-;7091:7;7150:10;7113:11;:25;7125:12;:10;:12::i;:::-;7113:25;;;;;;;;;;;;;;;:34;7139:7;7113:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;7041:8;:130::i;:::-;7189:4;7182:11;;6911:290;;;;:::o;15341:38::-;;;:::o;15663:33::-;;;;;;;;;;;;;:::o;21865:126::-;21931:4;21955:19;:28;21975:7;21955:28;;;;;;;;;;;;;;;;;;;;;;;;;21948:35;;21865:126;;;:::o;20266:240::-;1130:12;:10;:12::i;:::-;1119:23;;:7;:5;:7::i;:::-;:23;;;1111:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20402:13:::1;20384:15;:31;;;;20438:7;20426:9;:19;;;;20489:9;;20471:15;;:27;;;;:::i;:::-;20456:12;:42;;;;20266:240:::0;;:::o;15976:33::-;;;;:::o;15703:31::-;;;;;;;;;;;;;:::o;5435:143::-;5525:7;5552:9;:18;5562:7;5552:18;;;;;;;;;;;;;;;;5545:25;;5435:143;;;:::o;1207:103::-;1130:12;:10;:12::i;:::-;1119:23;;:7;:5;:7::i;:::-;:23;;;1111:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1272:30:::1;1299:1;1272:18;:30::i;:::-;1207:103::o:0;18899:121::-;18951:4;1130:12;:10;:12::i;:::-;1119:23;;:7;:5;:7::i;:::-;:23;;;1111:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18985:5:::1;18968:14;;:22;;;;;;;;;;;;;;;;;;19008:4;19001:11;;18899:121:::0;:::o;19893:169::-;1130:12;:10;:12::i;:::-;1119:23;;:7;:5;:7::i;:::-;:23;;;1111:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20050:4:::1;20008:31;:39;20040:6;20008:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;19893:169:::0;;:::o;15478:30::-;;;;;;;;;;;;;:::o;15897:35::-;;;;:::o;899:87::-;945:7;972:6;;;;;;;;;;;965:13;;899:87;:::o;15515:24::-;;;;;;;;;;;;;:::o;16016:36::-;;;;:::o;20158:100::-;1130:12;:10;:12::i;:::-;1119:23;;:7;:5;:7::i;:::-;:23;;;1111:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20243:7:::1;20229:11;;:21;;;;;;;;;;;;;;;;;;20158:100:::0;:::o;4994:104::-;5050:13;5083:7;5076:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4994:104;:::o;20958:306::-;1130:12;:10;:12::i;:::-;1119:23;;:7;:5;:7::i;:::-;:23;;;1111:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21104:13:::1;21096:21;;:4;:21;;::::0;21074:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21215:41;21244:4;21250:5;21215:28;:41::i;:::-;20958:306:::0;;:::o;15939:28::-;;;;:::o;27871:209::-;1130:12;:10;:12::i;:::-;1119:23;;:7;:5;:7::i;:::-;:23;;;1111:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27999:7:::1;27964:6;:16;;;27989:4;27964:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42;;27956:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;28036:6;:15;;;28052:10;28064:7;28036:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27871:209:::0;;:::o;16059:29::-;;;;:::o;7209:475::-;7327:4;7344:24;7371:11;:25;7383:12;:10;:12::i;:::-;7371:25;;;;;;;;;;;;;;;:34;7397:7;7371:34;;;;;;;;;;;;;;;;7344:61;;7458:15;7438:16;:35;;7416:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;7574:67;7583:12;:10;:12::i;:::-;7597:7;7625:15;7606:16;:34;7574:8;:67::i;:::-;7672:4;7665:11;;;7209:475;;;;:::o;5586:200::-;5697:4;5714:42;5724:12;:10;:12::i;:::-;5738:9;5749:6;5714:9;:42::i;:::-;5774:4;5767:11;;5586:200;;;;:::o;21468:224::-;1130:12;:10;:12::i;:::-;1119:23;;:7;:5;:7::i;:::-;:23;;;1111:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21621:15:::1;;;;;;;;;;;21578:59;;21601:18;21578:59;;;;;;;;;;;;21666:18;21648:15;;:36;;;;;;;;;;;;;;;;;;21468:224:::0;:::o;16517:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;15741:33::-;;;;;;;;;;;;;:::o;15783:25::-;;;;:::o;20768:182::-;1130:12;:10;:12::i;:::-;1119:23;;:7;:5;:7::i;:::-;:23;;;1111:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20884:8:::1;20853:19;:28;20873:7;20853:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20924:7;20908:34;;;20933:8;20908:34;;;;;;:::i;:::-;;;;;;;;20768:182:::0;;:::o;19769:116::-;1130:12;:10;:12::i;:::-;1119:23;;:7;:5;:7::i;:::-;:23;;;1111:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19868:8:::1;19858:6;:19;;;;:::i;:::-;19846:9;:31;;;;19769:116:::0;:::o;15815:34::-;;;;:::o;15548:35::-;;;;:::o;19442:187::-;19539:4;1130:12;:10;:12::i;:::-;1119:23;;:7;:5;:7::i;:::-;:23;;;1111:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19590:8:::1;19577:9;:22;;;;:::i;:::-;19556:18;:43;;;;19617:4;19610:11;;19442:187:::0;;;:::o;15858:32::-;;;;:::o;5849:176::-;5963:7;5990:11;:18;6002:5;5990:18;;;;;;;;;;;;;;;:27;6009:7;5990:27;;;;;;;;;;;;;;;;5983:34;;5849:176;;;;:::o;15590:33::-;;;;:::o;27680:183::-;1130:12;:10;:12::i;:::-;1119:23;;:7;:5;:7::i;:::-;:23;;;1111:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27781:7:::1;27756:21;:32;;27748:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;27826:10;27818:28;;:37;27847:7;27818:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;27680:183:::0;:::o;1465:238::-;1130:12;:10;:12::i;:::-;1119:23;;:7;:5;:7::i;:::-;:23;;;1111:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1588:1:::1;1568:22;;:8;:22;;::::0;1546:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1667:28;1686:8;1667:18;:28::i;:::-;1465:238:::0;:::o;15630:24::-;;;;:::o;257:98::-;310:7;337:10;330:17;;257:98;:::o;9476:380::-;9629:1;9612:19;;:5;:19;;;9604:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9710:1;9691:21;;:7;:21;;;9683:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9794:6;9764:11;:18;9776:5;9764:18;;;;;;;;;;;;;;;:27;9783:7;9764:27;;;;;;;;;;;;;;;:36;;;;9832:7;9816:32;;9825:5;9816:32;;;9841:6;9816:32;;;;;;:::i;:::-;;;;;;;;9476:380;;;:::o;21999:3750::-;22147:1;22131:18;;:4;:18;;;22123:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22224:1;22210:16;;:2;:16;;;22202:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22293:1;22283:6;:11;22279:93;;22311:28;22327:4;22333:2;22337:1;22311:15;:28::i;:::-;22354:7;;22279:93;22388:14;;;;;;;;;;;22384:1692;;;22449:7;:5;:7::i;:::-;22441:15;;:4;:15;;;;:49;;;;;22483:7;:5;:7::i;:::-;22477:13;;:2;:13;;;;22441:49;:86;;;;;22525:1;22511:16;;:2;:16;;;;22441:86;:128;;;;;22562:6;22548:21;;:2;:21;;;;22441:128;:158;;;;;22591:8;;;;;;;;;;;22590:9;22441:158;22419:1646;;;22639:13;;;;;;;;;;;22634:223;;22711:19;:25;22731:4;22711:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;22740:19;:23;22760:2;22740:23;;;;;;;;;;;;;;;;;;;;;;;;;22711:52;22677:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;22634:223;22929:25;:31;22955:4;22929:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;22986:31;:35;23018:2;22986:35;;;;;;;;;;;;;;;;;;;;;;;;;22985:36;22929:92;22903:1147;;;23108:20;;23098:6;:30;;23064:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;23316:9;;23299:13;23309:2;23299:9;:13::i;:::-;23290:6;:22;;;;:::i;:::-;:35;;23256:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;22903:1147;;;23494:25;:29;23520:2;23494:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;23549:31;:37;23581:4;23549:37;;;;;;;;;;;;;;;;;;;;;;;;;23548:38;23494:92;23468:582;;;23673:20;;23663:6;:30;;23629:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;23468:582;;;23830:31;:35;23862:2;23830:35;;;;;;;;;;;;;;;;;;;;;;;;;23825:225;;23950:9;;23933:13;23943:2;23933:9;:13::i;:::-;23924:6;:22;;;;:::i;:::-;:35;;23890:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;23825:225;23468:582;22903:1147;22419:1646;22384:1692;24088:28;24119:24;24137:4;24119:9;:24::i;:::-;24088:55;;24156:12;24195:18;;24171:20;:42;;24156:57;;24244:7;:35;;;;;24268:11;;;;;;;;;;;24244:35;:61;;;;;24297:8;;;;;;;;;;;24296:9;24244:61;:110;;;;;24323:25;:31;24349:4;24323:31;;;;;;;;;;;;;;;;;;;;;;;;;24322:32;24244:110;:153;;;;;24372:19;:25;24392:4;24372:25;;;;;;;;;;;;;;;;;;;;;;;;;24371:26;24244:153;:194;;;;;24415:19;:23;24435:2;24415:23;;;;;;;;;;;;;;;;;;;;;;;;;24414:24;24244:194;24226:326;;;24476:4;24465:8;;:15;;;;;;;;;;;;;;;;;;24497:10;:8;:10::i;:::-;24535:5;24524:8;;:16;;;;;;;;;;;;;;;;;;24226:326;24564:12;24580:8;;;;;;;;;;;24579:9;24564:24;;24690:19;:25;24710:4;24690:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;24719:19;:23;24739:2;24719:23;;;;;;;;;;;;;;;;;;;;;;;;;24690:52;24686:100;;;24769:5;24759:15;;24686:100;24798:12;24903:7;24899:797;;;24955:25;:29;24981:2;24955:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;25004:1;24988:13;;:17;24955:50;24951:596;;;25060:3;25043:13;;25034:6;:22;;;;:::i;:::-;25033:30;;;;:::i;:::-;25026:37;;25132:13;;25112:16;;25105:4;:23;;;;:::i;:::-;25104:41;;;;:::i;:::-;25082:18;;:63;;;;;;;:::i;:::-;;;;;;;;25201:13;;25187:10;;25180:4;:17;;;;:::i;:::-;25179:35;;;;:::i;:::-;25164:11;;:50;;;;;;;:::i;:::-;;;;;;;;24951:596;;;25276:25;:31;25302:4;25276:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;25326:1;25311:12;;:16;25276:51;25272:275;;;25381:3;25365:12;;25356:6;:21;;;;:::i;:::-;25355:29;;;;:::i;:::-;25348:36;;25452:12;;25433:15;;25426:4;:22;;;;:::i;:::-;25425:39;;;;:::i;:::-;25403:18;;:61;;;;;;;:::i;:::-;;;;;;;;25519:12;;25506:9;;25499:4;:16;;;;:::i;:::-;25498:33;;;;:::i;:::-;25483:11;;:48;;;;;;;:::i;:::-;;;;;;;;25272:275;24951:596;25574:1;25567:4;:8;25563:91;;;25596:42;25612:4;25626;25633;25596:15;:42::i;:::-;25563:91;25680:4;25670:14;;;;;:::i;:::-;;;24899:797;25708:33;25724:4;25730:2;25734:6;25708:15;:33::i;:::-;22112:3637;;;;21999:3750;;;;:::o;1863:191::-;1937:16;1956:6;;;;;;;;;;;1937:25;;1982:8;1973:6;;:17;;;;;;;;;;;;;;;;;;2037:8;2006:40;;2027:8;2006:40;;;;;;;;;;;;1926:128;1863:191;:::o;21272:188::-;21389:5;21355:25;:31;21381:4;21355:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21446:5;21412:40;;21440:4;21412:40;;;;;;;;;;;;21272:188;;:::o;7692:770::-;7850:1;7832:20;;:6;:20;;;7824:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7934:1;7913:23;;:9;:23;;;7905:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7989:47;8010:6;8018:9;8029:6;7989:20;:47::i;:::-;8049:21;8073:9;:17;8083:6;8073:17;;;;;;;;;;;;;;;;8049:41;;8140:6;8123:13;:23;;8101:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;8284:6;8268:13;:22;8248:9;:17;8258:6;8248:17;;;;;;;;;;;;;;;:42;;;;8336:6;8312:9;:20;8322:9;8312:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8377:9;8360:35;;8369:6;8360:35;;;8388:6;8360:35;;;;;;:::i;:::-;;;;;;;;8408:46;8428:6;8436:9;8447:6;8408:19;:46::i;:::-;7813:649;7692:770;;;:::o;26879:793::-;26918:23;26944:24;26962:4;26944:9;:24::i;:::-;26918:50;;26979:25;27028:11;;27007:18;;:32;;;;:::i;:::-;26979:60;;27050:12;27097:18;;27079:15;:36;27075:105;;;27150:18;;27132:36;;27075:105;27192:26;27221:15;27192:44;;27249:36;27266:18;27249:16;:36::i;:::-;27298:18;27320:21;27298:44;;27353:17;27402;27387:11;;27374:10;:24;;;;:::i;:::-;27373:46;;;;:::i;:::-;27353:66;;27453:1;27432:18;:22;;;;27479:1;27465:11;:15;;;;27515:9;;;;;;;;;;;27507:23;;27538:9;27507:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27493:59;;;;;27585:15;;;;;;;;;;;27577:29;;27628:21;27577:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27563:101;;;;;26907:765;;;;;;26879:793::o;9864:125::-;;;;:::o;9997:124::-;;;;:::o;25757:589::-;25883:21;25921:1;25907:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25883:40;;25952:4;25934;25939:1;25934:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25978:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25968:4;25973:1;25968:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;26013:62;26030:4;26045:15;26063:11;26013:8;:62::i;:::-;26114:15;:66;;;26195:11;26221:1;26265:4;26292;26312:15;26114:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25812:534;25757:589;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:96::-;2681:7;2710:24;2728:5;2710:24;:::i;:::-;2699:35;;2644:96;;;:::o;2746:122::-;2819:24;2837:5;2819:24;:::i;:::-;2812:5;2809:35;2799:63;;2858:1;2855;2848:12;2799:63;2746:122;:::o;2874:139::-;2920:5;2958:6;2945:20;2936:29;;2974:33;3001:5;2974:33;:::i;:::-;2874:139;;;;:::o;3019:474::-;3087:6;3095;3144:2;3132:9;3123:7;3119:23;3115:32;3112:119;;;3150:79;;:::i;:::-;3112:119;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3019:474;;;;;:::o;3499:90::-;3533:7;3576:5;3569:13;3562:21;3551:32;;3499:90;;;:::o;3595:109::-;3676:21;3691:5;3676:21;:::i;:::-;3671:3;3664:34;3595:109;;:::o;3710:210::-;3797:4;3835:2;3824:9;3820:18;3812:26;;3848:65;3910:1;3899:9;3895:17;3886:6;3848:65;:::i;:::-;3710:210;;;;:::o;3926:329::-;3985:6;4034:2;4022:9;4013:7;4009:23;4005:32;4002:119;;;4040:79;;:::i;:::-;4002:119;4160:1;4185:53;4230:7;4221:6;4210:9;4206:22;4185:53;:::i;:::-;4175:63;;4131:117;3926:329;;;;:::o;4261:60::-;4289:3;4310:5;4303:12;;4261:60;;;:::o;4327:142::-;4377:9;4410:53;4428:34;4437:24;4455:5;4437:24;:::i;:::-;4428:34;:::i;:::-;4410:53;:::i;:::-;4397:66;;4327:142;;;:::o;4475:126::-;4525:9;4558:37;4589:5;4558:37;:::i;:::-;4545:50;;4475:126;;;:::o;4607:153::-;4684:9;4717:37;4748:5;4717:37;:::i;:::-;4704:50;;4607:153;;;:::o;4766:185::-;4880:64;4938:5;4880:64;:::i;:::-;4875:3;4868:77;4766:185;;:::o;4957:276::-;5077:4;5115:2;5104:9;5100:18;5092:26;;5128:98;5223:1;5212:9;5208:17;5199:6;5128:98;:::i;:::-;4957:276;;;;:::o;5239:118::-;5326:24;5344:5;5326:24;:::i;:::-;5321:3;5314:37;5239:118;;:::o;5363:222::-;5456:4;5494:2;5483:9;5479:18;5471:26;;5507:71;5575:1;5564:9;5560:17;5551:6;5507:71;:::i;:::-;5363:222;;;;:::o;5591:329::-;5650:6;5699:2;5687:9;5678:7;5674:23;5670:32;5667:119;;;5705:79;;:::i;:::-;5667:119;5825:1;5850:53;5895:7;5886:6;5875:9;5871:22;5850:53;:::i;:::-;5840:63;;5796:117;5591:329;;;;:::o;5926:619::-;6003:6;6011;6019;6068:2;6056:9;6047:7;6043:23;6039:32;6036:119;;;6074:79;;:::i;:::-;6036:119;6194:1;6219:53;6264:7;6255:6;6244:9;6240:22;6219:53;:::i;:::-;6209:63;;6165:117;6321:2;6347:53;6392:7;6383:6;6372:9;6368:22;6347:53;:::i;:::-;6337:63;;6292:118;6449:2;6475:53;6520:7;6511:6;6500:9;6496:22;6475:53;:::i;:::-;6465:63;;6420:118;5926:619;;;;;:::o;6551:118::-;6638:24;6656:5;6638:24;:::i;:::-;6633:3;6626:37;6551:118;;:::o;6675:222::-;6768:4;6806:2;6795:9;6791:18;6783:26;;6819:71;6887:1;6876:9;6872:17;6863:6;6819:71;:::i;:::-;6675:222;;;;:::o;6903:86::-;6938:7;6978:4;6971:5;6967:16;6956:27;;6903:86;;;:::o;6995:112::-;7078:22;7094:5;7078:22;:::i;:::-;7073:3;7066:35;6995:112;;:::o;7113:214::-;7202:4;7240:2;7229:9;7225:18;7217:26;;7253:67;7317:1;7306:9;7302:17;7293:6;7253:67;:::i;:::-;7113:214;;;;:::o;7333:116::-;7403:21;7418:5;7403:21;:::i;:::-;7396:5;7393:32;7383:60;;7439:1;7436;7429:12;7383:60;7333:116;:::o;7455:133::-;7498:5;7536:6;7523:20;7514:29;;7552:30;7576:5;7552:30;:::i;:::-;7455:133;;;;:::o;7594:468::-;7659:6;7667;7716:2;7704:9;7695:7;7691:23;7687:32;7684:119;;;7722:79;;:::i;:::-;7684:119;7842:1;7867:53;7912:7;7903:6;7892:9;7888:22;7867:53;:::i;:::-;7857:63;;7813:117;7969:2;7995:50;8037:7;8028:6;8017:9;8013:22;7995:50;:::i;:::-;7985:60;;7940:115;7594:468;;;;;:::o;8068:323::-;8124:6;8173:2;8161:9;8152:7;8148:23;8144:32;8141:119;;;8179:79;;:::i;:::-;8141:119;8299:1;8324:50;8366:7;8357:6;8346:9;8342:22;8324:50;:::i;:::-;8314:60;;8270:114;8068:323;;;;:::o;8397:110::-;8448:7;8477:24;8495:5;8477:24;:::i;:::-;8466:35;;8397:110;;;:::o;8513:150::-;8600:38;8632:5;8600:38;:::i;:::-;8593:5;8590:49;8580:77;;8653:1;8650;8643:12;8580:77;8513:150;:::o;8669:167::-;8729:5;8767:6;8754:20;8745:29;;8783:47;8824:5;8783:47;:::i;:::-;8669:167;;;;:::o;8842:502::-;8924:6;8932;8981:2;8969:9;8960:7;8956:23;8952:32;8949:119;;;8987:79;;:::i;:::-;8949:119;9107:1;9132:67;9191:7;9182:6;9171:9;9167:22;9132:67;:::i;:::-;9122:77;;9078:131;9248:2;9274:53;9319:7;9310:6;9299:9;9295:22;9274:53;:::i;:::-;9264:63;;9219:118;8842:502;;;;;:::o;9350:474::-;9418:6;9426;9475:2;9463:9;9454:7;9450:23;9446:32;9443:119;;;9481:79;;:::i;:::-;9443:119;9601:1;9626:53;9671:7;9662:6;9651:9;9647:22;9626:53;:::i;:::-;9616:63;;9572:117;9728:2;9754:53;9799:7;9790:6;9779:9;9775:22;9754:53;:::i;:::-;9744:63;;9699:118;9350:474;;;;;:::o;9830:182::-;9970:34;9966:1;9958:6;9954:14;9947:58;9830:182;:::o;10018:366::-;10160:3;10181:67;10245:2;10240:3;10181:67;:::i;:::-;10174:74;;10257:93;10346:3;10257:93;:::i;:::-;10375:2;10370:3;10366:12;10359:19;;10018:366;;;:::o;10390:419::-;10556:4;10594:2;10583:9;10579:18;10571:26;;10643:9;10637:4;10633:20;10629:1;10618:9;10614:17;10607:47;10671:131;10797:4;10671:131;:::i;:::-;10663:139;;10390:419;;;:::o;10815:170::-;10955:22;10951:1;10943:6;10939:14;10932:46;10815:170;:::o;10991:366::-;11133:3;11154:67;11218:2;11213:3;11154:67;:::i;:::-;11147:74;;11230:93;11319:3;11230:93;:::i;:::-;11348:2;11343:3;11339:12;11332:19;;10991:366;;;:::o;11363:419::-;11529:4;11567:2;11556:9;11552:18;11544:26;;11616:9;11610:4;11606:20;11602:1;11591:9;11587:17;11580:47;11644:131;11770:4;11644:131;:::i;:::-;11636:139;;11363:419;;;:::o;11788:180::-;11836:77;11833:1;11826:88;11933:4;11930:1;11923:15;11957:4;11954:1;11947:15;11974:191;12014:3;12033:20;12051:1;12033:20;:::i;:::-;12028:25;;12067:20;12085:1;12067:20;:::i;:::-;12062:25;;12110:1;12107;12103:9;12096:16;;12131:3;12128:1;12125:10;12122:36;;;12138:18;;:::i;:::-;12122:36;11974:191;;;;:::o;12171:180::-;12219:77;12216:1;12209:88;12316:4;12313:1;12306:15;12340:4;12337:1;12330:15;12357:320;12401:6;12438:1;12432:4;12428:12;12418:22;;12485:1;12479:4;12475:12;12506:18;12496:81;;12562:4;12554:6;12550:17;12540:27;;12496:81;12624:2;12616:6;12613:14;12593:18;12590:38;12587:84;;12643:18;;:::i;:::-;12587:84;12408:269;12357:320;;;:::o;12683:410::-;12723:7;12746:20;12764:1;12746:20;:::i;:::-;12741:25;;12780:20;12798:1;12780:20;:::i;:::-;12775:25;;12835:1;12832;12828:9;12857:30;12875:11;12857:30;:::i;:::-;12846:41;;13036:1;13027:7;13023:15;13020:1;13017:22;12997:1;12990:9;12970:83;12947:139;;13066:18;;:::i;:::-;12947:139;12731:362;12683:410;;;;:::o;13099:227::-;13239:34;13235:1;13227:6;13223:14;13216:58;13308:10;13303:2;13295:6;13291:15;13284:35;13099:227;:::o;13332:366::-;13474:3;13495:67;13559:2;13554:3;13495:67;:::i;:::-;13488:74;;13571:93;13660:3;13571:93;:::i;:::-;13689:2;13684:3;13680:12;13673:19;;13332:366;;;:::o;13704:419::-;13870:4;13908:2;13897:9;13893:18;13885:26;;13957:9;13951:4;13947:20;13943:1;13932:9;13928:17;13921:47;13985:131;14111:4;13985:131;:::i;:::-;13977:139;;13704:419;;;:::o;14129:244::-;14269:34;14265:1;14257:6;14253:14;14246:58;14338:27;14333:2;14325:6;14321:15;14314:52;14129:244;:::o;14379:366::-;14521:3;14542:67;14606:2;14601:3;14542:67;:::i;:::-;14535:74;;14618:93;14707:3;14618:93;:::i;:::-;14736:2;14731:3;14727:12;14720:19;;14379:366;;;:::o;14751:419::-;14917:4;14955:2;14944:9;14940:18;14932:26;;15004:9;14998:4;14994:20;14990:1;14979:9;14975:17;14968:47;15032:131;15158:4;15032:131;:::i;:::-;15024:139;;14751:419;;;:::o;15176:143::-;15233:5;15264:6;15258:13;15249:22;;15280:33;15307:5;15280:33;:::i;:::-;15176:143;;;;:::o;15325:351::-;15395:6;15444:2;15432:9;15423:7;15419:23;15415:32;15412:119;;;15450:79;;:::i;:::-;15412:119;15570:1;15595:64;15651:7;15642:6;15631:9;15627:22;15595:64;:::i;:::-;15585:74;;15541:128;15325:351;;;;:::o;15682:164::-;15822:16;15818:1;15810:6;15806:14;15799:40;15682:164;:::o;15852:366::-;15994:3;16015:67;16079:2;16074:3;16015:67;:::i;:::-;16008:74;;16091:93;16180:3;16091:93;:::i;:::-;16209:2;16204:3;16200:12;16193:19;;15852:366;;;:::o;16224:419::-;16390:4;16428:2;16417:9;16413:18;16405:26;;16477:9;16471:4;16467:20;16463:1;16452:9;16448:17;16441:47;16505:131;16631:4;16505:131;:::i;:::-;16497:139;;16224:419;;;:::o;16649:332::-;16770:4;16808:2;16797:9;16793:18;16785:26;;16821:71;16889:1;16878:9;16874:17;16865:6;16821:71;:::i;:::-;16902:72;16970:2;16959:9;16955:18;16946:6;16902:72;:::i;:::-;16649:332;;;;;:::o;16987:137::-;17041:5;17072:6;17066:13;17057:22;;17088:30;17112:5;17088:30;:::i;:::-;16987:137;;;;:::o;17130:345::-;17197:6;17246:2;17234:9;17225:7;17221:23;17217:32;17214:119;;;17252:79;;:::i;:::-;17214:119;17372:1;17397:61;17450:7;17441:6;17430:9;17426:22;17397:61;:::i;:::-;17387:71;;17343:125;17130:345;;;;:::o;17481:224::-;17621:34;17617:1;17609:6;17605:14;17598:58;17690:7;17685:2;17677:6;17673:15;17666:32;17481:224;:::o;17711:366::-;17853:3;17874:67;17938:2;17933:3;17874:67;:::i;:::-;17867:74;;17950:93;18039:3;17950:93;:::i;:::-;18068:2;18063:3;18059:12;18052:19;;17711:366;;;:::o;18083:419::-;18249:4;18287:2;18276:9;18272:18;18264:26;;18336:9;18330:4;18326:20;18322:1;18311:9;18307:17;18300:47;18364:131;18490:4;18364:131;:::i;:::-;18356:139;;18083:419;;;:::o;18508:225::-;18648:34;18644:1;18636:6;18632:14;18625:58;18717:8;18712:2;18704:6;18700:15;18693:33;18508:225;:::o;18739:366::-;18881:3;18902:67;18966:2;18961:3;18902:67;:::i;:::-;18895:74;;18978:93;19067:3;18978:93;:::i;:::-;19096:2;19091:3;19087:12;19080:19;;18739:366;;;:::o;19111:419::-;19277:4;19315:2;19304:9;19300:18;19292:26;;19364:9;19358:4;19354:20;19350:1;19339:9;19335:17;19328:47;19392:131;19518:4;19392:131;:::i;:::-;19384:139;;19111:419;;;:::o;19536:223::-;19676:34;19672:1;19664:6;19660:14;19653:58;19745:6;19740:2;19732:6;19728:15;19721:31;19536:223;:::o;19765:366::-;19907:3;19928:67;19992:2;19987:3;19928:67;:::i;:::-;19921:74;;20004:93;20093:3;20004:93;:::i;:::-;20122:2;20117:3;20113:12;20106:19;;19765:366;;;:::o;20137:419::-;20303:4;20341:2;20330:9;20326:18;20318:26;;20390:9;20384:4;20380:20;20376:1;20365:9;20361:17;20354:47;20418:131;20544:4;20418:131;:::i;:::-;20410:139;;20137:419;;;:::o;20562:221::-;20702:34;20698:1;20690:6;20686:14;20679:58;20771:4;20766:2;20758:6;20754:15;20747:29;20562:221;:::o;20789:366::-;20931:3;20952:67;21016:2;21011:3;20952:67;:::i;:::-;20945:74;;21028:93;21117:3;21028:93;:::i;:::-;21146:2;21141:3;21137:12;21130:19;;20789:366;;;:::o;21161:419::-;21327:4;21365:2;21354:9;21350:18;21342:26;;21414:9;21408:4;21404:20;21400:1;21389:9;21385:17;21378:47;21442:131;21568:4;21442:131;:::i;:::-;21434:139;;21161:419;;;:::o;21586:224::-;21726:34;21722:1;21714:6;21710:14;21703:58;21795:7;21790:2;21782:6;21778:15;21771:32;21586:224;:::o;21816:366::-;21958:3;21979:67;22043:2;22038:3;21979:67;:::i;:::-;21972:74;;22055:93;22144:3;22055:93;:::i;:::-;22173:2;22168:3;22164:12;22157:19;;21816:366;;;:::o;22188:419::-;22354:4;22392:2;22381:9;22377:18;22369:26;;22441:9;22435:4;22431:20;22427:1;22416:9;22412:17;22405:47;22469:131;22595:4;22469:131;:::i;:::-;22461:139;;22188:419;;;:::o;22613:222::-;22753:34;22749:1;22741:6;22737:14;22730:58;22822:5;22817:2;22809:6;22805:15;22798:30;22613:222;:::o;22841:366::-;22983:3;23004:67;23068:2;23063:3;23004:67;:::i;:::-;22997:74;;23080:93;23169:3;23080:93;:::i;:::-;23198:2;23193:3;23189:12;23182:19;;22841:366;;;:::o;23213:419::-;23379:4;23417:2;23406:9;23402:18;23394:26;;23466:9;23460:4;23456:20;23452:1;23441:9;23437:17;23430:47;23494:131;23620:4;23494:131;:::i;:::-;23486:139;;23213:419;;;:::o;23638:172::-;23778:24;23774:1;23766:6;23762:14;23755:48;23638:172;:::o;23816:366::-;23958:3;23979:67;24043:2;24038:3;23979:67;:::i;:::-;23972:74;;24055:93;24144:3;24055:93;:::i;:::-;24173:2;24168:3;24164:12;24157:19;;23816:366;;;:::o;24188:419::-;24354:4;24392:2;24381:9;24377:18;24369:26;;24441:9;24435:4;24431:20;24427:1;24416:9;24412:17;24405:47;24469:131;24595:4;24469:131;:::i;:::-;24461:139;;24188:419;;;:::o;24613:240::-;24753:34;24749:1;24741:6;24737:14;24730:58;24822:23;24817:2;24809:6;24805:15;24798:48;24613:240;:::o;24859:366::-;25001:3;25022:67;25086:2;25081:3;25022:67;:::i;:::-;25015:74;;25098:93;25187:3;25098:93;:::i;:::-;25216:2;25211:3;25207:12;25200:19;;24859:366;;;:::o;25231:419::-;25397:4;25435:2;25424:9;25420:18;25412:26;;25484:9;25478:4;25474:20;25470:1;25459:9;25455:17;25448:47;25512:131;25638:4;25512:131;:::i;:::-;25504:139;;25231:419;;;:::o;25656:169::-;25796:21;25792:1;25784:6;25780:14;25773:45;25656:169;:::o;25831:366::-;25973:3;25994:67;26058:2;26053:3;25994:67;:::i;:::-;25987:74;;26070:93;26159:3;26070:93;:::i;:::-;26188:2;26183:3;26179:12;26172:19;;25831:366;;;:::o;26203:419::-;26369:4;26407:2;26396:9;26392:18;26384:26;;26456:9;26450:4;26446:20;26442:1;26431:9;26427:17;26420:47;26484:131;26610:4;26484:131;:::i;:::-;26476:139;;26203:419;;;:::o;26628:241::-;26768:34;26764:1;26756:6;26752:14;26745:58;26837:24;26832:2;26824:6;26820:15;26813:49;26628:241;:::o;26875:366::-;27017:3;27038:67;27102:2;27097:3;27038:67;:::i;:::-;27031:74;;27114:93;27203:3;27114:93;:::i;:::-;27232:2;27227:3;27223:12;27216:19;;26875:366;;;:::o;27247:419::-;27413:4;27451:2;27440:9;27436:18;27428:26;;27500:9;27494:4;27490:20;27486:1;27475:9;27471:17;27464:47;27528:131;27654:4;27528:131;:::i;:::-;27520:139;;27247:419;;;:::o;27672:180::-;27720:77;27717:1;27710:88;27817:4;27814:1;27807:15;27841:4;27838:1;27831:15;27858:185;27898:1;27915:20;27933:1;27915:20;:::i;:::-;27910:25;;27949:20;27967:1;27949:20;:::i;:::-;27944:25;;27988:1;27978:35;;27993:18;;:::i;:::-;27978:35;28035:1;28032;28028:9;28023:14;;27858:185;;;;:::o;28049:194::-;28089:4;28109:20;28127:1;28109:20;:::i;:::-;28104:25;;28143:20;28161:1;28143:20;:::i;:::-;28138:25;;28187:1;28184;28180:9;28172:17;;28211:1;28205:4;28202:11;28199:37;;;28216:18;;:::i;:::-;28199:37;28049:194;;;;:::o;28249:225::-;28389:34;28385:1;28377:6;28373:14;28366:58;28458:8;28453:2;28445:6;28441:15;28434:33;28249:225;:::o;28480:366::-;28622:3;28643:67;28707:2;28702:3;28643:67;:::i;:::-;28636:74;;28719:93;28808:3;28719:93;:::i;:::-;28837:2;28832:3;28828:12;28821:19;;28480:366;;;:::o;28852:419::-;29018:4;29056:2;29045:9;29041:18;29033:26;;29105:9;29099:4;29095:20;29091:1;29080:9;29076:17;29069:47;29133:131;29259:4;29133:131;:::i;:::-;29125:139;;28852:419;;;:::o;29277:147::-;29378:11;29415:3;29400:18;;29277:147;;;;:::o;29430:114::-;;:::o;29550:398::-;29709:3;29730:83;29811:1;29806:3;29730:83;:::i;:::-;29723:90;;29822:93;29911:3;29822:93;:::i;:::-;29940:1;29935:3;29931:11;29924:18;;29550:398;;;:::o;29954:379::-;30138:3;30160:147;30303:3;30160:147;:::i;:::-;30153:154;;30324:3;30317:10;;29954:379;;;:::o;30339:180::-;30387:77;30384:1;30377:88;30484:4;30481:1;30474:15;30508:4;30505:1;30498:15;30525:180;30573:77;30570:1;30563:88;30670:4;30667:1;30660:15;30694:4;30691:1;30684:15;30711:143;30768:5;30799:6;30793:13;30784:22;;30815:33;30842:5;30815:33;:::i;:::-;30711:143;;;;:::o;30860:351::-;30930:6;30979:2;30967:9;30958:7;30954:23;30950:32;30947:119;;;30985:79;;:::i;:::-;30947:119;31105:1;31130:64;31186:7;31177:6;31166:9;31162:22;31130:64;:::i;:::-;31120:74;;31076:128;30860:351;;;;:::o;31217:85::-;31262:7;31291:5;31280:16;;31217:85;;;:::o;31308:158::-;31366:9;31399:61;31417:42;31426:32;31452:5;31426:32;:::i;:::-;31417:42;:::i;:::-;31399:61;:::i;:::-;31386:74;;31308:158;;;:::o;31472:147::-;31567:45;31606:5;31567:45;:::i;:::-;31562:3;31555:58;31472:147;;:::o;31625:114::-;31692:6;31726:5;31720:12;31710:22;;31625:114;;;:::o;31745:184::-;31844:11;31878:6;31873:3;31866:19;31918:4;31913:3;31909:14;31894:29;;31745:184;;;;:::o;31935:132::-;32002:4;32025:3;32017:11;;32055:4;32050:3;32046:14;32038:22;;31935:132;;;:::o;32073:108::-;32150:24;32168:5;32150:24;:::i;:::-;32145:3;32138:37;32073:108;;:::o;32187:179::-;32256:10;32277:46;32319:3;32311:6;32277:46;:::i;:::-;32355:4;32350:3;32346:14;32332:28;;32187:179;;;;:::o;32372:113::-;32442:4;32474;32469:3;32465:14;32457:22;;32372:113;;;:::o;32521:732::-;32640:3;32669:54;32717:5;32669:54;:::i;:::-;32739:86;32818:6;32813:3;32739:86;:::i;:::-;32732:93;;32849:56;32899:5;32849:56;:::i;:::-;32928:7;32959:1;32944:284;32969:6;32966:1;32963:13;32944:284;;;33045:6;33039:13;33072:63;33131:3;33116:13;33072:63;:::i;:::-;33065:70;;33158:60;33211:6;33158:60;:::i;:::-;33148:70;;33004:224;32991:1;32988;32984:9;32979:14;;32944:284;;;32948:14;33244:3;33237:10;;32645:608;;;32521:732;;;;:::o;33259:831::-;33522:4;33560:3;33549:9;33545:19;33537:27;;33574:71;33642:1;33631:9;33627:17;33618:6;33574:71;:::i;:::-;33655:80;33731:2;33720:9;33716:18;33707:6;33655:80;:::i;:::-;33782:9;33776:4;33772:20;33767:2;33756:9;33752:18;33745:48;33810:108;33913:4;33904:6;33810:108;:::i;:::-;33802:116;;33928:72;33996:2;33985:9;33981:18;33972:6;33928:72;:::i;:::-;34010:73;34078:3;34067:9;34063:19;34054:6;34010:73;:::i;:::-;33259:831;;;;;;;;:::o

Swarm Source

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