ETH Price: $2,517.11 (+2.57%)
Gas: 0.63 Gwei

Token

Saturn (SATURN)
 

Overview

Max Total Supply

7,000,000,000 SATURN

Holders

136

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000002581698622 SATURN

Value
$0.00
0x775c53541e7ebb1504d4a31ac53ea07c8aaf1b42
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:
Saturn

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-24
*/

// SPDX-License-Identifier: MIT

// https://t.me/saturnfinancial
// https://twitter.com/saturnfinancial
// https://saturn.financial

pragma solidity 0.8.10;

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 {
        _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 name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    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);
}

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

    uint256 private _totalSupply;
    uint8 private _decimals; 
    string private _name;
    string private _symbol;

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

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

    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 _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

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

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

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

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

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

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

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract Saturn is ERC20, Ownable {
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;

    address public developmentReceiver;
    address public marketingReceiver; 

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

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

    uint256 public buyTotalFees;
    uint256 public buyLiquidityFee;
    uint256 public buyMarketingFee;
    uint256 public buyDevelopmentFee; 

    uint256 public sellTotalFees;
    uint256 public sellLiquidityFee;
    uint256 public sellMarketingFee;
    uint256 public sellDevelopmentFee; 

	uint256 public liquidityTokens;
    uint256 public marketingTokens;
    uint256 public developmentTokens;

    uint8 private DECIMALS = 18;

    // exclude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public automatedMarketMakerPairs;

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

    constructor() ERC20("Saturn", "SATURN", DECIMALS) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        marketingReceiver = address(0x249c9FCEa38F406b42bFB59c38Fa6A1442dC12E2);
        developmentReceiver = address(0x0368999f5d33bc509E955a3d11D6a62FE87f1F97);  

        uint256 _buyLiquidityFee = 1;
        uint256 _buyMarketingFee = 2;
        uint256 _buyDevelopmentFee = 1;

        uint256 _sellLiquidityFee = 1;
        uint256 _sellMarketingFee = 2;
        uint256 _sellDevelopmentFee = 1;

        uint256 totalSupply = 7 * 1e9 * 10**DECIMALS;

        maxTransactionAmount = totalSupply * 2 / 100;
        maxWallet = totalSupply * 2 / 100;

        swapTokensAtAmount = (totalSupply * 10) / 10000; 

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

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

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

        sellLiquidityFee = _sellLiquidityFee;
        sellMarketingFee = _sellMarketingFee;
        sellDevelopmentFee = _sellDevelopmentFee; 
        sellTotalFees = sellLiquidityFee + sellMarketingFee + sellDevelopmentFee;

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

    // once enabled, can never be turned off
    function launch() external onlyOwner {
        tradingActive = true;
        swapBack = true;
    }

    function setFees(
        uint8 _buyLiquidityFee,
        uint8 _buyMarketingFee,
        uint8 _buyDevelopmentFee,
        uint8 _sellLiquidityFee,
        uint8 _sellMarketingFee,
        uint8 _sellDevelopmentFee
        ) external onlyOwner {

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

        sellLiquidityFee = _sellLiquidityFee;
        sellMarketingFee = _sellMarketingFee;
        sellDevelopmentFee = _sellDevelopmentFee; 
        sellTotalFees = sellLiquidityFee + sellMarketingFee + sellDevelopmentFee;
    } 

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    function adjustLimits(uint32 newMaxTx, uint32 newMaxWallet) external onlyOwner {
        maxTransactionAmount = newMaxTx; 
        maxWallet = newMaxWallet; 
    }

    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 excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapBack(bool on) external onlyOwner {
        swapBack = on;
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

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

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

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

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            doSwapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount * sellTotalFees / 100;
                liquidityTokens += (fees * sellLiquidityFee) / sellTotalFees;
                marketingTokens += (fees * sellMarketingFee) / sellTotalFees;  
                developmentTokens += (fees * sellDevelopmentFee) / sellTotalFees;              
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                liquidityTokens += (fees * buyLiquidityFee) / buyTotalFees;
                marketingTokens += (fees * buyMarketingFee) / buyTotalFees;
                developmentTokens += (fees * buyDevelopmentFee) / buyTotalFees; 
            }

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

            amount -= fees;
        }

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

    function swapTokens(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 token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function doSwapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = liquidityTokens + marketingTokens + developmentTokens;
        bool success;

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

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

        // Halve the amount of liquidity tokens
        uint256 tokensForLiquidity = (contractBalance * liquidityTokens) / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance - tokensForLiquidity;

        uint256 initialETHBalance = address(this).balance;

        swapTokens(amountToSwapForETH);

        uint256 ethBalance = address(this).balance - initialETHBalance;
	
        uint256 ethMarketing = ethBalance * marketingTokens / totalTokensToSwap;
        uint256 ethDevelopment = ethBalance * developmentTokens / totalTokensToSwap;

        uint256 ethLiquidity = ethBalance - ethMarketing - ethDevelopment;

        liquidityTokens = 0;
        marketingTokens = 0;
        developmentTokens = 0; 

        if (tokensForLiquidity > 0 && ethLiquidity > 0) {
            addLiquidity(tokensForLiquidity, ethLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethLiquidity,
                tokensForLiquidity
            );
        }
        //there will be no leftover eth in the contract 
        (success, ) = address(marketingReceiver).call{value: ethMarketing}("");
        (success, ) = address(developmentReceiver).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"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"newMaxTx","type":"uint32"},{"internalType":"uint32","name":"newMaxWallet","type":"uint32"}],"name":"adjustLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"developmentReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developmentTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_buyLiquidityFee","type":"uint8"},{"internalType":"uint8","name":"_buyMarketingFee","type":"uint8"},{"internalType":"uint8","name":"_buyDevelopmentFee","type":"uint8"},{"internalType":"uint8","name":"_sellLiquidityFee","type":"uint8"},{"internalType":"uint8","name":"_sellMarketingFee","type":"uint8"},{"internalType":"uint8","name":"_sellDevelopmentFee","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapBack","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":"bool","name":"on","type":"bool"}],"name":"updateSwapBack","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"}]

60c06040526001600c60006101000a81548160ff0219169083151502179055506000600c60016101000a81548160ff0219169083151502179055506000600c60026101000a81548160ff0219169083151502179055506012601860006101000a81548160ff021916908360ff1602179055503480156200007e57600080fd5b506040518060400160405280600681526020017f53617475726e00000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f53415455524e0000000000000000000000000000000000000000000000000000815250601860009054906101000a900460ff1682600490805190602001906200011392919062000b65565b5081600590805190602001906200012c92919062000b65565b5080600360006101000a81548160ff021916908360ff1602179055505050506200016b6200015f6200062560201b60201c565b6200062d60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905073249c9fcea38f406b42bfb59c38fa6a1442dc12e2600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730368999f5d33bc509e955a3d11d6a62fe87f1f97600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600190506000600290506000600190506000600190506000600290506000600190506000601860009054906101000a900460ff16600a62000272919062000daf565b6401a13b860062000284919062000e00565b9050606460028262000297919062000e00565b620002a3919062000e90565b6009819055506064600282620002ba919062000e00565b620002c6919062000e90565b600b81905550612710600a82620002de919062000e00565b620002ea919062000e90565b600a8190555062000303886001620006f360201b60201c565b8773ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508773ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000383573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a9919062000f32565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308a73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000411573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000437919062000f32565b6040518363ffffffff1660e01b81526004016200045692919062000f75565b6020604051808303816000875af115801562000476573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049c919062000f32565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620004e460a0516001620006f360201b60201c565b620004f960a0516001620007dd60201b60201c565b86600e8190555085600f8190555084601081905550601054600f54600e5462000523919062000fa2565b6200052f919062000fa2565b600d819055508360128190555082601381905550816014819055506014546013546012546200055f919062000fa2565b6200056b919062000fa2565b60118190555062000593620005856200087e60201b60201c565b6001620008a860201b60201c565b620005a6306001620008a860201b60201c565b620005bb61dead6001620008a860201b60201c565b620005dd620005cf6200087e60201b60201c565b6001620006f360201b60201c565b620005f0306001620006f360201b60201c565b6200060561dead6001620006f360201b60201c565b620006173382620009e260201b60201c565b5050505050505050620011c1565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620007036200062560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007296200087e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000782576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007799062001060565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008b86200062560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008de6200087e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000937576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200092e9062001060565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009d691906200109f565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a4c906200110c565b60405180910390fd5b62000a696000838362000b5b60201b60201c565b806002600082825462000a7d919062000fa2565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000ad4919062000fa2565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b3b91906200113f565b60405180910390a362000b576000838362000b6060201b60201c565b5050565b505050565b505050565b82805462000b73906200118b565b90600052602060002090601f01602090048101928262000b97576000855562000be3565b82601f1062000bb257805160ff191683800117855562000be3565b8280016001018555821562000be3579182015b8281111562000be257825182559160200191906001019062000bc5565b5b50905062000bf2919062000bf6565b5090565b5b8082111562000c1157600081600090555060010162000bf7565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000ca35780860481111562000c7b5762000c7a62000c15565b5b600185161562000c8b5780820291505b808102905062000c9b8562000c44565b945062000c5b565b94509492505050565b60008262000cbe576001905062000d91565b8162000cce576000905062000d91565b816001811462000ce7576002811462000cf25762000d28565b600191505062000d91565b60ff84111562000d075762000d0662000c15565b5b8360020a91508482111562000d215762000d2062000c15565b5b5062000d91565b5060208310610133831016604e8410600b841016171562000d625782820a90508381111562000d5c5762000d5b62000c15565b5b62000d91565b62000d71848484600162000c51565b9250905081840481111562000d8b5762000d8a62000c15565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000dbc8262000d98565b915062000dc98362000da2565b925062000df87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000cac565b905092915050565b600062000e0d8262000d98565b915062000e1a8362000d98565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e565762000e5562000c15565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e9d8262000d98565b915062000eaa8362000d98565b92508262000ebd5762000ebc62000e61565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000efa8262000ecd565b9050919050565b62000f0c8162000eed565b811462000f1857600080fd5b50565b60008151905062000f2c8162000f01565b92915050565b60006020828403121562000f4b5762000f4a62000ec8565b5b600062000f5b8482850162000f1b565b91505092915050565b62000f6f8162000eed565b82525050565b600060408201905062000f8c600083018562000f64565b62000f9b602083018462000f64565b9392505050565b600062000faf8262000d98565b915062000fbc8362000d98565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000ff45762000ff362000c15565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200104860208362000fff565b9150620010558262001010565b602082019050919050565b600060208201905081810360008301526200107b8162001039565b9050919050565b60008115159050919050565b620010998162001082565b82525050565b6000602082019050620010b660008301846200108e565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620010f4601f8362000fff565b91506200110182620010bc565b602082019050919050565b600060208201905081810360008301526200112781620010e5565b9050919050565b620011398162000d98565b82525050565b60006020820190506200115660008301846200112e565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620011a457607f821691505b60208210811415620011bb57620011ba6200115c565b5b50919050565b60805160a05161452e6200121160003960008181610e82015261137e015260008181610c9301528181612f1901528181612ffa01528181613021015281816130bd01526130e4015261452e6000f3fe60806040526004361061028c5760003560e01c80638b27306d1161015a578063c0246668116100c1578063e2f456051161007a578063e2f4560514610a0f578063f11a24d314610a3a578063f2fde38b14610a65578063f389633d14610a8e578063f637434214610ab7578063f8b45b0514610ae257610293565b8063c0246668146108ed578063c8c8ebe414610916578063d257b34f14610941578063d85ba0631461097e578063d8b3449b146109a9578063dd62ed3e146109d257610293565b8063a5949bcf11610113578063a5949bcf146107c7578063a9059cbb146107f2578063ad3429be1461082f578063b20414111461085a578063b62496f514610885578063bbc0c742146108c257610293565b80638b27306d146106b55780638da5cb5b146106e0578063921369131461070b57806395d89b41146107365780639a7a23d614610761578063a457c2d71461078a57610293565b80634a62bb65116101fe57806370a08231116101b757806370a08231146105b9578063715018a6146105f657806371e658401461060d578063751039fc146106365780637571336a146106615780637bce5a041461068a57610293565b80634a62bb65146104a55780634b8ce602146104d05780634fbee193146104fb578063593173c1146105385780636a486a8e146105635780636ac5eeee1461058e57610293565b806318160ddd1161025057806318160ddd1461037f57806318a94cf1146103aa57806323b872dd146103d5578063313ce56714610412578063395093511461043d57806349bd5a5e1461047a57610293565b806301339c211461029857806306fdde03146102af578063095ea7b3146102da57806310d5de53146103175780631694505e1461035457610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610b0d565b005b3480156102bb57600080fd5b506102c4610bc1565b6040516102d1919061324c565b60405180910390f35b3480156102e657600080fd5b5061030160048036038101906102fc9190613307565b610c53565b60405161030e9190613362565b60405180910390f35b34801561032357600080fd5b5061033e6004803603810190610339919061337d565b610c71565b60405161034b9190613362565b60405180910390f35b34801561036057600080fd5b50610369610c91565b6040516103769190613409565b60405180910390f35b34801561038b57600080fd5b50610394610cb5565b6040516103a19190613433565b60405180910390f35b3480156103b657600080fd5b506103bf610cbf565b6040516103cc9190613433565b60405180910390f35b3480156103e157600080fd5b506103fc60048036038101906103f7919061344e565b610cc5565b6040516104099190613362565b60405180910390f35b34801561041e57600080fd5b50610427610dbd565b60405161043491906134bd565b60405180910390f35b34801561044957600080fd5b50610464600480360381019061045f9190613307565b610dd4565b6040516104719190613362565b60405180910390f35b34801561048657600080fd5b5061048f610e80565b60405161049c91906134e7565b60405180910390f35b3480156104b157600080fd5b506104ba610ea4565b6040516104c79190613362565b60405180910390f35b3480156104dc57600080fd5b506104e5610eb7565b6040516104f29190613433565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d919061337d565b610ebd565b60405161052f9190613362565b60405180910390f35b34801561054457600080fd5b5061054d610f13565b60405161055a91906134e7565b60405180910390f35b34801561056f57600080fd5b50610578610f39565b6040516105859190613433565b60405180910390f35b34801561059a57600080fd5b506105a3610f3f565b6040516105b09190613362565b60405180910390f35b3480156105c557600080fd5b506105e060048036038101906105db919061337d565b610f52565b6040516105ed9190613433565b60405180910390f35b34801561060257600080fd5b5061060b610f9a565b005b34801561061957600080fd5b50610634600480360381019061062f919061352e565b611022565b005b34801561064257600080fd5b5061064b6110bb565b6040516106589190613362565b60405180910390f35b34801561066d57600080fd5b506106886004803603810190610683919061355b565b61115b565b005b34801561069657600080fd5b5061069f611232565b6040516106ac9190613433565b60405180910390f35b3480156106c157600080fd5b506106ca611238565b6040516106d79190613433565b60405180910390f35b3480156106ec57600080fd5b506106f561123e565b60405161070291906134e7565b60405180910390f35b34801561071757600080fd5b50610720611268565b60405161072d9190613433565b60405180910390f35b34801561074257600080fd5b5061074b61126e565b604051610758919061324c565b60405180910390f35b34801561076d57600080fd5b506107886004803603810190610783919061355b565b611300565b005b34801561079657600080fd5b506107b160048036038101906107ac9190613307565b611419565b6040516107be9190613362565b60405180910390f35b3480156107d357600080fd5b506107dc611504565b6040516107e991906134e7565b60405180910390f35b3480156107fe57600080fd5b5061081960048036038101906108149190613307565b61152a565b6040516108269190613362565b60405180910390f35b34801561083b57600080fd5b50610844611548565b6040516108519190613433565b60405180910390f35b34801561086657600080fd5b5061086f61154e565b60405161087c9190613433565b60405180910390f35b34801561089157600080fd5b506108ac60048036038101906108a7919061337d565b611554565b6040516108b99190613362565b60405180910390f35b3480156108ce57600080fd5b506108d7611574565b6040516108e49190613362565b60405180910390f35b3480156108f957600080fd5b50610914600480360381019061090f919061355b565b611587565b005b34801561092257600080fd5b5061092b6116ac565b6040516109389190613433565b60405180910390f35b34801561094d57600080fd5b506109686004803603810190610963919061359b565b6116b2565b6040516109759190613362565b60405180910390f35b34801561098a57600080fd5b50610993611807565b6040516109a09190613433565b60405180910390f35b3480156109b557600080fd5b506109d060048036038101906109cb9190613604565b61180d565b005b3480156109de57600080fd5b506109f960048036038101906109f49190613644565b6118a7565b604051610a069190613433565b60405180910390f35b348015610a1b57600080fd5b50610a2461192e565b604051610a319190613433565b60405180910390f35b348015610a4657600080fd5b50610a4f611934565b604051610a5c9190613433565b60405180910390f35b348015610a7157600080fd5b50610a8c6004803603810190610a87919061337d565b61193a565b005b348015610a9a57600080fd5b50610ab56004803603810190610ab091906136b0565b611a32565b005b348015610ac357600080fd5b50610acc611b38565b604051610ad99190613433565b60405180910390f35b348015610aee57600080fd5b50610af7611b3e565b604051610b049190613433565b60405180910390f35b610b15611b44565b73ffffffffffffffffffffffffffffffffffffffff16610b3361123e565b73ffffffffffffffffffffffffffffffffffffffff1614610b89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8090613789565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff021916908315150217905550565b606060048054610bd0906137d8565b80601f0160208091040260200160405190810160405280929190818152602001828054610bfc906137d8565b8015610c495780601f10610c1e57610100808354040283529160200191610c49565b820191906000526020600020905b815481529060010190602001808311610c2c57829003601f168201915b5050505050905090565b6000610c67610c60611b44565b8484611b4c565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60145481565b6000610cd2848484611d17565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d1d611b44565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d949061387c565b60405180910390fd5b610db185610da9611b44565b858403611b4c565b60019150509392505050565b6000600360009054906101000a900460ff16905090565b6000610e76610de1611b44565b848460016000610def611b44565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e7191906138cb565b611b4c565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600c60009054906101000a900460ff1681565b60155481565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600c60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fa2611b44565b73ffffffffffffffffffffffffffffffffffffffff16610fc061123e565b73ffffffffffffffffffffffffffffffffffffffff1614611016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100d90613789565b60405180910390fd5b61102060006127cd565b565b61102a611b44565b73ffffffffffffffffffffffffffffffffffffffff1661104861123e565b73ffffffffffffffffffffffffffffffffffffffff161461109e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109590613789565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b60006110c5611b44565b73ffffffffffffffffffffffffffffffffffffffff166110e361123e565b73ffffffffffffffffffffffffffffffffffffffff1614611139576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113090613789565b60405180910390fd5b6000600c60006101000a81548160ff0219169083151502179055506001905090565b611163611b44565b73ffffffffffffffffffffffffffffffffffffffff1661118161123e565b73ffffffffffffffffffffffffffffffffffffffff16146111d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ce90613789565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b60165481565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b60606005805461127d906137d8565b80601f01602080910402602001604051908101604052809291908181526020018280546112a9906137d8565b80156112f65780601f106112cb576101008083540402835291602001916112f6565b820191906000526020600020905b8154815290600101906020018083116112d957829003601f168201915b5050505050905090565b611308611b44565b73ffffffffffffffffffffffffffffffffffffffff1661132661123e565b73ffffffffffffffffffffffffffffffffffffffff161461137c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137390613789565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561140b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140290613993565b60405180910390fd5b6114158282612893565b5050565b60008060016000611428611b44565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156114e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dc90613a25565b60405180910390fd5b6114f96114f0611b44565b85858403611b4c565b600191505092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061153e611537611b44565b8484611d17565b6001905092915050565b60175481565b60105481565b601b6020528060005260406000206000915054906101000a900460ff1681565b600c60019054906101000a900460ff1681565b61158f611b44565b73ffffffffffffffffffffffffffffffffffffffff166115ad61123e565b73ffffffffffffffffffffffffffffffffffffffff1614611603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fa90613789565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516116a09190613362565b60405180910390a25050565b60095481565b60006116bc611b44565b73ffffffffffffffffffffffffffffffffffffffff166116da61123e565b73ffffffffffffffffffffffffffffffffffffffff1614611730576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172790613789565b60405180910390fd5b620186a0600161173e610cb5565b6117489190613a45565b6117529190613ace565b821015611794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178b90613b71565b60405180910390fd5b6103e860056117a1610cb5565b6117ab9190613a45565b6117b59190613ace565b8211156117f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ee90613c03565b60405180910390fd5b81600a8190555060019050919050565b600d5481565b611815611b44565b73ffffffffffffffffffffffffffffffffffffffff1661183361123e565b73ffffffffffffffffffffffffffffffffffffffff1614611889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188090613789565b60405180910390fd5b8163ffffffff166009819055508063ffffffff16600b819055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600e5481565b611942611b44565b73ffffffffffffffffffffffffffffffffffffffff1661196061123e565b73ffffffffffffffffffffffffffffffffffffffff16146119b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ad90613789565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1d90613c95565b60405180910390fd5b611a2f816127cd565b50565b611a3a611b44565b73ffffffffffffffffffffffffffffffffffffffff16611a5861123e565b73ffffffffffffffffffffffffffffffffffffffff1614611aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa590613789565b60405180910390fd5b8560ff16600e819055508460ff16600f819055508360ff16601081905550601054600f54600e54611adf91906138cb565b611ae991906138cb565b600d819055508260ff166012819055508160ff166013819055508060ff16601481905550601454601354601254611b2091906138cb565b611b2a91906138cb565b601181905550505050505050565b60125481565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb390613d27565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2390613db9565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d0a9190613433565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7e90613e4b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dee90613edd565b60405180910390fd5b6000811415611e1157611e0c83836000612934565b6127c8565b600c60009054906101000a900460ff161561230c57611e2e61123e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611e9c5750611e6c61123e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ed55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f0f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f285750600660149054906101000a900460ff16155b1561230b57600c60019054906101000a900460ff1661202257601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611fe25750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612021576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201890613f49565b60405180910390fd5b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156120c55750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561216c5760095481111561210f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210690613fdb565b60405180910390fd5b600b5461211b83610f52565b8261212691906138cb565b1115612167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215e90614047565b60405180910390fd5b61230a565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561220f5750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561225e57600954811115612259576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612250906140d9565b60405180910390fd5b612309565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661230857600b546122bb83610f52565b826122c691906138cb565b1115612307576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fe90614047565b60405180910390fd5b5b5b5b5b5b600061231730610f52565b90506000600a54821015905080801561233c5750600c60029054906101000a900460ff165b80156123555750600660149054906101000a900460ff16155b80156123ab5750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124015750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124575750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561249b576001600660146101000a81548160ff02191690831515021790555061247f612bb5565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125515750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561255b57600090505b600081156127b857601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125be57506000601154115b1561267d576064601154866125d39190613a45565b6125dd9190613ace565b9050601154601254826125f09190613a45565b6125fa9190613ace565b6015600082825461260b91906138cb565b92505081905550601154601354826126239190613a45565b61262d9190613ace565b6016600082825461263e91906138cb565b92505081905550601154601454826126569190613a45565b6126609190613ace565b6017600082825461267191906138cb565b92505081905550612794565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156126d857506000600d54115b15612793576064600d54866126ed9190613a45565b6126f79190613ace565b9050600d54600e548261270a9190613a45565b6127149190613ace565b6015600082825461272591906138cb565b92505081905550600d54600f548261273d9190613a45565b6127479190613ace565b6016600082825461275891906138cb565b92505081905550600d54601054826127709190613a45565b61277a9190613ace565b6017600082825461278b91906138cb565b925050819055505b5b60008111156127a9576127a8873083612934565b5b80856127b591906140f9565b94505b6127c3878787612934565b505050505b505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299b90613e4b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0b90613edd565b60405180910390fd5b612a1f838383612e70565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9c9061419f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b3891906138cb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b9c9190613433565b60405180910390a3612baf848484612e75565b50505050565b6000612bc030610f52565b90506000601754601654601554612bd791906138cb565b612be191906138cb565b9050600080831480612bf35750600082145b15612c0057505050612e6e565b6014600a54612c0f9190613a45565b831115612c28576014600a54612c259190613a45565b92505b600060028360155486612c3b9190613a45565b612c459190613ace565b612c4f9190613ace565b905060008185612c5f91906140f9565b90506000479050612c6f82612e7a565b60008147612c7d91906140f9565b905060008660165483612c909190613a45565b612c9a9190613ace565b905060008760175484612cad9190613a45565b612cb79190613ace565b90506000818385612cc891906140f9565b612cd291906140f9565b9050600060158190555060006016819055506000601781905550600087118015612cfc5750600081115b15612d4757612d0b87826130b7565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868289604051612d3e939291906141bf565b60405180910390a15b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612d8d90614227565b60006040518083038185875af1925050503d8060008114612dca576040519150601f19603f3d011682016040523d82523d6000602084013e612dcf565b606091505b505080985050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612e1b90614227565b60006040518083038185875af1925050503d8060008114612e58576040519150601f19603f3d011682016040523d82523d6000602084013e612e5d565b606091505b505080985050505050505050505050505b565b505050565b505050565b6000600267ffffffffffffffff811115612e9757612e9661423c565b5b604051908082528060200260200182016040528015612ec55781602001602082028036833780820191505090505b5090503081600081518110612edd57612edc61426b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fa691906142af565b81600181518110612fba57612fb961426b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061301f307f000000000000000000000000000000000000000000000000000000000000000084611b4c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130819594939291906143d5565b600060405180830381600087803b15801561309b57600080fd5b505af11580156130af573d6000803e3d6000fd5b505050505050565b6130e2307f000000000000000000000000000000000000000000000000000000000000000084611b4c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016131699695949392919061442f565b60606040518083038185885af1158015613187573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131ac91906144a5565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131ed5780820151818401526020810190506131d2565b838111156131fc576000848401525b50505050565b6000601f19601f8301169050919050565b600061321e826131b3565b61322881856131be565b93506132388185602086016131cf565b61324181613202565b840191505092915050565b600060208201905081810360008301526132668184613213565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061329e82613273565b9050919050565b6132ae81613293565b81146132b957600080fd5b50565b6000813590506132cb816132a5565b92915050565b6000819050919050565b6132e4816132d1565b81146132ef57600080fd5b50565b600081359050613301816132db565b92915050565b6000806040838503121561331e5761331d61326e565b5b600061332c858286016132bc565b925050602061333d858286016132f2565b9150509250929050565b60008115159050919050565b61335c81613347565b82525050565b60006020820190506133776000830184613353565b92915050565b6000602082840312156133935761339261326e565b5b60006133a1848285016132bc565b91505092915050565b6000819050919050565b60006133cf6133ca6133c584613273565b6133aa565b613273565b9050919050565b60006133e1826133b4565b9050919050565b60006133f3826133d6565b9050919050565b613403816133e8565b82525050565b600060208201905061341e60008301846133fa565b92915050565b61342d816132d1565b82525050565b60006020820190506134486000830184613424565b92915050565b6000806000606084860312156134675761346661326e565b5b6000613475868287016132bc565b9350506020613486868287016132bc565b9250506040613497868287016132f2565b9150509250925092565b600060ff82169050919050565b6134b7816134a1565b82525050565b60006020820190506134d260008301846134ae565b92915050565b6134e181613293565b82525050565b60006020820190506134fc60008301846134d8565b92915050565b61350b81613347565b811461351657600080fd5b50565b60008135905061352881613502565b92915050565b6000602082840312156135445761354361326e565b5b600061355284828501613519565b91505092915050565b600080604083850312156135725761357161326e565b5b6000613580858286016132bc565b925050602061359185828601613519565b9150509250929050565b6000602082840312156135b1576135b061326e565b5b60006135bf848285016132f2565b91505092915050565b600063ffffffff82169050919050565b6135e1816135c8565b81146135ec57600080fd5b50565b6000813590506135fe816135d8565b92915050565b6000806040838503121561361b5761361a61326e565b5b6000613629858286016135ef565b925050602061363a858286016135ef565b9150509250929050565b6000806040838503121561365b5761365a61326e565b5b6000613669858286016132bc565b925050602061367a858286016132bc565b9150509250929050565b61368d816134a1565b811461369857600080fd5b50565b6000813590506136aa81613684565b92915050565b60008060008060008060c087890312156136cd576136cc61326e565b5b60006136db89828a0161369b565b96505060206136ec89828a0161369b565b95505060406136fd89828a0161369b565b945050606061370e89828a0161369b565b935050608061371f89828a0161369b565b92505060a061373089828a0161369b565b9150509295509295509295565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137736020836131be565b915061377e8261373d565b602082019050919050565b600060208201905081810360008301526137a281613766565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806137f057607f821691505b60208210811415613804576138036137a9565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006138666028836131be565b91506138718261380a565b604082019050919050565b6000602082019050818103600083015261389581613859565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006138d6826132d1565b91506138e1836132d1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156139165761391561389c565b5b828201905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061397d6039836131be565b915061398882613921565b604082019050919050565b600060208201905081810360008301526139ac81613970565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613a0f6025836131be565b9150613a1a826139b3565b604082019050919050565b60006020820190508181036000830152613a3e81613a02565b9050919050565b6000613a50826132d1565b9150613a5b836132d1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a9457613a9361389c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ad9826132d1565b9150613ae4836132d1565b925082613af457613af3613a9f565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613b5b6035836131be565b9150613b6682613aff565b604082019050919050565b60006020820190508181036000830152613b8a81613b4e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613bed6034836131be565b9150613bf882613b91565b604082019050919050565b60006020820190508181036000830152613c1c81613be0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c7f6026836131be565b9150613c8a82613c23565b604082019050919050565b60006020820190508181036000830152613cae81613c72565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613d116024836131be565b9150613d1c82613cb5565b604082019050919050565b60006020820190508181036000830152613d4081613d04565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613da36022836131be565b9150613dae82613d47565b604082019050919050565b60006020820190508181036000830152613dd281613d96565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613e356025836131be565b9150613e4082613dd9565b604082019050919050565b60006020820190508181036000830152613e6481613e28565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613ec76023836131be565b9150613ed282613e6b565b604082019050919050565b60006020820190508181036000830152613ef681613eba565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613f336016836131be565b9150613f3e82613efd565b602082019050919050565b60006020820190508181036000830152613f6281613f26565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613fc56035836131be565b9150613fd082613f69565b604082019050919050565b60006020820190508181036000830152613ff481613fb8565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006140316013836131be565b915061403c82613ffb565b602082019050919050565b6000602082019050818103600083015261406081614024565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006140c36036836131be565b91506140ce82614067565b604082019050919050565b600060208201905081810360008301526140f2816140b6565b9050919050565b6000614104826132d1565b915061410f836132d1565b9250828210156141225761412161389c565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006141896026836131be565b91506141948261412d565b604082019050919050565b600060208201905081810360008301526141b88161417c565b9050919050565b60006060820190506141d46000830186613424565b6141e16020830185613424565b6141ee6040830184613424565b949350505050565b600081905092915050565b50565b60006142116000836141f6565b915061421c82614201565b600082019050919050565b600061423282614204565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506142a9816132a5565b92915050565b6000602082840312156142c5576142c461326e565b5b60006142d38482850161429a565b91505092915050565b6000819050919050565b60006143016142fc6142f7846142dc565b6133aa565b6132d1565b9050919050565b614311816142e6565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61434c81613293565b82525050565b600061435e8383614343565b60208301905092915050565b6000602082019050919050565b600061438282614317565b61438c8185614322565b935061439783614333565b8060005b838110156143c85781516143af8882614352565b97506143ba8361436a565b92505060018101905061439b565b5085935050505092915050565b600060a0820190506143ea6000830188613424565b6143f76020830187614308565b81810360408301526144098186614377565b905061441860608301856134d8565b6144256080830184613424565b9695505050505050565b600060c08201905061444460008301896134d8565b6144516020830188613424565b61445e6040830187614308565b61446b6060830186614308565b61447860808301856134d8565b61448560a0830184613424565b979650505050505050565b60008151905061449f816132db565b92915050565b6000806000606084860312156144be576144bd61326e565b5b60006144cc86828701614490565b93505060206144dd86828701614490565b92505060406144ee86828701614490565b915050925092509256fea264697066735822122054cdc992b0c453b896e7a6d5cd3ae17c8d5e7a0cea87dd4493508358371a692264736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061028c5760003560e01c80638b27306d1161015a578063c0246668116100c1578063e2f456051161007a578063e2f4560514610a0f578063f11a24d314610a3a578063f2fde38b14610a65578063f389633d14610a8e578063f637434214610ab7578063f8b45b0514610ae257610293565b8063c0246668146108ed578063c8c8ebe414610916578063d257b34f14610941578063d85ba0631461097e578063d8b3449b146109a9578063dd62ed3e146109d257610293565b8063a5949bcf11610113578063a5949bcf146107c7578063a9059cbb146107f2578063ad3429be1461082f578063b20414111461085a578063b62496f514610885578063bbc0c742146108c257610293565b80638b27306d146106b55780638da5cb5b146106e0578063921369131461070b57806395d89b41146107365780639a7a23d614610761578063a457c2d71461078a57610293565b80634a62bb65116101fe57806370a08231116101b757806370a08231146105b9578063715018a6146105f657806371e658401461060d578063751039fc146106365780637571336a146106615780637bce5a041461068a57610293565b80634a62bb65146104a55780634b8ce602146104d05780634fbee193146104fb578063593173c1146105385780636a486a8e146105635780636ac5eeee1461058e57610293565b806318160ddd1161025057806318160ddd1461037f57806318a94cf1146103aa57806323b872dd146103d5578063313ce56714610412578063395093511461043d57806349bd5a5e1461047a57610293565b806301339c211461029857806306fdde03146102af578063095ea7b3146102da57806310d5de53146103175780631694505e1461035457610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610b0d565b005b3480156102bb57600080fd5b506102c4610bc1565b6040516102d1919061324c565b60405180910390f35b3480156102e657600080fd5b5061030160048036038101906102fc9190613307565b610c53565b60405161030e9190613362565b60405180910390f35b34801561032357600080fd5b5061033e6004803603810190610339919061337d565b610c71565b60405161034b9190613362565b60405180910390f35b34801561036057600080fd5b50610369610c91565b6040516103769190613409565b60405180910390f35b34801561038b57600080fd5b50610394610cb5565b6040516103a19190613433565b60405180910390f35b3480156103b657600080fd5b506103bf610cbf565b6040516103cc9190613433565b60405180910390f35b3480156103e157600080fd5b506103fc60048036038101906103f7919061344e565b610cc5565b6040516104099190613362565b60405180910390f35b34801561041e57600080fd5b50610427610dbd565b60405161043491906134bd565b60405180910390f35b34801561044957600080fd5b50610464600480360381019061045f9190613307565b610dd4565b6040516104719190613362565b60405180910390f35b34801561048657600080fd5b5061048f610e80565b60405161049c91906134e7565b60405180910390f35b3480156104b157600080fd5b506104ba610ea4565b6040516104c79190613362565b60405180910390f35b3480156104dc57600080fd5b506104e5610eb7565b6040516104f29190613433565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d919061337d565b610ebd565b60405161052f9190613362565b60405180910390f35b34801561054457600080fd5b5061054d610f13565b60405161055a91906134e7565b60405180910390f35b34801561056f57600080fd5b50610578610f39565b6040516105859190613433565b60405180910390f35b34801561059a57600080fd5b506105a3610f3f565b6040516105b09190613362565b60405180910390f35b3480156105c557600080fd5b506105e060048036038101906105db919061337d565b610f52565b6040516105ed9190613433565b60405180910390f35b34801561060257600080fd5b5061060b610f9a565b005b34801561061957600080fd5b50610634600480360381019061062f919061352e565b611022565b005b34801561064257600080fd5b5061064b6110bb565b6040516106589190613362565b60405180910390f35b34801561066d57600080fd5b506106886004803603810190610683919061355b565b61115b565b005b34801561069657600080fd5b5061069f611232565b6040516106ac9190613433565b60405180910390f35b3480156106c157600080fd5b506106ca611238565b6040516106d79190613433565b60405180910390f35b3480156106ec57600080fd5b506106f561123e565b60405161070291906134e7565b60405180910390f35b34801561071757600080fd5b50610720611268565b60405161072d9190613433565b60405180910390f35b34801561074257600080fd5b5061074b61126e565b604051610758919061324c565b60405180910390f35b34801561076d57600080fd5b506107886004803603810190610783919061355b565b611300565b005b34801561079657600080fd5b506107b160048036038101906107ac9190613307565b611419565b6040516107be9190613362565b60405180910390f35b3480156107d357600080fd5b506107dc611504565b6040516107e991906134e7565b60405180910390f35b3480156107fe57600080fd5b5061081960048036038101906108149190613307565b61152a565b6040516108269190613362565b60405180910390f35b34801561083b57600080fd5b50610844611548565b6040516108519190613433565b60405180910390f35b34801561086657600080fd5b5061086f61154e565b60405161087c9190613433565b60405180910390f35b34801561089157600080fd5b506108ac60048036038101906108a7919061337d565b611554565b6040516108b99190613362565b60405180910390f35b3480156108ce57600080fd5b506108d7611574565b6040516108e49190613362565b60405180910390f35b3480156108f957600080fd5b50610914600480360381019061090f919061355b565b611587565b005b34801561092257600080fd5b5061092b6116ac565b6040516109389190613433565b60405180910390f35b34801561094d57600080fd5b506109686004803603810190610963919061359b565b6116b2565b6040516109759190613362565b60405180910390f35b34801561098a57600080fd5b50610993611807565b6040516109a09190613433565b60405180910390f35b3480156109b557600080fd5b506109d060048036038101906109cb9190613604565b61180d565b005b3480156109de57600080fd5b506109f960048036038101906109f49190613644565b6118a7565b604051610a069190613433565b60405180910390f35b348015610a1b57600080fd5b50610a2461192e565b604051610a319190613433565b60405180910390f35b348015610a4657600080fd5b50610a4f611934565b604051610a5c9190613433565b60405180910390f35b348015610a7157600080fd5b50610a8c6004803603810190610a87919061337d565b61193a565b005b348015610a9a57600080fd5b50610ab56004803603810190610ab091906136b0565b611a32565b005b348015610ac357600080fd5b50610acc611b38565b604051610ad99190613433565b60405180910390f35b348015610aee57600080fd5b50610af7611b3e565b604051610b049190613433565b60405180910390f35b610b15611b44565b73ffffffffffffffffffffffffffffffffffffffff16610b3361123e565b73ffffffffffffffffffffffffffffffffffffffff1614610b89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8090613789565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff021916908315150217905550565b606060048054610bd0906137d8565b80601f0160208091040260200160405190810160405280929190818152602001828054610bfc906137d8565b8015610c495780601f10610c1e57610100808354040283529160200191610c49565b820191906000526020600020905b815481529060010190602001808311610c2c57829003601f168201915b5050505050905090565b6000610c67610c60611b44565b8484611b4c565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60145481565b6000610cd2848484611d17565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d1d611b44565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d949061387c565b60405180910390fd5b610db185610da9611b44565b858403611b4c565b60019150509392505050565b6000600360009054906101000a900460ff16905090565b6000610e76610de1611b44565b848460016000610def611b44565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e7191906138cb565b611b4c565b6001905092915050565b7f0000000000000000000000005b45963b757b04cd83db0b08d99cdc4e89d98f1c81565b600c60009054906101000a900460ff1681565b60155481565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600c60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fa2611b44565b73ffffffffffffffffffffffffffffffffffffffff16610fc061123e565b73ffffffffffffffffffffffffffffffffffffffff1614611016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100d90613789565b60405180910390fd5b61102060006127cd565b565b61102a611b44565b73ffffffffffffffffffffffffffffffffffffffff1661104861123e565b73ffffffffffffffffffffffffffffffffffffffff161461109e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109590613789565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b60006110c5611b44565b73ffffffffffffffffffffffffffffffffffffffff166110e361123e565b73ffffffffffffffffffffffffffffffffffffffff1614611139576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113090613789565b60405180910390fd5b6000600c60006101000a81548160ff0219169083151502179055506001905090565b611163611b44565b73ffffffffffffffffffffffffffffffffffffffff1661118161123e565b73ffffffffffffffffffffffffffffffffffffffff16146111d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ce90613789565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b60165481565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b60606005805461127d906137d8565b80601f01602080910402602001604051908101604052809291908181526020018280546112a9906137d8565b80156112f65780601f106112cb576101008083540402835291602001916112f6565b820191906000526020600020905b8154815290600101906020018083116112d957829003601f168201915b5050505050905090565b611308611b44565b73ffffffffffffffffffffffffffffffffffffffff1661132661123e565b73ffffffffffffffffffffffffffffffffffffffff161461137c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137390613789565b60405180910390fd5b7f0000000000000000000000005b45963b757b04cd83db0b08d99cdc4e89d98f1c73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561140b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140290613993565b60405180910390fd5b6114158282612893565b5050565b60008060016000611428611b44565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156114e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dc90613a25565b60405180910390fd5b6114f96114f0611b44565b85858403611b4c565b600191505092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061153e611537611b44565b8484611d17565b6001905092915050565b60175481565b60105481565b601b6020528060005260406000206000915054906101000a900460ff1681565b600c60019054906101000a900460ff1681565b61158f611b44565b73ffffffffffffffffffffffffffffffffffffffff166115ad61123e565b73ffffffffffffffffffffffffffffffffffffffff1614611603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fa90613789565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516116a09190613362565b60405180910390a25050565b60095481565b60006116bc611b44565b73ffffffffffffffffffffffffffffffffffffffff166116da61123e565b73ffffffffffffffffffffffffffffffffffffffff1614611730576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172790613789565b60405180910390fd5b620186a0600161173e610cb5565b6117489190613a45565b6117529190613ace565b821015611794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178b90613b71565b60405180910390fd5b6103e860056117a1610cb5565b6117ab9190613a45565b6117b59190613ace565b8211156117f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ee90613c03565b60405180910390fd5b81600a8190555060019050919050565b600d5481565b611815611b44565b73ffffffffffffffffffffffffffffffffffffffff1661183361123e565b73ffffffffffffffffffffffffffffffffffffffff1614611889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188090613789565b60405180910390fd5b8163ffffffff166009819055508063ffffffff16600b819055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600e5481565b611942611b44565b73ffffffffffffffffffffffffffffffffffffffff1661196061123e565b73ffffffffffffffffffffffffffffffffffffffff16146119b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ad90613789565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1d90613c95565b60405180910390fd5b611a2f816127cd565b50565b611a3a611b44565b73ffffffffffffffffffffffffffffffffffffffff16611a5861123e565b73ffffffffffffffffffffffffffffffffffffffff1614611aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa590613789565b60405180910390fd5b8560ff16600e819055508460ff16600f819055508360ff16601081905550601054600f54600e54611adf91906138cb565b611ae991906138cb565b600d819055508260ff166012819055508160ff166013819055508060ff16601481905550601454601354601254611b2091906138cb565b611b2a91906138cb565b601181905550505050505050565b60125481565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb390613d27565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2390613db9565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d0a9190613433565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7e90613e4b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dee90613edd565b60405180910390fd5b6000811415611e1157611e0c83836000612934565b6127c8565b600c60009054906101000a900460ff161561230c57611e2e61123e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611e9c5750611e6c61123e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ed55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f0f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f285750600660149054906101000a900460ff16155b1561230b57600c60019054906101000a900460ff1661202257601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611fe25750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612021576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201890613f49565b60405180910390fd5b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156120c55750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561216c5760095481111561210f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210690613fdb565b60405180910390fd5b600b5461211b83610f52565b8261212691906138cb565b1115612167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215e90614047565b60405180910390fd5b61230a565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561220f5750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561225e57600954811115612259576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612250906140d9565b60405180910390fd5b612309565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661230857600b546122bb83610f52565b826122c691906138cb565b1115612307576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fe90614047565b60405180910390fd5b5b5b5b5b5b600061231730610f52565b90506000600a54821015905080801561233c5750600c60029054906101000a900460ff165b80156123555750600660149054906101000a900460ff16155b80156123ab5750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124015750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124575750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561249b576001600660146101000a81548160ff02191690831515021790555061247f612bb5565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125515750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561255b57600090505b600081156127b857601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125be57506000601154115b1561267d576064601154866125d39190613a45565b6125dd9190613ace565b9050601154601254826125f09190613a45565b6125fa9190613ace565b6015600082825461260b91906138cb565b92505081905550601154601354826126239190613a45565b61262d9190613ace565b6016600082825461263e91906138cb565b92505081905550601154601454826126569190613a45565b6126609190613ace565b6017600082825461267191906138cb565b92505081905550612794565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156126d857506000600d54115b15612793576064600d54866126ed9190613a45565b6126f79190613ace565b9050600d54600e548261270a9190613a45565b6127149190613ace565b6015600082825461272591906138cb565b92505081905550600d54600f548261273d9190613a45565b6127479190613ace565b6016600082825461275891906138cb565b92505081905550600d54601054826127709190613a45565b61277a9190613ace565b6017600082825461278b91906138cb565b925050819055505b5b60008111156127a9576127a8873083612934565b5b80856127b591906140f9565b94505b6127c3878787612934565b505050505b505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299b90613e4b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0b90613edd565b60405180910390fd5b612a1f838383612e70565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9c9061419f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b3891906138cb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b9c9190613433565b60405180910390a3612baf848484612e75565b50505050565b6000612bc030610f52565b90506000601754601654601554612bd791906138cb565b612be191906138cb565b9050600080831480612bf35750600082145b15612c0057505050612e6e565b6014600a54612c0f9190613a45565b831115612c28576014600a54612c259190613a45565b92505b600060028360155486612c3b9190613a45565b612c459190613ace565b612c4f9190613ace565b905060008185612c5f91906140f9565b90506000479050612c6f82612e7a565b60008147612c7d91906140f9565b905060008660165483612c909190613a45565b612c9a9190613ace565b905060008760175484612cad9190613a45565b612cb79190613ace565b90506000818385612cc891906140f9565b612cd291906140f9565b9050600060158190555060006016819055506000601781905550600087118015612cfc5750600081115b15612d4757612d0b87826130b7565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868289604051612d3e939291906141bf565b60405180910390a15b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612d8d90614227565b60006040518083038185875af1925050503d8060008114612dca576040519150601f19603f3d011682016040523d82523d6000602084013e612dcf565b606091505b505080985050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612e1b90614227565b60006040518083038185875af1925050503d8060008114612e58576040519150601f19603f3d011682016040523d82523d6000602084013e612e5d565b606091505b505080985050505050505050505050505b565b505050565b505050565b6000600267ffffffffffffffff811115612e9757612e9661423c565b5b604051908082528060200260200182016040528015612ec55781602001602082028036833780820191505090505b5090503081600081518110612edd57612edc61426b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fa691906142af565b81600181518110612fba57612fb961426b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061301f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611b4c565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130819594939291906143d5565b600060405180830381600087803b15801561309b57600080fd5b505af11580156130af573d6000803e3d6000fd5b505050505050565b6130e2307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611b4c565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016131699695949392919061442f565b60606040518083038185885af1158015613187573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131ac91906144a5565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131ed5780820151818401526020810190506131d2565b838111156131fc576000848401525b50505050565b6000601f19601f8301169050919050565b600061321e826131b3565b61322881856131be565b93506132388185602086016131cf565b61324181613202565b840191505092915050565b600060208201905081810360008301526132668184613213565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061329e82613273565b9050919050565b6132ae81613293565b81146132b957600080fd5b50565b6000813590506132cb816132a5565b92915050565b6000819050919050565b6132e4816132d1565b81146132ef57600080fd5b50565b600081359050613301816132db565b92915050565b6000806040838503121561331e5761331d61326e565b5b600061332c858286016132bc565b925050602061333d858286016132f2565b9150509250929050565b60008115159050919050565b61335c81613347565b82525050565b60006020820190506133776000830184613353565b92915050565b6000602082840312156133935761339261326e565b5b60006133a1848285016132bc565b91505092915050565b6000819050919050565b60006133cf6133ca6133c584613273565b6133aa565b613273565b9050919050565b60006133e1826133b4565b9050919050565b60006133f3826133d6565b9050919050565b613403816133e8565b82525050565b600060208201905061341e60008301846133fa565b92915050565b61342d816132d1565b82525050565b60006020820190506134486000830184613424565b92915050565b6000806000606084860312156134675761346661326e565b5b6000613475868287016132bc565b9350506020613486868287016132bc565b9250506040613497868287016132f2565b9150509250925092565b600060ff82169050919050565b6134b7816134a1565b82525050565b60006020820190506134d260008301846134ae565b92915050565b6134e181613293565b82525050565b60006020820190506134fc60008301846134d8565b92915050565b61350b81613347565b811461351657600080fd5b50565b60008135905061352881613502565b92915050565b6000602082840312156135445761354361326e565b5b600061355284828501613519565b91505092915050565b600080604083850312156135725761357161326e565b5b6000613580858286016132bc565b925050602061359185828601613519565b9150509250929050565b6000602082840312156135b1576135b061326e565b5b60006135bf848285016132f2565b91505092915050565b600063ffffffff82169050919050565b6135e1816135c8565b81146135ec57600080fd5b50565b6000813590506135fe816135d8565b92915050565b6000806040838503121561361b5761361a61326e565b5b6000613629858286016135ef565b925050602061363a858286016135ef565b9150509250929050565b6000806040838503121561365b5761365a61326e565b5b6000613669858286016132bc565b925050602061367a858286016132bc565b9150509250929050565b61368d816134a1565b811461369857600080fd5b50565b6000813590506136aa81613684565b92915050565b60008060008060008060c087890312156136cd576136cc61326e565b5b60006136db89828a0161369b565b96505060206136ec89828a0161369b565b95505060406136fd89828a0161369b565b945050606061370e89828a0161369b565b935050608061371f89828a0161369b565b92505060a061373089828a0161369b565b9150509295509295509295565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137736020836131be565b915061377e8261373d565b602082019050919050565b600060208201905081810360008301526137a281613766565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806137f057607f821691505b60208210811415613804576138036137a9565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006138666028836131be565b91506138718261380a565b604082019050919050565b6000602082019050818103600083015261389581613859565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006138d6826132d1565b91506138e1836132d1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156139165761391561389c565b5b828201905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061397d6039836131be565b915061398882613921565b604082019050919050565b600060208201905081810360008301526139ac81613970565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613a0f6025836131be565b9150613a1a826139b3565b604082019050919050565b60006020820190508181036000830152613a3e81613a02565b9050919050565b6000613a50826132d1565b9150613a5b836132d1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a9457613a9361389c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ad9826132d1565b9150613ae4836132d1565b925082613af457613af3613a9f565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613b5b6035836131be565b9150613b6682613aff565b604082019050919050565b60006020820190508181036000830152613b8a81613b4e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613bed6034836131be565b9150613bf882613b91565b604082019050919050565b60006020820190508181036000830152613c1c81613be0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c7f6026836131be565b9150613c8a82613c23565b604082019050919050565b60006020820190508181036000830152613cae81613c72565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613d116024836131be565b9150613d1c82613cb5565b604082019050919050565b60006020820190508181036000830152613d4081613d04565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613da36022836131be565b9150613dae82613d47565b604082019050919050565b60006020820190508181036000830152613dd281613d96565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613e356025836131be565b9150613e4082613dd9565b604082019050919050565b60006020820190508181036000830152613e6481613e28565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613ec76023836131be565b9150613ed282613e6b565b604082019050919050565b60006020820190508181036000830152613ef681613eba565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613f336016836131be565b9150613f3e82613efd565b602082019050919050565b60006020820190508181036000830152613f6281613f26565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613fc56035836131be565b9150613fd082613f69565b604082019050919050565b60006020820190508181036000830152613ff481613fb8565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006140316013836131be565b915061403c82613ffb565b602082019050919050565b6000602082019050818103600083015261406081614024565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006140c36036836131be565b91506140ce82614067565b604082019050919050565b600060208201905081810360008301526140f2816140b6565b9050919050565b6000614104826132d1565b915061410f836132d1565b9250828210156141225761412161389c565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006141896026836131be565b91506141948261412d565b604082019050919050565b600060208201905081810360008301526141b88161417c565b9050919050565b60006060820190506141d46000830186613424565b6141e16020830185613424565b6141ee6040830184613424565b949350505050565b600081905092915050565b50565b60006142116000836141f6565b915061421c82614201565b600082019050919050565b600061423282614204565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506142a9816132a5565b92915050565b6000602082840312156142c5576142c461326e565b5b60006142d38482850161429a565b91505092915050565b6000819050919050565b60006143016142fc6142f7846142dc565b6133aa565b6132d1565b9050919050565b614311816142e6565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61434c81613293565b82525050565b600061435e8383614343565b60208301905092915050565b6000602082019050919050565b600061438282614317565b61438c8185614322565b935061439783614333565b8060005b838110156143c85781516143af8882614352565b97506143ba8361436a565b92505060018101905061439b565b5085935050505092915050565b600060a0820190506143ea6000830188613424565b6143f76020830187614308565b81810360408301526144098186614377565b905061441860608301856134d8565b6144256080830184613424565b9695505050505050565b600060c08201905061444460008301896134d8565b6144516020830188613424565b61445e6040830187614308565b61446b6060830186614308565b61447860808301856134d8565b61448560a0830184613424565b979650505050505050565b60008151905061449f816132db565b92915050565b6000806000606084860312156144be576144bd61326e565b5b60006144cc86828701614490565b93505060206144dd86828701614490565b92505060406144ee86828701614490565b915050925092509256fea264697066735822122054cdc992b0c453b896e7a6d5cd3ae17c8d5e7a0cea87dd4493508358371a692264736f6c634300080a0033

Deployed Bytecode Sourcemap

12393:13270:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16139:102;;;;;;;;;;;;;:::i;:::-;;2747:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3668:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13448:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12434:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3075:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13145:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3845:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2967:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4345:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12492:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12767:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13185:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18831:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12569:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13034:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12847;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3191:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;876:103;;;;;;;;;;;;;:::i;:::-;;18041:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16969:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17778:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12955:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13222;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;653:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13107:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2855:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18323:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4568:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12610:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3326:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13259:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12992;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13669:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12807:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18133:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12652:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17272:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12884:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17098:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3509:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12694:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12918:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;987:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16249:711;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13069:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12734:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16139:102;799:12;:10;:12::i;:::-;788:23;;:7;:5;:7::i;:::-;:23;;;780:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16203:4:::1;16187:13;;:20;;;;;;;;;;;;;;;;;;16229:4;16218:8;;:15;;;;;;;;;;;;;;;;;;16139:102::o:0;2747:100::-;2801:13;2834:5;2827:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2747:100;:::o;3668:169::-;3751:4;3768:39;3777:12;:10;:12::i;:::-;3791:7;3800:6;3768:8;:39::i;:::-;3825:4;3818:11;;3668:169;;;;:::o;13448:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;12434:51::-;;;:::o;3075:108::-;3136:7;3163:12;;3156:19;;3075:108;:::o;13145:33::-;;;;:::o;3845:492::-;3985:4;4002:36;4012:6;4020:9;4031:6;4002:9;:36::i;:::-;4051:24;4078:11;:19;4090:6;4078:19;;;;;;;;;;;;;;;:33;4098:12;:10;:12::i;:::-;4078:33;;;;;;;;;;;;;;;;4051:60;;4150:6;4130:16;:26;;4122:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4237:57;4246:6;4254:12;:10;:12::i;:::-;4287:6;4268:16;:25;4237:8;:57::i;:::-;4325:4;4318:11;;;3845:492;;;;;:::o;2967:100::-;3025:5;3050:9;;;;;;;;;;;3043:16;;2967:100;:::o;4345:215::-;4433:4;4450:80;4459:12;:10;:12::i;:::-;4473:7;4519:10;4482:11;:25;4494:12;:10;:12::i;:::-;4482:25;;;;;;;;;;;;;;;:34;4508:7;4482:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4450:8;:80::i;:::-;4548:4;4541:11;;4345:215;;;;:::o;12492:38::-;;;:::o;12767:33::-;;;;;;;;;;;;;:::o;13185:30::-;;;;:::o;18831:126::-;18897:4;18921:19;:28;18941:7;18921:28;;;;;;;;;;;;;;;;;;;;;;;;;18914:35;;18831:126;;;:::o;12569:34::-;;;;;;;;;;;;;:::o;13034:28::-;;;;:::o;12847:::-;;;;;;;;;;;;;:::o;3191:127::-;3265:7;3292:9;:18;3302:7;3292:18;;;;;;;;;;;;;;;;3285:25;;3191:127;;;:::o;876:103::-;799:12;:10;:12::i;:::-;788:23;;:7;:5;:7::i;:::-;:23;;;780:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;941:30:::1;968:1;941:18;:30::i;:::-;876:103::o:0;18041:84::-;799:12;:10;:12::i;:::-;788:23;;:7;:5;:7::i;:::-;:23;;;780:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18115:2:::1;18104:8;;:13;;;;;;;;;;;;;;;;;;18041:84:::0;:::o;16969:121::-;17021:4;799:12;:10;:12::i;:::-;788:23;;:7;:5;:7::i;:::-;:23;;;780:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17055:5:::1;17038:14;;:22;;;;;;;;;;;;;;;;;;17078:4;17071:11;;16969:121:::0;:::o;17778:167::-;799:12;:10;:12::i;:::-;788:23;;:7;:5;:7::i;:::-;:23;;;780:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17933:4:::1;17891:31;:39;17923:6;17891:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;17778:167:::0;;:::o;12955:30::-;;;;:::o;13222:::-;;;;:::o;653:87::-;699:7;726:6;;;;;;;;;;;719:13;;653:87;:::o;13107:31::-;;;;:::o;2855:104::-;2911:13;2944:7;2937:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2855:104;:::o;18323:304::-;799:12;:10;:12::i;:::-;788:23;;:7;:5;:7::i;:::-;:23;;;780:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18467:13:::1;18459:21;;:4;:21;;;;18437:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;18578:41;18607:4;18613:5;18578:28;:41::i;:::-;18323:304:::0;;:::o;4568:413::-;4661:4;4678:24;4705:11;:25;4717:12;:10;:12::i;:::-;4705:25;;;;;;;;;;;;;;;:34;4731:7;4705:34;;;;;;;;;;;;;;;;4678:61;;4778:15;4758:16;:35;;4750:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4871:67;4880:12;:10;:12::i;:::-;4894:7;4922:15;4903:16;:34;4871:8;:67::i;:::-;4969:4;4962:11;;;4568:413;;;;:::o;12610:32::-;;;;;;;;;;;;;:::o;3326:175::-;3412:4;3429:42;3439:12;:10;:12::i;:::-;3453:9;3464:6;3429:9;:42::i;:::-;3489:4;3482:11;;3326:175;;;;:::o;13259:32::-;;;;:::o;12992:::-;;;;:::o;13669:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;12807:33::-;;;;;;;;;;;;;:::o;18133:182::-;799:12;:10;:12::i;:::-;788:23;;:7;:5;:7::i;:::-;:23;;;780:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18249:8:::1;18218:19;:28;18238:7;18218:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18289:7;18273:34;;;18298:8;18273:34;;;;;;:::i;:::-;;;;;;;;18133:182:::0;;:::o;12652:35::-;;;;:::o;17272:497::-;17380:4;799:12;:10;:12::i;:::-;788:23;;:7;:5;:7::i;:::-;:23;;;780:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17459:6:::1;17454:1;17438:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17437:28;;;;:::i;:::-;17424:9;:41;;17402:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;17614:4;17609:1;17593:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17592:26;;;;:::i;:::-;17579:9;:39;;17557:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;17730:9;17709:18;:30;;;;17757:4;17750:11;;17272:497:::0;;;:::o;12884:27::-;;;;:::o;17098:166::-;799:12;:10;:12::i;:::-;788:23;;:7;:5;:7::i;:::-;:23;;;780:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17211:8:::1;17188:31;;:20;:31;;;;17243:12;17231:24;;:9;:24;;;;17098:166:::0;;:::o;3509:151::-;3598:7;3625:11;:18;3637:5;3625:18;;;;;;;;;;;;;;;:27;3644:7;3625:27;;;;;;;;;;;;;;;;3618:34;;3509:151;;;;:::o;12694:33::-;;;;:::o;12918:30::-;;;;:::o;987:201::-;799:12;:10;:12::i;:::-;788:23;;:7;:5;:7::i;:::-;:23;;;780:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1096:1:::1;1076:22;;:8;:22;;;;1068:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1152:28;1171:8;1152:18;:28::i;:::-;987:201:::0;:::o;16249:711::-;799:12;:10;:12::i;:::-;788:23;;:7;:5;:7::i;:::-;:23;;;780:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16532:16:::1;16514:34;;:15;:34;;;;16577:16;16559:34;;:15;:34;;;;16624:18;16604:38;;:17;:38;;;;16704:17;;16686:15;;16668;;:33;;;;:::i;:::-;:53;;;;:::i;:::-;16653:12;:68;;;;16753:17;16734:36;;:16;:36;;;;16800:17;16781:36;;:16;:36;;;;16849:19;16828:40;;:18;:40;;;;16934:18;;16915:16;;16896;;:35;;;;:::i;:::-;:56;;;;:::i;:::-;16880:13;:72;;;;16249:711:::0;;;;;;:::o;13069:31::-;;;;:::o;12734:24::-;;;;:::o;199:98::-;252:7;279:10;272:17;;199:98;:::o;6736:380::-;6889:1;6872:19;;:5;:19;;;;6864:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6970:1;6951:21;;:7;:21;;;;6943:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7054:6;7024:11;:18;7036:5;7024:18;;;;;;;;;;;;;;;:27;7043:7;7024:27;;;;;;;;;;;;;;;:36;;;;7092:7;7076:32;;7085:5;7076:32;;;7101:6;7076:32;;;;;;:::i;:::-;;;;;;;;6736:380;;;:::o;18965:3942::-;19113:1;19097:18;;:4;:18;;;;19089:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19190:1;19176:16;;:2;:16;;;;19168:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19259:1;19249:6;:11;19245:93;;;19277:28;19293:4;19299:2;19303:1;19277:15;:28::i;:::-;19320:7;;19245:93;19354:14;;;;;;;;;;;19350:1694;;;19415:7;:5;:7::i;:::-;19407:15;;:4;:15;;;;:49;;;;;19449:7;:5;:7::i;:::-;19443:13;;:2;:13;;;;19407:49;:86;;;;;19491:1;19477:16;;:2;:16;;;;19407:86;:128;;;;;19528:6;19514:21;;:2;:21;;;;19407:128;:158;;;;;19557:8;;;;;;;;;;;19556:9;19407:158;19385:1648;;;19605:13;;;;;;;;;;;19600:223;;19677:19;:25;19697:4;19677:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19706:19;:23;19726:2;19706:23;;;;;;;;;;;;;;;;;;;;;;;;;19677:52;19643:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;19600:223;19897:25;:31;19923:4;19897:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;19954:31;:35;19986:2;19954:35;;;;;;;;;;;;;;;;;;;;;;;;;19953:36;19897:92;19871:1147;;;20076:20;;20066:6;:30;;20032:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;20284:9;;20267:13;20277:2;20267:9;:13::i;:::-;20258:6;:22;;;;:::i;:::-;:35;;20224:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;19871:1147;;;20462:25;:29;20488:2;20462:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;20517:31;:37;20549:4;20517:37;;;;;;;;;;;;;;;;;;;;;;;;;20516:38;20462:92;20436:582;;;20641:20;;20631:6;:30;;20597:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;20436:582;;;20798:31;:35;20830:2;20798:35;;;;;;;;;;;;;;;;;;;;;;;;;20793:225;;20918:9;;20901:13;20911:2;20901:9;:13::i;:::-;20892:6;:22;;;;:::i;:::-;:35;;20858:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;20793:225;20436:582;19871:1147;19385:1648;19350:1694;21056:28;21087:24;21105:4;21087:9;:24::i;:::-;21056:55;;21124:12;21163:18;;21139:20;:42;;21124:57;;21212:7;:32;;;;;21236:8;;;;;;;;;;;21212:32;:58;;;;;21262:8;;;;;;;;;;;21261:9;21212:58;:107;;;;;21288:25;:31;21314:4;21288:31;;;;;;;;;;;;;;;;;;;;;;;;;21287:32;21212:107;:150;;;;;21337:19;:25;21357:4;21337:25;;;;;;;;;;;;;;;;;;;;;;;;;21336:26;21212:150;:191;;;;;21380:19;:23;21400:2;21380:23;;;;;;;;;;;;;;;;;;;;;;;;;21379:24;21212:191;21194:325;;;21441:4;21430:8;;:15;;;;;;;;;;;;;;;;;;21462:12;:10;:12::i;:::-;21502:5;21491:8;;:16;;;;;;;;;;;;;;;;;;21194:325;21531:12;21547:8;;;;;;;;;;;21546:9;21531:24;;21657:19;:25;21677:4;21657:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21686:19;:23;21706:2;21686:23;;;;;;;;;;;;;;;;;;;;;;;;;21657:52;21653:100;;;21736:5;21726:15;;21653:100;21765:12;21870:7;21866:988;;;21922:25;:29;21948:2;21922:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;21971:1;21955:13;;:17;21922:50;21918:787;;;22025:3;22009:13;;22000:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;21993:35;;22094:13;;22074:16;;22067:4;:23;;;;:::i;:::-;22066:41;;;;:::i;:::-;22047:15;;:60;;;;;;;:::i;:::-;;;;;;;;22173:13;;22153:16;;22146:4;:23;;;;:::i;:::-;22145:41;;;;:::i;:::-;22126:15;;:60;;;;;;;:::i;:::-;;;;;;;;22258:13;;22236:18;;22229:4;:25;;;;:::i;:::-;22228:43;;;;:::i;:::-;22207:17;;:64;;;;;;;:::i;:::-;;;;;;;;21918:787;;;22347:25;:31;22373:4;22347:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;22397:1;22382:12;;:16;22347:51;22343:362;;;22450:3;22435:12;;22426:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;22419:34;;22518:12;;22499:15;;22492:4;:22;;;;:::i;:::-;22491:39;;;;:::i;:::-;22472:15;;:58;;;;;;;:::i;:::-;;;;;;;;22595:12;;22576:15;;22569:4;:22;;;;:::i;:::-;22568:39;;;;:::i;:::-;22549:15;;:58;;;;;;;:::i;:::-;;;;;;;;22676:12;;22655:17;;22648:4;:24;;;;:::i;:::-;22647:41;;;;:::i;:::-;22626:17;;:62;;;;;;;:::i;:::-;;;;;;;;22343:362;21918:787;22732:1;22725:4;:8;22721:91;;;22754:42;22770:4;22784;22791;22754:15;:42::i;:::-;22721:91;22838:4;22828:14;;;;;:::i;:::-;;;21866:988;22866:33;22882:4;22888:2;22892:6;22866:15;:33::i;:::-;19078:3829;;;;18965:3942;;;;:::o;1194:191::-;1268:16;1287:6;;;;;;;;;;;1268:25;;1313:8;1304:6;;:17;;;;;;;;;;;;;;;;;;1368:8;1337:40;;1358:8;1337:40;;;;;;;;;;;;1257:128;1194:191;:::o;18635:188::-;18752:5;18718:25;:31;18744:4;18718:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18809:5;18775:40;;18803:4;18775:40;;;;;;;;;;;;18635:188;;:::o;4989:733::-;5147:1;5129:20;;:6;:20;;;;5121:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5231:1;5210:23;;:9;:23;;;;5202:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5286:47;5307:6;5315:9;5326:6;5286:20;:47::i;:::-;5346:21;5370:9;:17;5380:6;5370:17;;;;;;;;;;;;;;;;5346:41;;5423:6;5406:13;:23;;5398:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5544:6;5528:13;:22;5508:9;:17;5518:6;5508:17;;;;;;;;;;;;;;;:42;;;;5596:6;5572:9;:20;5582:9;5572:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5637:9;5620:35;;5629:6;5620:35;;;5648:6;5620:35;;;;;;:::i;:::-;;;;;;;;5668:46;5688:6;5696:9;5707:6;5668:19;:46::i;:::-;5110:612;4989:733;;;:::o;23952:1706::-;23993:23;24019:24;24037:4;24019:9;:24::i;:::-;23993:50;;24054:25;24118:17;;24100:15;;24082;;:33;;;;:::i;:::-;:53;;;;:::i;:::-;24054:81;;24146:12;24194:1;24175:15;:20;:46;;;;24220:1;24199:17;:22;24175:46;24171:85;;;24238:7;;;;;24171:85;24311:2;24290:18;;:23;;;;:::i;:::-;24272:15;:41;24268:115;;;24369:2;24348:18;;:23;;;;:::i;:::-;24330:41;;24268:115;24444:26;24531:1;24511:17;24492:15;;24474;:33;;;;:::i;:::-;24473:55;;;;:::i;:::-;:59;;;;:::i;:::-;24444:88;;24543:26;24590:18;24572:15;:36;;;;:::i;:::-;24543:65;;24621:25;24649:21;24621:49;;24683:30;24694:18;24683:10;:30::i;:::-;24726:18;24771:17;24747:21;:41;;;;:::i;:::-;24726:62;;24802:20;24856:17;24838:15;;24825:10;:28;;;;:::i;:::-;:48;;;;:::i;:::-;24802:71;;24884:22;24942:17;24922;;24909:10;:30;;;;:::i;:::-;:50;;;;:::i;:::-;24884:75;;24972:20;25023:14;25008:12;24995:10;:25;;;;:::i;:::-;:42;;;;:::i;:::-;24972:65;;25068:1;25050:15;:19;;;;25098:1;25080:15;:19;;;;25130:1;25110:17;:21;;;;25170:1;25149:18;:22;:42;;;;;25190:1;25175:12;:16;25149:42;25145:275;;;25208:46;25221:18;25241:12;25208;:46::i;:::-;25274:134;25307:18;25344:12;25375:18;25274:134;;;;;;;;:::i;:::-;;;;;;;;25145:275;25510:17;;;;;;;;;;;25502:31;;25541:12;25502:56;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25488:70;;;;;25591:19;;;;;;;;;;;25583:33;;25624:21;25583:67;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25569:81;;;;;23982:1676;;;;;;;;;;23952:1706;:::o;7124:125::-;;;;:::o;7257:124::-;;;;:::o;22915:496::-;22975:21;23013:1;22999:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22975:40;;23044:4;23026;23031:1;23026:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23070:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23060:4;23065:1;23060:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;23105:62;23122:4;23137:15;23155:11;23105:8;:62::i;:::-;23206:15;:66;;;23287:11;23313:1;23330:4;23357;23377:15;23206:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22964:447;22915:496;:::o;23419:525::-;23567:62;23584:4;23599:15;23617:11;23567:8;:62::i;:::-;23672:15;:31;;;23711:9;23744:4;23764:11;23790:1;23833;23876:19;;;;;;;;;;;23910:15;23672:264;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23419:525;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:153::-;4252:9;4285:37;4316:5;4285:37;:::i;:::-;4272:50;;4175:153;;;:::o;4334:185::-;4448:64;4506:5;4448:64;:::i;:::-;4443:3;4436:77;4334:185;;:::o;4525:276::-;4645:4;4683:2;4672:9;4668:18;4660:26;;4696:98;4791:1;4780:9;4776:17;4767:6;4696:98;:::i;:::-;4525:276;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::o;5159:619::-;5236:6;5244;5252;5301:2;5289:9;5280:7;5276:23;5272:32;5269:119;;;5307:79;;:::i;:::-;5269:119;5427:1;5452:53;5497:7;5488:6;5477:9;5473:22;5452:53;:::i;:::-;5442:63;;5398:117;5554:2;5580:53;5625:7;5616:6;5605:9;5601:22;5580:53;:::i;:::-;5570:63;;5525:118;5682:2;5708:53;5753:7;5744:6;5733:9;5729:22;5708:53;:::i;:::-;5698:63;;5653:118;5159:619;;;;;:::o;5784:86::-;5819:7;5859:4;5852:5;5848:16;5837:27;;5784:86;;;:::o;5876:112::-;5959:22;5975:5;5959:22;:::i;:::-;5954:3;5947:35;5876:112;;:::o;5994:214::-;6083:4;6121:2;6110:9;6106:18;6098:26;;6134:67;6198:1;6187:9;6183:17;6174:6;6134:67;:::i;:::-;5994:214;;;;:::o;6214:118::-;6301:24;6319:5;6301:24;:::i;:::-;6296:3;6289:37;6214:118;;:::o;6338:222::-;6431:4;6469:2;6458:9;6454:18;6446:26;;6482:71;6550:1;6539:9;6535:17;6526:6;6482:71;:::i;:::-;6338:222;;;;:::o;6566:116::-;6636:21;6651:5;6636:21;:::i;:::-;6629:5;6626:32;6616:60;;6672:1;6669;6662:12;6616:60;6566:116;:::o;6688:133::-;6731:5;6769:6;6756:20;6747:29;;6785:30;6809:5;6785:30;:::i;:::-;6688:133;;;;:::o;6827:323::-;6883:6;6932:2;6920:9;6911:7;6907:23;6903:32;6900:119;;;6938:79;;:::i;:::-;6900:119;7058:1;7083:50;7125:7;7116:6;7105:9;7101:22;7083:50;:::i;:::-;7073:60;;7029:114;6827:323;;;;:::o;7156:468::-;7221:6;7229;7278:2;7266:9;7257:7;7253:23;7249:32;7246:119;;;7284:79;;:::i;:::-;7246:119;7404:1;7429:53;7474:7;7465:6;7454:9;7450:22;7429:53;:::i;:::-;7419:63;;7375:117;7531:2;7557:50;7599:7;7590:6;7579:9;7575:22;7557:50;:::i;:::-;7547:60;;7502:115;7156:468;;;;;:::o;7630:329::-;7689:6;7738:2;7726:9;7717:7;7713:23;7709:32;7706:119;;;7744:79;;:::i;:::-;7706:119;7864:1;7889:53;7934:7;7925:6;7914:9;7910:22;7889:53;:::i;:::-;7879:63;;7835:117;7630:329;;;;:::o;7965:93::-;8001:7;8041:10;8034:5;8030:22;8019:33;;7965:93;;;:::o;8064:120::-;8136:23;8153:5;8136:23;:::i;:::-;8129:5;8126:34;8116:62;;8174:1;8171;8164:12;8116:62;8064:120;:::o;8190:137::-;8235:5;8273:6;8260:20;8251:29;;8289:32;8315:5;8289:32;:::i;:::-;8190:137;;;;:::o;8333:470::-;8399:6;8407;8456:2;8444:9;8435:7;8431:23;8427:32;8424:119;;;8462:79;;:::i;:::-;8424:119;8582:1;8607:52;8651:7;8642:6;8631:9;8627:22;8607:52;:::i;:::-;8597:62;;8553:116;8708:2;8734:52;8778:7;8769:6;8758:9;8754:22;8734:52;:::i;:::-;8724:62;;8679:117;8333:470;;;;;:::o;8809:474::-;8877:6;8885;8934:2;8922:9;8913:7;8909:23;8905:32;8902:119;;;8940:79;;:::i;:::-;8902:119;9060:1;9085:53;9130:7;9121:6;9110:9;9106:22;9085:53;:::i;:::-;9075:63;;9031:117;9187:2;9213:53;9258:7;9249:6;9238:9;9234:22;9213:53;:::i;:::-;9203:63;;9158:118;8809:474;;;;;:::o;9289:118::-;9360:22;9376:5;9360:22;:::i;:::-;9353:5;9350:33;9340:61;;9397:1;9394;9387:12;9340:61;9289:118;:::o;9413:135::-;9457:5;9495:6;9482:20;9473:29;;9511:31;9536:5;9511:31;:::i;:::-;9413:135;;;;:::o;9554:1033::-;9646:6;9654;9662;9670;9678;9686;9735:3;9723:9;9714:7;9710:23;9706:33;9703:120;;;9742:79;;:::i;:::-;9703:120;9862:1;9887:51;9930:7;9921:6;9910:9;9906:22;9887:51;:::i;:::-;9877:61;;9833:115;9987:2;10013:51;10056:7;10047:6;10036:9;10032:22;10013:51;:::i;:::-;10003:61;;9958:116;10113:2;10139:51;10182:7;10173:6;10162:9;10158:22;10139:51;:::i;:::-;10129:61;;10084:116;10239:2;10265:51;10308:7;10299:6;10288:9;10284:22;10265:51;:::i;:::-;10255:61;;10210:116;10365:3;10392:51;10435:7;10426:6;10415:9;10411:22;10392:51;:::i;:::-;10382:61;;10336:117;10492:3;10519:51;10562:7;10553:6;10542:9;10538:22;10519:51;:::i;:::-;10509:61;;10463:117;9554:1033;;;;;;;;:::o;10593:182::-;10733:34;10729:1;10721:6;10717:14;10710:58;10593:182;:::o;10781:366::-;10923:3;10944:67;11008:2;11003:3;10944:67;:::i;:::-;10937:74;;11020:93;11109:3;11020:93;:::i;:::-;11138:2;11133:3;11129:12;11122:19;;10781:366;;;:::o;11153:419::-;11319:4;11357:2;11346:9;11342:18;11334:26;;11406:9;11400:4;11396:20;11392:1;11381:9;11377:17;11370:47;11434:131;11560:4;11434:131;:::i;:::-;11426:139;;11153:419;;;:::o;11578:180::-;11626:77;11623:1;11616:88;11723:4;11720:1;11713:15;11747:4;11744:1;11737:15;11764:320;11808:6;11845:1;11839:4;11835:12;11825:22;;11892:1;11886:4;11882:12;11913:18;11903:81;;11969:4;11961:6;11957:17;11947:27;;11903:81;12031:2;12023:6;12020:14;12000:18;11997:38;11994:84;;;12050:18;;:::i;:::-;11994:84;11815:269;11764:320;;;:::o;12090:227::-;12230:34;12226:1;12218:6;12214:14;12207:58;12299:10;12294:2;12286:6;12282:15;12275:35;12090:227;:::o;12323:366::-;12465:3;12486:67;12550:2;12545:3;12486:67;:::i;:::-;12479:74;;12562:93;12651:3;12562:93;:::i;:::-;12680:2;12675:3;12671:12;12664:19;;12323:366;;;:::o;12695:419::-;12861:4;12899:2;12888:9;12884:18;12876:26;;12948:9;12942:4;12938:20;12934:1;12923:9;12919:17;12912:47;12976:131;13102:4;12976:131;:::i;:::-;12968:139;;12695:419;;;:::o;13120:180::-;13168:77;13165:1;13158:88;13265:4;13262:1;13255:15;13289:4;13286:1;13279:15;13306:305;13346:3;13365:20;13383:1;13365:20;:::i;:::-;13360:25;;13399:20;13417:1;13399:20;:::i;:::-;13394:25;;13553:1;13485:66;13481:74;13478:1;13475:81;13472:107;;;13559:18;;:::i;:::-;13472:107;13603:1;13600;13596:9;13589:16;;13306:305;;;;:::o;13617:244::-;13757:34;13753:1;13745:6;13741:14;13734:58;13826:27;13821:2;13813:6;13809:15;13802:52;13617:244;:::o;13867:366::-;14009:3;14030:67;14094:2;14089:3;14030:67;:::i;:::-;14023:74;;14106:93;14195:3;14106:93;:::i;:::-;14224:2;14219:3;14215:12;14208:19;;13867:366;;;:::o;14239:419::-;14405:4;14443:2;14432:9;14428:18;14420:26;;14492:9;14486:4;14482:20;14478:1;14467:9;14463:17;14456:47;14520:131;14646:4;14520:131;:::i;:::-;14512:139;;14239:419;;;:::o;14664:224::-;14804:34;14800:1;14792:6;14788:14;14781:58;14873:7;14868:2;14860:6;14856:15;14849:32;14664:224;:::o;14894:366::-;15036:3;15057:67;15121:2;15116:3;15057:67;:::i;:::-;15050:74;;15133:93;15222:3;15133:93;:::i;:::-;15251:2;15246:3;15242:12;15235:19;;14894:366;;;:::o;15266:419::-;15432:4;15470:2;15459:9;15455:18;15447:26;;15519:9;15513:4;15509:20;15505:1;15494:9;15490:17;15483:47;15547:131;15673:4;15547:131;:::i;:::-;15539:139;;15266:419;;;:::o;15691:348::-;15731:7;15754:20;15772:1;15754:20;:::i;:::-;15749:25;;15788:20;15806:1;15788:20;:::i;:::-;15783:25;;15976:1;15908:66;15904:74;15901:1;15898:81;15893:1;15886:9;15879:17;15875:105;15872:131;;;15983:18;;:::i;:::-;15872:131;16031:1;16028;16024:9;16013:20;;15691:348;;;;:::o;16045:180::-;16093:77;16090:1;16083:88;16190:4;16187:1;16180:15;16214:4;16211:1;16204:15;16231:185;16271:1;16288:20;16306:1;16288:20;:::i;:::-;16283:25;;16322:20;16340:1;16322:20;:::i;:::-;16317:25;;16361:1;16351:35;;16366:18;;:::i;:::-;16351:35;16408:1;16405;16401:9;16396:14;;16231:185;;;;:::o;16422:240::-;16562:34;16558:1;16550:6;16546:14;16539:58;16631:23;16626:2;16618:6;16614:15;16607:48;16422:240;:::o;16668:366::-;16810:3;16831:67;16895:2;16890:3;16831:67;:::i;:::-;16824:74;;16907:93;16996:3;16907:93;:::i;:::-;17025:2;17020:3;17016:12;17009:19;;16668:366;;;:::o;17040:419::-;17206:4;17244:2;17233:9;17229:18;17221:26;;17293:9;17287:4;17283:20;17279:1;17268:9;17264:17;17257:47;17321:131;17447:4;17321:131;:::i;:::-;17313:139;;17040:419;;;:::o;17465:239::-;17605:34;17601:1;17593:6;17589:14;17582:58;17674:22;17669:2;17661:6;17657:15;17650:47;17465:239;:::o;17710:366::-;17852:3;17873:67;17937:2;17932:3;17873:67;:::i;:::-;17866:74;;17949:93;18038:3;17949:93;:::i;:::-;18067:2;18062:3;18058:12;18051:19;;17710:366;;;:::o;18082:419::-;18248:4;18286:2;18275:9;18271:18;18263:26;;18335:9;18329:4;18325:20;18321:1;18310:9;18306:17;18299:47;18363:131;18489:4;18363:131;:::i;:::-;18355:139;;18082:419;;;:::o;18507:225::-;18647:34;18643:1;18635:6;18631:14;18624:58;18716:8;18711:2;18703:6;18699:15;18692:33;18507:225;:::o;18738:366::-;18880:3;18901:67;18965:2;18960:3;18901:67;:::i;:::-;18894:74;;18977:93;19066:3;18977:93;:::i;:::-;19095:2;19090:3;19086:12;19079:19;;18738:366;;;:::o;19110:419::-;19276:4;19314:2;19303:9;19299:18;19291:26;;19363:9;19357:4;19353:20;19349:1;19338:9;19334:17;19327:47;19391:131;19517:4;19391:131;:::i;:::-;19383:139;;19110:419;;;:::o;19535:223::-;19675:34;19671:1;19663:6;19659:14;19652:58;19744:6;19739:2;19731:6;19727:15;19720:31;19535:223;:::o;19764:366::-;19906:3;19927:67;19991:2;19986:3;19927:67;:::i;:::-;19920:74;;20003:93;20092:3;20003:93;:::i;:::-;20121:2;20116:3;20112:12;20105:19;;19764:366;;;:::o;20136:419::-;20302:4;20340:2;20329:9;20325:18;20317:26;;20389:9;20383:4;20379:20;20375:1;20364:9;20360:17;20353:47;20417:131;20543:4;20417:131;:::i;:::-;20409:139;;20136:419;;;:::o;20561:221::-;20701:34;20697:1;20689:6;20685:14;20678:58;20770:4;20765:2;20757:6;20753:15;20746:29;20561:221;:::o;20788:366::-;20930:3;20951:67;21015:2;21010:3;20951:67;:::i;:::-;20944:74;;21027:93;21116:3;21027:93;:::i;:::-;21145:2;21140:3;21136:12;21129:19;;20788:366;;;:::o;21160:419::-;21326:4;21364:2;21353:9;21349:18;21341:26;;21413:9;21407:4;21403:20;21399:1;21388:9;21384:17;21377:47;21441:131;21567:4;21441:131;:::i;:::-;21433:139;;21160:419;;;:::o;21585:224::-;21725:34;21721:1;21713:6;21709:14;21702:58;21794:7;21789:2;21781:6;21777:15;21770:32;21585:224;:::o;21815:366::-;21957:3;21978:67;22042:2;22037:3;21978:67;:::i;:::-;21971:74;;22054:93;22143:3;22054:93;:::i;:::-;22172:2;22167:3;22163:12;22156:19;;21815:366;;;:::o;22187:419::-;22353:4;22391:2;22380:9;22376:18;22368:26;;22440:9;22434:4;22430:20;22426:1;22415:9;22411:17;22404:47;22468:131;22594:4;22468:131;:::i;:::-;22460:139;;22187:419;;;:::o;22612:222::-;22752:34;22748:1;22740:6;22736:14;22729:58;22821:5;22816:2;22808:6;22804:15;22797:30;22612:222;:::o;22840:366::-;22982:3;23003:67;23067:2;23062:3;23003:67;:::i;:::-;22996:74;;23079:93;23168:3;23079:93;:::i;:::-;23197:2;23192:3;23188:12;23181:19;;22840:366;;;:::o;23212:419::-;23378:4;23416:2;23405:9;23401:18;23393:26;;23465:9;23459:4;23455:20;23451:1;23440:9;23436:17;23429:47;23493:131;23619:4;23493:131;:::i;:::-;23485:139;;23212:419;;;:::o;23637:172::-;23777:24;23773:1;23765:6;23761:14;23754:48;23637:172;:::o;23815:366::-;23957:3;23978:67;24042:2;24037:3;23978:67;:::i;:::-;23971:74;;24054:93;24143:3;24054:93;:::i;:::-;24172:2;24167:3;24163:12;24156:19;;23815:366;;;:::o;24187:419::-;24353:4;24391:2;24380:9;24376:18;24368:26;;24440:9;24434:4;24430:20;24426:1;24415:9;24411:17;24404:47;24468:131;24594:4;24468:131;:::i;:::-;24460:139;;24187:419;;;:::o;24612:240::-;24752:34;24748:1;24740:6;24736:14;24729:58;24821:23;24816:2;24808:6;24804:15;24797:48;24612:240;:::o;24858:366::-;25000:3;25021:67;25085:2;25080:3;25021:67;:::i;:::-;25014:74;;25097:93;25186:3;25097:93;:::i;:::-;25215:2;25210:3;25206:12;25199:19;;24858:366;;;:::o;25230:419::-;25396:4;25434:2;25423:9;25419:18;25411:26;;25483:9;25477:4;25473:20;25469:1;25458:9;25454:17;25447:47;25511:131;25637:4;25511:131;:::i;:::-;25503:139;;25230:419;;;:::o;25655:169::-;25795:21;25791:1;25783:6;25779:14;25772:45;25655:169;:::o;25830:366::-;25972:3;25993:67;26057:2;26052:3;25993:67;:::i;:::-;25986:74;;26069:93;26158:3;26069:93;:::i;:::-;26187:2;26182:3;26178:12;26171:19;;25830:366;;;:::o;26202:419::-;26368:4;26406:2;26395:9;26391:18;26383:26;;26455:9;26449:4;26445:20;26441:1;26430:9;26426:17;26419:47;26483:131;26609:4;26483:131;:::i;:::-;26475:139;;26202:419;;;:::o;26627:241::-;26767:34;26763:1;26755:6;26751:14;26744:58;26836:24;26831:2;26823:6;26819:15;26812:49;26627:241;:::o;26874:366::-;27016:3;27037:67;27101:2;27096:3;27037:67;:::i;:::-;27030:74;;27113:93;27202:3;27113:93;:::i;:::-;27231:2;27226:3;27222:12;27215:19;;26874:366;;;:::o;27246:419::-;27412:4;27450:2;27439:9;27435:18;27427:26;;27499:9;27493:4;27489:20;27485:1;27474:9;27470:17;27463:47;27527:131;27653:4;27527:131;:::i;:::-;27519:139;;27246:419;;;:::o;27671:191::-;27711:4;27731:20;27749:1;27731:20;:::i;:::-;27726:25;;27765:20;27783:1;27765:20;:::i;:::-;27760:25;;27804:1;27801;27798:8;27795:34;;;27809:18;;:::i;:::-;27795:34;27854:1;27851;27847:9;27839:17;;27671:191;;;;:::o;27868:225::-;28008:34;28004:1;27996:6;27992:14;27985:58;28077:8;28072:2;28064:6;28060:15;28053:33;27868:225;:::o;28099:366::-;28241:3;28262:67;28326:2;28321:3;28262:67;:::i;:::-;28255:74;;28338:93;28427:3;28338:93;:::i;:::-;28456:2;28451:3;28447:12;28440:19;;28099:366;;;:::o;28471:419::-;28637:4;28675:2;28664:9;28660:18;28652:26;;28724:9;28718:4;28714:20;28710:1;28699:9;28695:17;28688:47;28752:131;28878:4;28752:131;:::i;:::-;28744:139;;28471:419;;;:::o;28896:442::-;29045:4;29083:2;29072:9;29068:18;29060:26;;29096:71;29164:1;29153:9;29149:17;29140:6;29096:71;:::i;:::-;29177:72;29245:2;29234:9;29230:18;29221:6;29177:72;:::i;:::-;29259;29327:2;29316:9;29312:18;29303:6;29259:72;:::i;:::-;28896:442;;;;;;:::o;29344:147::-;29445:11;29482:3;29467:18;;29344:147;;;;:::o;29497:114::-;;:::o;29617:398::-;29776:3;29797:83;29878:1;29873:3;29797:83;:::i;:::-;29790:90;;29889:93;29978:3;29889:93;:::i;:::-;30007:1;30002:3;29998:11;29991:18;;29617:398;;;:::o;30021:379::-;30205:3;30227:147;30370:3;30227:147;:::i;:::-;30220:154;;30391:3;30384:10;;30021:379;;;:::o;30406:180::-;30454:77;30451:1;30444:88;30551:4;30548:1;30541:15;30575:4;30572:1;30565:15;30592:180;30640:77;30637:1;30630:88;30737:4;30734:1;30727:15;30761:4;30758:1;30751:15;30778:143;30835:5;30866:6;30860:13;30851:22;;30882:33;30909:5;30882:33;:::i;:::-;30778:143;;;;:::o;30927:351::-;30997:6;31046:2;31034:9;31025:7;31021:23;31017:32;31014:119;;;31052:79;;:::i;:::-;31014:119;31172:1;31197:64;31253:7;31244:6;31233:9;31229:22;31197:64;:::i;:::-;31187:74;;31143:128;30927:351;;;;:::o;31284:85::-;31329:7;31358:5;31347:16;;31284:85;;;:::o;31375:158::-;31433:9;31466:61;31484:42;31493:32;31519:5;31493:32;:::i;:::-;31484:42;:::i;:::-;31466:61;:::i;:::-;31453:74;;31375:158;;;:::o;31539:147::-;31634:45;31673:5;31634:45;:::i;:::-;31629:3;31622:58;31539:147;;:::o;31692:114::-;31759:6;31793:5;31787:12;31777:22;;31692:114;;;:::o;31812:184::-;31911:11;31945:6;31940:3;31933:19;31985:4;31980:3;31976:14;31961:29;;31812:184;;;;:::o;32002:132::-;32069:4;32092:3;32084:11;;32122:4;32117:3;32113:14;32105:22;;32002:132;;;:::o;32140:108::-;32217:24;32235:5;32217:24;:::i;:::-;32212:3;32205:37;32140:108;;:::o;32254:179::-;32323:10;32344:46;32386:3;32378:6;32344:46;:::i;:::-;32422:4;32417:3;32413:14;32399:28;;32254:179;;;;:::o;32439:113::-;32509:4;32541;32536:3;32532:14;32524:22;;32439:113;;;:::o;32588:732::-;32707:3;32736:54;32784:5;32736:54;:::i;:::-;32806:86;32885:6;32880:3;32806:86;:::i;:::-;32799:93;;32916:56;32966:5;32916:56;:::i;:::-;32995:7;33026:1;33011:284;33036:6;33033:1;33030:13;33011:284;;;33112:6;33106:13;33139:63;33198:3;33183:13;33139:63;:::i;:::-;33132:70;;33225:60;33278:6;33225:60;:::i;:::-;33215:70;;33071:224;33058:1;33055;33051:9;33046:14;;33011:284;;;33015:14;33311:3;33304:10;;32712:608;;;32588:732;;;;:::o;33326:831::-;33589:4;33627:3;33616:9;33612:19;33604:27;;33641:71;33709:1;33698:9;33694:17;33685:6;33641:71;:::i;:::-;33722:80;33798:2;33787:9;33783:18;33774:6;33722:80;:::i;:::-;33849:9;33843:4;33839:20;33834:2;33823:9;33819:18;33812:48;33877:108;33980:4;33971:6;33877:108;:::i;:::-;33869:116;;33995:72;34063:2;34052:9;34048:18;34039:6;33995:72;:::i;:::-;34077:73;34145:3;34134:9;34130:19;34121:6;34077:73;:::i;:::-;33326:831;;;;;;;;:::o;34163:807::-;34412:4;34450:3;34439:9;34435:19;34427:27;;34464:71;34532:1;34521:9;34517:17;34508:6;34464:71;:::i;:::-;34545:72;34613:2;34602:9;34598:18;34589:6;34545:72;:::i;:::-;34627:80;34703:2;34692:9;34688:18;34679:6;34627:80;:::i;:::-;34717;34793:2;34782:9;34778:18;34769:6;34717:80;:::i;:::-;34807:73;34875:3;34864:9;34860:19;34851:6;34807:73;:::i;:::-;34890;34958:3;34947:9;34943:19;34934:6;34890:73;:::i;:::-;34163:807;;;;;;;;;:::o;34976:143::-;35033:5;35064:6;35058:13;35049:22;;35080:33;35107:5;35080:33;:::i;:::-;34976:143;;;;:::o;35125:663::-;35213:6;35221;35229;35278:2;35266:9;35257:7;35253:23;35249:32;35246:119;;;35284:79;;:::i;:::-;35246:119;35404:1;35429:64;35485:7;35476:6;35465:9;35461:22;35429:64;:::i;:::-;35419:74;;35375:128;35542:2;35568:64;35624:7;35615:6;35604:9;35600:22;35568:64;:::i;:::-;35558:74;;35513:129;35681:2;35707:64;35763:7;35754:6;35743:9;35739:22;35707:64;:::i;:::-;35697:74;;35652:129;35125:663;;;;;:::o

Swarm Source

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