ETH Price: $2,509.68 (+1.00%)

Token

OHAPA KACHINA (OHAPA)
 

Overview

Max Total Supply

250,000,000 OHAPA

Holders

46

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: OHAPA
Balance
2,012,391.858483796474838547 OHAPA

Value
$0.00
0x33e3d2d6f29bb68d8d5f168dea367c304a6d3be4
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:
OHAPA

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-12
*/

// SPDX-License-Identifier: MIT

/*
https://www.ohapa.vip/
https://twitter.com/OhapaKachina
https://t.me/OhapaKachina
*/

pragma solidity =0.8.20;
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;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

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

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);

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

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

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    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;

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

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    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 _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 {}
}

library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

contract OHAPA is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address public marketingWallet;
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 private buyMarketingFee;
    uint256 private buyLiquidityFee;
    uint256 public sellTotalFees;
    uint256 private sellMarketingFee;
    uint256 private sellLiquidityFee;
    uint256 private tokensForMarketing;
    uint256 private tokensForLiquidity;
    uint256 private previousFee;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private 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 SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    constructor() ERC20("OHAPA KACHINA", "OHAPA") {
        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 _buyMarketingFee = 30;
        uint256 _buyLiquidityFee = 0;
        uint256 _sellMarketingFee = 70;
        uint256 _sellLiquidityFee = 0;

        uint256 totalSupply = 250000000 * 1e18;

        maxTransactionAmount = 5000000 * 1e18;
        maxWallet = 5000000 * 1e18;
        swapTokensAtAmount = (totalSupply * 5) / 10000;

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;
        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        previousFee = sellTotalFees;

        marketingWallet = address(0xA04D4712f2C80C5B7C00743df386A748c8471334);

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

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

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxWalletAndTxnAmount(uint256 newTxnNum, uint256 newMaxWalletNum) external onlyOwner {
        require(
            newTxnNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxTxn lower than 0.5%"
        );
        require(
            newMaxWalletNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxWallet lower than 0.5%"
        );
        maxWallet = newMaxWalletNum * (10**18);
        maxTransactionAmount = newTxnNum * (10**18);
    }

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

    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;
        require(buyTotalFees <= 20, "Must keep fees at 20% or less");
    }

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        previousFee = sellTotalFees;
        require(sellTotalFees <= 99, "Must keep fees at 99% or less");
    }

    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 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 (
                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 (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;

        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

        super._transfer(from, to, amount);
        sellTotalFees = previousFee;
    }

    function swapTokensForEth(uint256 tokenAmount) private {

        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,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            deadAddress,
            block.timestamp
        );
    }

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

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

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

        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(
            totalTokensToSwap
        );

        uint256 ethForLiquidity = ethBalance - ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

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

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":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"enableTrading","outputs":[],"stateMutability":"nonpayable","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":"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTxnNum","type":"uint256"},{"internalType":"uint256","name":"newMaxWalletNum","type":"uint256"}],"name":"updateMaxWalletAndTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040525f600a5f6101000a81548160ff0219169083151502179055505f600a60016101000a81548160ff02191690831515021790555034801562000043575f80fd5b506040518060400160405280600d81526020017f4f48415041204b414348494e41000000000000000000000000000000000000008152506040518060400160405280600581526020017f4f484150410000000000000000000000000000000000000000000000000000008152508160039081620000c1919062000c5a565b508060049081620000d3919062000c5a565b505050620000f6620000ea620004ce60201b60201c565b620004d560201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001218160016200059860201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001c5919062000da3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200022b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000251919062000da3565b6040518363ffffffff1660e01b81526004016200027092919062000de4565b6020604051808303815f875af11580156200028d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002b3919062000da3565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620002fb60a05160016200059860201b60201c565b6200031060a05160016200067f60201b60201c565b5f601e90505f80604690505f806acecb8f27f4200f3a00000090506a0422ca8b0a00a4250000006007819055506a0422ca8b0a00a42500000060098190555061271060058262000361919062000e3c565b6200036d919062000eb3565b60088190555084600c8190555083600d81905550600d54600c5462000393919062000eea565b600b8190555082600f8190555081601081905550601054600f54620003b9919062000eea565b600e81905550600e5460138190555073a04d4712f2c80c5b7c00743df386a748c847133460065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200043e620004306200071d60201b60201c565b60016200074560201b60201c565b620004513060016200074560201b60201c565b6200046661dead60016200074560201b60201c565b620004886200047a6200071d60201b60201c565b60016200059860201b60201c565b6200049b3060016200059860201b60201c565b620004b061dead60016200059860201b60201c565b620004c233826200087c60201b60201c565b50505050505062001073565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005a8620004ce60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005ce6200071d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000627576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200061e9062000f82565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000755620004ce60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200077b6200071d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007d4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007cb9062000f82565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000870919062000fbe565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008e49062001027565b60405180910390fd5b620009005f8383620009ec60201b60201c565b8060025f82825462000913919062000eea565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000967919062000eea565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009cd919062001058565b60405180910390a3620009e85f8383620009f160201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000a7257607f821691505b60208210810362000a885762000a8762000a2d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000aec7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000aaf565b62000af8868362000aaf565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000b4262000b3c62000b368462000b10565b62000b19565b62000b10565b9050919050565b5f819050919050565b62000b5d8362000b22565b62000b7562000b6c8262000b49565b84845462000abb565b825550505050565b5f90565b62000b8b62000b7d565b62000b9881848462000b52565b505050565b5b8181101562000bbf5762000bb35f8262000b81565b60018101905062000b9e565b5050565b601f82111562000c0e5762000bd88162000a8e565b62000be38462000aa0565b8101602085101562000bf3578190505b62000c0b62000c028562000aa0565b83018262000b9d565b50505b505050565b5f82821c905092915050565b5f62000c305f198460080262000c13565b1980831691505092915050565b5f62000c4a838362000c1f565b9150826002028217905092915050565b62000c6582620009f6565b67ffffffffffffffff81111562000c815762000c8062000a00565b5b62000c8d825462000a5a565b62000c9a82828562000bc3565b5f60209050601f83116001811462000cd0575f841562000cbb578287015190505b62000cc7858262000c3d565b86555062000d36565b601f19841662000ce08662000a8e565b5f5b8281101562000d095784890151825560018201915060208501945060208101905062000ce2565b8683101562000d29578489015162000d25601f89168262000c1f565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000d6d8262000d42565b9050919050565b62000d7f8162000d61565b811462000d8a575f80fd5b50565b5f8151905062000d9d8162000d74565b92915050565b5f6020828403121562000dbb5762000dba62000d3e565b5b5f62000dca8482850162000d8d565b91505092915050565b62000dde8162000d61565b82525050565b5f60408201905062000df95f83018562000dd3565b62000e08602083018462000dd3565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000e488262000b10565b915062000e558362000b10565b925082820262000e658162000b10565b9150828204841483151762000e7f5762000e7e62000e0f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000ebf8262000b10565b915062000ecc8362000b10565b92508262000edf5762000ede62000e86565b5b828204905092915050565b5f62000ef68262000b10565b915062000f038362000b10565b925082820190508082111562000f1e5762000f1d62000e0f565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000f6a60208362000f24565b915062000f778262000f34565b602082019050919050565b5f6020820190508181035f83015262000f9b8162000f5c565b9050919050565b5f8115159050919050565b62000fb88162000fa2565b82525050565b5f60208201905062000fd35f83018462000fad565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f6200100f601f8362000f24565b91506200101c8262000fd9565b602082019050919050565b5f6020820190508181035f830152620010408162001001565b9050919050565b620010528162000b10565b82525050565b5f6020820190506200106d5f83018462001047565b92915050565b60805160a05161406c620010bf5f395f8181610b7d015261124201525f81816109a901528181612a9701528181612b7601528181612b9d01528181612c330152612c5a015261406c5ff3fe6080604052600436106101fc575f3560e01c806375f0a8741161010c578063bbc0c7421161009f578063d85ba0631161006e578063d85ba06314610725578063dd62ed3e1461074f578063e2f456051461078b578063f2fde38b146107b5578063f8b45b05146107dd57610203565b8063bbc0c7421461066d578063c024666814610697578063c8c8ebe4146106bf578063d257b34f146106e957610203565b806396188399116100db57806396188399146105a55780639a7a23d6146105cd578063a457c2d7146105f5578063a9059cbb1461063157610203565b806375f0a874146105115780638a8c523c1461053b5780638da5cb5b1461055157806395d89b411461057b57610203565b8063395093511161018f5780636a486a8e1161015e5780636a486a8e146104435780636ddd17131461046d57806370a0823114610497578063715018a6146104d35780637571336a146104e957610203565b8063395093511461037957806349bd5a5e146103b55780634fbee193146103df57806366ca9b831461041b57610203565b806318160ddd116101cb57806318160ddd146102bf57806323b872dd146102e957806327c8f83514610325578063313ce5671461034f57610203565b806302dbd8f81461020757806306fdde031461022f578063095ea7b3146102595780631694505e1461029557610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061022d60048036038101906102289190612d3d565b610807565b005b34801561023a575f80fd5b506102436108fa565b6040516102509190612e05565b60405180910390f35b348015610264575f80fd5b5061027f600480360381019061027a9190612e7f565b61098a565b60405161028c9190612ed7565b60405180910390f35b3480156102a0575f80fd5b506102a96109a7565b6040516102b69190612f4b565b60405180910390f35b3480156102ca575f80fd5b506102d36109cb565b6040516102e09190612f73565b60405180910390f35b3480156102f4575f80fd5b5061030f600480360381019061030a9190612f8c565b6109d4565b60405161031c9190612ed7565b60405180910390f35b348015610330575f80fd5b50610339610ac6565b6040516103469190612feb565b60405180910390f35b34801561035a575f80fd5b50610363610acc565b604051610370919061301f565b60405180910390f35b348015610384575f80fd5b5061039f600480360381019061039a9190612e7f565b610ad4565b6040516103ac9190612ed7565b60405180910390f35b3480156103c0575f80fd5b506103c9610b7b565b6040516103d69190612feb565b60405180910390f35b3480156103ea575f80fd5b5061040560048036038101906104009190613038565b610b9f565b6040516104129190612ed7565b60405180910390f35b348015610426575f80fd5b50610441600480360381019061043c9190612d3d565b610bf1565b005b34801561044e575f80fd5b50610457610cdb565b6040516104649190612f73565b60405180910390f35b348015610478575f80fd5b50610481610ce1565b60405161048e9190612ed7565b60405180910390f35b3480156104a2575f80fd5b506104bd60048036038101906104b89190613038565b610cf4565b6040516104ca9190612f73565b60405180910390f35b3480156104de575f80fd5b506104e7610d39565b005b3480156104f4575f80fd5b5061050f600480360381019061050a919061308d565b610dc0565b005b34801561051c575f80fd5b50610525610e94565b6040516105329190612feb565b60405180910390f35b348015610546575f80fd5b5061054f610eb9565b005b34801561055c575f80fd5b50610565610f6c565b6040516105729190612feb565b60405180910390f35b348015610586575f80fd5b5061058f610f94565b60405161059c9190612e05565b60405180910390f35b3480156105b0575f80fd5b506105cb60048036038101906105c69190612d3d565b611024565b005b3480156105d8575f80fd5b506105f360048036038101906105ee919061308d565b6111c4565b005b348015610600575f80fd5b5061061b60048036038101906106169190612e7f565b6112dc565b6040516106289190612ed7565b60405180910390f35b34801561063c575f80fd5b5061065760048036038101906106529190612e7f565b6113c2565b6040516106649190612ed7565b60405180910390f35b348015610678575f80fd5b506106816113df565b60405161068e9190612ed7565b60405180910390f35b3480156106a2575f80fd5b506106bd60048036038101906106b8919061308d565b6113f1565b005b3480156106ca575f80fd5b506106d3611513565b6040516106e09190612f73565b60405180910390f35b3480156106f4575f80fd5b5061070f600480360381019061070a91906130cb565b611519565b60405161071c9190612ed7565b60405180910390f35b348015610730575f80fd5b5061073961166d565b6040516107469190612f73565b60405180910390f35b34801561075a575f80fd5b50610775600480360381019061077091906130f6565b611673565b6040516107829190612f73565b60405180910390f35b348015610796575f80fd5b5061079f6116f5565b6040516107ac9190612f73565b60405180910390f35b3480156107c0575f80fd5b506107db60048036038101906107d69190613038565b6116fb565b005b3480156107e8575f80fd5b506107f16117f1565b6040516107fe9190612f73565b60405180910390f35b61080f6117f7565b73ffffffffffffffffffffffffffffffffffffffff1661082d610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614610883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087a9061317e565b60405180910390fd5b81600f8190555080601081905550601054600f546108a191906131c9565b600e81905550600e546013819055506063600e5411156108f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ed90613246565b60405180910390fd5b5050565b60606003805461090990613291565b80601f016020809104026020016040519081016040528092919081815260200182805461093590613291565b80156109805780601f1061095757610100808354040283529160200191610980565b820191905f5260205f20905b81548152906001019060200180831161096357829003601f168201915b5050505050905090565b5f61099d6109966117f7565b84846117fe565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b5f6109e08484846119c1565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a276117f7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9d90613331565b60405180910390fd5b610aba85610ab26117f7565b8584036117fe565b60019150509392505050565b61dead81565b5f6012905090565b5f610b71610ae06117f7565b848460015f610aed6117f7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610b6c91906131c9565b6117fe565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f60145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610bf96117f7565b73ffffffffffffffffffffffffffffffffffffffff16610c17610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614610c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c649061317e565b60405180910390fd5b81600c8190555080600d81905550600d54600c54610c8b91906131c9565b600b819055506014600b541115610cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cce90613399565b60405180910390fd5b5050565b600e5481565b600a60019054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d416117f7565b73ffffffffffffffffffffffffffffffffffffffff16610d5f610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614610db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dac9061317e565b60405180910390fd5b610dbe5f6123e0565b565b610dc86117f7565b73ffffffffffffffffffffffffffffffffffffffff16610de6610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614610e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e339061317e565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ec16117f7565b73ffffffffffffffffffffffffffffffffffffffff16610edf610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614610f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2c9061317e565b60405180910390fd5b6001600a5f6101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610fa390613291565b80601f0160208091040260200160405190810160405280929190818152602001828054610fcf90613291565b801561101a5780601f10610ff15761010080835404028352916020019161101a565b820191905f5260205f20905b815481529060010190602001808311610ffd57829003601f168201915b5050505050905090565b61102c6117f7565b73ffffffffffffffffffffffffffffffffffffffff1661104a610f6c565b73ffffffffffffffffffffffffffffffffffffffff16146110a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110979061317e565b60405180910390fd5b670de0b6b3a76400006103e860056110b66109cb565b6110c091906133b7565b6110ca9190613425565b6110d49190613425565b821015611116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110d906134c5565b60405180910390fd5b670de0b6b3a76400006103e8600561112c6109cb565b61113691906133b7565b6111409190613425565b61114a9190613425565b81101561118c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118390613553565b60405180910390fd5b670de0b6b3a7640000816111a091906133b7565b600981905550670de0b6b3a7640000826111ba91906133b7565b6007819055505050565b6111cc6117f7565b73ffffffffffffffffffffffffffffffffffffffff166111ea610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614611240576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112379061317e565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c5906135e1565b60405180910390fd5b6112d882826124a3565b5050565b5f8060015f6112e96117f7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a9061366f565b60405180910390fd5b6113b76113ae6117f7565b858584036117fe565b600191505092915050565b5f6113d56113ce6117f7565b84846119c1565b6001905092915050565b600a5f9054906101000a900460ff1681565b6113f96117f7565b73ffffffffffffffffffffffffffffffffffffffff16611417610f6c565b73ffffffffffffffffffffffffffffffffffffffff161461146d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114649061317e565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516115079190612ed7565b60405180910390a25050565b60075481565b5f6115226117f7565b73ffffffffffffffffffffffffffffffffffffffff16611540610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614611596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158d9061317e565b60405180910390fd5b620186a060016115a46109cb565b6115ae91906133b7565b6115b89190613425565b8210156115fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f1906136fd565b60405180910390fd5b6103e860056116076109cb565b61161191906133b7565b61161b9190613425565b82111561165d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116549061378b565b60405180910390fd5b8160088190555060019050919050565b600b5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b6117036117f7565b73ffffffffffffffffffffffffffffffffffffffff16611721610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e9061317e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc90613819565b60405180910390fd5b6117ee816123e0565b50565b60095481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361186c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611863906138a7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d190613935565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119b49190612f73565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a26906139c3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9490613a51565b60405180910390fd5b5f8103611ab457611aaf83835f612541565b6123db565b611abc610f6c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b2a5750611afa610f6c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b6257505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b9c575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bb55750600560149054906101000a900460ff16155b15611f8257600a5f9054906101000a900460ff16611ca85760145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611c68575060145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9e90613ab9565b60405180910390fd5b5b60165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611d45575060155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611dec57600754811115611d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8690613b47565b60405180910390fd5b600954611d9b83610cf4565b82611da691906131c9565b1115611de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dde90613baf565b60405180910390fd5b611f81565b60165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611e89575060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ed857600754811115611ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eca90613c3d565b60405180910390fd5b611f80565b60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611f7f57600954611f3283610cf4565b82611f3d91906131c9565b1115611f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7590613baf565b60405180910390fd5b5b5b5b5b5f611f8c30610cf4565b90505f6008548210159050808015611fb05750600a60019054906101000a900460ff165b8015611fc95750600560149054906101000a900460ff16155b801561201c575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561206f575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156120c2575060145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612105576001600560146101000a81548160ff0219169083151502179055506120ea6127b6565b5f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff1615905060145f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806121b4575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156121bd575f90505b5f81156123c25760165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561221b57505f600e54115b156122b357612248606461223a600e54886129b190919063ffffffff16565b6129c690919063ffffffff16565b9050600e546010548261225b91906133b7565b6122659190613425565b60125f82825461227591906131c9565b92505081905550600e54600f548261228d91906133b7565b6122979190613425565b60115f8282546122a791906131c9565b9250508190555061239f565b60165f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561230a57505f600b54115b1561239e576123376064612329600b54886129b190919063ffffffff16565b6129c690919063ffffffff16565b9050600b54600d548261234a91906133b7565b6123549190613425565b60125f82825461236491906131c9565b92505081905550600b54600c548261237c91906133b7565b6123869190613425565b60115f82825461239691906131c9565b925050819055505b5b5f8111156123b3576123b2873083612541565b5b80856123bf9190613c5b565b94505b6123cd878787612541565b601354600e81905550505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a6906139c3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361261d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261490613a51565b60405180910390fd5b6126288383836129db565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156126ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a290613cfe565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461273991906131c9565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161279d9190612f73565b60405180910390a36127b08484846129e0565b50505050565b5f6127c030610cf4565b90505f6011546012546127d391906131c9565b90505f808314806127e357505f82145b156127f0575050506129af565b60146008546127ff91906133b7565b83111561281857601460085461281591906133b7565b92505b5f6002836012548661282a91906133b7565b6128349190613425565b61283e9190613425565b90505f61285482866129e590919063ffffffff16565b90505f479050612863826129fa565b5f61287782476129e590919063ffffffff16565b90505f6128a187612893601154856129b190919063ffffffff16565b6129c690919063ffffffff16565b90505f81836128b09190613c5b565b90505f6012819055505f6011819055505f861180156128ce57505f81115b1561291b576128dd8682612c2d565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260125460405161291293929190613d1c565b60405180910390a15b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161296090613d7e565b5f6040518083038185875af1925050503d805f811461299a576040519150601f19603f3d011682016040523d82523d5f602084013e61299f565b606091505b5050809750505050505050505050505b565b5f81836129be91906133b7565b905092915050565b5f81836129d39190613425565b905092915050565b505050565b505050565b5f81836129f29190613c5b565b905092915050565b5f600267ffffffffffffffff811115612a1657612a15613d92565b5b604051908082528060200260200182016040528015612a445781602001602082028036833780820191505090505b50905030815f81518110612a5b57612a5a613dbf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612afe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b229190613e00565b81600181518110612b3657612b35613dbf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b9b307f0000000000000000000000000000000000000000000000000000000000000000846117fe565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612bfc959493929190613f1b565b5f604051808303815f87803b158015612c13575f80fd5b505af1158015612c25573d5f803e3d5ffd5b505050505050565b612c58307f0000000000000000000000000000000000000000000000000000000000000000846117fe565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8061dead426040518863ffffffff1660e01b8152600401612cbe96959493929190613f73565b60606040518083038185885af1158015612cda573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612cff9190613fe6565b5050505050565b5f80fd5b5f819050919050565b612d1c81612d0a565b8114612d26575f80fd5b50565b5f81359050612d3781612d13565b92915050565b5f8060408385031215612d5357612d52612d06565b5b5f612d6085828601612d29565b9250506020612d7185828601612d29565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612db2578082015181840152602081019050612d97565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612dd782612d7b565b612de18185612d85565b9350612df1818560208601612d95565b612dfa81612dbd565b840191505092915050565b5f6020820190508181035f830152612e1d8184612dcd565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612e4e82612e25565b9050919050565b612e5e81612e44565b8114612e68575f80fd5b50565b5f81359050612e7981612e55565b92915050565b5f8060408385031215612e9557612e94612d06565b5b5f612ea285828601612e6b565b9250506020612eb385828601612d29565b9150509250929050565b5f8115159050919050565b612ed181612ebd565b82525050565b5f602082019050612eea5f830184612ec8565b92915050565b5f819050919050565b5f612f13612f0e612f0984612e25565b612ef0565b612e25565b9050919050565b5f612f2482612ef9565b9050919050565b5f612f3582612f1a565b9050919050565b612f4581612f2b565b82525050565b5f602082019050612f5e5f830184612f3c565b92915050565b612f6d81612d0a565b82525050565b5f602082019050612f865f830184612f64565b92915050565b5f805f60608486031215612fa357612fa2612d06565b5b5f612fb086828701612e6b565b9350506020612fc186828701612e6b565b9250506040612fd286828701612d29565b9150509250925092565b612fe581612e44565b82525050565b5f602082019050612ffe5f830184612fdc565b92915050565b5f60ff82169050919050565b61301981613004565b82525050565b5f6020820190506130325f830184613010565b92915050565b5f6020828403121561304d5761304c612d06565b5b5f61305a84828501612e6b565b91505092915050565b61306c81612ebd565b8114613076575f80fd5b50565b5f8135905061308781613063565b92915050565b5f80604083850312156130a3576130a2612d06565b5b5f6130b085828601612e6b565b92505060206130c185828601613079565b9150509250929050565b5f602082840312156130e0576130df612d06565b5b5f6130ed84828501612d29565b91505092915050565b5f806040838503121561310c5761310b612d06565b5b5f61311985828601612e6b565b925050602061312a85828601612e6b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613168602083612d85565b915061317382613134565b602082019050919050565b5f6020820190508181035f8301526131958161315c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6131d382612d0a565b91506131de83612d0a565b92508282019050808211156131f6576131f561319c565b5b92915050565b7f4d757374206b656570206665657320617420393925206f72206c6573730000005f82015250565b5f613230601d83612d85565b915061323b826131fc565b602082019050919050565b5f6020820190508181035f83015261325d81613224565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806132a857607f821691505b6020821081036132bb576132ba613264565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f61331b602883612d85565b9150613326826132c1565b604082019050919050565b5f6020820190508181035f8301526133488161330f565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c6573730000005f82015250565b5f613383601d83612d85565b915061338e8261334f565b602082019050919050565b5f6020820190508181035f8301526133b081613377565b9050919050565b5f6133c182612d0a565b91506133cc83612d0a565b92508282026133da81612d0a565b915082820484148315176133f1576133f061319c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61342f82612d0a565b915061343a83612d0a565b92508261344a576134496133f8565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e355f8201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134af602183612d85565b91506134ba82613455565b604082019050919050565b5f6020820190508181035f8301526134dc816134a3565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f61353d602483612d85565b9150613548826134e3565b604082019050919050565b5f6020820190508181035f83015261356a81613531565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6135cb603983612d85565b91506135d682613571565b604082019050919050565b5f6020820190508181035f8301526135f8816135bf565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613659602583612d85565b9150613664826135ff565b604082019050919050565b5f6020820190508181035f8301526136868161364d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6136e7603583612d85565b91506136f28261368d565b604082019050919050565b5f6020820190508181035f830152613714816136db565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f613775603483612d85565b91506137808261371b565b604082019050919050565b5f6020820190508181035f8301526137a281613769565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613803602683612d85565b915061380e826137a9565b604082019050919050565b5f6020820190508181035f830152613830816137f7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613891602483612d85565b915061389c82613837565b604082019050919050565b5f6020820190508181035f8301526138be81613885565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61391f602283612d85565b915061392a826138c5565b604082019050919050565b5f6020820190508181035f83015261394c81613913565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6139ad602583612d85565b91506139b882613953565b604082019050919050565b5f6020820190508181035f8301526139da816139a1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613a3b602383612d85565b9150613a46826139e1565b604082019050919050565b5f6020820190508181035f830152613a6881613a2f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f613aa3601683612d85565b9150613aae82613a6f565b602082019050919050565b5f6020820190508181035f830152613ad081613a97565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f613b31603583612d85565b9150613b3c82613ad7565b604082019050919050565b5f6020820190508181035f830152613b5e81613b25565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613b99601383612d85565b9150613ba482613b65565b602082019050919050565b5f6020820190508181035f830152613bc681613b8d565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f613c27603683612d85565b9150613c3282613bcd565b604082019050919050565b5f6020820190508181035f830152613c5481613c1b565b9050919050565b5f613c6582612d0a565b9150613c7083612d0a565b9250828203905081811115613c8857613c8761319c565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613ce8602683612d85565b9150613cf382613c8e565b604082019050919050565b5f6020820190508181035f830152613d1581613cdc565b9050919050565b5f606082019050613d2f5f830186612f64565b613d3c6020830185612f64565b613d496040830184612f64565b949350505050565b5f81905092915050565b50565b5f613d695f83613d51565b9150613d7482613d5b565b5f82019050919050565b5f613d8882613d5e565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613dfa81612e55565b92915050565b5f60208284031215613e1557613e14612d06565b5b5f613e2284828501613dec565b91505092915050565b5f819050919050565b5f613e4e613e49613e4484613e2b565b612ef0565b612d0a565b9050919050565b613e5e81613e34565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613e9681612e44565b82525050565b5f613ea78383613e8d565b60208301905092915050565b5f602082019050919050565b5f613ec982613e64565b613ed38185613e6e565b9350613ede83613e7e565b805f5b83811015613f0e578151613ef58882613e9c565b9750613f0083613eb3565b925050600181019050613ee1565b5085935050505092915050565b5f60a082019050613f2e5f830188612f64565b613f3b6020830187613e55565b8181036040830152613f4d8186613ebf565b9050613f5c6060830185612fdc565b613f696080830184612f64565b9695505050505050565b5f60c082019050613f865f830189612fdc565b613f936020830188612f64565b613fa06040830187613e55565b613fad6060830186613e55565b613fba6080830185612fdc565b613fc760a0830184612f64565b979650505050505050565b5f81519050613fe081612d13565b92915050565b5f805f60608486031215613ffd57613ffc612d06565b5b5f61400a86828701613fd2565b935050602061401b86828701613fd2565b925050604061402c86828701613fd2565b915050925092509256fea264697066735822122049c709ed41b2f0529a3703bdf63e747e1d65fe9a8274055274a9566a645487f864736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101fc575f3560e01c806375f0a8741161010c578063bbc0c7421161009f578063d85ba0631161006e578063d85ba06314610725578063dd62ed3e1461074f578063e2f456051461078b578063f2fde38b146107b5578063f8b45b05146107dd57610203565b8063bbc0c7421461066d578063c024666814610697578063c8c8ebe4146106bf578063d257b34f146106e957610203565b806396188399116100db57806396188399146105a55780639a7a23d6146105cd578063a457c2d7146105f5578063a9059cbb1461063157610203565b806375f0a874146105115780638a8c523c1461053b5780638da5cb5b1461055157806395d89b411461057b57610203565b8063395093511161018f5780636a486a8e1161015e5780636a486a8e146104435780636ddd17131461046d57806370a0823114610497578063715018a6146104d35780637571336a146104e957610203565b8063395093511461037957806349bd5a5e146103b55780634fbee193146103df57806366ca9b831461041b57610203565b806318160ddd116101cb57806318160ddd146102bf57806323b872dd146102e957806327c8f83514610325578063313ce5671461034f57610203565b806302dbd8f81461020757806306fdde031461022f578063095ea7b3146102595780631694505e1461029557610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061022d60048036038101906102289190612d3d565b610807565b005b34801561023a575f80fd5b506102436108fa565b6040516102509190612e05565b60405180910390f35b348015610264575f80fd5b5061027f600480360381019061027a9190612e7f565b61098a565b60405161028c9190612ed7565b60405180910390f35b3480156102a0575f80fd5b506102a96109a7565b6040516102b69190612f4b565b60405180910390f35b3480156102ca575f80fd5b506102d36109cb565b6040516102e09190612f73565b60405180910390f35b3480156102f4575f80fd5b5061030f600480360381019061030a9190612f8c565b6109d4565b60405161031c9190612ed7565b60405180910390f35b348015610330575f80fd5b50610339610ac6565b6040516103469190612feb565b60405180910390f35b34801561035a575f80fd5b50610363610acc565b604051610370919061301f565b60405180910390f35b348015610384575f80fd5b5061039f600480360381019061039a9190612e7f565b610ad4565b6040516103ac9190612ed7565b60405180910390f35b3480156103c0575f80fd5b506103c9610b7b565b6040516103d69190612feb565b60405180910390f35b3480156103ea575f80fd5b5061040560048036038101906104009190613038565b610b9f565b6040516104129190612ed7565b60405180910390f35b348015610426575f80fd5b50610441600480360381019061043c9190612d3d565b610bf1565b005b34801561044e575f80fd5b50610457610cdb565b6040516104649190612f73565b60405180910390f35b348015610478575f80fd5b50610481610ce1565b60405161048e9190612ed7565b60405180910390f35b3480156104a2575f80fd5b506104bd60048036038101906104b89190613038565b610cf4565b6040516104ca9190612f73565b60405180910390f35b3480156104de575f80fd5b506104e7610d39565b005b3480156104f4575f80fd5b5061050f600480360381019061050a919061308d565b610dc0565b005b34801561051c575f80fd5b50610525610e94565b6040516105329190612feb565b60405180910390f35b348015610546575f80fd5b5061054f610eb9565b005b34801561055c575f80fd5b50610565610f6c565b6040516105729190612feb565b60405180910390f35b348015610586575f80fd5b5061058f610f94565b60405161059c9190612e05565b60405180910390f35b3480156105b0575f80fd5b506105cb60048036038101906105c69190612d3d565b611024565b005b3480156105d8575f80fd5b506105f360048036038101906105ee919061308d565b6111c4565b005b348015610600575f80fd5b5061061b60048036038101906106169190612e7f565b6112dc565b6040516106289190612ed7565b60405180910390f35b34801561063c575f80fd5b5061065760048036038101906106529190612e7f565b6113c2565b6040516106649190612ed7565b60405180910390f35b348015610678575f80fd5b506106816113df565b60405161068e9190612ed7565b60405180910390f35b3480156106a2575f80fd5b506106bd60048036038101906106b8919061308d565b6113f1565b005b3480156106ca575f80fd5b506106d3611513565b6040516106e09190612f73565b60405180910390f35b3480156106f4575f80fd5b5061070f600480360381019061070a91906130cb565b611519565b60405161071c9190612ed7565b60405180910390f35b348015610730575f80fd5b5061073961166d565b6040516107469190612f73565b60405180910390f35b34801561075a575f80fd5b50610775600480360381019061077091906130f6565b611673565b6040516107829190612f73565b60405180910390f35b348015610796575f80fd5b5061079f6116f5565b6040516107ac9190612f73565b60405180910390f35b3480156107c0575f80fd5b506107db60048036038101906107d69190613038565b6116fb565b005b3480156107e8575f80fd5b506107f16117f1565b6040516107fe9190612f73565b60405180910390f35b61080f6117f7565b73ffffffffffffffffffffffffffffffffffffffff1661082d610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614610883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087a9061317e565b60405180910390fd5b81600f8190555080601081905550601054600f546108a191906131c9565b600e81905550600e546013819055506063600e5411156108f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ed90613246565b60405180910390fd5b5050565b60606003805461090990613291565b80601f016020809104026020016040519081016040528092919081815260200182805461093590613291565b80156109805780601f1061095757610100808354040283529160200191610980565b820191905f5260205f20905b81548152906001019060200180831161096357829003601f168201915b5050505050905090565b5f61099d6109966117f7565b84846117fe565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b5f6109e08484846119c1565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a276117f7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9d90613331565b60405180910390fd5b610aba85610ab26117f7565b8584036117fe565b60019150509392505050565b61dead81565b5f6012905090565b5f610b71610ae06117f7565b848460015f610aed6117f7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610b6c91906131c9565b6117fe565b6001905092915050565b7f00000000000000000000000033e3d2d6f29bb68d8d5f168dea367c304a6d3be481565b5f60145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610bf96117f7565b73ffffffffffffffffffffffffffffffffffffffff16610c17610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614610c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c649061317e565b60405180910390fd5b81600c8190555080600d81905550600d54600c54610c8b91906131c9565b600b819055506014600b541115610cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cce90613399565b60405180910390fd5b5050565b600e5481565b600a60019054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d416117f7565b73ffffffffffffffffffffffffffffffffffffffff16610d5f610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614610db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dac9061317e565b60405180910390fd5b610dbe5f6123e0565b565b610dc86117f7565b73ffffffffffffffffffffffffffffffffffffffff16610de6610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614610e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e339061317e565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ec16117f7565b73ffffffffffffffffffffffffffffffffffffffff16610edf610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614610f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2c9061317e565b60405180910390fd5b6001600a5f6101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610fa390613291565b80601f0160208091040260200160405190810160405280929190818152602001828054610fcf90613291565b801561101a5780601f10610ff15761010080835404028352916020019161101a565b820191905f5260205f20905b815481529060010190602001808311610ffd57829003601f168201915b5050505050905090565b61102c6117f7565b73ffffffffffffffffffffffffffffffffffffffff1661104a610f6c565b73ffffffffffffffffffffffffffffffffffffffff16146110a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110979061317e565b60405180910390fd5b670de0b6b3a76400006103e860056110b66109cb565b6110c091906133b7565b6110ca9190613425565b6110d49190613425565b821015611116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110d906134c5565b60405180910390fd5b670de0b6b3a76400006103e8600561112c6109cb565b61113691906133b7565b6111409190613425565b61114a9190613425565b81101561118c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118390613553565b60405180910390fd5b670de0b6b3a7640000816111a091906133b7565b600981905550670de0b6b3a7640000826111ba91906133b7565b6007819055505050565b6111cc6117f7565b73ffffffffffffffffffffffffffffffffffffffff166111ea610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614611240576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112379061317e565b60405180910390fd5b7f00000000000000000000000033e3d2d6f29bb68d8d5f168dea367c304a6d3be473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c5906135e1565b60405180910390fd5b6112d882826124a3565b5050565b5f8060015f6112e96117f7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a9061366f565b60405180910390fd5b6113b76113ae6117f7565b858584036117fe565b600191505092915050565b5f6113d56113ce6117f7565b84846119c1565b6001905092915050565b600a5f9054906101000a900460ff1681565b6113f96117f7565b73ffffffffffffffffffffffffffffffffffffffff16611417610f6c565b73ffffffffffffffffffffffffffffffffffffffff161461146d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114649061317e565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516115079190612ed7565b60405180910390a25050565b60075481565b5f6115226117f7565b73ffffffffffffffffffffffffffffffffffffffff16611540610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614611596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158d9061317e565b60405180910390fd5b620186a060016115a46109cb565b6115ae91906133b7565b6115b89190613425565b8210156115fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f1906136fd565b60405180910390fd5b6103e860056116076109cb565b61161191906133b7565b61161b9190613425565b82111561165d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116549061378b565b60405180910390fd5b8160088190555060019050919050565b600b5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b6117036117f7565b73ffffffffffffffffffffffffffffffffffffffff16611721610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e9061317e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc90613819565b60405180910390fd5b6117ee816123e0565b50565b60095481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361186c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611863906138a7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d190613935565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119b49190612f73565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a26906139c3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9490613a51565b60405180910390fd5b5f8103611ab457611aaf83835f612541565b6123db565b611abc610f6c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b2a5750611afa610f6c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b6257505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b9c575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bb55750600560149054906101000a900460ff16155b15611f8257600a5f9054906101000a900460ff16611ca85760145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611c68575060145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9e90613ab9565b60405180910390fd5b5b60165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611d45575060155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611dec57600754811115611d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8690613b47565b60405180910390fd5b600954611d9b83610cf4565b82611da691906131c9565b1115611de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dde90613baf565b60405180910390fd5b611f81565b60165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611e89575060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ed857600754811115611ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eca90613c3d565b60405180910390fd5b611f80565b60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611f7f57600954611f3283610cf4565b82611f3d91906131c9565b1115611f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7590613baf565b60405180910390fd5b5b5b5b5b5f611f8c30610cf4565b90505f6008548210159050808015611fb05750600a60019054906101000a900460ff165b8015611fc95750600560149054906101000a900460ff16155b801561201c575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561206f575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156120c2575060145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612105576001600560146101000a81548160ff0219169083151502179055506120ea6127b6565b5f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff1615905060145f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806121b4575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156121bd575f90505b5f81156123c25760165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561221b57505f600e54115b156122b357612248606461223a600e54886129b190919063ffffffff16565b6129c690919063ffffffff16565b9050600e546010548261225b91906133b7565b6122659190613425565b60125f82825461227591906131c9565b92505081905550600e54600f548261228d91906133b7565b6122979190613425565b60115f8282546122a791906131c9565b9250508190555061239f565b60165f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561230a57505f600b54115b1561239e576123376064612329600b54886129b190919063ffffffff16565b6129c690919063ffffffff16565b9050600b54600d548261234a91906133b7565b6123549190613425565b60125f82825461236491906131c9565b92505081905550600b54600c548261237c91906133b7565b6123869190613425565b60115f82825461239691906131c9565b925050819055505b5b5f8111156123b3576123b2873083612541565b5b80856123bf9190613c5b565b94505b6123cd878787612541565b601354600e81905550505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a6906139c3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361261d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261490613a51565b60405180910390fd5b6126288383836129db565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156126ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a290613cfe565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461273991906131c9565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161279d9190612f73565b60405180910390a36127b08484846129e0565b50505050565b5f6127c030610cf4565b90505f6011546012546127d391906131c9565b90505f808314806127e357505f82145b156127f0575050506129af565b60146008546127ff91906133b7565b83111561281857601460085461281591906133b7565b92505b5f6002836012548661282a91906133b7565b6128349190613425565b61283e9190613425565b90505f61285482866129e590919063ffffffff16565b90505f479050612863826129fa565b5f61287782476129e590919063ffffffff16565b90505f6128a187612893601154856129b190919063ffffffff16565b6129c690919063ffffffff16565b90505f81836128b09190613c5b565b90505f6012819055505f6011819055505f861180156128ce57505f81115b1561291b576128dd8682612c2d565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260125460405161291293929190613d1c565b60405180910390a15b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161296090613d7e565b5f6040518083038185875af1925050503d805f811461299a576040519150601f19603f3d011682016040523d82523d5f602084013e61299f565b606091505b5050809750505050505050505050505b565b5f81836129be91906133b7565b905092915050565b5f81836129d39190613425565b905092915050565b505050565b505050565b5f81836129f29190613c5b565b905092915050565b5f600267ffffffffffffffff811115612a1657612a15613d92565b5b604051908082528060200260200182016040528015612a445781602001602082028036833780820191505090505b50905030815f81518110612a5b57612a5a613dbf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612afe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b229190613e00565b81600181518110612b3657612b35613dbf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b9b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846117fe565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612bfc959493929190613f1b565b5f604051808303815f87803b158015612c13575f80fd5b505af1158015612c25573d5f803e3d5ffd5b505050505050565b612c58307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846117fe565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8061dead426040518863ffffffff1660e01b8152600401612cbe96959493929190613f73565b60606040518083038185885af1158015612cda573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612cff9190613fe6565b5050505050565b5f80fd5b5f819050919050565b612d1c81612d0a565b8114612d26575f80fd5b50565b5f81359050612d3781612d13565b92915050565b5f8060408385031215612d5357612d52612d06565b5b5f612d6085828601612d29565b9250506020612d7185828601612d29565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612db2578082015181840152602081019050612d97565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612dd782612d7b565b612de18185612d85565b9350612df1818560208601612d95565b612dfa81612dbd565b840191505092915050565b5f6020820190508181035f830152612e1d8184612dcd565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612e4e82612e25565b9050919050565b612e5e81612e44565b8114612e68575f80fd5b50565b5f81359050612e7981612e55565b92915050565b5f8060408385031215612e9557612e94612d06565b5b5f612ea285828601612e6b565b9250506020612eb385828601612d29565b9150509250929050565b5f8115159050919050565b612ed181612ebd565b82525050565b5f602082019050612eea5f830184612ec8565b92915050565b5f819050919050565b5f612f13612f0e612f0984612e25565b612ef0565b612e25565b9050919050565b5f612f2482612ef9565b9050919050565b5f612f3582612f1a565b9050919050565b612f4581612f2b565b82525050565b5f602082019050612f5e5f830184612f3c565b92915050565b612f6d81612d0a565b82525050565b5f602082019050612f865f830184612f64565b92915050565b5f805f60608486031215612fa357612fa2612d06565b5b5f612fb086828701612e6b565b9350506020612fc186828701612e6b565b9250506040612fd286828701612d29565b9150509250925092565b612fe581612e44565b82525050565b5f602082019050612ffe5f830184612fdc565b92915050565b5f60ff82169050919050565b61301981613004565b82525050565b5f6020820190506130325f830184613010565b92915050565b5f6020828403121561304d5761304c612d06565b5b5f61305a84828501612e6b565b91505092915050565b61306c81612ebd565b8114613076575f80fd5b50565b5f8135905061308781613063565b92915050565b5f80604083850312156130a3576130a2612d06565b5b5f6130b085828601612e6b565b92505060206130c185828601613079565b9150509250929050565b5f602082840312156130e0576130df612d06565b5b5f6130ed84828501612d29565b91505092915050565b5f806040838503121561310c5761310b612d06565b5b5f61311985828601612e6b565b925050602061312a85828601612e6b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613168602083612d85565b915061317382613134565b602082019050919050565b5f6020820190508181035f8301526131958161315c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6131d382612d0a565b91506131de83612d0a565b92508282019050808211156131f6576131f561319c565b5b92915050565b7f4d757374206b656570206665657320617420393925206f72206c6573730000005f82015250565b5f613230601d83612d85565b915061323b826131fc565b602082019050919050565b5f6020820190508181035f83015261325d81613224565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806132a857607f821691505b6020821081036132bb576132ba613264565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f61331b602883612d85565b9150613326826132c1565b604082019050919050565b5f6020820190508181035f8301526133488161330f565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c6573730000005f82015250565b5f613383601d83612d85565b915061338e8261334f565b602082019050919050565b5f6020820190508181035f8301526133b081613377565b9050919050565b5f6133c182612d0a565b91506133cc83612d0a565b92508282026133da81612d0a565b915082820484148315176133f1576133f061319c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61342f82612d0a565b915061343a83612d0a565b92508261344a576134496133f8565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e355f8201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134af602183612d85565b91506134ba82613455565b604082019050919050565b5f6020820190508181035f8301526134dc816134a3565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f61353d602483612d85565b9150613548826134e3565b604082019050919050565b5f6020820190508181035f83015261356a81613531565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6135cb603983612d85565b91506135d682613571565b604082019050919050565b5f6020820190508181035f8301526135f8816135bf565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613659602583612d85565b9150613664826135ff565b604082019050919050565b5f6020820190508181035f8301526136868161364d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6136e7603583612d85565b91506136f28261368d565b604082019050919050565b5f6020820190508181035f830152613714816136db565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f613775603483612d85565b91506137808261371b565b604082019050919050565b5f6020820190508181035f8301526137a281613769565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613803602683612d85565b915061380e826137a9565b604082019050919050565b5f6020820190508181035f830152613830816137f7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613891602483612d85565b915061389c82613837565b604082019050919050565b5f6020820190508181035f8301526138be81613885565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61391f602283612d85565b915061392a826138c5565b604082019050919050565b5f6020820190508181035f83015261394c81613913565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6139ad602583612d85565b91506139b882613953565b604082019050919050565b5f6020820190508181035f8301526139da816139a1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613a3b602383612d85565b9150613a46826139e1565b604082019050919050565b5f6020820190508181035f830152613a6881613a2f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f613aa3601683612d85565b9150613aae82613a6f565b602082019050919050565b5f6020820190508181035f830152613ad081613a97565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f613b31603583612d85565b9150613b3c82613ad7565b604082019050919050565b5f6020820190508181035f830152613b5e81613b25565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613b99601383612d85565b9150613ba482613b65565b602082019050919050565b5f6020820190508181035f830152613bc681613b8d565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f613c27603683612d85565b9150613c3282613bcd565b604082019050919050565b5f6020820190508181035f830152613c5481613c1b565b9050919050565b5f613c6582612d0a565b9150613c7083612d0a565b9250828203905081811115613c8857613c8761319c565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613ce8602683612d85565b9150613cf382613c8e565b604082019050919050565b5f6020820190508181035f830152613d1581613cdc565b9050919050565b5f606082019050613d2f5f830186612f64565b613d3c6020830185612f64565b613d496040830184612f64565b949350505050565b5f81905092915050565b50565b5f613d695f83613d51565b9150613d7482613d5b565b5f82019050919050565b5f613d8882613d5e565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613dfa81612e55565b92915050565b5f60208284031215613e1557613e14612d06565b5b5f613e2284828501613dec565b91505092915050565b5f819050919050565b5f613e4e613e49613e4484613e2b565b612ef0565b612d0a565b9050919050565b613e5e81613e34565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613e9681612e44565b82525050565b5f613ea78383613e8d565b60208301905092915050565b5f602082019050919050565b5f613ec982613e64565b613ed38185613e6e565b9350613ede83613e7e565b805f5b83811015613f0e578151613ef58882613e9c565b9750613f0083613eb3565b925050600181019050613ee1565b5085935050505092915050565b5f60a082019050613f2e5f830188612f64565b613f3b6020830187613e55565b8181036040830152613f4d8186613ebf565b9050613f5c6060830185612fdc565b613f696080830184612f64565b9695505050505050565b5f60c082019050613f865f830189612fdc565b613f936020830188612f64565b613fa06040830187613e55565b613fad6060830186613e55565b613fba6080830185612fdc565b613fc760a0830184612f64565b979650505050505050565b5f81519050613fe081612d13565b92915050565b5f805f60608486031215613ffd57613ffc612d06565b5b5f61400a86828701613fd2565b935050602061401b86828701613fd2565b925050604061402c86828701613fd2565b915050925092509256fea264697066735822122049c709ed41b2f0529a3703bdf63e747e1d65fe9a8274055274a9566a645487f864736f6c63430008140033

Deployed Bytecode Sourcemap

14202:12218:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19179:380;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2776:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3690:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14277:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3097:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3867:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14380:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2996:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4367:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14335:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20265:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18836:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14814:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14664:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3213:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;903:112;;;;;;;;;;;;;:::i;:::-;;18661:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14472:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17524:112;;;;;;;;;;;;;:::i;:::-;;680:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2884:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18149:504;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19757:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4590:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3348:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14624:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19567:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14509:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17644:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14704:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3531:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14551:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1023:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14591:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19179:380;826:12;:10;:12::i;:::-;815:23;;:7;:5;:7::i;:::-;:23;;;807:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19323:13:::1;19304:16;:32;;;;19366:13;19347:16;:32;;;;19425:16;;19406;;:35;;;;:::i;:::-;19390:13;:51;;;;19466:13;;19452:11;:27;;;;19515:2;19498:13;;:19;;19490:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;19179:380:::0;;:::o;2776:100::-;2830:13;2863:5;2856:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:100;:::o;3690:169::-;3773:4;3790:39;3799:12;:10;:12::i;:::-;3813:7;3822:6;3790:8;:39::i;:::-;3847:4;3840:11;;3690:169;;;;:::o;14277:51::-;;;:::o;3097:108::-;3158:7;3185:12;;3178:19;;3097:108;:::o;3867:492::-;4007:4;4024:36;4034:6;4042:9;4053:6;4024:9;:36::i;:::-;4073:24;4100:11;:19;4112:6;4100:19;;;;;;;;;;;;;;;:33;4120:12;:10;:12::i;:::-;4100:33;;;;;;;;;;;;;;;;4073:60;;4172:6;4152:16;:26;;4144:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4259:57;4268:6;4276:12;:10;:12::i;:::-;4309:6;4290:16;:25;4259:8;:57::i;:::-;4347:4;4340:11;;;3867:492;;;;;:::o;14380:53::-;14426:6;14380:53;:::o;2996:93::-;3054:5;3079:2;3072:9;;2996:93;:::o;4367:215::-;4455:4;4472:80;4481:12;:10;:12::i;:::-;4495:7;4541:10;4504:11;:25;4516:12;:10;:12::i;:::-;4504:25;;;;;;;;;;;;;;;:34;4530:7;4504:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4472:8;:80::i;:::-;4570:4;4563:11;;4367:215;;;;:::o;14335:38::-;;;:::o;20265:126::-;20331:4;20355:19;:28;20375:7;20355:28;;;;;;;;;;;;;;;;;;;;;;;;;20348:35;;20265:126;;;:::o;18836:335::-;826:12;:10;:12::i;:::-;815:23;;:7;:5;:7::i;:::-;:23;;;807:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18978:13:::1;18960:15;:31;;;;19020:13;19002:15;:31;;;;19077:15;;19059;;:33;;;;:::i;:::-;19044:12;:48;;;;19127:2;19111:12;;:18;;19103:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;18836:335:::0;;:::o;14814:28::-;;;;:::o;14664:31::-;;;;;;;;;;;;;:::o;3213:127::-;3287:7;3314:9;:18;3324:7;3314:18;;;;;;;;;;;;;;;;3307:25;;3213:127;;;:::o;903:112::-;826:12;:10;:12::i;:::-;815:23;;:7;:5;:7::i;:::-;:23;;;807:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;977:30:::1;1004:1;977:18;:30::i;:::-;903:112::o:0;18661:167::-;826:12;:10;:12::i;:::-;815:23;;:7;:5;:7::i;:::-;:23;;;807:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18816:4:::1;18774:31;:39;18806:6;18774:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18661:167:::0;;:::o;14472:30::-;;;;;;;;;;;;;:::o;17524:112::-;826:12;:10;:12::i;:::-;815:23;;:7;:5;:7::i;:::-;:23;;;807:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17595:4:::1;17579:13;;:20;;;;;;;;;;;;;;;;;;17624:4;17610:11;;:18;;;;;;;;;;;;;;;;;;17524:112::o:0;680:87::-;726:7;753:6;;;;;;;;;;;746:13;;680:87;:::o;2884:104::-;2940:13;2973:7;2966:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2884:104;:::o;18149:504::-;826:12;:10;:12::i;:::-;815:23;;:7;:5;:7::i;:::-;:23;;;807:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18326:4:::1;18318;18313:1;18297:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18296:26;;;;:::i;:::-;18295:35;;;;:::i;:::-;18282:9;:48;;18260:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;18474:4;18466;18461:1;18445:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18444:26;;;;:::i;:::-;18443:35;;;;:::i;:::-;18424:15;:54;;18402:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;18584:6;18565:15;:26;;;;:::i;:::-;18553:9;:38;;;;18638:6;18625:9;:20;;;;:::i;:::-;18602;:43;;;;18149:504:::0;;:::o;19757:304::-;826:12;:10;:12::i;:::-;815:23;;:7;:5;:7::i;:::-;:23;;;807:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19901:13:::1;19893:21;;:4;:21;;::::0;19871:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20012:41;20041:4;20047:5;20012:28;:41::i;:::-;19757:304:::0;;:::o;4590:413::-;4683:4;4700:24;4727:11;:25;4739:12;:10;:12::i;:::-;4727:25;;;;;;;;;;;;;;;:34;4753:7;4727:34;;;;;;;;;;;;;;;;4700:61;;4800:15;4780:16;:35;;4772:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4893:67;4902:12;:10;:12::i;:::-;4916:7;4944:15;4925:16;:34;4893:8;:67::i;:::-;4991:4;4984:11;;;4590:413;;;;:::o;3348:175::-;3434:4;3451:42;3461:12;:10;:12::i;:::-;3475:9;3486:6;3451:9;:42::i;:::-;3511:4;3504:11;;3348:175;;;;:::o;14624:33::-;;;;;;;;;;;;;:::o;19567:182::-;826:12;:10;:12::i;:::-;815:23;;:7;:5;:7::i;:::-;:23;;;807:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19683:8:::1;19652:19;:28;19672:7;19652:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19723:7;19707:34;;;19732:8;19707:34;;;;;;:::i;:::-;;;;;;;;19567:182:::0;;:::o;14509:35::-;;;;:::o;17644:497::-;17752:4;826:12;:10;:12::i;:::-;815:23;;:7;:5;:7::i;:::-;:23;;;807:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17831:6:::1;17826:1;17810:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17809:28;;;;:::i;:::-;17796:9;:41;;17774:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;17986:4;17981:1;17965:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17964:26;;;;:::i;:::-;17951:9;:39;;17929:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;18102:9;18081:18;:30;;;;18129:4;18122:11;;17644:497:::0;;;:::o;14704:27::-;;;;:::o;3531:151::-;3620:7;3647:11;:18;3659:5;3647:18;;;;;;;;;;;;;;;:27;3666:7;3647:27;;;;;;;;;;;;;;;;3640:34;;3531:151;;;;:::o;14551:33::-;;;;:::o;1023:201::-;826:12;:10;:12::i;:::-;815:23;;:7;:5;:7::i;:::-;:23;;;807:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1132:1:::1;1112:22;;:8;:22;;::::0;1104:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1188:28;1207:8;1188:18;:28::i;:::-;1023:201:::0;:::o;14591:24::-;;;;:::o;226:98::-;279:7;306:10;299:17;;226:98;:::o;6159:380::-;6312:1;6295:19;;:5;:19;;;6287:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6393:1;6374:21;;:7;:21;;;6366:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6477:6;6447:11;:18;6459:5;6447:18;;;;;;;;;;;;;;;:27;6466:7;6447:27;;;;;;;;;;;;;;;:36;;;;6515:7;6499:32;;6508:5;6499:32;;;6524:6;6499:32;;;;;;:::i;:::-;;;;;;;;6159:380;;;:::o;20399:3665::-;20547:1;20531:18;;:4;:18;;;20523:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20624:1;20610:16;;:2;:16;;;20602:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20693:1;20683:6;:11;20679:93;;20711:28;20727:4;20733:2;20737:1;20711:15;:28::i;:::-;20754:7;;20679:93;20822:7;:5;:7::i;:::-;20814:15;;:4;:15;;;;:49;;;;;20856:7;:5;:7::i;:::-;20850:13;;:2;:13;;;;20814:49;:86;;;;;20898:1;20884:16;;:2;:16;;;;20814:86;:128;;;;;20935:6;20921:21;;:2;:21;;;;20814:128;:158;;;;;20964:8;;;;;;;;;;;20963:9;20814:158;20792:1684;;;21012:13;;;;;;;;;;;21007:223;;21084:19;:25;21104:4;21084:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21113:19;:23;21133:2;21113:23;;;;;;;;;;;;;;;;;;;;;;;;;21084:52;21050:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;21007:223;21304:25;:31;21330:4;21304:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21361:31;:35;21393:2;21361:35;;;;;;;;;;;;;;;;;;;;;;;;;21360:36;21304:92;21278:1183;;;21483:20;;21473:6;:30;;21439:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;21691:9;;21674:13;21684:2;21674:9;:13::i;:::-;21665:6;:22;;;;:::i;:::-;:35;;21631:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;21278:1183;;;21869:25;:29;21895:2;21869:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21924:31;:37;21956:4;21924:37;;;;;;;;;;;;;;;;;;;;;;;;;21923:38;21869:92;21843:618;;;22048:20;;22038:6;:30;;22004:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;21843:618;;;22241:31;:35;22273:2;22241:35;;;;;;;;;;;;;;;;;;;;;;;;;22236:225;;22361:9;;22344:13;22354:2;22344:9;:13::i;:::-;22335:6;:22;;;;:::i;:::-;:35;;22301:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;22236:225;21843:618;21278:1183;20792:1684;22488:28;22519:24;22537:4;22519:9;:24::i;:::-;22488:55;;22556:12;22595:18;;22571:20;:42;;22556:57;;22644:7;:35;;;;;22668:11;;;;;;;;;;;22644:35;:61;;;;;22697:8;;;;;;;;;;;22696:9;22644:61;:110;;;;;22723:25;:31;22749:4;22723:31;;;;;;;;;;;;;;;;;;;;;;;;;22722:32;22644:110;:153;;;;;22772:19;:25;22792:4;22772:25;;;;;;;;;;;;;;;;;;;;;;;;;22771:26;22644:153;:194;;;;;22815:19;:23;22835:2;22815:23;;;;;;;;;;;;;;;;;;;;;;;;;22814:24;22644:194;22626:326;;;22876:4;22865:8;;:15;;;;;;;;;;;;;;;;;;22897:10;:8;:10::i;:::-;22935:5;22924:8;;:16;;;;;;;;;;;;;;;;;;22626:326;22964:12;22980:8;;;;;;;;;;;22979:9;22964:24;;23005:19;:25;23025:4;23005:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23034:19;:23;23054:2;23034:23;;;;;;;;;;;;;;;;;;;;;;;;;23005:52;23001:100;;;23084:5;23074:15;;23001:100;23113:12;23146:7;23142:831;;;23198:25;:29;23224:2;23198:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;23247:1;23231:13;;:17;23198:50;23194:630;;;23276:34;23306:3;23276:25;23287:13;;23276:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;23269:41;;23379:13;;23359:16;;23352:4;:23;;;;:::i;:::-;23351:41;;;;:::i;:::-;23329:18;;:63;;;;;;;:::i;:::-;;;;;;;;23461:13;;23441:16;;23434:4;:23;;;;:::i;:::-;23433:41;;;;:::i;:::-;23411:18;;:63;;;;;;;:::i;:::-;;;;;;;;23194:630;;;23536:25;:31;23562:4;23536:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;23586:1;23571:12;;:16;23536:51;23532:292;;;23615:33;23644:3;23615:24;23626:12;;23615:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;23608:40;;23716:12;;23697:15;;23690:4;:22;;;;:::i;:::-;23689:39;;;;:::i;:::-;23667:18;;:61;;;;;;;:::i;:::-;;;;;;;;23796:12;;23777:15;;23770:4;:22;;;;:::i;:::-;23769:39;;;;:::i;:::-;23747:18;;:61;;;;;;;:::i;:::-;;;;;;;;23532:292;23194:630;23851:1;23844:4;:8;23840:91;;;23873:42;23889:4;23903;23910;23873:15;:42::i;:::-;23840:91;23957:4;23947:14;;;;;:::i;:::-;;;23142:831;23985:33;24001:4;24007:2;24011:6;23985:15;:33::i;:::-;24045:11;;24029:13;:27;;;;20512:3552;;;;20399:3665;;;;:::o;1232:191::-;1306:16;1325:6;;;;;;;;;;;1306:25;;1351:8;1342:6;;:17;;;;;;;;;;;;;;;;;;1406:8;1375:40;;1396:8;1375:40;;;;;;;;;;;;1295:128;1232:191;:::o;20069:188::-;20186:5;20152:25;:31;20178:4;20152:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20243:5;20209:40;;20237:4;20209:40;;;;;;;;;;;;20069:188;;:::o;5011:733::-;5169:1;5151:20;;:6;:20;;;5143:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5253:1;5232:23;;:9;:23;;;5224:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5308:47;5329:6;5337:9;5348:6;5308:20;:47::i;:::-;5368:21;5392:9;:17;5402:6;5392:17;;;;;;;;;;;;;;;;5368:41;;5445:6;5428:13;:23;;5420:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5566:6;5550:13;:22;5530:9;:17;5540:6;5530:17;;;;;;;;;;;;;;;:42;;;;5618:6;5594:9;:20;5604:9;5594:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5659:9;5642:35;;5651:6;5642:35;;;5670:6;5642:35;;;;;;:::i;:::-;;;;;;;;5690:46;5710:6;5718:9;5729:6;5690:19;:46::i;:::-;5132:612;5011:733;;;:::o;24957:1460::-;24996:23;25022:24;25040:4;25022:9;:24::i;:::-;24996:50;;25057:25;25119:18;;25085;;:52;;;;:::i;:::-;25057:80;;25148:12;25196:1;25177:15;:20;:46;;;;25222:1;25201:17;:22;25177:46;25173:85;;;25240:7;;;;;25173:85;25313:2;25292:18;;:23;;;;:::i;:::-;25274:15;:41;25270:115;;;25371:2;25350:18;;:23;;;;:::i;:::-;25332:41;;25270:115;25397:23;25510:1;25477:17;25442:18;;25424:15;:36;;;;:::i;:::-;25423:71;;;;:::i;:::-;:88;;;;:::i;:::-;25397:114;;25522:26;25551:36;25571:15;25551;:19;;:36;;;;:::i;:::-;25522:65;;25600:25;25628:21;25600:49;;25660:36;25677:18;25660:16;:36::i;:::-;25709:18;25730:44;25756:17;25730:21;:25;;:44;;;;:::i;:::-;25709:65;;25787:23;25813:81;25866:17;25813:34;25828:18;;25813:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;25787:107;;25907:23;25946:15;25933:10;:28;;;;:::i;:::-;25907:54;;25995:1;25974:18;:22;;;;26028:1;26007:18;:22;;;;26064:1;26046:15;:19;:42;;;;;26087:1;26069:15;:19;26046:42;26042:278;;;26105:46;26118:15;26135;26105:12;:46::i;:::-;26171:137;26204:18;26241:15;26275:18;;26171:137;;;;;;;;:::i;:::-;;;;;;;;26042:278;26354:15;;;;;;;;;;;26346:29;;26383:21;26346:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26332:77;;;;;24985:1432;;;;;;;;;24957:1460;:::o;8165:98::-;8223:7;8254:1;8250;:5;;;;:::i;:::-;8243:12;;8165:98;;;;:::o;8271:::-;8329:7;8360:1;8356;:5;;;;:::i;:::-;8349:12;;8271:98;;;;:::o;6547:125::-;;;;:::o;6680:124::-;;;;:::o;8059:98::-;8117:7;8148:1;8144;:5;;;;:::i;:::-;8137:12;;8059:98;;;;:::o;24072:503::-;24140:21;24178:1;24164:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24140:40;;24209:4;24191;24196:1;24191:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24235:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24225:4;24230:1;24225:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24270:62;24287:4;24302:15;24320:11;24270:8;:62::i;:::-;24371:15;:66;;;24452:11;24478:1;24494:4;24521;24541:15;24371:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24127:448;24072:503;:::o;24583:366::-;24664:62;24681:4;24696:15;24714:11;24664:8;:62::i;:::-;24739:15;:31;;;24778:9;24811:4;24831:11;24857:1;24873;14426:6;24915:15;24739:202;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24583:366;;:::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:60::-;3954:3;3975:5;3968:12;;3926:60;;;:::o;3992:142::-;4042:9;4075:53;4093:34;4102:24;4120:5;4102:24;:::i;:::-;4093:34;:::i;:::-;4075:53;:::i;:::-;4062:66;;3992:142;;;:::o;4140:126::-;4190:9;4223:37;4254:5;4223:37;:::i;:::-;4210:50;;4140:126;;;:::o;4272:153::-;4349:9;4382:37;4413:5;4382:37;:::i;:::-;4369:50;;4272:153;;;:::o;4431:185::-;4545:64;4603:5;4545:64;:::i;:::-;4540:3;4533:77;4431:185;;:::o;4622:276::-;4742:4;4780:2;4769:9;4765:18;4757:26;;4793:98;4888:1;4877:9;4873:17;4864:6;4793:98;:::i;:::-;4622:276;;;;:::o;4904:118::-;4991:24;5009:5;4991:24;:::i;:::-;4986:3;4979:37;4904:118;;:::o;5028:222::-;5121:4;5159:2;5148:9;5144:18;5136:26;;5172:71;5240:1;5229:9;5225:17;5216:6;5172:71;:::i;:::-;5028:222;;;;:::o;5256:619::-;5333:6;5341;5349;5398:2;5386:9;5377:7;5373:23;5369:32;5366:119;;;5404:79;;:::i;:::-;5366:119;5524:1;5549:53;5594:7;5585:6;5574:9;5570:22;5549:53;:::i;:::-;5539:63;;5495:117;5651:2;5677:53;5722:7;5713:6;5702:9;5698:22;5677:53;:::i;:::-;5667:63;;5622:118;5779:2;5805:53;5850:7;5841:6;5830:9;5826:22;5805:53;:::i;:::-;5795:63;;5750:118;5256:619;;;;;:::o;5881:118::-;5968:24;5986:5;5968:24;:::i;:::-;5963:3;5956:37;5881:118;;:::o;6005:222::-;6098:4;6136:2;6125:9;6121:18;6113:26;;6149:71;6217:1;6206:9;6202:17;6193:6;6149:71;:::i;:::-;6005:222;;;;:::o;6233:86::-;6268:7;6308:4;6301:5;6297:16;6286:27;;6233:86;;;:::o;6325:112::-;6408:22;6424:5;6408:22;:::i;:::-;6403:3;6396:35;6325:112;;:::o;6443:214::-;6532:4;6570:2;6559:9;6555:18;6547:26;;6583:67;6647:1;6636:9;6632:17;6623:6;6583:67;:::i;:::-;6443:214;;;;:::o;6663:329::-;6722:6;6771:2;6759:9;6750:7;6746:23;6742:32;6739:119;;;6777:79;;:::i;:::-;6739:119;6897:1;6922:53;6967:7;6958:6;6947:9;6943:22;6922:53;:::i;:::-;6912:63;;6868:117;6663:329;;;;:::o;6998:116::-;7068:21;7083:5;7068:21;:::i;:::-;7061:5;7058:32;7048:60;;7104:1;7101;7094:12;7048:60;6998:116;:::o;7120:133::-;7163:5;7201:6;7188:20;7179:29;;7217:30;7241:5;7217:30;:::i;:::-;7120:133;;;;:::o;7259:468::-;7324:6;7332;7381:2;7369:9;7360:7;7356:23;7352:32;7349:119;;;7387:79;;:::i;:::-;7349:119;7507:1;7532:53;7577:7;7568:6;7557:9;7553:22;7532:53;:::i;:::-;7522:63;;7478:117;7634:2;7660:50;7702:7;7693:6;7682:9;7678:22;7660:50;:::i;:::-;7650:60;;7605:115;7259:468;;;;;:::o;7733:329::-;7792:6;7841:2;7829:9;7820:7;7816:23;7812:32;7809:119;;;7847:79;;:::i;:::-;7809:119;7967:1;7992:53;8037:7;8028:6;8017:9;8013:22;7992:53;:::i;:::-;7982:63;;7938:117;7733:329;;;;:::o;8068:474::-;8136:6;8144;8193:2;8181:9;8172:7;8168:23;8164:32;8161:119;;;8199:79;;:::i;:::-;8161:119;8319:1;8344:53;8389:7;8380:6;8369:9;8365:22;8344:53;:::i;:::-;8334:63;;8290:117;8446:2;8472:53;8517:7;8508:6;8497:9;8493:22;8472:53;:::i;:::-;8462:63;;8417:118;8068:474;;;;;:::o;8548:182::-;8688:34;8684:1;8676:6;8672:14;8665:58;8548:182;:::o;8736:366::-;8878:3;8899:67;8963:2;8958:3;8899:67;:::i;:::-;8892:74;;8975:93;9064:3;8975:93;:::i;:::-;9093:2;9088:3;9084:12;9077:19;;8736:366;;;:::o;9108:419::-;9274:4;9312:2;9301:9;9297:18;9289:26;;9361:9;9355:4;9351:20;9347:1;9336:9;9332:17;9325:47;9389:131;9515:4;9389:131;:::i;:::-;9381:139;;9108:419;;;:::o;9533:180::-;9581:77;9578:1;9571:88;9678:4;9675:1;9668:15;9702:4;9699:1;9692:15;9719:191;9759:3;9778:20;9796:1;9778:20;:::i;:::-;9773:25;;9812:20;9830:1;9812:20;:::i;:::-;9807:25;;9855:1;9852;9848:9;9841:16;;9876:3;9873:1;9870:10;9867:36;;;9883:18;;:::i;:::-;9867:36;9719:191;;;;:::o;9916:179::-;10056:31;10052:1;10044:6;10040:14;10033:55;9916:179;:::o;10101:366::-;10243:3;10264:67;10328:2;10323:3;10264:67;:::i;:::-;10257:74;;10340:93;10429:3;10340:93;:::i;:::-;10458:2;10453:3;10449:12;10442:19;;10101:366;;;:::o;10473:419::-;10639:4;10677:2;10666:9;10662:18;10654:26;;10726:9;10720:4;10716:20;10712:1;10701:9;10697:17;10690:47;10754:131;10880:4;10754:131;:::i;:::-;10746:139;;10473:419;;;:::o;10898:180::-;10946:77;10943:1;10936:88;11043:4;11040:1;11033:15;11067:4;11064:1;11057:15;11084:320;11128:6;11165:1;11159:4;11155:12;11145:22;;11212:1;11206:4;11202:12;11233:18;11223:81;;11289:4;11281:6;11277:17;11267:27;;11223:81;11351:2;11343:6;11340:14;11320:18;11317:38;11314:84;;11370:18;;:::i;:::-;11314:84;11135:269;11084:320;;;:::o;11410:227::-;11550:34;11546:1;11538:6;11534:14;11527:58;11619:10;11614:2;11606:6;11602:15;11595:35;11410:227;:::o;11643:366::-;11785:3;11806:67;11870:2;11865:3;11806:67;:::i;:::-;11799:74;;11882:93;11971:3;11882:93;:::i;:::-;12000:2;11995:3;11991:12;11984:19;;11643:366;;;:::o;12015:419::-;12181:4;12219:2;12208:9;12204:18;12196:26;;12268:9;12262:4;12258:20;12254:1;12243:9;12239:17;12232:47;12296:131;12422:4;12296:131;:::i;:::-;12288:139;;12015:419;;;:::o;12440:179::-;12580:31;12576:1;12568:6;12564:14;12557:55;12440:179;:::o;12625:366::-;12767:3;12788:67;12852:2;12847:3;12788:67;:::i;:::-;12781:74;;12864:93;12953:3;12864:93;:::i;:::-;12982:2;12977:3;12973:12;12966:19;;12625:366;;;:::o;12997:419::-;13163:4;13201:2;13190:9;13186:18;13178:26;;13250:9;13244:4;13240:20;13236:1;13225:9;13221:17;13214:47;13278:131;13404:4;13278:131;:::i;:::-;13270:139;;12997:419;;;:::o;13422:410::-;13462:7;13485:20;13503:1;13485:20;:::i;:::-;13480:25;;13519:20;13537:1;13519:20;:::i;:::-;13514:25;;13574:1;13571;13567:9;13596:30;13614:11;13596:30;:::i;:::-;13585:41;;13775:1;13766:7;13762:15;13759:1;13756:22;13736:1;13729:9;13709:83;13686:139;;13805:18;;:::i;:::-;13686:139;13470:362;13422:410;;;;:::o;13838:180::-;13886:77;13883:1;13876:88;13983:4;13980:1;13973:15;14007:4;14004:1;13997:15;14024:185;14064:1;14081:20;14099:1;14081:20;:::i;:::-;14076:25;;14115:20;14133:1;14115:20;:::i;:::-;14110:25;;14154:1;14144:35;;14159:18;;:::i;:::-;14144:35;14201:1;14198;14194:9;14189:14;;14024:185;;;;:::o;14215:220::-;14355:34;14351:1;14343:6;14339:14;14332:58;14424:3;14419:2;14411:6;14407:15;14400:28;14215:220;:::o;14441:366::-;14583:3;14604:67;14668:2;14663:3;14604:67;:::i;:::-;14597:74;;14680:93;14769:3;14680:93;:::i;:::-;14798:2;14793:3;14789:12;14782:19;;14441:366;;;:::o;14813:419::-;14979:4;15017:2;15006:9;15002:18;14994:26;;15066:9;15060:4;15056:20;15052:1;15041:9;15037:17;15030:47;15094:131;15220:4;15094:131;:::i;:::-;15086:139;;14813:419;;;:::o;15238:223::-;15378:34;15374:1;15366:6;15362:14;15355:58;15447:6;15442:2;15434:6;15430:15;15423:31;15238:223;:::o;15467:366::-;15609:3;15630:67;15694:2;15689:3;15630:67;:::i;:::-;15623:74;;15706:93;15795:3;15706:93;:::i;:::-;15824:2;15819:3;15815:12;15808:19;;15467:366;;;:::o;15839:419::-;16005:4;16043:2;16032:9;16028:18;16020:26;;16092:9;16086:4;16082:20;16078:1;16067:9;16063:17;16056:47;16120:131;16246:4;16120:131;:::i;:::-;16112:139;;15839:419;;;:::o;16264:244::-;16404:34;16400:1;16392:6;16388:14;16381:58;16473:27;16468:2;16460:6;16456:15;16449:52;16264:244;:::o;16514:366::-;16656:3;16677:67;16741:2;16736:3;16677:67;:::i;:::-;16670:74;;16753:93;16842:3;16753:93;:::i;:::-;16871:2;16866:3;16862:12;16855:19;;16514:366;;;:::o;16886:419::-;17052:4;17090:2;17079:9;17075:18;17067:26;;17139:9;17133:4;17129:20;17125:1;17114:9;17110:17;17103:47;17167:131;17293:4;17167:131;:::i;:::-;17159:139;;16886:419;;;:::o;17311:224::-;17451:34;17447:1;17439:6;17435:14;17428:58;17520:7;17515:2;17507:6;17503:15;17496:32;17311:224;:::o;17541:366::-;17683:3;17704:67;17768:2;17763:3;17704:67;:::i;:::-;17697:74;;17780:93;17869:3;17780:93;:::i;:::-;17898:2;17893:3;17889:12;17882:19;;17541:366;;;:::o;17913:419::-;18079:4;18117:2;18106:9;18102:18;18094:26;;18166:9;18160:4;18156:20;18152:1;18141:9;18137:17;18130:47;18194:131;18320:4;18194:131;:::i;:::-;18186:139;;17913:419;;;:::o;18338:240::-;18478:34;18474:1;18466:6;18462:14;18455:58;18547:23;18542:2;18534:6;18530:15;18523:48;18338:240;:::o;18584:366::-;18726:3;18747:67;18811:2;18806:3;18747:67;:::i;:::-;18740:74;;18823:93;18912:3;18823:93;:::i;:::-;18941:2;18936:3;18932:12;18925:19;;18584:366;;;:::o;18956:419::-;19122:4;19160:2;19149:9;19145:18;19137:26;;19209:9;19203:4;19199:20;19195:1;19184:9;19180:17;19173:47;19237:131;19363:4;19237:131;:::i;:::-;19229:139;;18956:419;;;:::o;19381:239::-;19521:34;19517:1;19509:6;19505:14;19498:58;19590:22;19585:2;19577:6;19573:15;19566:47;19381:239;:::o;19626:366::-;19768:3;19789:67;19853:2;19848:3;19789:67;:::i;:::-;19782:74;;19865:93;19954:3;19865:93;:::i;:::-;19983:2;19978:3;19974:12;19967:19;;19626:366;;;:::o;19998:419::-;20164:4;20202:2;20191:9;20187:18;20179:26;;20251:9;20245:4;20241:20;20237:1;20226:9;20222:17;20215:47;20279:131;20405:4;20279:131;:::i;:::-;20271:139;;19998:419;;;:::o;20423:225::-;20563:34;20559:1;20551:6;20547:14;20540:58;20632:8;20627:2;20619:6;20615:15;20608:33;20423:225;:::o;20654:366::-;20796:3;20817:67;20881:2;20876:3;20817:67;:::i;:::-;20810:74;;20893:93;20982:3;20893:93;:::i;:::-;21011:2;21006:3;21002:12;20995:19;;20654:366;;;:::o;21026:419::-;21192:4;21230:2;21219:9;21215:18;21207:26;;21279:9;21273:4;21269:20;21265:1;21254:9;21250:17;21243:47;21307:131;21433:4;21307:131;:::i;:::-;21299:139;;21026:419;;;:::o;21451:223::-;21591:34;21587:1;21579:6;21575:14;21568:58;21660:6;21655:2;21647:6;21643:15;21636:31;21451:223;:::o;21680:366::-;21822:3;21843:67;21907:2;21902:3;21843:67;:::i;:::-;21836:74;;21919:93;22008:3;21919:93;:::i;:::-;22037:2;22032:3;22028:12;22021:19;;21680:366;;;:::o;22052:419::-;22218:4;22256:2;22245:9;22241:18;22233:26;;22305:9;22299:4;22295:20;22291:1;22280:9;22276:17;22269:47;22333:131;22459:4;22333:131;:::i;:::-;22325:139;;22052:419;;;:::o;22477:221::-;22617:34;22613:1;22605:6;22601:14;22594:58;22686:4;22681:2;22673:6;22669:15;22662:29;22477:221;:::o;22704:366::-;22846:3;22867:67;22931:2;22926:3;22867:67;:::i;:::-;22860:74;;22943:93;23032:3;22943:93;:::i;:::-;23061:2;23056:3;23052:12;23045:19;;22704:366;;;:::o;23076:419::-;23242:4;23280:2;23269:9;23265:18;23257:26;;23329:9;23323:4;23319:20;23315:1;23304:9;23300:17;23293:47;23357:131;23483:4;23357:131;:::i;:::-;23349:139;;23076:419;;;:::o;23501:224::-;23641:34;23637:1;23629:6;23625:14;23618:58;23710:7;23705:2;23697:6;23693:15;23686:32;23501:224;:::o;23731:366::-;23873:3;23894:67;23958:2;23953:3;23894:67;:::i;:::-;23887:74;;23970:93;24059:3;23970:93;:::i;:::-;24088:2;24083:3;24079:12;24072:19;;23731:366;;;:::o;24103:419::-;24269:4;24307:2;24296:9;24292:18;24284:26;;24356:9;24350:4;24346:20;24342:1;24331:9;24327:17;24320:47;24384:131;24510:4;24384:131;:::i;:::-;24376:139;;24103:419;;;:::o;24528:222::-;24668:34;24664:1;24656:6;24652:14;24645:58;24737:5;24732:2;24724:6;24720:15;24713:30;24528:222;:::o;24756:366::-;24898:3;24919:67;24983:2;24978:3;24919:67;:::i;:::-;24912:74;;24995:93;25084:3;24995:93;:::i;:::-;25113:2;25108:3;25104:12;25097:19;;24756:366;;;:::o;25128:419::-;25294:4;25332:2;25321:9;25317:18;25309:26;;25381:9;25375:4;25371:20;25367:1;25356:9;25352:17;25345:47;25409:131;25535:4;25409:131;:::i;:::-;25401:139;;25128:419;;;:::o;25553:172::-;25693:24;25689:1;25681:6;25677:14;25670:48;25553:172;:::o;25731:366::-;25873:3;25894:67;25958:2;25953:3;25894:67;:::i;:::-;25887:74;;25970:93;26059:3;25970:93;:::i;:::-;26088:2;26083:3;26079:12;26072:19;;25731:366;;;:::o;26103:419::-;26269:4;26307:2;26296:9;26292:18;26284:26;;26356:9;26350:4;26346:20;26342:1;26331:9;26327:17;26320:47;26384:131;26510:4;26384:131;:::i;:::-;26376:139;;26103:419;;;:::o;26528:240::-;26668:34;26664:1;26656:6;26652:14;26645:58;26737:23;26732:2;26724:6;26720:15;26713:48;26528:240;:::o;26774:366::-;26916:3;26937:67;27001:2;26996:3;26937:67;:::i;:::-;26930:74;;27013:93;27102:3;27013:93;:::i;:::-;27131:2;27126:3;27122:12;27115:19;;26774:366;;;:::o;27146:419::-;27312:4;27350:2;27339:9;27335:18;27327:26;;27399:9;27393:4;27389:20;27385:1;27374:9;27370:17;27363:47;27427:131;27553:4;27427:131;:::i;:::-;27419:139;;27146:419;;;:::o;27571:169::-;27711:21;27707:1;27699:6;27695:14;27688:45;27571:169;:::o;27746:366::-;27888:3;27909:67;27973:2;27968:3;27909:67;:::i;:::-;27902:74;;27985:93;28074:3;27985:93;:::i;:::-;28103:2;28098:3;28094:12;28087:19;;27746:366;;;:::o;28118:419::-;28284:4;28322:2;28311:9;28307:18;28299:26;;28371:9;28365:4;28361:20;28357:1;28346:9;28342:17;28335:47;28399:131;28525:4;28399:131;:::i;:::-;28391:139;;28118:419;;;:::o;28543:241::-;28683:34;28679:1;28671:6;28667:14;28660:58;28752:24;28747:2;28739:6;28735:15;28728:49;28543:241;:::o;28790:366::-;28932:3;28953:67;29017:2;29012:3;28953:67;:::i;:::-;28946:74;;29029:93;29118:3;29029:93;:::i;:::-;29147:2;29142:3;29138:12;29131:19;;28790:366;;;:::o;29162:419::-;29328:4;29366:2;29355:9;29351:18;29343:26;;29415:9;29409:4;29405:20;29401:1;29390:9;29386:17;29379:47;29443:131;29569:4;29443:131;:::i;:::-;29435:139;;29162:419;;;:::o;29587:194::-;29627:4;29647:20;29665:1;29647:20;:::i;:::-;29642:25;;29681:20;29699:1;29681:20;:::i;:::-;29676:25;;29725:1;29722;29718:9;29710:17;;29749:1;29743:4;29740:11;29737:37;;;29754:18;;:::i;:::-;29737:37;29587:194;;;;:::o;29787:225::-;29927:34;29923:1;29915:6;29911:14;29904:58;29996:8;29991:2;29983:6;29979:15;29972:33;29787:225;:::o;30018:366::-;30160:3;30181:67;30245:2;30240:3;30181:67;:::i;:::-;30174:74;;30257:93;30346:3;30257:93;:::i;:::-;30375:2;30370:3;30366:12;30359:19;;30018:366;;;:::o;30390:419::-;30556:4;30594:2;30583:9;30579:18;30571:26;;30643:9;30637:4;30633:20;30629:1;30618:9;30614:17;30607:47;30671:131;30797:4;30671:131;:::i;:::-;30663:139;;30390:419;;;:::o;30815:442::-;30964:4;31002:2;30991:9;30987:18;30979:26;;31015:71;31083:1;31072:9;31068:17;31059:6;31015:71;:::i;:::-;31096:72;31164:2;31153:9;31149:18;31140:6;31096:72;:::i;:::-;31178;31246:2;31235:9;31231:18;31222:6;31178:72;:::i;:::-;30815:442;;;;;;:::o;31263:147::-;31364:11;31401:3;31386:18;;31263:147;;;;:::o;31416:114::-;;:::o;31536:398::-;31695:3;31716:83;31797:1;31792:3;31716:83;:::i;:::-;31709:90;;31808:93;31897:3;31808:93;:::i;:::-;31926:1;31921:3;31917:11;31910:18;;31536:398;;;:::o;31940:379::-;32124:3;32146:147;32289:3;32146:147;:::i;:::-;32139:154;;32310:3;32303:10;;31940:379;;;:::o;32325:180::-;32373:77;32370:1;32363:88;32470:4;32467:1;32460:15;32494:4;32491:1;32484:15;32511:180;32559:77;32556:1;32549:88;32656:4;32653:1;32646:15;32680:4;32677:1;32670:15;32697:143;32754:5;32785:6;32779:13;32770:22;;32801:33;32828:5;32801:33;:::i;:::-;32697:143;;;;:::o;32846:351::-;32916:6;32965:2;32953:9;32944:7;32940:23;32936:32;32933:119;;;32971:79;;:::i;:::-;32933:119;33091:1;33116:64;33172:7;33163:6;33152:9;33148:22;33116:64;:::i;:::-;33106:74;;33062:128;32846:351;;;;:::o;33203:85::-;33248:7;33277:5;33266:16;;33203:85;;;:::o;33294:158::-;33352:9;33385:61;33403:42;33412:32;33438:5;33412:32;:::i;:::-;33403:42;:::i;:::-;33385:61;:::i;:::-;33372:74;;33294:158;;;:::o;33458:147::-;33553:45;33592:5;33553:45;:::i;:::-;33548:3;33541:58;33458:147;;:::o;33611:114::-;33678:6;33712:5;33706:12;33696:22;;33611:114;;;:::o;33731:184::-;33830:11;33864:6;33859:3;33852:19;33904:4;33899:3;33895:14;33880:29;;33731:184;;;;:::o;33921:132::-;33988:4;34011:3;34003:11;;34041:4;34036:3;34032:14;34024:22;;33921:132;;;:::o;34059:108::-;34136:24;34154:5;34136:24;:::i;:::-;34131:3;34124:37;34059:108;;:::o;34173:179::-;34242:10;34263:46;34305:3;34297:6;34263:46;:::i;:::-;34341:4;34336:3;34332:14;34318:28;;34173:179;;;;:::o;34358:113::-;34428:4;34460;34455:3;34451:14;34443:22;;34358:113;;;:::o;34507:732::-;34626:3;34655:54;34703:5;34655:54;:::i;:::-;34725:86;34804:6;34799:3;34725:86;:::i;:::-;34718:93;;34835:56;34885:5;34835:56;:::i;:::-;34914:7;34945:1;34930:284;34955:6;34952:1;34949:13;34930:284;;;35031:6;35025:13;35058:63;35117:3;35102:13;35058:63;:::i;:::-;35051:70;;35144:60;35197:6;35144:60;:::i;:::-;35134:70;;34990:224;34977:1;34974;34970:9;34965:14;;34930:284;;;34934:14;35230:3;35223:10;;34631:608;;;34507:732;;;;:::o;35245:831::-;35508:4;35546:3;35535:9;35531:19;35523:27;;35560:71;35628:1;35617:9;35613:17;35604:6;35560:71;:::i;:::-;35641:80;35717:2;35706:9;35702:18;35693:6;35641:80;:::i;:::-;35768:9;35762:4;35758:20;35753:2;35742:9;35738:18;35731:48;35796:108;35899:4;35890:6;35796:108;:::i;:::-;35788:116;;35914:72;35982:2;35971:9;35967:18;35958:6;35914:72;:::i;:::-;35996:73;36064:3;36053:9;36049:19;36040:6;35996:73;:::i;:::-;35245:831;;;;;;;;:::o;36082:807::-;36331:4;36369:3;36358:9;36354:19;36346:27;;36383:71;36451:1;36440:9;36436:17;36427:6;36383:71;:::i;:::-;36464:72;36532:2;36521:9;36517:18;36508:6;36464:72;:::i;:::-;36546:80;36622:2;36611:9;36607:18;36598:6;36546:80;:::i;:::-;36636;36712:2;36701:9;36697:18;36688:6;36636:80;:::i;:::-;36726:73;36794:3;36783:9;36779:19;36770:6;36726:73;:::i;:::-;36809;36877:3;36866:9;36862:19;36853:6;36809:73;:::i;:::-;36082:807;;;;;;;;;:::o;36895:143::-;36952:5;36983:6;36977:13;36968:22;;36999:33;37026:5;36999:33;:::i;:::-;36895:143;;;;:::o;37044:663::-;37132:6;37140;37148;37197:2;37185:9;37176:7;37172:23;37168:32;37165:119;;;37203:79;;:::i;:::-;37165:119;37323:1;37348:64;37404:7;37395:6;37384:9;37380:22;37348:64;:::i;:::-;37338:74;;37294:128;37461:2;37487:64;37543:7;37534:6;37523:9;37519:22;37487:64;:::i;:::-;37477:74;;37432:129;37600:2;37626:64;37682:7;37673:6;37662:9;37658:22;37626:64;:::i;:::-;37616:74;;37571:129;37044:663;;;;;:::o

Swarm Source

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