ETH Price: $3,101.19 (-1.85%)

Token

DOGS ARE GONNA MAKE IT (DAGMI)
 

Overview

Max Total Supply

1,000,000 DAGMI

Holders

375

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000001631132 DAGMI

Value
$0.00
0xba9d77628f63ddc81921802b204ad7b1be10f21d
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:
DAGMI

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// https://t.me/DagmiETH
// https://twitter.com/DagmiETH
// 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);

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

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

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

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

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

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

interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    event Transfer(address indexed from, address indexed to, uint256 value);

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

interface IERC20Metadata is IERC20 {

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

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

    function decimals() external view returns (uint8);
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

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

    function _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 {
            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 DAGMI is ERC20, Ownable {
    using SafeMath for uint256;

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

    bool private swapping;

    address public papaWallet;
    address public developmentWallet;
    address public liquidityWallet;
    address public operationsWallet;

    uint256 public maxTransaction;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    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;
    bool public transferDelayEnabled = true;
    uint256 private launchBlock;
    mapping(address => bool) public blocked;

    uint256 public buyTotalFees;
    uint256 public buyPapaFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevelopmentFee;
    uint256 public buyOperationsFee;

    uint256 public sellTotalFees;
    uint256 public sellPapaFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevelopmentFee;
    uint256 public sellOperationsFee;

    uint256 public tokensForPapa;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDevelopment;
    uint256 public tokensForOperations;

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

    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 papaWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

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

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

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

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

    constructor() ERC20("DOGS ARE GONNA MAKE IT", "DAGMI") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(uniV2router); 

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

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

        // launch buy fees
        uint256 _buyPapaFee = 2;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevelopmentFee = 0;
        uint256 _buyOperationsFee = 18;
        
        // launch sell fees
        uint256 _sellPapaFee = 2;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevelopmentFee = 0;
        uint256 _sellOperationsFee = 38;

        uint256 totalSupply = 1_000_000 * 1e18;

        maxTransaction = 10_000 * 1e18; // 1% max transaction at launch
        maxWallet = 10_000 * 1e18; // 1% max wallet at launch
        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swap wallet

        buyPapaFee = _buyPapaFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevelopmentFee = _buyDevelopmentFee;
        buyOperationsFee = _buyOperationsFee;
        buyTotalFees = buyPapaFee + buyLiquidityFee + buyDevelopmentFee + buyOperationsFee;

        sellPapaFee = _sellPapaFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevelopmentFee = _sellDevelopmentFee;
        sellOperationsFee = _sellOperationsFee;
        sellTotalFees = sellPapaFee + sellLiquidityFee + sellDevelopmentFee + sellOperationsFee;

        papaWallet = address(0xAbB28CdF443d68187f6a092292c7A11F03931B21); 
        developmentWallet = address(0xAbB28CdF443d68187f6a092292c7A11F03931B21); 
        liquidityWallet = address(0xAbB28CdF443d68187f6a092292c7A11F03931B21); 
        operationsWallet = address(0x3CfAab04C55063875625AFA4ca18012749db3F08);

        // 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(msg.sender, totalSupply);
    }

    receive() external payable {}

    function enableTrading() external onlyOwner {
        require(!tradingActive, "Token launched");
        tradingActive = true;
        launchBlock = block.number;
        swapEnabled = true;
    }

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

    // change the minimum amount of tokens to sell from fees
    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 updateMaxTransaction(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set maxTransaction lower than 0.1%"
        );
        maxTransaction = newNum * (10**18);
    }

    function updateMaxWallet(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
    {
        _isExcludedmaxTransaction[updAds] = isEx;
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updateBuyFees(
        uint256 _papaFee,
        uint256 _liquidityFee,
        uint256 _developmentFee,
        uint256 _operationsFee
    ) external onlyOwner {
        buyPapaFee = _papaFee;
        buyLiquidityFee = _liquidityFee;
        buyDevelopmentFee = _developmentFee;
        buyOperationsFee = _operationsFee;
        buyTotalFees = buyPapaFee + buyLiquidityFee + buyDevelopmentFee + buyOperationsFee;
        require(buyTotalFees <= 99);
    }

    function updateSellFees(
        uint256 _papaFee,
        uint256 _liquidityFee,
        uint256 _developmentFee,
        uint256 _operationsFee
    ) external onlyOwner {
        sellPapaFee = _papaFee;
        sellLiquidityFee = _liquidityFee;
        sellDevelopmentFee = _developmentFee;
        sellOperationsFee = _operationsFee;
        sellTotalFees = sellPapaFee + sellLiquidityFee + sellDevelopmentFee + sellOperationsFee;
        require(sellTotalFees <= 99); 
    }

    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 updatepapaWallet(address newpapaWallet) external onlyOwner {
        emit papaWalletUpdated(newpapaWallet, papaWallet);
        papaWallet = newpapaWallet;
    }

    function updatedevelopmentWallet(address newWallet) external onlyOwner {
        emit developmentWalletUpdated(newWallet, developmentWallet);
        developmentWallet = newWallet;
    }

    function updateoperationsWallet(address newWallet) external onlyOwner{
        emit operationsWalletUpdated(newWallet, operationsWallet);
        operationsWallet = newWallet;
    }

    function updateliquidityWallet(address newliquidityWallet) external onlyOwner {
        emit liquidityWalletUpdated(newliquidityWallet, liquidityWallet);
        liquidityWallet = newliquidityWallet;
    }

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

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

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

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                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] &&
                    !_isExcludedmaxTransaction[to]
                ) {
                    require(
                        amount <= maxTransaction,
                        "Buy transfer amount exceeds the maxTransaction."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedmaxTransaction[from]
                ) {
                    require(
                        amount <= maxTransaction,
                        "Sell transfer amount exceeds the maxTransaction."
                    );
                } else if (!_isExcludedmaxTransaction[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForDevelopment += (fees * sellDevelopmentFee) / sellTotalFees;
                tokensForPapa += (fees * sellPapaFee) / sellTotalFees;
                tokensForOperations += (fees * sellOperationsFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForDevelopment += (fees * buyDevelopmentFee) / buyTotalFees;
                tokensForPapa += (fees * buyPapaFee) / buyTotalFees;
                tokensForOperations += (fees * buyOperationsFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function updateBL(address[] calldata blockees, bool shouldBlock) external onlyOwner {
        for(uint256 i = 0;i<blockees.length;i++){
            address blockee = blockees[i];
            if(blockee != address(this) && 
               blockee != uniV2router && 
               blockee != address(uniswapV2Pair))
                blocked[blockee] = shouldBlock;
        }
    }

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

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

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

        // Halve the amount of liquidity tokens
        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 ethForPapa = ethBalance.mul(tokensForPapa).div(totalTokensToSwap);
        uint256 ethForDevelopment = ethBalance.mul(tokensForDevelopment).div(totalTokensToSwap);
        uint256 ethForOperations = ethBalance.mul(tokensForOperations).div(totalTokensToSwap);

        uint256 ethForLiquidity = ethBalance - ethForPapa - ethForDevelopment - ethForOperations;

        tokensForLiquidity = 0;
        tokensForPapa = 0;
        tokensForDevelopment = 0;
        tokensForOperations = 0;

        (success, ) = address(developmentWallet).call{value: ethForDevelopment}("");

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }
        (success, ) = address(operationsWallet).call{value: ethForOperations}("");
        (success, ) = address(papaWallet).call{value: address(this).balance}("");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"developmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"liquidityWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"operationsWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"papaWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxTransaction","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":[{"internalType":"address","name":"","type":"address"}],"name":"blocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyPapaFee","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":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","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":"operationsWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"papaWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellPapaFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":"tokensForDevelopment","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":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForPapa","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":"uniV2router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"address[]","name":"blockees","type":"address[]"},{"internalType":"bool","name":"shouldBlock","type":"bool"}],"name":"updateBL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_papaFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"},{"internalType":"uint256","name":"_operationsFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_papaFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"},{"internalType":"uint256","name":"_operationsFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updatedevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newliquidityWallet","type":"address"}],"name":"updateliquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateoperationsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newpapaWallet","type":"address"}],"name":"updatepapaWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052737a250d5630b4cf539739df2c5dacb4c659f2488d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600e60026101000a81548160ff0219169083151502179055506001601060006101000a81548160ff021916908315150217905550348015620000d257600080fd5b506040518060400160405280601681526020017f444f47532041524520474f4e4e41204d414b45204954000000000000000000008152506040518060400160405280600581526020017f4441474d4900000000000000000000000000000000000000000000000000000081525081600390805190602001906200015792919062000c24565b5080600490805190602001906200017092919062000c24565b5050506200019362000187620006e460201b60201c565b620006ec60201b60201c565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050620001cd816001620007b260201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000273919062000d3e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000301919062000d3e565b6040518363ffffffff1660e01b81526004016200032092919062000d81565b6020604051808303816000875af115801562000340573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000366919062000d3e565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003ae60a0516001620007b260201b60201c565b620003c360a05160016200089c60201b60201c565b600060029050600080600060129050600060029050600080600060269050600069d3c21bcecceda1000000905069021e19e0c9bab2400000600b8190555069021e19e0c9bab2400000600d8190555061271060058262000424919062000de7565b62000430919062000e77565b600c81905550886014819055508760158190555086601681905550856017819055506017546016546015546014546200046a919062000eaf565b62000476919062000eaf565b62000482919062000eaf565b6013819055508460198190555083601a8190555082601b8190555081601c81905550601c54601b54601a54601954620004bc919062000eaf565b620004c8919062000eaf565b620004d4919062000eaf565b60188190555073abb28cdf443d68187f6a092292c7a11f03931b21600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073abb28cdf443d68187f6a092292c7a11f03931b21600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073abb28cdf443d68187f6a092292c7a11f03931b21600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733cfaab04c55063875625afa4ca18012749db3f08600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000650620006426200093d60201b60201c565b60016200096760201b60201c565b620006633060016200096760201b60201c565b6200067861dead60016200096760201b60201c565b6200069a6200068c6200093d60201b60201c565b6001620007b260201b60201c565b620006ad306001620007b260201b60201c565b620006c261dead6001620007b260201b60201c565b620006d4338262000aa160201b60201c565b50505050505050505050620010ce565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620007c2620006e460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007e86200093d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000841576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008389062000f6d565b60405180910390fd5b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000977620006e460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200099d6200093d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009f6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009ed9062000f6d565b60405180910390fd5b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000a95919062000fac565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000b14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b0b9062001019565b60405180910390fd5b62000b286000838362000c1a60201b60201c565b806002600082825462000b3c919062000eaf565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000b93919062000eaf565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000bfa91906200104c565b60405180910390a362000c166000838362000c1f60201b60201c565b5050565b505050565b505050565b82805462000c329062001098565b90600052602060002090601f01602090048101928262000c56576000855562000ca2565b82601f1062000c7157805160ff191683800117855562000ca2565b8280016001018555821562000ca2579182015b8281111562000ca157825182559160200191906001019062000c84565b5b50905062000cb1919062000cb5565b5090565b5b8082111562000cd057600081600090555060010162000cb6565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d068262000cd9565b9050919050565b62000d188162000cf9565b811462000d2457600080fd5b50565b60008151905062000d388162000d0d565b92915050565b60006020828403121562000d575762000d5662000cd4565b5b600062000d678482850162000d27565b91505092915050565b62000d7b8162000cf9565b82525050565b600060408201905062000d98600083018562000d70565b62000da7602083018462000d70565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000df48262000dae565b915062000e018362000dae565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e3d5762000e3c62000db8565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e848262000dae565b915062000e918362000dae565b92508262000ea45762000ea362000e48565b5b828204905092915050565b600062000ebc8262000dae565b915062000ec98362000dae565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000f015762000f0062000db8565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f5560208362000f0c565b915062000f628262000f1d565b602082019050919050565b6000602082019050818103600083015262000f888162000f46565b9050919050565b60008115159050919050565b62000fa68162000f8f565b82525050565b600060208201905062000fc3600083018462000f9b565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001001601f8362000f0c565b91506200100e8262000fc9565b602082019050919050565b60006020820190508181036000830152620010348162000ff2565b9050919050565b620010468162000dae565b82525050565b60006020820190506200106360008301846200103b565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620010b157607f821691505b60208210811415620010c857620010c762001069565b5b50919050565b60805160a051615b3f620011336000396000818161147c015281816116fd01528181611f5001526130550152600081816110e801528181612ffd015281816142310152818161431201528181614339015281816143d501526143fc0152615b3f6000f3fe6080604052600436106103c75760003560e01c806392aa3773116101f2578063d46980161161010d578063e884f260116100a0578063f63743421161006f578063f637434214610e7b578063f8b45b0514610ea6578063fb002c9714610ed1578063fd72e22a14610efc576103ce565b8063e884f26014610dd1578063ef8700e514610dfc578063f11a24d314610e27578063f2fde38b14610e52576103ce565b8063e2f45605116100dc578063e2f4560514610d15578063e596219514610d40578063e7ad9fcd14610d7d578063e80177c714610da6576103ce565b8063d469801614610c45578063d85ba06314610c70578063dd62ed3e14610c9b578063e1bc339414610cd8576103ce565b8063c024666811610185578063c876d0b911610154578063c876d0b914610b89578063d1b89d4e14610bb4578063d257b34f14610bdd578063d347be6a14610c1a576103ce565b8063c024666814610ae1578063c04a541414610b0a578063c3f70b5214610b35578063c79c04fd14610b60576103ce565b8063a9059cbb116101c1578063a9059cbb14610a11578063b204141114610a4e578063b62496f514610a79578063bbc0c74214610ab6576103ce565b806392aa37731461095757806395d89b41146109805780639a7a23d6146109ab578063a457c2d7146109d4576103ce565b806349bd5a5e116102e257806370a082311161027557806376b5aa931161024457806376b5aa93146108c15780638a8c523c146108ec5780638da5cb5b14610903578063924de9b71461092e576103ce565b806370a0823114610819578063715018a614610856578063751039fc1461086d5780637571336a14610898576103ce565b80635a139dd4116102b15780635a139dd41461076f5780636a486a8e1461079a5780636aebf627146107c55780636ddd1713146107ee576103ce565b806349bd5a5e146106b15780634a62bb65146106dc5780634f77f6c0146107075780634fbee19314610732576103ce565b8063229f2c5f1161035a5780632e6ed7ef116103295780632e6ed7ef146105f5578063313ce5671461061e578063377ad127146106495780633950935114610674576103ce565b8063229f2c5f1461053957806323b872dd1461056457806327c8f835146105a15780632cefac29146105cc576103ce565b806318160ddd1161039657806318160ddd1461048f57806318a94cf1146104ba5780631a8145bb146104e55780631c499ab014610510576103ce565b80630517d13d146103d357806306fdde03146103fc578063095ea7b3146104275780631694505e14610464576103ce565b366103ce57005b600080fd5b3480156103df57600080fd5b506103fa60048036038101906103f5919061450b565b610f27565b005b34801561040857600080fd5b50610411611036565b60405161041e91906145d1565b60405180910390f35b34801561043357600080fd5b5061044e60048036038101906104499190614651565b6110c8565b60405161045b91906146ac565b60405180910390f35b34801561047057600080fd5b506104796110e6565b6040516104869190614726565b60405180910390f35b34801561049b57600080fd5b506104a461110a565b6040516104b19190614750565b60405180910390f35b3480156104c657600080fd5b506104cf611114565b6040516104dc9190614750565b60405180910390f35b3480156104f157600080fd5b506104fa61111a565b6040516105079190614750565b60405180910390f35b34801561051c57600080fd5b506105376004803603810190610532919061450b565b611120565b005b34801561054557600080fd5b5061054e61122f565b60405161055b9190614750565b60405180910390f35b34801561057057600080fd5b5061058b6004803603810190610586919061476b565b611235565b60405161059891906146ac565b60405180910390f35b3480156105ad57600080fd5b506105b661132d565b6040516105c391906147cd565b60405180910390f35b3480156105d857600080fd5b506105f360048036038101906105ee9190614879565b611333565b005b34801561060157600080fd5b5061061c600480360381019061061791906148d9565b611542565b005b34801561062a57600080fd5b50610633611620565b604051610640919061495c565b60405180910390f35b34801561065557600080fd5b5061065e611629565b60405161066b91906147cd565b60405180910390f35b34801561068057600080fd5b5061069b60048036038101906106969190614651565b61164f565b6040516106a891906146ac565b60405180910390f35b3480156106bd57600080fd5b506106c66116fb565b6040516106d391906147cd565b60405180910390f35b3480156106e857600080fd5b506106f161171f565b6040516106fe91906146ac565b60405180910390f35b34801561071357600080fd5b5061071c611732565b6040516107299190614750565b60405180910390f35b34801561073e57600080fd5b5061075960048036038101906107549190614977565b611738565b60405161076691906146ac565b60405180910390f35b34801561077b57600080fd5b5061078461178e565b6040516107919190614750565b60405180910390f35b3480156107a657600080fd5b506107af611794565b6040516107bc9190614750565b60405180910390f35b3480156107d157600080fd5b506107ec60048036038101906107e79190614977565b61179a565b005b3480156107fa57600080fd5b506108036118d6565b60405161081091906146ac565b60405180910390f35b34801561082557600080fd5b50610840600480360381019061083b9190614977565b6118e9565b60405161084d9190614750565b60405180910390f35b34801561086257600080fd5b5061086b611931565b005b34801561087957600080fd5b506108826119b9565b60405161088f91906146ac565b60405180910390f35b3480156108a457600080fd5b506108bf60048036038101906108ba91906149a4565b611a59565b005b3480156108cd57600080fd5b506108d6611b30565b6040516108e39190614750565b60405180910390f35b3480156108f857600080fd5b50610901611b36565b005b34801561090f57600080fd5b50610918611c41565b60405161092591906147cd565b60405180910390f35b34801561093a57600080fd5b50610955600480360381019061095091906149e4565b611c6b565b005b34801561096357600080fd5b5061097e60048036038101906109799190614977565b611d04565b005b34801561098c57600080fd5b50610995611e40565b6040516109a291906145d1565b60405180910390f35b3480156109b757600080fd5b506109d260048036038101906109cd91906149a4565b611ed2565b005b3480156109e057600080fd5b506109fb60048036038101906109f69190614651565b611feb565b604051610a0891906146ac565b60405180910390f35b348015610a1d57600080fd5b50610a386004803603810190610a339190614651565b6120d6565b604051610a4591906146ac565b60405180910390f35b348015610a5a57600080fd5b50610a636120f4565b604051610a709190614750565b60405180910390f35b348015610a8557600080fd5b50610aa06004803603810190610a9b9190614977565b6120fa565b604051610aad91906146ac565b60405180910390f35b348015610ac257600080fd5b50610acb61211a565b604051610ad891906146ac565b60405180910390f35b348015610aed57600080fd5b50610b086004803603810190610b0391906149a4565b61212d565b005b348015610b1657600080fd5b50610b1f612252565b604051610b2c91906147cd565b60405180910390f35b348015610b4157600080fd5b50610b4a612278565b604051610b579190614750565b60405180910390f35b348015610b6c57600080fd5b50610b876004803603810190610b829190614977565b61227e565b005b348015610b9557600080fd5b50610b9e6123ba565b604051610bab91906146ac565b60405180910390f35b348015610bc057600080fd5b50610bdb6004803603810190610bd69190614977565b6123cd565b005b348015610be957600080fd5b50610c046004803603810190610bff919061450b565b612509565b604051610c1191906146ac565b60405180910390f35b348015610c2657600080fd5b50610c2f61265e565b604051610c3c9190614750565b60405180910390f35b348015610c5157600080fd5b50610c5a612664565b604051610c6791906147cd565b60405180910390f35b348015610c7c57600080fd5b50610c8561268a565b604051610c929190614750565b60405180910390f35b348015610ca757600080fd5b50610cc26004803603810190610cbd9190614a11565b612690565b604051610ccf9190614750565b60405180910390f35b348015610ce457600080fd5b50610cff6004803603810190610cfa9190614977565b612717565b604051610d0c91906146ac565b60405180910390f35b348015610d2157600080fd5b50610d2a612737565b604051610d379190614750565b60405180910390f35b348015610d4c57600080fd5b50610d676004803603810190610d629190614977565b61273d565b604051610d7491906146ac565b60405180910390f35b348015610d8957600080fd5b50610da46004803603810190610d9f91906148d9565b61275d565b005b348015610db257600080fd5b50610dbb61283b565b604051610dc891906147cd565b60405180910390f35b348015610ddd57600080fd5b50610de6612861565b604051610df391906146ac565b60405180910390f35b348015610e0857600080fd5b50610e11612901565b604051610e1e9190614750565b60405180910390f35b348015610e3357600080fd5b50610e3c612907565b604051610e499190614750565b60405180910390f35b348015610e5e57600080fd5b50610e796004803603810190610e749190614977565b61290d565b005b348015610e8757600080fd5b50610e90612a05565b604051610e9d9190614750565b60405180910390f35b348015610eb257600080fd5b50610ebb612a0b565b604051610ec89190614750565b60405180910390f35b348015610edd57600080fd5b50610ee6612a11565b604051610ef39190614750565b60405180910390f35b348015610f0857600080fd5b50610f11612a17565b604051610f1e91906147cd565b60405180910390f35b610f2f612a3d565b73ffffffffffffffffffffffffffffffffffffffff16610f4d611c41565b73ffffffffffffffffffffffffffffffffffffffff1614610fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9a90614a9d565b60405180910390fd5b670de0b6b3a76400006103e86001610fb961110a565b610fc39190614aec565b610fcd9190614b75565b610fd79190614b75565b811015611019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101090614c18565b60405180910390fd5b670de0b6b3a76400008161102d9190614aec565b600b8190555050565b60606003805461104590614c67565b80601f016020809104026020016040519081016040528092919081815260200182805461107190614c67565b80156110be5780601f10611093576101008083540402835291602001916110be565b820191906000526020600020905b8154815290600101906020018083116110a157829003601f168201915b5050505050905090565b60006110dc6110d5612a3d565b8484612a45565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b601b5481565b601e5481565b611128612a3d565b73ffffffffffffffffffffffffffffffffffffffff16611146611c41565b73ffffffffffffffffffffffffffffffffffffffff161461119c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119390614a9d565b60405180910390fd5b670de0b6b3a76400006103e860056111b261110a565b6111bc9190614aec565b6111c69190614b75565b6111d09190614b75565b811015611212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120990614d0b565b60405180910390fd5b670de0b6b3a7640000816112269190614aec565b600d8190555050565b60195481565b6000611242848484612c10565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061128d612a3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490614d9d565b60405180910390fd5b61132185611319612a3d565b858403612a45565b60019150509392505050565b61dead81565b61133b612a3d565b73ffffffffffffffffffffffffffffffffffffffff16611359611c41565b73ffffffffffffffffffffffffffffffffffffffff16146113af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a690614a9d565b60405180910390fd5b60005b8383905081101561153c5760008484838181106113d2576113d1614dbd565b5b90506020020160208101906113e79190614977565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156114735750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156114cb57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b156115285782601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50808061153490614dec565b9150506113b2565b50505050565b61154a612a3d565b73ffffffffffffffffffffffffffffffffffffffff16611568611c41565b73ffffffffffffffffffffffffffffffffffffffff16146115be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b590614a9d565b60405180910390fd5b836014819055508260158190555081601681905550806017819055506017546016546015546014546115f09190614e35565b6115fa9190614e35565b6116049190614e35565b6013819055506063601354111561161a57600080fd5b50505050565b60006012905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006116f161165c612a3d565b84846001600061166a612a3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116ec9190614e35565b612a45565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600e60009054906101000a900460ff1681565b601c5481565b6000602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60175481565b60185481565b6117a2612a3d565b73ffffffffffffffffffffffffffffffffffffffff166117c0611c41565b73ffffffffffffffffffffffffffffffffffffffff1614611816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180d90614a9d565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fe1bb4a3e2b2b99353f84d73df9e136cfe17627ed07083a649101dfa6bde8459c60405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611939612a3d565b73ffffffffffffffffffffffffffffffffffffffff16611957611c41565b73ffffffffffffffffffffffffffffffffffffffff16146119ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a490614a9d565b60405180910390fd5b6119b7600061399d565b565b60006119c3612a3d565b73ffffffffffffffffffffffffffffffffffffffff166119e1611c41565b73ffffffffffffffffffffffffffffffffffffffff1614611a37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2e90614a9d565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b611a61612a3d565b73ffffffffffffffffffffffffffffffffffffffff16611a7f611c41565b73ffffffffffffffffffffffffffffffffffffffff1614611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc90614a9d565b60405180910390fd5b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601d5481565b611b3e612a3d565b73ffffffffffffffffffffffffffffffffffffffff16611b5c611c41565b73ffffffffffffffffffffffffffffffffffffffff1614611bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba990614a9d565b60405180910390fd5b600e60019054906101000a900460ff1615611c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf990614ed7565b60405180910390fd5b6001600e60016101000a81548160ff021916908315150217905550436011819055506001600e60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611c73612a3d565b73ffffffffffffffffffffffffffffffffffffffff16611c91611c41565b73ffffffffffffffffffffffffffffffffffffffff1614611ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cde90614a9d565b60405180910390fd5b80600e60026101000a81548160ff02191690831515021790555050565b611d0c612a3d565b73ffffffffffffffffffffffffffffffffffffffff16611d2a611c41565b73ffffffffffffffffffffffffffffffffffffffff1614611d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7790614a9d565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f3e0ea4f8339b6050ff814971a9814aa39176c149fcf185975c219f33db2342db60405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060048054611e4f90614c67565b80601f0160208091040260200160405190810160405280929190818152602001828054611e7b90614c67565b8015611ec85780601f10611e9d57610100808354040283529160200191611ec8565b820191906000526020600020905b815481529060010190602001808311611eab57829003601f168201915b5050505050905090565b611eda612a3d565b73ffffffffffffffffffffffffffffffffffffffff16611ef8611c41565b73ffffffffffffffffffffffffffffffffffffffff1614611f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4590614a9d565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611fdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd490614f69565b60405180910390fd5b611fe78282613a63565b5050565b60008060016000611ffa612a3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156120b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ae90614ffb565b60405180910390fd5b6120cb6120c2612a3d565b85858403612a45565b600191505092915050565b60006120ea6120e3612a3d565b8484612c10565b6001905092915050565b60165481565b60236020528060005260406000206000915054906101000a900460ff1681565b600e60019054906101000a900460ff1681565b612135612a3d565b73ffffffffffffffffffffffffffffffffffffffff16612153611c41565b73ffffffffffffffffffffffffffffffffffffffff16146121a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a090614a9d565b60405180910390fd5b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161224691906146ac565b60405180910390a25050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b612286612a3d565b73ffffffffffffffffffffffffffffffffffffffff166122a4611c41565b73ffffffffffffffffffffffffffffffffffffffff16146122fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f190614a9d565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df870396560405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601060009054906101000a900460ff1681565b6123d5612a3d565b73ffffffffffffffffffffffffffffffffffffffff166123f3611c41565b73ffffffffffffffffffffffffffffffffffffffff1614612449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244090614a9d565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f1be79b363311a081e3513abd6064d09dc657018011f7ea0d62ceff4e3094d0b260405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000612513612a3d565b73ffffffffffffffffffffffffffffffffffffffff16612531611c41565b73ffffffffffffffffffffffffffffffffffffffff1614612587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257e90614a9d565b60405180910390fd5b620186a0600161259561110a565b61259f9190614aec565b6125a99190614b75565b8210156125eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e29061508d565b60405180910390fd5b6103e860056125f861110a565b6126029190614aec565b61260c9190614b75565b82111561264e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126459061511f565b60405180910390fd5b81600c8190555060019050919050565b60145481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60226020528060005260406000206000915054906101000a900460ff1681565b600c5481565b60126020528060005260406000206000915054906101000a900460ff1681565b612765612a3d565b73ffffffffffffffffffffffffffffffffffffffff16612783611c41565b73ffffffffffffffffffffffffffffffffffffffff16146127d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d090614a9d565b60405180910390fd5b8360198190555082601a8190555081601b8190555080601c81905550601c54601b54601a5460195461280b9190614e35565b6128159190614e35565b61281f9190614e35565b6018819055506063601854111561283557600080fd5b50505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061286b612a3d565b73ffffffffffffffffffffffffffffffffffffffff16612889611c41565b73ffffffffffffffffffffffffffffffffffffffff16146128df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d690614a9d565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b601f5481565b60155481565b612915612a3d565b73ffffffffffffffffffffffffffffffffffffffff16612933611c41565b73ffffffffffffffffffffffffffffffffffffffff1614612989576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298090614a9d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f0906151b1565b60405180910390fd5b612a028161399d565b50565b601a5481565b600d5481565b60205481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aac90615243565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1c906152d5565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c039190614750565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7790615367565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce7906153f9565b60405180910390fd5b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7490615465565b60405180910390fd5b6000811415612d9757612d9283836000613b04565b613998565b600e60009054906101000a900460ff161561345a57612db4611c41565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612e225750612df2611c41565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e5b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e95575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612eae5750600660149054906101000a900460ff16155b1561345957600e60019054906101000a900460ff16612fa857602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f685750602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9e906154d1565b60405180910390fd5b5b601060009054906101000a900460ff161561317057612fc5611c41565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561304c57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156130a457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561316f5743600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061312a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312190615589565b60405180910390fd5b43600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132135750602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132ba57600b5481111561325d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132549061561b565b60405180910390fd5b600d54613269836118e9565b826132749190614e35565b11156132b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ac90615687565b60405180910390fd5b613458565b602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561335d5750602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133ac57600b548111156133a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161339e90615719565b60405180910390fd5b613457565b602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661345657600d54613409836118e9565b826134149190614e35565b1115613455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161344c90615687565b60405180910390fd5b5b5b5b5b5b6000613465306118e9565b90506000600c54821015905080801561348a5750600e60029054906101000a900460ff165b80156134a35750600660149054906101000a900460ff16155b80156134f95750602360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561354f5750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135a55750602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135e9576001600660146101000a81548160ff0219169083151502179055506135cd613d85565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061369f5750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156136a957600090505b6000811561398857602360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561370c57506000601854115b1561380c57613739606461372b6018548861414690919063ffffffff16565b61415c90919063ffffffff16565b9050601854601a548261374c9190614aec565b6137569190614b75565b601e60008282546137679190614e35565b92505081905550601854601b548261377f9190614aec565b6137899190614b75565b601f600082825461379a9190614e35565b92505081905550601854601954826137b29190614aec565b6137bc9190614b75565b601d60008282546137cd9190614e35565b92505081905550601854601c54826137e59190614aec565b6137ef9190614b75565b602060008282546138009190614e35565b92505081905550613964565b602360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561386757506000601354115b156139635761389460646138866013548861414690919063ffffffff16565b61415c90919063ffffffff16565b9050601354601554826138a79190614aec565b6138b19190614b75565b601e60008282546138c29190614e35565b92505081905550601354601654826138da9190614aec565b6138e49190614b75565b601f60008282546138f59190614e35565b925050819055506013546014548261390d9190614aec565b6139179190614b75565b601d60008282546139289190614e35565b92505081905550601354601754826139409190614aec565b61394a9190614b75565b6020600082825461395b9190614e35565b925050819055505b5b600081111561397957613978873083613b04565b5b80856139859190615739565b94505b613993878787613b04565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b6b90615367565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bdb906153f9565b60405180910390fd5b613bef838383614172565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c6c906157df565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d089190614e35565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d6c9190614750565b60405180910390a3613d7f848484614177565b50505050565b6000613d90306118e9565b90506000602054601f54601d54601e54613daa9190614e35565b613db49190614e35565b613dbe9190614e35565b9050600080831480613dd05750600082145b15613ddd57505050614144565b6014600c54613dec9190614aec565b831115613e05576014600c54613e029190614aec565b92505b6000600283601e5486613e189190614aec565b613e229190614b75565b613e2c9190614b75565b90506000613e43828661417c90919063ffffffff16565b90506000479050613e5382614192565b6000613e68824761417c90919063ffffffff16565b90506000613e9387613e85601d548561414690919063ffffffff16565b61415c90919063ffffffff16565b90506000613ebe88613eb0601f548661414690919063ffffffff16565b61415c90919063ffffffff16565b90506000613ee989613edb6020548761414690919063ffffffff16565b61415c90919063ffffffff16565b9050600081838587613efb9190615739565b613f059190615739565b613f0f9190615739565b90506000601e819055506000601d819055506000601f819055506000602081905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051613f7790615830565b60006040518083038185875af1925050503d8060008114613fb4576040519150601f19603f3d011682016040523d82523d6000602084013e613fb9565b606091505b505080995050600088118015613fcf5750600081115b1561401c57613fde88826143cf565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618782601e5460405161401393929190615845565b60405180910390a15b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161406290615830565b60006040518083038185875af1925050503d806000811461409f576040519150601f19603f3d011682016040523d82523d6000602084013e6140a4565b606091505b505080995050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516140f090615830565b60006040518083038185875af1925050503d806000811461412d576040519150601f19603f3d011682016040523d82523d6000602084013e614132565b606091505b50508099505050505050505050505050505b565b600081836141549190614aec565b905092915050565b6000818361416a9190614b75565b905092915050565b505050565b505050565b6000818361418a9190615739565b905092915050565b6000600267ffffffffffffffff8111156141af576141ae61587c565b5b6040519080825280602002602001820160405280156141dd5781602001602082028036833780820191505090505b50905030816000815181106141f5576141f4614dbd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561429a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142be91906158c0565b816001815181106142d2576142d1614dbd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614337307f000000000000000000000000000000000000000000000000000000000000000084612a45565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016143999594939291906159e6565b600060405180830381600087803b1580156143b357600080fd5b505af11580156143c7573d6000803e3d6000fd5b505050505050565b6143fa307f000000000000000000000000000000000000000000000000000000000000000084612a45565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161448196959493929190615a40565b60606040518083038185885af115801561449f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906144c49190615ab6565b5050505050565b600080fd5b600080fd5b6000819050919050565b6144e8816144d5565b81146144f357600080fd5b50565b600081359050614505816144df565b92915050565b600060208284031215614521576145206144cb565b5b600061452f848285016144f6565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614572578082015181840152602081019050614557565b83811115614581576000848401525b50505050565b6000601f19601f8301169050919050565b60006145a382614538565b6145ad8185614543565b93506145bd818560208601614554565b6145c681614587565b840191505092915050565b600060208201905081810360008301526145eb8184614598565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061461e826145f3565b9050919050565b61462e81614613565b811461463957600080fd5b50565b60008135905061464b81614625565b92915050565b60008060408385031215614668576146676144cb565b5b60006146768582860161463c565b9250506020614687858286016144f6565b9150509250929050565b60008115159050919050565b6146a681614691565b82525050565b60006020820190506146c1600083018461469d565b92915050565b6000819050919050565b60006146ec6146e76146e2846145f3565b6146c7565b6145f3565b9050919050565b60006146fe826146d1565b9050919050565b6000614710826146f3565b9050919050565b61472081614705565b82525050565b600060208201905061473b6000830184614717565b92915050565b61474a816144d5565b82525050565b60006020820190506147656000830184614741565b92915050565b600080600060608486031215614784576147836144cb565b5b60006147928682870161463c565b93505060206147a38682870161463c565b92505060406147b4868287016144f6565b9150509250925092565b6147c781614613565b82525050565b60006020820190506147e260008301846147be565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261480d5761480c6147e8565b5b8235905067ffffffffffffffff81111561482a576148296147ed565b5b602083019150836020820283011115614846576148456147f2565b5b9250929050565b61485681614691565b811461486157600080fd5b50565b6000813590506148738161484d565b92915050565b600080600060408486031215614892576148916144cb565b5b600084013567ffffffffffffffff8111156148b0576148af6144d0565b5b6148bc868287016147f7565b935093505060206148cf86828701614864565b9150509250925092565b600080600080608085870312156148f3576148f26144cb565b5b6000614901878288016144f6565b9450506020614912878288016144f6565b9350506040614923878288016144f6565b9250506060614934878288016144f6565b91505092959194509250565b600060ff82169050919050565b61495681614940565b82525050565b6000602082019050614971600083018461494d565b92915050565b60006020828403121561498d5761498c6144cb565b5b600061499b8482850161463c565b91505092915050565b600080604083850312156149bb576149ba6144cb565b5b60006149c98582860161463c565b92505060206149da85828601614864565b9150509250929050565b6000602082840312156149fa576149f96144cb565b5b6000614a0884828501614864565b91505092915050565b60008060408385031215614a2857614a276144cb565b5b6000614a368582860161463c565b9250506020614a478582860161463c565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614a87602083614543565b9150614a9282614a51565b602082019050919050565b60006020820190508181036000830152614ab681614a7a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614af7826144d5565b9150614b02836144d5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b3b57614b3a614abd565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614b80826144d5565b9150614b8b836144d5565b925082614b9b57614b9a614b46565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614c02602983614543565b9150614c0d82614ba6565b604082019050919050565b60006020820190508181036000830152614c3181614bf5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614c7f57607f821691505b60208210811415614c9357614c92614c38565b5b50919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614cf5602483614543565b9150614d0082614c99565b604082019050919050565b60006020820190508181036000830152614d2481614ce8565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614d87602883614543565b9150614d9282614d2b565b604082019050919050565b60006020820190508181036000830152614db681614d7a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614df7826144d5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614e2a57614e29614abd565b5b600182019050919050565b6000614e40826144d5565b9150614e4b836144d5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614e8057614e7f614abd565b5b828201905092915050565b7f546f6b656e206c61756e63686564000000000000000000000000000000000000600082015250565b6000614ec1600e83614543565b9150614ecc82614e8b565b602082019050919050565b60006020820190508181036000830152614ef081614eb4565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614f53603983614543565b9150614f5e82614ef7565b604082019050919050565b60006020820190508181036000830152614f8281614f46565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614fe5602583614543565b9150614ff082614f89565b604082019050919050565b6000602082019050818103600083015261501481614fd8565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000615077603583614543565b91506150828261501b565b604082019050919050565b600060208201905081810360008301526150a68161506a565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000615109603483614543565b9150615114826150ad565b604082019050919050565b60006020820190508181036000830152615138816150fc565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061519b602683614543565b91506151a68261513f565b604082019050919050565b600060208201905081810360008301526151ca8161518e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061522d602483614543565b9150615238826151d1565b604082019050919050565b6000602082019050818103600083015261525c81615220565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006152bf602283614543565b91506152ca82615263565b604082019050919050565b600060208201905081810360008301526152ee816152b2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615351602583614543565b915061535c826152f5565b604082019050919050565b6000602082019050818103600083015261538081615344565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006153e3602383614543565b91506153ee82615387565b604082019050919050565b60006020820190508181036000830152615412816153d6565b9050919050565b7f536e6970657220626c6f636b6564000000000000000000000000000000000000600082015250565b600061544f600e83614543565b915061545a82615419565b602082019050919050565b6000602082019050818103600083015261547e81615442565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006154bb601683614543565b91506154c682615485565b602082019050919050565b600060208201905081810360008301526154ea816154ae565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615573604983614543565b915061557e826154f1565b606082019050919050565b600060208201905081810360008301526155a281615566565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e2e0000000000000000000000000000000000602082015250565b6000615605602f83614543565b9150615610826155a9565b604082019050919050565b60006020820190508181036000830152615634816155f8565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615671601383614543565b915061567c8261563b565b602082019050919050565b600060208201905081810360008301526156a081615664565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e2e00000000000000000000000000000000602082015250565b6000615703603083614543565b915061570e826156a7565b604082019050919050565b60006020820190508181036000830152615732816156f6565b9050919050565b6000615744826144d5565b915061574f836144d5565b92508282101561576257615761614abd565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006157c9602683614543565b91506157d48261576d565b604082019050919050565b600060208201905081810360008301526157f8816157bc565b9050919050565b600081905092915050565b50565b600061581a6000836157ff565b91506158258261580a565b600082019050919050565b600061583b8261580d565b9150819050919050565b600060608201905061585a6000830186614741565b6158676020830185614741565b6158746040830184614741565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506158ba81614625565b92915050565b6000602082840312156158d6576158d56144cb565b5b60006158e4848285016158ab565b91505092915050565b6000819050919050565b600061591261590d615908846158ed565b6146c7565b6144d5565b9050919050565b615922816158f7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61595d81614613565b82525050565b600061596f8383615954565b60208301905092915050565b6000602082019050919050565b600061599382615928565b61599d8185615933565b93506159a883615944565b8060005b838110156159d95781516159c08882615963565b97506159cb8361597b565b9250506001810190506159ac565b5085935050505092915050565b600060a0820190506159fb6000830188614741565b615a086020830187615919565b8181036040830152615a1a8186615988565b9050615a2960608301856147be565b615a366080830184614741565b9695505050505050565b600060c082019050615a5560008301896147be565b615a626020830188614741565b615a6f6040830187615919565b615a7c6060830186615919565b615a8960808301856147be565b615a9660a0830184614741565b979650505050505050565b600081519050615ab0816144df565b92915050565b600080600060608486031215615acf57615ace6144cb565b5b6000615add86828701615aa1565b9350506020615aee86828701615aa1565b9250506040615aff86828701615aa1565b915050925092509256fea2646970667358221220dc504e54ee74e5a8b774932352747e878beedd65661ac873336863a8f88d07ea64736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106103c75760003560e01c806392aa3773116101f2578063d46980161161010d578063e884f260116100a0578063f63743421161006f578063f637434214610e7b578063f8b45b0514610ea6578063fb002c9714610ed1578063fd72e22a14610efc576103ce565b8063e884f26014610dd1578063ef8700e514610dfc578063f11a24d314610e27578063f2fde38b14610e52576103ce565b8063e2f45605116100dc578063e2f4560514610d15578063e596219514610d40578063e7ad9fcd14610d7d578063e80177c714610da6576103ce565b8063d469801614610c45578063d85ba06314610c70578063dd62ed3e14610c9b578063e1bc339414610cd8576103ce565b8063c024666811610185578063c876d0b911610154578063c876d0b914610b89578063d1b89d4e14610bb4578063d257b34f14610bdd578063d347be6a14610c1a576103ce565b8063c024666814610ae1578063c04a541414610b0a578063c3f70b5214610b35578063c79c04fd14610b60576103ce565b8063a9059cbb116101c1578063a9059cbb14610a11578063b204141114610a4e578063b62496f514610a79578063bbc0c74214610ab6576103ce565b806392aa37731461095757806395d89b41146109805780639a7a23d6146109ab578063a457c2d7146109d4576103ce565b806349bd5a5e116102e257806370a082311161027557806376b5aa931161024457806376b5aa93146108c15780638a8c523c146108ec5780638da5cb5b14610903578063924de9b71461092e576103ce565b806370a0823114610819578063715018a614610856578063751039fc1461086d5780637571336a14610898576103ce565b80635a139dd4116102b15780635a139dd41461076f5780636a486a8e1461079a5780636aebf627146107c55780636ddd1713146107ee576103ce565b806349bd5a5e146106b15780634a62bb65146106dc5780634f77f6c0146107075780634fbee19314610732576103ce565b8063229f2c5f1161035a5780632e6ed7ef116103295780632e6ed7ef146105f5578063313ce5671461061e578063377ad127146106495780633950935114610674576103ce565b8063229f2c5f1461053957806323b872dd1461056457806327c8f835146105a15780632cefac29146105cc576103ce565b806318160ddd1161039657806318160ddd1461048f57806318a94cf1146104ba5780631a8145bb146104e55780631c499ab014610510576103ce565b80630517d13d146103d357806306fdde03146103fc578063095ea7b3146104275780631694505e14610464576103ce565b366103ce57005b600080fd5b3480156103df57600080fd5b506103fa60048036038101906103f5919061450b565b610f27565b005b34801561040857600080fd5b50610411611036565b60405161041e91906145d1565b60405180910390f35b34801561043357600080fd5b5061044e60048036038101906104499190614651565b6110c8565b60405161045b91906146ac565b60405180910390f35b34801561047057600080fd5b506104796110e6565b6040516104869190614726565b60405180910390f35b34801561049b57600080fd5b506104a461110a565b6040516104b19190614750565b60405180910390f35b3480156104c657600080fd5b506104cf611114565b6040516104dc9190614750565b60405180910390f35b3480156104f157600080fd5b506104fa61111a565b6040516105079190614750565b60405180910390f35b34801561051c57600080fd5b506105376004803603810190610532919061450b565b611120565b005b34801561054557600080fd5b5061054e61122f565b60405161055b9190614750565b60405180910390f35b34801561057057600080fd5b5061058b6004803603810190610586919061476b565b611235565b60405161059891906146ac565b60405180910390f35b3480156105ad57600080fd5b506105b661132d565b6040516105c391906147cd565b60405180910390f35b3480156105d857600080fd5b506105f360048036038101906105ee9190614879565b611333565b005b34801561060157600080fd5b5061061c600480360381019061061791906148d9565b611542565b005b34801561062a57600080fd5b50610633611620565b604051610640919061495c565b60405180910390f35b34801561065557600080fd5b5061065e611629565b60405161066b91906147cd565b60405180910390f35b34801561068057600080fd5b5061069b60048036038101906106969190614651565b61164f565b6040516106a891906146ac565b60405180910390f35b3480156106bd57600080fd5b506106c66116fb565b6040516106d391906147cd565b60405180910390f35b3480156106e857600080fd5b506106f161171f565b6040516106fe91906146ac565b60405180910390f35b34801561071357600080fd5b5061071c611732565b6040516107299190614750565b60405180910390f35b34801561073e57600080fd5b5061075960048036038101906107549190614977565b611738565b60405161076691906146ac565b60405180910390f35b34801561077b57600080fd5b5061078461178e565b6040516107919190614750565b60405180910390f35b3480156107a657600080fd5b506107af611794565b6040516107bc9190614750565b60405180910390f35b3480156107d157600080fd5b506107ec60048036038101906107e79190614977565b61179a565b005b3480156107fa57600080fd5b506108036118d6565b60405161081091906146ac565b60405180910390f35b34801561082557600080fd5b50610840600480360381019061083b9190614977565b6118e9565b60405161084d9190614750565b60405180910390f35b34801561086257600080fd5b5061086b611931565b005b34801561087957600080fd5b506108826119b9565b60405161088f91906146ac565b60405180910390f35b3480156108a457600080fd5b506108bf60048036038101906108ba91906149a4565b611a59565b005b3480156108cd57600080fd5b506108d6611b30565b6040516108e39190614750565b60405180910390f35b3480156108f857600080fd5b50610901611b36565b005b34801561090f57600080fd5b50610918611c41565b60405161092591906147cd565b60405180910390f35b34801561093a57600080fd5b50610955600480360381019061095091906149e4565b611c6b565b005b34801561096357600080fd5b5061097e60048036038101906109799190614977565b611d04565b005b34801561098c57600080fd5b50610995611e40565b6040516109a291906145d1565b60405180910390f35b3480156109b757600080fd5b506109d260048036038101906109cd91906149a4565b611ed2565b005b3480156109e057600080fd5b506109fb60048036038101906109f69190614651565b611feb565b604051610a0891906146ac565b60405180910390f35b348015610a1d57600080fd5b50610a386004803603810190610a339190614651565b6120d6565b604051610a4591906146ac565b60405180910390f35b348015610a5a57600080fd5b50610a636120f4565b604051610a709190614750565b60405180910390f35b348015610a8557600080fd5b50610aa06004803603810190610a9b9190614977565b6120fa565b604051610aad91906146ac565b60405180910390f35b348015610ac257600080fd5b50610acb61211a565b604051610ad891906146ac565b60405180910390f35b348015610aed57600080fd5b50610b086004803603810190610b0391906149a4565b61212d565b005b348015610b1657600080fd5b50610b1f612252565b604051610b2c91906147cd565b60405180910390f35b348015610b4157600080fd5b50610b4a612278565b604051610b579190614750565b60405180910390f35b348015610b6c57600080fd5b50610b876004803603810190610b829190614977565b61227e565b005b348015610b9557600080fd5b50610b9e6123ba565b604051610bab91906146ac565b60405180910390f35b348015610bc057600080fd5b50610bdb6004803603810190610bd69190614977565b6123cd565b005b348015610be957600080fd5b50610c046004803603810190610bff919061450b565b612509565b604051610c1191906146ac565b60405180910390f35b348015610c2657600080fd5b50610c2f61265e565b604051610c3c9190614750565b60405180910390f35b348015610c5157600080fd5b50610c5a612664565b604051610c6791906147cd565b60405180910390f35b348015610c7c57600080fd5b50610c8561268a565b604051610c929190614750565b60405180910390f35b348015610ca757600080fd5b50610cc26004803603810190610cbd9190614a11565b612690565b604051610ccf9190614750565b60405180910390f35b348015610ce457600080fd5b50610cff6004803603810190610cfa9190614977565b612717565b604051610d0c91906146ac565b60405180910390f35b348015610d2157600080fd5b50610d2a612737565b604051610d379190614750565b60405180910390f35b348015610d4c57600080fd5b50610d676004803603810190610d629190614977565b61273d565b604051610d7491906146ac565b60405180910390f35b348015610d8957600080fd5b50610da46004803603810190610d9f91906148d9565b61275d565b005b348015610db257600080fd5b50610dbb61283b565b604051610dc891906147cd565b60405180910390f35b348015610ddd57600080fd5b50610de6612861565b604051610df391906146ac565b60405180910390f35b348015610e0857600080fd5b50610e11612901565b604051610e1e9190614750565b60405180910390f35b348015610e3357600080fd5b50610e3c612907565b604051610e499190614750565b60405180910390f35b348015610e5e57600080fd5b50610e796004803603810190610e749190614977565b61290d565b005b348015610e8757600080fd5b50610e90612a05565b604051610e9d9190614750565b60405180910390f35b348015610eb257600080fd5b50610ebb612a0b565b604051610ec89190614750565b60405180910390f35b348015610edd57600080fd5b50610ee6612a11565b604051610ef39190614750565b60405180910390f35b348015610f0857600080fd5b50610f11612a17565b604051610f1e91906147cd565b60405180910390f35b610f2f612a3d565b73ffffffffffffffffffffffffffffffffffffffff16610f4d611c41565b73ffffffffffffffffffffffffffffffffffffffff1614610fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9a90614a9d565b60405180910390fd5b670de0b6b3a76400006103e86001610fb961110a565b610fc39190614aec565b610fcd9190614b75565b610fd79190614b75565b811015611019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101090614c18565b60405180910390fd5b670de0b6b3a76400008161102d9190614aec565b600b8190555050565b60606003805461104590614c67565b80601f016020809104026020016040519081016040528092919081815260200182805461107190614c67565b80156110be5780601f10611093576101008083540402835291602001916110be565b820191906000526020600020905b8154815290600101906020018083116110a157829003601f168201915b5050505050905090565b60006110dc6110d5612a3d565b8484612a45565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b601b5481565b601e5481565b611128612a3d565b73ffffffffffffffffffffffffffffffffffffffff16611146611c41565b73ffffffffffffffffffffffffffffffffffffffff161461119c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119390614a9d565b60405180910390fd5b670de0b6b3a76400006103e860056111b261110a565b6111bc9190614aec565b6111c69190614b75565b6111d09190614b75565b811015611212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120990614d0b565b60405180910390fd5b670de0b6b3a7640000816112269190614aec565b600d8190555050565b60195481565b6000611242848484612c10565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061128d612a3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490614d9d565b60405180910390fd5b61132185611319612a3d565b858403612a45565b60019150509392505050565b61dead81565b61133b612a3d565b73ffffffffffffffffffffffffffffffffffffffff16611359611c41565b73ffffffffffffffffffffffffffffffffffffffff16146113af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a690614a9d565b60405180910390fd5b60005b8383905081101561153c5760008484838181106113d2576113d1614dbd565b5b90506020020160208101906113e79190614977565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156114735750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156114cb57507f000000000000000000000000aac4fa7f6901c773c4426bbb788e05919ffd8cac73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b156115285782601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50808061153490614dec565b9150506113b2565b50505050565b61154a612a3d565b73ffffffffffffffffffffffffffffffffffffffff16611568611c41565b73ffffffffffffffffffffffffffffffffffffffff16146115be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b590614a9d565b60405180910390fd5b836014819055508260158190555081601681905550806017819055506017546016546015546014546115f09190614e35565b6115fa9190614e35565b6116049190614e35565b6013819055506063601354111561161a57600080fd5b50505050565b60006012905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006116f161165c612a3d565b84846001600061166a612a3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116ec9190614e35565b612a45565b6001905092915050565b7f000000000000000000000000aac4fa7f6901c773c4426bbb788e05919ffd8cac81565b600e60009054906101000a900460ff1681565b601c5481565b6000602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60175481565b60185481565b6117a2612a3d565b73ffffffffffffffffffffffffffffffffffffffff166117c0611c41565b73ffffffffffffffffffffffffffffffffffffffff1614611816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180d90614a9d565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fe1bb4a3e2b2b99353f84d73df9e136cfe17627ed07083a649101dfa6bde8459c60405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611939612a3d565b73ffffffffffffffffffffffffffffffffffffffff16611957611c41565b73ffffffffffffffffffffffffffffffffffffffff16146119ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a490614a9d565b60405180910390fd5b6119b7600061399d565b565b60006119c3612a3d565b73ffffffffffffffffffffffffffffffffffffffff166119e1611c41565b73ffffffffffffffffffffffffffffffffffffffff1614611a37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2e90614a9d565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b611a61612a3d565b73ffffffffffffffffffffffffffffffffffffffff16611a7f611c41565b73ffffffffffffffffffffffffffffffffffffffff1614611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc90614a9d565b60405180910390fd5b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601d5481565b611b3e612a3d565b73ffffffffffffffffffffffffffffffffffffffff16611b5c611c41565b73ffffffffffffffffffffffffffffffffffffffff1614611bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba990614a9d565b60405180910390fd5b600e60019054906101000a900460ff1615611c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf990614ed7565b60405180910390fd5b6001600e60016101000a81548160ff021916908315150217905550436011819055506001600e60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611c73612a3d565b73ffffffffffffffffffffffffffffffffffffffff16611c91611c41565b73ffffffffffffffffffffffffffffffffffffffff1614611ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cde90614a9d565b60405180910390fd5b80600e60026101000a81548160ff02191690831515021790555050565b611d0c612a3d565b73ffffffffffffffffffffffffffffffffffffffff16611d2a611c41565b73ffffffffffffffffffffffffffffffffffffffff1614611d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7790614a9d565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f3e0ea4f8339b6050ff814971a9814aa39176c149fcf185975c219f33db2342db60405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060048054611e4f90614c67565b80601f0160208091040260200160405190810160405280929190818152602001828054611e7b90614c67565b8015611ec85780601f10611e9d57610100808354040283529160200191611ec8565b820191906000526020600020905b815481529060010190602001808311611eab57829003601f168201915b5050505050905090565b611eda612a3d565b73ffffffffffffffffffffffffffffffffffffffff16611ef8611c41565b73ffffffffffffffffffffffffffffffffffffffff1614611f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4590614a9d565b60405180910390fd5b7f000000000000000000000000aac4fa7f6901c773c4426bbb788e05919ffd8cac73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611fdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd490614f69565b60405180910390fd5b611fe78282613a63565b5050565b60008060016000611ffa612a3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156120b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ae90614ffb565b60405180910390fd5b6120cb6120c2612a3d565b85858403612a45565b600191505092915050565b60006120ea6120e3612a3d565b8484612c10565b6001905092915050565b60165481565b60236020528060005260406000206000915054906101000a900460ff1681565b600e60019054906101000a900460ff1681565b612135612a3d565b73ffffffffffffffffffffffffffffffffffffffff16612153611c41565b73ffffffffffffffffffffffffffffffffffffffff16146121a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a090614a9d565b60405180910390fd5b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161224691906146ac565b60405180910390a25050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b612286612a3d565b73ffffffffffffffffffffffffffffffffffffffff166122a4611c41565b73ffffffffffffffffffffffffffffffffffffffff16146122fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f190614a9d565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df870396560405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601060009054906101000a900460ff1681565b6123d5612a3d565b73ffffffffffffffffffffffffffffffffffffffff166123f3611c41565b73ffffffffffffffffffffffffffffffffffffffff1614612449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244090614a9d565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f1be79b363311a081e3513abd6064d09dc657018011f7ea0d62ceff4e3094d0b260405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000612513612a3d565b73ffffffffffffffffffffffffffffffffffffffff16612531611c41565b73ffffffffffffffffffffffffffffffffffffffff1614612587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257e90614a9d565b60405180910390fd5b620186a0600161259561110a565b61259f9190614aec565b6125a99190614b75565b8210156125eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e29061508d565b60405180910390fd5b6103e860056125f861110a565b6126029190614aec565b61260c9190614b75565b82111561264e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126459061511f565b60405180910390fd5b81600c8190555060019050919050565b60145481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60226020528060005260406000206000915054906101000a900460ff1681565b600c5481565b60126020528060005260406000206000915054906101000a900460ff1681565b612765612a3d565b73ffffffffffffffffffffffffffffffffffffffff16612783611c41565b73ffffffffffffffffffffffffffffffffffffffff16146127d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d090614a9d565b60405180910390fd5b8360198190555082601a8190555081601b8190555080601c81905550601c54601b54601a5460195461280b9190614e35565b6128159190614e35565b61281f9190614e35565b6018819055506063601854111561283557600080fd5b50505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061286b612a3d565b73ffffffffffffffffffffffffffffffffffffffff16612889611c41565b73ffffffffffffffffffffffffffffffffffffffff16146128df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d690614a9d565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b601f5481565b60155481565b612915612a3d565b73ffffffffffffffffffffffffffffffffffffffff16612933611c41565b73ffffffffffffffffffffffffffffffffffffffff1614612989576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298090614a9d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f0906151b1565b60405180910390fd5b612a028161399d565b50565b601a5481565b600d5481565b60205481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aac90615243565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1c906152d5565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c039190614750565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7790615367565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce7906153f9565b60405180910390fd5b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7490615465565b60405180910390fd5b6000811415612d9757612d9283836000613b04565b613998565b600e60009054906101000a900460ff161561345a57612db4611c41565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612e225750612df2611c41565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e5b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e95575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612eae5750600660149054906101000a900460ff16155b1561345957600e60019054906101000a900460ff16612fa857602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f685750602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9e906154d1565b60405180910390fd5b5b601060009054906101000a900460ff161561317057612fc5611c41565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561304c57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156130a457507f000000000000000000000000aac4fa7f6901c773c4426bbb788e05919ffd8cac73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561316f5743600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061312a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312190615589565b60405180910390fd5b43600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132135750602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132ba57600b5481111561325d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132549061561b565b60405180910390fd5b600d54613269836118e9565b826132749190614e35565b11156132b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ac90615687565b60405180910390fd5b613458565b602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561335d5750602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133ac57600b548111156133a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161339e90615719565b60405180910390fd5b613457565b602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661345657600d54613409836118e9565b826134149190614e35565b1115613455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161344c90615687565b60405180910390fd5b5b5b5b5b5b6000613465306118e9565b90506000600c54821015905080801561348a5750600e60029054906101000a900460ff165b80156134a35750600660149054906101000a900460ff16155b80156134f95750602360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561354f5750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135a55750602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135e9576001600660146101000a81548160ff0219169083151502179055506135cd613d85565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061369f5750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156136a957600090505b6000811561398857602360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561370c57506000601854115b1561380c57613739606461372b6018548861414690919063ffffffff16565b61415c90919063ffffffff16565b9050601854601a548261374c9190614aec565b6137569190614b75565b601e60008282546137679190614e35565b92505081905550601854601b548261377f9190614aec565b6137899190614b75565b601f600082825461379a9190614e35565b92505081905550601854601954826137b29190614aec565b6137bc9190614b75565b601d60008282546137cd9190614e35565b92505081905550601854601c54826137e59190614aec565b6137ef9190614b75565b602060008282546138009190614e35565b92505081905550613964565b602360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561386757506000601354115b156139635761389460646138866013548861414690919063ffffffff16565b61415c90919063ffffffff16565b9050601354601554826138a79190614aec565b6138b19190614b75565b601e60008282546138c29190614e35565b92505081905550601354601654826138da9190614aec565b6138e49190614b75565b601f60008282546138f59190614e35565b925050819055506013546014548261390d9190614aec565b6139179190614b75565b601d60008282546139289190614e35565b92505081905550601354601754826139409190614aec565b61394a9190614b75565b6020600082825461395b9190614e35565b925050819055505b5b600081111561397957613978873083613b04565b5b80856139859190615739565b94505b613993878787613b04565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b6b90615367565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bdb906153f9565b60405180910390fd5b613bef838383614172565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c6c906157df565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d089190614e35565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d6c9190614750565b60405180910390a3613d7f848484614177565b50505050565b6000613d90306118e9565b90506000602054601f54601d54601e54613daa9190614e35565b613db49190614e35565b613dbe9190614e35565b9050600080831480613dd05750600082145b15613ddd57505050614144565b6014600c54613dec9190614aec565b831115613e05576014600c54613e029190614aec565b92505b6000600283601e5486613e189190614aec565b613e229190614b75565b613e2c9190614b75565b90506000613e43828661417c90919063ffffffff16565b90506000479050613e5382614192565b6000613e68824761417c90919063ffffffff16565b90506000613e9387613e85601d548561414690919063ffffffff16565b61415c90919063ffffffff16565b90506000613ebe88613eb0601f548661414690919063ffffffff16565b61415c90919063ffffffff16565b90506000613ee989613edb6020548761414690919063ffffffff16565b61415c90919063ffffffff16565b9050600081838587613efb9190615739565b613f059190615739565b613f0f9190615739565b90506000601e819055506000601d819055506000601f819055506000602081905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051613f7790615830565b60006040518083038185875af1925050503d8060008114613fb4576040519150601f19603f3d011682016040523d82523d6000602084013e613fb9565b606091505b505080995050600088118015613fcf5750600081115b1561401c57613fde88826143cf565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618782601e5460405161401393929190615845565b60405180910390a15b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161406290615830565b60006040518083038185875af1925050503d806000811461409f576040519150601f19603f3d011682016040523d82523d6000602084013e6140a4565b606091505b505080995050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516140f090615830565b60006040518083038185875af1925050503d806000811461412d576040519150601f19603f3d011682016040523d82523d6000602084013e614132565b606091505b50508099505050505050505050505050505b565b600081836141549190614aec565b905092915050565b6000818361416a9190614b75565b905092915050565b505050565b505050565b6000818361418a9190615739565b905092915050565b6000600267ffffffffffffffff8111156141af576141ae61587c565b5b6040519080825280602002602001820160405280156141dd5781602001602082028036833780820191505090505b50905030816000815181106141f5576141f4614dbd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561429a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142be91906158c0565b816001815181106142d2576142d1614dbd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614337307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612a45565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016143999594939291906159e6565b600060405180830381600087803b1580156143b357600080fd5b505af11580156143c7573d6000803e3d6000fd5b505050505050565b6143fa307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612a45565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161448196959493929190615a40565b60606040518083038185885af115801561449f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906144c49190615ab6565b5050505050565b600080fd5b600080fd5b6000819050919050565b6144e8816144d5565b81146144f357600080fd5b50565b600081359050614505816144df565b92915050565b600060208284031215614521576145206144cb565b5b600061452f848285016144f6565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614572578082015181840152602081019050614557565b83811115614581576000848401525b50505050565b6000601f19601f8301169050919050565b60006145a382614538565b6145ad8185614543565b93506145bd818560208601614554565b6145c681614587565b840191505092915050565b600060208201905081810360008301526145eb8184614598565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061461e826145f3565b9050919050565b61462e81614613565b811461463957600080fd5b50565b60008135905061464b81614625565b92915050565b60008060408385031215614668576146676144cb565b5b60006146768582860161463c565b9250506020614687858286016144f6565b9150509250929050565b60008115159050919050565b6146a681614691565b82525050565b60006020820190506146c1600083018461469d565b92915050565b6000819050919050565b60006146ec6146e76146e2846145f3565b6146c7565b6145f3565b9050919050565b60006146fe826146d1565b9050919050565b6000614710826146f3565b9050919050565b61472081614705565b82525050565b600060208201905061473b6000830184614717565b92915050565b61474a816144d5565b82525050565b60006020820190506147656000830184614741565b92915050565b600080600060608486031215614784576147836144cb565b5b60006147928682870161463c565b93505060206147a38682870161463c565b92505060406147b4868287016144f6565b9150509250925092565b6147c781614613565b82525050565b60006020820190506147e260008301846147be565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261480d5761480c6147e8565b5b8235905067ffffffffffffffff81111561482a576148296147ed565b5b602083019150836020820283011115614846576148456147f2565b5b9250929050565b61485681614691565b811461486157600080fd5b50565b6000813590506148738161484d565b92915050565b600080600060408486031215614892576148916144cb565b5b600084013567ffffffffffffffff8111156148b0576148af6144d0565b5b6148bc868287016147f7565b935093505060206148cf86828701614864565b9150509250925092565b600080600080608085870312156148f3576148f26144cb565b5b6000614901878288016144f6565b9450506020614912878288016144f6565b9350506040614923878288016144f6565b9250506060614934878288016144f6565b91505092959194509250565b600060ff82169050919050565b61495681614940565b82525050565b6000602082019050614971600083018461494d565b92915050565b60006020828403121561498d5761498c6144cb565b5b600061499b8482850161463c565b91505092915050565b600080604083850312156149bb576149ba6144cb565b5b60006149c98582860161463c565b92505060206149da85828601614864565b9150509250929050565b6000602082840312156149fa576149f96144cb565b5b6000614a0884828501614864565b91505092915050565b60008060408385031215614a2857614a276144cb565b5b6000614a368582860161463c565b9250506020614a478582860161463c565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614a87602083614543565b9150614a9282614a51565b602082019050919050565b60006020820190508181036000830152614ab681614a7a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614af7826144d5565b9150614b02836144d5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b3b57614b3a614abd565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614b80826144d5565b9150614b8b836144d5565b925082614b9b57614b9a614b46565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614c02602983614543565b9150614c0d82614ba6565b604082019050919050565b60006020820190508181036000830152614c3181614bf5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614c7f57607f821691505b60208210811415614c9357614c92614c38565b5b50919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614cf5602483614543565b9150614d0082614c99565b604082019050919050565b60006020820190508181036000830152614d2481614ce8565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614d87602883614543565b9150614d9282614d2b565b604082019050919050565b60006020820190508181036000830152614db681614d7a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614df7826144d5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614e2a57614e29614abd565b5b600182019050919050565b6000614e40826144d5565b9150614e4b836144d5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614e8057614e7f614abd565b5b828201905092915050565b7f546f6b656e206c61756e63686564000000000000000000000000000000000000600082015250565b6000614ec1600e83614543565b9150614ecc82614e8b565b602082019050919050565b60006020820190508181036000830152614ef081614eb4565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614f53603983614543565b9150614f5e82614ef7565b604082019050919050565b60006020820190508181036000830152614f8281614f46565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614fe5602583614543565b9150614ff082614f89565b604082019050919050565b6000602082019050818103600083015261501481614fd8565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000615077603583614543565b91506150828261501b565b604082019050919050565b600060208201905081810360008301526150a68161506a565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000615109603483614543565b9150615114826150ad565b604082019050919050565b60006020820190508181036000830152615138816150fc565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061519b602683614543565b91506151a68261513f565b604082019050919050565b600060208201905081810360008301526151ca8161518e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061522d602483614543565b9150615238826151d1565b604082019050919050565b6000602082019050818103600083015261525c81615220565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006152bf602283614543565b91506152ca82615263565b604082019050919050565b600060208201905081810360008301526152ee816152b2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615351602583614543565b915061535c826152f5565b604082019050919050565b6000602082019050818103600083015261538081615344565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006153e3602383614543565b91506153ee82615387565b604082019050919050565b60006020820190508181036000830152615412816153d6565b9050919050565b7f536e6970657220626c6f636b6564000000000000000000000000000000000000600082015250565b600061544f600e83614543565b915061545a82615419565b602082019050919050565b6000602082019050818103600083015261547e81615442565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006154bb601683614543565b91506154c682615485565b602082019050919050565b600060208201905081810360008301526154ea816154ae565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615573604983614543565b915061557e826154f1565b606082019050919050565b600060208201905081810360008301526155a281615566565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e2e0000000000000000000000000000000000602082015250565b6000615605602f83614543565b9150615610826155a9565b604082019050919050565b60006020820190508181036000830152615634816155f8565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615671601383614543565b915061567c8261563b565b602082019050919050565b600060208201905081810360008301526156a081615664565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e2e00000000000000000000000000000000602082015250565b6000615703603083614543565b915061570e826156a7565b604082019050919050565b60006020820190508181036000830152615732816156f6565b9050919050565b6000615744826144d5565b915061574f836144d5565b92508282101561576257615761614abd565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006157c9602683614543565b91506157d48261576d565b604082019050919050565b600060208201905081810360008301526157f8816157bc565b9050919050565b600081905092915050565b50565b600061581a6000836157ff565b91506158258261580a565b600082019050919050565b600061583b8261580d565b9150819050919050565b600060608201905061585a6000830186614741565b6158676020830185614741565b6158746040830184614741565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506158ba81614625565b92915050565b6000602082840312156158d6576158d56144cb565b5b60006158e4848285016158ab565b91505092915050565b6000819050919050565b600061591261590d615908846158ed565b6146c7565b6144d5565b9050919050565b615922816158f7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61595d81614613565b82525050565b600061596f8383615954565b60208301905092915050565b6000602082019050919050565b600061599382615928565b61599d8185615933565b93506159a883615944565b8060005b838110156159d95781516159c08882615963565b97506159cb8361597b565b9250506001810190506159ac565b5085935050505092915050565b600060a0820190506159fb6000830188614741565b615a086020830187615919565b8181036040830152615a1a8186615988565b9050615a2960608301856147be565b615a366080830184614741565b9695505050505050565b600060c082019050615a5560008301896147be565b615a626020830188614741565b615a6f6040830187615919565b615a7c6060830186615919565b615a8960808301856147be565b615a9660a0830184614741565b979650505050505050565b600081519050615ab0816144df565b92915050565b600080600060608486031215615acf57615ace6144cb565b5b6000615add86828701615aa1565b9350506020615aee86828701615aa1565b9250506040615aff86828701615aa1565b915050925092509256fea2646970667358221220dc504e54ee74e5a8b774932352747e878beedd65661ac873336863a8f88d07ea64736f6c634300080a0033

Deployed Bytecode Sourcemap

15070:18137:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21299:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2767:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3681:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15145:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3088:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16337:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16453;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21572:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16266:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3858:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15248:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30836:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22195:478;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2987:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15308:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4358:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15203:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15675:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16377:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24663:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16191:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16231:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24255:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15755:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3204:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;889:103;;;;;;;;;;;;;:::i;:::-;;20407:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21830:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16418:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20154:201;;;;;;;;;;;;;:::i;:::-;;666:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22087:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24447:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2875:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23369:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4581:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3339:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16152:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16703:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15715:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23179:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15450:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15566:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24058:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15921:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23877:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20794:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16083:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15489:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16049:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3522:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16637:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15602:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16001:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22681:490;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15418:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20589:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16493:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16115:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1000:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16299:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15642:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16535:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15526:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21299:265;812:12;:10;:12::i;:::-;801:23;;:7;:5;:7::i;:::-;:23;;;793:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21438:4:::1;21430;21425:1;21409:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21408:26;;;;:::i;:::-;21407:35;;;;:::i;:::-;21397:6;:45;;21375:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;21549:6;21539;:17;;;;:::i;:::-;21522:14;:34;;;;21299:265:::0;:::o;2767:100::-;2821:13;2854:5;2847:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2767:100;:::o;3681:169::-;3764:4;3781:39;3790:12;:10;:12::i;:::-;3804:7;3813:6;3781:8;:39::i;:::-;3838:4;3831:11;;3681:169;;;;:::o;15145:51::-;;;:::o;3088:108::-;3149:7;3176:12;;3169:19;;3088:108;:::o;16337:33::-;;;;:::o;16453:::-;;;;:::o;21572:250::-;812:12;:10;:12::i;:::-;801:23;;:7;:5;:7::i;:::-;:23;;;793:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21706:4:::1;21698;21693:1;21677:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21676:26;;;;:::i;:::-;21675:35;;;;:::i;:::-;21665:6;:45;;21643:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;21807:6;21797;:17;;;;:::i;:::-;21785:9;:29;;;;21572:250:::0;:::o;16266:26::-;;;;:::o;3858:492::-;3998:4;4015:36;4025:6;4033:9;4044:6;4015:9;:36::i;:::-;4064:24;4091:11;:19;4103:6;4091:19;;;;;;;;;;;;;;;:33;4111:12;:10;:12::i;:::-;4091:33;;;;;;;;;;;;;;;;4064:60;;4163:6;4143:16;:26;;4135:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4250:57;4259:6;4267:12;:10;:12::i;:::-;4300:6;4281:16;:25;4250:8;:57::i;:::-;4338:4;4331:11;;;3858:492;;;;;:::o;15248:53::-;15294:6;15248:53;:::o;30836:386::-;812:12;:10;:12::i;:::-;801:23;;:7;:5;:7::i;:::-;:23;;;793:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30935:9:::1;30931:284;30951:8;;:15;;30949:1;:17;30931:284;;;30986:15;31004:8;;31013:1;31004:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;30986:29;;31052:4;31033:24;;:7;:24;;;;:67;;;;;31089:11;;;;;;;;;;;31078:22;;:7;:22;;;;31033:67;:121;;;;;31140:13;31121:33;;:7;:33;;;;31033:121;31030:173;;;31192:11;31173:7;:16;31181:7;31173:16;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;31030:173;30971:244;30967:3;;;;;:::i;:::-;;;;30931:284;;;;30836:386:::0;;;:::o;22195:478::-;812:12;:10;:12::i;:::-;801:23;;:7;:5;:7::i;:::-;:23;;;793:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22394:8:::1;22381:10;:21;;;;22431:13;22413:15;:31;;;;22475:15;22455:17;:35;;;;22520:14;22501:16;:33;;;;22611:16;;22591:17;;22573:15;;22560:10;;:28;;;;:::i;:::-;:48;;;;:::i;:::-;:67;;;;:::i;:::-;22545:12;:82;;;;22662:2;22646:12;;:18;;22638:27;;;::::0;::::1;;22195:478:::0;;;;:::o;2987:93::-;3045:5;3070:2;3063:9;;2987:93;:::o;15308:71::-;;;;;;;;;;;;;:::o;4358:215::-;4446:4;4463:80;4472:12;:10;:12::i;:::-;4486:7;4532:10;4495:11;:25;4507:12;:10;:12::i;:::-;4495:25;;;;;;;;;;;;;;;:34;4521:7;4495:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4463:8;:80::i;:::-;4561:4;4554:11;;4358:215;;;;:::o;15203:38::-;;;:::o;15675:33::-;;;;;;;;;;;;;:::o;16377:32::-;;;;:::o;24663:126::-;24729:4;24753:19;:28;24773:7;24753:28;;;;;;;;;;;;;;;;;;;;;;;;;24746:35;;24663:126;;;:::o;16191:31::-;;;;:::o;16231:28::-;;;;:::o;24255:184::-;812:12;:10;:12::i;:::-;801:23;;:7;:5;:7::i;:::-;:23;;;793:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24375:16:::1;;;;;;;;;;;24340:52;;24364:9;24340:52;;;;;;;;;;;;24422:9;24403:16;;:28;;;;;;;;;;;;;;;;;;24255:184:::0;:::o;15755:31::-;;;;;;;;;;;;;:::o;3204:127::-;3278:7;3305:9;:18;3315:7;3305:18;;;;;;;;;;;;;;;;3298:25;;3204:127;;;:::o;889:103::-;812:12;:10;:12::i;:::-;801:23;;:7;:5;:7::i;:::-;:23;;;793:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;954:30:::1;981:1;954:18;:30::i;:::-;889:103::o:0;20407:121::-;20459:4;812:12;:10;:12::i;:::-;801:23;;:7;:5;:7::i;:::-;:23;;;793:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20493:5:::1;20476:14;;:22;;;;;;;;;;;;;;;;;;20516:4;20509:11;;20407:121:::0;:::o;21830:161::-;812:12;:10;:12::i;:::-;801:23;;:7;:5;:7::i;:::-;:23;;;793:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21979:4:::1;21943:25;:33;21969:6;21943:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;21830:161:::0;;:::o;16418:28::-;;;;:::o;20154:201::-;812:12;:10;:12::i;:::-;801:23;;:7;:5;:7::i;:::-;:23;;;793:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20218:13:::1;;;;;;;;;;;20217:14;20209:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;20277:4;20261:13;;:20;;;;;;;;;;;;;;;;;;20306:12;20292:11;:26;;;;20343:4;20329:11;;:18;;;;;;;;;;;;;;;;;;20154:201::o:0;666:87::-;712:7;739:6;;;;;;;;;;;732:13;;666:87;:::o;22087:100::-;812:12;:10;:12::i;:::-;801:23;;:7;:5;:7::i;:::-;:23;;;793:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22172:7:::1;22158:11;;:21;;;;;;;;;;;;;;;;;;22087:100:::0;:::o;24447:208::-;812:12;:10;:12::i;:::-;801:23;;:7;:5;:7::i;:::-;:23;;;793:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24584:15:::1;;;;;;;;;;;24541:59;;24564:18;24541:59;;;;;;;;;;;;24629:18;24611:15;;:36;;;;;;;;;;;;;;;;;;24447:208:::0;:::o;2875:104::-;2931:13;2964:7;2957:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2875:104;:::o;23369:304::-;812:12;:10;:12::i;:::-;801:23;;:7;:5;:7::i;:::-;:23;;;793:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23513:13:::1;23505:21;;:4;:21;;;;23483:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;23624:41;23653:4;23659:5;23624:28;:41::i;:::-;23369:304:::0;;:::o;4581:413::-;4674:4;4691:24;4718:11;:25;4730:12;:10;:12::i;:::-;4718:25;;;;;;;;;;;;;;;:34;4744:7;4718:34;;;;;;;;;;;;;;;;4691:61;;4791:15;4771:16;:35;;4763:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4884:67;4893:12;:10;:12::i;:::-;4907:7;4935:15;4916:16;:34;4884:8;:67::i;:::-;4982:4;4975:11;;;4581:413;;;;:::o;3339:175::-;3425:4;3442:42;3452:12;:10;:12::i;:::-;3466:9;3477:6;3442:9;:42::i;:::-;3502:4;3495:11;;3339:175;;;;:::o;16152:32::-;;;;:::o;16703:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;15715:33::-;;;;;;;;;;;;;:::o;23179:182::-;812:12;:10;:12::i;:::-;801:23;;:7;:5;:7::i;:::-;:23;;;793:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23295:8:::1;23264:19;:28;23284:7;23264:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23335:7;23319:34;;;23344:8;23319:34;;;;;;:::i;:::-;;;;;;;;23179:182:::0;;:::o;15450:32::-;;;;;;;;;;;;;:::o;15566:29::-;;;;:::o;24058:189::-;812:12;:10;:12::i;:::-;801:23;;:7;:5;:7::i;:::-;:23;;;793:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24181:17:::1;;;;;;;;;;;24145:54;;24170:9;24145:54;;;;;;;;;;;;24230:9;24210:17;;:29;;;;;;;;;;;;;;;;;;24058:189:::0;:::o;15921:39::-;;;;;;;;;;;;;:::o;23877:173::-;812:12;:10;:12::i;:::-;801:23;;:7;:5;:7::i;:::-;:23;;;793:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23994:10:::1;;;;;;;;;;;23961:44;;23979:13;23961:44;;;;;;;;;;;;24029:13;24016:10;;:26;;;;;;;;;;;;;;;;;;23877:173:::0;:::o;20794:497::-;20902:4;812:12;:10;:12::i;:::-;801:23;;:7;:5;:7::i;:::-;:23;;;793:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20981:6:::1;20976:1;20960:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20959:28;;;;:::i;:::-;20946:9;:41;;20924:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;21136:4;21131:1;21115:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21114:26;;;;:::i;:::-;21101:9;:39;;21079:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;21252:9;21231:18;:30;;;;21279:4;21272:11;;20794:497:::0;;;:::o;16083:25::-;;;;:::o;15489:30::-;;;;;;;;;;;;;:::o;16049:27::-;;;;:::o;3522:151::-;3611:7;3638:11;:18;3650:5;3638:18;;;;;;;;;;;;;;;:27;3657:7;3638:27;;;;;;;;;;;;;;;;3631:34;;3522:151;;;;:::o;16637:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;15602:33::-;;;;:::o;16001:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;22681:490::-;812:12;:10;:12::i;:::-;801:23;;:7;:5;:7::i;:::-;:23;;;793:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22882:8:::1;22868:11;:22;;;;22920:13;22901:16;:32;;;;22965:15;22944:18;:36;;;;23011:14;22991:17;:34;;;;23106:17;;23085:18;;23066:16;;23052:11;;:30;;;;:::i;:::-;:51;;;;:::i;:::-;:71;;;;:::i;:::-;23036:13;:87;;;;23159:2;23142:13;;:19;;23134:28;;;::::0;::::1;;22681:490:::0;;;;:::o;15418:25::-;;;;;;;;;;;;;:::o;20589:135::-;20649:4;812:12;:10;:12::i;:::-;801:23;;:7;:5;:7::i;:::-;:23;;;793:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20689:5:::1;20666:20;;:28;;;;;;;;;;;;;;;;;;20712:4;20705:11;;20589:135:::0;:::o;16493:35::-;;;;:::o;16115:30::-;;;;:::o;1000:201::-;812:12;:10;:12::i;:::-;801:23;;:7;:5;:7::i;:::-;:23;;;793:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1109:1:::1;1089:22;;:8;:22;;;;1081:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1165:28;1184:8;1165:18;:28::i;:::-;1000:201:::0;:::o;16299:31::-;;;;:::o;15642:24::-;;;;:::o;16535:34::-;;;;:::o;15526:31::-;;;;;;;;;;;;;:::o;212:98::-;265:7;292:10;285:17;;212:98;:::o;6749:380::-;6902:1;6885:19;;:5;:19;;;;6877:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6983:1;6964:21;;:7;:21;;;;6956:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7067:6;7037:11;:18;7049:5;7037:18;;;;;;;;;;;;;;;:27;7056:7;7037:27;;;;;;;;;;;;;;;:36;;;;7105:7;7089:32;;7098:5;7089:32;;;7114:6;7089:32;;;;;;:::i;:::-;;;;;;;;6749:380;;;:::o;24797:4905::-;24945:1;24929:18;;:4;:18;;;;24921:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25022:1;25008:16;;:2;:16;;;;25000:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25084:7;:13;25092:4;25084:13;;;;;;;;;;;;;;;;;;;;;;;;;25083:14;25075:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;25143:1;25133:6;:11;25129:93;;;25161:28;25177:4;25183:2;25187:1;25161:15;:28::i;:::-;25204:7;;25129:93;25238:14;;;;;;;;;;;25234:2445;;;25299:7;:5;:7::i;:::-;25291:15;;:4;:15;;;;:49;;;;;25333:7;:5;:7::i;:::-;25327:13;;:2;:13;;;;25291:49;:86;;;;;25375:1;25361:16;;:2;:16;;;;25291:86;:128;;;;;25412:6;25398:21;;:2;:21;;;;25291:128;:158;;;;;25441:8;;;;;;;;;;;25440:9;25291:158;25269:2399;;;25489:13;;;;;;;;;;;25484:223;;25561:19;:25;25581:4;25561:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25590:19;:23;25610:2;25590:23;;;;;;;;;;;;;;;;;;;;;;;;;25561:52;25527:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;25484:223;25863:20;;;;;;;;;;;25859:641;;;25944:7;:5;:7::i;:::-;25938:13;;:2;:13;;;;:72;;;;;25994:15;25980:30;;:2;:30;;;;25938:72;:129;;;;;26053:13;26039:28;;:2;:28;;;;25938:129;25908:573;;;26231:12;26156:28;:39;26185:9;26156:39;;;;;;;;;;;;;;;;:87;26118:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;26445:12;26403:28;:39;26432:9;26403:39;;;;;;;;;;;;;;;:54;;;;25908:573;25859:641;26574:25;:31;26600:4;26574:31;;;;;;;;;;;;;;;;;;;;;;;;;:86;;;;;26631:25;:29;26657:2;26631:29;;;;;;;;;;;;;;;;;;;;;;;;;26630:30;26574:86;26548:1105;;;26747:14;;26737:6;:24;;26703:157;;;;;;;;;;;;:::i;:::-;;;;;;;;;26943:9;;26926:13;26936:2;26926:9;:13::i;:::-;26917:6;:22;;;;:::i;:::-;:35;;26883:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;26548:1105;;;27121:25;:29;27147:2;27121:29;;;;;;;;;;;;;;;;;;;;;;;;;:86;;;;;27176:25;:31;27202:4;27176:31;;;;;;;;;;;;;;;;;;;;;;;;;27175:32;27121:86;27095:558;;;27294:14;;27284:6;:24;;27250:158;;;;;;;;;;;;:::i;:::-;;;;;;;;;27095:558;;;27439:25;:29;27465:2;27439:29;;;;;;;;;;;;;;;;;;;;;;;;;27434:219;;27553:9;;27536:13;27546:2;27536:9;:13::i;:::-;27527:6;:22;;;;:::i;:::-;:35;;27493:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;27434:219;27095:558;26548:1105;25269:2399;25234:2445;27691:28;27722:24;27740:4;27722:9;:24::i;:::-;27691:55;;27759:12;27798:18;;27774:20;:42;;27759:57;;27847:7;:35;;;;;27871:11;;;;;;;;;;;27847:35;:61;;;;;27900:8;;;;;;;;;;;27899:9;27847:61;:110;;;;;27926:25;:31;27952:4;27926:31;;;;;;;;;;;;;;;;;;;;;;;;;27925:32;27847:110;:153;;;;;27975:19;:25;27995:4;27975:25;;;;;;;;;;;;;;;;;;;;;;;;;27974:26;27847:153;:194;;;;;28018:19;:23;28038:2;28018:23;;;;;;;;;;;;;;;;;;;;;;;;;28017:24;27847:194;27829:326;;;28079:4;28068:8;;:15;;;;;;;;;;;;;;;;;;28100:10;:8;:10::i;:::-;28138:5;28127:8;;:16;;;;;;;;;;;;;;;;;;27829:326;28167:12;28183:8;;;;;;;;;;;28182:9;28167:24;;28293:19;:25;28313:4;28293:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;28322:19;:23;28342:2;28322:23;;;;;;;;;;;;;;;;;;;;;;;;;28293:52;28289:100;;;28372:5;28362:15;;28289:100;28401:12;28506:7;28502:1147;;;28558:25;:29;28584:2;28558:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;28607:1;28591:13;;:17;28558:50;28554:946;;;28636:34;28666:3;28636:25;28647:13;;28636:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;28629:41;;28739:13;;28719:16;;28712:4;:23;;;;:::i;:::-;28711:41;;;;:::i;:::-;28689:18;;:63;;;;;;;:::i;:::-;;;;;;;;28825:13;;28803:18;;28796:4;:25;;;;:::i;:::-;28795:43;;;;:::i;:::-;28771:20;;:67;;;;;;;:::i;:::-;;;;;;;;28897:13;;28882:11;;28875:4;:18;;;;:::i;:::-;28874:36;;;;:::i;:::-;28857:13;;:53;;;;;;;:::i;:::-;;;;;;;;28981:13;;28960:17;;28953:4;:24;;;;:::i;:::-;28952:42;;;;:::i;:::-;28929:19;;:65;;;;;;;:::i;:::-;;;;;;;;28554:946;;;29056:25;:31;29082:4;29056:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;29106:1;29091:12;;:16;29056:51;29052:448;;;29135:33;29164:3;29135:24;29146:12;;29135:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;29128:40;;29236:12;;29217:15;;29210:4;:22;;;;:::i;:::-;29209:39;;;;:::i;:::-;29187:18;;:61;;;;;;;:::i;:::-;;;;;;;;29320:12;;29299:17;;29292:4;:24;;;;:::i;:::-;29291:41;;;;:::i;:::-;29267:20;;:65;;;;;;;:::i;:::-;;;;;;;;29390:12;;29376:10;;29369:4;:17;;;;:::i;:::-;29368:34;;;;:::i;:::-;29351:13;;:51;;;;;;;:::i;:::-;;;;;;;;29472:12;;29452:16;;29445:4;:23;;;;:::i;:::-;29444:40;;;;:::i;:::-;29421:19;;:63;;;;;;;:::i;:::-;;;;;;;;29052:448;28554:946;29527:1;29520:4;:8;29516:91;;;29549:42;29565:4;29579;29586;29549:15;:42::i;:::-;29516:91;29633:4;29623:14;;;;;:::i;:::-;;;28502:1147;29661:33;29677:4;29683:2;29687:6;29661:15;:33::i;:::-;24910:4792;;;;24797:4905;;;;:::o;1209:191::-;1283:16;1302:6;;;;;;;;;;;1283:25;;1328:8;1319:6;;:17;;;;;;;;;;;;;;;;;;1383:8;1352:40;;1373:8;1352:40;;;;;;;;;;;;1272:128;1209:191;:::o;23681:188::-;23798:5;23764:25;:31;23790:4;23764:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23855:5;23821:40;;23849:4;23821:40;;;;;;;;;;;;23681:188;;:::o;5002:733::-;5160:1;5142:20;;:6;:20;;;;5134:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5244:1;5223:23;;:9;:23;;;;5215:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5299:47;5320:6;5328:9;5339:6;5299:20;:47::i;:::-;5359:21;5383:9;:17;5393:6;5383:17;;;;;;;;;;;;;;;;5359:41;;5436:6;5419:13;:23;;5411:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5557:6;5541:13;:22;5521:9;:17;5531:6;5521:17;;;;;;;;;;;;;;;:42;;;;5609:6;5585:9;:20;5595:9;5585:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5650:9;5633:35;;5642:6;5633:35;;;5661:6;5633:35;;;;;;:::i;:::-;;;;;;;;5681:46;5701:6;5709:9;5720:6;5681:19;:46::i;:::-;5123:612;5002:733;;;:::o;31230:1974::-;31269:23;31295:24;31313:4;31295:9;:24::i;:::-;31269:50;;31330:25;31457:19;;31421:20;;31392:13;;31358:18;;:47;;;;:::i;:::-;:83;;;;:::i;:::-;:118;;;;:::i;:::-;31330:146;;31487:12;31535:1;31516:15;:20;:46;;;;31561:1;31540:17;:22;31516:46;31512:85;;;31579:7;;;;;31512:85;31652:2;31631:18;;:23;;;;:::i;:::-;31613:15;:41;31609:115;;;31710:2;31689:18;;:23;;;;:::i;:::-;31671:41;;31609:115;31785:23;31872:1;31852:17;31830:18;;31812:15;:36;;;;:::i;:::-;31811:58;;;;:::i;:::-;:62;;;;:::i;:::-;31785:88;;31884:26;31913:36;31933:15;31913;:19;;:36;;;;:::i;:::-;31884:65;;31962:25;31990:21;31962:49;;32024:36;32041:18;32024:16;:36::i;:::-;32073:18;32094:44;32120:17;32094:21;:25;;:44;;;;:::i;:::-;32073:65;;32151:18;32172:52;32206:17;32172:29;32187:13;;32172:10;:14;;:29;;;;:::i;:::-;:33;;:52;;;;:::i;:::-;32151:73;;32235:25;32263:59;32304:17;32263:36;32278:20;;32263:10;:14;;:36;;;;:::i;:::-;:40;;:59;;;;:::i;:::-;32235:87;;32333:24;32360:58;32400:17;32360:35;32375:19;;32360:10;:14;;:35;;;;:::i;:::-;:39;;:58;;;;:::i;:::-;32333:85;;32431:23;32503:16;32483:17;32470:10;32457;:23;;;;:::i;:::-;:43;;;;:::i;:::-;:62;;;;:::i;:::-;32431:88;;32553:1;32532:18;:22;;;;32581:1;32565:13;:17;;;;32616:1;32593:20;:24;;;;32650:1;32628:19;:23;;;;32686:17;;;;;;;;;;;32678:31;;32717:17;32678:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32664:75;;;;;32774:1;32756:15;:19;:42;;;;;32797:1;32779:15;:19;32756:42;32752:278;;;32815:46;32828:15;32845;32815:12;:46::i;:::-;32881:137;32914:18;32951:15;32985:18;;32881:137;;;;;;;;:::i;:::-;;;;;;;;32752:278;33062:16;;;;;;;;;;;33054:30;;33092:16;33054:59;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33040:73;;;;;33146:10;;;;;;;;;;;33138:24;;33170:21;33138:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33124:72;;;;;31258:1946;;;;;;;;;;;31230:1974;:::o;8755:98::-;8813:7;8844:1;8840;:5;;;;:::i;:::-;8833:12;;8755:98;;;;:::o;8861:::-;8919:7;8950:1;8946;:5;;;;:::i;:::-;8939:12;;8861:98;;;;:::o;7137:125::-;;;;:::o;7270:124::-;;;;:::o;8649:98::-;8707:7;8738:1;8734;:5;;;;:::i;:::-;8727:12;;8649:98;;;;:::o;29710:589::-;29836:21;29874:1;29860:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29836:40;;29905:4;29887;29892:1;29887:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;29931:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29921:4;29926:1;29921:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;29966:62;29983:4;29998:15;30016:11;29966:8;:62::i;:::-;30067:15;:66;;;30148:11;30174:1;30218:4;30245;30265:15;30067:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29765:534;29710:589;:::o;30307:521::-;30455:62;30472:4;30487:15;30505:11;30455:8;:62::i;:::-;30560:15;:31;;;30599:9;30632:4;30652:11;30678:1;30721;30764:15;;;;;;;;;;;30794;30560:260;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;30307:521;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:307::-;1373:1;1383:113;1397:6;1394:1;1391:13;1383:113;;;1482:1;1477:3;1473:11;1467:18;1463:1;1458:3;1454:11;1447:39;1419:2;1416:1;1412:10;1407:15;;1383:113;;;1514:6;1511:1;1508:13;1505:101;;;1594:1;1585:6;1580:3;1576:16;1569:27;1505:101;1354:258;1305:307;;;:::o;1618:102::-;1659:6;1710:2;1706:7;1701:2;1694:5;1690:14;1686:28;1676:38;;1618:102;;;:::o;1726:364::-;1814:3;1842:39;1875:5;1842:39;:::i;:::-;1897:71;1961:6;1956:3;1897:71;:::i;:::-;1890:78;;1977:52;2022:6;2017:3;2010:4;2003:5;1999:16;1977:52;:::i;:::-;2054:29;2076:6;2054:29;:::i;:::-;2049:3;2045:39;2038:46;;1818:272;1726:364;;;;:::o;2096:313::-;2209:4;2247:2;2236:9;2232:18;2224:26;;2296:9;2290:4;2286:20;2282:1;2271:9;2267:17;2260:47;2324:78;2397:4;2388:6;2324:78;:::i;:::-;2316:86;;2096:313;;;;:::o;2415:126::-;2452:7;2492:42;2485:5;2481:54;2470:65;;2415:126;;;:::o;2547:96::-;2584:7;2613:24;2631:5;2613:24;:::i;:::-;2602:35;;2547:96;;;:::o;2649:122::-;2722:24;2740:5;2722:24;:::i;:::-;2715:5;2712:35;2702:63;;2761:1;2758;2751:12;2702:63;2649:122;:::o;2777:139::-;2823:5;2861:6;2848:20;2839:29;;2877:33;2904:5;2877:33;:::i;:::-;2777:139;;;;:::o;2922:474::-;2990:6;2998;3047:2;3035:9;3026:7;3022:23;3018:32;3015:119;;;3053:79;;:::i;:::-;3015:119;3173:1;3198:53;3243:7;3234:6;3223:9;3219:22;3198:53;:::i;:::-;3188:63;;3144:117;3300:2;3326:53;3371:7;3362:6;3351:9;3347:22;3326:53;:::i;:::-;3316:63;;3271:118;2922:474;;;;;:::o;3402:90::-;3436:7;3479:5;3472:13;3465:21;3454:32;;3402:90;;;:::o;3498:109::-;3579:21;3594:5;3579:21;:::i;:::-;3574:3;3567:34;3498:109;;:::o;3613:210::-;3700:4;3738:2;3727:9;3723:18;3715:26;;3751:65;3813:1;3802:9;3798:17;3789:6;3751:65;:::i;:::-;3613:210;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:153::-;4252:9;4285:37;4316:5;4285:37;:::i;:::-;4272:50;;4175:153;;;:::o;4334:185::-;4448:64;4506:5;4448:64;:::i;:::-;4443:3;4436:77;4334:185;;:::o;4525:276::-;4645:4;4683:2;4672:9;4668:18;4660:26;;4696:98;4791:1;4780:9;4776:17;4767:6;4696:98;:::i;:::-;4525:276;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::o;5159:619::-;5236:6;5244;5252;5301:2;5289:9;5280:7;5276:23;5272:32;5269:119;;;5307:79;;:::i;:::-;5269:119;5427:1;5452:53;5497:7;5488:6;5477:9;5473:22;5452:53;:::i;:::-;5442:63;;5398:117;5554:2;5580:53;5625:7;5616:6;5605:9;5601:22;5580:53;:::i;:::-;5570:63;;5525:118;5682:2;5708:53;5753:7;5744:6;5733:9;5729:22;5708:53;:::i;:::-;5698:63;;5653:118;5159:619;;;;;:::o;5784:118::-;5871:24;5889:5;5871:24;:::i;:::-;5866:3;5859:37;5784:118;;:::o;5908:222::-;6001:4;6039:2;6028:9;6024:18;6016:26;;6052:71;6120:1;6109:9;6105:17;6096:6;6052:71;:::i;:::-;5908:222;;;;:::o;6136:117::-;6245:1;6242;6235:12;6259:117;6368:1;6365;6358:12;6382:117;6491:1;6488;6481:12;6522:568;6595:8;6605:6;6655:3;6648:4;6640:6;6636:17;6632:27;6622:122;;6663:79;;:::i;:::-;6622:122;6776:6;6763:20;6753:30;;6806:18;6798:6;6795:30;6792:117;;;6828:79;;:::i;:::-;6792:117;6942:4;6934:6;6930:17;6918:29;;6996:3;6988:4;6980:6;6976:17;6966:8;6962:32;6959:41;6956:128;;;7003:79;;:::i;:::-;6956:128;6522:568;;;;;:::o;7096:116::-;7166:21;7181:5;7166:21;:::i;:::-;7159:5;7156:32;7146:60;;7202:1;7199;7192:12;7146:60;7096:116;:::o;7218:133::-;7261:5;7299:6;7286:20;7277:29;;7315:30;7339:5;7315:30;:::i;:::-;7218:133;;;;:::o;7357:698::-;7449:6;7457;7465;7514:2;7502:9;7493:7;7489:23;7485:32;7482:119;;;7520:79;;:::i;:::-;7482:119;7668:1;7657:9;7653:17;7640:31;7698:18;7690:6;7687:30;7684:117;;;7720:79;;:::i;:::-;7684:117;7833:80;7905:7;7896:6;7885:9;7881:22;7833:80;:::i;:::-;7815:98;;;;7611:312;7962:2;7988:50;8030:7;8021:6;8010:9;8006:22;7988:50;:::i;:::-;7978:60;;7933:115;7357:698;;;;;:::o;8061:765::-;8147:6;8155;8163;8171;8220:3;8208:9;8199:7;8195:23;8191:33;8188:120;;;8227:79;;:::i;:::-;8188:120;8347:1;8372:53;8417:7;8408:6;8397:9;8393:22;8372:53;:::i;:::-;8362:63;;8318:117;8474:2;8500:53;8545:7;8536:6;8525:9;8521:22;8500:53;:::i;:::-;8490:63;;8445:118;8602:2;8628:53;8673:7;8664:6;8653:9;8649:22;8628:53;:::i;:::-;8618:63;;8573:118;8730:2;8756:53;8801:7;8792:6;8781:9;8777:22;8756:53;:::i;:::-;8746:63;;8701:118;8061:765;;;;;;;:::o;8832:86::-;8867:7;8907:4;8900:5;8896:16;8885:27;;8832:86;;;:::o;8924:112::-;9007:22;9023:5;9007:22;:::i;:::-;9002:3;8995:35;8924:112;;:::o;9042:214::-;9131:4;9169:2;9158:9;9154:18;9146:26;;9182:67;9246:1;9235:9;9231:17;9222:6;9182:67;:::i;:::-;9042:214;;;;:::o;9262:329::-;9321:6;9370:2;9358:9;9349:7;9345:23;9341:32;9338:119;;;9376:79;;:::i;:::-;9338:119;9496:1;9521:53;9566:7;9557:6;9546:9;9542:22;9521:53;:::i;:::-;9511:63;;9467:117;9262:329;;;;:::o;9597:468::-;9662:6;9670;9719:2;9707:9;9698:7;9694:23;9690:32;9687:119;;;9725:79;;:::i;:::-;9687:119;9845:1;9870:53;9915:7;9906:6;9895:9;9891:22;9870:53;:::i;:::-;9860:63;;9816:117;9972:2;9998:50;10040:7;10031:6;10020:9;10016:22;9998:50;:::i;:::-;9988:60;;9943:115;9597:468;;;;;:::o;10071:323::-;10127:6;10176:2;10164:9;10155:7;10151:23;10147:32;10144:119;;;10182:79;;:::i;:::-;10144:119;10302:1;10327:50;10369:7;10360:6;10349:9;10345:22;10327:50;:::i;:::-;10317:60;;10273:114;10071:323;;;;:::o;10400:474::-;10468:6;10476;10525:2;10513:9;10504:7;10500:23;10496:32;10493:119;;;10531:79;;:::i;:::-;10493:119;10651:1;10676:53;10721:7;10712:6;10701:9;10697:22;10676:53;:::i;:::-;10666:63;;10622:117;10778:2;10804:53;10849:7;10840:6;10829:9;10825:22;10804:53;:::i;:::-;10794:63;;10749:118;10400:474;;;;;:::o;10880:182::-;11020:34;11016:1;11008:6;11004:14;10997:58;10880:182;:::o;11068:366::-;11210:3;11231:67;11295:2;11290:3;11231:67;:::i;:::-;11224:74;;11307:93;11396:3;11307:93;:::i;:::-;11425:2;11420:3;11416:12;11409:19;;11068:366;;;:::o;11440:419::-;11606:4;11644:2;11633:9;11629:18;11621:26;;11693:9;11687:4;11683:20;11679:1;11668:9;11664:17;11657:47;11721:131;11847:4;11721:131;:::i;:::-;11713:139;;11440:419;;;:::o;11865:180::-;11913:77;11910:1;11903:88;12010:4;12007:1;12000:15;12034:4;12031:1;12024:15;12051:348;12091:7;12114:20;12132:1;12114:20;:::i;:::-;12109:25;;12148:20;12166:1;12148:20;:::i;:::-;12143:25;;12336:1;12268:66;12264:74;12261:1;12258:81;12253:1;12246:9;12239:17;12235:105;12232:131;;;12343:18;;:::i;:::-;12232:131;12391:1;12388;12384:9;12373:20;;12051:348;;;;:::o;12405:180::-;12453:77;12450:1;12443:88;12550:4;12547:1;12540:15;12574:4;12571:1;12564:15;12591:185;12631:1;12648:20;12666:1;12648:20;:::i;:::-;12643:25;;12682:20;12700:1;12682:20;:::i;:::-;12677:25;;12721:1;12711:35;;12726:18;;:::i;:::-;12711:35;12768:1;12765;12761:9;12756:14;;12591:185;;;;:::o;12782:228::-;12922:34;12918:1;12910:6;12906:14;12899:58;12991:11;12986:2;12978:6;12974:15;12967:36;12782:228;:::o;13016:366::-;13158:3;13179:67;13243:2;13238:3;13179:67;:::i;:::-;13172:74;;13255:93;13344:3;13255:93;:::i;:::-;13373:2;13368:3;13364:12;13357:19;;13016:366;;;:::o;13388:419::-;13554:4;13592:2;13581:9;13577:18;13569:26;;13641:9;13635:4;13631:20;13627:1;13616:9;13612:17;13605:47;13669:131;13795:4;13669:131;:::i;:::-;13661:139;;13388:419;;;:::o;13813:180::-;13861:77;13858:1;13851:88;13958:4;13955:1;13948:15;13982:4;13979:1;13972:15;13999:320;14043:6;14080:1;14074:4;14070:12;14060:22;;14127:1;14121:4;14117:12;14148:18;14138:81;;14204:4;14196:6;14192:17;14182:27;;14138:81;14266:2;14258:6;14255:14;14235:18;14232:38;14229:84;;;14285:18;;:::i;:::-;14229:84;14050:269;13999:320;;;:::o;14325:223::-;14465:34;14461:1;14453:6;14449:14;14442:58;14534:6;14529:2;14521:6;14517:15;14510:31;14325:223;:::o;14554:366::-;14696:3;14717:67;14781:2;14776:3;14717:67;:::i;:::-;14710:74;;14793:93;14882:3;14793:93;:::i;:::-;14911:2;14906:3;14902:12;14895:19;;14554:366;;;:::o;14926:419::-;15092:4;15130:2;15119:9;15115:18;15107:26;;15179:9;15173:4;15169:20;15165:1;15154:9;15150:17;15143:47;15207:131;15333:4;15207:131;:::i;:::-;15199:139;;14926:419;;;:::o;15351:227::-;15491:34;15487:1;15479:6;15475:14;15468:58;15560:10;15555:2;15547:6;15543:15;15536:35;15351:227;:::o;15584:366::-;15726:3;15747:67;15811:2;15806:3;15747:67;:::i;:::-;15740:74;;15823:93;15912:3;15823:93;:::i;:::-;15941:2;15936:3;15932:12;15925:19;;15584:366;;;:::o;15956:419::-;16122:4;16160:2;16149:9;16145:18;16137:26;;16209:9;16203:4;16199:20;16195:1;16184:9;16180:17;16173:47;16237:131;16363:4;16237:131;:::i;:::-;16229:139;;15956:419;;;:::o;16381:180::-;16429:77;16426:1;16419:88;16526:4;16523:1;16516:15;16550:4;16547:1;16540:15;16567:233;16606:3;16629:24;16647:5;16629:24;:::i;:::-;16620:33;;16675:66;16668:5;16665:77;16662:103;;;16745:18;;:::i;:::-;16662:103;16792:1;16785:5;16781:13;16774:20;;16567:233;;;:::o;16806:305::-;16846:3;16865:20;16883:1;16865:20;:::i;:::-;16860:25;;16899:20;16917:1;16899:20;:::i;:::-;16894:25;;17053:1;16985:66;16981:74;16978:1;16975:81;16972:107;;;17059:18;;:::i;:::-;16972:107;17103:1;17100;17096:9;17089:16;;16806:305;;;;:::o;17117:164::-;17257:16;17253:1;17245:6;17241:14;17234:40;17117:164;:::o;17287:366::-;17429:3;17450:67;17514:2;17509:3;17450:67;:::i;:::-;17443:74;;17526:93;17615:3;17526:93;:::i;:::-;17644:2;17639:3;17635:12;17628:19;;17287:366;;;:::o;17659:419::-;17825:4;17863:2;17852:9;17848:18;17840:26;;17912:9;17906:4;17902:20;17898:1;17887:9;17883:17;17876:47;17940:131;18066:4;17940:131;:::i;:::-;17932:139;;17659:419;;;:::o;18084:244::-;18224:34;18220:1;18212:6;18208:14;18201:58;18293:27;18288:2;18280:6;18276:15;18269:52;18084:244;:::o;18334:366::-;18476:3;18497:67;18561:2;18556:3;18497:67;:::i;:::-;18490:74;;18573:93;18662:3;18573:93;:::i;:::-;18691:2;18686:3;18682:12;18675:19;;18334:366;;;:::o;18706:419::-;18872:4;18910:2;18899:9;18895:18;18887:26;;18959:9;18953:4;18949:20;18945:1;18934:9;18930:17;18923:47;18987:131;19113:4;18987:131;:::i;:::-;18979:139;;18706:419;;;:::o;19131:224::-;19271:34;19267:1;19259:6;19255:14;19248:58;19340:7;19335:2;19327:6;19323:15;19316:32;19131:224;:::o;19361:366::-;19503:3;19524:67;19588:2;19583:3;19524:67;:::i;:::-;19517:74;;19600:93;19689:3;19600:93;:::i;:::-;19718:2;19713:3;19709:12;19702:19;;19361:366;;;:::o;19733:419::-;19899:4;19937:2;19926:9;19922:18;19914:26;;19986:9;19980:4;19976:20;19972:1;19961:9;19957:17;19950:47;20014:131;20140:4;20014:131;:::i;:::-;20006:139;;19733:419;;;:::o;20158:240::-;20298:34;20294:1;20286:6;20282:14;20275:58;20367:23;20362:2;20354:6;20350:15;20343:48;20158:240;:::o;20404:366::-;20546:3;20567:67;20631:2;20626:3;20567:67;:::i;:::-;20560:74;;20643:93;20732:3;20643:93;:::i;:::-;20761:2;20756:3;20752:12;20745:19;;20404:366;;;:::o;20776:419::-;20942:4;20980:2;20969:9;20965:18;20957:26;;21029:9;21023:4;21019:20;21015:1;21004:9;21000:17;20993:47;21057:131;21183:4;21057:131;:::i;:::-;21049:139;;20776:419;;;:::o;21201:239::-;21341:34;21337:1;21329:6;21325:14;21318:58;21410:22;21405:2;21397:6;21393:15;21386:47;21201:239;:::o;21446:366::-;21588:3;21609:67;21673:2;21668:3;21609:67;:::i;:::-;21602:74;;21685:93;21774:3;21685:93;:::i;:::-;21803:2;21798:3;21794:12;21787:19;;21446:366;;;:::o;21818:419::-;21984:4;22022:2;22011:9;22007:18;21999:26;;22071:9;22065:4;22061:20;22057:1;22046:9;22042:17;22035:47;22099:131;22225:4;22099:131;:::i;:::-;22091:139;;21818:419;;;:::o;22243:225::-;22383:34;22379:1;22371:6;22367:14;22360:58;22452:8;22447:2;22439:6;22435:15;22428:33;22243:225;:::o;22474:366::-;22616:3;22637:67;22701:2;22696:3;22637:67;:::i;:::-;22630:74;;22713:93;22802:3;22713:93;:::i;:::-;22831:2;22826:3;22822:12;22815:19;;22474:366;;;:::o;22846:419::-;23012:4;23050:2;23039:9;23035:18;23027:26;;23099:9;23093:4;23089:20;23085:1;23074:9;23070:17;23063:47;23127:131;23253:4;23127:131;:::i;:::-;23119:139;;22846:419;;;:::o;23271:223::-;23411:34;23407:1;23399:6;23395:14;23388:58;23480:6;23475:2;23467:6;23463:15;23456:31;23271:223;:::o;23500:366::-;23642:3;23663:67;23727:2;23722:3;23663:67;:::i;:::-;23656:74;;23739:93;23828:3;23739:93;:::i;:::-;23857:2;23852:3;23848:12;23841:19;;23500:366;;;:::o;23872:419::-;24038:4;24076:2;24065:9;24061:18;24053:26;;24125:9;24119:4;24115:20;24111:1;24100:9;24096:17;24089:47;24153:131;24279:4;24153:131;:::i;:::-;24145:139;;23872:419;;;:::o;24297:221::-;24437:34;24433:1;24425:6;24421:14;24414:58;24506:4;24501:2;24493:6;24489:15;24482:29;24297:221;:::o;24524:366::-;24666:3;24687:67;24751:2;24746:3;24687:67;:::i;:::-;24680:74;;24763:93;24852:3;24763:93;:::i;:::-;24881:2;24876:3;24872:12;24865:19;;24524:366;;;:::o;24896:419::-;25062:4;25100:2;25089:9;25085:18;25077:26;;25149:9;25143:4;25139:20;25135:1;25124:9;25120:17;25113:47;25177:131;25303:4;25177:131;:::i;:::-;25169:139;;24896:419;;;:::o;25321:224::-;25461:34;25457:1;25449:6;25445:14;25438:58;25530:7;25525:2;25517:6;25513:15;25506:32;25321:224;:::o;25551:366::-;25693:3;25714:67;25778:2;25773:3;25714:67;:::i;:::-;25707:74;;25790:93;25879:3;25790:93;:::i;:::-;25908:2;25903:3;25899:12;25892:19;;25551:366;;;:::o;25923:419::-;26089:4;26127:2;26116:9;26112:18;26104:26;;26176:9;26170:4;26166:20;26162:1;26151:9;26147:17;26140:47;26204:131;26330:4;26204:131;:::i;:::-;26196:139;;25923:419;;;:::o;26348:222::-;26488:34;26484:1;26476:6;26472:14;26465:58;26557:5;26552:2;26544:6;26540:15;26533:30;26348:222;:::o;26576:366::-;26718:3;26739:67;26803:2;26798:3;26739:67;:::i;:::-;26732:74;;26815:93;26904:3;26815:93;:::i;:::-;26933:2;26928:3;26924:12;26917:19;;26576:366;;;:::o;26948:419::-;27114:4;27152:2;27141:9;27137:18;27129:26;;27201:9;27195:4;27191:20;27187:1;27176:9;27172:17;27165:47;27229:131;27355:4;27229:131;:::i;:::-;27221:139;;26948:419;;;:::o;27373:164::-;27513:16;27509:1;27501:6;27497:14;27490:40;27373:164;:::o;27543:366::-;27685:3;27706:67;27770:2;27765:3;27706:67;:::i;:::-;27699:74;;27782:93;27871:3;27782:93;:::i;:::-;27900:2;27895:3;27891:12;27884:19;;27543:366;;;:::o;27915:419::-;28081:4;28119:2;28108:9;28104:18;28096:26;;28168:9;28162:4;28158:20;28154:1;28143:9;28139:17;28132:47;28196:131;28322:4;28196:131;:::i;:::-;28188:139;;27915:419;;;:::o;28340:172::-;28480:24;28476:1;28468:6;28464:14;28457:48;28340:172;:::o;28518:366::-;28660:3;28681:67;28745:2;28740:3;28681:67;:::i;:::-;28674:74;;28757:93;28846:3;28757:93;:::i;:::-;28875:2;28870:3;28866:12;28859:19;;28518:366;;;:::o;28890:419::-;29056:4;29094:2;29083:9;29079:18;29071:26;;29143:9;29137:4;29133:20;29129:1;29118:9;29114:17;29107:47;29171:131;29297:4;29171:131;:::i;:::-;29163:139;;28890:419;;;:::o;29315:297::-;29455:34;29451:1;29443:6;29439:14;29432:58;29524:34;29519:2;29511:6;29507:15;29500:59;29593:11;29588:2;29580:6;29576:15;29569:36;29315:297;:::o;29618:366::-;29760:3;29781:67;29845:2;29840:3;29781:67;:::i;:::-;29774:74;;29857:93;29946:3;29857:93;:::i;:::-;29975:2;29970:3;29966:12;29959:19;;29618:366;;;:::o;29990:419::-;30156:4;30194:2;30183:9;30179:18;30171:26;;30243:9;30237:4;30233:20;30229:1;30218:9;30214:17;30207:47;30271:131;30397:4;30271:131;:::i;:::-;30263:139;;29990:419;;;:::o;30415:234::-;30555:34;30551:1;30543:6;30539:14;30532:58;30624:17;30619:2;30611:6;30607:15;30600:42;30415:234;:::o;30655:366::-;30797:3;30818:67;30882:2;30877:3;30818:67;:::i;:::-;30811:74;;30894:93;30983:3;30894:93;:::i;:::-;31012:2;31007:3;31003:12;30996:19;;30655:366;;;:::o;31027:419::-;31193:4;31231:2;31220:9;31216:18;31208:26;;31280:9;31274:4;31270:20;31266:1;31255:9;31251:17;31244:47;31308:131;31434:4;31308:131;:::i;:::-;31300:139;;31027:419;;;:::o;31452:169::-;31592:21;31588:1;31580:6;31576:14;31569:45;31452:169;:::o;31627:366::-;31769:3;31790:67;31854:2;31849:3;31790:67;:::i;:::-;31783:74;;31866:93;31955:3;31866:93;:::i;:::-;31984:2;31979:3;31975:12;31968:19;;31627:366;;;:::o;31999:419::-;32165:4;32203:2;32192:9;32188:18;32180:26;;32252:9;32246:4;32242:20;32238:1;32227:9;32223:17;32216:47;32280:131;32406:4;32280:131;:::i;:::-;32272:139;;31999:419;;;:::o;32424:235::-;32564:34;32560:1;32552:6;32548:14;32541:58;32633:18;32628:2;32620:6;32616:15;32609:43;32424:235;:::o;32665:366::-;32807:3;32828:67;32892:2;32887:3;32828:67;:::i;:::-;32821:74;;32904:93;32993:3;32904:93;:::i;:::-;33022:2;33017:3;33013:12;33006:19;;32665:366;;;:::o;33037:419::-;33203:4;33241:2;33230:9;33226:18;33218:26;;33290:9;33284:4;33280:20;33276:1;33265:9;33261:17;33254:47;33318:131;33444:4;33318:131;:::i;:::-;33310:139;;33037:419;;;:::o;33462:191::-;33502:4;33522:20;33540:1;33522:20;:::i;:::-;33517:25;;33556:20;33574:1;33556:20;:::i;:::-;33551:25;;33595:1;33592;33589:8;33586:34;;;33600:18;;:::i;:::-;33586:34;33645:1;33642;33638:9;33630:17;;33462:191;;;;:::o;33659:225::-;33799:34;33795:1;33787:6;33783:14;33776:58;33868:8;33863:2;33855:6;33851:15;33844:33;33659:225;:::o;33890:366::-;34032:3;34053:67;34117:2;34112:3;34053:67;:::i;:::-;34046:74;;34129:93;34218:3;34129:93;:::i;:::-;34247:2;34242:3;34238:12;34231:19;;33890:366;;;:::o;34262:419::-;34428:4;34466:2;34455:9;34451:18;34443:26;;34515:9;34509:4;34505:20;34501:1;34490:9;34486:17;34479:47;34543:131;34669:4;34543:131;:::i;:::-;34535:139;;34262:419;;;:::o;34687:147::-;34788:11;34825:3;34810:18;;34687:147;;;;:::o;34840:114::-;;:::o;34960:398::-;35119:3;35140:83;35221:1;35216:3;35140:83;:::i;:::-;35133:90;;35232:93;35321:3;35232:93;:::i;:::-;35350:1;35345:3;35341:11;35334:18;;34960:398;;;:::o;35364:379::-;35548:3;35570:147;35713:3;35570:147;:::i;:::-;35563:154;;35734:3;35727:10;;35364:379;;;:::o;35749:442::-;35898:4;35936:2;35925:9;35921:18;35913:26;;35949:71;36017:1;36006:9;36002:17;35993:6;35949:71;:::i;:::-;36030:72;36098:2;36087:9;36083:18;36074:6;36030:72;:::i;:::-;36112;36180:2;36169:9;36165:18;36156:6;36112:72;:::i;:::-;35749:442;;;;;;:::o;36197:180::-;36245:77;36242:1;36235:88;36342:4;36339:1;36332:15;36366:4;36363:1;36356:15;36383:143;36440:5;36471:6;36465:13;36456:22;;36487:33;36514:5;36487:33;:::i;:::-;36383:143;;;;:::o;36532:351::-;36602:6;36651:2;36639:9;36630:7;36626:23;36622:32;36619:119;;;36657:79;;:::i;:::-;36619:119;36777:1;36802:64;36858:7;36849:6;36838:9;36834:22;36802:64;:::i;:::-;36792:74;;36748:128;36532:351;;;;:::o;36889:85::-;36934:7;36963:5;36952:16;;36889:85;;;:::o;36980:158::-;37038:9;37071:61;37089:42;37098:32;37124:5;37098:32;:::i;:::-;37089:42;:::i;:::-;37071:61;:::i;:::-;37058:74;;36980:158;;;:::o;37144:147::-;37239:45;37278:5;37239:45;:::i;:::-;37234:3;37227:58;37144:147;;:::o;37297:114::-;37364:6;37398:5;37392:12;37382:22;;37297:114;;;:::o;37417:184::-;37516:11;37550:6;37545:3;37538:19;37590:4;37585:3;37581:14;37566:29;;37417:184;;;;:::o;37607:132::-;37674:4;37697:3;37689:11;;37727:4;37722:3;37718:14;37710:22;;37607:132;;;:::o;37745:108::-;37822:24;37840:5;37822:24;:::i;:::-;37817:3;37810:37;37745:108;;:::o;37859:179::-;37928:10;37949:46;37991:3;37983:6;37949:46;:::i;:::-;38027:4;38022:3;38018:14;38004:28;;37859:179;;;;:::o;38044:113::-;38114:4;38146;38141:3;38137:14;38129:22;;38044:113;;;:::o;38193:732::-;38312:3;38341:54;38389:5;38341:54;:::i;:::-;38411:86;38490:6;38485:3;38411:86;:::i;:::-;38404:93;;38521:56;38571:5;38521:56;:::i;:::-;38600:7;38631:1;38616:284;38641:6;38638:1;38635:13;38616:284;;;38717:6;38711:13;38744:63;38803:3;38788:13;38744:63;:::i;:::-;38737:70;;38830:60;38883:6;38830:60;:::i;:::-;38820:70;;38676:224;38663:1;38660;38656:9;38651:14;;38616:284;;;38620:14;38916:3;38909:10;;38317:608;;;38193:732;;;;:::o;38931:831::-;39194:4;39232:3;39221:9;39217:19;39209:27;;39246:71;39314:1;39303:9;39299:17;39290:6;39246:71;:::i;:::-;39327:80;39403:2;39392:9;39388:18;39379:6;39327:80;:::i;:::-;39454:9;39448:4;39444:20;39439:2;39428:9;39424:18;39417:48;39482:108;39585:4;39576:6;39482:108;:::i;:::-;39474:116;;39600:72;39668:2;39657:9;39653:18;39644:6;39600:72;:::i;:::-;39682:73;39750:3;39739:9;39735:19;39726:6;39682:73;:::i;:::-;38931:831;;;;;;;;:::o;39768:807::-;40017:4;40055:3;40044:9;40040:19;40032:27;;40069:71;40137:1;40126:9;40122:17;40113:6;40069:71;:::i;:::-;40150:72;40218:2;40207:9;40203:18;40194:6;40150:72;:::i;:::-;40232:80;40308:2;40297:9;40293:18;40284:6;40232:80;:::i;:::-;40322;40398:2;40387:9;40383:18;40374:6;40322:80;:::i;:::-;40412:73;40480:3;40469:9;40465:19;40456:6;40412:73;:::i;:::-;40495;40563:3;40552:9;40548:19;40539:6;40495:73;:::i;:::-;39768:807;;;;;;;;;:::o;40581:143::-;40638:5;40669:6;40663:13;40654:22;;40685:33;40712:5;40685:33;:::i;:::-;40581:143;;;;:::o;40730:663::-;40818:6;40826;40834;40883:2;40871:9;40862:7;40858:23;40854:32;40851:119;;;40889:79;;:::i;:::-;40851:119;41009:1;41034:64;41090:7;41081:6;41070:9;41066:22;41034:64;:::i;:::-;41024:74;;40980:128;41147:2;41173:64;41229:7;41220:6;41209:9;41205:22;41173:64;:::i;:::-;41163:74;;41118:129;41286:2;41312:64;41368:7;41359:6;41348:9;41344:22;41312:64;:::i;:::-;41302:74;;41257:129;40730:663;;;;;:::o

Swarm Source

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