ETH Price: $3,460.08 (-0.77%)

Token

Royal Shib (SHIRO)
 

Overview

Max Total Supply

1,000,000,000 SHIRO

Holders

20

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5,000,000 SHIRO

Value
$0.00
0x34A51f0AC47de1d8B450DEB3b6265e873Ba2910C
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:
SHIRO

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-06
*/

// SPDX-License-Identifier: MIT

/*

░██████╗██╗░░██╗██╗██████╗░░█████╗░
██╔════╝██║░░██║██║██╔══██╗██╔══██╗
╚█████╗░███████║██║██████╔╝██║░░██║
░╚═══██╗██╔══██║██║██╔══██╗██║░░██║
██████╔╝██║░░██║██║██║░░██║╚█████╔╝
╚═════╝░╚═╝░░╚═╝╚═╝╚═╝░░╚═╝░╚════╝░

Royal Shib ERC20 - $SHIRO

Telegram: t.me/RoyalShibETH

*/

pragma solidity =0.8.16;
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 SHIRO 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;
    mapping(address => bool) public bots;
    mapping (address => uint256) public _buyMap;
    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("Royal Shib", "SHIRO") {
        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 = 10;
        uint256 _buyLiquidityFee = 0;

        uint256 _sellMarketingFee = 70;
        uint256 _sellLiquidityFee = 0;

        uint256 totalSupply = 1000000000 * 1e18;

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

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        previousFee = sellTotalFees;

        marketingWallet = address(0x4b7045c921Da90eA5015F231172f8775B926CCb7);

        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 blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBots(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    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 <= 95, "Must keep fees at 95% or less");
    }

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        previousFee = sellTotalFees;
        require(sellTotalFees <= 95, "Must keep fees at 95% 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."
                    );
                }
                
                require(!bots[from] && !bots[to], "Your account is blacklisted!");

                //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":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBots","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"}]

60c06040526000600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055503480156200004757600080fd5b506040518060400160405280600a81526020017f526f79616c2053686962000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f534849524f0000000000000000000000000000000000000000000000000000008152508160039081620000c5919062000c98565b508060049081620000d7919062000c98565b505050620000fa620000ee620004df60201b60201c565b620004e760201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000126816001620005ad60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cc919062000de9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025a919062000de9565b6040518363ffffffff1660e01b81526004016200027992919062000e2c565b6020604051808303816000875af115801562000299573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bf919062000de9565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200030760a0516001620005ad60201b60201c565b6200031c60a05160016200069760201b60201c565b6000600a9050600080604690506000806b033b2e3c9fd0803ce800000090506a18d0bf423c03d8de0000006007819055506a18d0bf423c03d8de00000060098190555061271060058262000371919062000e88565b6200037d919062000f18565b60088190555084600c8190555083600d81905550600d54600c54620003a3919062000f50565b600b8190555082600f8190555081601081905550601054600f54620003c9919062000f50565b600e81905550600e54601381905550734b7045c921da90ea5015f231172f8775b926ccb7600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200044f620004416200073860201b60201c565b60016200076260201b60201c565b620004623060016200076260201b60201c565b6200047761dead60016200076260201b60201c565b620004996200048b6200073860201b60201c565b6001620005ad60201b60201c565b620004ac306001620005ad60201b60201c565b620004c161dead6001620005ad60201b60201c565b620004d333826200089c60201b60201c565b505050505050620010e8565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005bd620004df60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005e36200073860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200063c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006339062000fec565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000772620004df60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007986200073860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007f1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007e89062000fec565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200089091906200102b565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200090e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009059062001098565b60405180910390fd5b620009226000838362000a1460201b60201c565b806002600082825462000936919062000f50565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200098d919062000f50565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009f49190620010cb565b60405180910390a362000a106000838362000a1960201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000aa057607f821691505b60208210810362000ab65762000ab562000a58565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ae1565b62000b2c868362000ae1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b7962000b7362000b6d8462000b44565b62000b4e565b62000b44565b9050919050565b6000819050919050565b62000b958362000b58565b62000bad62000ba48262000b80565b84845462000aee565b825550505050565b600090565b62000bc462000bb5565b62000bd181848462000b8a565b505050565b5b8181101562000bf95762000bed60008262000bba565b60018101905062000bd7565b5050565b601f82111562000c485762000c128162000abc565b62000c1d8462000ad1565b8101602085101562000c2d578190505b62000c4562000c3c8562000ad1565b83018262000bd6565b50505b505050565b600082821c905092915050565b600062000c6d6000198460080262000c4d565b1980831691505092915050565b600062000c88838362000c5a565b9150826002028217905092915050565b62000ca38262000a1e565b67ffffffffffffffff81111562000cbf5762000cbe62000a29565b5b62000ccb825462000a87565b62000cd882828562000bfd565b600060209050601f83116001811462000d10576000841562000cfb578287015190505b62000d07858262000c7a565b86555062000d77565b601f19841662000d208662000abc565b60005b8281101562000d4a5784890151825560018201915060208501945060208101905062000d23565b8683101562000d6a578489015162000d66601f89168262000c5a565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000db18262000d84565b9050919050565b62000dc38162000da4565b811462000dcf57600080fd5b50565b60008151905062000de38162000db8565b92915050565b60006020828403121562000e025762000e0162000d7f565b5b600062000e128482850162000dd2565b91505092915050565b62000e268162000da4565b82525050565b600060408201905062000e43600083018562000e1b565b62000e52602083018462000e1b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000e958262000b44565b915062000ea28362000b44565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000ede5762000edd62000e59565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f258262000b44565b915062000f328362000b44565b92508262000f455762000f4462000ee9565b5b828204905092915050565b600062000f5d8262000b44565b915062000f6a8362000b44565b925082820190508082111562000f855762000f8462000e59565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000fd460208362000f8b565b915062000fe18262000f9c565b602082019050919050565b60006020820190508181036000830152620010078162000fc5565b9050919050565b60008115159050919050565b62001025816200100e565b82525050565b60006020820190506200104260008301846200101a565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001080601f8362000f8b565b91506200108d8262001048565b602082019050919050565b60006020820190508181036000830152620010b38162001071565b9050919050565b620010c58162000b44565b82525050565b6000602082019050620010e26000830184620010ba565b92915050565b60805160a0516147ae6200113860003960008181610db901526114a7015260008181610bd801528181612f52015281816130330152818161305a015281816130f6015261311d01526147ae6000f3fe6080604052600436106102285760003560e01c80637f2feddc11610123578063bbc0c742116100ab578063d85ba0631161006f578063d85ba0631461083b578063dd62ed3e14610866578063e2f45605146108a3578063f2fde38b146108ce578063f8b45b05146108f75761022f565b8063bbc0c74214610742578063bfd792841461076d578063c0246668146107aa578063c8c8ebe4146107d3578063d257b34f146107fe5761022f565b806396188399116100f2578063961883991461064d5780639a7a23d614610676578063a457c2d71461069f578063a9059cbb146106dc578063b792507e146107195761022f565b80637f2feddc146105a35780638a8c523c146105e05780638da5cb5b146105f757806395d89b41146106225761022f565b806339509351116101b15780636ddd1713116101755780636ddd1713146104d057806370a08231146104fb578063715018a6146105385780637571336a1461054f57806375f0a874146105785761022f565b806339509351146103d757806349bd5a5e146104145780634fbee1931461043f57806366ca9b831461047c5780636a486a8e146104a55761022f565b80631694505e116101f85780631694505e146102ee57806318160ddd1461031957806323b872dd1461034457806327c8f83514610381578063313ce567146103ac5761022f565b8062b8cf2a1461023457806302dbd8f81461025d57806306fdde0314610286578063095ea7b3146102b15761022f565b3661022f57005b600080fd5b34801561024057600080fd5b5061025b60048036038101906102569190613397565b610922565b005b34801561026957600080fd5b50610284600480360381019061027f9190613416565b610a33565b005b34801561029257600080fd5b5061029b610b26565b6040516102a891906134d5565b60405180910390f35b3480156102bd57600080fd5b506102d860048036038101906102d391906134f7565b610bb8565b6040516102e59190613552565b60405180910390f35b3480156102fa57600080fd5b50610303610bd6565b60405161031091906135cc565b60405180910390f35b34801561032557600080fd5b5061032e610bfa565b60405161033b91906135f6565b60405180910390f35b34801561035057600080fd5b5061036b60048036038101906103669190613611565b610c04565b6040516103789190613552565b60405180910390f35b34801561038d57600080fd5b50610396610cfc565b6040516103a39190613673565b60405180910390f35b3480156103b857600080fd5b506103c1610d02565b6040516103ce91906136aa565b60405180910390f35b3480156103e357600080fd5b506103fe60048036038101906103f991906134f7565b610d0b565b60405161040b9190613552565b60405180910390f35b34801561042057600080fd5b50610429610db7565b6040516104369190613673565b60405180910390f35b34801561044b57600080fd5b50610466600480360381019061046191906136c5565b610ddb565b6040516104739190613552565b60405180910390f35b34801561048857600080fd5b506104a3600480360381019061049e9190613416565b610e31565b005b3480156104b157600080fd5b506104ba610f1b565b6040516104c791906135f6565b60405180910390f35b3480156104dc57600080fd5b506104e5610f21565b6040516104f29190613552565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d91906136c5565b610f34565b60405161052f91906135f6565b60405180910390f35b34801561054457600080fd5b5061054d610f7c565b005b34801561055b57600080fd5b506105766004803603810190610571919061371e565b611004565b005b34801561058457600080fd5b5061058d6110db565b60405161059a9190613673565b60405180910390f35b3480156105af57600080fd5b506105ca60048036038101906105c591906136c5565b611101565b6040516105d791906135f6565b60405180910390f35b3480156105ec57600080fd5b506105f5611119565b005b34801561060357600080fd5b5061060c6111cd565b6040516106199190613673565b60405180910390f35b34801561062e57600080fd5b506106376111f7565b60405161064491906134d5565b60405180910390f35b34801561065957600080fd5b50610674600480360381019061066f9190613416565b611289565b005b34801561068257600080fd5b5061069d6004803603810190610698919061371e565b611429565b005b3480156106ab57600080fd5b506106c660048036038101906106c191906134f7565b611541565b6040516106d39190613552565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe91906134f7565b61162c565b6040516107109190613552565b60405180910390f35b34801561072557600080fd5b50610740600480360381019061073b91906136c5565b61164a565b005b34801561074e57600080fd5b50610757611721565b6040516107649190613552565b60405180910390f35b34801561077957600080fd5b50610794600480360381019061078f91906136c5565b611734565b6040516107a19190613552565b60405180910390f35b3480156107b657600080fd5b506107d160048036038101906107cc919061371e565b611754565b005b3480156107df57600080fd5b506107e8611879565b6040516107f591906135f6565b60405180910390f35b34801561080a57600080fd5b506108256004803603810190610820919061375e565b61187f565b6040516108329190613552565b60405180910390f35b34801561084757600080fd5b506108506119d4565b60405161085d91906135f6565b60405180910390f35b34801561087257600080fd5b5061088d6004803603810190610888919061378b565b6119da565b60405161089a91906135f6565b60405180910390f35b3480156108af57600080fd5b506108b8611a61565b6040516108c591906135f6565b60405180910390f35b3480156108da57600080fd5b506108f560048036038101906108f091906136c5565b611a67565b005b34801561090357600080fd5b5061090c611b5e565b60405161091991906135f6565b60405180910390f35b61092a611b64565b73ffffffffffffffffffffffffffffffffffffffff166109486111cd565b73ffffffffffffffffffffffffffffffffffffffff161461099e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099590613817565b60405180910390fd5b60005b8151811015610a2f576001601760008484815181106109c3576109c2613837565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610a2790613895565b9150506109a1565b5050565b610a3b611b64565b73ffffffffffffffffffffffffffffffffffffffff16610a596111cd565b73ffffffffffffffffffffffffffffffffffffffff1614610aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa690613817565b60405180910390fd5b81600f8190555080601081905550601054600f54610acd91906138dd565b600e81905550600e54601381905550605f600e541115610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b199061395d565b60405180910390fd5b5050565b606060038054610b35906139ac565b80601f0160208091040260200160405190810160405280929190818152602001828054610b61906139ac565b8015610bae5780601f10610b8357610100808354040283529160200191610bae565b820191906000526020600020905b815481529060010190602001808311610b9157829003601f168201915b5050505050905090565b6000610bcc610bc5611b64565b8484611b6c565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b6000610c11848484611d35565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c5c611b64565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390613a4f565b60405180910390fd5b610cf085610ce8611b64565b858403611b6c565b60019150509392505050565b61dead81565b60006012905090565b6000610dad610d18611b64565b848460016000610d26611b64565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610da891906138dd565b611b6c565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610e39611b64565b73ffffffffffffffffffffffffffffffffffffffff16610e576111cd565b73ffffffffffffffffffffffffffffffffffffffff1614610ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea490613817565b60405180910390fd5b81600c8190555080600d81905550600d54600c54610ecb91906138dd565b600b81905550605f600b541115610f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0e9061395d565b60405180910390fd5b5050565b600e5481565b600a60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f84611b64565b73ffffffffffffffffffffffffffffffffffffffff16610fa26111cd565b73ffffffffffffffffffffffffffffffffffffffff1614610ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fef90613817565b60405180910390fd5b6110026000612874565b565b61100c611b64565b73ffffffffffffffffffffffffffffffffffffffff1661102a6111cd565b73ffffffffffffffffffffffffffffffffffffffff1614611080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107790613817565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60186020528060005260406000206000915090505481565b611121611b64565b73ffffffffffffffffffffffffffffffffffffffff1661113f6111cd565b73ffffffffffffffffffffffffffffffffffffffff1614611195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118c90613817565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611206906139ac565b80601f0160208091040260200160405190810160405280929190818152602001828054611232906139ac565b801561127f5780601f106112545761010080835404028352916020019161127f565b820191906000526020600020905b81548152906001019060200180831161126257829003601f168201915b5050505050905090565b611291611b64565b73ffffffffffffffffffffffffffffffffffffffff166112af6111cd565b73ffffffffffffffffffffffffffffffffffffffff1614611305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fc90613817565b60405180910390fd5b670de0b6b3a76400006103e8600561131b610bfa565b6113259190613a6f565b61132f9190613af8565b6113399190613af8565b82101561137b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137290613b9b565b60405180910390fd5b670de0b6b3a76400006103e86005611391610bfa565b61139b9190613a6f565b6113a59190613af8565b6113af9190613af8565b8110156113f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e890613c2d565b60405180910390fd5b670de0b6b3a7640000816114059190613a6f565b600981905550670de0b6b3a76400008261141f9190613a6f565b6007819055505050565b611431611b64565b73ffffffffffffffffffffffffffffffffffffffff1661144f6111cd565b73ffffffffffffffffffffffffffffffffffffffff16146114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149c90613817565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152a90613cbf565b60405180910390fd5b61153d828261293a565b5050565b60008060016000611550611b64565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561160d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160490613d51565b60405180910390fd5b611621611618611b64565b85858403611b6c565b600191505092915050565b6000611640611639611b64565b8484611d35565b6001905092915050565b611652611b64565b73ffffffffffffffffffffffffffffffffffffffff166116706111cd565b73ffffffffffffffffffffffffffffffffffffffff16146116c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bd90613817565b60405180910390fd5b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600a60009054906101000a900460ff1681565b60176020528060005260406000206000915054906101000a900460ff1681565b61175c611b64565b73ffffffffffffffffffffffffffffffffffffffff1661177a6111cd565b73ffffffffffffffffffffffffffffffffffffffff16146117d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c790613817565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161186d9190613552565b60405180910390a25050565b60075481565b6000611889611b64565b73ffffffffffffffffffffffffffffffffffffffff166118a76111cd565b73ffffffffffffffffffffffffffffffffffffffff16146118fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f490613817565b60405180910390fd5b620186a0600161190b610bfa565b6119159190613a6f565b61191f9190613af8565b821015611961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195890613de3565b60405180910390fd5b6103e8600561196e610bfa565b6119789190613a6f565b6119829190613af8565b8211156119c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bb90613e75565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b611a6f611b64565b73ffffffffffffffffffffffffffffffffffffffff16611a8d6111cd565b73ffffffffffffffffffffffffffffffffffffffff1614611ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ada90613817565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4990613f07565b60405180910390fd5b611b5b81612874565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd290613f99565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c419061402b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d2891906135f6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9b906140bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0a9061414f565b60405180910390fd5b60008103611e2c57611e27838360006129db565b61286f565b611e346111cd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ea25750611e726111cd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611edb5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f15575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f2e5750600560149054906101000a900460ff16155b156123f457600a60009054906101000a900460ff1661202857601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611fe85750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201e906141bb565b60405180910390fd5b5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120cc5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61210b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210290614227565b60405180910390fd5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156121ae5750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612255576007548111156121f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ef906142b9565b60405180910390fd5b60095461220483610f34565b8261220f91906138dd565b1115612250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224790614325565b60405180910390fd5b6123f3565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122f85750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561234757600754811115612342576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612339906143b7565b60405180910390fd5b6123f2565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166123f1576009546123a483610f34565b826123af91906138dd565b11156123f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e790614325565b60405180910390fd5b5b5b5b5b60006123ff30610f34565b9050600060085482101590508080156124245750600a60019054906101000a900460ff165b801561243d5750600560149054906101000a900460ff16155b80156124935750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124e95750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561253f5750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612583576001600560146101000a81548160ff021916908315150217905550612567612c5a565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126395750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561264357600090505b6000811561285657601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156126a657506000600e54115b15612740576126d360646126c5600e5488612e6790919063ffffffff16565b612e7d90919063ffffffff16565b9050600e54601054826126e69190613a6f565b6126f09190613af8565b6012600082825461270191906138dd565b92505081905550600e54600f54826127199190613a6f565b6127239190613af8565b6011600082825461273491906138dd565b92505081905550612832565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561279b57506000600b54115b15612831576127c860646127ba600b5488612e6790919063ffffffff16565b612e7d90919063ffffffff16565b9050600b54600d54826127db9190613a6f565b6127e59190613af8565b601260008282546127f691906138dd565b92505081905550600b54600c548261280e9190613a6f565b6128189190613af8565b6011600082825461282991906138dd565b925050819055505b5b6000811115612847576128468730836129db565b5b808561285391906143d7565b94505b6128618787876129db565b601354600e81905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a41906140bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab09061414f565b60405180910390fd5b612ac4838383612e93565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b419061447d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612bdd91906138dd565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c4191906135f6565b60405180910390a3612c54848484612e98565b50505050565b6000612c6530610f34565b90506000601154601254612c7991906138dd565b9050600080831480612c8b5750600082145b15612c9857505050612e65565b6014600854612ca79190613a6f565b831115612cc0576014600854612cbd9190613a6f565b92505b600060028360125486612cd39190613a6f565b612cdd9190613af8565b612ce79190613af8565b90506000612cfe8286612e9d90919063ffffffff16565b90506000479050612d0e82612eb3565b6000612d238247612e9d90919063ffffffff16565b90506000612d4e87612d4060115485612e6790919063ffffffff16565b612e7d90919063ffffffff16565b905060008183612d5e91906143d7565b905060006012819055506000601181905550600086118015612d805750600081115b15612dcd57612d8f86826130f0565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601254604051612dc49392919061449d565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612e1390614505565b60006040518083038185875af1925050503d8060008114612e50576040519150601f19603f3d011682016040523d82523d6000602084013e612e55565b606091505b5050809750505050505050505050505b565b60008183612e759190613a6f565b905092915050565b60008183612e8b9190613af8565b905092915050565b505050565b505050565b60008183612eab91906143d7565b905092915050565b6000600267ffffffffffffffff811115612ed057612ecf6131f6565b5b604051908082528060200260200182016040528015612efe5781602001602082028036833780820191505090505b5090503081600081518110612f1657612f15613837565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fdf919061452f565b81600181518110612ff357612ff2613837565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613058307f000000000000000000000000000000000000000000000000000000000000000084611b6c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130ba959493929190614655565b600060405180830381600087803b1580156130d457600080fd5b505af11580156130e8573d6000803e3d6000fd5b505050505050565b61311b307f000000000000000000000000000000000000000000000000000000000000000084611b6c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613182969594939291906146af565b60606040518083038185885af11580156131a0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131c59190614725565b5050505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61322e826131e5565b810181811067ffffffffffffffff8211171561324d5761324c6131f6565b5b80604052505050565b60006132606131cc565b905061326c8282613225565b919050565b600067ffffffffffffffff82111561328c5761328b6131f6565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132cd826132a2565b9050919050565b6132dd816132c2565b81146132e857600080fd5b50565b6000813590506132fa816132d4565b92915050565b600061331361330e84613271565b613256565b905080838252602082019050602084028301858111156133365761333561329d565b5b835b8181101561335f578061334b88826132eb565b845260208401935050602081019050613338565b5050509392505050565b600082601f83011261337e5761337d6131e0565b5b813561338e848260208601613300565b91505092915050565b6000602082840312156133ad576133ac6131d6565b5b600082013567ffffffffffffffff8111156133cb576133ca6131db565b5b6133d784828501613369565b91505092915050565b6000819050919050565b6133f3816133e0565b81146133fe57600080fd5b50565b600081359050613410816133ea565b92915050565b6000806040838503121561342d5761342c6131d6565b5b600061343b85828601613401565b925050602061344c85828601613401565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613490578082015181840152602081019050613475565b60008484015250505050565b60006134a782613456565b6134b18185613461565b93506134c1818560208601613472565b6134ca816131e5565b840191505092915050565b600060208201905081810360008301526134ef818461349c565b905092915050565b6000806040838503121561350e5761350d6131d6565b5b600061351c858286016132eb565b925050602061352d85828601613401565b9150509250929050565b60008115159050919050565b61354c81613537565b82525050565b60006020820190506135676000830184613543565b92915050565b6000819050919050565b600061359261358d613588846132a2565b61356d565b6132a2565b9050919050565b60006135a482613577565b9050919050565b60006135b682613599565b9050919050565b6135c6816135ab565b82525050565b60006020820190506135e160008301846135bd565b92915050565b6135f0816133e0565b82525050565b600060208201905061360b60008301846135e7565b92915050565b60008060006060848603121561362a576136296131d6565b5b6000613638868287016132eb565b9350506020613649868287016132eb565b925050604061365a86828701613401565b9150509250925092565b61366d816132c2565b82525050565b60006020820190506136886000830184613664565b92915050565b600060ff82169050919050565b6136a48161368e565b82525050565b60006020820190506136bf600083018461369b565b92915050565b6000602082840312156136db576136da6131d6565b5b60006136e9848285016132eb565b91505092915050565b6136fb81613537565b811461370657600080fd5b50565b600081359050613718816136f2565b92915050565b60008060408385031215613735576137346131d6565b5b6000613743858286016132eb565b925050602061375485828601613709565b9150509250929050565b600060208284031215613774576137736131d6565b5b600061378284828501613401565b91505092915050565b600080604083850312156137a2576137a16131d6565b5b60006137b0858286016132eb565b92505060206137c1858286016132eb565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613801602083613461565b915061380c826137cb565b602082019050919050565b60006020820190508181036000830152613830816137f4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006138a0826133e0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036138d2576138d1613866565b5b600182019050919050565b60006138e8826133e0565b91506138f3836133e0565b925082820190508082111561390b5761390a613866565b5b92915050565b7f4d757374206b656570206665657320617420393525206f72206c657373000000600082015250565b6000613947601d83613461565b915061395282613911565b602082019050919050565b600060208201905081810360008301526139768161393a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806139c457607f821691505b6020821081036139d7576139d661397d565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613a39602883613461565b9150613a44826139dd565b604082019050919050565b60006020820190508181036000830152613a6881613a2c565b9050919050565b6000613a7a826133e0565b9150613a85836133e0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613abe57613abd613866565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b03826133e0565b9150613b0e836133e0565b925082613b1e57613b1d613ac9565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e3560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b85602183613461565b9150613b9082613b29565b604082019050919050565b60006020820190508181036000830152613bb481613b78565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613c17602483613461565b9150613c2282613bbb565b604082019050919050565b60006020820190508181036000830152613c4681613c0a565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613ca9603983613461565b9150613cb482613c4d565b604082019050919050565b60006020820190508181036000830152613cd881613c9c565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613d3b602583613461565b9150613d4682613cdf565b604082019050919050565b60006020820190508181036000830152613d6a81613d2e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613dcd603583613461565b9150613dd882613d71565b604082019050919050565b60006020820190508181036000830152613dfc81613dc0565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613e5f603483613461565b9150613e6a82613e03565b604082019050919050565b60006020820190508181036000830152613e8e81613e52565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ef1602683613461565b9150613efc82613e95565b604082019050919050565b60006020820190508181036000830152613f2081613ee4565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f83602483613461565b9150613f8e82613f27565b604082019050919050565b60006020820190508181036000830152613fb281613f76565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614015602283613461565b915061402082613fb9565b604082019050919050565b6000602082019050818103600083015261404481614008565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006140a7602583613461565b91506140b28261404b565b604082019050919050565b600060208201905081810360008301526140d68161409a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614139602383613461565b9150614144826140dd565b604082019050919050565b600060208201905081810360008301526141688161412c565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006141a5601683613461565b91506141b08261416f565b602082019050919050565b600060208201905081810360008301526141d481614198565b9050919050565b7f596f7572206163636f756e7420697320626c61636b6c69737465642100000000600082015250565b6000614211601c83613461565b915061421c826141db565b602082019050919050565b6000602082019050818103600083015261424081614204565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006142a3603583613461565b91506142ae82614247565b604082019050919050565b600060208201905081810360008301526142d281614296565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061430f601383613461565b915061431a826142d9565b602082019050919050565b6000602082019050818103600083015261433e81614302565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006143a1603683613461565b91506143ac82614345565b604082019050919050565b600060208201905081810360008301526143d081614394565b9050919050565b60006143e2826133e0565b91506143ed836133e0565b925082820390508181111561440557614404613866565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614467602683613461565b91506144728261440b565b604082019050919050565b600060208201905081810360008301526144968161445a565b9050919050565b60006060820190506144b260008301866135e7565b6144bf60208301856135e7565b6144cc60408301846135e7565b949350505050565b600081905092915050565b50565b60006144ef6000836144d4565b91506144fa826144df565b600082019050919050565b6000614510826144e2565b9150819050919050565b600081519050614529816132d4565b92915050565b600060208284031215614545576145446131d6565b5b60006145538482850161451a565b91505092915050565b6000819050919050565b600061458161457c6145778461455c565b61356d565b6133e0565b9050919050565b61459181614566565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145cc816132c2565b82525050565b60006145de83836145c3565b60208301905092915050565b6000602082019050919050565b600061460282614597565b61460c81856145a2565b9350614617836145b3565b8060005b8381101561464857815161462f88826145d2565b975061463a836145ea565b92505060018101905061461b565b5085935050505092915050565b600060a08201905061466a60008301886135e7565b6146776020830187614588565b818103604083015261468981866145f7565b90506146986060830185613664565b6146a560808301846135e7565b9695505050505050565b600060c0820190506146c46000830189613664565b6146d160208301886135e7565b6146de6040830187614588565b6146eb6060830186614588565b6146f86080830185613664565b61470560a08301846135e7565b979650505050505050565b60008151905061471f816133ea565b92915050565b60008060006060848603121561473e5761473d6131d6565b5b600061474c86828701614710565b935050602061475d86828701614710565b925050604061476e86828701614710565b915050925092509256fea2646970667358221220b3c16a056c6fafcdb9a2ff2c21bc9f2a496db20572de0affee33e9077ca5c31664736f6c63430008100033

Deployed Bytecode

0x6080604052600436106102285760003560e01c80637f2feddc11610123578063bbc0c742116100ab578063d85ba0631161006f578063d85ba0631461083b578063dd62ed3e14610866578063e2f45605146108a3578063f2fde38b146108ce578063f8b45b05146108f75761022f565b8063bbc0c74214610742578063bfd792841461076d578063c0246668146107aa578063c8c8ebe4146107d3578063d257b34f146107fe5761022f565b806396188399116100f2578063961883991461064d5780639a7a23d614610676578063a457c2d71461069f578063a9059cbb146106dc578063b792507e146107195761022f565b80637f2feddc146105a35780638a8c523c146105e05780638da5cb5b146105f757806395d89b41146106225761022f565b806339509351116101b15780636ddd1713116101755780636ddd1713146104d057806370a08231146104fb578063715018a6146105385780637571336a1461054f57806375f0a874146105785761022f565b806339509351146103d757806349bd5a5e146104145780634fbee1931461043f57806366ca9b831461047c5780636a486a8e146104a55761022f565b80631694505e116101f85780631694505e146102ee57806318160ddd1461031957806323b872dd1461034457806327c8f83514610381578063313ce567146103ac5761022f565b8062b8cf2a1461023457806302dbd8f81461025d57806306fdde0314610286578063095ea7b3146102b15761022f565b3661022f57005b600080fd5b34801561024057600080fd5b5061025b60048036038101906102569190613397565b610922565b005b34801561026957600080fd5b50610284600480360381019061027f9190613416565b610a33565b005b34801561029257600080fd5b5061029b610b26565b6040516102a891906134d5565b60405180910390f35b3480156102bd57600080fd5b506102d860048036038101906102d391906134f7565b610bb8565b6040516102e59190613552565b60405180910390f35b3480156102fa57600080fd5b50610303610bd6565b60405161031091906135cc565b60405180910390f35b34801561032557600080fd5b5061032e610bfa565b60405161033b91906135f6565b60405180910390f35b34801561035057600080fd5b5061036b60048036038101906103669190613611565b610c04565b6040516103789190613552565b60405180910390f35b34801561038d57600080fd5b50610396610cfc565b6040516103a39190613673565b60405180910390f35b3480156103b857600080fd5b506103c1610d02565b6040516103ce91906136aa565b60405180910390f35b3480156103e357600080fd5b506103fe60048036038101906103f991906134f7565b610d0b565b60405161040b9190613552565b60405180910390f35b34801561042057600080fd5b50610429610db7565b6040516104369190613673565b60405180910390f35b34801561044b57600080fd5b50610466600480360381019061046191906136c5565b610ddb565b6040516104739190613552565b60405180910390f35b34801561048857600080fd5b506104a3600480360381019061049e9190613416565b610e31565b005b3480156104b157600080fd5b506104ba610f1b565b6040516104c791906135f6565b60405180910390f35b3480156104dc57600080fd5b506104e5610f21565b6040516104f29190613552565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d91906136c5565b610f34565b60405161052f91906135f6565b60405180910390f35b34801561054457600080fd5b5061054d610f7c565b005b34801561055b57600080fd5b506105766004803603810190610571919061371e565b611004565b005b34801561058457600080fd5b5061058d6110db565b60405161059a9190613673565b60405180910390f35b3480156105af57600080fd5b506105ca60048036038101906105c591906136c5565b611101565b6040516105d791906135f6565b60405180910390f35b3480156105ec57600080fd5b506105f5611119565b005b34801561060357600080fd5b5061060c6111cd565b6040516106199190613673565b60405180910390f35b34801561062e57600080fd5b506106376111f7565b60405161064491906134d5565b60405180910390f35b34801561065957600080fd5b50610674600480360381019061066f9190613416565b611289565b005b34801561068257600080fd5b5061069d6004803603810190610698919061371e565b611429565b005b3480156106ab57600080fd5b506106c660048036038101906106c191906134f7565b611541565b6040516106d39190613552565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe91906134f7565b61162c565b6040516107109190613552565b60405180910390f35b34801561072557600080fd5b50610740600480360381019061073b91906136c5565b61164a565b005b34801561074e57600080fd5b50610757611721565b6040516107649190613552565b60405180910390f35b34801561077957600080fd5b50610794600480360381019061078f91906136c5565b611734565b6040516107a19190613552565b60405180910390f35b3480156107b657600080fd5b506107d160048036038101906107cc919061371e565b611754565b005b3480156107df57600080fd5b506107e8611879565b6040516107f591906135f6565b60405180910390f35b34801561080a57600080fd5b506108256004803603810190610820919061375e565b61187f565b6040516108329190613552565b60405180910390f35b34801561084757600080fd5b506108506119d4565b60405161085d91906135f6565b60405180910390f35b34801561087257600080fd5b5061088d6004803603810190610888919061378b565b6119da565b60405161089a91906135f6565b60405180910390f35b3480156108af57600080fd5b506108b8611a61565b6040516108c591906135f6565b60405180910390f35b3480156108da57600080fd5b506108f560048036038101906108f091906136c5565b611a67565b005b34801561090357600080fd5b5061090c611b5e565b60405161091991906135f6565b60405180910390f35b61092a611b64565b73ffffffffffffffffffffffffffffffffffffffff166109486111cd565b73ffffffffffffffffffffffffffffffffffffffff161461099e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099590613817565b60405180910390fd5b60005b8151811015610a2f576001601760008484815181106109c3576109c2613837565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610a2790613895565b9150506109a1565b5050565b610a3b611b64565b73ffffffffffffffffffffffffffffffffffffffff16610a596111cd565b73ffffffffffffffffffffffffffffffffffffffff1614610aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa690613817565b60405180910390fd5b81600f8190555080601081905550601054600f54610acd91906138dd565b600e81905550600e54601381905550605f600e541115610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b199061395d565b60405180910390fd5b5050565b606060038054610b35906139ac565b80601f0160208091040260200160405190810160405280929190818152602001828054610b61906139ac565b8015610bae5780601f10610b8357610100808354040283529160200191610bae565b820191906000526020600020905b815481529060010190602001808311610b9157829003601f168201915b5050505050905090565b6000610bcc610bc5611b64565b8484611b6c565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b6000610c11848484611d35565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c5c611b64565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390613a4f565b60405180910390fd5b610cf085610ce8611b64565b858403611b6c565b60019150509392505050565b61dead81565b60006012905090565b6000610dad610d18611b64565b848460016000610d26611b64565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610da891906138dd565b611b6c565b6001905092915050565b7f0000000000000000000000007b980cb47898a83b4e6da35a1cf17764cedc432e81565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610e39611b64565b73ffffffffffffffffffffffffffffffffffffffff16610e576111cd565b73ffffffffffffffffffffffffffffffffffffffff1614610ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea490613817565b60405180910390fd5b81600c8190555080600d81905550600d54600c54610ecb91906138dd565b600b81905550605f600b541115610f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0e9061395d565b60405180910390fd5b5050565b600e5481565b600a60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f84611b64565b73ffffffffffffffffffffffffffffffffffffffff16610fa26111cd565b73ffffffffffffffffffffffffffffffffffffffff1614610ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fef90613817565b60405180910390fd5b6110026000612874565b565b61100c611b64565b73ffffffffffffffffffffffffffffffffffffffff1661102a6111cd565b73ffffffffffffffffffffffffffffffffffffffff1614611080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107790613817565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60186020528060005260406000206000915090505481565b611121611b64565b73ffffffffffffffffffffffffffffffffffffffff1661113f6111cd565b73ffffffffffffffffffffffffffffffffffffffff1614611195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118c90613817565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611206906139ac565b80601f0160208091040260200160405190810160405280929190818152602001828054611232906139ac565b801561127f5780601f106112545761010080835404028352916020019161127f565b820191906000526020600020905b81548152906001019060200180831161126257829003601f168201915b5050505050905090565b611291611b64565b73ffffffffffffffffffffffffffffffffffffffff166112af6111cd565b73ffffffffffffffffffffffffffffffffffffffff1614611305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fc90613817565b60405180910390fd5b670de0b6b3a76400006103e8600561131b610bfa565b6113259190613a6f565b61132f9190613af8565b6113399190613af8565b82101561137b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137290613b9b565b60405180910390fd5b670de0b6b3a76400006103e86005611391610bfa565b61139b9190613a6f565b6113a59190613af8565b6113af9190613af8565b8110156113f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e890613c2d565b60405180910390fd5b670de0b6b3a7640000816114059190613a6f565b600981905550670de0b6b3a76400008261141f9190613a6f565b6007819055505050565b611431611b64565b73ffffffffffffffffffffffffffffffffffffffff1661144f6111cd565b73ffffffffffffffffffffffffffffffffffffffff16146114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149c90613817565b60405180910390fd5b7f0000000000000000000000007b980cb47898a83b4e6da35a1cf17764cedc432e73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152a90613cbf565b60405180910390fd5b61153d828261293a565b5050565b60008060016000611550611b64565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561160d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160490613d51565b60405180910390fd5b611621611618611b64565b85858403611b6c565b600191505092915050565b6000611640611639611b64565b8484611d35565b6001905092915050565b611652611b64565b73ffffffffffffffffffffffffffffffffffffffff166116706111cd565b73ffffffffffffffffffffffffffffffffffffffff16146116c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bd90613817565b60405180910390fd5b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600a60009054906101000a900460ff1681565b60176020528060005260406000206000915054906101000a900460ff1681565b61175c611b64565b73ffffffffffffffffffffffffffffffffffffffff1661177a6111cd565b73ffffffffffffffffffffffffffffffffffffffff16146117d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c790613817565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161186d9190613552565b60405180910390a25050565b60075481565b6000611889611b64565b73ffffffffffffffffffffffffffffffffffffffff166118a76111cd565b73ffffffffffffffffffffffffffffffffffffffff16146118fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f490613817565b60405180910390fd5b620186a0600161190b610bfa565b6119159190613a6f565b61191f9190613af8565b821015611961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195890613de3565b60405180910390fd5b6103e8600561196e610bfa565b6119789190613a6f565b6119829190613af8565b8211156119c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bb90613e75565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b611a6f611b64565b73ffffffffffffffffffffffffffffffffffffffff16611a8d6111cd565b73ffffffffffffffffffffffffffffffffffffffff1614611ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ada90613817565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4990613f07565b60405180910390fd5b611b5b81612874565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd290613f99565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c419061402b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d2891906135f6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9b906140bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0a9061414f565b60405180910390fd5b60008103611e2c57611e27838360006129db565b61286f565b611e346111cd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ea25750611e726111cd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611edb5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f15575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f2e5750600560149054906101000a900460ff16155b156123f457600a60009054906101000a900460ff1661202857601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611fe85750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201e906141bb565b60405180910390fd5b5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120cc5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61210b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210290614227565b60405180910390fd5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156121ae5750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612255576007548111156121f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ef906142b9565b60405180910390fd5b60095461220483610f34565b8261220f91906138dd565b1115612250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224790614325565b60405180910390fd5b6123f3565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122f85750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561234757600754811115612342576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612339906143b7565b60405180910390fd5b6123f2565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166123f1576009546123a483610f34565b826123af91906138dd565b11156123f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e790614325565b60405180910390fd5b5b5b5b5b60006123ff30610f34565b9050600060085482101590508080156124245750600a60019054906101000a900460ff165b801561243d5750600560149054906101000a900460ff16155b80156124935750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124e95750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561253f5750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612583576001600560146101000a81548160ff021916908315150217905550612567612c5a565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126395750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561264357600090505b6000811561285657601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156126a657506000600e54115b15612740576126d360646126c5600e5488612e6790919063ffffffff16565b612e7d90919063ffffffff16565b9050600e54601054826126e69190613a6f565b6126f09190613af8565b6012600082825461270191906138dd565b92505081905550600e54600f54826127199190613a6f565b6127239190613af8565b6011600082825461273491906138dd565b92505081905550612832565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561279b57506000600b54115b15612831576127c860646127ba600b5488612e6790919063ffffffff16565b612e7d90919063ffffffff16565b9050600b54600d54826127db9190613a6f565b6127e59190613af8565b601260008282546127f691906138dd565b92505081905550600b54600c548261280e9190613a6f565b6128189190613af8565b6011600082825461282991906138dd565b925050819055505b5b6000811115612847576128468730836129db565b5b808561285391906143d7565b94505b6128618787876129db565b601354600e81905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a41906140bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab09061414f565b60405180910390fd5b612ac4838383612e93565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b419061447d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612bdd91906138dd565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c4191906135f6565b60405180910390a3612c54848484612e98565b50505050565b6000612c6530610f34565b90506000601154601254612c7991906138dd565b9050600080831480612c8b5750600082145b15612c9857505050612e65565b6014600854612ca79190613a6f565b831115612cc0576014600854612cbd9190613a6f565b92505b600060028360125486612cd39190613a6f565b612cdd9190613af8565b612ce79190613af8565b90506000612cfe8286612e9d90919063ffffffff16565b90506000479050612d0e82612eb3565b6000612d238247612e9d90919063ffffffff16565b90506000612d4e87612d4060115485612e6790919063ffffffff16565b612e7d90919063ffffffff16565b905060008183612d5e91906143d7565b905060006012819055506000601181905550600086118015612d805750600081115b15612dcd57612d8f86826130f0565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601254604051612dc49392919061449d565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612e1390614505565b60006040518083038185875af1925050503d8060008114612e50576040519150601f19603f3d011682016040523d82523d6000602084013e612e55565b606091505b5050809750505050505050505050505b565b60008183612e759190613a6f565b905092915050565b60008183612e8b9190613af8565b905092915050565b505050565b505050565b60008183612eab91906143d7565b905092915050565b6000600267ffffffffffffffff811115612ed057612ecf6131f6565b5b604051908082528060200260200182016040528015612efe5781602001602082028036833780820191505090505b5090503081600081518110612f1657612f15613837565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fdf919061452f565b81600181518110612ff357612ff2613837565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613058307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611b6c565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130ba959493929190614655565b600060405180830381600087803b1580156130d457600080fd5b505af11580156130e8573d6000803e3d6000fd5b505050505050565b61311b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611b6c565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613182969594939291906146af565b60606040518083038185885af11580156131a0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131c59190614725565b5050505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61322e826131e5565b810181811067ffffffffffffffff8211171561324d5761324c6131f6565b5b80604052505050565b60006132606131cc565b905061326c8282613225565b919050565b600067ffffffffffffffff82111561328c5761328b6131f6565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132cd826132a2565b9050919050565b6132dd816132c2565b81146132e857600080fd5b50565b6000813590506132fa816132d4565b92915050565b600061331361330e84613271565b613256565b905080838252602082019050602084028301858111156133365761333561329d565b5b835b8181101561335f578061334b88826132eb565b845260208401935050602081019050613338565b5050509392505050565b600082601f83011261337e5761337d6131e0565b5b813561338e848260208601613300565b91505092915050565b6000602082840312156133ad576133ac6131d6565b5b600082013567ffffffffffffffff8111156133cb576133ca6131db565b5b6133d784828501613369565b91505092915050565b6000819050919050565b6133f3816133e0565b81146133fe57600080fd5b50565b600081359050613410816133ea565b92915050565b6000806040838503121561342d5761342c6131d6565b5b600061343b85828601613401565b925050602061344c85828601613401565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613490578082015181840152602081019050613475565b60008484015250505050565b60006134a782613456565b6134b18185613461565b93506134c1818560208601613472565b6134ca816131e5565b840191505092915050565b600060208201905081810360008301526134ef818461349c565b905092915050565b6000806040838503121561350e5761350d6131d6565b5b600061351c858286016132eb565b925050602061352d85828601613401565b9150509250929050565b60008115159050919050565b61354c81613537565b82525050565b60006020820190506135676000830184613543565b92915050565b6000819050919050565b600061359261358d613588846132a2565b61356d565b6132a2565b9050919050565b60006135a482613577565b9050919050565b60006135b682613599565b9050919050565b6135c6816135ab565b82525050565b60006020820190506135e160008301846135bd565b92915050565b6135f0816133e0565b82525050565b600060208201905061360b60008301846135e7565b92915050565b60008060006060848603121561362a576136296131d6565b5b6000613638868287016132eb565b9350506020613649868287016132eb565b925050604061365a86828701613401565b9150509250925092565b61366d816132c2565b82525050565b60006020820190506136886000830184613664565b92915050565b600060ff82169050919050565b6136a48161368e565b82525050565b60006020820190506136bf600083018461369b565b92915050565b6000602082840312156136db576136da6131d6565b5b60006136e9848285016132eb565b91505092915050565b6136fb81613537565b811461370657600080fd5b50565b600081359050613718816136f2565b92915050565b60008060408385031215613735576137346131d6565b5b6000613743858286016132eb565b925050602061375485828601613709565b9150509250929050565b600060208284031215613774576137736131d6565b5b600061378284828501613401565b91505092915050565b600080604083850312156137a2576137a16131d6565b5b60006137b0858286016132eb565b92505060206137c1858286016132eb565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613801602083613461565b915061380c826137cb565b602082019050919050565b60006020820190508181036000830152613830816137f4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006138a0826133e0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036138d2576138d1613866565b5b600182019050919050565b60006138e8826133e0565b91506138f3836133e0565b925082820190508082111561390b5761390a613866565b5b92915050565b7f4d757374206b656570206665657320617420393525206f72206c657373000000600082015250565b6000613947601d83613461565b915061395282613911565b602082019050919050565b600060208201905081810360008301526139768161393a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806139c457607f821691505b6020821081036139d7576139d661397d565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613a39602883613461565b9150613a44826139dd565b604082019050919050565b60006020820190508181036000830152613a6881613a2c565b9050919050565b6000613a7a826133e0565b9150613a85836133e0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613abe57613abd613866565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b03826133e0565b9150613b0e836133e0565b925082613b1e57613b1d613ac9565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e3560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b85602183613461565b9150613b9082613b29565b604082019050919050565b60006020820190508181036000830152613bb481613b78565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613c17602483613461565b9150613c2282613bbb565b604082019050919050565b60006020820190508181036000830152613c4681613c0a565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613ca9603983613461565b9150613cb482613c4d565b604082019050919050565b60006020820190508181036000830152613cd881613c9c565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613d3b602583613461565b9150613d4682613cdf565b604082019050919050565b60006020820190508181036000830152613d6a81613d2e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613dcd603583613461565b9150613dd882613d71565b604082019050919050565b60006020820190508181036000830152613dfc81613dc0565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613e5f603483613461565b9150613e6a82613e03565b604082019050919050565b60006020820190508181036000830152613e8e81613e52565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ef1602683613461565b9150613efc82613e95565b604082019050919050565b60006020820190508181036000830152613f2081613ee4565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f83602483613461565b9150613f8e82613f27565b604082019050919050565b60006020820190508181036000830152613fb281613f76565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614015602283613461565b915061402082613fb9565b604082019050919050565b6000602082019050818103600083015261404481614008565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006140a7602583613461565b91506140b28261404b565b604082019050919050565b600060208201905081810360008301526140d68161409a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614139602383613461565b9150614144826140dd565b604082019050919050565b600060208201905081810360008301526141688161412c565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006141a5601683613461565b91506141b08261416f565b602082019050919050565b600060208201905081810360008301526141d481614198565b9050919050565b7f596f7572206163636f756e7420697320626c61636b6c69737465642100000000600082015250565b6000614211601c83613461565b915061421c826141db565b602082019050919050565b6000602082019050818103600083015261424081614204565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006142a3603583613461565b91506142ae82614247565b604082019050919050565b600060208201905081810360008301526142d281614296565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061430f601383613461565b915061431a826142d9565b602082019050919050565b6000602082019050818103600083015261433e81614302565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006143a1603683613461565b91506143ac82614345565b604082019050919050565b600060208201905081810360008301526143d081614394565b9050919050565b60006143e2826133e0565b91506143ed836133e0565b925082820390508181111561440557614404613866565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614467602683613461565b91506144728261440b565b604082019050919050565b600060208201905081810360008301526144968161445a565b9050919050565b60006060820190506144b260008301866135e7565b6144bf60208301856135e7565b6144cc60408301846135e7565b949350505050565b600081905092915050565b50565b60006144ef6000836144d4565b91506144fa826144df565b600082019050919050565b6000614510826144e2565b9150819050919050565b600081519050614529816132d4565b92915050565b600060208284031215614545576145446131d6565b5b60006145538482850161451a565b91505092915050565b6000819050919050565b600061458161457c6145778461455c565b61356d565b6133e0565b9050919050565b61459181614566565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145cc816132c2565b82525050565b60006145de83836145c3565b60208301905092915050565b6000602082019050919050565b600061460282614597565b61460c81856145a2565b9350614617836145b3565b8060005b8381101561464857815161462f88826145d2565b975061463a836145ea565b92505060018101905061461b565b5085935050505092915050565b600060a08201905061466a60008301886135e7565b6146776020830187614588565b818103604083015261468981866145f7565b90506146986060830185613664565b6146a560808301846135e7565b9695505050505050565b600060c0820190506146c46000830189613664565b6146d160208301886135e7565b6146de6040830187614588565b6146eb6060830186614588565b6146f86080830185613664565b61470560a08301846135e7565b979650505050505050565b60008151905061471f816133ea565b92915050565b60008060006060848603121561473e5761473d6131d6565b5b600061474c86828701614710565b935050602061475d86828701614710565b925050604061476e86828701614710565b915050925092509256fea2646970667358221220b3c16a056c6fafcdb9a2ff2c21bc9f2a496db20572de0affee33e9077ca5c31664736f6c63430008100033

Deployed Bytecode Sourcemap

14861:12561:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19423:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20219:380;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3397:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4311:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14936:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3718:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4488:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15039:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3617:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4988:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14994:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21305:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19876:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15477:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15325:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3834:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1524:112;;;;;;;;;;;;;:::i;:::-;;19701:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15131:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15948:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18286:112;;;;;;;;;;;;;:::i;:::-;;1301:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3505:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18911:504;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20797:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5211:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3969:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19600:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15285:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15905:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20607:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15170:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18406:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15365:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4152:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15212:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1644:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15252:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19423:169;1447:12;:10;:12::i;:::-;1436:23;;:7;:5;:7::i;:::-;:23;;;1428:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19499:9:::1;19494:91;19518:5;:12;19514:1;:16;19494:91;;;19569:4;19552;:14;19557:5;19563:1;19557:8;;;;;;;;:::i;:::-;;;;;;;;19552:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;19532:3;;;;;:::i;:::-;;;;19494:91;;;;19423:169:::0;:::o;20219:380::-;1447:12;:10;:12::i;:::-;1436:23;;:7;:5;:7::i;:::-;:23;;;1428:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20363:13:::1;20344:16;:32;;;;20406:13;20387:16;:32;;;;20465:16;;20446;;:35;;;;:::i;:::-;20430:13;:51;;;;20506:13;;20492:11;:27;;;;20555:2;20538:13;;:19;;20530:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;20219:380:::0;;:::o;3397:100::-;3451:13;3484:5;3477:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3397:100;:::o;4311:169::-;4394:4;4411:39;4420:12;:10;:12::i;:::-;4434:7;4443:6;4411:8;:39::i;:::-;4468:4;4461:11;;4311:169;;;;:::o;14936:51::-;;;:::o;3718:108::-;3779:7;3806:12;;3799:19;;3718:108;:::o;4488:492::-;4628:4;4645:36;4655:6;4663:9;4674:6;4645:9;:36::i;:::-;4694:24;4721:11;:19;4733:6;4721:19;;;;;;;;;;;;;;;:33;4741:12;:10;:12::i;:::-;4721:33;;;;;;;;;;;;;;;;4694:60;;4793:6;4773:16;:26;;4765:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4880:57;4889:6;4897:12;:10;:12::i;:::-;4930:6;4911:16;:25;4880:8;:57::i;:::-;4968:4;4961:11;;;4488:492;;;;;:::o;15039:53::-;15085:6;15039:53;:::o;3617:93::-;3675:5;3700:2;3693:9;;3617:93;:::o;4988:215::-;5076:4;5093:80;5102:12;:10;:12::i;:::-;5116:7;5162:10;5125:11;:25;5137:12;:10;:12::i;:::-;5125:25;;;;;;;;;;;;;;;:34;5151:7;5125:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5093:8;:80::i;:::-;5191:4;5184:11;;4988:215;;;;:::o;14994:38::-;;;:::o;21305:126::-;21371:4;21395:19;:28;21415:7;21395:28;;;;;;;;;;;;;;;;;;;;;;;;;21388:35;;21305:126;;;:::o;19876:335::-;1447:12;:10;:12::i;:::-;1436:23;;:7;:5;:7::i;:::-;:23;;;1428:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20018:13:::1;20000:15;:31;;;;20060:13;20042:15;:31;;;;20117:15;;20099;;:33;;;;:::i;:::-;20084:12;:48;;;;20167:2;20151:12;;:18;;20143:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;19876:335:::0;;:::o;15477:28::-;;;;:::o;15325:31::-;;;;;;;;;;;;;:::o;3834:127::-;3908:7;3935:9;:18;3945:7;3935:18;;;;;;;;;;;;;;;;3928:25;;3834:127;;;:::o;1524:112::-;1447:12;:10;:12::i;:::-;1436:23;;:7;:5;:7::i;:::-;:23;;;1428:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1598:30:::1;1625:1;1598:18;:30::i;:::-;1524:112::o:0;19701:167::-;1447:12;:10;:12::i;:::-;1436:23;;:7;:5;:7::i;:::-;:23;;;1428:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19856:4:::1;19814:31;:39;19846:6;19814:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;19701:167:::0;;:::o;15131:30::-;;;;;;;;;;;;;:::o;15948:43::-;;;;;;;;;;;;;;;;;:::o;18286:112::-;1447:12;:10;:12::i;:::-;1436:23;;:7;:5;:7::i;:::-;:23;;;1428:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18357:4:::1;18341:13;;:20;;;;;;;;;;;;;;;;;;18386:4;18372:11;;:18;;;;;;;;;;;;;;;;;;18286:112::o:0;1301:87::-;1347:7;1374:6;;;;;;;;;;;1367:13;;1301:87;:::o;3505:104::-;3561:13;3594:7;3587:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3505:104;:::o;18911:504::-;1447:12;:10;:12::i;:::-;1436:23;;:7;:5;:7::i;:::-;:23;;;1428:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19088:4:::1;19080;19075:1;19059:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19058:26;;;;:::i;:::-;19057:35;;;;:::i;:::-;19044:9;:48;;19022:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;19236:4;19228;19223:1;19207:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19206:26;;;;:::i;:::-;19205:35;;;;:::i;:::-;19186:15;:54;;19164:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;19346:6;19327:15;:26;;;;:::i;:::-;19315:9;:38;;;;19400:6;19387:9;:20;;;;:::i;:::-;19364;:43;;;;18911:504:::0;;:::o;20797:304::-;1447:12;:10;:12::i;:::-;1436:23;;:7;:5;:7::i;:::-;:23;;;1428:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20941:13:::1;20933:21;;:4;:21;;::::0;20911:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21052:41;21081:4;21087:5;21052:28;:41::i;:::-;20797:304:::0;;:::o;5211:413::-;5304:4;5321:24;5348:11;:25;5360:12;:10;:12::i;:::-;5348:25;;;;;;;;;;;;;;;:34;5374:7;5348:34;;;;;;;;;;;;;;;;5321:61;;5421:15;5401:16;:35;;5393:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5514:67;5523:12;:10;:12::i;:::-;5537:7;5565:15;5546:16;:34;5514:8;:67::i;:::-;5612:4;5605:11;;;5211:413;;;;:::o;3969:175::-;4055:4;4072:42;4082:12;:10;:12::i;:::-;4096:9;4107:6;4072:9;:42::i;:::-;4132:4;4125:11;;3969:175;;;;:::o;19600:93::-;1447:12;:10;:12::i;:::-;1436:23;;:7;:5;:7::i;:::-;:23;;;1428:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19680:5:::1;19665:4;:12;19670:6;19665:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;19600:93:::0;:::o;15285:33::-;;;;;;;;;;;;;:::o;15905:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;20607:182::-;1447:12;:10;:12::i;:::-;1436:23;;:7;:5;:7::i;:::-;:23;;;1428:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20723:8:::1;20692:19;:28;20712:7;20692:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20763:7;20747:34;;;20772:8;20747:34;;;;;;:::i;:::-;;;;;;;;20607:182:::0;;:::o;15170:35::-;;;;:::o;18406:497::-;18514:4;1447:12;:10;:12::i;:::-;1436:23;;:7;:5;:7::i;:::-;:23;;;1428:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18593:6:::1;18588:1;18572:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18571:28;;;;:::i;:::-;18558:9;:41;;18536:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;18748:4;18743:1;18727:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18726:26;;;;:::i;:::-;18713:9;:39;;18691:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;18864:9;18843:18;:30;;;;18891:4;18884:11;;18406:497:::0;;;:::o;15365:27::-;;;;:::o;4152:151::-;4241:7;4268:11;:18;4280:5;4268:18;;;;;;;;;;;;;;;:27;4287:7;4268:27;;;;;;;;;;;;;;;;4261:34;;4152:151;;;;:::o;15212:33::-;;;;:::o;1644:201::-;1447:12;:10;:12::i;:::-;1436:23;;:7;:5;:7::i;:::-;:23;;;1428:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1753:1:::1;1733:22;;:8;:22;;::::0;1725:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1809:28;1828:8;1809:18;:28::i;:::-;1644:201:::0;:::o;15252:24::-;;;;:::o;847:98::-;900:7;927:10;920:17;;847:98;:::o;6780:380::-;6933:1;6916:19;;:5;:19;;;6908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7014:1;6995:21;;:7;:21;;;6987:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7098:6;7068:11;:18;7080:5;7068:18;;;;;;;;;;;;;;;:27;7087:7;7068:27;;;;;;;;;;;;;;;:36;;;;7136:7;7120:32;;7129:5;7120:32;;;7145:6;7120:32;;;;;;:::i;:::-;;;;;;;;6780:380;;;:::o;21439:3623::-;21587:1;21571:18;;:4;:18;;;21563:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21664:1;21650:16;;:2;:16;;;21642:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21733:1;21723:6;:11;21719:93;;21751:28;21767:4;21773:2;21777:1;21751:15;:28::i;:::-;21794:7;;21719:93;21862:7;:5;:7::i;:::-;21854:15;;:4;:15;;;;:49;;;;;21896:7;:5;:7::i;:::-;21890:13;;:2;:13;;;;21854:49;:86;;;;;21938:1;21924:16;;:2;:16;;;;21854:86;:128;;;;;21975:6;21961:21;;:2;:21;;;;21854:128;:158;;;;;22004:8;;;;;;;;;;;22003:9;21854:158;21832:1640;;;22052:13;;;;;;;;;;;22047:223;;22124:19;:25;22144:4;22124:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;22153:19;:23;22173:2;22153:23;;;;;;;;;;;;;;;;;;;;;;;;;22124:52;22090:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;22047:223;22315:4;:10;22320:4;22315:10;;;;;;;;;;;;;;;;;;;;;;;;;22314:11;:24;;;;;22330:4;:8;22335:2;22330:8;;;;;;;;;;;;;;;;;;;;;;;;;22329:9;22314:24;22306:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;22446:25;:31;22472:4;22446:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;22503:31;:35;22535:2;22503:35;;;;;;;;;;;;;;;;;;;;;;;;;22502:36;22446:92;22420:1037;;;22625:20;;22615:6;:30;;22581:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;22833:9;;22816:13;22826:2;22816:9;:13::i;:::-;22807:6;:22;;;;:::i;:::-;:35;;22773:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;22420:1037;;;23011:25;:29;23037:2;23011:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;23066:31;:37;23098:4;23066:37;;;;;;;;;;;;;;;;;;;;;;;;;23065:38;23011:92;22985:472;;;23164:20;;23154:6;:30;;23146:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;22985:472;;;23310:31;:35;23342:2;23310:35;;;;;;;;;;;;;;;;;;;;;;;;;23305:152;;23404:9;;23387:13;23397:2;23387:9;:13::i;:::-;23378:6;:22;;;;:::i;:::-;:35;;23370:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23305:152;22985:472;22420:1037;21832:1640;23484:28;23515:24;23533:4;23515:9;:24::i;:::-;23484:55;;23552:12;23591:18;;23567:20;:42;;23552:57;;23640:7;:35;;;;;23664:11;;;;;;;;;;;23640:35;:61;;;;;23693:8;;;;;;;;;;;23692:9;23640:61;:110;;;;;23719:25;:31;23745:4;23719:31;;;;;;;;;;;;;;;;;;;;;;;;;23718:32;23640:110;:153;;;;;23768:19;:25;23788:4;23768:25;;;;;;;;;;;;;;;;;;;;;;;;;23767:26;23640:153;:194;;;;;23811:19;:23;23831:2;23811:23;;;;;;;;;;;;;;;;;;;;;;;;;23810:24;23640:194;23622:326;;;23872:4;23861:8;;:15;;;;;;;;;;;;;;;;;;23893:10;:8;:10::i;:::-;23931:5;23920:8;;:16;;;;;;;;;;;;;;;;;;23622:326;23960:12;23976:8;;;;;;;;;;;23975:9;23960:24;;24001:19;:25;24021:4;24001:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;24030:19;:23;24050:2;24030:23;;;;;;;;;;;;;;;;;;;;;;;;;24001:52;23997:100;;;24080:5;24070:15;;23997:100;24109:12;24142:7;24138:831;;;24194:25;:29;24220:2;24194:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;24243:1;24227:13;;:17;24194:50;24190:630;;;24272:34;24302:3;24272:25;24283:13;;24272:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;24265:41;;24375:13;;24355:16;;24348:4;:23;;;;:::i;:::-;24347:41;;;;:::i;:::-;24325:18;;:63;;;;;;;:::i;:::-;;;;;;;;24457:13;;24437:16;;24430:4;:23;;;;:::i;:::-;24429:41;;;;:::i;:::-;24407:18;;:63;;;;;;;:::i;:::-;;;;;;;;24190:630;;;24532:25;:31;24558:4;24532:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;24582:1;24567:12;;:16;24532:51;24528:292;;;24611:33;24640:3;24611:24;24622:12;;24611:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;24604:40;;24712:12;;24693:15;;24686:4;:22;;;;:::i;:::-;24685:39;;;;:::i;:::-;24663:18;;:61;;;;;;;:::i;:::-;;;;;;;;24792:12;;24773:15;;24766:4;:22;;;;:::i;:::-;24765:39;;;;:::i;:::-;24743:18;;:61;;;;;;;:::i;:::-;;;;;;;;24528:292;24190:630;24847:1;24840:4;:8;24836:91;;;24869:42;24885:4;24899;24906;24869:15;:42::i;:::-;24836:91;24953:4;24943:14;;;;;:::i;:::-;;;24138:831;24981:33;24997:4;25003:2;25007:6;24981:15;:33::i;:::-;25041:11;;25025:13;:27;;;;21552:3510;;;;21439:3623;;;;:::o;1853:191::-;1927:16;1946:6;;;;;;;;;;;1927:25;;1972:8;1963:6;;:17;;;;;;;;;;;;;;;;;;2027:8;1996:40;;2017:8;1996:40;;;;;;;;;;;;1916:128;1853:191;:::o;21109:188::-;21226:5;21192:25;:31;21218:4;21192:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21283:5;21249:40;;21277:4;21249:40;;;;;;;;;;;;21109:188;;:::o;5632:733::-;5790:1;5772:20;;:6;:20;;;5764:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5874:1;5853:23;;:9;:23;;;5845:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5929:47;5950:6;5958:9;5969:6;5929:20;:47::i;:::-;5989:21;6013:9;:17;6023:6;6013:17;;;;;;;;;;;;;;;;5989:41;;6066:6;6049:13;:23;;6041:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6187:6;6171:13;:22;6151:9;:17;6161:6;6151:17;;;;;;;;;;;;;;;:42;;;;6239:6;6215:9;:20;6225:9;6215:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6280:9;6263:35;;6272:6;6263:35;;;6291:6;6263:35;;;;;;:::i;:::-;;;;;;;;6311:46;6331:6;6339:9;6350:6;6311:19;:46::i;:::-;5753:612;5632:733;;;:::o;25957:1462::-;25996:23;26022:24;26040:4;26022:9;:24::i;:::-;25996:50;;26057:25;26119:18;;26085;;:52;;;;:::i;:::-;26057:80;;26148:12;26196:1;26177:15;:20;:46;;;;26222:1;26201:17;:22;26177:46;26173:85;;;26240:7;;;;;26173:85;26313:2;26292:18;;:23;;;;:::i;:::-;26274:15;:41;26270:115;;;26371:2;26350:18;;:23;;;;:::i;:::-;26332:41;;26270:115;26397:23;26510:1;26477:17;26442:18;;26424:15;:36;;;;:::i;:::-;26423:71;;;;:::i;:::-;:88;;;;:::i;:::-;26397:114;;26522:26;26551:36;26571:15;26551;:19;;:36;;;;:::i;:::-;26522:65;;26600:25;26628:21;26600:49;;26662:36;26679:18;26662:16;:36::i;:::-;26711:18;26732:44;26758:17;26732:21;:25;;:44;;;;:::i;:::-;26711:65;;26789:23;26815:81;26868:17;26815:34;26830:18;;26815:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;26789:107;;26909:23;26948:15;26935:10;:28;;;;:::i;:::-;26909:54;;26997:1;26976:18;:22;;;;27030:1;27009:18;:22;;;;27066:1;27048:15;:19;:42;;;;;27089:1;27071:15;:19;27048:42;27044:278;;;27107:46;27120:15;27137;27107:12;:46::i;:::-;27173:137;27206:18;27243:15;27277:18;;27173:137;;;;;;;;:::i;:::-;;;;;;;;27044:278;27356:15;;;;;;;;;;;27348:29;;27385:21;27348:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27334:77;;;;;25985:1434;;;;;;;;;25957:1462;:::o;8786:98::-;8844:7;8875:1;8871;:5;;;;:::i;:::-;8864:12;;8786:98;;;;:::o;8892:::-;8950:7;8981:1;8977;:5;;;;:::i;:::-;8970:12;;8892:98;;;;:::o;7168:125::-;;;;:::o;7301:124::-;;;;:::o;8680:98::-;8738:7;8769:1;8765;:5;;;;:::i;:::-;8758:12;;8680:98;;;;:::o;25070:503::-;25138:21;25176:1;25162:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25138:40;;25207:4;25189;25194:1;25189:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25233:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25223:4;25228:1;25223:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;25268:62;25285:4;25300:15;25318:11;25268:8;:62::i;:::-;25369:15;:66;;;25450:11;25476:1;25492:4;25519;25539:15;25369:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25125:448;25070:503;:::o;25581:368::-;25664:62;25681:4;25696:15;25714:11;25664:8;:62::i;:::-;25739:15;:31;;;25778:9;25811:4;25831:11;25857:1;25873;15085:6;25915:15;25739:202;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25581:368;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:77::-;3828:7;3857:5;3846:16;;3791:77;;;:::o;3874:122::-;3947:24;3965:5;3947:24;:::i;:::-;3940:5;3937:35;3927:63;;3986:1;3983;3976:12;3927:63;3874:122;:::o;4002:139::-;4048:5;4086:6;4073:20;4064:29;;4102:33;4129:5;4102:33;:::i;:::-;4002:139;;;;:::o;4147:474::-;4215:6;4223;4272:2;4260:9;4251:7;4247:23;4243:32;4240:119;;;4278:79;;:::i;:::-;4240:119;4398:1;4423:53;4468:7;4459:6;4448:9;4444:22;4423:53;:::i;:::-;4413:63;;4369:117;4525:2;4551:53;4596:7;4587:6;4576:9;4572:22;4551:53;:::i;:::-;4541:63;;4496:118;4147:474;;;;;:::o;4627:99::-;4679:6;4713:5;4707:12;4697:22;;4627:99;;;:::o;4732:169::-;4816:11;4850:6;4845:3;4838:19;4890:4;4885:3;4881:14;4866:29;;4732:169;;;;:::o;4907:246::-;4988:1;4998:113;5012:6;5009:1;5006:13;4998:113;;;5097:1;5092:3;5088:11;5082:18;5078:1;5073:3;5069:11;5062:39;5034:2;5031:1;5027:10;5022:15;;4998:113;;;5145:1;5136:6;5131:3;5127:16;5120:27;4969:184;4907:246;;;:::o;5159:377::-;5247:3;5275:39;5308:5;5275:39;:::i;:::-;5330:71;5394:6;5389:3;5330:71;:::i;:::-;5323:78;;5410:65;5468:6;5463:3;5456:4;5449:5;5445:16;5410:65;:::i;:::-;5500:29;5522:6;5500:29;:::i;:::-;5495:3;5491:39;5484:46;;5251:285;5159:377;;;;:::o;5542:313::-;5655:4;5693:2;5682:9;5678:18;5670:26;;5742:9;5736:4;5732:20;5728:1;5717:9;5713:17;5706:47;5770:78;5843:4;5834:6;5770:78;:::i;:::-;5762:86;;5542:313;;;;:::o;5861:474::-;5929:6;5937;5986:2;5974:9;5965:7;5961:23;5957:32;5954:119;;;5992:79;;:::i;:::-;5954:119;6112:1;6137:53;6182:7;6173:6;6162:9;6158:22;6137:53;:::i;:::-;6127:63;;6083:117;6239:2;6265:53;6310:7;6301:6;6290:9;6286:22;6265:53;:::i;:::-;6255:63;;6210:118;5861:474;;;;;:::o;6341:90::-;6375:7;6418:5;6411:13;6404:21;6393:32;;6341:90;;;:::o;6437:109::-;6518:21;6533:5;6518:21;:::i;:::-;6513:3;6506:34;6437:109;;:::o;6552:210::-;6639:4;6677:2;6666:9;6662:18;6654:26;;6690:65;6752:1;6741:9;6737:17;6728:6;6690:65;:::i;:::-;6552:210;;;;:::o;6768:60::-;6796:3;6817:5;6810:12;;6768:60;;;:::o;6834:142::-;6884:9;6917:53;6935:34;6944:24;6962:5;6944:24;:::i;:::-;6935:34;:::i;:::-;6917:53;:::i;:::-;6904:66;;6834:142;;;:::o;6982:126::-;7032:9;7065:37;7096:5;7065:37;:::i;:::-;7052:50;;6982:126;;;:::o;7114:153::-;7191:9;7224:37;7255:5;7224:37;:::i;:::-;7211:50;;7114:153;;;:::o;7273:185::-;7387:64;7445:5;7387:64;:::i;:::-;7382:3;7375:77;7273:185;;:::o;7464:276::-;7584:4;7622:2;7611:9;7607:18;7599:26;;7635:98;7730:1;7719:9;7715:17;7706:6;7635:98;:::i;:::-;7464:276;;;;:::o;7746:118::-;7833:24;7851:5;7833:24;:::i;:::-;7828:3;7821:37;7746:118;;:::o;7870:222::-;7963:4;8001:2;7990:9;7986:18;7978:26;;8014:71;8082:1;8071:9;8067:17;8058:6;8014:71;:::i;:::-;7870:222;;;;:::o;8098:619::-;8175:6;8183;8191;8240:2;8228:9;8219:7;8215:23;8211:32;8208:119;;;8246:79;;:::i;:::-;8208:119;8366:1;8391:53;8436:7;8427:6;8416:9;8412:22;8391:53;:::i;:::-;8381:63;;8337:117;8493:2;8519:53;8564:7;8555:6;8544:9;8540:22;8519:53;:::i;:::-;8509:63;;8464:118;8621:2;8647:53;8692:7;8683:6;8672:9;8668:22;8647:53;:::i;:::-;8637:63;;8592:118;8098:619;;;;;:::o;8723:118::-;8810:24;8828:5;8810:24;:::i;:::-;8805:3;8798:37;8723:118;;:::o;8847:222::-;8940:4;8978:2;8967:9;8963:18;8955:26;;8991:71;9059:1;9048:9;9044:17;9035:6;8991:71;:::i;:::-;8847:222;;;;:::o;9075:86::-;9110:7;9150:4;9143:5;9139:16;9128:27;;9075:86;;;:::o;9167:112::-;9250:22;9266:5;9250:22;:::i;:::-;9245:3;9238:35;9167:112;;:::o;9285:214::-;9374:4;9412:2;9401:9;9397:18;9389:26;;9425:67;9489:1;9478:9;9474:17;9465:6;9425:67;:::i;:::-;9285:214;;;;:::o;9505:329::-;9564:6;9613:2;9601:9;9592:7;9588:23;9584:32;9581:119;;;9619:79;;:::i;:::-;9581:119;9739:1;9764:53;9809:7;9800:6;9789:9;9785:22;9764:53;:::i;:::-;9754:63;;9710:117;9505:329;;;;:::o;9840:116::-;9910:21;9925:5;9910:21;:::i;:::-;9903:5;9900:32;9890:60;;9946:1;9943;9936:12;9890:60;9840:116;:::o;9962:133::-;10005:5;10043:6;10030:20;10021:29;;10059:30;10083:5;10059:30;:::i;:::-;9962:133;;;;:::o;10101:468::-;10166:6;10174;10223:2;10211:9;10202:7;10198:23;10194:32;10191:119;;;10229:79;;:::i;:::-;10191:119;10349:1;10374:53;10419:7;10410:6;10399:9;10395:22;10374:53;:::i;:::-;10364:63;;10320:117;10476:2;10502:50;10544:7;10535:6;10524:9;10520:22;10502:50;:::i;:::-;10492:60;;10447:115;10101:468;;;;;:::o;10575:329::-;10634:6;10683:2;10671:9;10662:7;10658:23;10654:32;10651:119;;;10689:79;;:::i;:::-;10651:119;10809:1;10834:53;10879:7;10870:6;10859:9;10855:22;10834:53;:::i;:::-;10824:63;;10780:117;10575:329;;;;:::o;10910:474::-;10978:6;10986;11035:2;11023:9;11014:7;11010:23;11006:32;11003:119;;;11041:79;;:::i;:::-;11003:119;11161:1;11186:53;11231:7;11222:6;11211:9;11207:22;11186:53;:::i;:::-;11176:63;;11132:117;11288:2;11314:53;11359:7;11350:6;11339:9;11335:22;11314:53;:::i;:::-;11304:63;;11259:118;10910:474;;;;;:::o;11390:182::-;11530:34;11526:1;11518:6;11514:14;11507:58;11390:182;:::o;11578:366::-;11720:3;11741:67;11805:2;11800:3;11741:67;:::i;:::-;11734:74;;11817:93;11906:3;11817:93;:::i;:::-;11935:2;11930:3;11926:12;11919:19;;11578:366;;;:::o;11950:419::-;12116:4;12154:2;12143:9;12139:18;12131:26;;12203:9;12197:4;12193:20;12189:1;12178:9;12174:17;12167:47;12231:131;12357:4;12231:131;:::i;:::-;12223:139;;11950:419;;;:::o;12375:180::-;12423:77;12420:1;12413:88;12520:4;12517:1;12510:15;12544:4;12541:1;12534:15;12561:180;12609:77;12606:1;12599:88;12706:4;12703:1;12696:15;12730:4;12727:1;12720:15;12747:233;12786:3;12809:24;12827:5;12809:24;:::i;:::-;12800:33;;12855:66;12848:5;12845:77;12842:103;;12925:18;;:::i;:::-;12842:103;12972:1;12965:5;12961:13;12954:20;;12747:233;;;:::o;12986:191::-;13026:3;13045:20;13063:1;13045:20;:::i;:::-;13040:25;;13079:20;13097:1;13079:20;:::i;:::-;13074:25;;13122:1;13119;13115:9;13108:16;;13143:3;13140:1;13137:10;13134:36;;;13150:18;;:::i;:::-;13134:36;12986:191;;;;:::o;13183:179::-;13323:31;13319:1;13311:6;13307:14;13300:55;13183:179;:::o;13368:366::-;13510:3;13531:67;13595:2;13590:3;13531:67;:::i;:::-;13524:74;;13607:93;13696:3;13607:93;:::i;:::-;13725:2;13720:3;13716:12;13709:19;;13368:366;;;:::o;13740:419::-;13906:4;13944:2;13933:9;13929:18;13921:26;;13993:9;13987:4;13983:20;13979:1;13968:9;13964:17;13957:47;14021:131;14147:4;14021:131;:::i;:::-;14013:139;;13740:419;;;:::o;14165:180::-;14213:77;14210:1;14203:88;14310:4;14307:1;14300:15;14334:4;14331:1;14324:15;14351:320;14395:6;14432:1;14426:4;14422:12;14412:22;;14479:1;14473:4;14469:12;14500:18;14490:81;;14556:4;14548:6;14544:17;14534:27;;14490:81;14618:2;14610:6;14607:14;14587:18;14584:38;14581:84;;14637:18;;:::i;:::-;14581:84;14402:269;14351:320;;;:::o;14677:227::-;14817:34;14813:1;14805:6;14801:14;14794:58;14886:10;14881:2;14873:6;14869:15;14862:35;14677:227;:::o;14910:366::-;15052:3;15073:67;15137:2;15132:3;15073:67;:::i;:::-;15066:74;;15149:93;15238:3;15149:93;:::i;:::-;15267:2;15262:3;15258:12;15251:19;;14910:366;;;:::o;15282:419::-;15448:4;15486:2;15475:9;15471:18;15463:26;;15535:9;15529:4;15525:20;15521:1;15510:9;15506:17;15499:47;15563:131;15689:4;15563:131;:::i;:::-;15555:139;;15282:419;;;:::o;15707:348::-;15747:7;15770:20;15788:1;15770:20;:::i;:::-;15765:25;;15804:20;15822:1;15804:20;:::i;:::-;15799:25;;15992:1;15924:66;15920:74;15917:1;15914:81;15909:1;15902:9;15895:17;15891:105;15888:131;;;15999:18;;:::i;:::-;15888:131;16047:1;16044;16040:9;16029:20;;15707:348;;;;:::o;16061:180::-;16109:77;16106:1;16099:88;16206:4;16203:1;16196:15;16230:4;16227:1;16220:15;16247:185;16287:1;16304:20;16322:1;16304:20;:::i;:::-;16299:25;;16338:20;16356:1;16338:20;:::i;:::-;16333:25;;16377:1;16367:35;;16382:18;;:::i;:::-;16367:35;16424:1;16421;16417:9;16412:14;;16247:185;;;;:::o;16438:220::-;16578:34;16574:1;16566:6;16562:14;16555:58;16647:3;16642:2;16634:6;16630:15;16623:28;16438:220;:::o;16664:366::-;16806:3;16827:67;16891:2;16886:3;16827:67;:::i;:::-;16820:74;;16903:93;16992:3;16903:93;:::i;:::-;17021:2;17016:3;17012:12;17005:19;;16664:366;;;:::o;17036:419::-;17202:4;17240:2;17229:9;17225:18;17217:26;;17289:9;17283:4;17279:20;17275:1;17264:9;17260:17;17253:47;17317:131;17443:4;17317:131;:::i;:::-;17309:139;;17036:419;;;:::o;17461:223::-;17601:34;17597:1;17589:6;17585:14;17578:58;17670:6;17665:2;17657:6;17653:15;17646:31;17461:223;:::o;17690:366::-;17832:3;17853:67;17917:2;17912:3;17853:67;:::i;:::-;17846:74;;17929:93;18018:3;17929:93;:::i;:::-;18047:2;18042:3;18038:12;18031:19;;17690:366;;;:::o;18062:419::-;18228:4;18266:2;18255:9;18251:18;18243:26;;18315:9;18309:4;18305:20;18301:1;18290:9;18286:17;18279:47;18343:131;18469:4;18343:131;:::i;:::-;18335:139;;18062:419;;;:::o;18487:244::-;18627:34;18623:1;18615:6;18611:14;18604:58;18696:27;18691:2;18683:6;18679:15;18672:52;18487:244;:::o;18737:366::-;18879:3;18900:67;18964:2;18959:3;18900:67;:::i;:::-;18893:74;;18976:93;19065:3;18976:93;:::i;:::-;19094:2;19089:3;19085:12;19078:19;;18737:366;;;:::o;19109:419::-;19275:4;19313:2;19302:9;19298:18;19290:26;;19362:9;19356:4;19352:20;19348:1;19337:9;19333:17;19326:47;19390:131;19516:4;19390:131;:::i;:::-;19382:139;;19109:419;;;:::o;19534:224::-;19674:34;19670:1;19662:6;19658:14;19651:58;19743:7;19738:2;19730:6;19726:15;19719:32;19534:224;:::o;19764:366::-;19906:3;19927:67;19991:2;19986:3;19927:67;:::i;:::-;19920:74;;20003:93;20092:3;20003:93;:::i;:::-;20121:2;20116:3;20112:12;20105:19;;19764:366;;;:::o;20136:419::-;20302:4;20340:2;20329:9;20325:18;20317:26;;20389:9;20383:4;20379:20;20375:1;20364:9;20360:17;20353:47;20417:131;20543:4;20417:131;:::i;:::-;20409:139;;20136:419;;;:::o;20561:240::-;20701:34;20697:1;20689:6;20685:14;20678:58;20770:23;20765:2;20757:6;20753:15;20746:48;20561:240;:::o;20807:366::-;20949:3;20970:67;21034:2;21029:3;20970:67;:::i;:::-;20963:74;;21046:93;21135:3;21046:93;:::i;:::-;21164:2;21159:3;21155:12;21148:19;;20807:366;;;:::o;21179:419::-;21345:4;21383:2;21372:9;21368:18;21360:26;;21432:9;21426:4;21422:20;21418:1;21407:9;21403:17;21396:47;21460:131;21586:4;21460:131;:::i;:::-;21452:139;;21179:419;;;:::o;21604:239::-;21744:34;21740:1;21732:6;21728:14;21721:58;21813:22;21808:2;21800:6;21796:15;21789:47;21604:239;:::o;21849:366::-;21991:3;22012:67;22076:2;22071:3;22012:67;:::i;:::-;22005:74;;22088:93;22177:3;22088:93;:::i;:::-;22206:2;22201:3;22197:12;22190:19;;21849:366;;;:::o;22221:419::-;22387:4;22425:2;22414:9;22410:18;22402:26;;22474:9;22468:4;22464:20;22460:1;22449:9;22445:17;22438:47;22502:131;22628:4;22502:131;:::i;:::-;22494:139;;22221:419;;;:::o;22646:225::-;22786:34;22782:1;22774:6;22770:14;22763:58;22855:8;22850:2;22842:6;22838:15;22831:33;22646:225;:::o;22877:366::-;23019:3;23040:67;23104:2;23099:3;23040:67;:::i;:::-;23033:74;;23116:93;23205:3;23116:93;:::i;:::-;23234:2;23229:3;23225:12;23218:19;;22877:366;;;:::o;23249:419::-;23415:4;23453:2;23442:9;23438:18;23430:26;;23502:9;23496:4;23492:20;23488:1;23477:9;23473:17;23466:47;23530:131;23656:4;23530:131;:::i;:::-;23522:139;;23249:419;;;:::o;23674:223::-;23814:34;23810:1;23802:6;23798:14;23791:58;23883:6;23878:2;23870:6;23866:15;23859:31;23674:223;:::o;23903:366::-;24045:3;24066:67;24130:2;24125:3;24066:67;:::i;:::-;24059:74;;24142:93;24231:3;24142:93;:::i;:::-;24260:2;24255:3;24251:12;24244:19;;23903:366;;;:::o;24275:419::-;24441:4;24479:2;24468:9;24464:18;24456:26;;24528:9;24522:4;24518:20;24514:1;24503:9;24499:17;24492:47;24556:131;24682:4;24556:131;:::i;:::-;24548:139;;24275:419;;;:::o;24700:221::-;24840:34;24836:1;24828:6;24824:14;24817:58;24909:4;24904:2;24896:6;24892:15;24885:29;24700:221;:::o;24927:366::-;25069:3;25090:67;25154:2;25149:3;25090:67;:::i;:::-;25083:74;;25166:93;25255:3;25166:93;:::i;:::-;25284:2;25279:3;25275:12;25268:19;;24927:366;;;:::o;25299:419::-;25465:4;25503:2;25492:9;25488:18;25480:26;;25552:9;25546:4;25542:20;25538:1;25527:9;25523:17;25516:47;25580:131;25706:4;25580:131;:::i;:::-;25572:139;;25299:419;;;:::o;25724:224::-;25864:34;25860:1;25852:6;25848:14;25841:58;25933:7;25928:2;25920:6;25916:15;25909:32;25724:224;:::o;25954:366::-;26096:3;26117:67;26181:2;26176:3;26117:67;:::i;:::-;26110:74;;26193:93;26282:3;26193:93;:::i;:::-;26311:2;26306:3;26302:12;26295:19;;25954:366;;;:::o;26326:419::-;26492:4;26530:2;26519:9;26515:18;26507:26;;26579:9;26573:4;26569:20;26565:1;26554:9;26550:17;26543:47;26607:131;26733:4;26607:131;:::i;:::-;26599:139;;26326:419;;;:::o;26751:222::-;26891:34;26887:1;26879:6;26875:14;26868:58;26960:5;26955:2;26947:6;26943:15;26936:30;26751:222;:::o;26979:366::-;27121:3;27142:67;27206:2;27201:3;27142:67;:::i;:::-;27135:74;;27218:93;27307:3;27218:93;:::i;:::-;27336:2;27331:3;27327:12;27320:19;;26979:366;;;:::o;27351:419::-;27517:4;27555:2;27544:9;27540:18;27532:26;;27604:9;27598:4;27594:20;27590:1;27579:9;27575:17;27568:47;27632:131;27758:4;27632:131;:::i;:::-;27624:139;;27351:419;;;:::o;27776:172::-;27916:24;27912:1;27904:6;27900:14;27893:48;27776:172;:::o;27954:366::-;28096:3;28117:67;28181:2;28176:3;28117:67;:::i;:::-;28110:74;;28193:93;28282:3;28193:93;:::i;:::-;28311:2;28306:3;28302:12;28295:19;;27954:366;;;:::o;28326:419::-;28492:4;28530:2;28519:9;28515:18;28507:26;;28579:9;28573:4;28569:20;28565:1;28554:9;28550:17;28543:47;28607:131;28733:4;28607:131;:::i;:::-;28599:139;;28326:419;;;:::o;28751:178::-;28891:30;28887:1;28879:6;28875:14;28868:54;28751:178;:::o;28935:366::-;29077:3;29098:67;29162:2;29157:3;29098:67;:::i;:::-;29091:74;;29174:93;29263:3;29174:93;:::i;:::-;29292:2;29287:3;29283:12;29276:19;;28935:366;;;:::o;29307:419::-;29473:4;29511:2;29500:9;29496:18;29488:26;;29560:9;29554:4;29550:20;29546:1;29535:9;29531:17;29524:47;29588:131;29714:4;29588:131;:::i;:::-;29580:139;;29307:419;;;:::o;29732:240::-;29872:34;29868:1;29860:6;29856:14;29849:58;29941:23;29936:2;29928:6;29924:15;29917:48;29732:240;:::o;29978:366::-;30120:3;30141:67;30205:2;30200:3;30141:67;:::i;:::-;30134:74;;30217:93;30306:3;30217:93;:::i;:::-;30335:2;30330:3;30326:12;30319:19;;29978:366;;;:::o;30350:419::-;30516:4;30554:2;30543:9;30539:18;30531:26;;30603:9;30597:4;30593:20;30589:1;30578:9;30574:17;30567:47;30631:131;30757:4;30631:131;:::i;:::-;30623:139;;30350:419;;;:::o;30775:169::-;30915:21;30911:1;30903:6;30899:14;30892:45;30775:169;:::o;30950:366::-;31092:3;31113:67;31177:2;31172:3;31113:67;:::i;:::-;31106:74;;31189:93;31278:3;31189:93;:::i;:::-;31307:2;31302:3;31298:12;31291:19;;30950:366;;;:::o;31322:419::-;31488:4;31526:2;31515:9;31511:18;31503:26;;31575:9;31569:4;31565:20;31561:1;31550:9;31546:17;31539:47;31603:131;31729:4;31603:131;:::i;:::-;31595:139;;31322:419;;;:::o;31747:241::-;31887:34;31883:1;31875:6;31871:14;31864:58;31956:24;31951:2;31943:6;31939:15;31932:49;31747:241;:::o;31994:366::-;32136:3;32157:67;32221:2;32216:3;32157:67;:::i;:::-;32150:74;;32233:93;32322:3;32233:93;:::i;:::-;32351:2;32346:3;32342:12;32335:19;;31994:366;;;:::o;32366:419::-;32532:4;32570:2;32559:9;32555:18;32547:26;;32619:9;32613:4;32609:20;32605:1;32594:9;32590:17;32583:47;32647:131;32773:4;32647:131;:::i;:::-;32639:139;;32366:419;;;:::o;32791:194::-;32831:4;32851:20;32869:1;32851:20;:::i;:::-;32846:25;;32885:20;32903:1;32885:20;:::i;:::-;32880:25;;32929:1;32926;32922:9;32914:17;;32953:1;32947:4;32944:11;32941:37;;;32958:18;;:::i;:::-;32941:37;32791:194;;;;:::o;32991:225::-;33131:34;33127:1;33119:6;33115:14;33108:58;33200:8;33195:2;33187:6;33183:15;33176:33;32991:225;:::o;33222:366::-;33364:3;33385:67;33449:2;33444:3;33385:67;:::i;:::-;33378:74;;33461:93;33550:3;33461:93;:::i;:::-;33579:2;33574:3;33570:12;33563:19;;33222:366;;;:::o;33594:419::-;33760:4;33798:2;33787:9;33783:18;33775:26;;33847:9;33841:4;33837:20;33833:1;33822:9;33818:17;33811:47;33875:131;34001:4;33875:131;:::i;:::-;33867:139;;33594:419;;;:::o;34019:442::-;34168:4;34206:2;34195:9;34191:18;34183:26;;34219:71;34287:1;34276:9;34272:17;34263:6;34219:71;:::i;:::-;34300:72;34368:2;34357:9;34353:18;34344:6;34300:72;:::i;:::-;34382;34450:2;34439:9;34435:18;34426:6;34382:72;:::i;:::-;34019:442;;;;;;:::o;34467:147::-;34568:11;34605:3;34590:18;;34467:147;;;;:::o;34620:114::-;;:::o;34740:398::-;34899:3;34920:83;35001:1;34996:3;34920:83;:::i;:::-;34913:90;;35012:93;35101:3;35012:93;:::i;:::-;35130:1;35125:3;35121:11;35114:18;;34740:398;;;:::o;35144:379::-;35328:3;35350:147;35493:3;35350:147;:::i;:::-;35343:154;;35514:3;35507:10;;35144:379;;;:::o;35529:143::-;35586:5;35617:6;35611:13;35602:22;;35633:33;35660:5;35633:33;:::i;:::-;35529:143;;;;:::o;35678:351::-;35748:6;35797:2;35785:9;35776:7;35772:23;35768:32;35765:119;;;35803:79;;:::i;:::-;35765:119;35923:1;35948:64;36004:7;35995:6;35984:9;35980:22;35948:64;:::i;:::-;35938:74;;35894:128;35678:351;;;;:::o;36035:85::-;36080:7;36109:5;36098:16;;36035:85;;;:::o;36126:158::-;36184:9;36217:61;36235:42;36244:32;36270:5;36244:32;:::i;:::-;36235:42;:::i;:::-;36217:61;:::i;:::-;36204:74;;36126:158;;;:::o;36290:147::-;36385:45;36424:5;36385:45;:::i;:::-;36380:3;36373:58;36290:147;;:::o;36443:114::-;36510:6;36544:5;36538:12;36528:22;;36443:114;;;:::o;36563:184::-;36662:11;36696:6;36691:3;36684:19;36736:4;36731:3;36727:14;36712:29;;36563:184;;;;:::o;36753:132::-;36820:4;36843:3;36835:11;;36873:4;36868:3;36864:14;36856:22;;36753:132;;;:::o;36891:108::-;36968:24;36986:5;36968:24;:::i;:::-;36963:3;36956:37;36891:108;;:::o;37005:179::-;37074:10;37095:46;37137:3;37129:6;37095:46;:::i;:::-;37173:4;37168:3;37164:14;37150:28;;37005:179;;;;:::o;37190:113::-;37260:4;37292;37287:3;37283:14;37275:22;;37190:113;;;:::o;37339:732::-;37458:3;37487:54;37535:5;37487:54;:::i;:::-;37557:86;37636:6;37631:3;37557:86;:::i;:::-;37550:93;;37667:56;37717:5;37667:56;:::i;:::-;37746:7;37777:1;37762:284;37787:6;37784:1;37781:13;37762:284;;;37863:6;37857:13;37890:63;37949:3;37934:13;37890:63;:::i;:::-;37883:70;;37976:60;38029:6;37976:60;:::i;:::-;37966:70;;37822:224;37809:1;37806;37802:9;37797:14;;37762:284;;;37766:14;38062:3;38055:10;;37463:608;;;37339:732;;;;:::o;38077:831::-;38340:4;38378:3;38367:9;38363:19;38355:27;;38392:71;38460:1;38449:9;38445:17;38436:6;38392:71;:::i;:::-;38473:80;38549:2;38538:9;38534:18;38525:6;38473:80;:::i;:::-;38600:9;38594:4;38590:20;38585:2;38574:9;38570:18;38563:48;38628:108;38731:4;38722:6;38628:108;:::i;:::-;38620:116;;38746:72;38814:2;38803:9;38799:18;38790:6;38746:72;:::i;:::-;38828:73;38896:3;38885:9;38881:19;38872:6;38828:73;:::i;:::-;38077:831;;;;;;;;:::o;38914:807::-;39163:4;39201:3;39190:9;39186:19;39178:27;;39215:71;39283:1;39272:9;39268:17;39259:6;39215:71;:::i;:::-;39296:72;39364:2;39353:9;39349:18;39340:6;39296:72;:::i;:::-;39378:80;39454:2;39443:9;39439:18;39430:6;39378:80;:::i;:::-;39468;39544:2;39533:9;39529:18;39520:6;39468:80;:::i;:::-;39558:73;39626:3;39615:9;39611:19;39602:6;39558:73;:::i;:::-;39641;39709:3;39698:9;39694:19;39685:6;39641:73;:::i;:::-;38914:807;;;;;;;;;:::o;39727:143::-;39784:5;39815:6;39809:13;39800:22;;39831:33;39858:5;39831:33;:::i;:::-;39727:143;;;;:::o;39876:663::-;39964:6;39972;39980;40029:2;40017:9;40008:7;40004:23;40000:32;39997:119;;;40035:79;;:::i;:::-;39997:119;40155:1;40180:64;40236:7;40227:6;40216:9;40212:22;40180:64;:::i;:::-;40170:74;;40126:128;40293:2;40319:64;40375:7;40366:6;40355:9;40351:22;40319:64;:::i;:::-;40309:74;;40264:129;40432:2;40458:64;40514:7;40505:6;40494:9;40490:22;40458:64;:::i;:::-;40448:74;;40403:129;39876:663;;;;;:::o

Swarm Source

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