ETH Price: $2,678.50 (+1.83%)
Gas: 1 Gwei

Token

AI Vitalik (AIVB)
 

Overview

Max Total Supply

10,000,000 AIVB

Holders

42

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.726174453784097048 AIVB

Value
$0.00
0x58c4f21810ef262defeacf8e017100c552243943
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:
AIVB

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/*
    https://t.me/aivitalikerc
    https://www.aivitalik.com
*/
pragma solidity =0.8.17;
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 AIVB is ERC20, Ownable {
    using SafeMath for uint256;

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

    bool private swapping;

    address public marketingWallet;

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

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

    uint256 public buyTotalFees;
    uint256 private buyMarketingFee;
    uint256 private buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 private sellMarketingFee;
    uint256 private sellLiquidityFee;

    uint256 private tokensForMarketing;
    uint256 private tokensForLiquidity;
    uint256 private previousFee;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;

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

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    constructor() ERC20("AI Vitalik", "AIVB") {
        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 = 22;
        uint256 _buyLiquidityFee = 0;

        uint256 _sellMarketingFee = 35;
        uint256 _sellLiquidityFee = 0;

        uint256 totalSupply = 10000000 * 1e18;

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

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

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

        marketingWallet = address(0x64DC5390792e3715e81BBaA951D738ea4Da7F442);

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

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

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

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

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

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

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

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

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

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

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFees[accounts[i]] = excluded;
        }
    }

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

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

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

                if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } 
                
                else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;

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

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

            amount -= fees;
        }

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

    }

    function swapTokensForEth(uint256 tokenAmount) private {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

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

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

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

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

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

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

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

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

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

        uint256 ethForLiquidity = ethBalance - ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTxnNum","type":"uint256"},{"internalType":"uint256","name":"newMaxWalletNum","type":"uint256"}],"name":"updateMaxWalletAndTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055503480156200004757600080fd5b506040518060400160405280600a81526020017f414920566974616c696b000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f41495642000000000000000000000000000000000000000000000000000000008152508160039081620000c5919062000c95565b508060049081620000d7919062000c95565b505050620000fa620000ee620004dc60201b60201c565b620004e460201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000126816001620005aa60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cc919062000de6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025a919062000de6565b6040518363ffffffff1660e01b81526004016200027992919062000e29565b6020604051808303816000875af115801562000299573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bf919062000de6565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200030760a0516001620005aa60201b60201c565b6200031c60a05160016200069460201b60201c565b600060169050600080602390506000806a084595161401484a0000009050692a5a058fc295ed000000600781905550692a5a058fc295ed0000006009819055506127106005826200036e919062000e85565b6200037a919062000eff565b60088190555084600c8190555083600d81905550600d54600c54620003a0919062000f37565b600b8190555082600f8190555081601081905550601054600f54620003c6919062000f37565b600e81905550600e546013819055507364dc5390792e3715e81bbaa951d738ea4da7f442600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200044c6200043e6200073560201b60201c565b60016200075f60201b60201c565b6200045f3060016200075f60201b60201c565b6200047461dead60016200075f60201b60201c565b62000496620004886200073560201b60201c565b6001620005aa60201b60201c565b620004a9306001620005aa60201b60201c565b620004be61dead6001620005aa60201b60201c565b620004d033826200089960201b60201c565b505050505050620010cf565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005ba620004dc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005e06200073560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000639576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006309062000fd3565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200076f620004dc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007956200073560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007ee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007e59062000fd3565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200088d919062001012565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200090b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000902906200107f565b60405180910390fd5b6200091f6000838362000a1160201b60201c565b806002600082825462000933919062000f37565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200098a919062000f37565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009f19190620010b2565b60405180910390a362000a0d6000838362000a1660201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a9d57607f821691505b60208210810362000ab35762000ab262000a55565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b1d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ade565b62000b29868362000ade565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b7662000b7062000b6a8462000b41565b62000b4b565b62000b41565b9050919050565b6000819050919050565b62000b928362000b55565b62000baa62000ba18262000b7d565b84845462000aeb565b825550505050565b600090565b62000bc162000bb2565b62000bce81848462000b87565b505050565b5b8181101562000bf65762000bea60008262000bb7565b60018101905062000bd4565b5050565b601f82111562000c455762000c0f8162000ab9565b62000c1a8462000ace565b8101602085101562000c2a578190505b62000c4262000c398562000ace565b83018262000bd3565b50505b505050565b600082821c905092915050565b600062000c6a6000198460080262000c4a565b1980831691505092915050565b600062000c85838362000c57565b9150826002028217905092915050565b62000ca08262000a1b565b67ffffffffffffffff81111562000cbc5762000cbb62000a26565b5b62000cc8825462000a84565b62000cd582828562000bfa565b600060209050601f83116001811462000d0d576000841562000cf8578287015190505b62000d04858262000c77565b86555062000d74565b601f19841662000d1d8662000ab9565b60005b8281101562000d475784890151825560018201915060208501945060208101905062000d20565b8683101562000d67578489015162000d63601f89168262000c57565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000dae8262000d81565b9050919050565b62000dc08162000da1565b811462000dcc57600080fd5b50565b60008151905062000de08162000db5565b92915050565b60006020828403121562000dff5762000dfe62000d7c565b5b600062000e0f8482850162000dcf565b91505092915050565b62000e238162000da1565b82525050565b600060408201905062000e40600083018562000e18565b62000e4f602083018462000e18565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000e928262000b41565b915062000e9f8362000b41565b925082820262000eaf8162000b41565b9150828204841483151762000ec95762000ec862000e56565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f0c8262000b41565b915062000f198362000b41565b92508262000f2c5762000f2b62000ed0565b5b828204905092915050565b600062000f448262000b41565b915062000f518362000b41565b925082820190508082111562000f6c5762000f6b62000e56565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000fbb60208362000f72565b915062000fc88262000f83565b602082019050919050565b6000602082019050818103600083015262000fee8162000fac565b9050919050565b60008115159050919050565b6200100c8162000ff5565b82525050565b600060208201905062001029600083018462001001565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001067601f8362000f72565b915062001074826200102f565b602082019050919050565b600060208201905081810360008301526200109a8162001058565b9050919050565b620010ac8162000b41565b82525050565b6000602082019050620010c96000830184620010a1565b92915050565b60805160a05161444a6200111f60003960008181610be501526112bb015260008181610a0401528181612cad01528181612d8e01528181612db501528181612e510152612e78015261444a6000f3fe6080604052600436106102085760003560e01c806375f0a87411610118578063c0246668116100a0578063d85ba0631161006f578063d85ba06314610778578063dd62ed3e146107a3578063e2f45605146107e0578063f2fde38b1461080b578063f8b45b05146108345761020f565b8063c0246668146106be578063c492f046146106e7578063c8c8ebe414610710578063d257b34f1461073b5761020f565b806396188399116100e757806396188399146105c75780639a7a23d6146105f0578063a457c2d714610619578063a9059cbb14610656578063bbc0c742146106935761020f565b806375f0a8741461052f5780638a8c523c1461055a5780638da5cb5b1461057157806395d89b411461059c5761020f565b8063395093511161019b5780636a486a8e1161016a5780636a486a8e1461045c5780636ddd17131461048757806370a08231146104b2578063715018a6146104ef5780637571336a146105065761020f565b8063395093511461038e57806349bd5a5e146103cb5780634fbee193146103f657806366ca9b83146104335761020f565b806318160ddd116101d757806318160ddd146102d057806323b872dd146102fb57806327c8f83514610338578063313ce567146103635761020f565b806302dbd8f81461021457806306fdde031461023d578063095ea7b3146102685780631694505e146102a55761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190612f67565b61085f565b005b34801561024957600080fd5b50610252610952565b60405161025f9190613037565b60405180910390f35b34801561027457600080fd5b5061028f600480360381019061028a91906130b7565b6109e4565b60405161029c9190613112565b60405180910390f35b3480156102b157600080fd5b506102ba610a02565b6040516102c7919061318c565b60405180910390f35b3480156102dc57600080fd5b506102e5610a26565b6040516102f291906131b6565b60405180910390f35b34801561030757600080fd5b50610322600480360381019061031d91906131d1565b610a30565b60405161032f9190613112565b60405180910390f35b34801561034457600080fd5b5061034d610b28565b60405161035a9190613233565b60405180910390f35b34801561036f57600080fd5b50610378610b2e565b604051610385919061326a565b60405180910390f35b34801561039a57600080fd5b506103b560048036038101906103b091906130b7565b610b37565b6040516103c29190613112565b60405180910390f35b3480156103d757600080fd5b506103e0610be3565b6040516103ed9190613233565b60405180910390f35b34801561040257600080fd5b5061041d60048036038101906104189190613285565b610c07565b60405161042a9190613112565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190612f67565b610c5d565b005b34801561046857600080fd5b50610471610d47565b60405161047e91906131b6565b60405180910390f35b34801561049357600080fd5b5061049c610d4d565b6040516104a99190613112565b60405180910390f35b3480156104be57600080fd5b506104d960048036038101906104d49190613285565b610d60565b6040516104e691906131b6565b60405180910390f35b3480156104fb57600080fd5b50610504610da8565b005b34801561051257600080fd5b5061052d600480360381019061052891906132de565b610e30565b005b34801561053b57600080fd5b50610544610f07565b6040516105519190613233565b60405180910390f35b34801561056657600080fd5b5061056f610f2d565b005b34801561057d57600080fd5b50610586610fe1565b6040516105939190613233565b60405180910390f35b3480156105a857600080fd5b506105b161100b565b6040516105be9190613037565b60405180910390f35b3480156105d357600080fd5b506105ee60048036038101906105e99190612f67565b61109d565b005b3480156105fc57600080fd5b50610617600480360381019061061291906132de565b61123d565b005b34801561062557600080fd5b50610640600480360381019061063b91906130b7565b611355565b60405161064d9190613112565b60405180910390f35b34801561066257600080fd5b5061067d600480360381019061067891906130b7565b611440565b60405161068a9190613112565b60405180910390f35b34801561069f57600080fd5b506106a861145e565b6040516106b59190613112565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e091906132de565b611471565b005b3480156106f357600080fd5b5061070e60048036038101906107099190613383565b611596565b005b34801561071c57600080fd5b506107256116b7565b60405161073291906131b6565b60405180910390f35b34801561074757600080fd5b50610762600480360381019061075d91906133e3565b6116bd565b60405161076f9190613112565b60405180910390f35b34801561078457600080fd5b5061078d611812565b60405161079a91906131b6565b60405180910390f35b3480156107af57600080fd5b506107ca60048036038101906107c59190613410565b611818565b6040516107d791906131b6565b60405180910390f35b3480156107ec57600080fd5b506107f561189f565b60405161080291906131b6565b60405180910390f35b34801561081757600080fd5b50610832600480360381019061082d9190613285565b6118a5565b005b34801561084057600080fd5b5061084961199c565b60405161085691906131b6565b60405180910390f35b6108676119a2565b73ffffffffffffffffffffffffffffffffffffffff16610885610fe1565b73ffffffffffffffffffffffffffffffffffffffff16146108db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d29061349c565b60405180910390fd5b81600f8190555080601081905550601054600f546108f991906134eb565b600e81905550600e546013819055506063600e54111561094e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109459061356b565b60405180910390fd5b5050565b606060038054610961906135ba565b80601f016020809104026020016040519081016040528092919081815260200182805461098d906135ba565b80156109da5780601f106109af576101008083540402835291602001916109da565b820191906000526020600020905b8154815290600101906020018083116109bd57829003601f168201915b5050505050905090565b60006109f86109f16119a2565b84846119aa565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b6000610a3d848484611b73565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a886119a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aff9061365d565b60405180910390fd5b610b1c85610b146119a2565b8584036119aa565b60019150509392505050565b61dead81565b60006012905090565b6000610bd9610b446119a2565b848460016000610b526119a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bd491906134eb565b6119aa565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610c656119a2565b73ffffffffffffffffffffffffffffffffffffffff16610c83610fe1565b73ffffffffffffffffffffffffffffffffffffffff1614610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd09061349c565b60405180910390fd5b81600c8190555080600d81905550600d54600c54610cf791906134eb565b600b819055506014600b541115610d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3a906136c9565b60405180910390fd5b5050565b600e5481565b600a60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610db06119a2565b73ffffffffffffffffffffffffffffffffffffffff16610dce610fe1565b73ffffffffffffffffffffffffffffffffffffffff1614610e24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1b9061349c565b60405180910390fd5b610e2e60006125cf565b565b610e386119a2565b73ffffffffffffffffffffffffffffffffffffffff16610e56610fe1565b73ffffffffffffffffffffffffffffffffffffffff1614610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea39061349c565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f356119a2565b73ffffffffffffffffffffffffffffffffffffffff16610f53610fe1565b73ffffffffffffffffffffffffffffffffffffffff1614610fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa09061349c565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461101a906135ba565b80601f0160208091040260200160405190810160405280929190818152602001828054611046906135ba565b80156110935780601f1061106857610100808354040283529160200191611093565b820191906000526020600020905b81548152906001019060200180831161107657829003601f168201915b5050505050905090565b6110a56119a2565b73ffffffffffffffffffffffffffffffffffffffff166110c3610fe1565b73ffffffffffffffffffffffffffffffffffffffff1614611119576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111109061349c565b60405180910390fd5b670de0b6b3a76400006103e8600561112f610a26565b61113991906136e9565b611143919061375a565b61114d919061375a565b82101561118f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611186906137fd565b60405180910390fd5b670de0b6b3a76400006103e860056111a5610a26565b6111af91906136e9565b6111b9919061375a565b6111c3919061375a565b811015611205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fc9061388f565b60405180910390fd5b670de0b6b3a76400008161121991906136e9565b600981905550670de0b6b3a76400008261123391906136e9565b6007819055505050565b6112456119a2565b73ffffffffffffffffffffffffffffffffffffffff16611263610fe1565b73ffffffffffffffffffffffffffffffffffffffff16146112b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b09061349c565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133e90613921565b60405180910390fd5b6113518282612695565b5050565b600080600160006113646119a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611421576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611418906139b3565b60405180910390fd5b61143561142c6119a2565b858584036119aa565b600191505092915050565b600061145461144d6119a2565b8484611b73565b6001905092915050565b600a60009054906101000a900460ff1681565b6114796119a2565b73ffffffffffffffffffffffffffffffffffffffff16611497610fe1565b73ffffffffffffffffffffffffffffffffffffffff16146114ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e49061349c565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161158a9190613112565b60405180910390a25050565b61159e6119a2565b73ffffffffffffffffffffffffffffffffffffffff166115bc610fe1565b73ffffffffffffffffffffffffffffffffffffffff1614611612576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116099061349c565b60405180910390fd5b60005b838390508110156116b1578160146000868685818110611638576116376139d3565b5b905060200201602081019061164d9190613285565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806116a990613a02565b915050611615565b50505050565b60075481565b60006116c76119a2565b73ffffffffffffffffffffffffffffffffffffffff166116e5610fe1565b73ffffffffffffffffffffffffffffffffffffffff161461173b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117329061349c565b60405180910390fd5b620186a06001611749610a26565b61175391906136e9565b61175d919061375a565b82101561179f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179690613abc565b60405180910390fd5b6103e860056117ac610a26565b6117b691906136e9565b6117c0919061375a565b821115611802576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f990613b4e565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b6118ad6119a2565b73ffffffffffffffffffffffffffffffffffffffff166118cb610fe1565b73ffffffffffffffffffffffffffffffffffffffff1614611921576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119189061349c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611990576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198790613be0565b60405180910390fd5b611999816125cf565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1090613c72565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7f90613d04565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b6691906131b6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd990613d96565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4890613e28565b60405180910390fd5b60008103611c6a57611c6583836000612736565b6125ca565b611c72610fe1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ce05750611cb0610fe1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d195750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d53575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d6c5750600560149054906101000a900460ff16155b1561214f57600a60009054906101000a900460ff16611e6657601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e265750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5c90613e94565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f095750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611fb057600754811115611f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4a90613f26565b60405180910390fd5b600954611f5f83610d60565b82611f6a91906134eb565b1115611fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa290613f92565b60405180910390fd5b61214e565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156120535750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120a25760075481111561209d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209490614024565b60405180910390fd5b61214d565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661214c576009546120ff83610d60565b8261210a91906134eb565b111561214b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214290613f92565b60405180910390fd5b5b5b5b5b600061215a30610d60565b90506000600854821015905080801561217f5750600a60019054906101000a900460ff165b80156121985750600560149054906101000a900460ff16155b80156121ee5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122445750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561229a5750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122de576001600560146101000a81548160ff0219169083151502179055506122c26129b5565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123945750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561239e57600090505b600081156125b157601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561240157506000600e54115b1561249b5761242e6064612420600e5488612bc290919063ffffffff16565b612bd890919063ffffffff16565b9050600e546010548261244191906136e9565b61244b919061375a565b6012600082825461245c91906134eb565b92505081905550600e54600f548261247491906136e9565b61247e919061375a565b6011600082825461248f91906134eb565b9250508190555061258d565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124f657506000600b54115b1561258c576125236064612515600b5488612bc290919063ffffffff16565b612bd890919063ffffffff16565b9050600b54600d548261253691906136e9565b612540919061375a565b6012600082825461255191906134eb565b92505081905550600b54600c548261256991906136e9565b612573919061375a565b6011600082825461258491906134eb565b925050819055505b5b60008111156125a2576125a1873083612736565b5b80856125ae9190614044565b94505b6125bc878787612736565b601354600e81905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279c90613d96565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280b90613e28565b60405180910390fd5b61281f838383612bee565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156128a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289c906140ea565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461293891906134eb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161299c91906131b6565b60405180910390a36129af848484612bf3565b50505050565b60006129c030610d60565b905060006011546012546129d491906134eb565b90506000808314806129e65750600082145b156129f357505050612bc0565b6014600854612a0291906136e9565b831115612a1b576014600854612a1891906136e9565b92505b600060028360125486612a2e91906136e9565b612a38919061375a565b612a42919061375a565b90506000612a598286612bf890919063ffffffff16565b90506000479050612a6982612c0e565b6000612a7e8247612bf890919063ffffffff16565b90506000612aa987612a9b60115485612bc290919063ffffffff16565b612bd890919063ffffffff16565b905060008183612ab99190614044565b905060006012819055506000601181905550600086118015612adb5750600081115b15612b2857612aea8682612e4b565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601254604051612b1f9392919061410a565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612b6e90614172565b60006040518083038185875af1925050503d8060008114612bab576040519150601f19603f3d011682016040523d82523d6000602084013e612bb0565b606091505b5050809750505050505050505050505b565b60008183612bd091906136e9565b905092915050565b60008183612be6919061375a565b905092915050565b505050565b505050565b60008183612c069190614044565b905092915050565b6000600267ffffffffffffffff811115612c2b57612c2a614187565b5b604051908082528060200260200182016040528015612c595781602001602082028036833780820191505090505b5090503081600081518110612c7157612c706139d3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d3a91906141cb565b81600181518110612d4e57612d4d6139d3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612db3307f0000000000000000000000000000000000000000000000000000000000000000846119aa565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612e159594939291906142f1565b600060405180830381600087803b158015612e2f57600080fd5b505af1158015612e43573d6000803e3d6000fd5b505050505050565b612e76307f0000000000000000000000000000000000000000000000000000000000000000846119aa565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612edd9695949392919061434b565b60606040518083038185885af1158015612efb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612f2091906143c1565b5050505050565b600080fd5b600080fd5b6000819050919050565b612f4481612f31565b8114612f4f57600080fd5b50565b600081359050612f6181612f3b565b92915050565b60008060408385031215612f7e57612f7d612f27565b5b6000612f8c85828601612f52565b9250506020612f9d85828601612f52565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612fe1578082015181840152602081019050612fc6565b60008484015250505050565b6000601f19601f8301169050919050565b600061300982612fa7565b6130138185612fb2565b9350613023818560208601612fc3565b61302c81612fed565b840191505092915050565b600060208201905081810360008301526130518184612ffe565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061308482613059565b9050919050565b61309481613079565b811461309f57600080fd5b50565b6000813590506130b18161308b565b92915050565b600080604083850312156130ce576130cd612f27565b5b60006130dc858286016130a2565b92505060206130ed85828601612f52565b9150509250929050565b60008115159050919050565b61310c816130f7565b82525050565b60006020820190506131276000830184613103565b92915050565b6000819050919050565b600061315261314d61314884613059565b61312d565b613059565b9050919050565b600061316482613137565b9050919050565b600061317682613159565b9050919050565b6131868161316b565b82525050565b60006020820190506131a1600083018461317d565b92915050565b6131b081612f31565b82525050565b60006020820190506131cb60008301846131a7565b92915050565b6000806000606084860312156131ea576131e9612f27565b5b60006131f8868287016130a2565b9350506020613209868287016130a2565b925050604061321a86828701612f52565b9150509250925092565b61322d81613079565b82525050565b60006020820190506132486000830184613224565b92915050565b600060ff82169050919050565b6132648161324e565b82525050565b600060208201905061327f600083018461325b565b92915050565b60006020828403121561329b5761329a612f27565b5b60006132a9848285016130a2565b91505092915050565b6132bb816130f7565b81146132c657600080fd5b50565b6000813590506132d8816132b2565b92915050565b600080604083850312156132f5576132f4612f27565b5b6000613303858286016130a2565b9250506020613314858286016132c9565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126133435761334261331e565b5b8235905067ffffffffffffffff8111156133605761335f613323565b5b60208301915083602082028301111561337c5761337b613328565b5b9250929050565b60008060006040848603121561339c5761339b612f27565b5b600084013567ffffffffffffffff8111156133ba576133b9612f2c565b5b6133c68682870161332d565b935093505060206133d9868287016132c9565b9150509250925092565b6000602082840312156133f9576133f8612f27565b5b600061340784828501612f52565b91505092915050565b6000806040838503121561342757613426612f27565b5b6000613435858286016130a2565b9250506020613446858286016130a2565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613486602083612fb2565b915061349182613450565b602082019050919050565b600060208201905081810360008301526134b581613479565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134f682612f31565b915061350183612f31565b9250828201905080821115613519576135186134bc565b5b92915050565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b6000613555601d83612fb2565b91506135608261351f565b602082019050919050565b6000602082019050818103600083015261358481613548565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806135d257607f821691505b6020821081036135e5576135e461358b565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613647602883612fb2565b9150613652826135eb565b604082019050919050565b600060208201905081810360008301526136768161363a565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b60006136b3601d83612fb2565b91506136be8261367d565b602082019050919050565b600060208201905081810360008301526136e2816136a6565b9050919050565b60006136f482612f31565b91506136ff83612f31565b925082820261370d81612f31565b91508282048414831517613724576137236134bc565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061376582612f31565b915061377083612f31565b9250826137805761377f61372b565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e3560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b60006137e7602183612fb2565b91506137f28261378b565b604082019050919050565b60006020820190508181036000830152613816816137da565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613879602483612fb2565b91506138848261381d565b604082019050919050565b600060208201905081810360008301526138a88161386c565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061390b603983612fb2565b9150613916826138af565b604082019050919050565b6000602082019050818103600083015261393a816138fe565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061399d602583612fb2565b91506139a882613941565b604082019050919050565b600060208201905081810360008301526139cc81613990565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613a0d82612f31565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613a3f57613a3e6134bc565b5b600182019050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613aa6603583612fb2565b9150613ab182613a4a565b604082019050919050565b60006020820190508181036000830152613ad581613a99565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613b38603483612fb2565b9150613b4382613adc565b604082019050919050565b60006020820190508181036000830152613b6781613b2b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613bca602683612fb2565b9150613bd582613b6e565b604082019050919050565b60006020820190508181036000830152613bf981613bbd565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c5c602483612fb2565b9150613c6782613c00565b604082019050919050565b60006020820190508181036000830152613c8b81613c4f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cee602283612fb2565b9150613cf982613c92565b604082019050919050565b60006020820190508181036000830152613d1d81613ce1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613d80602583612fb2565b9150613d8b82613d24565b604082019050919050565b60006020820190508181036000830152613daf81613d73565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613e12602383612fb2565b9150613e1d82613db6565b604082019050919050565b60006020820190508181036000830152613e4181613e05565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613e7e601683612fb2565b9150613e8982613e48565b602082019050919050565b60006020820190508181036000830152613ead81613e71565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613f10603583612fb2565b9150613f1b82613eb4565b604082019050919050565b60006020820190508181036000830152613f3f81613f03565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613f7c601383612fb2565b9150613f8782613f46565b602082019050919050565b60006020820190508181036000830152613fab81613f6f565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061400e603683612fb2565b915061401982613fb2565b604082019050919050565b6000602082019050818103600083015261403d81614001565b9050919050565b600061404f82612f31565b915061405a83612f31565b9250828203905081811115614072576140716134bc565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006140d4602683612fb2565b91506140df82614078565b604082019050919050565b60006020820190508181036000830152614103816140c7565b9050919050565b600060608201905061411f60008301866131a7565b61412c60208301856131a7565b61413960408301846131a7565b949350505050565b600081905092915050565b50565b600061415c600083614141565b91506141678261414c565b600082019050919050565b600061417d8261414f565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506141c58161308b565b92915050565b6000602082840312156141e1576141e0612f27565b5b60006141ef848285016141b6565b91505092915050565b6000819050919050565b600061421d614218614213846141f8565b61312d565b612f31565b9050919050565b61422d81614202565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61426881613079565b82525050565b600061427a838361425f565b60208301905092915050565b6000602082019050919050565b600061429e82614233565b6142a8818561423e565b93506142b38361424f565b8060005b838110156142e45781516142cb888261426e565b97506142d683614286565b9250506001810190506142b7565b5085935050505092915050565b600060a08201905061430660008301886131a7565b6143136020830187614224565b81810360408301526143258186614293565b90506143346060830185613224565b61434160808301846131a7565b9695505050505050565b600060c0820190506143606000830189613224565b61436d60208301886131a7565b61437a6040830187614224565b6143876060830186614224565b6143946080830185613224565b6143a160a08301846131a7565b979650505050505050565b6000815190506143bb81612f3b565b92915050565b6000806000606084860312156143da576143d9612f27565b5b60006143e8868287016143ac565b93505060206143f9868287016143ac565b925050604061440a868287016143ac565b915050925092509256fea264697066735822122016eae24e17fec87e2b0f184d5115fcbb71d72f559186009ea5e50f3cc1bc19b464736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102085760003560e01c806375f0a87411610118578063c0246668116100a0578063d85ba0631161006f578063d85ba06314610778578063dd62ed3e146107a3578063e2f45605146107e0578063f2fde38b1461080b578063f8b45b05146108345761020f565b8063c0246668146106be578063c492f046146106e7578063c8c8ebe414610710578063d257b34f1461073b5761020f565b806396188399116100e757806396188399146105c75780639a7a23d6146105f0578063a457c2d714610619578063a9059cbb14610656578063bbc0c742146106935761020f565b806375f0a8741461052f5780638a8c523c1461055a5780638da5cb5b1461057157806395d89b411461059c5761020f565b8063395093511161019b5780636a486a8e1161016a5780636a486a8e1461045c5780636ddd17131461048757806370a08231146104b2578063715018a6146104ef5780637571336a146105065761020f565b8063395093511461038e57806349bd5a5e146103cb5780634fbee193146103f657806366ca9b83146104335761020f565b806318160ddd116101d757806318160ddd146102d057806323b872dd146102fb57806327c8f83514610338578063313ce567146103635761020f565b806302dbd8f81461021457806306fdde031461023d578063095ea7b3146102685780631694505e146102a55761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190612f67565b61085f565b005b34801561024957600080fd5b50610252610952565b60405161025f9190613037565b60405180910390f35b34801561027457600080fd5b5061028f600480360381019061028a91906130b7565b6109e4565b60405161029c9190613112565b60405180910390f35b3480156102b157600080fd5b506102ba610a02565b6040516102c7919061318c565b60405180910390f35b3480156102dc57600080fd5b506102e5610a26565b6040516102f291906131b6565b60405180910390f35b34801561030757600080fd5b50610322600480360381019061031d91906131d1565b610a30565b60405161032f9190613112565b60405180910390f35b34801561034457600080fd5b5061034d610b28565b60405161035a9190613233565b60405180910390f35b34801561036f57600080fd5b50610378610b2e565b604051610385919061326a565b60405180910390f35b34801561039a57600080fd5b506103b560048036038101906103b091906130b7565b610b37565b6040516103c29190613112565b60405180910390f35b3480156103d757600080fd5b506103e0610be3565b6040516103ed9190613233565b60405180910390f35b34801561040257600080fd5b5061041d60048036038101906104189190613285565b610c07565b60405161042a9190613112565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190612f67565b610c5d565b005b34801561046857600080fd5b50610471610d47565b60405161047e91906131b6565b60405180910390f35b34801561049357600080fd5b5061049c610d4d565b6040516104a99190613112565b60405180910390f35b3480156104be57600080fd5b506104d960048036038101906104d49190613285565b610d60565b6040516104e691906131b6565b60405180910390f35b3480156104fb57600080fd5b50610504610da8565b005b34801561051257600080fd5b5061052d600480360381019061052891906132de565b610e30565b005b34801561053b57600080fd5b50610544610f07565b6040516105519190613233565b60405180910390f35b34801561056657600080fd5b5061056f610f2d565b005b34801561057d57600080fd5b50610586610fe1565b6040516105939190613233565b60405180910390f35b3480156105a857600080fd5b506105b161100b565b6040516105be9190613037565b60405180910390f35b3480156105d357600080fd5b506105ee60048036038101906105e99190612f67565b61109d565b005b3480156105fc57600080fd5b50610617600480360381019061061291906132de565b61123d565b005b34801561062557600080fd5b50610640600480360381019061063b91906130b7565b611355565b60405161064d9190613112565b60405180910390f35b34801561066257600080fd5b5061067d600480360381019061067891906130b7565b611440565b60405161068a9190613112565b60405180910390f35b34801561069f57600080fd5b506106a861145e565b6040516106b59190613112565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e091906132de565b611471565b005b3480156106f357600080fd5b5061070e60048036038101906107099190613383565b611596565b005b34801561071c57600080fd5b506107256116b7565b60405161073291906131b6565b60405180910390f35b34801561074757600080fd5b50610762600480360381019061075d91906133e3565b6116bd565b60405161076f9190613112565b60405180910390f35b34801561078457600080fd5b5061078d611812565b60405161079a91906131b6565b60405180910390f35b3480156107af57600080fd5b506107ca60048036038101906107c59190613410565b611818565b6040516107d791906131b6565b60405180910390f35b3480156107ec57600080fd5b506107f561189f565b60405161080291906131b6565b60405180910390f35b34801561081757600080fd5b50610832600480360381019061082d9190613285565b6118a5565b005b34801561084057600080fd5b5061084961199c565b60405161085691906131b6565b60405180910390f35b6108676119a2565b73ffffffffffffffffffffffffffffffffffffffff16610885610fe1565b73ffffffffffffffffffffffffffffffffffffffff16146108db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d29061349c565b60405180910390fd5b81600f8190555080601081905550601054600f546108f991906134eb565b600e81905550600e546013819055506063600e54111561094e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109459061356b565b60405180910390fd5b5050565b606060038054610961906135ba565b80601f016020809104026020016040519081016040528092919081815260200182805461098d906135ba565b80156109da5780601f106109af576101008083540402835291602001916109da565b820191906000526020600020905b8154815290600101906020018083116109bd57829003601f168201915b5050505050905090565b60006109f86109f16119a2565b84846119aa565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b6000610a3d848484611b73565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a886119a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aff9061365d565b60405180910390fd5b610b1c85610b146119a2565b8584036119aa565b60019150509392505050565b61dead81565b60006012905090565b6000610bd9610b446119a2565b848460016000610b526119a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bd491906134eb565b6119aa565b6001905092915050565b7f000000000000000000000000b591f4342af3e37bb76a9c02f20555da26eb2c3381565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610c656119a2565b73ffffffffffffffffffffffffffffffffffffffff16610c83610fe1565b73ffffffffffffffffffffffffffffffffffffffff1614610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd09061349c565b60405180910390fd5b81600c8190555080600d81905550600d54600c54610cf791906134eb565b600b819055506014600b541115610d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3a906136c9565b60405180910390fd5b5050565b600e5481565b600a60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610db06119a2565b73ffffffffffffffffffffffffffffffffffffffff16610dce610fe1565b73ffffffffffffffffffffffffffffffffffffffff1614610e24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1b9061349c565b60405180910390fd5b610e2e60006125cf565b565b610e386119a2565b73ffffffffffffffffffffffffffffffffffffffff16610e56610fe1565b73ffffffffffffffffffffffffffffffffffffffff1614610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea39061349c565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f356119a2565b73ffffffffffffffffffffffffffffffffffffffff16610f53610fe1565b73ffffffffffffffffffffffffffffffffffffffff1614610fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa09061349c565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461101a906135ba565b80601f0160208091040260200160405190810160405280929190818152602001828054611046906135ba565b80156110935780601f1061106857610100808354040283529160200191611093565b820191906000526020600020905b81548152906001019060200180831161107657829003601f168201915b5050505050905090565b6110a56119a2565b73ffffffffffffffffffffffffffffffffffffffff166110c3610fe1565b73ffffffffffffffffffffffffffffffffffffffff1614611119576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111109061349c565b60405180910390fd5b670de0b6b3a76400006103e8600561112f610a26565b61113991906136e9565b611143919061375a565b61114d919061375a565b82101561118f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611186906137fd565b60405180910390fd5b670de0b6b3a76400006103e860056111a5610a26565b6111af91906136e9565b6111b9919061375a565b6111c3919061375a565b811015611205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fc9061388f565b60405180910390fd5b670de0b6b3a76400008161121991906136e9565b600981905550670de0b6b3a76400008261123391906136e9565b6007819055505050565b6112456119a2565b73ffffffffffffffffffffffffffffffffffffffff16611263610fe1565b73ffffffffffffffffffffffffffffffffffffffff16146112b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b09061349c565b60405180910390fd5b7f000000000000000000000000b591f4342af3e37bb76a9c02f20555da26eb2c3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133e90613921565b60405180910390fd5b6113518282612695565b5050565b600080600160006113646119a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611421576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611418906139b3565b60405180910390fd5b61143561142c6119a2565b858584036119aa565b600191505092915050565b600061145461144d6119a2565b8484611b73565b6001905092915050565b600a60009054906101000a900460ff1681565b6114796119a2565b73ffffffffffffffffffffffffffffffffffffffff16611497610fe1565b73ffffffffffffffffffffffffffffffffffffffff16146114ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e49061349c565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161158a9190613112565b60405180910390a25050565b61159e6119a2565b73ffffffffffffffffffffffffffffffffffffffff166115bc610fe1565b73ffffffffffffffffffffffffffffffffffffffff1614611612576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116099061349c565b60405180910390fd5b60005b838390508110156116b1578160146000868685818110611638576116376139d3565b5b905060200201602081019061164d9190613285565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806116a990613a02565b915050611615565b50505050565b60075481565b60006116c76119a2565b73ffffffffffffffffffffffffffffffffffffffff166116e5610fe1565b73ffffffffffffffffffffffffffffffffffffffff161461173b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117329061349c565b60405180910390fd5b620186a06001611749610a26565b61175391906136e9565b61175d919061375a565b82101561179f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179690613abc565b60405180910390fd5b6103e860056117ac610a26565b6117b691906136e9565b6117c0919061375a565b821115611802576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f990613b4e565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b6118ad6119a2565b73ffffffffffffffffffffffffffffffffffffffff166118cb610fe1565b73ffffffffffffffffffffffffffffffffffffffff1614611921576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119189061349c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611990576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198790613be0565b60405180910390fd5b611999816125cf565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1090613c72565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7f90613d04565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b6691906131b6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd990613d96565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4890613e28565b60405180910390fd5b60008103611c6a57611c6583836000612736565b6125ca565b611c72610fe1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ce05750611cb0610fe1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d195750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d53575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d6c5750600560149054906101000a900460ff16155b1561214f57600a60009054906101000a900460ff16611e6657601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e265750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5c90613e94565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f095750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611fb057600754811115611f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4a90613f26565b60405180910390fd5b600954611f5f83610d60565b82611f6a91906134eb565b1115611fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa290613f92565b60405180910390fd5b61214e565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156120535750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120a25760075481111561209d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209490614024565b60405180910390fd5b61214d565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661214c576009546120ff83610d60565b8261210a91906134eb565b111561214b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214290613f92565b60405180910390fd5b5b5b5b5b600061215a30610d60565b90506000600854821015905080801561217f5750600a60019054906101000a900460ff165b80156121985750600560149054906101000a900460ff16155b80156121ee5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122445750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561229a5750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122de576001600560146101000a81548160ff0219169083151502179055506122c26129b5565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123945750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561239e57600090505b600081156125b157601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561240157506000600e54115b1561249b5761242e6064612420600e5488612bc290919063ffffffff16565b612bd890919063ffffffff16565b9050600e546010548261244191906136e9565b61244b919061375a565b6012600082825461245c91906134eb565b92505081905550600e54600f548261247491906136e9565b61247e919061375a565b6011600082825461248f91906134eb565b9250508190555061258d565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124f657506000600b54115b1561258c576125236064612515600b5488612bc290919063ffffffff16565b612bd890919063ffffffff16565b9050600b54600d548261253691906136e9565b612540919061375a565b6012600082825461255191906134eb565b92505081905550600b54600c548261256991906136e9565b612573919061375a565b6011600082825461258491906134eb565b925050819055505b5b60008111156125a2576125a1873083612736565b5b80856125ae9190614044565b94505b6125bc878787612736565b601354600e81905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279c90613d96565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280b90613e28565b60405180910390fd5b61281f838383612bee565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156128a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289c906140ea565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461293891906134eb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161299c91906131b6565b60405180910390a36129af848484612bf3565b50505050565b60006129c030610d60565b905060006011546012546129d491906134eb565b90506000808314806129e65750600082145b156129f357505050612bc0565b6014600854612a0291906136e9565b831115612a1b576014600854612a1891906136e9565b92505b600060028360125486612a2e91906136e9565b612a38919061375a565b612a42919061375a565b90506000612a598286612bf890919063ffffffff16565b90506000479050612a6982612c0e565b6000612a7e8247612bf890919063ffffffff16565b90506000612aa987612a9b60115485612bc290919063ffffffff16565b612bd890919063ffffffff16565b905060008183612ab99190614044565b905060006012819055506000601181905550600086118015612adb5750600081115b15612b2857612aea8682612e4b565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601254604051612b1f9392919061410a565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612b6e90614172565b60006040518083038185875af1925050503d8060008114612bab576040519150601f19603f3d011682016040523d82523d6000602084013e612bb0565b606091505b5050809750505050505050505050505b565b60008183612bd091906136e9565b905092915050565b60008183612be6919061375a565b905092915050565b505050565b505050565b60008183612c069190614044565b905092915050565b6000600267ffffffffffffffff811115612c2b57612c2a614187565b5b604051908082528060200260200182016040528015612c595781602001602082028036833780820191505090505b5090503081600081518110612c7157612c706139d3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d3a91906141cb565b81600181518110612d4e57612d4d6139d3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612db3307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846119aa565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612e159594939291906142f1565b600060405180830381600087803b158015612e2f57600080fd5b505af1158015612e43573d6000803e3d6000fd5b505050505050565b612e76307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846119aa565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612edd9695949392919061434b565b60606040518083038185885af1158015612efb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612f2091906143c1565b5050505050565b600080fd5b600080fd5b6000819050919050565b612f4481612f31565b8114612f4f57600080fd5b50565b600081359050612f6181612f3b565b92915050565b60008060408385031215612f7e57612f7d612f27565b5b6000612f8c85828601612f52565b9250506020612f9d85828601612f52565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612fe1578082015181840152602081019050612fc6565b60008484015250505050565b6000601f19601f8301169050919050565b600061300982612fa7565b6130138185612fb2565b9350613023818560208601612fc3565b61302c81612fed565b840191505092915050565b600060208201905081810360008301526130518184612ffe565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061308482613059565b9050919050565b61309481613079565b811461309f57600080fd5b50565b6000813590506130b18161308b565b92915050565b600080604083850312156130ce576130cd612f27565b5b60006130dc858286016130a2565b92505060206130ed85828601612f52565b9150509250929050565b60008115159050919050565b61310c816130f7565b82525050565b60006020820190506131276000830184613103565b92915050565b6000819050919050565b600061315261314d61314884613059565b61312d565b613059565b9050919050565b600061316482613137565b9050919050565b600061317682613159565b9050919050565b6131868161316b565b82525050565b60006020820190506131a1600083018461317d565b92915050565b6131b081612f31565b82525050565b60006020820190506131cb60008301846131a7565b92915050565b6000806000606084860312156131ea576131e9612f27565b5b60006131f8868287016130a2565b9350506020613209868287016130a2565b925050604061321a86828701612f52565b9150509250925092565b61322d81613079565b82525050565b60006020820190506132486000830184613224565b92915050565b600060ff82169050919050565b6132648161324e565b82525050565b600060208201905061327f600083018461325b565b92915050565b60006020828403121561329b5761329a612f27565b5b60006132a9848285016130a2565b91505092915050565b6132bb816130f7565b81146132c657600080fd5b50565b6000813590506132d8816132b2565b92915050565b600080604083850312156132f5576132f4612f27565b5b6000613303858286016130a2565b9250506020613314858286016132c9565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126133435761334261331e565b5b8235905067ffffffffffffffff8111156133605761335f613323565b5b60208301915083602082028301111561337c5761337b613328565b5b9250929050565b60008060006040848603121561339c5761339b612f27565b5b600084013567ffffffffffffffff8111156133ba576133b9612f2c565b5b6133c68682870161332d565b935093505060206133d9868287016132c9565b9150509250925092565b6000602082840312156133f9576133f8612f27565b5b600061340784828501612f52565b91505092915050565b6000806040838503121561342757613426612f27565b5b6000613435858286016130a2565b9250506020613446858286016130a2565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613486602083612fb2565b915061349182613450565b602082019050919050565b600060208201905081810360008301526134b581613479565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134f682612f31565b915061350183612f31565b9250828201905080821115613519576135186134bc565b5b92915050565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b6000613555601d83612fb2565b91506135608261351f565b602082019050919050565b6000602082019050818103600083015261358481613548565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806135d257607f821691505b6020821081036135e5576135e461358b565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613647602883612fb2565b9150613652826135eb565b604082019050919050565b600060208201905081810360008301526136768161363a565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b60006136b3601d83612fb2565b91506136be8261367d565b602082019050919050565b600060208201905081810360008301526136e2816136a6565b9050919050565b60006136f482612f31565b91506136ff83612f31565b925082820261370d81612f31565b91508282048414831517613724576137236134bc565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061376582612f31565b915061377083612f31565b9250826137805761377f61372b565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e3560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b60006137e7602183612fb2565b91506137f28261378b565b604082019050919050565b60006020820190508181036000830152613816816137da565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613879602483612fb2565b91506138848261381d565b604082019050919050565b600060208201905081810360008301526138a88161386c565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061390b603983612fb2565b9150613916826138af565b604082019050919050565b6000602082019050818103600083015261393a816138fe565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061399d602583612fb2565b91506139a882613941565b604082019050919050565b600060208201905081810360008301526139cc81613990565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613a0d82612f31565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613a3f57613a3e6134bc565b5b600182019050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613aa6603583612fb2565b9150613ab182613a4a565b604082019050919050565b60006020820190508181036000830152613ad581613a99565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613b38603483612fb2565b9150613b4382613adc565b604082019050919050565b60006020820190508181036000830152613b6781613b2b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613bca602683612fb2565b9150613bd582613b6e565b604082019050919050565b60006020820190508181036000830152613bf981613bbd565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c5c602483612fb2565b9150613c6782613c00565b604082019050919050565b60006020820190508181036000830152613c8b81613c4f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cee602283612fb2565b9150613cf982613c92565b604082019050919050565b60006020820190508181036000830152613d1d81613ce1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613d80602583612fb2565b9150613d8b82613d24565b604082019050919050565b60006020820190508181036000830152613daf81613d73565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613e12602383612fb2565b9150613e1d82613db6565b604082019050919050565b60006020820190508181036000830152613e4181613e05565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613e7e601683612fb2565b9150613e8982613e48565b602082019050919050565b60006020820190508181036000830152613ead81613e71565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613f10603583612fb2565b9150613f1b82613eb4565b604082019050919050565b60006020820190508181036000830152613f3f81613f03565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613f7c601383612fb2565b9150613f8782613f46565b602082019050919050565b60006020820190508181036000830152613fab81613f6f565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061400e603683612fb2565b915061401982613fb2565b604082019050919050565b6000602082019050818103600083015261403d81614001565b9050919050565b600061404f82612f31565b915061405a83612f31565b9250828203905081811115614072576140716134bc565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006140d4602683612fb2565b91506140df82614078565b604082019050919050565b60006020820190508181036000830152614103816140c7565b9050919050565b600060608201905061411f60008301866131a7565b61412c60208301856131a7565b61413960408301846131a7565b949350505050565b600081905092915050565b50565b600061415c600083614141565b91506141678261414c565b600082019050919050565b600061417d8261414f565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506141c58161308b565b92915050565b6000602082840312156141e1576141e0612f27565b5b60006141ef848285016141b6565b91505092915050565b6000819050919050565b600061421d614218614213846141f8565b61312d565b612f31565b9050919050565b61422d81614202565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61426881613079565b82525050565b600061427a838361425f565b60208301905092915050565b6000602082019050919050565b600061429e82614233565b6142a8818561423e565b93506142b38361424f565b8060005b838110156142e45781516142cb888261426e565b97506142d683614286565b9250506001810190506142b7565b5085935050505092915050565b600060a08201905061430660008301886131a7565b6143136020830187614224565b81810360408301526143258186614293565b90506143346060830185613224565b61434160808301846131a7565b9695505050505050565b600060c0820190506143606000830189613224565b61436d60208301886131a7565b61437a6040830187614224565b6143876060830186614224565b6143946080830185613224565b6143a160a08301846131a7565b979650505050505050565b6000815190506143bb81612f3b565b92915050565b6000806000606084860312156143da576143d9612f27565b5b60006143e8868287016143ac565b93505060206143f9868287016143ac565b925050604061440a868287016143ac565b915050925092509256fea264697066735822122016eae24e17fec87e2b0f184d5115fcbb71d72f559186009ea5e50f3cc1bc19b464736f6c63430008110033

Deployed Bytecode Sourcemap

14217:12471:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19198:380;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2753:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3667:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14291:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3074:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3844:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14394:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2973:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4344:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14349:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20527:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18855:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14832:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14680:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3190:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;878:112;;;;;;;;;;;;;:::i;:::-;;18680:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14486:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17543:112;;;;;;;;;;;;;:::i;:::-;;655:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2861:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18168:504;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20019:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4567:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3325:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14640:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19586:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19776:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14525:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17663:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14720:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3508:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14567:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;998:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14607:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19198:380;801:12;:10;:12::i;:::-;790:23;;:7;:5;:7::i;:::-;:23;;;782:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19342:13:::1;19323:16;:32;;;;19385:13;19366:16;:32;;;;19444:16;;19425;;:35;;;;:::i;:::-;19409:13;:51;;;;19485:13;;19471:11;:27;;;;19534:2;19517:13;;:19;;19509:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;19198:380:::0;;:::o;2753:100::-;2807:13;2840:5;2833:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2753:100;:::o;3667:169::-;3750:4;3767:39;3776:12;:10;:12::i;:::-;3790:7;3799:6;3767:8;:39::i;:::-;3824:4;3817:11;;3667:169;;;;:::o;14291:51::-;;;:::o;3074:108::-;3135:7;3162:12;;3155:19;;3074:108;:::o;3844:492::-;3984:4;4001:36;4011:6;4019:9;4030:6;4001:9;:36::i;:::-;4050:24;4077:11;:19;4089:6;4077:19;;;;;;;;;;;;;;;:33;4097:12;:10;:12::i;:::-;4077:33;;;;;;;;;;;;;;;;4050:60;;4149:6;4129:16;:26;;4121:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4236:57;4245:6;4253:12;:10;:12::i;:::-;4286:6;4267:16;:25;4236:8;:57::i;:::-;4324:4;4317:11;;;3844:492;;;;;:::o;14394:53::-;14440:6;14394:53;:::o;2973:93::-;3031:5;3056:2;3049:9;;2973:93;:::o;4344:215::-;4432:4;4449:80;4458:12;:10;:12::i;:::-;4472:7;4518:10;4481:11;:25;4493:12;:10;:12::i;:::-;4481:25;;;;;;;;;;;;;;;:34;4507:7;4481:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4449:8;:80::i;:::-;4547:4;4540:11;;4344:215;;;;:::o;14349:38::-;;;:::o;20527:126::-;20593:4;20617:19;:28;20637:7;20617:28;;;;;;;;;;;;;;;;;;;;;;;;;20610:35;;20527:126;;;:::o;18855:335::-;801:12;:10;:12::i;:::-;790:23;;:7;:5;:7::i;:::-;:23;;;782:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18997:13:::1;18979:15;:31;;;;19039:13;19021:15;:31;;;;19096:15;;19078;;:33;;;;:::i;:::-;19063:12;:48;;;;19146:2;19130:12;;:18;;19122:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;18855:335:::0;;:::o;14832:28::-;;;;:::o;14680:31::-;;;;;;;;;;;;;:::o;3190:127::-;3264:7;3291:9;:18;3301:7;3291:18;;;;;;;;;;;;;;;;3284:25;;3190:127;;;:::o;878:112::-;801:12;:10;:12::i;:::-;790:23;;:7;:5;:7::i;:::-;:23;;;782:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;952:30:::1;979:1;952:18;:30::i;:::-;878:112::o:0;18680:167::-;801:12;:10;:12::i;:::-;790:23;;:7;:5;:7::i;:::-;:23;;;782:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18835:4:::1;18793:31;:39;18825:6;18793:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18680:167:::0;;:::o;14486:30::-;;;;;;;;;;;;;:::o;17543:112::-;801:12;:10;:12::i;:::-;790:23;;:7;:5;:7::i;:::-;:23;;;782:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17614:4:::1;17598:13;;:20;;;;;;;;;;;;;;;;;;17643:4;17629:11;;:18;;;;;;;;;;;;;;;;;;17543:112::o:0;655:87::-;701:7;728:6;;;;;;;;;;;721:13;;655:87;:::o;2861:104::-;2917:13;2950:7;2943:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:104;:::o;18168:504::-;801:12;:10;:12::i;:::-;790:23;;:7;:5;:7::i;:::-;:23;;;782:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18345:4:::1;18337;18332:1;18316:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18315:26;;;;:::i;:::-;18314:35;;;;:::i;:::-;18301:9;:48;;18279:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;18493:4;18485;18480:1;18464:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18463:26;;;;:::i;:::-;18462:35;;;;:::i;:::-;18443:15;:54;;18421:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;18603:6;18584:15;:26;;;;:::i;:::-;18572:9;:38;;;;18657:6;18644:9;:20;;;;:::i;:::-;18621;:43;;;;18168:504:::0;;:::o;20019:304::-;801:12;:10;:12::i;:::-;790:23;;:7;:5;:7::i;:::-;:23;;;782:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20163:13:::1;20155:21;;:4;:21;;::::0;20133:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20274:41;20303:4;20309:5;20274:28;:41::i;:::-;20019:304:::0;;:::o;4567:413::-;4660:4;4677:24;4704:11;:25;4716:12;:10;:12::i;:::-;4704:25;;;;;;;;;;;;;;;:34;4730:7;4704:34;;;;;;;;;;;;;;;;4677:61;;4777:15;4757:16;:35;;4749:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4870:67;4879:12;:10;:12::i;:::-;4893:7;4921:15;4902:16;:34;4870:8;:67::i;:::-;4968:4;4961:11;;;4567:413;;;;:::o;3325:175::-;3411:4;3428:42;3438:12;:10;:12::i;:::-;3452:9;3463:6;3428:9;:42::i;:::-;3488:4;3481:11;;3325:175;;;;:::o;14640:33::-;;;;;;;;;;;;;:::o;19586:182::-;801:12;:10;:12::i;:::-;790:23;;:7;:5;:7::i;:::-;:23;;;782:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19702:8:::1;19671:19;:28;19691:7;19671:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19742:7;19726:34;;;19751:8;19726:34;;;;;;:::i;:::-;;;;;;;;19586:182:::0;;:::o;19776:235::-;801:12;:10;:12::i;:::-;790:23;;:7;:5;:7::i;:::-;:23;;;782:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19893:9:::1;19889:115;19912:8;;:15;;19908:1;:19;19889:115;;;19984:8;19949:19;:32;19969:8;;19978:1;19969:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19949:32;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;19929:3;;;;;:::i;:::-;;;;19889:115;;;;19776:235:::0;;;:::o;14525:35::-;;;;:::o;17663:497::-;17771:4;801:12;:10;:12::i;:::-;790:23;;:7;:5;:7::i;:::-;:23;;;782:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17850:6:::1;17845:1;17829:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17828:28;;;;:::i;:::-;17815:9;:41;;17793:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;18005:4;18000:1;17984:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17983:26;;;;:::i;:::-;17970:9;:39;;17948:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;18121:9;18100:18;:30;;;;18148:4;18141:11;;17663:497:::0;;;:::o;14720:27::-;;;;:::o;3508:151::-;3597:7;3624:11;:18;3636:5;3624:18;;;;;;;;;;;;;;;:27;3643:7;3624:27;;;;;;;;;;;;;;;;3617:34;;3508:151;;;;:::o;14567:33::-;;;;:::o;998:201::-;801:12;:10;:12::i;:::-;790:23;;:7;:5;:7::i;:::-;:23;;;782:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1107:1:::1;1087:22;;:8;:22;;::::0;1079:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1163:28;1182:8;1163:18;:28::i;:::-;998:201:::0;:::o;14607:24::-;;;;:::o;201:98::-;254:7;281:10;274:17;;201:98;:::o;6136:380::-;6289:1;6272:19;;:5;:19;;;6264:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6370:1;6351:21;;:7;:21;;;6343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6454:6;6424:11;:18;6436:5;6424:18;;;;;;;;;;;;;;;:27;6443:7;6424:27;;;;;;;;;;;;;;;:36;;;;6492:7;6476:32;;6485:5;6476:32;;;6501:6;6476:32;;;;;;:::i;:::-;;;;;;;;6136:380;;;:::o;20661:3667::-;20809:1;20793:18;;:4;:18;;;20785:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20886:1;20872:16;;:2;:16;;;20864:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20955:1;20945:6;:11;20941:93;;20973:28;20989:4;20995:2;20999:1;20973:15;:28::i;:::-;21016:7;;20941:93;21084:7;:5;:7::i;:::-;21076:15;;:4;:15;;;;:49;;;;;21118:7;:5;:7::i;:::-;21112:13;;:2;:13;;;;21076:49;:86;;;;;21160:1;21146:16;;:2;:16;;;;21076:86;:128;;;;;21197:6;21183:21;;:2;:21;;;;21076:128;:158;;;;;21226:8;;;;;;;;;;;21225:9;21076:158;21054:1684;;;21274:13;;;;;;;;;;;21269:223;;21346:19;:25;21366:4;21346:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21375:19;:23;21395:2;21375:23;;;;;;;;;;;;;;;;;;;;;;;;;21346:52;21312:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;21269:223;21566:25;:31;21592:4;21566:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21623:31;:35;21655:2;21623:35;;;;;;;;;;;;;;;;;;;;;;;;;21622:36;21566:92;21540:1183;;;21745:20;;21735:6;:30;;21701:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;21953:9;;21936:13;21946:2;21936:9;:13::i;:::-;21927:6;:22;;;;:::i;:::-;:35;;21893:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;21540:1183;;;22131:25;:29;22157:2;22131:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;22186:31;:37;22218:4;22186:37;;;;;;;;;;;;;;;;;;;;;;;;;22185:38;22131:92;22105:618;;;22310:20;;22300:6;:30;;22266:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;22105:618;;;22503:31;:35;22535:2;22503:35;;;;;;;;;;;;;;;;;;;;;;;;;22498:225;;22623:9;;22606:13;22616:2;22606:9;:13::i;:::-;22597:6;:22;;;;:::i;:::-;:35;;22563:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;22498:225;22105:618;21540:1183;21054:1684;22750:28;22781:24;22799:4;22781:9;:24::i;:::-;22750:55;;22818:12;22857:18;;22833:20;:42;;22818:57;;22906:7;:35;;;;;22930:11;;;;;;;;;;;22906:35;:61;;;;;22959:8;;;;;;;;;;;22958:9;22906:61;:110;;;;;22985:25;:31;23011:4;22985:31;;;;;;;;;;;;;;;;;;;;;;;;;22984:32;22906:110;:153;;;;;23034:19;:25;23054:4;23034:25;;;;;;;;;;;;;;;;;;;;;;;;;23033:26;22906:153;:194;;;;;23077:19;:23;23097:2;23077:23;;;;;;;;;;;;;;;;;;;;;;;;;23076:24;22906:194;22888:326;;;23138:4;23127:8;;:15;;;;;;;;;;;;;;;;;;23159:10;:8;:10::i;:::-;23197:5;23186:8;;:16;;;;;;;;;;;;;;;;;;22888:326;23226:12;23242:8;;;;;;;;;;;23241:9;23226:24;;23267:19;:25;23287:4;23267:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23296:19;:23;23316:2;23296:23;;;;;;;;;;;;;;;;;;;;;;;;;23267:52;23263:100;;;23346:5;23336:15;;23263:100;23375:12;23408:7;23404:831;;;23460:25;:29;23486:2;23460:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;23509:1;23493:13;;:17;23460:50;23456:630;;;23538:34;23568:3;23538:25;23549:13;;23538:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;23531:41;;23641:13;;23621:16;;23614:4;:23;;;;:::i;:::-;23613:41;;;;:::i;:::-;23591:18;;:63;;;;;;;:::i;:::-;;;;;;;;23723:13;;23703:16;;23696:4;:23;;;;:::i;:::-;23695:41;;;;:::i;:::-;23673:18;;:63;;;;;;;:::i;:::-;;;;;;;;23456:630;;;23798:25;:31;23824:4;23798:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;23848:1;23833:12;;:16;23798:51;23794:292;;;23877:33;23906:3;23877:24;23888:12;;23877:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;23870:40;;23978:12;;23959:15;;23952:4;:22;;;;:::i;:::-;23951:39;;;;:::i;:::-;23929:18;;:61;;;;;;;:::i;:::-;;;;;;;;24058:12;;24039:15;;24032:4;:22;;;;:::i;:::-;24031:39;;;;:::i;:::-;24009:18;;:61;;;;;;;:::i;:::-;;;;;;;;23794:292;23456:630;24113:1;24106:4;:8;24102:91;;;24135:42;24151:4;24165;24172;24135:15;:42::i;:::-;24102:91;24219:4;24209:14;;;;;:::i;:::-;;;23404:831;24247:33;24263:4;24269:2;24273:6;24247:15;:33::i;:::-;24307:11;;24291:13;:27;;;;20774:3554;;;;20661:3667;;;;:::o;1207:191::-;1281:16;1300:6;;;;;;;;;;;1281:25;;1326:8;1317:6;;:17;;;;;;;;;;;;;;;;;;1381:8;1350:40;;1371:8;1350:40;;;;;;;;;;;;1270:128;1207:191;:::o;20331:188::-;20448:5;20414:25;:31;20440:4;20414:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20505:5;20471:40;;20499:4;20471:40;;;;;;;;;;;;20331:188;;:::o;4988:733::-;5146:1;5128:20;;:6;:20;;;5120:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5230:1;5209:23;;:9;:23;;;5201:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5285:47;5306:6;5314:9;5325:6;5285:20;:47::i;:::-;5345:21;5369:9;:17;5379:6;5369:17;;;;;;;;;;;;;;;;5345:41;;5422:6;5405:13;:23;;5397:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5543:6;5527:13;:22;5507:9;:17;5517:6;5507:17;;;;;;;;;;;;;;;:42;;;;5595:6;5571:9;:20;5581:9;5571:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5636:9;5619:35;;5628:6;5619:35;;;5647:6;5619:35;;;;;;:::i;:::-;;;;;;;;5667:46;5687:6;5695:9;5706:6;5667:19;:46::i;:::-;5109:612;4988:733;;;:::o;25223:1462::-;25262:23;25288:24;25306:4;25288:9;:24::i;:::-;25262:50;;25323:25;25385:18;;25351;;:52;;;;:::i;:::-;25323:80;;25414:12;25462:1;25443:15;:20;:46;;;;25488:1;25467:17;:22;25443:46;25439:85;;;25506:7;;;;;25439:85;25579:2;25558:18;;:23;;;;:::i;:::-;25540:15;:41;25536:115;;;25637:2;25616:18;;:23;;;;:::i;:::-;25598:41;;25536:115;25663:23;25776:1;25743:17;25708:18;;25690:15;:36;;;;:::i;:::-;25689:71;;;;:::i;:::-;:88;;;;:::i;:::-;25663:114;;25788:26;25817:36;25837:15;25817;:19;;:36;;;;:::i;:::-;25788:65;;25866:25;25894:21;25866:49;;25928:36;25945:18;25928:16;:36::i;:::-;25977:18;25998:44;26024:17;25998:21;:25;;:44;;;;:::i;:::-;25977:65;;26055:23;26081:81;26134:17;26081:34;26096:18;;26081:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;26055:107;;26175:23;26214:15;26201:10;:28;;;;:::i;:::-;26175:54;;26263:1;26242:18;:22;;;;26296:1;26275:18;:22;;;;26332:1;26314:15;:19;:42;;;;;26355:1;26337:15;:19;26314:42;26310:278;;;26373:46;26386:15;26403;26373:12;:46::i;:::-;26439:137;26472:18;26509:15;26543:18;;26439:137;;;;;;;;:::i;:::-;;;;;;;;26310:278;26622:15;;;;;;;;;;;26614:29;;26651:21;26614:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26600:77;;;;;25251:1434;;;;;;;;;25223:1462;:::o;8142:98::-;8200:7;8231:1;8227;:5;;;;:::i;:::-;8220:12;;8142:98;;;;:::o;8248:::-;8306:7;8337:1;8333;:5;;;;:::i;:::-;8326:12;;8248:98;;;;:::o;6524:125::-;;;;:::o;6657:124::-;;;;:::o;8036:98::-;8094:7;8125:1;8121;:5;;;;:::i;:::-;8114:12;;8036:98;;;;:::o;24336:503::-;24404:21;24442:1;24428:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24404:40;;24473:4;24455;24460:1;24455:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24499:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24489:4;24494:1;24489:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24534:62;24551:4;24566:15;24584:11;24534:8;:62::i;:::-;24635:15;:66;;;24716:11;24742:1;24758:4;24785;24805:15;24635:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24391:448;24336:503;:::o;24847:368::-;24930:62;24947:4;24962:15;24980:11;24930:8;:62::i;:::-;25005:15;:31;;;25044:9;25077:4;25097:11;25123:1;25139;14440:6;25181:15;25005:202;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24847:368;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:96::-;2681:7;2710:24;2728:5;2710:24;:::i;:::-;2699:35;;2644:96;;;:::o;2746:122::-;2819:24;2837:5;2819:24;:::i;:::-;2812:5;2809:35;2799:63;;2858:1;2855;2848:12;2799:63;2746:122;:::o;2874:139::-;2920:5;2958:6;2945:20;2936:29;;2974:33;3001:5;2974:33;:::i;:::-;2874:139;;;;:::o;3019:474::-;3087:6;3095;3144:2;3132:9;3123:7;3119:23;3115:32;3112:119;;;3150:79;;:::i;:::-;3112:119;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3019:474;;;;;:::o;3499:90::-;3533:7;3576:5;3569:13;3562:21;3551:32;;3499:90;;;:::o;3595:109::-;3676:21;3691:5;3676:21;:::i;:::-;3671:3;3664:34;3595:109;;:::o;3710:210::-;3797:4;3835:2;3824:9;3820:18;3812:26;;3848:65;3910:1;3899:9;3895:17;3886:6;3848:65;:::i;:::-;3710:210;;;;:::o;3926:60::-;3954:3;3975:5;3968:12;;3926:60;;;:::o;3992:142::-;4042:9;4075:53;4093:34;4102:24;4120:5;4102:24;:::i;:::-;4093:34;:::i;:::-;4075:53;:::i;:::-;4062:66;;3992:142;;;:::o;4140:126::-;4190:9;4223:37;4254:5;4223:37;:::i;:::-;4210:50;;4140:126;;;:::o;4272:153::-;4349:9;4382:37;4413:5;4382:37;:::i;:::-;4369:50;;4272:153;;;:::o;4431:185::-;4545:64;4603:5;4545:64;:::i;:::-;4540:3;4533:77;4431:185;;:::o;4622:276::-;4742:4;4780:2;4769:9;4765:18;4757:26;;4793:98;4888:1;4877:9;4873:17;4864:6;4793:98;:::i;:::-;4622:276;;;;:::o;4904:118::-;4991:24;5009:5;4991:24;:::i;:::-;4986:3;4979:37;4904:118;;:::o;5028:222::-;5121:4;5159:2;5148:9;5144:18;5136:26;;5172:71;5240:1;5229:9;5225:17;5216:6;5172:71;:::i;:::-;5028:222;;;;:::o;5256:619::-;5333:6;5341;5349;5398:2;5386:9;5377:7;5373:23;5369:32;5366:119;;;5404:79;;:::i;:::-;5366:119;5524:1;5549:53;5594:7;5585:6;5574:9;5570:22;5549:53;:::i;:::-;5539:63;;5495:117;5651:2;5677:53;5722:7;5713:6;5702:9;5698:22;5677:53;:::i;:::-;5667:63;;5622:118;5779:2;5805:53;5850:7;5841:6;5830:9;5826:22;5805:53;:::i;:::-;5795:63;;5750:118;5256:619;;;;;:::o;5881:118::-;5968:24;5986:5;5968:24;:::i;:::-;5963:3;5956:37;5881:118;;:::o;6005:222::-;6098:4;6136:2;6125:9;6121:18;6113:26;;6149:71;6217:1;6206:9;6202:17;6193:6;6149:71;:::i;:::-;6005:222;;;;:::o;6233:86::-;6268:7;6308:4;6301:5;6297:16;6286:27;;6233:86;;;:::o;6325:112::-;6408:22;6424:5;6408:22;:::i;:::-;6403:3;6396:35;6325:112;;:::o;6443:214::-;6532:4;6570:2;6559:9;6555:18;6547:26;;6583:67;6647:1;6636:9;6632:17;6623:6;6583:67;:::i;:::-;6443:214;;;;:::o;6663:329::-;6722:6;6771:2;6759:9;6750:7;6746:23;6742:32;6739:119;;;6777:79;;:::i;:::-;6739:119;6897:1;6922:53;6967:7;6958:6;6947:9;6943:22;6922:53;:::i;:::-;6912:63;;6868:117;6663:329;;;;:::o;6998:116::-;7068:21;7083:5;7068:21;:::i;:::-;7061:5;7058:32;7048:60;;7104:1;7101;7094:12;7048:60;6998:116;:::o;7120:133::-;7163:5;7201:6;7188:20;7179:29;;7217:30;7241:5;7217:30;:::i;:::-;7120:133;;;;:::o;7259:468::-;7324:6;7332;7381:2;7369:9;7360:7;7356:23;7352:32;7349:119;;;7387:79;;:::i;:::-;7349:119;7507:1;7532:53;7577:7;7568:6;7557:9;7553:22;7532:53;:::i;:::-;7522:63;;7478:117;7634:2;7660:50;7702:7;7693:6;7682:9;7678:22;7660:50;:::i;:::-;7650:60;;7605:115;7259:468;;;;;:::o;7733:117::-;7842:1;7839;7832:12;7856:117;7965:1;7962;7955:12;7979:117;8088:1;8085;8078:12;8119:568;8192:8;8202:6;8252:3;8245:4;8237:6;8233:17;8229:27;8219:122;;8260:79;;:::i;:::-;8219:122;8373:6;8360:20;8350:30;;8403:18;8395:6;8392:30;8389:117;;;8425:79;;:::i;:::-;8389:117;8539:4;8531:6;8527:17;8515:29;;8593:3;8585:4;8577:6;8573:17;8563:8;8559:32;8556:41;8553:128;;;8600:79;;:::i;:::-;8553:128;8119:568;;;;;:::o;8693:698::-;8785:6;8793;8801;8850:2;8838:9;8829:7;8825:23;8821:32;8818:119;;;8856:79;;:::i;:::-;8818:119;9004:1;8993:9;8989:17;8976:31;9034:18;9026:6;9023:30;9020:117;;;9056:79;;:::i;:::-;9020:117;9169:80;9241:7;9232:6;9221:9;9217:22;9169:80;:::i;:::-;9151:98;;;;8947:312;9298:2;9324:50;9366:7;9357:6;9346:9;9342:22;9324:50;:::i;:::-;9314:60;;9269:115;8693:698;;;;;:::o;9397:329::-;9456:6;9505:2;9493:9;9484:7;9480:23;9476:32;9473:119;;;9511:79;;:::i;:::-;9473:119;9631:1;9656:53;9701:7;9692:6;9681:9;9677:22;9656:53;:::i;:::-;9646:63;;9602:117;9397:329;;;;:::o;9732:474::-;9800:6;9808;9857:2;9845:9;9836:7;9832:23;9828:32;9825:119;;;9863:79;;:::i;:::-;9825:119;9983:1;10008:53;10053:7;10044:6;10033:9;10029:22;10008:53;:::i;:::-;9998:63;;9954:117;10110:2;10136:53;10181:7;10172:6;10161:9;10157:22;10136:53;:::i;:::-;10126:63;;10081:118;9732:474;;;;;:::o;10212:182::-;10352:34;10348:1;10340:6;10336:14;10329:58;10212:182;:::o;10400:366::-;10542:3;10563:67;10627:2;10622:3;10563:67;:::i;:::-;10556:74;;10639:93;10728:3;10639:93;:::i;:::-;10757:2;10752:3;10748:12;10741:19;;10400:366;;;:::o;10772:419::-;10938:4;10976:2;10965:9;10961:18;10953:26;;11025:9;11019:4;11015:20;11011:1;11000:9;10996:17;10989:47;11053:131;11179:4;11053:131;:::i;:::-;11045:139;;10772:419;;;:::o;11197:180::-;11245:77;11242:1;11235:88;11342:4;11339:1;11332:15;11366:4;11363:1;11356:15;11383:191;11423:3;11442:20;11460:1;11442:20;:::i;:::-;11437:25;;11476:20;11494:1;11476:20;:::i;:::-;11471:25;;11519:1;11516;11512:9;11505:16;;11540:3;11537:1;11534:10;11531:36;;;11547:18;;:::i;:::-;11531:36;11383:191;;;;:::o;11580:179::-;11720:31;11716:1;11708:6;11704:14;11697:55;11580:179;:::o;11765:366::-;11907:3;11928:67;11992:2;11987:3;11928:67;:::i;:::-;11921:74;;12004:93;12093:3;12004:93;:::i;:::-;12122:2;12117:3;12113:12;12106:19;;11765:366;;;:::o;12137:419::-;12303:4;12341:2;12330:9;12326:18;12318:26;;12390:9;12384:4;12380:20;12376:1;12365:9;12361:17;12354:47;12418:131;12544:4;12418:131;:::i;:::-;12410:139;;12137:419;;;:::o;12562:180::-;12610:77;12607:1;12600:88;12707:4;12704:1;12697:15;12731:4;12728:1;12721:15;12748:320;12792:6;12829:1;12823:4;12819:12;12809:22;;12876:1;12870:4;12866:12;12897:18;12887:81;;12953:4;12945:6;12941:17;12931:27;;12887:81;13015:2;13007:6;13004:14;12984:18;12981:38;12978:84;;13034:18;;:::i;:::-;12978:84;12799:269;12748:320;;;:::o;13074:227::-;13214:34;13210:1;13202:6;13198:14;13191:58;13283:10;13278:2;13270:6;13266:15;13259:35;13074:227;:::o;13307:366::-;13449:3;13470:67;13534:2;13529:3;13470:67;:::i;:::-;13463:74;;13546:93;13635:3;13546:93;:::i;:::-;13664:2;13659:3;13655:12;13648:19;;13307:366;;;:::o;13679:419::-;13845:4;13883:2;13872:9;13868:18;13860:26;;13932:9;13926:4;13922:20;13918:1;13907:9;13903:17;13896:47;13960:131;14086:4;13960:131;:::i;:::-;13952:139;;13679:419;;;:::o;14104:179::-;14244:31;14240:1;14232:6;14228:14;14221:55;14104:179;:::o;14289:366::-;14431:3;14452:67;14516:2;14511:3;14452:67;:::i;:::-;14445:74;;14528:93;14617:3;14528:93;:::i;:::-;14646:2;14641:3;14637:12;14630:19;;14289:366;;;:::o;14661:419::-;14827:4;14865:2;14854:9;14850:18;14842:26;;14914:9;14908:4;14904:20;14900:1;14889:9;14885:17;14878:47;14942:131;15068:4;14942:131;:::i;:::-;14934:139;;14661:419;;;:::o;15086:410::-;15126:7;15149:20;15167:1;15149:20;:::i;:::-;15144:25;;15183:20;15201:1;15183:20;:::i;:::-;15178:25;;15238:1;15235;15231:9;15260:30;15278:11;15260:30;:::i;:::-;15249:41;;15439:1;15430:7;15426:15;15423:1;15420:22;15400:1;15393:9;15373:83;15350:139;;15469:18;;:::i;:::-;15350:139;15134:362;15086:410;;;;:::o;15502:180::-;15550:77;15547:1;15540:88;15647:4;15644:1;15637:15;15671:4;15668:1;15661:15;15688:185;15728:1;15745:20;15763:1;15745:20;:::i;:::-;15740:25;;15779:20;15797:1;15779:20;:::i;:::-;15774:25;;15818:1;15808:35;;15823:18;;:::i;:::-;15808:35;15865:1;15862;15858:9;15853:14;;15688:185;;;;:::o;15879:220::-;16019:34;16015:1;16007:6;16003:14;15996:58;16088:3;16083:2;16075:6;16071:15;16064:28;15879:220;:::o;16105:366::-;16247:3;16268:67;16332:2;16327:3;16268:67;:::i;:::-;16261:74;;16344:93;16433:3;16344:93;:::i;:::-;16462:2;16457:3;16453:12;16446:19;;16105:366;;;:::o;16477:419::-;16643:4;16681:2;16670:9;16666:18;16658:26;;16730:9;16724:4;16720:20;16716:1;16705:9;16701:17;16694:47;16758:131;16884:4;16758:131;:::i;:::-;16750:139;;16477:419;;;:::o;16902:223::-;17042:34;17038:1;17030:6;17026:14;17019:58;17111:6;17106:2;17098:6;17094:15;17087:31;16902:223;:::o;17131:366::-;17273:3;17294:67;17358:2;17353:3;17294:67;:::i;:::-;17287:74;;17370:93;17459:3;17370:93;:::i;:::-;17488:2;17483:3;17479:12;17472:19;;17131:366;;;:::o;17503:419::-;17669:4;17707:2;17696:9;17692:18;17684:26;;17756:9;17750:4;17746:20;17742:1;17731:9;17727:17;17720:47;17784:131;17910:4;17784:131;:::i;:::-;17776:139;;17503:419;;;:::o;17928:244::-;18068:34;18064:1;18056:6;18052:14;18045:58;18137:27;18132:2;18124:6;18120:15;18113:52;17928:244;:::o;18178:366::-;18320:3;18341:67;18405:2;18400:3;18341:67;:::i;:::-;18334:74;;18417:93;18506:3;18417:93;:::i;:::-;18535:2;18530:3;18526:12;18519:19;;18178:366;;;:::o;18550:419::-;18716:4;18754:2;18743:9;18739:18;18731:26;;18803:9;18797:4;18793:20;18789:1;18778:9;18774:17;18767:47;18831:131;18957:4;18831:131;:::i;:::-;18823:139;;18550:419;;;:::o;18975:224::-;19115:34;19111:1;19103:6;19099:14;19092:58;19184:7;19179:2;19171:6;19167:15;19160:32;18975:224;:::o;19205:366::-;19347:3;19368:67;19432:2;19427:3;19368:67;:::i;:::-;19361:74;;19444:93;19533:3;19444:93;:::i;:::-;19562:2;19557:3;19553:12;19546:19;;19205:366;;;:::o;19577:419::-;19743:4;19781:2;19770:9;19766:18;19758:26;;19830:9;19824:4;19820:20;19816:1;19805:9;19801:17;19794:47;19858:131;19984:4;19858:131;:::i;:::-;19850:139;;19577:419;;;:::o;20002:180::-;20050:77;20047:1;20040:88;20147:4;20144:1;20137:15;20171:4;20168:1;20161:15;20188:233;20227:3;20250:24;20268:5;20250:24;:::i;:::-;20241:33;;20296:66;20289:5;20286:77;20283:103;;20366:18;;:::i;:::-;20283:103;20413:1;20406:5;20402:13;20395:20;;20188:233;;;:::o;20427:240::-;20567:34;20563:1;20555:6;20551:14;20544:58;20636:23;20631:2;20623:6;20619:15;20612:48;20427:240;:::o;20673:366::-;20815:3;20836:67;20900:2;20895:3;20836:67;:::i;:::-;20829:74;;20912:93;21001:3;20912:93;:::i;:::-;21030:2;21025:3;21021:12;21014:19;;20673:366;;;:::o;21045:419::-;21211:4;21249:2;21238:9;21234:18;21226:26;;21298:9;21292:4;21288:20;21284:1;21273:9;21269:17;21262:47;21326:131;21452:4;21326:131;:::i;:::-;21318:139;;21045:419;;;:::o;21470:239::-;21610:34;21606:1;21598:6;21594:14;21587:58;21679:22;21674:2;21666:6;21662:15;21655:47;21470:239;:::o;21715:366::-;21857:3;21878:67;21942:2;21937:3;21878:67;:::i;:::-;21871:74;;21954:93;22043:3;21954:93;:::i;:::-;22072:2;22067:3;22063:12;22056:19;;21715:366;;;:::o;22087:419::-;22253:4;22291:2;22280:9;22276:18;22268:26;;22340:9;22334:4;22330:20;22326:1;22315:9;22311:17;22304:47;22368:131;22494:4;22368:131;:::i;:::-;22360:139;;22087:419;;;:::o;22512:225::-;22652:34;22648:1;22640:6;22636:14;22629:58;22721:8;22716:2;22708:6;22704:15;22697:33;22512:225;:::o;22743:366::-;22885:3;22906:67;22970:2;22965:3;22906:67;:::i;:::-;22899:74;;22982:93;23071:3;22982:93;:::i;:::-;23100:2;23095:3;23091:12;23084:19;;22743:366;;;:::o;23115:419::-;23281:4;23319:2;23308:9;23304:18;23296:26;;23368:9;23362:4;23358:20;23354:1;23343:9;23339:17;23332:47;23396:131;23522:4;23396:131;:::i;:::-;23388:139;;23115:419;;;:::o;23540:223::-;23680:34;23676:1;23668:6;23664:14;23657:58;23749:6;23744:2;23736:6;23732:15;23725:31;23540:223;:::o;23769:366::-;23911:3;23932:67;23996:2;23991:3;23932:67;:::i;:::-;23925:74;;24008:93;24097:3;24008:93;:::i;:::-;24126:2;24121:3;24117:12;24110:19;;23769:366;;;:::o;24141:419::-;24307:4;24345:2;24334:9;24330:18;24322:26;;24394:9;24388:4;24384:20;24380:1;24369:9;24365:17;24358:47;24422:131;24548:4;24422:131;:::i;:::-;24414:139;;24141:419;;;:::o;24566:221::-;24706:34;24702:1;24694:6;24690:14;24683:58;24775:4;24770:2;24762:6;24758:15;24751:29;24566:221;:::o;24793:366::-;24935:3;24956:67;25020:2;25015:3;24956:67;:::i;:::-;24949:74;;25032:93;25121:3;25032:93;:::i;:::-;25150:2;25145:3;25141:12;25134:19;;24793:366;;;:::o;25165:419::-;25331:4;25369:2;25358:9;25354:18;25346:26;;25418:9;25412:4;25408:20;25404:1;25393:9;25389:17;25382:47;25446:131;25572:4;25446:131;:::i;:::-;25438:139;;25165:419;;;:::o;25590:224::-;25730:34;25726:1;25718:6;25714:14;25707:58;25799:7;25794:2;25786:6;25782:15;25775:32;25590:224;:::o;25820:366::-;25962:3;25983:67;26047:2;26042:3;25983:67;:::i;:::-;25976:74;;26059:93;26148:3;26059:93;:::i;:::-;26177:2;26172:3;26168:12;26161:19;;25820:366;;;:::o;26192:419::-;26358:4;26396:2;26385:9;26381:18;26373:26;;26445:9;26439:4;26435:20;26431:1;26420:9;26416:17;26409:47;26473:131;26599:4;26473:131;:::i;:::-;26465:139;;26192:419;;;:::o;26617:222::-;26757:34;26753:1;26745:6;26741:14;26734:58;26826:5;26821:2;26813:6;26809:15;26802:30;26617:222;:::o;26845:366::-;26987:3;27008:67;27072:2;27067:3;27008:67;:::i;:::-;27001:74;;27084:93;27173:3;27084:93;:::i;:::-;27202:2;27197:3;27193:12;27186:19;;26845:366;;;:::o;27217:419::-;27383:4;27421:2;27410:9;27406:18;27398:26;;27470:9;27464:4;27460:20;27456:1;27445:9;27441:17;27434:47;27498:131;27624:4;27498:131;:::i;:::-;27490:139;;27217:419;;;:::o;27642:172::-;27782:24;27778:1;27770:6;27766:14;27759:48;27642:172;:::o;27820:366::-;27962:3;27983:67;28047:2;28042:3;27983:67;:::i;:::-;27976:74;;28059:93;28148:3;28059:93;:::i;:::-;28177:2;28172:3;28168:12;28161:19;;27820:366;;;:::o;28192:419::-;28358:4;28396:2;28385:9;28381:18;28373:26;;28445:9;28439:4;28435:20;28431:1;28420:9;28416:17;28409:47;28473:131;28599:4;28473:131;:::i;:::-;28465:139;;28192:419;;;:::o;28617:240::-;28757:34;28753:1;28745:6;28741:14;28734:58;28826:23;28821:2;28813:6;28809:15;28802:48;28617:240;:::o;28863:366::-;29005:3;29026:67;29090:2;29085:3;29026:67;:::i;:::-;29019:74;;29102:93;29191:3;29102:93;:::i;:::-;29220:2;29215:3;29211:12;29204:19;;28863:366;;;:::o;29235:419::-;29401:4;29439:2;29428:9;29424:18;29416:26;;29488:9;29482:4;29478:20;29474:1;29463:9;29459:17;29452:47;29516:131;29642:4;29516:131;:::i;:::-;29508:139;;29235:419;;;:::o;29660:169::-;29800:21;29796:1;29788:6;29784:14;29777:45;29660:169;:::o;29835:366::-;29977:3;29998:67;30062:2;30057:3;29998:67;:::i;:::-;29991:74;;30074:93;30163:3;30074:93;:::i;:::-;30192:2;30187:3;30183:12;30176:19;;29835:366;;;:::o;30207:419::-;30373:4;30411:2;30400:9;30396:18;30388:26;;30460:9;30454:4;30450:20;30446:1;30435:9;30431:17;30424:47;30488:131;30614:4;30488:131;:::i;:::-;30480:139;;30207:419;;;:::o;30632:241::-;30772:34;30768:1;30760:6;30756:14;30749:58;30841:24;30836:2;30828:6;30824:15;30817:49;30632:241;:::o;30879:366::-;31021:3;31042:67;31106:2;31101:3;31042:67;:::i;:::-;31035:74;;31118:93;31207:3;31118:93;:::i;:::-;31236:2;31231:3;31227:12;31220:19;;30879:366;;;:::o;31251:419::-;31417:4;31455:2;31444:9;31440:18;31432:26;;31504:9;31498:4;31494:20;31490:1;31479:9;31475:17;31468:47;31532:131;31658:4;31532:131;:::i;:::-;31524:139;;31251:419;;;:::o;31676:194::-;31716:4;31736:20;31754:1;31736:20;:::i;:::-;31731:25;;31770:20;31788:1;31770:20;:::i;:::-;31765:25;;31814:1;31811;31807:9;31799:17;;31838:1;31832:4;31829:11;31826:37;;;31843:18;;:::i;:::-;31826:37;31676:194;;;;:::o;31876:225::-;32016:34;32012:1;32004:6;32000:14;31993:58;32085:8;32080:2;32072:6;32068:15;32061:33;31876:225;:::o;32107:366::-;32249:3;32270:67;32334:2;32329:3;32270:67;:::i;:::-;32263:74;;32346:93;32435:3;32346:93;:::i;:::-;32464:2;32459:3;32455:12;32448:19;;32107:366;;;:::o;32479:419::-;32645:4;32683:2;32672:9;32668:18;32660:26;;32732:9;32726:4;32722:20;32718:1;32707:9;32703:17;32696:47;32760:131;32886:4;32760:131;:::i;:::-;32752:139;;32479:419;;;:::o;32904:442::-;33053:4;33091:2;33080:9;33076:18;33068:26;;33104:71;33172:1;33161:9;33157:17;33148:6;33104:71;:::i;:::-;33185:72;33253:2;33242:9;33238:18;33229:6;33185:72;:::i;:::-;33267;33335:2;33324:9;33320:18;33311:6;33267:72;:::i;:::-;32904:442;;;;;;:::o;33352:147::-;33453:11;33490:3;33475:18;;33352:147;;;;:::o;33505:114::-;;:::o;33625:398::-;33784:3;33805:83;33886:1;33881:3;33805:83;:::i;:::-;33798:90;;33897:93;33986:3;33897:93;:::i;:::-;34015:1;34010:3;34006:11;33999:18;;33625:398;;;:::o;34029:379::-;34213:3;34235:147;34378:3;34235:147;:::i;:::-;34228:154;;34399:3;34392:10;;34029:379;;;:::o;34414:180::-;34462:77;34459:1;34452:88;34559:4;34556:1;34549:15;34583:4;34580:1;34573:15;34600:143;34657:5;34688:6;34682:13;34673:22;;34704:33;34731:5;34704:33;:::i;:::-;34600:143;;;;:::o;34749:351::-;34819:6;34868:2;34856:9;34847:7;34843:23;34839:32;34836:119;;;34874:79;;:::i;:::-;34836:119;34994:1;35019:64;35075:7;35066:6;35055:9;35051:22;35019:64;:::i;:::-;35009:74;;34965:128;34749:351;;;;:::o;35106:85::-;35151:7;35180:5;35169:16;;35106:85;;;:::o;35197:158::-;35255:9;35288:61;35306:42;35315:32;35341:5;35315:32;:::i;:::-;35306:42;:::i;:::-;35288:61;:::i;:::-;35275:74;;35197:158;;;:::o;35361:147::-;35456:45;35495:5;35456:45;:::i;:::-;35451:3;35444:58;35361:147;;:::o;35514:114::-;35581:6;35615:5;35609:12;35599:22;;35514:114;;;:::o;35634:184::-;35733:11;35767:6;35762:3;35755:19;35807:4;35802:3;35798:14;35783:29;;35634:184;;;;:::o;35824:132::-;35891:4;35914:3;35906:11;;35944:4;35939:3;35935:14;35927:22;;35824:132;;;:::o;35962:108::-;36039:24;36057:5;36039:24;:::i;:::-;36034:3;36027:37;35962:108;;:::o;36076:179::-;36145:10;36166:46;36208:3;36200:6;36166:46;:::i;:::-;36244:4;36239:3;36235:14;36221:28;;36076:179;;;;:::o;36261:113::-;36331:4;36363;36358:3;36354:14;36346:22;;36261:113;;;:::o;36410:732::-;36529:3;36558:54;36606:5;36558:54;:::i;:::-;36628:86;36707:6;36702:3;36628:86;:::i;:::-;36621:93;;36738:56;36788:5;36738:56;:::i;:::-;36817:7;36848:1;36833:284;36858:6;36855:1;36852:13;36833:284;;;36934:6;36928:13;36961:63;37020:3;37005:13;36961:63;:::i;:::-;36954:70;;37047:60;37100:6;37047:60;:::i;:::-;37037:70;;36893:224;36880:1;36877;36873:9;36868:14;;36833:284;;;36837:14;37133:3;37126:10;;36534:608;;;36410:732;;;;:::o;37148:831::-;37411:4;37449:3;37438:9;37434:19;37426:27;;37463:71;37531:1;37520:9;37516:17;37507:6;37463:71;:::i;:::-;37544:80;37620:2;37609:9;37605:18;37596:6;37544:80;:::i;:::-;37671:9;37665:4;37661:20;37656:2;37645:9;37641:18;37634:48;37699:108;37802:4;37793:6;37699:108;:::i;:::-;37691:116;;37817:72;37885:2;37874:9;37870:18;37861:6;37817:72;:::i;:::-;37899:73;37967:3;37956:9;37952:19;37943:6;37899:73;:::i;:::-;37148:831;;;;;;;;:::o;37985:807::-;38234:4;38272:3;38261:9;38257:19;38249:27;;38286:71;38354:1;38343:9;38339:17;38330:6;38286:71;:::i;:::-;38367:72;38435:2;38424:9;38420:18;38411:6;38367:72;:::i;:::-;38449:80;38525:2;38514:9;38510:18;38501:6;38449:80;:::i;:::-;38539;38615:2;38604:9;38600:18;38591:6;38539:80;:::i;:::-;38629:73;38697:3;38686:9;38682:19;38673:6;38629:73;:::i;:::-;38712;38780:3;38769:9;38765:19;38756:6;38712:73;:::i;:::-;37985:807;;;;;;;;;:::o;38798:143::-;38855:5;38886:6;38880:13;38871:22;;38902:33;38929:5;38902:33;:::i;:::-;38798:143;;;;:::o;38947:663::-;39035:6;39043;39051;39100:2;39088:9;39079:7;39075:23;39071:32;39068:119;;;39106:79;;:::i;:::-;39068:119;39226:1;39251:64;39307:7;39298:6;39287:9;39283:22;39251:64;:::i;:::-;39241:74;;39197:128;39364:2;39390:64;39446:7;39437:6;39426:9;39422:22;39390:64;:::i;:::-;39380:74;;39335:129;39503:2;39529:64;39585:7;39576:6;39565:9;39561:22;39529:64;:::i;:::-;39519:74;;39474:129;38947:663;;;;;:::o

Swarm Source

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