ETH Price: $2,939.09 (+4.72%)
 

Overview

Max Total Supply

1,000,000,000 $POT

Holders

50

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
67,401,566.121294958860539261 $POT

Value
$0.00
0x645863d704ef7b38c6ff4842a8691bcb8bc6c788
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:
POT

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-20
*/

/**

 ▄░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▄
 ░_____________________█________________░
 ░____________________██________________░
 ░___________________████_______________░
 ░_____█____________█████__________█____░
 ░_____██__________██████_________██____░
 ░_____████_______███████_______███_____░
 ░_____██████____████████____█████_____ ░
 ░__█_____██████__██████__███████___█___░
 ░_██______██████_█████_████████____██_ ░
 ░_████_____██████_███_██████_____█████ ░
 ░__█████████__████_█_███_█_█████████__ ░
 ░_____█████████__█_█_█_███████████____ ░
 ░_________█████████████████████________░
 ░_______________███_█_████_____________░
 ░_____________█████_█__█████___________░
 ░___________██_______█_______██________░
 ░____________▀______▄█▄_______▀________░
   ░░░░░░░░░░░░░░░░.░░░░░░░░░░░░░░░░░░░
   ░░░░░░░░░.▄██░░░░░░░░░░░░░░░░░░░░░░░
   ░░░░░░░░.▄███░░▄███▄░░░▄▄▄▄░░░░░░░░░
   ░░░░░░░.██▀██░░██▀██░░██▀▀██░░░░░░░░ 
   ░░░░░.▄██▄▄██▄░░▄██▀░░██░░██░░░░░░░░ 
   ░░░░░░░░░░.██░░███▄▄░░██▄▄██░░░░░░░░ 
   ░░░░░░░░░.▄██▄░░░░░░░░░▀▀▀▀░░░░░░░░░
   ░░░░░░░░░░░░░░░░.░░░░░░░░░░░░░░░░░░░
   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
   ▀░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▀

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

$POT - No not a honeypot, pot that you smoke:

 Join the TG and relax on 4/20 
 - Team will be doing buy backs and burns!

 TG: https://t.me/+rhtPS8VQO1YyNThl

**/

// SPDX-License-Identifier: MIT

pragma solidity =0.8.10 >=0.8.10 >=0.8.0 <0.9.0;
pragma experimental ABIEncoderV2;

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

interface IERC20 {

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

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

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

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

library SafeMath {

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

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

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

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

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

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

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

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

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

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

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

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

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


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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}


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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

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

    bool private swapping;

    address public marketingWallet;
    address public devWallet;

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

    uint256 public percentForLPBurn = 25; // 25 = .25%
    bool public lpBurnEnabled = true;
    uint256 public lpBurnFrequency = 3600 seconds;
    uint256 public lastLpBurnTime;

    uint256 public manualBurnFrequency = 30 minutes;
    uint256 public lastManualLpBurnTime;

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

    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;

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

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

    mapping(address => bool) public automatedMarketMakerPairs;

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

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

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

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

    event AutoNukeLP();

    event ManualNukeLP();

    constructor() ERC20("$POT Token", unicode"$POT") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

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

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

        uint256 _buyMarketingFee = 7;
        uint256 _buyLiquidityFee = 1;
        uint256 _buyDevFee = 0;

        uint256 _sellMarketingFee = 8;
        uint256 _sellLiquidityFee = 1;
        uint256 _sellDevFee = 0;

        uint256 totalSupply = 1_000_000_000 * 1e18;

        maxTransactionAmount = 10_000_000 * 1e18;
        maxWallet = 20_000_000 * 1e18;
        swapTokensAtAmount = (totalSupply * 5) / 10000;

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

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;

        marketingWallet = address(0x059783Be6b0A91862bfa7Ec092d900c67214F0fF); // set as marketing wallet
        devWallet = address(0x059783Be6b0A91862bfa7Ec092d900c67214F0fF); // set as dev wallet

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

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

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

    receive() external payable {}

    // once enabled, can never be turned off
    function StartTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        lastLpBurnTime = block.timestamp;
    }

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

    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool) {
        transferDelayEnabled = false;
        return true;
    }

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

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 1000 ) / 1e18,
            "Cannot set maxTransactionAmount lower than 0.1%"
        );
        maxTransactionAmount = newNum * (10**18);
    }

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

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

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

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

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

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

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

    event BoughtEarly(address indexed sniper);

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

                if (transferDelayEnabled) {
                    if (
                        to != owner() &&
                        to != address(uniswapV2Router) &&
                        to != address(uniswapV2Pair)
                    ) {
                        require(
                            _holderLastTransferTimestamp[tx.origin] <
                                block.number,
                            "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                        );
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        if (
            !swapping &&
            automatedMarketMakerPairs[to] &&
            lpBurnEnabled &&
            block.timestamp >= lastLpBurnTime + lpBurnFrequency &&
            !_isExcludedFromFees[from]
        ) {
            autoBurnLiquidityPairTokens();
        }

        bool takeFee = !swapping;

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

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

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

            amount -= fees;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

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

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

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

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

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

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

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

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

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

        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;

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

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

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

    function setAutoLPBurnSettings(
        uint256 _frequencyInSeconds,
        uint256 _percent,
        bool _Enabled
    ) external onlyOwner {
        require(
            _frequencyInSeconds >= 600,
            "cannot set buyback more often than every 10 minutes"
        );
        require(
            _percent <= 1000 && _percent >= 0,
            "Must set auto LP burn percent between 0% and 10%"
        );
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        lpBurnEnabled = _Enabled;
    }

    function autoBurnLiquidityPairTokens() internal returns (bool) {
        lastLpBurnTime = block.timestamp;

        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);

        uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div(
            10000
        );

        if (amountToBurn > 0) {
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }

        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit AutoNukeLP();
        return true;
    }

    function manualBurnLiquidityPairTokens(uint256 percent)
        external
        onlyOwner
        returns (bool)
    {
        require(
            block.timestamp > lastManualLpBurnTime + manualBurnFrequency,
            "Must wait for cooldown to finish"
        );
        require(percent <= 1000, "May not nuke more than 10% of tokens in LP");
        lastManualLpBurnTime = block.timestamp;

        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);

        uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000);

        if (amountToBurn > 0) {
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }

        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit ManualNukeLP();
        return true;
    }
}

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":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","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":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[],"name":"StartTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526019600b556001600c60006101000a81548160ff021916908315150217905550610e10600d55610708600f556001601160006101000a81548160ff0219169083151502179055506000601160016101000a81548160ff0219169083151502179055506000601160026101000a81548160ff0219169083151502179055506001601360006101000a81548160ff021916908315150217905550348015620000a957600080fd5b506040518060400160405280600a81526020017f24504f5420546f6b656e000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f24504f540000000000000000000000000000000000000000000000000000000081525081600390805190602001906200012e92919062000b15565b5080600490805190602001906200014792919062000b15565b5050506200016a6200015e620005d560201b60201c565b620005dd60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000196816001620006a360201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000216573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023c919062000c2f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ca919062000c2f565b6040518363ffffffff1660e01b8152600401620002e992919062000c72565b6020604051808303816000875af115801562000309573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032f919062000c2f565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200037760a0516001620006a360201b60201c565b6200038c60a05160016200078d60201b60201c565b600060079050600060019050600080600890506000600190506000806b033b2e3c9fd0803ce800000090506a084595161401484a0000006008819055506a108b2a2c28029094000000600a81905550612710600582620003ed919062000cd8565b620003f9919062000d68565b60098190555086601581905550856016819055508460178190555060175460165460155462000429919062000da0565b62000435919062000da0565b6014819055508360198190555082601a8190555081601b81905550601b54601a5460195462000465919062000da0565b62000471919062000da0565b60188190555073059783be6b0a91862bfa7ec092d900c67214f0ff600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073059783be6b0a91862bfa7ec092d900c67214f0ff600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000543620005356200082e60201b60201c565b60016200085860201b60201c565b620005563060016200085860201b60201c565b6200056b61dead60016200085860201b60201c565b6200058d6200057f6200082e60201b60201c565b6001620006a360201b60201c565b620005a0306001620006a360201b60201c565b620005b561dead6001620006a360201b60201c565b620005c733826200099260201b60201c565b505050505050505062000fbf565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620006b3620005d560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006d96200082e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000732576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007299062000e5e565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000868620005d560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200088e6200082e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008de9062000e5e565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000986919062000e9d565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009fc9062000f0a565b60405180910390fd5b62000a196000838362000b0b60201b60201c565b806002600082825462000a2d919062000da0565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a84919062000da0565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000aeb919062000f3d565b60405180910390a362000b076000838362000b1060201b60201c565b5050565b505050565b505050565b82805462000b239062000f89565b90600052602060002090601f01602090048101928262000b47576000855562000b93565b82601f1062000b6257805160ff191683800117855562000b93565b8280016001018555821562000b93579182015b8281111562000b9257825182559160200191906001019062000b75565b5b50905062000ba2919062000ba6565b5090565b5b8082111562000bc157600081600090555060010162000ba7565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000bf78262000bca565b9050919050565b62000c098162000bea565b811462000c1557600080fd5b50565b60008151905062000c298162000bfe565b92915050565b60006020828403121562000c485762000c4762000bc5565b5b600062000c588482850162000c18565b91505092915050565b62000c6c8162000bea565b82525050565b600060408201905062000c89600083018562000c61565b62000c98602083018462000c61565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ce58262000c9f565b915062000cf28362000c9f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d2e5762000d2d62000ca9565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d758262000c9f565b915062000d828362000c9f565b92508262000d955762000d9462000d39565b5b828204905092915050565b600062000dad8262000c9f565b915062000dba8362000c9f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000df25762000df162000ca9565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000e4660208362000dfd565b915062000e538262000e0e565b602082019050919050565b6000602082019050818103600083015262000e798162000e37565b9050919050565b60008115159050919050565b62000e978162000e80565b82525050565b600060208201905062000eb4600083018462000e8c565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ef2601f8362000dfd565b915062000eff8262000eba565b602082019050919050565b6000602082019050818103600083015262000f258162000ee3565b9050919050565b62000f378162000c9f565b82525050565b600060208201905062000f54600083018462000f2c565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000fa257607f821691505b6020821081141562000fb95762000fb862000f5a565b5b50919050565b60805160a051615ad262001047600039600081816113b901528181611a750152818161267a015281816127310152818161275e01528181612da201528181613ea601528181613f5f0152613f8c015260008181610f5c01528181612d4a01528181614102015281816141e30152818161420a015281816142a601526142cd0152615ad26000f3fe6080604052600436106103a65760003560e01c80638da5cb5b116101e7578063bf6a1c0d1161010d578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b14610dcf578063f637434214610df8578063f8b45b0514610e23578063fe72b27a14610e4e576103ad565b8063dd62ed3e14610d11578063e2f4560514610d4e578063e884f26014610d79578063f11a24d314610da4576103ad565b8063c876d0b9116100dc578063c876d0b914610c53578063c8c8ebe414610c7e578063d257b34f14610ca9578063d85ba06314610ce6576103ad565b8063bf6a1c0d14610bc1578063c024666814610bd8578063c17b5b8c14610c01578063c18bc19514610c2a576103ad565b80639fccce3211610185578063a9059cbb11610154578063a9059cbb14610af3578063aacebbe314610b30578063b62496f514610b59578063bbc0c74214610b96576103ad565b80639fccce3214610a35578063a0d82dc514610a60578063a457c2d714610a8b578063a4c82a0014610ac8576103ad565b806395d89b41116101c157806395d89b411461098b5780639a7a23d6146109b65780639c3b4fdc146109df5780639ec22c0e14610a0a576103ad565b80638da5cb5b1461090a5780638ea5220f146109355780639213691314610960576103ad565b8063313ce567116102cc57806370a082311161026a5780637571336a116102395780637571336a1461086257806375f0a8741461088b5780637bce5a04146108b65780638095d564146108e1576103ad565b806370a08231146107ba578063715018a6146107f7578063730c18881461080e578063751039fc14610837576103ad565b80634a62bb65116102a65780634a62bb65146106fc5780634fbee193146107275780636a486a8e146107645780636ddd17131461078f576103ad565b8063313ce56714610669578063395093511461069457806349bd5a5e146106d1576103ad565b8063199ffc721161034457806323b872dd1161031357806323b872dd146105ab57806327c8f835146105e85780632c3e486c146106135780632e82f1a01461063e576103ad565b8063199ffc72146105015780631a8145bb1461052c5780631f3fed8f14610557578063203e727e14610582576103ad565b80631694505e116103805780631694505e1461045757806318160ddd146104825780631816467f146104ad578063184c16c5146104d6576103ad565b806306fdde03146103b2578063095ea7b3146103dd57806310d5de531461041a576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e8b565b6040516103d49190614415565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff91906144d0565b610f1d565b604051610411919061452b565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c9190614546565b610f3b565b60405161044e919061452b565b60405180910390f35b34801561046357600080fd5b5061046c610f5a565b60405161047991906145d2565b60405180910390f35b34801561048e57600080fd5b50610497610f7e565b6040516104a491906145fc565b60405180910390f35b3480156104b957600080fd5b506104d460048036038101906104cf9190614546565b610f88565b005b3480156104e257600080fd5b506104eb6110c4565b6040516104f891906145fc565b60405180910390f35b34801561050d57600080fd5b506105166110ca565b60405161052391906145fc565b60405180910390f35b34801561053857600080fd5b506105416110d0565b60405161054e91906145fc565b60405180910390f35b34801561056357600080fd5b5061056c6110d6565b60405161057991906145fc565b60405180910390f35b34801561058e57600080fd5b506105a960048036038101906105a49190614617565b6110dc565b005b3480156105b757600080fd5b506105d260048036038101906105cd9190614644565b6111eb565b6040516105df919061452b565b60405180910390f35b3480156105f457600080fd5b506105fd6112e3565b60405161060a91906146a6565b60405180910390f35b34801561061f57600080fd5b506106286112e9565b60405161063591906145fc565b60405180910390f35b34801561064a57600080fd5b506106536112ef565b604051610660919061452b565b60405180910390f35b34801561067557600080fd5b5061067e611302565b60405161068b91906146dd565b60405180910390f35b3480156106a057600080fd5b506106bb60048036038101906106b691906144d0565b61130b565b6040516106c8919061452b565b60405180910390f35b3480156106dd57600080fd5b506106e66113b7565b6040516106f391906146a6565b60405180910390f35b34801561070857600080fd5b506107116113db565b60405161071e919061452b565b60405180910390f35b34801561073357600080fd5b5061074e60048036038101906107499190614546565b6113ee565b60405161075b919061452b565b60405180910390f35b34801561077057600080fd5b50610779611444565b60405161078691906145fc565b60405180910390f35b34801561079b57600080fd5b506107a461144a565b6040516107b1919061452b565b60405180910390f35b3480156107c657600080fd5b506107e160048036038101906107dc9190614546565b61145d565b6040516107ee91906145fc565b60405180910390f35b34801561080357600080fd5b5061080c6114a5565b005b34801561081a57600080fd5b5061083560048036038101906108309190614724565b61152d565b005b34801561084357600080fd5b5061084c61166d565b604051610859919061452b565b60405180910390f35b34801561086e57600080fd5b5061088960048036038101906108849190614777565b61170d565b005b34801561089757600080fd5b506108a06117e4565b6040516108ad91906146a6565b60405180910390f35b3480156108c257600080fd5b506108cb61180a565b6040516108d891906145fc565b60405180910390f35b3480156108ed57600080fd5b50610908600480360381019061090391906147b7565b611810565b005b34801561091657600080fd5b5061091f61190f565b60405161092c91906146a6565b60405180910390f35b34801561094157600080fd5b5061094a611939565b60405161095791906146a6565b60405180910390f35b34801561096c57600080fd5b5061097561195f565b60405161098291906145fc565b60405180910390f35b34801561099757600080fd5b506109a0611965565b6040516109ad9190614415565b60405180910390f35b3480156109c257600080fd5b506109dd60048036038101906109d89190614777565b6119f7565b005b3480156109eb57600080fd5b506109f4611b10565b604051610a0191906145fc565b60405180910390f35b348015610a1657600080fd5b50610a1f611b16565b604051610a2c91906145fc565b60405180910390f35b348015610a4157600080fd5b50610a4a611b1c565b604051610a5791906145fc565b60405180910390f35b348015610a6c57600080fd5b50610a75611b22565b604051610a8291906145fc565b60405180910390f35b348015610a9757600080fd5b50610ab26004803603810190610aad91906144d0565b611b28565b604051610abf919061452b565b60405180910390f35b348015610ad457600080fd5b50610add611c13565b604051610aea91906145fc565b60405180910390f35b348015610aff57600080fd5b50610b1a6004803603810190610b1591906144d0565b611c19565b604051610b27919061452b565b60405180910390f35b348015610b3c57600080fd5b50610b576004803603810190610b529190614546565b611c37565b005b348015610b6557600080fd5b50610b806004803603810190610b7b9190614546565b611d73565b604051610b8d919061452b565b60405180910390f35b348015610ba257600080fd5b50610bab611d93565b604051610bb8919061452b565b60405180910390f35b348015610bcd57600080fd5b50610bd6611da6565b005b348015610be457600080fd5b50610bff6004803603810190610bfa9190614777565b611e61565b005b348015610c0d57600080fd5b50610c286004803603810190610c2391906147b7565b611f86565b005b348015610c3657600080fd5b50610c516004803603810190610c4c9190614617565b612085565b005b348015610c5f57600080fd5b50610c68612194565b604051610c75919061452b565b60405180910390f35b348015610c8a57600080fd5b50610c936121a7565b604051610ca091906145fc565b60405180910390f35b348015610cb557600080fd5b50610cd06004803603810190610ccb9190614617565b6121ad565b604051610cdd919061452b565b60405180910390f35b348015610cf257600080fd5b50610cfb612302565b604051610d0891906145fc565b60405180910390f35b348015610d1d57600080fd5b50610d386004803603810190610d33919061480a565b612308565b604051610d4591906145fc565b60405180910390f35b348015610d5a57600080fd5b50610d6361238f565b604051610d7091906145fc565b60405180910390f35b348015610d8557600080fd5b50610d8e612395565b604051610d9b919061452b565b60405180910390f35b348015610db057600080fd5b50610db9612435565b604051610dc691906145fc565b60405180910390f35b348015610ddb57600080fd5b50610df66004803603810190610df19190614546565b61243b565b005b348015610e0457600080fd5b50610e0d612533565b604051610e1a91906145fc565b60405180910390f35b348015610e2f57600080fd5b50610e38612539565b604051610e4591906145fc565b60405180910390f35b348015610e5a57600080fd5b50610e756004803603810190610e709190614617565b61253f565b604051610e82919061452b565b60405180910390f35b606060038054610e9a90614879565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec690614879565b8015610f135780601f10610ee857610100808354040283529160200191610f13565b820191906000526020600020905b815481529060010190602001808311610ef657829003601f168201915b5050505050905090565b6000610f31610f2a612817565b848461281f565b6001905092915050565b602080528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610f90612817565b73ffffffffffffffffffffffffffffffffffffffff16610fae61190f565b73ffffffffffffffffffffffffffffffffffffffff1614611004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffb906148f7565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b600b5481565b601d5481565b601c5481565b6110e4612817565b73ffffffffffffffffffffffffffffffffffffffff1661110261190f565b73ffffffffffffffffffffffffffffffffffffffff1614611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114f906148f7565b60405180910390fd5b670de0b6b3a76400006103e8600161116e610f7e565b6111789190614946565b61118291906149cf565b61118c91906149cf565b8110156111ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c590614a72565b60405180910390fd5b670de0b6b3a7640000816111e29190614946565b60088190555050565b60006111f88484846129ea565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611243612817565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156112c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ba90614b04565b60405180910390fd5b6112d7856112cf612817565b85840361281f565b60019150509392505050565b61dead81565b600d5481565b600c60009054906101000a900460ff1681565b60006012905090565b60006113ad611318612817565b848460016000611326612817565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a89190614b24565b61281f565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601160009054906101000a900460ff1681565b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60185481565b601160029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114ad612817565b73ffffffffffffffffffffffffffffffffffffffff166114cb61190f565b73ffffffffffffffffffffffffffffffffffffffff1614611521576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611518906148f7565b60405180910390fd5b61152b6000613782565b565b611535612817565b73ffffffffffffffffffffffffffffffffffffffff1661155361190f565b73ffffffffffffffffffffffffffffffffffffffff16146115a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a0906148f7565b60405180910390fd5b6102588310156115ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e590614bec565b60405180910390fd5b6103e88211158015611601575060008210155b611640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163790614c7e565b60405180910390fd5b82600d8190555081600b8190555080600c60006101000a81548160ff021916908315150217905550505050565b6000611677612817565b73ffffffffffffffffffffffffffffffffffffffff1661169561190f565b73ffffffffffffffffffffffffffffffffffffffff16146116eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e2906148f7565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b611715612817565b73ffffffffffffffffffffffffffffffffffffffff1661173361190f565b73ffffffffffffffffffffffffffffffffffffffff1614611789576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611780906148f7565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b611818612817565b73ffffffffffffffffffffffffffffffffffffffff1661183661190f565b73ffffffffffffffffffffffffffffffffffffffff161461188c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611883906148f7565b60405180910390fd5b8260158190555081601681905550806017819055506017546016546015546118b49190614b24565b6118be9190614b24565b601481905550600a601454111561190a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190190614cea565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b60606004805461197490614879565b80601f01602080910402602001604051908101604052809291908181526020018280546119a090614879565b80156119ed5780601f106119c2576101008083540402835291602001916119ed565b820191906000526020600020905b8154815290600101906020018083116119d057829003601f168201915b5050505050905090565b6119ff612817565b73ffffffffffffffffffffffffffffffffffffffff16611a1d61190f565b73ffffffffffffffffffffffffffffffffffffffff1614611a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6a906148f7565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af990614d7c565b60405180910390fd5b611b0c8282613848565b5050565b60175481565b60105481565b601e5481565b601b5481565b60008060016000611b37612817565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611beb90614e0e565b60405180910390fd5b611c08611bff612817565b8585840361281f565b600191505092915050565b600e5481565b6000611c2d611c26612817565b84846129ea565b6001905092915050565b611c3f612817565b73ffffffffffffffffffffffffffffffffffffffff16611c5d61190f565b73ffffffffffffffffffffffffffffffffffffffff1614611cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caa906148f7565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60216020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b611dae612817565b73ffffffffffffffffffffffffffffffffffffffff16611dcc61190f565b73ffffffffffffffffffffffffffffffffffffffff1614611e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e19906148f7565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff02191690831515021790555042600e81905550565b611e69612817565b73ffffffffffffffffffffffffffffffffffffffff16611e8761190f565b73ffffffffffffffffffffffffffffffffffffffff1614611edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed4906148f7565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f7a919061452b565b60405180910390a25050565b611f8e612817565b73ffffffffffffffffffffffffffffffffffffffff16611fac61190f565b73ffffffffffffffffffffffffffffffffffffffff1614612002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff9906148f7565b60405180910390fd5b8260198190555081601a8190555080601b81905550601b54601a5460195461202a9190614b24565b6120349190614b24565b601881905550600a6018541115612080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207790614cea565b60405180910390fd5b505050565b61208d612817565b73ffffffffffffffffffffffffffffffffffffffff166120ab61190f565b73ffffffffffffffffffffffffffffffffffffffff1614612101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f8906148f7565b60405180910390fd5b670de0b6b3a76400006103e86005612117610f7e565b6121219190614946565b61212b91906149cf565b61213591906149cf565b811015612177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216e90614ea0565b60405180910390fd5b670de0b6b3a76400008161218b9190614946565b600a8190555050565b601360009054906101000a900460ff1681565b60085481565b60006121b7612817565b73ffffffffffffffffffffffffffffffffffffffff166121d561190f565b73ffffffffffffffffffffffffffffffffffffffff161461222b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612222906148f7565b60405180910390fd5b620186a06001612239610f7e565b6122439190614946565b61224d91906149cf565b82101561228f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228690614f32565b60405180910390fd5b6103e8600561229c610f7e565b6122a69190614946565b6122b091906149cf565b8211156122f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e990614fc4565b60405180910390fd5b8160098190555060019050919050565b60145481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b600061239f612817565b73ffffffffffffffffffffffffffffffffffffffff166123bd61190f565b73ffffffffffffffffffffffffffffffffffffffff1614612413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240a906148f7565b60405180910390fd5b6000601360006101000a81548160ff0219169083151502179055506001905090565b60165481565b612443612817565b73ffffffffffffffffffffffffffffffffffffffff1661246161190f565b73ffffffffffffffffffffffffffffffffffffffff16146124b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ae906148f7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251e90615056565b60405180910390fd5b61253081613782565b50565b601a5481565b600a5481565b6000612549612817565b73ffffffffffffffffffffffffffffffffffffffff1661256761190f565b73ffffffffffffffffffffffffffffffffffffffff16146125bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b4906148f7565b60405180910390fd5b600f546010546125cd9190614b24565b421161260e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612605906150c2565b60405180910390fd5b6103e8821115612653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264a90615154565b60405180910390fd5b4260108190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016126b591906146a6565b602060405180830381865afa1580156126d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f69190615189565b9050600061272161271061271386856138e990919063ffffffff16565b6138ff90919063ffffffff16565b9050600081111561275a576127597f000000000000000000000000000000000000000000000000000000000000000061dead83613915565b5b60007f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156127c757600080fd5b505af11580156127db573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561288f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288690615228565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f6906152ba565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129dd91906145fc565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a519061534c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac1906153de565b60405180910390fd5b6000811415612ae457612adf83836000613915565b61377d565b601160009054906101000a900460ff16156131a757612b0161190f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612b6f5750612b3f61190f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ba85750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612be2575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bfb5750600560149054906101000a900460ff16155b156131a657601160019054906101000a900460ff16612cf557601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612cb55750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ceb9061544a565b60405180910390fd5b5b601360009054906101000a900460ff1615612ebd57612d1261190f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612d9957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612df157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612ebc5743601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612e77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6e90615502565b60405180910390fd5b43601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f605750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561300757600854811115612faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa190615594565b60405180910390fd5b600a54612fb68361145d565b82612fc19190614b24565b1115613002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff990615600565b60405180910390fd5b6131a5565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130aa5750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130f9576008548111156130f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130eb90615692565b60405180910390fd5b6131a4565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131a357600a546131568361145d565b826131619190614b24565b11156131a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319990615600565b60405180910390fd5b5b5b5b5b5b60006131b23061145d565b9050600060095482101590508080156131d75750601160029054906101000a900460ff165b80156131f05750600560149054906101000a900460ff16155b80156132465750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561329c5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132f25750601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613336576001600560146101000a81548160ff02191690831515021790555061331a613b96565b6000600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff1615801561339c5750602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156133b45750600c60009054906101000a900460ff165b80156133cf5750600d54600e546133cb9190614b24565b4210155b80156134255750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561343457613432613e7d565b505b6000600560149054906101000a900460ff16159050601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134ea5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134f457600090505b6000811561376d57602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561355757506000601854115b15613624576135846064613576601854886138e990919063ffffffff16565b6138ff90919063ffffffff16565b9050601854601a54826135979190614946565b6135a191906149cf565b601d60008282546135b29190614b24565b92505081905550601854601b54826135ca9190614946565b6135d491906149cf565b601e60008282546135e59190614b24565b92505081905550601854601954826135fd9190614946565b61360791906149cf565b601c60008282546136189190614b24565b92505081905550613749565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561367f57506000601454115b15613748576136ac606461369e601454886138e990919063ffffffff16565b6138ff90919063ffffffff16565b9050601454601654826136bf9190614946565b6136c991906149cf565b601d60008282546136da9190614b24565b92505081905550601454601754826136f29190614946565b6136fc91906149cf565b601e600082825461370d9190614b24565b92505081905550601454601554826137259190614946565b61372f91906149cf565b601c60008282546137409190614b24565b925050819055505b5b600081111561375e5761375d873083613915565b5b808561376a91906156b2565b94505b613778878787613915565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600081836138f79190614946565b905092915050565b6000818361390d91906149cf565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161397c9061534c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156139f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139ec906153de565b60405180910390fd5b613a00838383614043565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a7d90615758565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613b199190614b24565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613b7d91906145fc565b60405180910390a3613b90848484614048565b50505050565b6000613ba13061145d565b90506000601e54601c54601d54613bb89190614b24565b613bc29190614b24565b9050600080831480613bd45750600082145b15613be157505050613e7b565b6014600954613bf09190614946565b831115613c09576014600954613c069190614946565b92505b6000600283601d5486613c1c9190614946565b613c2691906149cf565b613c3091906149cf565b90506000613c47828661404d90919063ffffffff16565b90506000479050613c5782614063565b6000613c6c824761404d90919063ffffffff16565b90506000613c9787613c89601c54856138e990919063ffffffff16565b6138ff90919063ffffffff16565b90506000613cc288613cb4601e54866138e990919063ffffffff16565b6138ff90919063ffffffff16565b90506000818385613cd391906156b2565b613cdd91906156b2565b90506000601d819055506000601c819055506000601e81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613d3d906157a9565b60006040518083038185875af1925050503d8060008114613d7a576040519150601f19603f3d011682016040523d82523d6000602084013e613d7f565b606091505b505080985050600087118015613d955750600081115b15613de257613da487826142a0565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601d54604051613dd9939291906157be565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613e28906157a9565b60006040518083038185875af1925050503d8060008114613e65576040519150601f19603f3d011682016040523d82523d6000602084013e613e6a565b606091505b505080985050505050505050505050505b565b600042600e8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401613ee191906146a6565b602060405180830381865afa158015613efe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f229190615189565b90506000613f4f612710613f41600b54856138e990919063ffffffff16565b6138ff90919063ffffffff16565b90506000811115613f8857613f877f000000000000000000000000000000000000000000000000000000000000000061dead83613915565b5b60007f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613ff557600080fd5b505af1158015614009573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b505050565b505050565b6000818361405b91906156b2565b905092915050565b6000600267ffffffffffffffff8111156140805761407f6157f5565b5b6040519080825280602002602001820160405280156140ae5781602001602082028036833780820191505090505b50905030816000815181106140c6576140c5615824565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561416b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061418f9190615868565b816001815181106141a3576141a2615824565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614208307f00000000000000000000000000000000000000000000000000000000000000008461281f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161426a95949392919061598e565b600060405180830381600087803b15801561428457600080fd5b505af1158015614298573d6000803e3d6000fd5b505050505050565b6142cb307f00000000000000000000000000000000000000000000000000000000000000008461281f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401614332969594939291906159e8565b60606040518083038185885af1158015614350573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906143759190615a49565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143b657808201518184015260208101905061439b565b838111156143c5576000848401525b50505050565b6000601f19601f8301169050919050565b60006143e78261437c565b6143f18185614387565b9350614401818560208601614398565b61440a816143cb565b840191505092915050565b6000602082019050818103600083015261442f81846143dc565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006144678261443c565b9050919050565b6144778161445c565b811461448257600080fd5b50565b6000813590506144948161446e565b92915050565b6000819050919050565b6144ad8161449a565b81146144b857600080fd5b50565b6000813590506144ca816144a4565b92915050565b600080604083850312156144e7576144e6614437565b5b60006144f585828601614485565b9250506020614506858286016144bb565b9150509250929050565b60008115159050919050565b61452581614510565b82525050565b6000602082019050614540600083018461451c565b92915050565b60006020828403121561455c5761455b614437565b5b600061456a84828501614485565b91505092915050565b6000819050919050565b600061459861459361458e8461443c565b614573565b61443c565b9050919050565b60006145aa8261457d565b9050919050565b60006145bc8261459f565b9050919050565b6145cc816145b1565b82525050565b60006020820190506145e760008301846145c3565b92915050565b6145f68161449a565b82525050565b600060208201905061461160008301846145ed565b92915050565b60006020828403121561462d5761462c614437565b5b600061463b848285016144bb565b91505092915050565b60008060006060848603121561465d5761465c614437565b5b600061466b86828701614485565b935050602061467c86828701614485565b925050604061468d868287016144bb565b9150509250925092565b6146a08161445c565b82525050565b60006020820190506146bb6000830184614697565b92915050565b600060ff82169050919050565b6146d7816146c1565b82525050565b60006020820190506146f260008301846146ce565b92915050565b61470181614510565b811461470c57600080fd5b50565b60008135905061471e816146f8565b92915050565b60008060006060848603121561473d5761473c614437565b5b600061474b868287016144bb565b935050602061475c868287016144bb565b925050604061476d8682870161470f565b9150509250925092565b6000806040838503121561478e5761478d614437565b5b600061479c85828601614485565b92505060206147ad8582860161470f565b9150509250929050565b6000806000606084860312156147d0576147cf614437565b5b60006147de868287016144bb565b93505060206147ef868287016144bb565b9250506040614800868287016144bb565b9150509250925092565b6000806040838503121561482157614820614437565b5b600061482f85828601614485565b925050602061484085828601614485565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061489157607f821691505b602082108114156148a5576148a461484a565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006148e1602083614387565b91506148ec826148ab565b602082019050919050565b60006020820190508181036000830152614910816148d4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006149518261449a565b915061495c8361449a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561499557614994614917565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006149da8261449a565b91506149e58361449a565b9250826149f5576149f46149a0565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614a5c602f83614387565b9150614a6782614a00565b604082019050919050565b60006020820190508181036000830152614a8b81614a4f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614aee602883614387565b9150614af982614a92565b604082019050919050565b60006020820190508181036000830152614b1d81614ae1565b9050919050565b6000614b2f8261449a565b9150614b3a8361449a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b6f57614b6e614917565b5b828201905092915050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614bd6603383614387565b9150614be182614b7a565b604082019050919050565b60006020820190508181036000830152614c0581614bc9565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614c68603083614387565b9150614c7382614c0c565b604082019050919050565b60006020820190508181036000830152614c9781614c5b565b9050919050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b6000614cd4601d83614387565b9150614cdf82614c9e565b602082019050919050565b60006020820190508181036000830152614d0381614cc7565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614d66603983614387565b9150614d7182614d0a565b604082019050919050565b60006020820190508181036000830152614d9581614d59565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614df8602583614387565b9150614e0382614d9c565b604082019050919050565b60006020820190508181036000830152614e2781614deb565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614e8a602483614387565b9150614e9582614e2e565b604082019050919050565b60006020820190508181036000830152614eb981614e7d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614f1c603583614387565b9150614f2782614ec0565b604082019050919050565b60006020820190508181036000830152614f4b81614f0f565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614fae603483614387565b9150614fb982614f52565b604082019050919050565b60006020820190508181036000830152614fdd81614fa1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615040602683614387565b915061504b82614fe4565b604082019050919050565b6000602082019050818103600083015261506f81615033565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b60006150ac602083614387565b91506150b782615076565b602082019050919050565b600060208201905081810360008301526150db8161509f565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b600061513e602a83614387565b9150615149826150e2565b604082019050919050565b6000602082019050818103600083015261516d81615131565b9050919050565b600081519050615183816144a4565b92915050565b60006020828403121561519f5761519e614437565b5b60006151ad84828501615174565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615212602483614387565b915061521d826151b6565b604082019050919050565b6000602082019050818103600083015261524181615205565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006152a4602283614387565b91506152af82615248565b604082019050919050565b600060208201905081810360008301526152d381615297565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615336602583614387565b9150615341826152da565b604082019050919050565b6000602082019050818103600083015261536581615329565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006153c8602383614387565b91506153d38261536c565b604082019050919050565b600060208201905081810360008301526153f7816153bb565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000615434601683614387565b915061543f826153fe565b602082019050919050565b6000602082019050818103600083015261546381615427565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006154ec604983614387565b91506154f78261546a565b606082019050919050565b6000602082019050818103600083015261551b816154df565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061557e603583614387565b915061558982615522565b604082019050919050565b600060208201905081810360008301526155ad81615571565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006155ea601383614387565b91506155f5826155b4565b602082019050919050565b60006020820190508181036000830152615619816155dd565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061567c603683614387565b915061568782615620565b604082019050919050565b600060208201905081810360008301526156ab8161566f565b9050919050565b60006156bd8261449a565b91506156c88361449a565b9250828210156156db576156da614917565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615742602683614387565b915061574d826156e6565b604082019050919050565b6000602082019050818103600083015261577181615735565b9050919050565b600081905092915050565b50565b6000615793600083615778565b915061579e82615783565b600082019050919050565b60006157b482615786565b9150819050919050565b60006060820190506157d360008301866145ed565b6157e060208301856145ed565b6157ed60408301846145ed565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506158628161446e565b92915050565b60006020828403121561587e5761587d614437565b5b600061588c84828501615853565b91505092915050565b6000819050919050565b60006158ba6158b56158b084615895565b614573565b61449a565b9050919050565b6158ca8161589f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6159058161445c565b82525050565b600061591783836158fc565b60208301905092915050565b6000602082019050919050565b600061593b826158d0565b61594581856158db565b9350615950836158ec565b8060005b83811015615981578151615968888261590b565b975061597383615923565b925050600181019050615954565b5085935050505092915050565b600060a0820190506159a360008301886145ed565b6159b060208301876158c1565b81810360408301526159c28186615930565b90506159d16060830185614697565b6159de60808301846145ed565b9695505050505050565b600060c0820190506159fd6000830189614697565b615a0a60208301886145ed565b615a1760408301876158c1565b615a2460608301866158c1565b615a316080830185614697565b615a3e60a08301846145ed565b979650505050505050565b600080600060608486031215615a6257615a61614437565b5b6000615a7086828701615174565b9350506020615a8186828701615174565b9250506040615a9286828701615174565b915050925092509256fea264697066735822122035e1b86964d9c792d7ac3d490771e0fcf70bd7dbc537184f64d65257df5fd6ef64736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106103a65760003560e01c80638da5cb5b116101e7578063bf6a1c0d1161010d578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b14610dcf578063f637434214610df8578063f8b45b0514610e23578063fe72b27a14610e4e576103ad565b8063dd62ed3e14610d11578063e2f4560514610d4e578063e884f26014610d79578063f11a24d314610da4576103ad565b8063c876d0b9116100dc578063c876d0b914610c53578063c8c8ebe414610c7e578063d257b34f14610ca9578063d85ba06314610ce6576103ad565b8063bf6a1c0d14610bc1578063c024666814610bd8578063c17b5b8c14610c01578063c18bc19514610c2a576103ad565b80639fccce3211610185578063a9059cbb11610154578063a9059cbb14610af3578063aacebbe314610b30578063b62496f514610b59578063bbc0c74214610b96576103ad565b80639fccce3214610a35578063a0d82dc514610a60578063a457c2d714610a8b578063a4c82a0014610ac8576103ad565b806395d89b41116101c157806395d89b411461098b5780639a7a23d6146109b65780639c3b4fdc146109df5780639ec22c0e14610a0a576103ad565b80638da5cb5b1461090a5780638ea5220f146109355780639213691314610960576103ad565b8063313ce567116102cc57806370a082311161026a5780637571336a116102395780637571336a1461086257806375f0a8741461088b5780637bce5a04146108b65780638095d564146108e1576103ad565b806370a08231146107ba578063715018a6146107f7578063730c18881461080e578063751039fc14610837576103ad565b80634a62bb65116102a65780634a62bb65146106fc5780634fbee193146107275780636a486a8e146107645780636ddd17131461078f576103ad565b8063313ce56714610669578063395093511461069457806349bd5a5e146106d1576103ad565b8063199ffc721161034457806323b872dd1161031357806323b872dd146105ab57806327c8f835146105e85780632c3e486c146106135780632e82f1a01461063e576103ad565b8063199ffc72146105015780631a8145bb1461052c5780631f3fed8f14610557578063203e727e14610582576103ad565b80631694505e116103805780631694505e1461045757806318160ddd146104825780631816467f146104ad578063184c16c5146104d6576103ad565b806306fdde03146103b2578063095ea7b3146103dd57806310d5de531461041a576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e8b565b6040516103d49190614415565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff91906144d0565b610f1d565b604051610411919061452b565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c9190614546565b610f3b565b60405161044e919061452b565b60405180910390f35b34801561046357600080fd5b5061046c610f5a565b60405161047991906145d2565b60405180910390f35b34801561048e57600080fd5b50610497610f7e565b6040516104a491906145fc565b60405180910390f35b3480156104b957600080fd5b506104d460048036038101906104cf9190614546565b610f88565b005b3480156104e257600080fd5b506104eb6110c4565b6040516104f891906145fc565b60405180910390f35b34801561050d57600080fd5b506105166110ca565b60405161052391906145fc565b60405180910390f35b34801561053857600080fd5b506105416110d0565b60405161054e91906145fc565b60405180910390f35b34801561056357600080fd5b5061056c6110d6565b60405161057991906145fc565b60405180910390f35b34801561058e57600080fd5b506105a960048036038101906105a49190614617565b6110dc565b005b3480156105b757600080fd5b506105d260048036038101906105cd9190614644565b6111eb565b6040516105df919061452b565b60405180910390f35b3480156105f457600080fd5b506105fd6112e3565b60405161060a91906146a6565b60405180910390f35b34801561061f57600080fd5b506106286112e9565b60405161063591906145fc565b60405180910390f35b34801561064a57600080fd5b506106536112ef565b604051610660919061452b565b60405180910390f35b34801561067557600080fd5b5061067e611302565b60405161068b91906146dd565b60405180910390f35b3480156106a057600080fd5b506106bb60048036038101906106b691906144d0565b61130b565b6040516106c8919061452b565b60405180910390f35b3480156106dd57600080fd5b506106e66113b7565b6040516106f391906146a6565b60405180910390f35b34801561070857600080fd5b506107116113db565b60405161071e919061452b565b60405180910390f35b34801561073357600080fd5b5061074e60048036038101906107499190614546565b6113ee565b60405161075b919061452b565b60405180910390f35b34801561077057600080fd5b50610779611444565b60405161078691906145fc565b60405180910390f35b34801561079b57600080fd5b506107a461144a565b6040516107b1919061452b565b60405180910390f35b3480156107c657600080fd5b506107e160048036038101906107dc9190614546565b61145d565b6040516107ee91906145fc565b60405180910390f35b34801561080357600080fd5b5061080c6114a5565b005b34801561081a57600080fd5b5061083560048036038101906108309190614724565b61152d565b005b34801561084357600080fd5b5061084c61166d565b604051610859919061452b565b60405180910390f35b34801561086e57600080fd5b5061088960048036038101906108849190614777565b61170d565b005b34801561089757600080fd5b506108a06117e4565b6040516108ad91906146a6565b60405180910390f35b3480156108c257600080fd5b506108cb61180a565b6040516108d891906145fc565b60405180910390f35b3480156108ed57600080fd5b50610908600480360381019061090391906147b7565b611810565b005b34801561091657600080fd5b5061091f61190f565b60405161092c91906146a6565b60405180910390f35b34801561094157600080fd5b5061094a611939565b60405161095791906146a6565b60405180910390f35b34801561096c57600080fd5b5061097561195f565b60405161098291906145fc565b60405180910390f35b34801561099757600080fd5b506109a0611965565b6040516109ad9190614415565b60405180910390f35b3480156109c257600080fd5b506109dd60048036038101906109d89190614777565b6119f7565b005b3480156109eb57600080fd5b506109f4611b10565b604051610a0191906145fc565b60405180910390f35b348015610a1657600080fd5b50610a1f611b16565b604051610a2c91906145fc565b60405180910390f35b348015610a4157600080fd5b50610a4a611b1c565b604051610a5791906145fc565b60405180910390f35b348015610a6c57600080fd5b50610a75611b22565b604051610a8291906145fc565b60405180910390f35b348015610a9757600080fd5b50610ab26004803603810190610aad91906144d0565b611b28565b604051610abf919061452b565b60405180910390f35b348015610ad457600080fd5b50610add611c13565b604051610aea91906145fc565b60405180910390f35b348015610aff57600080fd5b50610b1a6004803603810190610b1591906144d0565b611c19565b604051610b27919061452b565b60405180910390f35b348015610b3c57600080fd5b50610b576004803603810190610b529190614546565b611c37565b005b348015610b6557600080fd5b50610b806004803603810190610b7b9190614546565b611d73565b604051610b8d919061452b565b60405180910390f35b348015610ba257600080fd5b50610bab611d93565b604051610bb8919061452b565b60405180910390f35b348015610bcd57600080fd5b50610bd6611da6565b005b348015610be457600080fd5b50610bff6004803603810190610bfa9190614777565b611e61565b005b348015610c0d57600080fd5b50610c286004803603810190610c2391906147b7565b611f86565b005b348015610c3657600080fd5b50610c516004803603810190610c4c9190614617565b612085565b005b348015610c5f57600080fd5b50610c68612194565b604051610c75919061452b565b60405180910390f35b348015610c8a57600080fd5b50610c936121a7565b604051610ca091906145fc565b60405180910390f35b348015610cb557600080fd5b50610cd06004803603810190610ccb9190614617565b6121ad565b604051610cdd919061452b565b60405180910390f35b348015610cf257600080fd5b50610cfb612302565b604051610d0891906145fc565b60405180910390f35b348015610d1d57600080fd5b50610d386004803603810190610d33919061480a565b612308565b604051610d4591906145fc565b60405180910390f35b348015610d5a57600080fd5b50610d6361238f565b604051610d7091906145fc565b60405180910390f35b348015610d8557600080fd5b50610d8e612395565b604051610d9b919061452b565b60405180910390f35b348015610db057600080fd5b50610db9612435565b604051610dc691906145fc565b60405180910390f35b348015610ddb57600080fd5b50610df66004803603810190610df19190614546565b61243b565b005b348015610e0457600080fd5b50610e0d612533565b604051610e1a91906145fc565b60405180910390f35b348015610e2f57600080fd5b50610e38612539565b604051610e4591906145fc565b60405180910390f35b348015610e5a57600080fd5b50610e756004803603810190610e709190614617565b61253f565b604051610e82919061452b565b60405180910390f35b606060038054610e9a90614879565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec690614879565b8015610f135780601f10610ee857610100808354040283529160200191610f13565b820191906000526020600020905b815481529060010190602001808311610ef657829003601f168201915b5050505050905090565b6000610f31610f2a612817565b848461281f565b6001905092915050565b602080528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610f90612817565b73ffffffffffffffffffffffffffffffffffffffff16610fae61190f565b73ffffffffffffffffffffffffffffffffffffffff1614611004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffb906148f7565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b600b5481565b601d5481565b601c5481565b6110e4612817565b73ffffffffffffffffffffffffffffffffffffffff1661110261190f565b73ffffffffffffffffffffffffffffffffffffffff1614611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114f906148f7565b60405180910390fd5b670de0b6b3a76400006103e8600161116e610f7e565b6111789190614946565b61118291906149cf565b61118c91906149cf565b8110156111ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c590614a72565b60405180910390fd5b670de0b6b3a7640000816111e29190614946565b60088190555050565b60006111f88484846129ea565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611243612817565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156112c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ba90614b04565b60405180910390fd5b6112d7856112cf612817565b85840361281f565b60019150509392505050565b61dead81565b600d5481565b600c60009054906101000a900460ff1681565b60006012905090565b60006113ad611318612817565b848460016000611326612817565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a89190614b24565b61281f565b6001905092915050565b7f0000000000000000000000001354992c038ce5c0f4a62d13ce412d4b43737f3781565b601160009054906101000a900460ff1681565b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60185481565b601160029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114ad612817565b73ffffffffffffffffffffffffffffffffffffffff166114cb61190f565b73ffffffffffffffffffffffffffffffffffffffff1614611521576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611518906148f7565b60405180910390fd5b61152b6000613782565b565b611535612817565b73ffffffffffffffffffffffffffffffffffffffff1661155361190f565b73ffffffffffffffffffffffffffffffffffffffff16146115a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a0906148f7565b60405180910390fd5b6102588310156115ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e590614bec565b60405180910390fd5b6103e88211158015611601575060008210155b611640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163790614c7e565b60405180910390fd5b82600d8190555081600b8190555080600c60006101000a81548160ff021916908315150217905550505050565b6000611677612817565b73ffffffffffffffffffffffffffffffffffffffff1661169561190f565b73ffffffffffffffffffffffffffffffffffffffff16146116eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e2906148f7565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b611715612817565b73ffffffffffffffffffffffffffffffffffffffff1661173361190f565b73ffffffffffffffffffffffffffffffffffffffff1614611789576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611780906148f7565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b611818612817565b73ffffffffffffffffffffffffffffffffffffffff1661183661190f565b73ffffffffffffffffffffffffffffffffffffffff161461188c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611883906148f7565b60405180910390fd5b8260158190555081601681905550806017819055506017546016546015546118b49190614b24565b6118be9190614b24565b601481905550600a601454111561190a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190190614cea565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b60606004805461197490614879565b80601f01602080910402602001604051908101604052809291908181526020018280546119a090614879565b80156119ed5780601f106119c2576101008083540402835291602001916119ed565b820191906000526020600020905b8154815290600101906020018083116119d057829003601f168201915b5050505050905090565b6119ff612817565b73ffffffffffffffffffffffffffffffffffffffff16611a1d61190f565b73ffffffffffffffffffffffffffffffffffffffff1614611a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6a906148f7565b60405180910390fd5b7f0000000000000000000000001354992c038ce5c0f4a62d13ce412d4b43737f3773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af990614d7c565b60405180910390fd5b611b0c8282613848565b5050565b60175481565b60105481565b601e5481565b601b5481565b60008060016000611b37612817565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611beb90614e0e565b60405180910390fd5b611c08611bff612817565b8585840361281f565b600191505092915050565b600e5481565b6000611c2d611c26612817565b84846129ea565b6001905092915050565b611c3f612817565b73ffffffffffffffffffffffffffffffffffffffff16611c5d61190f565b73ffffffffffffffffffffffffffffffffffffffff1614611cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caa906148f7565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60216020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b611dae612817565b73ffffffffffffffffffffffffffffffffffffffff16611dcc61190f565b73ffffffffffffffffffffffffffffffffffffffff1614611e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e19906148f7565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff02191690831515021790555042600e81905550565b611e69612817565b73ffffffffffffffffffffffffffffffffffffffff16611e8761190f565b73ffffffffffffffffffffffffffffffffffffffff1614611edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed4906148f7565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f7a919061452b565b60405180910390a25050565b611f8e612817565b73ffffffffffffffffffffffffffffffffffffffff16611fac61190f565b73ffffffffffffffffffffffffffffffffffffffff1614612002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff9906148f7565b60405180910390fd5b8260198190555081601a8190555080601b81905550601b54601a5460195461202a9190614b24565b6120349190614b24565b601881905550600a6018541115612080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207790614cea565b60405180910390fd5b505050565b61208d612817565b73ffffffffffffffffffffffffffffffffffffffff166120ab61190f565b73ffffffffffffffffffffffffffffffffffffffff1614612101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f8906148f7565b60405180910390fd5b670de0b6b3a76400006103e86005612117610f7e565b6121219190614946565b61212b91906149cf565b61213591906149cf565b811015612177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216e90614ea0565b60405180910390fd5b670de0b6b3a76400008161218b9190614946565b600a8190555050565b601360009054906101000a900460ff1681565b60085481565b60006121b7612817565b73ffffffffffffffffffffffffffffffffffffffff166121d561190f565b73ffffffffffffffffffffffffffffffffffffffff161461222b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612222906148f7565b60405180910390fd5b620186a06001612239610f7e565b6122439190614946565b61224d91906149cf565b82101561228f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228690614f32565b60405180910390fd5b6103e8600561229c610f7e565b6122a69190614946565b6122b091906149cf565b8211156122f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e990614fc4565b60405180910390fd5b8160098190555060019050919050565b60145481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b600061239f612817565b73ffffffffffffffffffffffffffffffffffffffff166123bd61190f565b73ffffffffffffffffffffffffffffffffffffffff1614612413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240a906148f7565b60405180910390fd5b6000601360006101000a81548160ff0219169083151502179055506001905090565b60165481565b612443612817565b73ffffffffffffffffffffffffffffffffffffffff1661246161190f565b73ffffffffffffffffffffffffffffffffffffffff16146124b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ae906148f7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251e90615056565b60405180910390fd5b61253081613782565b50565b601a5481565b600a5481565b6000612549612817565b73ffffffffffffffffffffffffffffffffffffffff1661256761190f565b73ffffffffffffffffffffffffffffffffffffffff16146125bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b4906148f7565b60405180910390fd5b600f546010546125cd9190614b24565b421161260e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612605906150c2565b60405180910390fd5b6103e8821115612653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264a90615154565b60405180910390fd5b4260108190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f0000000000000000000000001354992c038ce5c0f4a62d13ce412d4b43737f376040518263ffffffff1660e01b81526004016126b591906146a6565b602060405180830381865afa1580156126d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f69190615189565b9050600061272161271061271386856138e990919063ffffffff16565b6138ff90919063ffffffff16565b9050600081111561275a576127597f0000000000000000000000001354992c038ce5c0f4a62d13ce412d4b43737f3761dead83613915565b5b60007f0000000000000000000000001354992c038ce5c0f4a62d13ce412d4b43737f3790508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156127c757600080fd5b505af11580156127db573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561288f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288690615228565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f6906152ba565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129dd91906145fc565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a519061534c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac1906153de565b60405180910390fd5b6000811415612ae457612adf83836000613915565b61377d565b601160009054906101000a900460ff16156131a757612b0161190f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612b6f5750612b3f61190f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ba85750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612be2575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bfb5750600560149054906101000a900460ff16155b156131a657601160019054906101000a900460ff16612cf557601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612cb55750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ceb9061544a565b60405180910390fd5b5b601360009054906101000a900460ff1615612ebd57612d1261190f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612d9957507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612df157507f0000000000000000000000001354992c038ce5c0f4a62d13ce412d4b43737f3773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612ebc5743601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612e77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6e90615502565b60405180910390fd5b43601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f605750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561300757600854811115612faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa190615594565b60405180910390fd5b600a54612fb68361145d565b82612fc19190614b24565b1115613002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff990615600565b60405180910390fd5b6131a5565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130aa5750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130f9576008548111156130f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130eb90615692565b60405180910390fd5b6131a4565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131a357600a546131568361145d565b826131619190614b24565b11156131a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319990615600565b60405180910390fd5b5b5b5b5b5b60006131b23061145d565b9050600060095482101590508080156131d75750601160029054906101000a900460ff165b80156131f05750600560149054906101000a900460ff16155b80156132465750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561329c5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132f25750601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613336576001600560146101000a81548160ff02191690831515021790555061331a613b96565b6000600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff1615801561339c5750602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156133b45750600c60009054906101000a900460ff165b80156133cf5750600d54600e546133cb9190614b24565b4210155b80156134255750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561343457613432613e7d565b505b6000600560149054906101000a900460ff16159050601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134ea5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134f457600090505b6000811561376d57602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561355757506000601854115b15613624576135846064613576601854886138e990919063ffffffff16565b6138ff90919063ffffffff16565b9050601854601a54826135979190614946565b6135a191906149cf565b601d60008282546135b29190614b24565b92505081905550601854601b54826135ca9190614946565b6135d491906149cf565b601e60008282546135e59190614b24565b92505081905550601854601954826135fd9190614946565b61360791906149cf565b601c60008282546136189190614b24565b92505081905550613749565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561367f57506000601454115b15613748576136ac606461369e601454886138e990919063ffffffff16565b6138ff90919063ffffffff16565b9050601454601654826136bf9190614946565b6136c991906149cf565b601d60008282546136da9190614b24565b92505081905550601454601754826136f29190614946565b6136fc91906149cf565b601e600082825461370d9190614b24565b92505081905550601454601554826137259190614946565b61372f91906149cf565b601c60008282546137409190614b24565b925050819055505b5b600081111561375e5761375d873083613915565b5b808561376a91906156b2565b94505b613778878787613915565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600081836138f79190614946565b905092915050565b6000818361390d91906149cf565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161397c9061534c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156139f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139ec906153de565b60405180910390fd5b613a00838383614043565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a7d90615758565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613b199190614b24565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613b7d91906145fc565b60405180910390a3613b90848484614048565b50505050565b6000613ba13061145d565b90506000601e54601c54601d54613bb89190614b24565b613bc29190614b24565b9050600080831480613bd45750600082145b15613be157505050613e7b565b6014600954613bf09190614946565b831115613c09576014600954613c069190614946565b92505b6000600283601d5486613c1c9190614946565b613c2691906149cf565b613c3091906149cf565b90506000613c47828661404d90919063ffffffff16565b90506000479050613c5782614063565b6000613c6c824761404d90919063ffffffff16565b90506000613c9787613c89601c54856138e990919063ffffffff16565b6138ff90919063ffffffff16565b90506000613cc288613cb4601e54866138e990919063ffffffff16565b6138ff90919063ffffffff16565b90506000818385613cd391906156b2565b613cdd91906156b2565b90506000601d819055506000601c819055506000601e81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613d3d906157a9565b60006040518083038185875af1925050503d8060008114613d7a576040519150601f19603f3d011682016040523d82523d6000602084013e613d7f565b606091505b505080985050600087118015613d955750600081115b15613de257613da487826142a0565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601d54604051613dd9939291906157be565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613e28906157a9565b60006040518083038185875af1925050503d8060008114613e65576040519150601f19603f3d011682016040523d82523d6000602084013e613e6a565b606091505b505080985050505050505050505050505b565b600042600e8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f0000000000000000000000001354992c038ce5c0f4a62d13ce412d4b43737f376040518263ffffffff1660e01b8152600401613ee191906146a6565b602060405180830381865afa158015613efe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f229190615189565b90506000613f4f612710613f41600b54856138e990919063ffffffff16565b6138ff90919063ffffffff16565b90506000811115613f8857613f877f0000000000000000000000001354992c038ce5c0f4a62d13ce412d4b43737f3761dead83613915565b5b60007f0000000000000000000000001354992c038ce5c0f4a62d13ce412d4b43737f3790508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613ff557600080fd5b505af1158015614009573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b505050565b505050565b6000818361405b91906156b2565b905092915050565b6000600267ffffffffffffffff8111156140805761407f6157f5565b5b6040519080825280602002602001820160405280156140ae5781602001602082028036833780820191505090505b50905030816000815181106140c6576140c5615824565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561416b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061418f9190615868565b816001815181106141a3576141a2615824565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614208307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461281f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161426a95949392919061598e565b600060405180830381600087803b15801561428457600080fd5b505af1158015614298573d6000803e3d6000fd5b505050505050565b6142cb307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461281f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401614332969594939291906159e8565b60606040518083038185885af1158015614350573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906143759190615a49565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143b657808201518184015260208101905061439b565b838111156143c5576000848401525b50505050565b6000601f19601f8301169050919050565b60006143e78261437c565b6143f18185614387565b9350614401818560208601614398565b61440a816143cb565b840191505092915050565b6000602082019050818103600083015261442f81846143dc565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006144678261443c565b9050919050565b6144778161445c565b811461448257600080fd5b50565b6000813590506144948161446e565b92915050565b6000819050919050565b6144ad8161449a565b81146144b857600080fd5b50565b6000813590506144ca816144a4565b92915050565b600080604083850312156144e7576144e6614437565b5b60006144f585828601614485565b9250506020614506858286016144bb565b9150509250929050565b60008115159050919050565b61452581614510565b82525050565b6000602082019050614540600083018461451c565b92915050565b60006020828403121561455c5761455b614437565b5b600061456a84828501614485565b91505092915050565b6000819050919050565b600061459861459361458e8461443c565b614573565b61443c565b9050919050565b60006145aa8261457d565b9050919050565b60006145bc8261459f565b9050919050565b6145cc816145b1565b82525050565b60006020820190506145e760008301846145c3565b92915050565b6145f68161449a565b82525050565b600060208201905061461160008301846145ed565b92915050565b60006020828403121561462d5761462c614437565b5b600061463b848285016144bb565b91505092915050565b60008060006060848603121561465d5761465c614437565b5b600061466b86828701614485565b935050602061467c86828701614485565b925050604061468d868287016144bb565b9150509250925092565b6146a08161445c565b82525050565b60006020820190506146bb6000830184614697565b92915050565b600060ff82169050919050565b6146d7816146c1565b82525050565b60006020820190506146f260008301846146ce565b92915050565b61470181614510565b811461470c57600080fd5b50565b60008135905061471e816146f8565b92915050565b60008060006060848603121561473d5761473c614437565b5b600061474b868287016144bb565b935050602061475c868287016144bb565b925050604061476d8682870161470f565b9150509250925092565b6000806040838503121561478e5761478d614437565b5b600061479c85828601614485565b92505060206147ad8582860161470f565b9150509250929050565b6000806000606084860312156147d0576147cf614437565b5b60006147de868287016144bb565b93505060206147ef868287016144bb565b9250506040614800868287016144bb565b9150509250925092565b6000806040838503121561482157614820614437565b5b600061482f85828601614485565b925050602061484085828601614485565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061489157607f821691505b602082108114156148a5576148a461484a565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006148e1602083614387565b91506148ec826148ab565b602082019050919050565b60006020820190508181036000830152614910816148d4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006149518261449a565b915061495c8361449a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561499557614994614917565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006149da8261449a565b91506149e58361449a565b9250826149f5576149f46149a0565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614a5c602f83614387565b9150614a6782614a00565b604082019050919050565b60006020820190508181036000830152614a8b81614a4f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614aee602883614387565b9150614af982614a92565b604082019050919050565b60006020820190508181036000830152614b1d81614ae1565b9050919050565b6000614b2f8261449a565b9150614b3a8361449a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b6f57614b6e614917565b5b828201905092915050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614bd6603383614387565b9150614be182614b7a565b604082019050919050565b60006020820190508181036000830152614c0581614bc9565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614c68603083614387565b9150614c7382614c0c565b604082019050919050565b60006020820190508181036000830152614c9781614c5b565b9050919050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b6000614cd4601d83614387565b9150614cdf82614c9e565b602082019050919050565b60006020820190508181036000830152614d0381614cc7565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614d66603983614387565b9150614d7182614d0a565b604082019050919050565b60006020820190508181036000830152614d9581614d59565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614df8602583614387565b9150614e0382614d9c565b604082019050919050565b60006020820190508181036000830152614e2781614deb565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614e8a602483614387565b9150614e9582614e2e565b604082019050919050565b60006020820190508181036000830152614eb981614e7d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614f1c603583614387565b9150614f2782614ec0565b604082019050919050565b60006020820190508181036000830152614f4b81614f0f565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614fae603483614387565b9150614fb982614f52565b604082019050919050565b60006020820190508181036000830152614fdd81614fa1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615040602683614387565b915061504b82614fe4565b604082019050919050565b6000602082019050818103600083015261506f81615033565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b60006150ac602083614387565b91506150b782615076565b602082019050919050565b600060208201905081810360008301526150db8161509f565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b600061513e602a83614387565b9150615149826150e2565b604082019050919050565b6000602082019050818103600083015261516d81615131565b9050919050565b600081519050615183816144a4565b92915050565b60006020828403121561519f5761519e614437565b5b60006151ad84828501615174565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615212602483614387565b915061521d826151b6565b604082019050919050565b6000602082019050818103600083015261524181615205565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006152a4602283614387565b91506152af82615248565b604082019050919050565b600060208201905081810360008301526152d381615297565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615336602583614387565b9150615341826152da565b604082019050919050565b6000602082019050818103600083015261536581615329565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006153c8602383614387565b91506153d38261536c565b604082019050919050565b600060208201905081810360008301526153f7816153bb565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000615434601683614387565b915061543f826153fe565b602082019050919050565b6000602082019050818103600083015261546381615427565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006154ec604983614387565b91506154f78261546a565b606082019050919050565b6000602082019050818103600083015261551b816154df565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061557e603583614387565b915061558982615522565b604082019050919050565b600060208201905081810360008301526155ad81615571565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006155ea601383614387565b91506155f5826155b4565b602082019050919050565b60006020820190508181036000830152615619816155dd565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061567c603683614387565b915061568782615620565b604082019050919050565b600060208201905081810360008301526156ab8161566f565b9050919050565b60006156bd8261449a565b91506156c88361449a565b9250828210156156db576156da614917565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615742602683614387565b915061574d826156e6565b604082019050919050565b6000602082019050818103600083015261577181615735565b9050919050565b600081905092915050565b50565b6000615793600083615778565b915061579e82615783565b600082019050919050565b60006157b482615786565b9150819050919050565b60006060820190506157d360008301866145ed565b6157e060208301856145ed565b6157ed60408301846145ed565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506158628161446e565b92915050565b60006020828403121561587e5761587d614437565b5b600061588c84828501615853565b91505092915050565b6000819050919050565b60006158ba6158b56158b084615895565b614573565b61449a565b9050919050565b6158ca8161589f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6159058161445c565b82525050565b600061591783836158fc565b60208301905092915050565b6000602082019050919050565b600061593b826158d0565b61594581856158db565b9350615950836158ec565b8060005b83811015615981578151615968888261590b565b975061597383615923565b925050600181019050615954565b5085935050505092915050565b600060a0820190506159a360008301886145ed565b6159b060208301876158c1565b81810360408301526159c28186615930565b90506159d16060830185614697565b6159de60808301846145ed565b9695505050505050565b600060c0820190506159fd6000830189614697565b615a0a60208301886145ed565b615a1760408301876158c1565b615a2460608301866158c1565b615a316080830185614697565b615a3e60a08301846145ed565b979650505050505050565b600080600060608486031215615a6257615a61614437565b5b6000615a7086828701615174565b9350506020615a8186828701615174565b9250506040615a9286828701615174565b915050925092509256fea264697066735822122035e1b86964d9c792d7ac3d490771e0fcf70bd7dbc537184f64d65257df5fd6ef64736f6c634300080a0033

Deployed Bytecode Sourcemap

19672:17774:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6964:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8046:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21243:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19745:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7453:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27884:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20310:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20125:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21080:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21040;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25393:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8223:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19848:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20220:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20181:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7295:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8723:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19803:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20408:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28049:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20895:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20488:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7569:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4202:103;;;;;;;;;;;;;:::i;:::-;;35488:555;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24563:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25941:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19940:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20788;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26116:403;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3894:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19977:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20930:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7183:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27137:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20862:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20364:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21120:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21006:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8946:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20272:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7704:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27645:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21315:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20448:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24357:154;;;;;;;;;;;;;:::i;:::-;;26947:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26527:412;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25677:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20706:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20010:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24888:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20754:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7887:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20052:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24745:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20825:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4460:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20968:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20092:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36617:826;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6964:100;7018:13;7051:5;7044:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6964:100;:::o;8046:169::-;8129:4;8146:39;8155:12;:10;:12::i;:::-;8169:7;8178:6;8146:8;:39::i;:::-;8203:4;8196:11;;8046:169;;;;:::o;21243:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;19745:51::-;;;:::o;7453:108::-;7514:7;7541:12;;7534:19;;7453:108;:::o;27884:157::-;4125:12;:10;:12::i;:::-;4114:23;;:7;:5;:7::i;:::-;:23;;;4106:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27991:9:::1;;;;;;;;;;;27963:38;;27980:9;27963:38;;;;;;;;;;;;28024:9;28012;;:21;;;;;;;;;;;;;;;;;;27884:157:::0;:::o;20310:47::-;;;;:::o;20125:36::-;;;;:::o;21080:33::-;;;;:::o;21040:::-;;;;:::o;25393:276::-;4125:12;:10;:12::i;:::-;4114:23;;:7;:5;:7::i;:::-;:23;;;4106:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25531:4:::1;25522;25517:1;25501:13;:11;:13::i;:::-;:17;;;;:::i;:::-;25500:26;;;;:::i;:::-;25499:36;;;;:::i;:::-;25489:6;:46;;25467:143;;;;;;;;;;;;:::i;:::-;;;;;;;;;25654:6;25644;:17;;;;:::i;:::-;25621:20;:40;;;;25393:276:::0;:::o;8223:492::-;8363:4;8380:36;8390:6;8398:9;8409:6;8380:9;:36::i;:::-;8429:24;8456:11;:19;8468:6;8456:19;;;;;;;;;;;;;;;:33;8476:12;:10;:12::i;:::-;8456:33;;;;;;;;;;;;;;;;8429:60;;8528:6;8508:16;:26;;8500:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8615:57;8624:6;8632:12;:10;:12::i;:::-;8665:6;8646:16;:25;8615:8;:57::i;:::-;8703:4;8696:11;;;8223:492;;;;;:::o;19848:53::-;19894:6;19848:53;:::o;20220:45::-;;;;:::o;20181:32::-;;;;;;;;;;;;;:::o;7295:93::-;7353:5;7378:2;7371:9;;7295:93;:::o;8723:215::-;8811:4;8828:80;8837:12;:10;:12::i;:::-;8851:7;8897:10;8860:11;:25;8872:12;:10;:12::i;:::-;8860:25;;;;;;;;;;;;;;;:34;8886:7;8860:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;8828:8;:80::i;:::-;8926:4;8919:11;;8723:215;;;;:::o;19803:38::-;;;:::o;20408:33::-;;;;;;;;;;;;;:::o;28049:126::-;28115:4;28139:19;:28;28159:7;28139:28;;;;;;;;;;;;;;;;;;;;;;;;;28132:35;;28049:126;;;:::o;20895:28::-;;;;:::o;20488:31::-;;;;;;;;;;;;;:::o;7569:127::-;7643:7;7670:9;:18;7680:7;7670:18;;;;;;;;;;;;;;;;7663:25;;7569:127;;;:::o;4202:103::-;4125:12;:10;:12::i;:::-;4114:23;;:7;:5;:7::i;:::-;:23;;;4106:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4267:30:::1;4294:1;4267:18;:30::i;:::-;4202:103::o:0;35488:555::-;4125:12;:10;:12::i;:::-;4114:23;;:7;:5;:7::i;:::-;:23;;;4106:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35690:3:::1;35667:19;:26;;35645:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;35817:4;35805:8;:16;;:33;;;;;35837:1;35825:8;:13;;35805:33;35783:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;35943:19;35925:15;:37;;;;35992:8;35973:16;:27;;;;36027:8;36011:13;;:24;;;;;;;;;;;;;;;;;;35488:555:::0;;;:::o;24563:121::-;24615:4;4125:12;:10;:12::i;:::-;4114:23;;:7;:5;:7::i;:::-;:23;;;4106:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24649:5:::1;24632:14;;:22;;;;;;;;;;;;;;;;;;24672:4;24665:11;;24563:121:::0;:::o;25941:167::-;4125:12;:10;:12::i;:::-;4114:23;;:7;:5;:7::i;:::-;:23;;;4106:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26096:4:::1;26054:31;:39;26086:6;26054:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;25941:167:::0;;:::o;19940:30::-;;;;;;;;;;;;;:::o;20788:::-;;;;:::o;26116:403::-;4125:12;:10;:12::i;:::-;4114:23;;:7;:5;:7::i;:::-;:23;;;4106:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26284:13:::1;26266:15;:31;;;;26326:13;26308:15;:31;;;;26362:7;26350:9;:19;;;;26431:9;;26413:15;;26395;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;26380:12;:60;;;;26475:2;26459:12;;:18;;26451:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;26116:403:::0;;;:::o;3894:87::-;3940:7;3967:6;;;;;;;;;;;3960:13;;3894:87;:::o;19977:24::-;;;;;;;;;;;;;:::o;20930:31::-;;;;:::o;7183:104::-;7239:13;7272:7;7265:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7183:104;:::o;27137:304::-;4125:12;:10;:12::i;:::-;4114:23;;:7;:5;:7::i;:::-;:23;;;4106:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27281:13:::1;27273:21;;:4;:21;;;;27251:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;27392:41;27421:4;27427:5;27392:28;:41::i;:::-;27137:304:::0;;:::o;20862:24::-;;;;:::o;20364:35::-;;;;:::o;21120:27::-;;;;:::o;21006:25::-;;;;:::o;8946:413::-;9039:4;9056:24;9083:11;:25;9095:12;:10;:12::i;:::-;9083:25;;;;;;;;;;;;;;;:34;9109:7;9083:34;;;;;;;;;;;;;;;;9056:61;;9156:15;9136:16;:35;;9128:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;9249:67;9258:12;:10;:12::i;:::-;9272:7;9300:15;9281:16;:34;9249:8;:67::i;:::-;9347:4;9340:11;;;8946:413;;;;:::o;20272:29::-;;;;:::o;7704:175::-;7790:4;7807:42;7817:12;:10;:12::i;:::-;7831:9;7842:6;7807:9;:42::i;:::-;7867:4;7860:11;;7704:175;;;;:::o;27645:231::-;4125:12;:10;:12::i;:::-;4114:23;;:7;:5;:7::i;:::-;:23;;;4106:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27805:15:::1;;;;;;;;;;;27762:59;;27785:18;27762:59;;;;;;;;;;;;27850:18;27832:15;;:36;;;;;;;;;;;;;;;;;;27645:231:::0;:::o;21315:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;20448:33::-;;;;;;;;;;;;;:::o;24357:154::-;4125:12;:10;:12::i;:::-;4114:23;;:7;:5;:7::i;:::-;:23;;;4106:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24427:4:::1;24411:13;;:20;;;;;;;;;;;;;;;;;;24456:4;24442:11;;:18;;;;;;;;;;;;;;;;;;24488:15;24471:14;:32;;;;24357:154::o:0;26947:182::-;4125:12;:10;:12::i;:::-;4114:23;;:7;:5;:7::i;:::-;:23;;;4106:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27063:8:::1;27032:19;:28;27052:7;27032:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;27103:7;27087:34;;;27112:8;27087:34;;;;;;:::i;:::-;;;;;;;;26947:182:::0;;:::o;26527:412::-;4125:12;:10;:12::i;:::-;4114:23;;:7;:5;:7::i;:::-;:23;;;4106:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26697:13:::1;26678:16;:32;;;;26740:13;26721:16;:32;;;;26777:7;26764:10;:20;;;;26849:10;;26830:16;;26811;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;26795:13;:64;;;;26895:2;26878:13;;:19;;26870:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;26527:412:::0;;;:::o;25677:256::-;4125:12;:10;:12::i;:::-;4114:23;;:7;:5;:7::i;:::-;:23;;;4106:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25817:4:::1;25809;25804:1;25788:13;:11;:13::i;:::-;:17;;;;:::i;:::-;25787:26;;;;:::i;:::-;25786:35;;;;:::i;:::-;25776:6;:45;;25754:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;25918:6;25908;:17;;;;:::i;:::-;25896:9;:29;;;;25677:256:::0;:::o;20706:39::-;;;;;;;;;;;;;:::o;20010:35::-;;;;:::o;24888:497::-;24996:4;4125:12;:10;:12::i;:::-;4114:23;;:7;:5;:7::i;:::-;:23;;;4106:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25075:6:::1;25070:1;25054:13;:11;:13::i;:::-;:17;;;;:::i;:::-;25053:28;;;;:::i;:::-;25040:9;:41;;25018:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;25230:4;25225:1;25209:13;:11;:13::i;:::-;:17;;;;:::i;:::-;25208:26;;;;:::i;:::-;25195:9;:39;;25173:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;25346:9;25325:18;:30;;;;25373:4;25366:11;;24888:497:::0;;;:::o;20754:27::-;;;;:::o;7887:151::-;7976:7;8003:11;:18;8015:5;8003:18;;;;;;;;;;;;;;;:27;8022:7;8003:27;;;;;;;;;;;;;;;;7996:34;;7887:151;;;;:::o;20052:33::-;;;;:::o;24745:135::-;24805:4;4125:12;:10;:12::i;:::-;4114:23;;:7;:5;:7::i;:::-;:23;;;4106:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24845:5:::1;24822:20;;:28;;;;;;;;;;;;;;;;;;24868:4;24861:11;;24745:135:::0;:::o;20825:30::-;;;;:::o;4460:201::-;4125:12;:10;:12::i;:::-;4114:23;;:7;:5;:7::i;:::-;:23;;;4106:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4569:1:::1;4549:22;;:8;:22;;;;4541:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4625:28;4644:8;4625:18;:28::i;:::-;4460:201:::0;:::o;20968:31::-;;;;:::o;20092:24::-;;;;:::o;36617:826::-;36728:4;4125:12;:10;:12::i;:::-;4114:23;;:7;:5;:7::i;:::-;:23;;;4106:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36813:19:::1;;36790:20;;:42;;;;:::i;:::-;36772:15;:60;36750:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;36922:4;36911:7;:15;;36903:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;37007:15;36984:20;:38;;;;37035:28;37066:4;:14;;;37081:13;37066:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37035:60;;37108:20;37131:44;37169:5;37131:33;37156:7;37131:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;37108:67;;37207:1;37192:12;:16;37188:110;;;37225:61;37241:13;37264:6;37273:12;37225:15;:61::i;:::-;37188:110;37310:19;37347:13;37310:51;;37372:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;37399:14;;;;;;;;;;37431:4;37424:11;;;;;36617:826:::0;;;:::o;3268:98::-;3321:7;3348:10;3341:17;;3268:98;:::o;11114:380::-;11267:1;11250:19;;:5;:19;;;;11242:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11348:1;11329:21;;:7;:21;;;;11321:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11432:6;11402:11;:18;11414:5;11402:18;;;;;;;;;;;;;;;:27;11421:7;11402:27;;;;;;;;;;;;;;;:36;;;;11470:7;11454:32;;11463:5;11454:32;;;11479:6;11454:32;;;;;;:::i;:::-;;;;;;;;11114:380;;;:::o;28233:4673::-;28381:1;28365:18;;:4;:18;;;;28357:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28458:1;28444:16;;:2;:16;;;;28436:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28527:1;28517:6;:11;28513:93;;;28545:28;28561:4;28567:2;28571:1;28545:15;:28::i;:::-;28588:7;;28513:93;28622:14;;;;;;;;;;;28618:2355;;;28683:7;:5;:7::i;:::-;28675:15;;:4;:15;;;;:49;;;;;28717:7;:5;:7::i;:::-;28711:13;;:2;:13;;;;28675:49;:86;;;;;28759:1;28745:16;;:2;:16;;;;28675:86;:128;;;;;28796:6;28782:21;;:2;:21;;;;28675:128;:158;;;;;28825:8;;;;;;;;;;;28824:9;28675:158;28653:2309;;;28873:13;;;;;;;;;;;28868:223;;28945:19;:25;28965:4;28945:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;28974:19;:23;28994:2;28974:23;;;;;;;;;;;;;;;;;;;;;;;;;28945:52;28911:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;28868:223;29115:20;;;;;;;;;;;29111:641;;;29196:7;:5;:7::i;:::-;29190:13;;:2;:13;;;;:72;;;;;29246:15;29232:30;;:2;:30;;;;29190:72;:129;;;;;29305:13;29291:28;;:2;:28;;;;29190:129;29160:573;;;29483:12;29408:28;:39;29437:9;29408:39;;;;;;;;;;;;;;;;:87;29370:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;29697:12;29655:28;:39;29684:9;29655:39;;;;;;;;;;;;;;;:54;;;;29160:573;29111:641;29826:25;:31;29852:4;29826:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;29883:31;:35;29915:2;29883:35;;;;;;;;;;;;;;;;;;;;;;;;;29882:36;29826:92;29800:1147;;;30005:20;;29995:6;:30;;29961:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;30213:9;;30196:13;30206:2;30196:9;:13::i;:::-;30187:6;:22;;;;:::i;:::-;:35;;30153:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;29800:1147;;;30391:25;:29;30417:2;30391:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;30446:31;:37;30478:4;30446:37;;;;;;;;;;;;;;;;;;;;;;;;;30445:38;30391:92;30365:582;;;30570:20;;30560:6;:30;;30526:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;30365:582;;;30727:31;:35;30759:2;30727:35;;;;;;;;;;;;;;;;;;;;;;;;;30722:225;;30847:9;;30830:13;30840:2;30830:9;:13::i;:::-;30821:6;:22;;;;:::i;:::-;:35;;30787:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;30722:225;30365:582;29800:1147;28653:2309;28618:2355;30985:28;31016:24;31034:4;31016:9;:24::i;:::-;30985:55;;31053:12;31092:18;;31068:20;:42;;31053:57;;31141:7;:35;;;;;31165:11;;;;;;;;;;;31141:35;:61;;;;;31194:8;;;;;;;;;;;31193:9;31141:61;:110;;;;;31220:25;:31;31246:4;31220:31;;;;;;;;;;;;;;;;;;;;;;;;;31219:32;31141:110;:153;;;;;31269:19;:25;31289:4;31269:25;;;;;;;;;;;;;;;;;;;;;;;;;31268:26;31141:153;:194;;;;;31312:19;:23;31332:2;31312:23;;;;;;;;;;;;;;;;;;;;;;;;;31311:24;31141:194;31123:326;;;31373:4;31362:8;;:15;;;;;;;;;;;;;;;;;;31394:10;:8;:10::i;:::-;31432:5;31421:8;;:16;;;;;;;;;;;;;;;;;;31123:326;31480:8;;;;;;;;;;;31479:9;:55;;;;;31505:25;:29;31531:2;31505:29;;;;;;;;;;;;;;;;;;;;;;;;;31479:55;:85;;;;;31551:13;;;;;;;;;;;31479:85;:153;;;;;31617:15;;31600:14;;:32;;;;:::i;:::-;31581:15;:51;;31479:153;:196;;;;;31650:19;:25;31670:4;31650:25;;;;;;;;;;;;;;;;;;;;;;;;;31649:26;31479:196;31461:282;;;31702:29;:27;:29::i;:::-;;31461:282;31755:12;31771:8;;;;;;;;;;;31770:9;31755:24;;31796:19;:25;31816:4;31796:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;31825:19;:23;31845:2;31825:23;;;;;;;;;;;;;;;;;;;;;;;;;31796:52;31792:100;;;31875:5;31865:15;;31792:100;31904:12;31935:7;31931:922;;;31963:25;:29;31989:2;31963:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;32012:1;31996:13;;:17;31963:50;31959:745;;;32041:34;32071:3;32041:25;32052:13;;32041:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;32034:41;;32144:13;;32124:16;;32117:4;:23;;;;:::i;:::-;32116:41;;;;:::i;:::-;32094:18;;:63;;;;;;;:::i;:::-;;;;;;;;32214:13;;32200:10;;32193:4;:17;;;;:::i;:::-;32192:35;;;;:::i;:::-;32176:12;;:51;;;;;;;:::i;:::-;;;;;;;;32296:13;;32276:16;;32269:4;:23;;;;:::i;:::-;32268:41;;;;:::i;:::-;32246:18;;:63;;;;;;;:::i;:::-;;;;;;;;31959:745;;;32348:25;:31;32374:4;32348:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;32398:1;32383:12;;:16;32348:51;32344:360;;;32427:33;32456:3;32427:24;32438:12;;32427:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;32420:40;;32528:12;;32509:15;;32502:4;:22;;;;:::i;:::-;32501:39;;;;:::i;:::-;32479:18;;:61;;;;;;;:::i;:::-;;;;;;;;32596:12;;32583:9;;32576:4;:16;;;;:::i;:::-;32575:33;;;;:::i;:::-;32559:12;;:49;;;;;;;:::i;:::-;;;;;;;;32676:12;;32657:15;;32650:4;:22;;;;:::i;:::-;32649:39;;;;:::i;:::-;32627:18;;:61;;;;;;;:::i;:::-;;;;;;;;32344:360;31959:745;32731:1;32724:4;:8;32720:91;;;32753:42;32769:4;32783;32790;32753:15;:42::i;:::-;32720:91;32837:4;32827:14;;;;;:::i;:::-;;;31931:922;32865:33;32881:4;32887:2;32891:6;32865:15;:33::i;:::-;28346:4560;;;;28233:4673;;;;:::o;4821:191::-;4895:16;4914:6;;;;;;;;;;;4895:25;;4940:8;4931:6;;:17;;;;;;;;;;;;;;;;;;4995:8;4964:40;;4985:8;4964:40;;;;;;;;;;;;4884:128;4821:191;:::o;27449:188::-;27566:5;27532:25;:31;27558:4;27532:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;27623:5;27589:40;;27617:4;27589:40;;;;;;;;;;;;27449:188;;:::o;13353:98::-;13411:7;13442:1;13438;:5;;;;:::i;:::-;13431:12;;13353:98;;;;:::o;13459:::-;13517:7;13548:1;13544;:5;;;;:::i;:::-;13537:12;;13459:98;;;;:::o;9367:733::-;9525:1;9507:20;;:6;:20;;;;9499:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9609:1;9588:23;;:9;:23;;;;9580:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9664:47;9685:6;9693:9;9704:6;9664:20;:47::i;:::-;9724:21;9748:9;:17;9758:6;9748:17;;;;;;;;;;;;;;;;9724:41;;9801:6;9784:13;:23;;9776:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9922:6;9906:13;:22;9886:9;:17;9896:6;9886:17;;;;;;;;;;;;;;;:42;;;;9974:6;9950:9;:20;9960:9;9950:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;10015:9;9998:35;;10007:6;9998:35;;;10026:6;9998:35;;;;;;:::i;:::-;;;;;;;;10046:46;10066:6;10074:9;10085:6;10046:19;:46::i;:::-;9488:612;9367:733;;;:::o;33773:1707::-;33812:23;33838:24;33856:4;33838:9;:24::i;:::-;33812:50;;33873:25;33969:12;;33935:18;;33901;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;33873:108;;33992:12;34040:1;34021:15;:20;:46;;;;34066:1;34045:17;:22;34021:46;34017:85;;;34084:7;;;;;34017:85;34157:2;34136:18;;:23;;;;:::i;:::-;34118:15;:41;34114:115;;;34215:2;34194:18;;:23;;;;:::i;:::-;34176:41;;34114:115;34241:23;34354:1;34321:17;34286:18;;34268:15;:36;;;;:::i;:::-;34267:71;;;;:::i;:::-;:88;;;;:::i;:::-;34241:114;;34366:26;34395:36;34415:15;34395;:19;;:36;;;;:::i;:::-;34366:65;;34444:25;34472:21;34444:49;;34506:36;34523:18;34506:16;:36::i;:::-;34555:18;34576:44;34602:17;34576:21;:25;;:44;;;;:::i;:::-;34555:65;;34633:23;34659:81;34712:17;34659:34;34674:18;;34659:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;34633:107;;34751:17;34771:51;34804:17;34771:28;34786:12;;34771:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;34751:71;;34835:23;34892:9;34874:15;34861:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;34835:66;;34935:1;34914:18;:22;;;;34968:1;34947:18;:22;;;;34995:1;34980:12;:16;;;;35031:9;;;;;;;;;;;35023:23;;35054:9;35023:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35009:59;;;;;35103:1;35085:15;:19;:42;;;;;35126:1;35108:15;:19;35085:42;35081:278;;;35144:46;35157:15;35174;35144:12;:46::i;:::-;35210:137;35243:18;35280:15;35314:18;;35210:137;;;;;;;;:::i;:::-;;;;;;;;35081:278;35393:15;;;;;;;;;;;35385:29;;35436:21;35385:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35371:101;;;;;33801:1679;;;;;;;;;;33773:1707;:::o;36051:558::-;36108:4;36142:15;36125:14;:32;;;;36170:28;36201:4;:14;;;36216:13;36201:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36170:60;;36243:20;36266:77;36327:5;36266:42;36291:16;;36266:20;:24;;:42;;;;:::i;:::-;:46;;:77;;;;:::i;:::-;36243:100;;36375:1;36360:12;:16;36356:110;;;36393:61;36409:13;36432:6;36441:12;36393:15;:61::i;:::-;36356:110;36478:19;36515:13;36478:51;;36540:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36567:12;;;;;;;;;;36597:4;36590:11;;;;;36051:558;:::o;11502:125::-;;;;:::o;11635:124::-;;;;:::o;13247:98::-;13305:7;13336:1;13332;:5;;;;:::i;:::-;13325:12;;13247:98;;;;:::o;32914:475::-;32980:21;33018:1;33004:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32980:40;;33049:4;33031;33036:1;33031:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;33075:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33065:4;33070:1;33065:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;33110:62;33127:4;33142:15;33160:11;33110:8;:62::i;:::-;33185:15;:66;;;33266:11;33292:1;33308:4;33335;33355:15;33185:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32969:420;32914:475;:::o;33397:368::-;33478:62;33495:4;33510:15;33528:11;33478:8;:62::i;:::-;33553:15;:31;;;33592:9;33625:4;33645:11;33671:1;33688;19894:6;33731:15;33553:204;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;33397:368;;:::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:329::-;5218:6;5267:2;5255:9;5246:7;5242:23;5238:32;5235:119;;;5273:79;;:::i;:::-;5235:119;5393:1;5418:53;5463:7;5454:6;5443:9;5439:22;5418:53;:::i;:::-;5408:63;;5364:117;5159:329;;;;:::o;5494:619::-;5571:6;5579;5587;5636:2;5624:9;5615:7;5611:23;5607:32;5604:119;;;5642:79;;:::i;:::-;5604:119;5762:1;5787:53;5832:7;5823:6;5812:9;5808:22;5787:53;:::i;:::-;5777:63;;5733:117;5889:2;5915:53;5960:7;5951:6;5940:9;5936:22;5915:53;:::i;:::-;5905:63;;5860:118;6017:2;6043:53;6088:7;6079:6;6068:9;6064:22;6043:53;:::i;:::-;6033:63;;5988:118;5494:619;;;;;:::o;6119:118::-;6206:24;6224:5;6206:24;:::i;:::-;6201:3;6194:37;6119:118;;:::o;6243:222::-;6336:4;6374:2;6363:9;6359:18;6351:26;;6387:71;6455:1;6444:9;6440:17;6431:6;6387:71;:::i;:::-;6243:222;;;;:::o;6471:86::-;6506:7;6546:4;6539:5;6535:16;6524:27;;6471:86;;;:::o;6563:112::-;6646:22;6662:5;6646:22;:::i;:::-;6641:3;6634:35;6563:112;;:::o;6681:214::-;6770:4;6808:2;6797:9;6793:18;6785:26;;6821:67;6885:1;6874:9;6870:17;6861:6;6821:67;:::i;:::-;6681:214;;;;:::o;6901:116::-;6971:21;6986:5;6971:21;:::i;:::-;6964:5;6961:32;6951:60;;7007:1;7004;6997:12;6951:60;6901:116;:::o;7023:133::-;7066:5;7104:6;7091:20;7082:29;;7120:30;7144:5;7120:30;:::i;:::-;7023:133;;;;:::o;7162:613::-;7236:6;7244;7252;7301:2;7289:9;7280:7;7276:23;7272:32;7269:119;;;7307:79;;:::i;:::-;7269:119;7427:1;7452:53;7497:7;7488:6;7477:9;7473:22;7452:53;:::i;:::-;7442:63;;7398:117;7554:2;7580:53;7625:7;7616:6;7605:9;7601:22;7580:53;:::i;:::-;7570:63;;7525:118;7682:2;7708:50;7750:7;7741:6;7730:9;7726:22;7708:50;:::i;:::-;7698:60;;7653:115;7162:613;;;;;:::o;7781:468::-;7846:6;7854;7903:2;7891:9;7882:7;7878:23;7874:32;7871:119;;;7909:79;;:::i;:::-;7871:119;8029:1;8054:53;8099:7;8090:6;8079:9;8075:22;8054:53;:::i;:::-;8044:63;;8000:117;8156:2;8182:50;8224:7;8215:6;8204:9;8200:22;8182:50;:::i;:::-;8172:60;;8127:115;7781:468;;;;;:::o;8255:619::-;8332:6;8340;8348;8397:2;8385:9;8376:7;8372:23;8368:32;8365:119;;;8403:79;;:::i;:::-;8365:119;8523:1;8548:53;8593:7;8584:6;8573:9;8569:22;8548:53;:::i;:::-;8538:63;;8494:117;8650:2;8676:53;8721:7;8712:6;8701:9;8697:22;8676:53;:::i;:::-;8666:63;;8621:118;8778:2;8804:53;8849:7;8840:6;8829:9;8825:22;8804:53;:::i;:::-;8794:63;;8749:118;8255:619;;;;;:::o;8880:474::-;8948:6;8956;9005:2;8993:9;8984:7;8980:23;8976:32;8973:119;;;9011:79;;:::i;:::-;8973:119;9131:1;9156:53;9201:7;9192:6;9181:9;9177:22;9156:53;:::i;:::-;9146:63;;9102:117;9258:2;9284:53;9329:7;9320:6;9309:9;9305:22;9284:53;:::i;:::-;9274:63;;9229:118;8880:474;;;;;:::o;9360:180::-;9408:77;9405:1;9398:88;9505:4;9502:1;9495:15;9529:4;9526:1;9519:15;9546:320;9590:6;9627:1;9621:4;9617:12;9607:22;;9674:1;9668:4;9664:12;9695:18;9685:81;;9751:4;9743:6;9739:17;9729:27;;9685:81;9813:2;9805:6;9802:14;9782:18;9779:38;9776:84;;;9832:18;;:::i;:::-;9776:84;9597:269;9546:320;;;:::o;9872:182::-;10012:34;10008:1;10000:6;9996:14;9989:58;9872:182;:::o;10060:366::-;10202:3;10223:67;10287:2;10282:3;10223:67;:::i;:::-;10216:74;;10299:93;10388:3;10299:93;:::i;:::-;10417:2;10412:3;10408:12;10401:19;;10060:366;;;:::o;10432:419::-;10598:4;10636:2;10625:9;10621:18;10613:26;;10685:9;10679:4;10675:20;10671:1;10660:9;10656:17;10649:47;10713:131;10839:4;10713:131;:::i;:::-;10705:139;;10432:419;;;:::o;10857:180::-;10905:77;10902:1;10895:88;11002:4;10999:1;10992:15;11026:4;11023:1;11016:15;11043:348;11083:7;11106:20;11124:1;11106:20;:::i;:::-;11101:25;;11140:20;11158:1;11140:20;:::i;:::-;11135:25;;11328:1;11260:66;11256:74;11253:1;11250:81;11245:1;11238:9;11231:17;11227:105;11224:131;;;11335:18;;:::i;:::-;11224:131;11383:1;11380;11376:9;11365:20;;11043:348;;;;:::o;11397:180::-;11445:77;11442:1;11435:88;11542:4;11539:1;11532:15;11566:4;11563:1;11556:15;11583:185;11623:1;11640:20;11658:1;11640:20;:::i;:::-;11635:25;;11674:20;11692:1;11674:20;:::i;:::-;11669:25;;11713:1;11703:35;;11718:18;;:::i;:::-;11703:35;11760:1;11757;11753:9;11748:14;;11583:185;;;;:::o;11774:234::-;11914:34;11910:1;11902:6;11898:14;11891:58;11983:17;11978:2;11970:6;11966:15;11959:42;11774:234;:::o;12014:366::-;12156:3;12177:67;12241:2;12236:3;12177:67;:::i;:::-;12170:74;;12253:93;12342:3;12253:93;:::i;:::-;12371:2;12366:3;12362:12;12355:19;;12014:366;;;:::o;12386:419::-;12552:4;12590:2;12579:9;12575:18;12567:26;;12639:9;12633:4;12629:20;12625:1;12614:9;12610:17;12603:47;12667:131;12793:4;12667:131;:::i;:::-;12659:139;;12386:419;;;:::o;12811:227::-;12951:34;12947:1;12939:6;12935:14;12928:58;13020:10;13015:2;13007:6;13003:15;12996:35;12811:227;:::o;13044:366::-;13186:3;13207:67;13271:2;13266:3;13207:67;:::i;:::-;13200:74;;13283:93;13372:3;13283:93;:::i;:::-;13401:2;13396:3;13392:12;13385:19;;13044:366;;;:::o;13416:419::-;13582:4;13620:2;13609:9;13605:18;13597:26;;13669:9;13663:4;13659:20;13655:1;13644:9;13640:17;13633:47;13697:131;13823:4;13697:131;:::i;:::-;13689:139;;13416:419;;;:::o;13841:305::-;13881:3;13900:20;13918:1;13900:20;:::i;:::-;13895:25;;13934:20;13952:1;13934:20;:::i;:::-;13929:25;;14088:1;14020:66;14016:74;14013:1;14010:81;14007:107;;;14094:18;;:::i;:::-;14007:107;14138:1;14135;14131:9;14124:16;;13841:305;;;;:::o;14152:238::-;14292:34;14288:1;14280:6;14276:14;14269:58;14361:21;14356:2;14348:6;14344:15;14337:46;14152:238;:::o;14396:366::-;14538:3;14559:67;14623:2;14618:3;14559:67;:::i;:::-;14552:74;;14635:93;14724:3;14635:93;:::i;:::-;14753:2;14748:3;14744:12;14737:19;;14396:366;;;:::o;14768:419::-;14934:4;14972:2;14961:9;14957:18;14949:26;;15021:9;15015:4;15011:20;15007:1;14996:9;14992:17;14985:47;15049:131;15175:4;15049:131;:::i;:::-;15041:139;;14768:419;;;:::o;15193:235::-;15333:34;15329:1;15321:6;15317:14;15310:58;15402:18;15397:2;15389:6;15385:15;15378:43;15193:235;:::o;15434:366::-;15576:3;15597:67;15661:2;15656:3;15597:67;:::i;:::-;15590:74;;15673:93;15762:3;15673:93;:::i;:::-;15791:2;15786:3;15782:12;15775:19;;15434:366;;;:::o;15806:419::-;15972:4;16010:2;15999:9;15995:18;15987:26;;16059:9;16053:4;16049:20;16045:1;16034:9;16030:17;16023:47;16087:131;16213:4;16087:131;:::i;:::-;16079:139;;15806:419;;;:::o;16231:179::-;16371:31;16367:1;16359:6;16355:14;16348:55;16231:179;:::o;16416:366::-;16558:3;16579:67;16643:2;16638:3;16579:67;:::i;:::-;16572:74;;16655:93;16744:3;16655:93;:::i;:::-;16773:2;16768:3;16764:12;16757:19;;16416:366;;;:::o;16788:419::-;16954:4;16992:2;16981:9;16977:18;16969:26;;17041:9;17035:4;17031:20;17027:1;17016:9;17012:17;17005:47;17069:131;17195:4;17069:131;:::i;:::-;17061:139;;16788:419;;;:::o;17213:244::-;17353:34;17349:1;17341:6;17337:14;17330:58;17422:27;17417:2;17409:6;17405:15;17398:52;17213:244;:::o;17463:366::-;17605:3;17626:67;17690:2;17685:3;17626:67;:::i;:::-;17619:74;;17702:93;17791:3;17702:93;:::i;:::-;17820:2;17815:3;17811:12;17804:19;;17463:366;;;:::o;17835:419::-;18001:4;18039:2;18028:9;18024:18;18016:26;;18088:9;18082:4;18078:20;18074:1;18063:9;18059:17;18052:47;18116:131;18242:4;18116:131;:::i;:::-;18108:139;;17835:419;;;:::o;18260:224::-;18400:34;18396:1;18388:6;18384:14;18377:58;18469:7;18464:2;18456:6;18452:15;18445:32;18260:224;:::o;18490:366::-;18632:3;18653:67;18717:2;18712:3;18653:67;:::i;:::-;18646:74;;18729:93;18818:3;18729:93;:::i;:::-;18847:2;18842:3;18838:12;18831:19;;18490:366;;;:::o;18862:419::-;19028:4;19066:2;19055:9;19051:18;19043:26;;19115:9;19109:4;19105:20;19101:1;19090:9;19086:17;19079:47;19143:131;19269:4;19143:131;:::i;:::-;19135:139;;18862:419;;;:::o;19287:223::-;19427:34;19423:1;19415:6;19411:14;19404:58;19496:6;19491:2;19483:6;19479:15;19472:31;19287:223;:::o;19516:366::-;19658:3;19679:67;19743:2;19738:3;19679:67;:::i;:::-;19672:74;;19755:93;19844:3;19755:93;:::i;:::-;19873:2;19868:3;19864:12;19857:19;;19516:366;;;:::o;19888:419::-;20054:4;20092:2;20081:9;20077:18;20069:26;;20141:9;20135:4;20131:20;20127:1;20116:9;20112:17;20105:47;20169:131;20295:4;20169:131;:::i;:::-;20161:139;;19888:419;;;:::o;20313:240::-;20453:34;20449:1;20441:6;20437:14;20430:58;20522:23;20517:2;20509:6;20505:15;20498:48;20313:240;:::o;20559:366::-;20701:3;20722:67;20786:2;20781:3;20722:67;:::i;:::-;20715:74;;20798:93;20887:3;20798:93;:::i;:::-;20916:2;20911:3;20907:12;20900:19;;20559:366;;;:::o;20931:419::-;21097:4;21135:2;21124:9;21120:18;21112:26;;21184:9;21178:4;21174:20;21170:1;21159:9;21155:17;21148:47;21212:131;21338:4;21212:131;:::i;:::-;21204:139;;20931:419;;;:::o;21356:239::-;21496:34;21492:1;21484:6;21480:14;21473:58;21565:22;21560:2;21552:6;21548:15;21541:47;21356:239;:::o;21601:366::-;21743:3;21764:67;21828:2;21823:3;21764:67;:::i;:::-;21757:74;;21840:93;21929:3;21840:93;:::i;:::-;21958:2;21953:3;21949:12;21942:19;;21601:366;;;:::o;21973:419::-;22139:4;22177:2;22166:9;22162:18;22154:26;;22226:9;22220:4;22216:20;22212:1;22201:9;22197:17;22190:47;22254:131;22380:4;22254:131;:::i;:::-;22246:139;;21973:419;;;:::o;22398:225::-;22538:34;22534:1;22526:6;22522:14;22515:58;22607:8;22602:2;22594:6;22590:15;22583:33;22398:225;:::o;22629:366::-;22771:3;22792:67;22856:2;22851:3;22792:67;:::i;:::-;22785:74;;22868:93;22957:3;22868:93;:::i;:::-;22986:2;22981:3;22977:12;22970:19;;22629:366;;;:::o;23001:419::-;23167:4;23205:2;23194:9;23190:18;23182:26;;23254:9;23248:4;23244:20;23240:1;23229:9;23225:17;23218:47;23282:131;23408:4;23282:131;:::i;:::-;23274:139;;23001:419;;;:::o;23426:182::-;23566:34;23562:1;23554:6;23550:14;23543:58;23426:182;:::o;23614:366::-;23756:3;23777:67;23841:2;23836:3;23777:67;:::i;:::-;23770:74;;23853:93;23942:3;23853:93;:::i;:::-;23971:2;23966:3;23962:12;23955:19;;23614:366;;;:::o;23986:419::-;24152:4;24190:2;24179:9;24175:18;24167:26;;24239:9;24233:4;24229:20;24225:1;24214:9;24210:17;24203:47;24267:131;24393:4;24267:131;:::i;:::-;24259:139;;23986:419;;;:::o;24411:229::-;24551:34;24547:1;24539:6;24535:14;24528:58;24620:12;24615:2;24607:6;24603:15;24596:37;24411:229;:::o;24646:366::-;24788:3;24809:67;24873:2;24868:3;24809:67;:::i;:::-;24802:74;;24885:93;24974:3;24885:93;:::i;:::-;25003:2;24998:3;24994:12;24987:19;;24646:366;;;:::o;25018:419::-;25184:4;25222:2;25211:9;25207:18;25199:26;;25271:9;25265:4;25261:20;25257:1;25246:9;25242:17;25235:47;25299:131;25425:4;25299:131;:::i;:::-;25291:139;;25018:419;;;:::o;25443:143::-;25500:5;25531:6;25525:13;25516:22;;25547:33;25574:5;25547:33;:::i;:::-;25443:143;;;;:::o;25592:351::-;25662:6;25711:2;25699:9;25690:7;25686:23;25682:32;25679:119;;;25717:79;;:::i;:::-;25679:119;25837:1;25862:64;25918:7;25909:6;25898:9;25894:22;25862:64;:::i;:::-;25852:74;;25808:128;25592:351;;;;:::o;25949:223::-;26089:34;26085:1;26077:6;26073:14;26066:58;26158:6;26153:2;26145:6;26141:15;26134:31;25949:223;:::o;26178:366::-;26320:3;26341:67;26405:2;26400:3;26341:67;:::i;:::-;26334:74;;26417:93;26506:3;26417:93;:::i;:::-;26535:2;26530:3;26526:12;26519:19;;26178:366;;;:::o;26550:419::-;26716:4;26754:2;26743:9;26739:18;26731:26;;26803:9;26797:4;26793:20;26789:1;26778:9;26774:17;26767:47;26831:131;26957:4;26831:131;:::i;:::-;26823:139;;26550:419;;;:::o;26975:221::-;27115:34;27111:1;27103:6;27099:14;27092:58;27184:4;27179:2;27171:6;27167:15;27160:29;26975:221;:::o;27202:366::-;27344:3;27365:67;27429:2;27424:3;27365:67;:::i;:::-;27358:74;;27441:93;27530:3;27441:93;:::i;:::-;27559:2;27554:3;27550:12;27543:19;;27202:366;;;:::o;27574:419::-;27740:4;27778:2;27767:9;27763:18;27755:26;;27827:9;27821:4;27817:20;27813:1;27802:9;27798:17;27791:47;27855:131;27981:4;27855:131;:::i;:::-;27847:139;;27574:419;;;:::o;27999:224::-;28139:34;28135:1;28127:6;28123:14;28116:58;28208:7;28203:2;28195:6;28191:15;28184:32;27999:224;:::o;28229:366::-;28371:3;28392:67;28456:2;28451:3;28392:67;:::i;:::-;28385:74;;28468:93;28557:3;28468:93;:::i;:::-;28586:2;28581:3;28577:12;28570:19;;28229:366;;;:::o;28601:419::-;28767:4;28805:2;28794:9;28790:18;28782:26;;28854:9;28848:4;28844:20;28840:1;28829:9;28825:17;28818:47;28882:131;29008:4;28882:131;:::i;:::-;28874:139;;28601:419;;;:::o;29026:222::-;29166:34;29162:1;29154:6;29150:14;29143:58;29235:5;29230:2;29222:6;29218:15;29211:30;29026:222;:::o;29254:366::-;29396:3;29417:67;29481:2;29476:3;29417:67;:::i;:::-;29410:74;;29493:93;29582:3;29493:93;:::i;:::-;29611:2;29606:3;29602:12;29595:19;;29254:366;;;:::o;29626:419::-;29792:4;29830:2;29819:9;29815:18;29807:26;;29879:9;29873:4;29869:20;29865:1;29854:9;29850:17;29843:47;29907:131;30033:4;29907:131;:::i;:::-;29899:139;;29626:419;;;:::o;30051:172::-;30191:24;30187:1;30179:6;30175:14;30168:48;30051:172;:::o;30229:366::-;30371:3;30392:67;30456:2;30451:3;30392:67;:::i;:::-;30385:74;;30468:93;30557:3;30468:93;:::i;:::-;30586:2;30581:3;30577:12;30570:19;;30229:366;;;:::o;30601:419::-;30767:4;30805:2;30794:9;30790:18;30782:26;;30854:9;30848:4;30844:20;30840:1;30829:9;30825:17;30818:47;30882:131;31008:4;30882:131;:::i;:::-;30874:139;;30601:419;;;:::o;31026:297::-;31166:34;31162:1;31154:6;31150:14;31143:58;31235:34;31230:2;31222:6;31218:15;31211:59;31304:11;31299:2;31291:6;31287:15;31280:36;31026:297;:::o;31329:366::-;31471:3;31492:67;31556:2;31551:3;31492:67;:::i;:::-;31485:74;;31568:93;31657:3;31568:93;:::i;:::-;31686:2;31681:3;31677:12;31670:19;;31329:366;;;:::o;31701:419::-;31867:4;31905:2;31894:9;31890:18;31882:26;;31954:9;31948:4;31944:20;31940:1;31929:9;31925:17;31918:47;31982:131;32108:4;31982:131;:::i;:::-;31974:139;;31701:419;;;:::o;32126:240::-;32266:34;32262:1;32254:6;32250:14;32243:58;32335:23;32330:2;32322:6;32318:15;32311:48;32126:240;:::o;32372:366::-;32514:3;32535:67;32599:2;32594:3;32535:67;:::i;:::-;32528:74;;32611:93;32700:3;32611:93;:::i;:::-;32729:2;32724:3;32720:12;32713:19;;32372:366;;;:::o;32744:419::-;32910:4;32948:2;32937:9;32933:18;32925:26;;32997:9;32991:4;32987:20;32983:1;32972:9;32968:17;32961:47;33025:131;33151:4;33025:131;:::i;:::-;33017:139;;32744:419;;;:::o;33169:169::-;33309:21;33305:1;33297:6;33293:14;33286:45;33169:169;:::o;33344:366::-;33486:3;33507:67;33571:2;33566:3;33507:67;:::i;:::-;33500:74;;33583:93;33672:3;33583:93;:::i;:::-;33701:2;33696:3;33692:12;33685:19;;33344:366;;;:::o;33716:419::-;33882:4;33920:2;33909:9;33905:18;33897:26;;33969:9;33963:4;33959:20;33955:1;33944:9;33940:17;33933:47;33997:131;34123:4;33997:131;:::i;:::-;33989:139;;33716:419;;;:::o;34141:241::-;34281:34;34277:1;34269:6;34265:14;34258:58;34350:24;34345:2;34337:6;34333:15;34326:49;34141:241;:::o;34388:366::-;34530:3;34551:67;34615:2;34610:3;34551:67;:::i;:::-;34544:74;;34627:93;34716:3;34627:93;:::i;:::-;34745:2;34740:3;34736:12;34729:19;;34388:366;;;:::o;34760:419::-;34926:4;34964:2;34953:9;34949:18;34941:26;;35013:9;35007:4;35003:20;34999:1;34988:9;34984:17;34977:47;35041:131;35167:4;35041:131;:::i;:::-;35033:139;;34760:419;;;:::o;35185:191::-;35225:4;35245:20;35263:1;35245:20;:::i;:::-;35240:25;;35279:20;35297:1;35279:20;:::i;:::-;35274:25;;35318:1;35315;35312:8;35309:34;;;35323:18;;:::i;:::-;35309:34;35368:1;35365;35361:9;35353:17;;35185:191;;;;:::o;35382:225::-;35522:34;35518:1;35510:6;35506:14;35499:58;35591:8;35586:2;35578:6;35574:15;35567:33;35382:225;:::o;35613:366::-;35755:3;35776:67;35840:2;35835:3;35776:67;:::i;:::-;35769:74;;35852:93;35941:3;35852:93;:::i;:::-;35970:2;35965:3;35961:12;35954:19;;35613:366;;;:::o;35985:419::-;36151:4;36189:2;36178:9;36174:18;36166:26;;36238:9;36232:4;36228:20;36224:1;36213:9;36209:17;36202:47;36266:131;36392:4;36266:131;:::i;:::-;36258:139;;35985:419;;;:::o;36410:147::-;36511:11;36548:3;36533:18;;36410:147;;;;:::o;36563:114::-;;:::o;36683:398::-;36842:3;36863:83;36944:1;36939:3;36863:83;:::i;:::-;36856:90;;36955:93;37044:3;36955:93;:::i;:::-;37073:1;37068:3;37064:11;37057:18;;36683:398;;;:::o;37087:379::-;37271:3;37293:147;37436:3;37293:147;:::i;:::-;37286:154;;37457:3;37450:10;;37087:379;;;:::o;37472:442::-;37621:4;37659:2;37648:9;37644:18;37636:26;;37672:71;37740:1;37729:9;37725:17;37716:6;37672:71;:::i;:::-;37753:72;37821:2;37810:9;37806:18;37797:6;37753:72;:::i;:::-;37835;37903:2;37892:9;37888:18;37879:6;37835:72;:::i;:::-;37472:442;;;;;;:::o;37920:180::-;37968:77;37965:1;37958:88;38065:4;38062:1;38055:15;38089:4;38086:1;38079:15;38106:180;38154:77;38151:1;38144:88;38251:4;38248:1;38241:15;38275:4;38272:1;38265:15;38292:143;38349:5;38380:6;38374:13;38365:22;;38396:33;38423:5;38396:33;:::i;:::-;38292:143;;;;:::o;38441:351::-;38511:6;38560:2;38548:9;38539:7;38535:23;38531:32;38528:119;;;38566:79;;:::i;:::-;38528:119;38686:1;38711:64;38767:7;38758:6;38747:9;38743:22;38711:64;:::i;:::-;38701:74;;38657:128;38441:351;;;;:::o;38798:85::-;38843:7;38872:5;38861:16;;38798:85;;;:::o;38889:158::-;38947:9;38980:61;38998:42;39007:32;39033:5;39007:32;:::i;:::-;38998:42;:::i;:::-;38980:61;:::i;:::-;38967:74;;38889:158;;;:::o;39053:147::-;39148:45;39187:5;39148:45;:::i;:::-;39143:3;39136:58;39053:147;;:::o;39206:114::-;39273:6;39307:5;39301:12;39291:22;;39206:114;;;:::o;39326:184::-;39425:11;39459:6;39454:3;39447:19;39499:4;39494:3;39490:14;39475:29;;39326:184;;;;:::o;39516:132::-;39583:4;39606:3;39598:11;;39636:4;39631:3;39627:14;39619:22;;39516:132;;;:::o;39654:108::-;39731:24;39749:5;39731:24;:::i;:::-;39726:3;39719:37;39654:108;;:::o;39768:179::-;39837:10;39858:46;39900:3;39892:6;39858:46;:::i;:::-;39936:4;39931:3;39927:14;39913:28;;39768:179;;;;:::o;39953:113::-;40023:4;40055;40050:3;40046:14;40038:22;;39953:113;;;:::o;40102:732::-;40221:3;40250:54;40298:5;40250:54;:::i;:::-;40320:86;40399:6;40394:3;40320:86;:::i;:::-;40313:93;;40430:56;40480:5;40430:56;:::i;:::-;40509:7;40540:1;40525:284;40550:6;40547:1;40544:13;40525:284;;;40626:6;40620:13;40653:63;40712:3;40697:13;40653:63;:::i;:::-;40646:70;;40739:60;40792:6;40739:60;:::i;:::-;40729:70;;40585:224;40572:1;40569;40565:9;40560:14;;40525:284;;;40529:14;40825:3;40818:10;;40226:608;;;40102:732;;;;:::o;40840:831::-;41103:4;41141:3;41130:9;41126:19;41118:27;;41155:71;41223:1;41212:9;41208:17;41199:6;41155:71;:::i;:::-;41236:80;41312:2;41301:9;41297:18;41288:6;41236:80;:::i;:::-;41363:9;41357:4;41353:20;41348:2;41337:9;41333:18;41326:48;41391:108;41494:4;41485:6;41391:108;:::i;:::-;41383:116;;41509:72;41577:2;41566:9;41562:18;41553:6;41509:72;:::i;:::-;41591:73;41659:3;41648:9;41644:19;41635:6;41591:73;:::i;:::-;40840:831;;;;;;;;:::o;41677:807::-;41926:4;41964:3;41953:9;41949:19;41941:27;;41978:71;42046:1;42035:9;42031:17;42022:6;41978:71;:::i;:::-;42059:72;42127:2;42116:9;42112:18;42103:6;42059:72;:::i;:::-;42141:80;42217:2;42206:9;42202:18;42193:6;42141:80;:::i;:::-;42231;42307:2;42296:9;42292:18;42283:6;42231:80;:::i;:::-;42321:73;42389:3;42378:9;42374:19;42365:6;42321:73;:::i;:::-;42404;42472:3;42461:9;42457:19;42448:6;42404:73;:::i;:::-;41677:807;;;;;;;;;:::o;42490:663::-;42578:6;42586;42594;42643:2;42631:9;42622:7;42618:23;42614:32;42611:119;;;42649:79;;:::i;:::-;42611:119;42769:1;42794:64;42850:7;42841:6;42830:9;42826:22;42794:64;:::i;:::-;42784:74;;42740:128;42907:2;42933:64;42989:7;42980:6;42969:9;42965:22;42933:64;:::i;:::-;42923:74;;42878:129;43046:2;43072:64;43128:7;43119:6;43108:9;43104:22;43072:64;:::i;:::-;43062:74;;43017:129;42490:663;;;;;:::o

Swarm Source

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