ETH Price: $3,917.69 (-0.41%)

Token

ERC-20: Big Dummy (BIGDUM)
 

Overview

Max Total Supply

1,000,000,000 BIGDUM

Holders

99

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5,629,216.644763937748908659 BIGDUM

Value
$0.00
0x344f28c24a31b9b637c15e92ee10e78081788dcb
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:
BIGDUMMY

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠄⢀⣠⣴⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣦⣄⣀⠀⠀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⣠⠄⣡⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣄⠱⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⡜⢡⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡌⠣⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⡘⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠟⣿⠛⠛⡿⠛⡿⠛⢿⠿⡿⢿⣿⣿⣶⡈⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⡛⢻⣀⣨⣧⣤⣼⣤⣴⡇⠰⢇⣀⣟⣀⣇⣸⣀⡏⢻⣿⡀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⣿⡿⣏⠹⣆⡿⠾⠟⠚⠉⠉⠀⠀⠈⠉⠐⠐⠒⠒⠛⠋⠉⠛⢷⣼⣸⣇⠀⠀⠀⡀⡀⠀⠀
//⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣟⠳⣤⣸⡷⠋⠀⡤⠔⠒⠚⠛⠛⠓⠀⠀⠀⠀⠀⠔⠒⠒⠲⢄⡀⠙⣿⣿⠀⠀⠀⢇⠁⠀⠀
//⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⡳⣬⣷⠟⠁⠀⠀⠀⠀⠄⠒⠒⠀⠀⠈⠷⠀⠀⠀⠀⢸⠀⠀⠤⣄⣀⠀⢿⡇⠀⠀⣰⢾⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⣿⣿⠷⣌⠛⡿⠃⣀⠀⠀⠀⣶⠄⣴⡲⣶⣶⣶⣄⠀⠀⠀⠀⠀⠀⣠⣤⣀⣀⡈⠁⣾⠄⠀⠀⡾⡜⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⢻⡻⣦⡉⡿⠃⠀⢸⣷⠆⠀⠀⠀⣘⣻⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⣟⣾⣿⣿⠘⠯⣿⡀⠀⠀⣻⣧⠀⠀⠀
//⠀⠀⠀⠀⠀⠰⠈⢷⡈⢻⡇⠀⠀⢸⣿⣿⠆⠀⠀⠈⠉⠙⠟⠛⠁⠀⠀⠀⠀⠸⡇⠈⠹⠟⠓⠂⠀⢼⡇⠀⠀⢇⣆⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠱⠈⠻⣾⡇⠀⠀⢸⣿⣗⡿⣶⡄⠀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠠⠄⣜⣐⣿⡧⠀⣠⡿⠈⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣇⠀⠀⠈⢿⣟⣿⣿⣿⣧⠌⠀⠀⠀⢾⠛⠀⠀⠀⠀⠀⣰⠃⠀⡔⢮⣟⣿⠡⣺⣁⠅⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⢸⣟⣾⣿⣿⣿⣇⡆⣠⠟⣈⣟⣧⠍⣁⡜⡓⠃⡆⢠⣾⣿⡿⠁⢐⣷⠋⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⠀⠀⢘⣾⡾⣿⣾⣽⣿⣛⠴⠋⢜⣟⣋⡑⠙⠋⠛⠿⡶⣵⢸⣿⡿⠁⠀⠈⢸⣆⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⢀⣀⣀⣤⣴⡏⠀⠀⠐⢺⡧⢭⢽⣿⣾⣿⣷⣄⡬⡀⠉⡹⠿⠿⠿⠿⠯⣿⢿⣿⠃⠀⠀⡠⣳⡟⠀⠀⠀⠀⠀
//⢀⠊⣠⣴⣾⣿⣿⣿⣿⣿⠁⠀⠀⠀⢨⣠⢟⢮⣿⣫⢿⣿⣿⣿⣿⣿⣿⣶⣾⣶⣶⣴⣿⡿⠿⣢⡄⠛⠊⠁⠀⠀⠀⠀⠀⠀
//⠀⢴⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀⠀⢀⣨⠝⡃⡟⠾⡪⣑⢻⢿⣿⣿⣿⣻⣿⣿⣿⣿⣿⣿⣷⣄⠈⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⢸⣿⣿⣿⣿⣿⣿⣯⣤⣤⣄⣰⠋⠀⠀⠀⠈⠁⠛⠾⡛⠧⡖⣿⣛⣻⠜⣿⣿⣿⣿⣿⣿⣿⣷⣤⡈⠂⠀⠀⠀⠀⠀⠀⠀
//⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣄⠀⠀⠀⠀⠀⠀⠃⠋⠆⠓⠉⠃⠊⣡⣭⣿⣿⣿⣿⣿⣿⣿⣿⣤⣤⣤⣄⣀⠀⠀⠀
//⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡗⢶⣾⡷⠦⣤⡤⣶⣶⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣦
//⠀⠘⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠒⠛⠛⠛⠛⠛⠓⠚⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛
// Made by Lowgun Paul, so that we can grow as a big dumb community with more heart then brains. <3

pragma solidity 0.8.12;

interface IERC20 {
  function totalSupply() external view returns (uint256);
  function decimals() external view returns (uint8);
  function symbol() external view returns (string memory);
  function name() external view returns (string memory);
  function getOwner() external view returns (address);
  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 IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}


contract BIGDUMMY is IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
    mapping (address => bool) private _liquidityHolders;
   
    uint256 constant private startingSupply = 1_000_000_000;

    string constant private _name = "Big Dummy";
    string constant private _symbol = "BIGDUM";
    uint8 constant private _decimals = 18;

    uint256 constant private _tTotal = startingSupply * 10**_decimals;

    struct Fees {
        uint16 buyFee;
        uint16 sellFee;
        uint16 transferFee;
    }

    struct Ratios {
        
        uint16 tokens;
        uint16 swap;
        uint16 burn;
        uint16 total;
    }

    Fees public _taxRates = Fees({
        buyFee: 0,
        sellFee: 300,
        transferFee: 0
        });

    Ratios public _ratios = Ratios({
        tokens: 0,
        swap: 7,
        burn: 3,
        total: 10
        });

    uint256 constant public maxBuyTaxes = 1000;
    uint256 constant public maxSellTaxes = 1000;
    uint256 constant public maxTransferTaxes = 1000;
    uint256 constant masterTaxDivisor = 10000;

    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    struct TaxWallets {
        address tokens;
        address payable swap;
    }

    TaxWallets public _taxWallets = TaxWallets({
        tokens: 0x94e1878d534269a37fA380b34B517A6774A47A00,
        swap: payable(0x94e1878d534269a37fA380b34B517A6774A47A00)
        });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public contractSwapTimer = 0 seconds;
    uint256 private lastSwap;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    
    uint256 public _amountTokensLastSold;
    uint256 public _percentLastSoldToBuyBackTimesTen = 10;
    uint256 private _buyBackAmount;
    

    uint256 private _maxTxAmount = _tTotal;
    uint256 private _maxWalletSize = _tTotal;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    bool public buyBackEnabled = true;
    

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);
    event SwapETHForTokens(uint256 amountIn, address[] path);
      
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyOwner() {
        require(_owner == msg.sender, "Caller =/= owner.");
        _;
    }
    
    constructor () payable {
        _tOwned[msg.sender] = _tTotal;
        emit Transfer(address(0), msg.sender, _tTotal);

        // Set the owner.
        _owner = msg.sender;

        if (block.chainid == 56) {
            dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            dexRouter = IRouter02(0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3);
        } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3) {
            dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        } else if (block.chainid == 43114) {
            dexRouter = IRouter02(0x60aE616a2155Ee3d9A68541Ba4544862310933d4);
        } else if (block.chainid == 250) {
            dexRouter = IRouter02(0xF491e7B69E4244ad4002BC14e878a34207E38c29);
        } else {
            revert();
        }

        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;

        _approve(_owner, address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);

        _isExcludedFromFees[_owner] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[_owner] = true;
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.
    function transferOwner(address newOwner) external onlyOwner {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

    function renounceOwnership() public virtual onlyOwner {
        setExcludedFromFees(_owner, false);
        _owner = address(0);
        emit OwnershipTransferred(_owner, address(0));
    }
//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    function totalSupply() external pure override returns (uint256) { if (_tTotal == 0) { revert(); } return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return _owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

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



    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }

    function setNewRouter(address newRouter) public onlyOwner {
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.!");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
        }
    }

    
    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }
    
    function setRatios(uint16 tokens, uint16 swap, uint16 burn) external onlyOwner {
        
        _ratios.tokens = tokens;
        _ratios.swap = swap;
        _ratios.burn = burn;
        _ratios.total =  swap + burn;
    }

    
    function setExcludedFromLimits(address account, bool enabled) external onlyOwner {
        _isExcludedFromLimits[account] = enabled;
    }

    function isExcludedFromLimits(address account) public view returns (bool) {
        return _isExcludedFromLimits[account];
    }

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

    function setExcludedFromFees(address account, bool enabled) public onlyOwner {
        _isExcludedFromFees[account] = enabled;
    }

    function getMaxTX() public view returns (uint256) {
        return _maxTxAmount / (10**_decimals);
    }

    function getMaxWallet() public view returns (uint256) {
        return _maxWalletSize / (10**_decimals);
    }


    function getAmountTokensLastSold() public view returns (uint256) {
        return _amountTokensLastSold;
    }

    function percentLastSoldToBuyBackTimesTen() public view returns (uint256) {
        return _percentLastSoldToBuyBackTimesTen;
    }

    
    function setBuyBackEnabled(bool _enabled) public onlyOwner {
        buyBackEnabled = _enabled;
        
    }

    function setPercentLastSoldToBuyBackTimesTen(uint256 percentLastSoldToBuyBackTimesTenNew) public onlyOwner {
        _percentLastSoldToBuyBackTimesTen = percentLastSoldToBuyBackTimesTenNew;
    }

     function _getSellBnBAmount(uint256 tokenAmount) private view returns(uint256) {
        address[] memory path = new address[](2);

        path[0] = address(this);
        path[1] = dexRouter.WETH();

        uint[] memory amounts = dexRouter.getAmountsOut(tokenAmount, path);

        return amounts[1];
        
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor, uint256 time) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
        contractSwapTimer = time;
    }

    function setWallets(address tokens, address payable swap) external onlyOwner {
        _taxWallets.tokens = tokens;
        _taxWallets.swap = payable(swap);
    }

    function setContractSwapEnabled(bool enabled) external onlyOwner {
        contractSwapEnabled = enabled;
        emit ContractSwapEnabledUpdated(enabled);
    }

    function _hasLimits(address from, address to) internal view returns (bool) {
        return from != _owner
            && to != _owner
            && tx.origin != _owner
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool buy = false;
        bool sell = false;
        bool other = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            other = true;
        }
        if(_hasLimits(from, to)) {
            if(!tradingEnabled) {
                revert("Trading not yet enabled!");
            }
            if(buy || sell){
                if (!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]) {
                    require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
                }
            }
            if(to != address(dexRouter) && !sell) {
                if (!_isExcludedFromLimits[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
                }
            }
        }

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

        if (sell) 
        {
            if (!inSwap
                && contractSwapEnabled
            ) {
                if (lastSwap + contractSwapTimer < block.timestamp) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                        contractSwap();
                        lastSwap = block.timestamp;
                    }
                }

            }
            
            uint256 balance = address(this).balance;
            if (buyBackEnabled && contractSwapEnabled) {
                        _amountTokensLastSold += _getSellBnBAmount(amount);
                        uint256 buyBackAmount = _amountTokensLastSold / (1000) * (_percentLastSoldToBuyBackTimesTen);
                        if(buyBackAmount < balance){
                            buyBackTokens(buyBackAmount);
			                _amountTokensLastSold;
                        }else{
			                _amountTokensLastSold = 0;
                        }
                    }
                

            
               
            
            
        }
        return _finalizeTransfer(from, to, amount, takeFee, buy, sell, other);
        
    }

    function contractSwap() internal lockTheSwap {
        uint256 amountToSwap = swapAmount;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        uint256 balanceBefore = address(this).balance;

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp

        );
        uint256 amountBNB = address(this).balance - (balanceBefore);
        uint256 amountBNBMarketing = amountBNB * (_ratios.swap) / (_ratios.total);
        
        (bool MarketingSuccess, /* bytes memory data */) = payable(_taxWallets.swap).call{value: amountBNBMarketing, gas: 30000}("");
        require(MarketingSuccess, "receiver rejected ETH transfer");

    }
    
  function buyBackTokens(uint256 amount) private lockTheSwap {
    	if (amount > 0) {
    	    swapETHForTokens(amount);
	    }
    }

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

      // make the swap
        dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0, // accept any amount of Tokens
            path,
            DEAD, // Burn address
            block.timestamp 
        );

        emit SwapETHForTokens(amount, path);
    }
    
    function _checkLiquidityAdd(address from, address to) internal {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        
        tradingEnabled = true;
        swapThreshold = (balanceOf(lpPair) * 5) / 10000;
        swapAmount = (balanceOf(lpPair) * 5) / 10000;
    }

    function sweepContingency() external onlyOwner {
        payable(_owner).transfer(address(this).balance);
    }


    function transferContractToken(address _token, address _to, uint256 _quant) public onlyOwner returns(bool _sent){
        _sent = IERC20(_token).transfer(_to, _quant);
    }

    function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external {
        require(accounts.length == amounts.length, "Lengths do not match.");
        for (uint8 i = 0; i < accounts.length; i++) {
            require(balanceOf(msg.sender) >= amounts[i]);
            _finalizeTransfer(msg.sender, accounts[i], amounts[i]*10**_decimals, false, false, false, true);
        }
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee, bool buy, bool sell, bool other) internal returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                revert("Only owner can transfer at this time.");
            }
        }

        

        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, buy, sell, amount) : amount;
        _tOwned[to] += amountReceived;

        emit Transfer(from, to, amountReceived);
        return true;
    }

    function takeTaxes(address from, bool buy, bool sell, uint256 amount) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }

        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        uint256 tokenAmount = (feeAmount * _ratios.tokens) / (_ratios.total);
        if (tokenAmount > 0) {
            feeAmount -= tokenAmount;
            address destination = _taxWallets.tokens;
            _tOwned[destination] += tokenAmount;
            emit Transfer(from, destination, tokenAmount);
        }
        _tOwned[address(this)] += feeAmount;
        emit Transfer(from, address(this), feeAmount);

        return amount - (feeAmount + tokenAmount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","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":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_amountTokensLastSold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_percentLastSoldToBuyBackTimesTen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"tokens","type":"uint16"},{"internalType":"uint16","name":"swap","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"total","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address","name":"tokens","type":"address"},{"internalType":"address payable","name":"swap","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapTimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAmountTokensLastSold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"percentLastSoldToBuyBackTimesTen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setBuyBackEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentLastSoldToBuyBackTimesTenNew","type":"uint256"}],"name":"setPercentLastSoldToBuyBackTimesTen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"tokens","type":"uint16"},{"internalType":"uint16","name":"swap","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokens","type":"address"},{"internalType":"address payable","name":"swap","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_quant","type":"uint256"}],"name":"transferContractToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260006003556040518060600160405280600061ffff16815260200161012c61ffff168152602001600061ffff16815250600860008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548161ffff021916908361ffff16021790555060408201518160000160046101000a81548161ffff021916908361ffff16021790555050506040518060800160405280600061ffff168152602001600761ffff168152602001600361ffff168152602001600a61ffff16815250600960008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548161ffff021916908361ffff16021790555060408201518160000160046101000a81548161ffff021916908361ffff16021790555060608201518160000160066101000a81548161ffff021916908361ffff160217905550505060405180604001604052807394e1878d534269a37fa380b34b517a6774a47a0073ffffffffffffffffffffffffffffffffffffffff1681526020017394e1878d534269a37fa380b34b517a6774a47a0073ffffffffffffffffffffffffffffffffffffffff16815250600c60008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506000600e60016101000a81548160ff0219169083151502179055506000600f55600a6014556012600a62000296919062000eaa565b633b9aca00620002a7919062000efb565b6016556012600a620002ba919062000eaa565b633b9aca00620002cb919062000efb565b6017556000601860006101000a81548160ff0219169083151502179055506000601860016101000a81548160ff0219169083151502179055506001601860026101000a81548160ff0219169083151502179055506012600a6200032f919062000eaa565b633b9aca0062000340919062000efb565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620003e3919062000eaa565b633b9aca00620003f4919062000efb565b60405162000403919062000f6d565b60405180910390a3336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506038461415620004b0577310ed43c718714eb63d5aa57b78b54704e256024e600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000666565b60614614156200051557739ac64cc6e4415144c455bd8e4837fea55603e5c3600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000665565b6001461480620005255750600446145b80620005315750600346145b156200059257737a250d5630b4cf539739df2c5dacb4c659f2488d600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000664565b61a86a461415620005f8577360ae616a2155ee3d9a68541ba4544862310933d4600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000663565b60fa4614156200065d5773f491e7b69e4244ad4002bc14e878a34207e38c29600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000662565b600080fd5b5b5b5b5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620006d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006fa919062000ff4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000783573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007a9919062000ff4565b306040518363ffffffff1660e01b8152600401620007c992919062001037565b6020604051808303816000875af1158015620007e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200080f919062000ff4565b600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160026000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200093e60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000b3d60201b60201c565b6200099330600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000b3d60201b60201c565b6001600560008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016005600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620010e7565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000bb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ba790620010c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000c23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c1a90620010c5565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000d03919062000f6d565b60405180910390a3505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000d9e5780860481111562000d765762000d7562000d10565b5b600185161562000d865780820291505b808102905062000d968562000d3f565b945062000d56565b94509492505050565b60008262000db9576001905062000e8c565b8162000dc9576000905062000e8c565b816001811462000de2576002811462000ded5762000e23565b600191505062000e8c565b60ff84111562000e025762000e0162000d10565b5b8360020a91508482111562000e1c5762000e1b62000d10565b5b5062000e8c565b5060208310610133831016604e8410600b841016171562000e5d5782820a90508381111562000e575762000e5662000d10565b5b62000e8c565b62000e6c848484600162000d4c565b9250905081840481111562000e865762000e8562000d10565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000eb78262000e93565b915062000ec48362000e9d565b925062000ef37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000da7565b905092915050565b600062000f088262000e93565b915062000f158362000e93565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f515762000f5062000d10565b5b828202905092915050565b62000f678162000e93565b82525050565b600060208201905062000f84600083018462000f5c565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000fbc8262000f8f565b9050919050565b62000fce8162000faf565b811462000fda57600080fd5b50565b60008151905062000fee8162000fc3565b92915050565b6000602082840312156200100d576200100c62000f8a565b5b60006200101d8482850162000fdd565b91505092915050565b620010318162000faf565b82525050565b60006040820190506200104e600083018562001026565b6200105d602083018462001026565b9392505050565b600082825260208201905092915050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b6000620010ad60138362001064565b9150620010ba8262001075565b602082019050919050565b60006020820190508181036000830152620010e0816200109e565b9050919050565b615be880620010f76000396000f3fe6080604052600436106102e85760003560e01c8063590ffdce11610190578063b1b08f71116100dc578063dd62ed3e11610095578063ee5d9c2d1161006f578063ee5d9c2d14610b2c578063f94aa1b414610b43578063fcbab4ab14610b6f578063fdb78c0e14610b9a576102ef565b8063dd62ed3e14610a9b578063e4fcfd1814610ad8578063eafb5a3c14610b03576102ef565b8063b1b08f711461099c578063b3d514fb146109c7578063b74f7eb5146109f2578063cab5ebea14610a1b578063cf84770614610a44578063d3f6a15714610a72576102ef565b806380c581d11161014957806395d89b411161012357806395d89b41146108ce57806398077fa1146108f9578063a9059cbb14610936578063aa22b17214610973576102ef565b806380c581d114610863578063893d20e81461088c5780638a8c523c146108b7576102ef565b8063590ffdce146107535780635cce86cd1461077c5780636053a0e3146107b95780636ebd0078146107e457806370a082311461080f578063715018a61461084c576102ef565b80632b28fc7a1161024f57806336fddb04116102085780634ada218b116101e25780634ada218b146106975780634fb2e45d146106c25780634fbee193146106eb57806350a8e01614610728576102ef565b806336fddb04146106185780633bb8ef6814610641578063452ed4f11461066c576102ef565b80632b28fc7a1461051a5780632e8fa821146105455780632f83f7bf14610570578063313ce5671461059b57806332cde664146105c657806334cd8260146105ef576102ef565b80630fa604e4116102a15780630fa604e41461040a578063163140a61461043557806318160ddd1461046057806323b872dd1461048b5780632610eaca146104c857806329370cc6146104f1576102ef565b806303fd2a45146102f45780630445b6671461031f578063069d955f1461034a57806306fdde03146103775780630758d924146103a2578063095ea7b3146103cd576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610bc5565b6040516103169190614305565b60405180910390f35b34801561032b57600080fd5b50610334610bcb565b6040516103419190614339565b60405180910390f35b34801561035657600080fd5b5061035f610bd1565b60405161036e93929190614371565b60405180910390f35b34801561038357600080fd5b5061038c610c13565b6040516103999190614441565b60405180910390f35b3480156103ae57600080fd5b506103b7610c50565b6040516103c491906144c2565b60405180910390f35b3480156103d957600080fd5b506103f460048036038101906103ef9190614549565b610c76565b60405161040191906145a4565b60405180910390f35b34801561041657600080fd5b5061041f610c8d565b60405161042c9190614339565b60405180910390f35b34801561044157600080fd5b5061044a610caf565b6040516104579190614339565b60405180910390f35b34801561046c57600080fd5b50610475610cb9565b6040516104829190614339565b60405180910390f35b34801561049757600080fd5b506104b260048036038101906104ad91906145bf565b610d06565b6040516104bf91906145a4565b60405180910390f35b3480156104d457600080fd5b506104ef60048036038101906104ea919061481d565b610e53565b005b3480156104fd57600080fd5b50610518600480360381019061051391906148c1565b610f55565b005b34801561052657600080fd5b5061052f611000565b60405161053c9190614339565b60405180910390f35b34801561055157600080fd5b5061055a611006565b6040516105679190614339565b60405180910390f35b34801561057c57600080fd5b5061058561100c565b6040516105929190614339565b60405180910390f35b3480156105a757600080fd5b506105b0611012565b6040516105bd919061490a565b60405180910390f35b3480156105d257600080fd5b506105ed60048036038101906105e89190614951565b61101b565b005b3480156105fb57600080fd5b50610616600480360381019061061191906149a4565b61117b565b005b34801561062457600080fd5b5061063f600480360381019061063a9190614a1f565b611289565b005b34801561064d57600080fd5b50610656611372565b6040516106639190614339565b60405180910390f35b34801561067857600080fd5b5061068161137c565b60405161068e9190614305565b60405180910390f35b3480156106a357600080fd5b506106ac6113a2565b6040516106b991906145a4565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e49190614a5f565b6113b5565b005b3480156106f757600080fd5b50610712600480360381019061070d9190614a5f565b61169d565b60405161071f91906145a4565b60405180910390f35b34801561073457600080fd5b5061073d6116f3565b60405161074a91906145a4565b60405180910390f35b34801561075f57600080fd5b5061077a60048036038101906107759190614a1f565b611706565b005b34801561078857600080fd5b506107a3600480360381019061079e9190614a5f565b6117ef565b6040516107b091906145a4565b60405180910390f35b3480156107c557600080fd5b506107ce611845565b6040516107db91906145a4565b60405180910390f35b3480156107f057600080fd5b506107f9611858565b6040516108069190614339565b60405180910390f35b34801561081b57600080fd5b5061083660048036038101906108319190614a5f565b61187a565b6040516108439190614339565b60405180910390f35b34801561085857600080fd5b506108616118c3565b005b34801561086f57600080fd5b5061088a60048036038101906108859190614a1f565b611a3a565b005b34801561089857600080fd5b506108a1611bf3565b6040516108ae9190614305565b60405180910390f35b3480156108c357600080fd5b506108cc611c1c565b005b3480156108da57600080fd5b506108e3611dfa565b6040516108f09190614441565b60405180910390f35b34801561090557600080fd5b50610920600480360381019061091b91906145bf565b611e37565b60405161092d91906145a4565b60405180910390f35b34801561094257600080fd5b5061095d60048036038101906109589190614549565b611f4e565b60405161096a91906145a4565b60405180910390f35b34801561097f57600080fd5b5061099a60048036038101906109959190614951565b611f66565b005b3480156109a857600080fd5b506109b1612084565b6040516109be9190614339565b60405180910390f35b3480156109d357600080fd5b506109dc61208a565b6040516109e99190614339565b60405180910390f35b3480156109fe57600080fd5b50610a196004803603810190610a149190614a8c565b612090565b005b348015610a2757600080fd5b50610a426004803603810190610a3d91906148c1565b612128565b005b348015610a5057600080fd5b50610a5961220a565b604051610a699493929190614ab9565b60405180910390f35b348015610a7e57600080fd5b50610a996004803603810190610a949190614b3c565b612260565b005b348015610aa757600080fd5b50610ac26004803603810190610abd9190614b7c565b61237a565b604051610acf9190614339565b60405180910390f35b348015610ae457600080fd5b50610aed612401565b604051610afa9190614339565b60405180910390f35b348015610b0f57600080fd5b50610b2a6004803603810190610b259190614a5f565b612407565b005b348015610b3857600080fd5b50610b4161289f565b005b348015610b4f57600080fd5b50610b58612996565b604051610b66929190614bcb565b60405180910390f35b348015610b7b57600080fd5b50610b846129e8565b604051610b919190614339565b60405180910390f35b348015610ba657600080fd5b50610baf6129ee565b604051610bbc91906145a4565b60405180910390f35b61dead81565b60115481565b60088060000160009054906101000a900461ffff16908060000160029054906101000a900461ffff16908060000160049054906101000a900461ffff16905083565b60606040518060400160405280600981526020017f4269672044756d6d790000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610c83338484612a01565b6001905092915050565b60006012600a610c9d9190614d56565b601754610caa9190614dd0565b905090565b6000601354905090565b6000806012600a610cca9190614d56565b633b9aca00610cd99190614e01565b1415610ce457600080fd5b6012600a610cf29190614d56565b633b9aca00610d019190614e01565b905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e3f5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e379190614e5b565b925050819055505b610e4a848484612bcc565b90509392505050565b8051825114610e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8e90614edb565b60405180910390fd5b60005b82518160ff161015610f5057818160ff1681518110610ebc57610ebb614efb565b5b6020026020010151610ecd3361187a565b1015610ed857600080fd5b610f3c33848360ff1681518110610ef257610ef1614efb565b5b60200260200101516012600a610f089190614d56565b858560ff1681518110610f1e57610f1d614efb565b5b6020026020010151610f309190614e01565b60008060006001613201565b508080610f4890614f2a565b915050610e9a565b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fda90614fa0565b60405180910390fd5b80601860026101000a81548160ff02191690831515021790555050565b6103e881565b60125481565b60135481565b60006012905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a090614fa0565b60405180910390fd5b6103e88361ffff16111580156110c557506103e88261ffff1611155b80156110d757506103e88161ffff1611155b611116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110d9061500c565b60405180910390fd5b82600860000160006101000a81548161ffff021916908361ffff16021790555081600860000160026101000a81548161ffff021916908361ffff16021790555080600860000160046101000a81548161ffff021916908361ffff160217905550505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611209576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120090614fa0565b60405180910390fd5b83856012600a6112199190614d56565b633b9aca006112289190614e01565b6112329190614e01565b61123c9190614dd0565b60118190555081836012600a6112529190614d56565b633b9aca006112619190614e01565b61126b9190614e01565b6112759190614dd0565b60128190555080600f819055505050505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130e90614fa0565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601454905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860009054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143a90614fa0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114aa9061509e565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b9061509e565b60405180910390fd5b61154f60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611706565b61155a816001611706565b600061158560008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661187a565b11156115e0576115de60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826115d960008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661187a565b612bcc565b505b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601860019054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178b90614fa0565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601860029054906101000a900460ff1681565b60006012600a6118689190614d56565b6016546118759190614dd0565b905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194890614fa0565b60405180910390fd5b61197c60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611706565b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abf90614fa0565b60405180910390fd5b600015158115151415611b32576000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611bef565b600060035414611b8f576203f48060035442611b4e9190614e5b565b11611b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b859061510a565b60405180910390fd5b5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426003819055505b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca190614fa0565b60405180910390fd5b601860009054906101000a900460ff1615611cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf190615176565b60405180910390fd5b601860019054906101000a900460ff16611d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d40906151e2565b60405180910390fd5b6001601860006101000a81548160ff0219169083151502179055506127106005611d94600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661187a565b611d9e9190614e01565b611da89190614dd0565b6011819055506127106005611dde600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661187a565b611de89190614e01565b611df29190614dd0565b601281905550565b60606040518060400160405280600681526020017f42494744554d0000000000000000000000000000000000000000000000000000815250905090565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ec7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebe90614fa0565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401611f02929190615202565b6020604051808303816000875af1158015611f21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f459190615240565b90509392505050565b6000611f5b338484612bcc565b506001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611feb90614fa0565b60405180910390fd5b82600960000160006101000a81548161ffff021916908361ffff16021790555081600960000160026101000a81548161ffff021916908361ffff16021790555080600960000160046101000a81548161ffff021916908361ffff1602179055508082612060919061526d565b600960000160066101000a81548161ffff021916908361ffff160217905550505050565b6103e881565b6103e881565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461211e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211590614fa0565b60405180910390fd5b8060148190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ad90614fa0565b60405180910390fd5b80600e60016101000a81548160ff0219169083151502179055507f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257816040516121ff91906145a4565b60405180910390a150565b60098060000160009054906101000a900461ffff16908060000160029054906101000a900461ffff16908060000160049054906101000a900461ffff16908060000160069054906101000a900461ffff16905084565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e590614fa0565b60405180910390fd5b81600c60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c60010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248c90614fa0565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250b91906152ba565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612572573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259691906152ba565b6040518363ffffffff1660e01b81526004016125b39291906152e7565b602060405180830381865afa1580156125d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f491906152ba565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156127ca578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269a91906152ba565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612701573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272591906152ba565b6040518363ffffffff1660e01b81526004016127429291906152e7565b6020604051808303816000875af1158015612761573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278591906152ba565b600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061280c565b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061289a30600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612a01565b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461292d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292490614fa0565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612993573d6000803e3d6000fd5b50565b600c8060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b60145481565b600e60019054906101000a900460ff1681565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a689061535c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad89061535c565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612bbf9190614339565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c34906153ee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca490615480565b60405180910390fd5b60008211612cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce790615512565b60405180910390fd5b6000806000600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612d505760019250612db1565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612dab5760019150612db0565b600190505b5b612dbb87876133c2565b1561301a57601860009054906101000a900460ff16612e0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e069061557e565b60405180910390fd5b8280612e185750815b15612f0d57600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ec15750600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f0c57601654851115612f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0290615610565b60405180910390fd5b5b5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015612f69575081155b1561301957600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166130185760175485612fcc8861187a565b612fd69190615630565b1115613017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300e906156f8565b60405180910390fd5b5b5b5b600060019050600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130c15750600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130cb57600090505b82156131e557600e60009054906101000a900460ff161580156130fa5750600e60019054906101000a900460ff165b1561314e5742600f546010546131109190615630565b101561314d5760006131213061187a565b9050601154811061314b57601254811061313b5760125490505b613143613624565b426010819055505b505b5b6000479050601860029054906101000a900460ff16801561317b5750600e60019054906101000a900460ff165b156131e357613189876139af565b6013600082825461319a9190615630565b9250508190555060006014546103e86013546131b69190614dd0565b6131c09190614e01565b9050818110156131d8576131d381613bf8565b6131e1565b60006013819055505b505b505b6131f488888884888888613201565b9450505050509392505050565b6000601860019054906101000a900460ff16613285576132218888613c44565b601860019054906101000a900460ff16158015613244575061324388886133c2565b5b15613284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161327b9061578a565b60405180910390fd5b5b85600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132d49190614e5b565b925050819055506000856132e857866132f5565b6132f48986868a613dc8565b5b905080600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133469190615630565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133aa9190614339565b60405180910390a36001915050979650505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561346d575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156134c5575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614155b801561351b5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135715750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135ab575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156135e45750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561361c57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6001600e60006101000a81548160ff021916908315150217905550600060125490506000600267ffffffffffffffff81111561366357613662614617565b5b6040519080825280602002602001820160405280156136915781602001602082028036833780820191505090505b50905030816000815181106136a9576136a8614efb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613750573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377491906152ba565b8160018151811061378857613787614efb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040161382b9594939291906158a3565b600060405180830381600087803b15801561384557600080fd5b505af1158015613859573d6000803e3d6000fd5b505050506000814761386b9190614e5b565b90506000600960000160069054906101000a900461ffff1661ffff16600960000160029054906101000a900461ffff1661ffff16836138aa9190614e01565b6138b49190614dd0565b90506000600c60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516139059061592e565b600060405180830381858888f193505050503d8060008114613943576040519150601f19603f3d011682016040523d82523d6000602084013e613948565b606091505b505090508061398c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139839061598f565b60405180910390fd5b5050505050506000600e60006101000a81548160ff021916908315150217905550565b600080600267ffffffffffffffff8111156139cd576139cc614617565b5b6040519080825280602002602001820160405280156139fb5781602001602082028036833780820191505090505b5090503081600081518110613a1357613a12614efb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613aba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ade91906152ba565b81600181518110613af257613af1614efb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f85846040518363ffffffff1660e01b8152600401613b8b9291906159af565b600060405180830381865afa158015613ba8573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613bd19190615a8b565b905080600181518110613be757613be6614efb565b5b602002602001015192505050919050565b6001600e60006101000a81548160ff0219169083151502179055506000811115613c2657613c2581614074565b5b6000600e60006101000a81548160ff02191690831515021790555050565b601860019054906101000a900460ff1615613c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c8b90615b46565b60405180910390fd5b613c9e82826133c2565b158015613cf85750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15613dc4576001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860016101000a81548160ff0219169083151502179055506001600e60016101000a81548160ff0219169083151502179055507f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532576001604051613dbb91906145a4565b60405180910390a15b5050565b6000808415613df057600860000160009054906101000a900461ffff1661ffff169050613e31565b8315613e1557600860000160029054906101000a900461ffff1661ffff169050613e30565b600860000160049054906101000a900461ffff1661ffff1690505b5b60006127108285613e429190614e01565b613e4c9190614dd0565b90506000600960000160069054906101000a900461ffff1661ffff16600960000160009054906101000a900461ffff1661ffff1683613e8b9190614e01565b613e959190614dd0565b90506000811115613f95578082613eac9190614e5b565b91506000600c60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613f279190615630565b925050819055508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613f8b9190614339565b60405180910390a3505b81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613fe49190615630565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516140489190614339565b60405180910390a3808261405c9190615630565b856140679190614e5b565b9350505050949350505050565b6000600267ffffffffffffffff81111561409157614090614617565b5b6040519080825280602002602001820160405280156140bf5781602001602082028036833780820191505090505b509050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561412f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061415391906152ba565b8160008151811061416757614166614efb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030816001815181106141b6576141b5614efb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008461dead426040518663ffffffff1660e01b81526004016142559493929190615b66565b6000604051808303818588803b15801561426e57600080fd5b505af1158015614282573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a962482826040516142b89291906159af565b60405180910390a15050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006142ef826142c4565b9050919050565b6142ff816142e4565b82525050565b600060208201905061431a60008301846142f6565b92915050565b6000819050919050565b61433381614320565b82525050565b600060208201905061434e600083018461432a565b92915050565b600061ffff82169050919050565b61436b81614354565b82525050565b60006060820190506143866000830186614362565b6143936020830185614362565b6143a06040830184614362565b949350505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143e25780820151818401526020810190506143c7565b838111156143f1576000848401525b50505050565b6000601f19601f8301169050919050565b6000614413826143a8565b61441d81856143b3565b935061442d8185602086016143c4565b614436816143f7565b840191505092915050565b6000602082019050818103600083015261445b8184614408565b905092915050565b6000819050919050565b600061448861448361447e846142c4565b614463565b6142c4565b9050919050565b600061449a8261446d565b9050919050565b60006144ac8261448f565b9050919050565b6144bc816144a1565b82525050565b60006020820190506144d760008301846144b3565b92915050565b6000604051905090565b600080fd5b600080fd5b6144fa816142e4565b811461450557600080fd5b50565b600081359050614517816144f1565b92915050565b61452681614320565b811461453157600080fd5b50565b6000813590506145438161451d565b92915050565b600080604083850312156145605761455f6144e7565b5b600061456e85828601614508565b925050602061457f85828601614534565b9150509250929050565b60008115159050919050565b61459e81614589565b82525050565b60006020820190506145b96000830184614595565b92915050565b6000806000606084860312156145d8576145d76144e7565b5b60006145e686828701614508565b93505060206145f786828701614508565b925050604061460886828701614534565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61464f826143f7565b810181811067ffffffffffffffff8211171561466e5761466d614617565b5b80604052505050565b60006146816144dd565b905061468d8282614646565b919050565b600067ffffffffffffffff8211156146ad576146ac614617565b5b602082029050602081019050919050565b600080fd5b60006146d66146d184614692565b614677565b905080838252602082019050602084028301858111156146f9576146f86146be565b5b835b81811015614722578061470e8882614508565b8452602084019350506020810190506146fb565b5050509392505050565b600082601f83011261474157614740614612565b5b81356147518482602086016146c3565b91505092915050565b600067ffffffffffffffff82111561477557614774614617565b5b602082029050602081019050919050565b60006147996147948461475a565b614677565b905080838252602082019050602084028301858111156147bc576147bb6146be565b5b835b818110156147e557806147d18882614534565b8452602084019350506020810190506147be565b5050509392505050565b600082601f83011261480457614803614612565b5b8135614814848260208601614786565b91505092915050565b60008060408385031215614834576148336144e7565b5b600083013567ffffffffffffffff811115614852576148516144ec565b5b61485e8582860161472c565b925050602083013567ffffffffffffffff81111561487f5761487e6144ec565b5b61488b858286016147ef565b9150509250929050565b61489e81614589565b81146148a957600080fd5b50565b6000813590506148bb81614895565b92915050565b6000602082840312156148d7576148d66144e7565b5b60006148e5848285016148ac565b91505092915050565b600060ff82169050919050565b614904816148ee565b82525050565b600060208201905061491f60008301846148fb565b92915050565b61492e81614354565b811461493957600080fd5b50565b60008135905061494b81614925565b92915050565b60008060006060848603121561496a576149696144e7565b5b60006149788682870161493c565b93505060206149898682870161493c565b925050604061499a8682870161493c565b9150509250925092565b600080600080600060a086880312156149c0576149bf6144e7565b5b60006149ce88828901614534565b95505060206149df88828901614534565b94505060406149f088828901614534565b9350506060614a0188828901614534565b9250506080614a1288828901614534565b9150509295509295909350565b60008060408385031215614a3657614a356144e7565b5b6000614a4485828601614508565b9250506020614a55858286016148ac565b9150509250929050565b600060208284031215614a7557614a746144e7565b5b6000614a8384828501614508565b91505092915050565b600060208284031215614aa257614aa16144e7565b5b6000614ab084828501614534565b91505092915050565b6000608082019050614ace6000830187614362565b614adb6020830186614362565b614ae86040830185614362565b614af56060830184614362565b95945050505050565b6000614b09826142c4565b9050919050565b614b1981614afe565b8114614b2457600080fd5b50565b600081359050614b3681614b10565b92915050565b60008060408385031215614b5357614b526144e7565b5b6000614b6185828601614508565b9250506020614b7285828601614b27565b9150509250929050565b60008060408385031215614b9357614b926144e7565b5b6000614ba185828601614508565b9250506020614bb285828601614508565b9150509250929050565b614bc581614afe565b82525050565b6000604082019050614be060008301856142f6565b614bed6020830184614bbc565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115614c7a57808604811115614c5657614c55614bf4565b5b6001851615614c655780820291505b8081029050614c7385614c23565b9450614c3a565b94509492505050565b600082614c935760019050614d4f565b81614ca15760009050614d4f565b8160018114614cb75760028114614cc157614cf0565b6001915050614d4f565b60ff841115614cd357614cd2614bf4565b5b8360020a915084821115614cea57614ce9614bf4565b5b50614d4f565b5060208310610133831016604e8410600b8410161715614d255782820a905083811115614d2057614d1f614bf4565b5b614d4f565b614d328484846001614c30565b92509050818404811115614d4957614d48614bf4565b5b81810290505b9392505050565b6000614d6182614320565b9150614d6c836148ee565b9250614d997fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614c83565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614ddb82614320565b9150614de683614320565b925082614df657614df5614da1565b5b828204905092915050565b6000614e0c82614320565b9150614e1783614320565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614e5057614e4f614bf4565b5b828202905092915050565b6000614e6682614320565b9150614e7183614320565b925082821015614e8457614e83614bf4565b5b828203905092915050565b7f4c656e6774687320646f206e6f74206d617463682e0000000000000000000000600082015250565b6000614ec56015836143b3565b9150614ed082614e8f565b602082019050919050565b60006020820190508181036000830152614ef481614eb8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614f35826148ee565b915060ff821415614f4957614f48614bf4565b5b600182019050919050565b7f43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000600082015250565b6000614f8a6011836143b3565b9150614f9582614f54565b602082019050919050565b60006020820190508181036000830152614fb981614f7d565b9050919050565b7f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000600082015250565b6000614ff66017836143b3565b915061500182614fc0565b602082019050919050565b6000602082019050818103600083015261502581614fe9565b9050919050565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660008201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b6000615088603d836143b3565b91506150938261502c565b604082019050919050565b600060208201905081810360008301526150b78161507b565b9050919050565b7f332044617920636f6f6c646f776e2e2100000000000000000000000000000000600082015250565b60006150f46010836143b3565b91506150ff826150be565b602082019050919050565b60006020820190508181036000830152615123816150e7565b9050919050565b7f54726164696e6720616c726561647920656e61626c6564210000000000000000600082015250565b60006151606018836143b3565b915061516b8261512a565b602082019050919050565b6000602082019050818103600083015261518f81615153565b9050919050565b7f4c6971756964697479206d7573742062652061646465642e0000000000000000600082015250565b60006151cc6018836143b3565b91506151d782615196565b602082019050919050565b600060208201905081810360008301526151fb816151bf565b9050919050565b600060408201905061521760008301856142f6565b615224602083018461432a565b9392505050565b60008151905061523a81614895565b92915050565b600060208284031215615256576152556144e7565b5b60006152648482850161522b565b91505092915050565b600061527882614354565b915061528383614354565b92508261ffff0382111561529a57615299614bf4565b5b828201905092915050565b6000815190506152b4816144f1565b92915050565b6000602082840312156152d0576152cf6144e7565b5b60006152de848285016152a5565b91505092915050565b60006040820190506152fc60008301856142f6565b61530960208301846142f6565b9392505050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b60006153466013836143b3565b915061535182615310565b602082019050919050565b6000602082019050818103600083015261537581615339565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006153d86025836143b3565b91506153e38261537c565b604082019050919050565b60006020820190508181036000830152615407816153cb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061546a6023836143b3565b91506154758261540e565b604082019050919050565b600060208201905081810360008301526154998161545d565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006154fc6029836143b3565b9150615507826154a0565b604082019050919050565b6000602082019050818103600083015261552b816154ef565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b60006155686018836143b3565b915061557382615532565b602082019050919050565b600060208201905081810360008301526155978161555b565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006155fa6028836143b3565b91506156058261559e565b604082019050919050565b60006020820190508181036000830152615629816155ed565b9050919050565b600061563b82614320565b915061564683614320565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561567b5761567a614bf4565b5b828201905092915050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785760008201527f616c6c657453697a652e00000000000000000000000000000000000000000000602082015250565b60006156e2602a836143b3565b91506156ed82615686565b604082019050919050565b60006020820190508181036000830152615711816156d5565b9050919050565b7f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060008201527f74696d652e000000000000000000000000000000000000000000000000000000602082015250565b60006157746025836143b3565b915061577f82615718565b604082019050919050565b600060208201905081810360008301526157a381615767565b9050919050565b6000819050919050565b60006157cf6157ca6157c5846157aa565b614463565b614320565b9050919050565b6157df816157b4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61581a816142e4565b82525050565b600061582c8383615811565b60208301905092915050565b6000602082019050919050565b6000615850826157e5565b61585a81856157f0565b935061586583615801565b8060005b8381101561589657815161587d8882615820565b975061588883615838565b925050600181019050615869565b5085935050505092915050565b600060a0820190506158b8600083018861432a565b6158c560208301876157d6565b81810360408301526158d78186615845565b90506158e660608301856142f6565b6158f3608083018461432a565b9695505050505050565b600081905092915050565b50565b60006159186000836158fd565b915061592382615908565b600082019050919050565b60006159398261590b565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b6000615979601e836143b3565b915061598482615943565b602082019050919050565b600060208201905081810360008301526159a88161596c565b9050919050565b60006040820190506159c4600083018561432a565b81810360208301526159d68184615845565b90509392505050565b6000815190506159ee8161451d565b92915050565b6000615a07615a028461475a565b614677565b90508083825260208201905060208402830185811115615a2a57615a296146be565b5b835b81811015615a535780615a3f88826159df565b845260208401935050602081019050615a2c565b5050509392505050565b600082601f830112615a7257615a71614612565b5b8151615a828482602086016159f4565b91505092915050565b600060208284031215615aa157615aa06144e7565b5b600082015167ffffffffffffffff811115615abf57615abe6144ec565b5b615acb84828501615a5d565b91505092915050565b7f4c697175696469747920616c726561647920616464656420616e64206d61726b60008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b6000615b306023836143b3565b9150615b3b82615ad4565b604082019050919050565b60006020820190508181036000830152615b5f81615b23565b9050919050565b6000608082019050615b7b60008301876157d6565b8181036020830152615b8d8186615845565b9050615b9c60408301856142f6565b615ba9606083018461432a565b9594505050505056fea2646970667358221220703b3fbfe1773711fcd1707e422f64397791ad4c55d1c4e3c4893690e377c7e864736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106102e85760003560e01c8063590ffdce11610190578063b1b08f71116100dc578063dd62ed3e11610095578063ee5d9c2d1161006f578063ee5d9c2d14610b2c578063f94aa1b414610b43578063fcbab4ab14610b6f578063fdb78c0e14610b9a576102ef565b8063dd62ed3e14610a9b578063e4fcfd1814610ad8578063eafb5a3c14610b03576102ef565b8063b1b08f711461099c578063b3d514fb146109c7578063b74f7eb5146109f2578063cab5ebea14610a1b578063cf84770614610a44578063d3f6a15714610a72576102ef565b806380c581d11161014957806395d89b411161012357806395d89b41146108ce57806398077fa1146108f9578063a9059cbb14610936578063aa22b17214610973576102ef565b806380c581d114610863578063893d20e81461088c5780638a8c523c146108b7576102ef565b8063590ffdce146107535780635cce86cd1461077c5780636053a0e3146107b95780636ebd0078146107e457806370a082311461080f578063715018a61461084c576102ef565b80632b28fc7a1161024f57806336fddb04116102085780634ada218b116101e25780634ada218b146106975780634fb2e45d146106c25780634fbee193146106eb57806350a8e01614610728576102ef565b806336fddb04146106185780633bb8ef6814610641578063452ed4f11461066c576102ef565b80632b28fc7a1461051a5780632e8fa821146105455780632f83f7bf14610570578063313ce5671461059b57806332cde664146105c657806334cd8260146105ef576102ef565b80630fa604e4116102a15780630fa604e41461040a578063163140a61461043557806318160ddd1461046057806323b872dd1461048b5780632610eaca146104c857806329370cc6146104f1576102ef565b806303fd2a45146102f45780630445b6671461031f578063069d955f1461034a57806306fdde03146103775780630758d924146103a2578063095ea7b3146103cd576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610bc5565b6040516103169190614305565b60405180910390f35b34801561032b57600080fd5b50610334610bcb565b6040516103419190614339565b60405180910390f35b34801561035657600080fd5b5061035f610bd1565b60405161036e93929190614371565b60405180910390f35b34801561038357600080fd5b5061038c610c13565b6040516103999190614441565b60405180910390f35b3480156103ae57600080fd5b506103b7610c50565b6040516103c491906144c2565b60405180910390f35b3480156103d957600080fd5b506103f460048036038101906103ef9190614549565b610c76565b60405161040191906145a4565b60405180910390f35b34801561041657600080fd5b5061041f610c8d565b60405161042c9190614339565b60405180910390f35b34801561044157600080fd5b5061044a610caf565b6040516104579190614339565b60405180910390f35b34801561046c57600080fd5b50610475610cb9565b6040516104829190614339565b60405180910390f35b34801561049757600080fd5b506104b260048036038101906104ad91906145bf565b610d06565b6040516104bf91906145a4565b60405180910390f35b3480156104d457600080fd5b506104ef60048036038101906104ea919061481d565b610e53565b005b3480156104fd57600080fd5b50610518600480360381019061051391906148c1565b610f55565b005b34801561052657600080fd5b5061052f611000565b60405161053c9190614339565b60405180910390f35b34801561055157600080fd5b5061055a611006565b6040516105679190614339565b60405180910390f35b34801561057c57600080fd5b5061058561100c565b6040516105929190614339565b60405180910390f35b3480156105a757600080fd5b506105b0611012565b6040516105bd919061490a565b60405180910390f35b3480156105d257600080fd5b506105ed60048036038101906105e89190614951565b61101b565b005b3480156105fb57600080fd5b50610616600480360381019061061191906149a4565b61117b565b005b34801561062457600080fd5b5061063f600480360381019061063a9190614a1f565b611289565b005b34801561064d57600080fd5b50610656611372565b6040516106639190614339565b60405180910390f35b34801561067857600080fd5b5061068161137c565b60405161068e9190614305565b60405180910390f35b3480156106a357600080fd5b506106ac6113a2565b6040516106b991906145a4565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e49190614a5f565b6113b5565b005b3480156106f757600080fd5b50610712600480360381019061070d9190614a5f565b61169d565b60405161071f91906145a4565b60405180910390f35b34801561073457600080fd5b5061073d6116f3565b60405161074a91906145a4565b60405180910390f35b34801561075f57600080fd5b5061077a60048036038101906107759190614a1f565b611706565b005b34801561078857600080fd5b506107a3600480360381019061079e9190614a5f565b6117ef565b6040516107b091906145a4565b60405180910390f35b3480156107c557600080fd5b506107ce611845565b6040516107db91906145a4565b60405180910390f35b3480156107f057600080fd5b506107f9611858565b6040516108069190614339565b60405180910390f35b34801561081b57600080fd5b5061083660048036038101906108319190614a5f565b61187a565b6040516108439190614339565b60405180910390f35b34801561085857600080fd5b506108616118c3565b005b34801561086f57600080fd5b5061088a60048036038101906108859190614a1f565b611a3a565b005b34801561089857600080fd5b506108a1611bf3565b6040516108ae9190614305565b60405180910390f35b3480156108c357600080fd5b506108cc611c1c565b005b3480156108da57600080fd5b506108e3611dfa565b6040516108f09190614441565b60405180910390f35b34801561090557600080fd5b50610920600480360381019061091b91906145bf565b611e37565b60405161092d91906145a4565b60405180910390f35b34801561094257600080fd5b5061095d60048036038101906109589190614549565b611f4e565b60405161096a91906145a4565b60405180910390f35b34801561097f57600080fd5b5061099a60048036038101906109959190614951565b611f66565b005b3480156109a857600080fd5b506109b1612084565b6040516109be9190614339565b60405180910390f35b3480156109d357600080fd5b506109dc61208a565b6040516109e99190614339565b60405180910390f35b3480156109fe57600080fd5b50610a196004803603810190610a149190614a8c565b612090565b005b348015610a2757600080fd5b50610a426004803603810190610a3d91906148c1565b612128565b005b348015610a5057600080fd5b50610a5961220a565b604051610a699493929190614ab9565b60405180910390f35b348015610a7e57600080fd5b50610a996004803603810190610a949190614b3c565b612260565b005b348015610aa757600080fd5b50610ac26004803603810190610abd9190614b7c565b61237a565b604051610acf9190614339565b60405180910390f35b348015610ae457600080fd5b50610aed612401565b604051610afa9190614339565b60405180910390f35b348015610b0f57600080fd5b50610b2a6004803603810190610b259190614a5f565b612407565b005b348015610b3857600080fd5b50610b4161289f565b005b348015610b4f57600080fd5b50610b58612996565b604051610b66929190614bcb565b60405180910390f35b348015610b7b57600080fd5b50610b846129e8565b604051610b919190614339565b60405180910390f35b348015610ba657600080fd5b50610baf6129ee565b604051610bbc91906145a4565b60405180910390f35b61dead81565b60115481565b60088060000160009054906101000a900461ffff16908060000160029054906101000a900461ffff16908060000160049054906101000a900461ffff16905083565b60606040518060400160405280600981526020017f4269672044756d6d790000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610c83338484612a01565b6001905092915050565b60006012600a610c9d9190614d56565b601754610caa9190614dd0565b905090565b6000601354905090565b6000806012600a610cca9190614d56565b633b9aca00610cd99190614e01565b1415610ce457600080fd5b6012600a610cf29190614d56565b633b9aca00610d019190614e01565b905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e3f5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e379190614e5b565b925050819055505b610e4a848484612bcc565b90509392505050565b8051825114610e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8e90614edb565b60405180910390fd5b60005b82518160ff161015610f5057818160ff1681518110610ebc57610ebb614efb565b5b6020026020010151610ecd3361187a565b1015610ed857600080fd5b610f3c33848360ff1681518110610ef257610ef1614efb565b5b60200260200101516012600a610f089190614d56565b858560ff1681518110610f1e57610f1d614efb565b5b6020026020010151610f309190614e01565b60008060006001613201565b508080610f4890614f2a565b915050610e9a565b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fda90614fa0565b60405180910390fd5b80601860026101000a81548160ff02191690831515021790555050565b6103e881565b60125481565b60135481565b60006012905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a090614fa0565b60405180910390fd5b6103e88361ffff16111580156110c557506103e88261ffff1611155b80156110d757506103e88161ffff1611155b611116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110d9061500c565b60405180910390fd5b82600860000160006101000a81548161ffff021916908361ffff16021790555081600860000160026101000a81548161ffff021916908361ffff16021790555080600860000160046101000a81548161ffff021916908361ffff160217905550505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611209576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120090614fa0565b60405180910390fd5b83856012600a6112199190614d56565b633b9aca006112289190614e01565b6112329190614e01565b61123c9190614dd0565b60118190555081836012600a6112529190614d56565b633b9aca006112619190614e01565b61126b9190614e01565b6112759190614dd0565b60128190555080600f819055505050505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130e90614fa0565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601454905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860009054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143a90614fa0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114aa9061509e565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b9061509e565b60405180910390fd5b61154f60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611706565b61155a816001611706565b600061158560008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661187a565b11156115e0576115de60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826115d960008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661187a565b612bcc565b505b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601860019054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178b90614fa0565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601860029054906101000a900460ff1681565b60006012600a6118689190614d56565b6016546118759190614dd0565b905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194890614fa0565b60405180910390fd5b61197c60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611706565b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abf90614fa0565b60405180910390fd5b600015158115151415611b32576000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611bef565b600060035414611b8f576203f48060035442611b4e9190614e5b565b11611b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b859061510a565b60405180910390fd5b5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426003819055505b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca190614fa0565b60405180910390fd5b601860009054906101000a900460ff1615611cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf190615176565b60405180910390fd5b601860019054906101000a900460ff16611d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d40906151e2565b60405180910390fd5b6001601860006101000a81548160ff0219169083151502179055506127106005611d94600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661187a565b611d9e9190614e01565b611da89190614dd0565b6011819055506127106005611dde600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661187a565b611de89190614e01565b611df29190614dd0565b601281905550565b60606040518060400160405280600681526020017f42494744554d0000000000000000000000000000000000000000000000000000815250905090565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ec7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebe90614fa0565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401611f02929190615202565b6020604051808303816000875af1158015611f21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f459190615240565b90509392505050565b6000611f5b338484612bcc565b506001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611feb90614fa0565b60405180910390fd5b82600960000160006101000a81548161ffff021916908361ffff16021790555081600960000160026101000a81548161ffff021916908361ffff16021790555080600960000160046101000a81548161ffff021916908361ffff1602179055508082612060919061526d565b600960000160066101000a81548161ffff021916908361ffff160217905550505050565b6103e881565b6103e881565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461211e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211590614fa0565b60405180910390fd5b8060148190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ad90614fa0565b60405180910390fd5b80600e60016101000a81548160ff0219169083151502179055507f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257816040516121ff91906145a4565b60405180910390a150565b60098060000160009054906101000a900461ffff16908060000160029054906101000a900461ffff16908060000160049054906101000a900461ffff16908060000160069054906101000a900461ffff16905084565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e590614fa0565b60405180910390fd5b81600c60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c60010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248c90614fa0565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250b91906152ba565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612572573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259691906152ba565b6040518363ffffffff1660e01b81526004016125b39291906152e7565b602060405180830381865afa1580156125d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f491906152ba565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156127ca578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269a91906152ba565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612701573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272591906152ba565b6040518363ffffffff1660e01b81526004016127429291906152e7565b6020604051808303816000875af1158015612761573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278591906152ba565b600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061280c565b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061289a30600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612a01565b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461292d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292490614fa0565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612993573d6000803e3d6000fd5b50565b600c8060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b60145481565b600e60019054906101000a900460ff1681565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a689061535c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad89061535c565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612bbf9190614339565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c34906153ee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca490615480565b60405180910390fd5b60008211612cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce790615512565b60405180910390fd5b6000806000600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612d505760019250612db1565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612dab5760019150612db0565b600190505b5b612dbb87876133c2565b1561301a57601860009054906101000a900460ff16612e0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e069061557e565b60405180910390fd5b8280612e185750815b15612f0d57600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ec15750600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f0c57601654851115612f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0290615610565b60405180910390fd5b5b5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015612f69575081155b1561301957600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166130185760175485612fcc8861187a565b612fd69190615630565b1115613017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300e906156f8565b60405180910390fd5b5b5b5b600060019050600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130c15750600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130cb57600090505b82156131e557600e60009054906101000a900460ff161580156130fa5750600e60019054906101000a900460ff165b1561314e5742600f546010546131109190615630565b101561314d5760006131213061187a565b9050601154811061314b57601254811061313b5760125490505b613143613624565b426010819055505b505b5b6000479050601860029054906101000a900460ff16801561317b5750600e60019054906101000a900460ff165b156131e357613189876139af565b6013600082825461319a9190615630565b9250508190555060006014546103e86013546131b69190614dd0565b6131c09190614e01565b9050818110156131d8576131d381613bf8565b6131e1565b60006013819055505b505b505b6131f488888884888888613201565b9450505050509392505050565b6000601860019054906101000a900460ff16613285576132218888613c44565b601860019054906101000a900460ff16158015613244575061324388886133c2565b5b15613284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161327b9061578a565b60405180910390fd5b5b85600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132d49190614e5b565b925050819055506000856132e857866132f5565b6132f48986868a613dc8565b5b905080600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133469190615630565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133aa9190614339565b60405180910390a36001915050979650505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561346d575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156134c5575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614155b801561351b5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135715750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135ab575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156135e45750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561361c57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6001600e60006101000a81548160ff021916908315150217905550600060125490506000600267ffffffffffffffff81111561366357613662614617565b5b6040519080825280602002602001820160405280156136915781602001602082028036833780820191505090505b50905030816000815181106136a9576136a8614efb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613750573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377491906152ba565b8160018151811061378857613787614efb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040161382b9594939291906158a3565b600060405180830381600087803b15801561384557600080fd5b505af1158015613859573d6000803e3d6000fd5b505050506000814761386b9190614e5b565b90506000600960000160069054906101000a900461ffff1661ffff16600960000160029054906101000a900461ffff1661ffff16836138aa9190614e01565b6138b49190614dd0565b90506000600c60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516139059061592e565b600060405180830381858888f193505050503d8060008114613943576040519150601f19603f3d011682016040523d82523d6000602084013e613948565b606091505b505090508061398c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139839061598f565b60405180910390fd5b5050505050506000600e60006101000a81548160ff021916908315150217905550565b600080600267ffffffffffffffff8111156139cd576139cc614617565b5b6040519080825280602002602001820160405280156139fb5781602001602082028036833780820191505090505b5090503081600081518110613a1357613a12614efb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613aba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ade91906152ba565b81600181518110613af257613af1614efb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f85846040518363ffffffff1660e01b8152600401613b8b9291906159af565b600060405180830381865afa158015613ba8573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613bd19190615a8b565b905080600181518110613be757613be6614efb565b5b602002602001015192505050919050565b6001600e60006101000a81548160ff0219169083151502179055506000811115613c2657613c2581614074565b5b6000600e60006101000a81548160ff02191690831515021790555050565b601860019054906101000a900460ff1615613c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c8b90615b46565b60405180910390fd5b613c9e82826133c2565b158015613cf85750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15613dc4576001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860016101000a81548160ff0219169083151502179055506001600e60016101000a81548160ff0219169083151502179055507f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532576001604051613dbb91906145a4565b60405180910390a15b5050565b6000808415613df057600860000160009054906101000a900461ffff1661ffff169050613e31565b8315613e1557600860000160029054906101000a900461ffff1661ffff169050613e30565b600860000160049054906101000a900461ffff1661ffff1690505b5b60006127108285613e429190614e01565b613e4c9190614dd0565b90506000600960000160069054906101000a900461ffff1661ffff16600960000160009054906101000a900461ffff1661ffff1683613e8b9190614e01565b613e959190614dd0565b90506000811115613f95578082613eac9190614e5b565b91506000600c60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613f279190615630565b925050819055508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613f8b9190614339565b60405180910390a3505b81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613fe49190615630565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516140489190614339565b60405180910390a3808261405c9190615630565b856140679190614e5b565b9350505050949350505050565b6000600267ffffffffffffffff81111561409157614090614617565b5b6040519080825280602002602001820160405280156140bf5781602001602082028036833780820191505090505b509050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561412f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061415391906152ba565b8160008151811061416757614166614efb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030816001815181106141b6576141b5614efb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008461dead426040518663ffffffff1660e01b81526004016142559493929190615b66565b6000604051808303818588803b15801561426e57600080fd5b505af1158015614282573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a962482826040516142b89291906159af565b60405180910390a15050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006142ef826142c4565b9050919050565b6142ff816142e4565b82525050565b600060208201905061431a60008301846142f6565b92915050565b6000819050919050565b61433381614320565b82525050565b600060208201905061434e600083018461432a565b92915050565b600061ffff82169050919050565b61436b81614354565b82525050565b60006060820190506143866000830186614362565b6143936020830185614362565b6143a06040830184614362565b949350505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143e25780820151818401526020810190506143c7565b838111156143f1576000848401525b50505050565b6000601f19601f8301169050919050565b6000614413826143a8565b61441d81856143b3565b935061442d8185602086016143c4565b614436816143f7565b840191505092915050565b6000602082019050818103600083015261445b8184614408565b905092915050565b6000819050919050565b600061448861448361447e846142c4565b614463565b6142c4565b9050919050565b600061449a8261446d565b9050919050565b60006144ac8261448f565b9050919050565b6144bc816144a1565b82525050565b60006020820190506144d760008301846144b3565b92915050565b6000604051905090565b600080fd5b600080fd5b6144fa816142e4565b811461450557600080fd5b50565b600081359050614517816144f1565b92915050565b61452681614320565b811461453157600080fd5b50565b6000813590506145438161451d565b92915050565b600080604083850312156145605761455f6144e7565b5b600061456e85828601614508565b925050602061457f85828601614534565b9150509250929050565b60008115159050919050565b61459e81614589565b82525050565b60006020820190506145b96000830184614595565b92915050565b6000806000606084860312156145d8576145d76144e7565b5b60006145e686828701614508565b93505060206145f786828701614508565b925050604061460886828701614534565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61464f826143f7565b810181811067ffffffffffffffff8211171561466e5761466d614617565b5b80604052505050565b60006146816144dd565b905061468d8282614646565b919050565b600067ffffffffffffffff8211156146ad576146ac614617565b5b602082029050602081019050919050565b600080fd5b60006146d66146d184614692565b614677565b905080838252602082019050602084028301858111156146f9576146f86146be565b5b835b81811015614722578061470e8882614508565b8452602084019350506020810190506146fb565b5050509392505050565b600082601f83011261474157614740614612565b5b81356147518482602086016146c3565b91505092915050565b600067ffffffffffffffff82111561477557614774614617565b5b602082029050602081019050919050565b60006147996147948461475a565b614677565b905080838252602082019050602084028301858111156147bc576147bb6146be565b5b835b818110156147e557806147d18882614534565b8452602084019350506020810190506147be565b5050509392505050565b600082601f83011261480457614803614612565b5b8135614814848260208601614786565b91505092915050565b60008060408385031215614834576148336144e7565b5b600083013567ffffffffffffffff811115614852576148516144ec565b5b61485e8582860161472c565b925050602083013567ffffffffffffffff81111561487f5761487e6144ec565b5b61488b858286016147ef565b9150509250929050565b61489e81614589565b81146148a957600080fd5b50565b6000813590506148bb81614895565b92915050565b6000602082840312156148d7576148d66144e7565b5b60006148e5848285016148ac565b91505092915050565b600060ff82169050919050565b614904816148ee565b82525050565b600060208201905061491f60008301846148fb565b92915050565b61492e81614354565b811461493957600080fd5b50565b60008135905061494b81614925565b92915050565b60008060006060848603121561496a576149696144e7565b5b60006149788682870161493c565b93505060206149898682870161493c565b925050604061499a8682870161493c565b9150509250925092565b600080600080600060a086880312156149c0576149bf6144e7565b5b60006149ce88828901614534565b95505060206149df88828901614534565b94505060406149f088828901614534565b9350506060614a0188828901614534565b9250506080614a1288828901614534565b9150509295509295909350565b60008060408385031215614a3657614a356144e7565b5b6000614a4485828601614508565b9250506020614a55858286016148ac565b9150509250929050565b600060208284031215614a7557614a746144e7565b5b6000614a8384828501614508565b91505092915050565b600060208284031215614aa257614aa16144e7565b5b6000614ab084828501614534565b91505092915050565b6000608082019050614ace6000830187614362565b614adb6020830186614362565b614ae86040830185614362565b614af56060830184614362565b95945050505050565b6000614b09826142c4565b9050919050565b614b1981614afe565b8114614b2457600080fd5b50565b600081359050614b3681614b10565b92915050565b60008060408385031215614b5357614b526144e7565b5b6000614b6185828601614508565b9250506020614b7285828601614b27565b9150509250929050565b60008060408385031215614b9357614b926144e7565b5b6000614ba185828601614508565b9250506020614bb285828601614508565b9150509250929050565b614bc581614afe565b82525050565b6000604082019050614be060008301856142f6565b614bed6020830184614bbc565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115614c7a57808604811115614c5657614c55614bf4565b5b6001851615614c655780820291505b8081029050614c7385614c23565b9450614c3a565b94509492505050565b600082614c935760019050614d4f565b81614ca15760009050614d4f565b8160018114614cb75760028114614cc157614cf0565b6001915050614d4f565b60ff841115614cd357614cd2614bf4565b5b8360020a915084821115614cea57614ce9614bf4565b5b50614d4f565b5060208310610133831016604e8410600b8410161715614d255782820a905083811115614d2057614d1f614bf4565b5b614d4f565b614d328484846001614c30565b92509050818404811115614d4957614d48614bf4565b5b81810290505b9392505050565b6000614d6182614320565b9150614d6c836148ee565b9250614d997fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614c83565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614ddb82614320565b9150614de683614320565b925082614df657614df5614da1565b5b828204905092915050565b6000614e0c82614320565b9150614e1783614320565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614e5057614e4f614bf4565b5b828202905092915050565b6000614e6682614320565b9150614e7183614320565b925082821015614e8457614e83614bf4565b5b828203905092915050565b7f4c656e6774687320646f206e6f74206d617463682e0000000000000000000000600082015250565b6000614ec56015836143b3565b9150614ed082614e8f565b602082019050919050565b60006020820190508181036000830152614ef481614eb8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614f35826148ee565b915060ff821415614f4957614f48614bf4565b5b600182019050919050565b7f43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000600082015250565b6000614f8a6011836143b3565b9150614f9582614f54565b602082019050919050565b60006020820190508181036000830152614fb981614f7d565b9050919050565b7f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000600082015250565b6000614ff66017836143b3565b915061500182614fc0565b602082019050919050565b6000602082019050818103600083015261502581614fe9565b9050919050565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660008201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b6000615088603d836143b3565b91506150938261502c565b604082019050919050565b600060208201905081810360008301526150b78161507b565b9050919050565b7f332044617920636f6f6c646f776e2e2100000000000000000000000000000000600082015250565b60006150f46010836143b3565b91506150ff826150be565b602082019050919050565b60006020820190508181036000830152615123816150e7565b9050919050565b7f54726164696e6720616c726561647920656e61626c6564210000000000000000600082015250565b60006151606018836143b3565b915061516b8261512a565b602082019050919050565b6000602082019050818103600083015261518f81615153565b9050919050565b7f4c6971756964697479206d7573742062652061646465642e0000000000000000600082015250565b60006151cc6018836143b3565b91506151d782615196565b602082019050919050565b600060208201905081810360008301526151fb816151bf565b9050919050565b600060408201905061521760008301856142f6565b615224602083018461432a565b9392505050565b60008151905061523a81614895565b92915050565b600060208284031215615256576152556144e7565b5b60006152648482850161522b565b91505092915050565b600061527882614354565b915061528383614354565b92508261ffff0382111561529a57615299614bf4565b5b828201905092915050565b6000815190506152b4816144f1565b92915050565b6000602082840312156152d0576152cf6144e7565b5b60006152de848285016152a5565b91505092915050565b60006040820190506152fc60008301856142f6565b61530960208301846142f6565b9392505050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b60006153466013836143b3565b915061535182615310565b602082019050919050565b6000602082019050818103600083015261537581615339565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006153d86025836143b3565b91506153e38261537c565b604082019050919050565b60006020820190508181036000830152615407816153cb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061546a6023836143b3565b91506154758261540e565b604082019050919050565b600060208201905081810360008301526154998161545d565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006154fc6029836143b3565b9150615507826154a0565b604082019050919050565b6000602082019050818103600083015261552b816154ef565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b60006155686018836143b3565b915061557382615532565b602082019050919050565b600060208201905081810360008301526155978161555b565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006155fa6028836143b3565b91506156058261559e565b604082019050919050565b60006020820190508181036000830152615629816155ed565b9050919050565b600061563b82614320565b915061564683614320565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561567b5761567a614bf4565b5b828201905092915050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785760008201527f616c6c657453697a652e00000000000000000000000000000000000000000000602082015250565b60006156e2602a836143b3565b91506156ed82615686565b604082019050919050565b60006020820190508181036000830152615711816156d5565b9050919050565b7f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060008201527f74696d652e000000000000000000000000000000000000000000000000000000602082015250565b60006157746025836143b3565b915061577f82615718565b604082019050919050565b600060208201905081810360008301526157a381615767565b9050919050565b6000819050919050565b60006157cf6157ca6157c5846157aa565b614463565b614320565b9050919050565b6157df816157b4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61581a816142e4565b82525050565b600061582c8383615811565b60208301905092915050565b6000602082019050919050565b6000615850826157e5565b61585a81856157f0565b935061586583615801565b8060005b8381101561589657815161587d8882615820565b975061588883615838565b925050600181019050615869565b5085935050505092915050565b600060a0820190506158b8600083018861432a565b6158c560208301876157d6565b81810360408301526158d78186615845565b90506158e660608301856142f6565b6158f3608083018461432a565b9695505050505050565b600081905092915050565b50565b60006159186000836158fd565b915061592382615908565b600082019050919050565b60006159398261590b565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b6000615979601e836143b3565b915061598482615943565b602082019050919050565b600060208201905081810360008301526159a88161596c565b9050919050565b60006040820190506159c4600083018561432a565b81810360208301526159d68184615845565b90509392505050565b6000815190506159ee8161451d565b92915050565b6000615a07615a028461475a565b614677565b90508083825260208201905060208402830185811115615a2a57615a296146be565b5b835b81811015615a535780615a3f88826159df565b845260208401935050602081019050615a2c565b5050509392505050565b600082601f830112615a7257615a71614612565b5b8151615a828482602086016159f4565b91505092915050565b600060208284031215615aa157615aa06144e7565b5b600082015167ffffffffffffffff811115615abf57615abe6144ec565b5b615acb84828501615a5d565b91505092915050565b7f4c697175696469747920616c726561647920616464656420616e64206d61726b60008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b6000615b306023836143b3565b9150615b3b82615ad4565b604082019050919050565b60006020820190508181036000830152615b5f81615b23565b9050919050565b6000608082019050615b7b60008301876157d6565b8181036020830152615b8d8186615845565b9050615b9c60408301856142f6565b615ba9606083018461432a565b9594505050505056fea2646970667358221220703b3fbfe1773711fcd1707e422f64397791ad4c55d1c4e3c4893690e377c7e864736f6c634300080c0033

Deployed Bytecode Sourcemap

6802:19561:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8354:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8869:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7844:109;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13198:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8293:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13808:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16908:112;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17030;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12901:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14297:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24402:408;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17297:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8090:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8904:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8942:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13022:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15580:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17961:338;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16233:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17150:133;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8326:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9184:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11759:588;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16519:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9225:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16652:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16381:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9268:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16794:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13510:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12355:193;;;;;;;;;;;;;:::i;:::-;;15159:407;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13284:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23756:332;;;;;;;;;;;;;:::i;:::-;;13108:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24219:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13635:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15989:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8189:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8139:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17418:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18481:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7962:119;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;18307:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13369:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8787:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14611:540;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24096:113;;;;;;;;;;;;;:::i;:::-;;8526:184;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;8985:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8741:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8354:73;8385:42;8354:73;:::o;8869:28::-;;;;:::o;7844:109::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13198:80::-;13246:13;13270:5;;;;;;;;;;;;;;;;;13263:12;;13198:80;:::o;8293:26::-;;;;;;;;;;;;;:::o;13808:159::-;13883:4;13900:37;13909:10;13921:7;13930:6;13900:8;:37::i;:::-;13955:4;13948:11;;13808:159;;;;:::o;16908:112::-;16953:7;7522:2;16998;:13;;;;:::i;:::-;16980:14;;:32;;;;:::i;:::-;16973:39;;16908:112;:::o;17030:::-;17086:7;17113:21;;17106:28;;17030:112;:::o;12901:115::-;12956:7;12982:1;7522:2;7585;:13;;;;:::i;:::-;7366;7568:30;;;;:::i;:::-;12971:12;12967:31;;;12987:8;;;12967:31;7522:2;7585;:13;;;;:::i;:::-;7366;7568:30;;;;:::i;:::-;12999:14;;12901:115;:::o;14297:306::-;14397:4;14453:17;14418:11;:19;14430:6;14418:19;;;;;;;;;;;;;;;:31;14438:10;14418:31;;;;;;;;;;;;;;;;:52;14414:126;;14522:6;14487:11;:19;14499:6;14487:19;;;;;;;;;;;;;;;:31;14507:10;14487:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;14414:126;14559:36;14569:6;14577:9;14588:6;14559:9;:36::i;:::-;14552:43;;14297:306;;;;;:::o;24402:408::-;24527:7;:14;24508:8;:15;:33;24500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24583:7;24578:225;24600:8;:15;24596:1;:19;;;24578:225;;;24670:7;24678:1;24670:10;;;;;;;;;;:::i;:::-;;;;;;;;24645:21;24655:10;24645:9;:21::i;:::-;:35;;24637:44;;;;;;24696:95;24714:10;24726:8;24735:1;24726:11;;;;;;;;;;:::i;:::-;;;;;;;;7522:2;24750;:13;;;;:::i;:::-;24739:7;24747:1;24739:10;;;;;;;;;;:::i;:::-;;;;;;;;:24;;;;:::i;:::-;24765:5;24772;24779;24786:4;24696:17;:95::i;:::-;;24617:3;;;;;:::i;:::-;;;;24578:225;;;;24402:408;;:::o;17297:113::-;9754:10;9744:20;;:6;;;;;;;;;;:20;;;9736:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;17384:8:::1;17367:14;;:25;;;;;;;;;;;;;;;;;;17297:113:::0;:::o;8090:42::-;8128:4;8090:42;:::o;8904:25::-;;;;:::o;8942:36::-;;;;:::o;13022:80::-;13074:5;7522:2;13083:16;;13022:80;:::o;15580:397::-;9754:10;9744:20;;:6;;;;;;;;;;:20;;;9736:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;8128:4:::1;15687:6;:21;;;;:65;;;;;8178:4;15729:7;:23;;;;15687:65;:117;;;;;8232:4;15773:11;:31;;;;15687:117;15679:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;15879:6;15860:9;:16;;;:25;;;;;;;;;;;;;;;;;;15916:7;15896:9;:17;;;:27;;;;;;;;;;;;;;;;;;15958:11;15934:9;:21;;;:35;;;;;;;;;;;;;;;;;;15580:397:::0;;;:::o;17961:338::-;9754:10;9744:20;;:6;;;;;;;;;;:20;;;9736:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;18175:16:::1;18155;7522:2;7585;:13;;;;:::i;:::-;7366;7568:30;;;;:::i;:::-;18145:26;;;;:::i;:::-;18144:47;;;;:::i;:::-;18128:13;:63;;;;18243:13;18226;7522:2;7585;:13;;;;:::i;:::-;7366;7568:30;;;;:::i;:::-;18216:23;;;;:::i;:::-;18215:41;;;;:::i;:::-;18202:10;:54;;;;18287:4;18267:17;:24;;;;17961:338:::0;;;;;:::o;16233:140::-;9754:10;9744:20;;:6;;;;;;;;;;:20;;;9736:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;16358:7:::1;16325:21;:30;16347:7;16325:30;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;16233:140:::0;;:::o;17150:133::-;17215:7;17242:33;;17235:40;;17150:133;:::o;8326:21::-;;;;;;;;;;;;;:::o;9184:34::-;;;;;;;;;;;;;:::o;11759:588::-;9754:10;9744:20;;:6;;;;;;;;;;:20;;;9736:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;11858:1:::1;11838:22;;:8;:22;;;;11830:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;8385:42;11945:16;;:8;:16;;;;11937:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;12038:34;12058:6;::::0;::::1;;;;;;;;12066:5;12038:19;:34::i;:::-;12083:35;12103:8;12113:4;12083:19;:35::i;:::-;12162:1;12142:17;12152:6;::::0;::::1;;;;;;;;12142:9;:17::i;:::-;:21;12139:99;;;12180:46;12190:6;::::0;::::1;;;;;;;;12198:8;12208:17;12218:6;::::0;::::1;;;;;;;;12208:9;:17::i;:::-;12180:9;:46::i;:::-;;12139:99;12267:8;12258:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;12320:8;12291:38;;12312:6;::::0;::::1;;;;;;;;12291:38;;;;;;;;;;;;11759:588:::0;:::o;16519:125::-;16584:4;16608:19;:28;16628:7;16608:28;;;;;;;;;;;;;;;;;;;;;;;;;16601:35;;16519:125;;;:::o;9225:36::-;;;;;;;;;;;;;:::o;16652:134::-;9754:10;9744:20;;:6;;;;;;;;;;:20;;;9736:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;16771:7:::1;16740:19;:28;16760:7;16740:28;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;16652:134:::0;;:::o;16381:130::-;16449:4;16473:21;:30;16495:7;16473:30;;;;;;;;;;;;;;;;;;;;;;;;;16466:37;;16381:130;;;:::o;9268:33::-;;;;;;;;;;;;;:::o;16794:106::-;16835:7;7522:2;16878;:13;;;;:::i;:::-;16862:12;;:30;;;;:::i;:::-;16855:37;;16794:106;:::o;13510:117::-;13576:7;13603;:16;13611:7;13603:16;;;;;;;;;;;;;;;;13596:23;;13510:117;;;:::o;12355:193::-;9754:10;9744:20;;:6;;;;;;;;;;:20;;;9736:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;12420:34:::1;12440:6;::::0;::::1;;;;;;;;12448:5;12420:19;:34::i;:::-;12482:1;12465:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;12537:1;12500:40;;12521:6;::::0;::::1;;;;;;;;12500:40;;;;;;;;;;;;12355:193::o:0;15159:407::-;9754:10;9744:20;;:6;;;;;;;;;;:20;;;9736:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;15251:5:::1;15240:16;;:7;:16;;;15236:323;;;15289:5;15273:7;:13;15281:4;15273:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;15236:323;;;15352:1;15331:17;;:22;15327:136;;15420:6;15400:17;;15382:15;:35;;;;:::i;:::-;:44;15374:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15327:136;15493:4;15477:7;:13;15485:4;15477:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;15532:15;15512:17;:35;;;;15236:323;15159:407:::0;;:::o;13284:79::-;13336:7;13354:6;;;;;;;;;;;13347:13;;13284:79;:::o;23756:332::-;9754:10;9744:20;;:6;;;;;;;;;;:20;;;9736:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;23818:14:::1;;;;;;;;;;;23817:15;23809:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;23880:16;;;;;;;;;;;23872:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;23963:4;23946:14;;:21;;;;;;;;;;;;;;;;;;24020:5;24015:1;23995:17;24005:6;;;;;;;;;;;23995:9;:17::i;:::-;:21;;;;:::i;:::-;23994:31;;;;:::i;:::-;23978:13;:47;;;;24075:5;24070:1;24050:17;24060:6;;;;;;;;;;;24050:9;:17::i;:::-;:21;;;;:::i;:::-;24049:31;;;;:::i;:::-;24036:10;:44;;;;23756:332::o:0;13108:84::-;13158:13;13182:7;;;;;;;;;;;;;;;;;13175:14;;13108:84;:::o;24219:175::-;24320:10;9754;9744:20;;:6;;;;;;;;;;:20;;;9736:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;24357:6:::1;24350:23;;;24374:3;24379:6;24350:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24342:44;;24219:175:::0;;;;;:::o;13635:165::-;13713:4;13730:40;13740:10;13752:9;13763:6;13730:9;:40::i;:::-;;13788:4;13781:11;;13635:165;;;;:::o;15989:230::-;9754:10;9744:20;;:6;;;;;;;;;;:20;;;9736:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;16106:6:::1;16089:7;:14;;;:23;;;;;;;;;;;;;;;;;;16138:4;16123:7;:12;;;:19;;;;;;;;;;;;;;;;;;16168:4;16153:7;:12;;;:19;;;;;;;;;;;;;;;;;;16207:4;16200;:11;;;;:::i;:::-;16183:7;:13;;;:28;;;;;;;;;;;;;;;;;;15989:230:::0;;;:::o;8189:47::-;8232:4;8189:47;:::o;8139:43::-;8178:4;8139:43;:::o;17418:197::-;9754:10;9744:20;;:6;;;;;;;;;;:20;;;9736:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;17572:35:::1;17536:33;:71;;;;17418:197:::0;:::o;18481:164::-;9754:10;9744:20;;:6;;;;;;;;;;:20;;;9736:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;18579:7:::1;18557:19;;:29;;;;;;;;;;;;;;;;;;18602:35;18629:7;18602:35;;;;;;:::i;:::-;;;;;;;;18481:164:::0;:::o;7962:119::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18307:166::-;9754:10;9744:20;;:6;;;;;;;;;;:20;;;9736:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;18416:6:::1;18395:11;:18;;;:27;;;;;;;;;;;;;;;;;;18460:4;18433:11;:16;;;:32;;;;;;;;;;;;;;;;;;18307:166:::0;;:::o;13369:133::-;13453:7;13471:11;:19;13483:6;13471:19;;;;;;;;;;;;;;;:28;13491:7;13471:28;;;;;;;;;;;;;;;;13464:35;;13369:133;;;;:::o;8787:44::-;;;;:::o;14611:540::-;9754:10;9744:20;;:6;;;;;;;;;;:20;;;9736:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;14680:20:::1;14713:9;14680:43;;14734:16;14764:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14753:40;;;14802:4;14809:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14753:74;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14734:93;;14862:1;14842:22;;:8;:22;;;14838:200;;;14901:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14890:43;;;14942:4;14949:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14890:77;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14881:6;;:86;;;;;;;;;;;;;;;;;;14838:200;;;15018:8;15009:6;;:17;;;;;;;;;;;;;;;;;;14838:200;15060:10;15048:9;;:22;;;;;;;;;;;;;;;;;;15081:62;15098:4;15113:9;;;;;;;;;;;15125:17;15081:8;:62::i;:::-;14669:482;;14611:540:::0;:::o;24096:113::-;9754:10;9744:20;;:6;;;;;;;;;;:20;;;9736:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;24162:6:::1;::::0;::::1;;;;;;;;24154:24;;:47;24179:21;24154:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24096:113::o:0;8526:184::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8985:53::-;;;;:::o;8741:39::-;;;;;;;;;;;;;:::o;13975:310::-;14088:1;14070:20;;:6;:20;;;;14062:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;14152:1;14133:21;;:7;:21;;;;14125:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;14222:6;14191:11;:19;14203:6;14191:19;;;;;;;;;;;;;;;:28;14211:7;14191:28;;;;;;;;;;;;;;;:37;;;;14261:7;14244:33;;14253:6;14244:33;;;14270:6;14244:33;;;;;;:::i;:::-;;;;;;;;13975:310;;;:::o;19019:2742::-;19098:4;19139:1;19123:18;;:4;:18;;;;19115:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19216:1;19202:16;;:2;:16;;;;19194:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19286:1;19277:6;:10;19269:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19344:8;19371:9;19399:10;19432:7;:13;19440:4;19432:13;;;;;;;;;;;;;;;;;;;;;;;;;19428:162;;;19468:4;19462:10;;19428:162;;;19494:7;:11;19502:2;19494:11;;;;;;;;;;;;;;;;;;;;;;;;;19490:100;;;19529:4;19522:11;;19490:100;;;19574:4;19566:12;;19490:100;19428:162;19603:20;19614:4;19620:2;19603:10;:20::i;:::-;19600:641;;;19644:14;;;;;;;;;;;19640:89;;19679:34;;;;;;;;;;:::i;:::-;;;;;;;;19640:89;19746:3;:11;;;;19753:4;19746:11;19743:231;;;19782:21;:27;19804:4;19782:27;;;;;;;;;;;;;;;;;;;;;;;;;19781:28;:58;;;;;19814:21;:25;19836:2;19814:25;;;;;;;;;;;;;;;;;;;;;;;;;19813:26;19781:58;19777:182;;;19882:12;;19872:6;:22;;19864:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;19777:182;19743:231;20005:9;;;;;;;;;;;19991:24;;:2;:24;;;;:33;;;;;20020:4;20019:5;19991:33;19988:242;;;20050:21;:25;20072:2;20050:25;;;;;;;;;;;;;;;;;;;;;;;;;20045:170;;20134:14;;20124:6;20108:13;20118:2;20108:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;20100:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;20045:170;19988:242;19600:641;20253:12;20268:4;20253:19;;20286;:25;20306:4;20286:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;20315:19;:23;20335:2;20315:23;;;;;;;;;;;;;;;;;;;;;;;;;20286:52;20283:98;;;20364:5;20354:15;;20283:98;20397:4;20393:1271;;;20433:6;;;;;;;;;;;20432:7;:47;;;;;20460:19;;;;;;;;;;;20432:47;20428:539;;;20549:15;20529:17;;20518:8;;:28;;;;:::i;:::-;:46;20514:436;;;20589:28;20620:24;20638:4;20620:9;:24::i;:::-;20589:55;;20695:13;;20671:20;:37;20667:264;;20764:10;;20740:20;:34;20737:77;;20801:10;;20778:33;;20737:77;20840:14;:12;:14::i;:::-;20892:15;20881:8;:26;;;;20667:264;20566:384;20514:436;20428:539;20995:15;21013:21;20995:39;;21053:14;;;;;;;;;;;:37;;;;;21071:19;;;;;;;;;;;21053:37;21049:525;;;21144:25;21162:6;21144:17;:25::i;:::-;21119:21;;:50;;;;;;;:::i;:::-;;;;;;;;21196:21;21254:33;;21245:4;21220:21;;:30;;;;:::i;:::-;:68;;;;:::i;:::-;21196:92;;21334:7;21318:13;:23;21315:236;;;21373:28;21387:13;21373;:28::i;:::-;21315:236;;;21522:1;21498:21;:25;;;;21315:236;21092:482;21049:525;20413:1251;20393:1271;21681:62;21699:4;21705:2;21709:6;21717:7;21726:3;21731:4;21737:5;21681:17;:62::i;:::-;21674:69;;;;;;19019:2742;;;;;:::o;24818:632::-;24952:4;24974:16;;;;;;;;;;;24969:221;;25007:28;25026:4;25032:2;25007:18;:28::i;:::-;25055:16;;;;;;;;;;;25054:17;:41;;;;;25075:20;25086:4;25092:2;25075:10;:20::i;:::-;25054:41;25050:129;;;25116:47;;;;;;;;;;:::i;:::-;;;;;;;;25050:129;24969:221;25231:6;25214:7;:13;25222:4;25214:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;25248:22;25274:7;25273:55;;25322:6;25273:55;;;25285:34;25295:4;25301:3;25306:4;25312:6;25285:9;:34::i;:::-;25273:55;25248:80;;25354:14;25339:7;:11;25347:2;25339:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;25401:2;25386:34;;25395:4;25386:34;;;25405:14;25386:34;;;;;;:::i;:::-;;;;;;;;25438:4;25431:11;;;24818:632;;;;;;;;;:::o;18653:358::-;18722:4;18754:6;;;;;;;;;;;18746:14;;:4;:14;;;;:43;;;;;18783:6;;;;;;;;;;18777:12;;:2;:12;;;;18746:43;:79;;;;;18819:6;;;;;;;;;;18806:19;;:9;:19;;;;18746:79;:118;;;;;18843:17;:21;18861:2;18843:21;;;;;;;;;;;;;;;;;;;;;;;;;18842:22;18746:118;:159;;;;;18882:17;:23;18900:4;18882:23;;;;;;;;;;;;;;;;;;;;;;;;;18881:24;18746:159;:186;;;;;8385:42;18922:10;;:2;:10;;;;18746:186;:219;;;;;18963:1;18949:16;;:2;:16;;;;18746:219;:257;;;;;18998:4;18982:21;;:4;:21;;;;18746:257;18739:264;;18653:358;;;;:::o;21769:854::-;9647:4;9638:6;;:13;;;;;;;;;;;;;;;;;;21825:20:::1;21848:10;;21825:33;;21869:21;21907:1;21893:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21869:40;;21938:4;21920;21925:1;21920:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;21964:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21954:4;21959:1;21954:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;::::0;::::1;21993:21;22017;21993:45;;22051:9;;;;;;;;;;;:60;;;22126:12;22153:1;22169:4;22196;22216:15;22051:193;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22255:17;22300:13;22275:21;:39;;;;:::i;:::-;22255:59;;22325:26;22384:7;:13;;;;;;;;;;;;22354:44;;22367:7;:12;;;;;;;;;;;;22354:26;;:9;:26;;;;:::i;:::-;:44;;;;:::i;:::-;22325:73;;22420:21;22478:11;:16;;;;;;;;;;;;22470:30;;22508:18;22533:5;22470:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22419:124;;;22562:16;22554:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;21814:809;;;;;;9683:5:::0;9674:6;;:14;;;;;;;;;;;;;;;;;;21769:854::o;17624:329::-;17693:7;17713:21;17751:1;17737:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17713:40;;17784:4;17766;17771:1;17766:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17810:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17800:4;17805:1;17800:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;17839:21;17863:9;;;;;;;;;;;:23;;;17887:11;17900:4;17863:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17839:66;;17925:7;17933:1;17925:10;;;;;;;;:::i;:::-;;;;;;;;17918:17;;;;17624:329;;;:::o;22633:135::-;9647:4;9638:6;;:13;;;;;;;;;;;;;;;;;;22713:1:::1;22704:6;:10;22700:61;;;22728:24;22745:6;22728:16;:24::i;:::-;22700:61;9683:5:::0;9674:6;;:14;;;;;;;;;;;;;;;;;;22633:135;:::o;23360:388::-;23443:16;;;;;;;;;;;23442:17;23434:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;23515:20;23526:4;23532:2;23515:10;:20::i;:::-;23514:21;:37;;;;;23545:6;;;;;;;;;;;23539:12;;:2;:12;;;23514:37;23510:231;;;23594:4;23568:17;:23;23586:4;23568:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;23632:4;23613:16;;:23;;;;;;;;;;;;;;;;;;23673:4;23651:19;;:26;;;;;;;;;;;;;;;;;;23697:32;23724:4;23697:32;;;;;;:::i;:::-;;;;;;;;23510:231;23360:388;;:::o;25458:902::-;25546:7;25566:18;25599:3;25595:205;;;25632:9;:16;;;;;;;;;;;;25619:29;;;;25595:205;;;25670:4;25666:134;;;25704:9;:17;;;;;;;;;;;;25691:30;;;;25666:134;;;25767:9;:21;;;;;;;;;;;;25754:34;;;;25666:134;25595:205;25812:17;8279:5;25841:10;25832:6;:19;;;;:::i;:::-;:38;;;;:::i;:::-;25812:58;;25881:19;25935:7;:13;;;;;;;;;;;;25903:46;;25916:7;:14;;;;;;;;;;;;25904:26;;:9;:26;;;;:::i;:::-;25903:46;;;;:::i;:::-;25881:68;;25978:1;25964:11;:15;25960:237;;;26009:11;25996:24;;;;;:::i;:::-;;;26035:19;26057:11;:18;;;;;;;;;;;;26035:40;;26114:11;26090:7;:20;26098:11;26090:20;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;26160:11;26145:40;;26154:4;26145:40;;;26173:11;26145:40;;;;;;:::i;:::-;;;;;;;;25981:216;25960:237;26233:9;26207:7;:22;26223:4;26207:22;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;26281:4;26258:40;;26267:4;26258:40;;;26288:9;26258:40;;;;;;:::i;:::-;;;;;;;;26340:11;26328:9;:23;;;;:::i;:::-;26318:6;:34;;;;:::i;:::-;26311:41;;;;;25458:902;;;;;;:::o;22805:543::-;22926:21;22964:1;22950:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22926:40;;22987:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22977:4;22982:1;22977:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;23032:4;23014;23019:1;23014:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23074:9;;;;;;;;;;;:60;;;23142:6;23164:1;23211:4;8385:42;23265:15;23074:218;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23310:30;23327:6;23335:4;23310:30;;;;;;;:::i;:::-;;;;;;;;22855:493;22805:543;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:77::-;630:7;659:5;648:16;;593:77;;;:::o;676:118::-;763:24;781:5;763:24;:::i;:::-;758:3;751:37;676:118;;:::o;800:222::-;893:4;931:2;920:9;916:18;908:26;;944:71;1012:1;1001:9;997:17;988:6;944:71;:::i;:::-;800:222;;;;:::o;1028:89::-;1064:7;1104:6;1097:5;1093:18;1082:29;;1028:89;;;:::o;1123:115::-;1208:23;1225:5;1208:23;:::i;:::-;1203:3;1196:36;1123:115;;:::o;1244:430::-;1387:4;1425:2;1414:9;1410:18;1402:26;;1438:69;1504:1;1493:9;1489:17;1480:6;1438:69;:::i;:::-;1517:70;1583:2;1572:9;1568:18;1559:6;1517:70;:::i;:::-;1597;1663:2;1652:9;1648:18;1639:6;1597:70;:::i;:::-;1244:430;;;;;;:::o;1680:99::-;1732:6;1766:5;1760:12;1750:22;;1680:99;;;:::o;1785:169::-;1869:11;1903:6;1898:3;1891:19;1943:4;1938:3;1934:14;1919:29;;1785:169;;;;:::o;1960:307::-;2028:1;2038:113;2052:6;2049:1;2046:13;2038:113;;;2137:1;2132:3;2128:11;2122:18;2118:1;2113:3;2109:11;2102:39;2074:2;2071:1;2067:10;2062:15;;2038:113;;;2169:6;2166:1;2163:13;2160:101;;;2249:1;2240:6;2235:3;2231:16;2224:27;2160:101;2009:258;1960:307;;;:::o;2273:102::-;2314:6;2365:2;2361:7;2356:2;2349:5;2345:14;2341:28;2331:38;;2273:102;;;:::o;2381:364::-;2469:3;2497:39;2530:5;2497:39;:::i;:::-;2552:71;2616:6;2611:3;2552:71;:::i;:::-;2545:78;;2632:52;2677:6;2672:3;2665:4;2658:5;2654:16;2632:52;:::i;:::-;2709:29;2731:6;2709:29;:::i;:::-;2704:3;2700:39;2693:46;;2473:272;2381:364;;;;:::o;2751:313::-;2864:4;2902:2;2891:9;2887:18;2879:26;;2951:9;2945:4;2941:20;2937:1;2926:9;2922:17;2915:47;2979:78;3052:4;3043:6;2979:78;:::i;:::-;2971:86;;2751:313;;;;:::o;3070:60::-;3098:3;3119:5;3112:12;;3070:60;;;:::o;3136:142::-;3186:9;3219:53;3237:34;3246:24;3264:5;3246:24;:::i;:::-;3237:34;:::i;:::-;3219:53;:::i;:::-;3206:66;;3136:142;;;:::o;3284:126::-;3334:9;3367:37;3398:5;3367:37;:::i;:::-;3354:50;;3284:126;;;:::o;3416:143::-;3483:9;3516:37;3547:5;3516:37;:::i;:::-;3503:50;;3416:143;;;:::o;3565:165::-;3669:54;3717:5;3669:54;:::i;:::-;3664:3;3657:67;3565:165;;:::o;3736:256::-;3846:4;3884:2;3873:9;3869:18;3861:26;;3897:88;3982:1;3971:9;3967:17;3958:6;3897:88;:::i;:::-;3736:256;;;;:::o;3998:75::-;4031:6;4064:2;4058:9;4048:19;;3998:75;:::o;4079:117::-;4188:1;4185;4178:12;4202:117;4311:1;4308;4301:12;4325:122;4398:24;4416:5;4398:24;:::i;:::-;4391:5;4388:35;4378:63;;4437:1;4434;4427:12;4378:63;4325:122;:::o;4453:139::-;4499:5;4537:6;4524:20;4515:29;;4553:33;4580:5;4553:33;:::i;:::-;4453:139;;;;:::o;4598:122::-;4671:24;4689:5;4671:24;:::i;:::-;4664:5;4661:35;4651:63;;4710:1;4707;4700:12;4651:63;4598:122;:::o;4726:139::-;4772:5;4810:6;4797:20;4788:29;;4826:33;4853:5;4826:33;:::i;:::-;4726:139;;;;:::o;4871:474::-;4939:6;4947;4996:2;4984:9;4975:7;4971:23;4967:32;4964:119;;;5002:79;;:::i;:::-;4964:119;5122:1;5147:53;5192:7;5183:6;5172:9;5168:22;5147:53;:::i;:::-;5137:63;;5093:117;5249:2;5275:53;5320:7;5311:6;5300:9;5296:22;5275:53;:::i;:::-;5265:63;;5220:118;4871:474;;;;;:::o;5351:90::-;5385:7;5428:5;5421:13;5414:21;5403:32;;5351:90;;;:::o;5447:109::-;5528:21;5543:5;5528:21;:::i;:::-;5523:3;5516:34;5447:109;;:::o;5562:210::-;5649:4;5687:2;5676:9;5672:18;5664:26;;5700:65;5762:1;5751:9;5747:17;5738:6;5700:65;:::i;:::-;5562:210;;;;:::o;5778:619::-;5855:6;5863;5871;5920:2;5908:9;5899:7;5895:23;5891:32;5888:119;;;5926:79;;:::i;:::-;5888:119;6046:1;6071:53;6116:7;6107:6;6096:9;6092:22;6071:53;:::i;:::-;6061:63;;6017:117;6173:2;6199:53;6244:7;6235:6;6224:9;6220:22;6199:53;:::i;:::-;6189:63;;6144:118;6301:2;6327:53;6372:7;6363:6;6352:9;6348:22;6327:53;:::i;:::-;6317:63;;6272:118;5778:619;;;;;:::o;6403:117::-;6512:1;6509;6502:12;6526:180;6574:77;6571:1;6564:88;6671:4;6668:1;6661:15;6695:4;6692:1;6685:15;6712:281;6795:27;6817:4;6795:27;:::i;:::-;6787:6;6783:40;6925:6;6913:10;6910:22;6889:18;6877:10;6874:34;6871:62;6868:88;;;6936:18;;:::i;:::-;6868:88;6976:10;6972:2;6965:22;6755:238;6712:281;;:::o;6999:129::-;7033:6;7060:20;;:::i;:::-;7050:30;;7089:33;7117:4;7109:6;7089:33;:::i;:::-;6999:129;;;:::o;7134:311::-;7211:4;7301:18;7293:6;7290:30;7287:56;;;7323:18;;:::i;:::-;7287:56;7373:4;7365:6;7361:17;7353:25;;7433:4;7427;7423:15;7415:23;;7134:311;;;:::o;7451:117::-;7560:1;7557;7550:12;7591:710;7687:5;7712:81;7728:64;7785:6;7728:64;:::i;:::-;7712:81;:::i;:::-;7703:90;;7813:5;7842:6;7835:5;7828:21;7876:4;7869:5;7865:16;7858:23;;7929:4;7921:6;7917:17;7909:6;7905:30;7958:3;7950:6;7947:15;7944:122;;;7977:79;;:::i;:::-;7944:122;8092:6;8075:220;8109:6;8104:3;8101:15;8075:220;;;8184:3;8213:37;8246:3;8234:10;8213:37;:::i;:::-;8208:3;8201:50;8280:4;8275:3;8271:14;8264:21;;8151:144;8135:4;8130:3;8126:14;8119:21;;8075:220;;;8079:21;7693:608;;7591:710;;;;;:::o;8324:370::-;8395:5;8444:3;8437:4;8429:6;8425:17;8421:27;8411:122;;8452:79;;:::i;:::-;8411:122;8569:6;8556:20;8594:94;8684:3;8676:6;8669:4;8661:6;8657:17;8594:94;:::i;:::-;8585:103;;8401:293;8324:370;;;;:::o;8700:311::-;8777:4;8867:18;8859:6;8856:30;8853:56;;;8889:18;;:::i;:::-;8853:56;8939:4;8931:6;8927:17;8919:25;;8999:4;8993;8989:15;8981:23;;8700:311;;;:::o;9034:710::-;9130:5;9155:81;9171:64;9228:6;9171:64;:::i;:::-;9155:81;:::i;:::-;9146:90;;9256:5;9285:6;9278:5;9271:21;9319:4;9312:5;9308:16;9301:23;;9372:4;9364:6;9360:17;9352:6;9348:30;9401:3;9393:6;9390:15;9387:122;;;9420:79;;:::i;:::-;9387:122;9535:6;9518:220;9552:6;9547:3;9544:15;9518:220;;;9627:3;9656:37;9689:3;9677:10;9656:37;:::i;:::-;9651:3;9644:50;9723:4;9718:3;9714:14;9707:21;;9594:144;9578:4;9573:3;9569:14;9562:21;;9518:220;;;9522:21;9136:608;;9034:710;;;;;:::o;9767:370::-;9838:5;9887:3;9880:4;9872:6;9868:17;9864:27;9854:122;;9895:79;;:::i;:::-;9854:122;10012:6;9999:20;10037:94;10127:3;10119:6;10112:4;10104:6;10100:17;10037:94;:::i;:::-;10028:103;;9844:293;9767:370;;;;:::o;10143:894::-;10261:6;10269;10318:2;10306:9;10297:7;10293:23;10289:32;10286:119;;;10324:79;;:::i;:::-;10286:119;10472:1;10461:9;10457:17;10444:31;10502:18;10494:6;10491:30;10488:117;;;10524:79;;:::i;:::-;10488:117;10629:78;10699:7;10690:6;10679:9;10675:22;10629:78;:::i;:::-;10619:88;;10415:302;10784:2;10773:9;10769:18;10756:32;10815:18;10807:6;10804:30;10801:117;;;10837:79;;:::i;:::-;10801:117;10942:78;11012:7;11003:6;10992:9;10988:22;10942:78;:::i;:::-;10932:88;;10727:303;10143:894;;;;;:::o;11043:116::-;11113:21;11128:5;11113:21;:::i;:::-;11106:5;11103:32;11093:60;;11149:1;11146;11139:12;11093:60;11043:116;:::o;11165:133::-;11208:5;11246:6;11233:20;11224:29;;11262:30;11286:5;11262:30;:::i;:::-;11165:133;;;;:::o;11304:323::-;11360:6;11409:2;11397:9;11388:7;11384:23;11380:32;11377:119;;;11415:79;;:::i;:::-;11377:119;11535:1;11560:50;11602:7;11593:6;11582:9;11578:22;11560:50;:::i;:::-;11550:60;;11506:114;11304:323;;;;:::o;11633:86::-;11668:7;11708:4;11701:5;11697:16;11686:27;;11633:86;;;:::o;11725:112::-;11808:22;11824:5;11808:22;:::i;:::-;11803:3;11796:35;11725:112;;:::o;11843:214::-;11932:4;11970:2;11959:9;11955:18;11947:26;;11983:67;12047:1;12036:9;12032:17;12023:6;11983:67;:::i;:::-;11843:214;;;;:::o;12063:120::-;12135:23;12152:5;12135:23;:::i;:::-;12128:5;12125:34;12115:62;;12173:1;12170;12163:12;12115:62;12063:120;:::o;12189:137::-;12234:5;12272:6;12259:20;12250:29;;12288:32;12314:5;12288:32;:::i;:::-;12189:137;;;;:::o;12332:613::-;12406:6;12414;12422;12471:2;12459:9;12450:7;12446:23;12442:32;12439:119;;;12477:79;;:::i;:::-;12439:119;12597:1;12622:52;12666:7;12657:6;12646:9;12642:22;12622:52;:::i;:::-;12612:62;;12568:116;12723:2;12749:52;12793:7;12784:6;12773:9;12769:22;12749:52;:::i;:::-;12739:62;;12694:117;12850:2;12876:52;12920:7;12911:6;12900:9;12896:22;12876:52;:::i;:::-;12866:62;;12821:117;12332:613;;;;;:::o;12951:911::-;13046:6;13054;13062;13070;13078;13127:3;13115:9;13106:7;13102:23;13098:33;13095:120;;;13134:79;;:::i;:::-;13095:120;13254:1;13279:53;13324:7;13315:6;13304:9;13300:22;13279:53;:::i;:::-;13269:63;;13225:117;13381:2;13407:53;13452:7;13443:6;13432:9;13428:22;13407:53;:::i;:::-;13397:63;;13352:118;13509:2;13535:53;13580:7;13571:6;13560:9;13556:22;13535:53;:::i;:::-;13525:63;;13480:118;13637:2;13663:53;13708:7;13699:6;13688:9;13684:22;13663:53;:::i;:::-;13653:63;;13608:118;13765:3;13792:53;13837:7;13828:6;13817:9;13813:22;13792:53;:::i;:::-;13782:63;;13736:119;12951:911;;;;;;;;:::o;13868:468::-;13933:6;13941;13990:2;13978:9;13969:7;13965:23;13961:32;13958:119;;;13996:79;;:::i;:::-;13958:119;14116:1;14141:53;14186:7;14177:6;14166:9;14162:22;14141:53;:::i;:::-;14131:63;;14087:117;14243:2;14269:50;14311:7;14302:6;14291:9;14287:22;14269:50;:::i;:::-;14259:60;;14214:115;13868:468;;;;;:::o;14342:329::-;14401:6;14450:2;14438:9;14429:7;14425:23;14421:32;14418:119;;;14456:79;;:::i;:::-;14418:119;14576:1;14601:53;14646:7;14637:6;14626:9;14622:22;14601:53;:::i;:::-;14591:63;;14547:117;14342:329;;;;:::o;14677:::-;14736:6;14785:2;14773:9;14764:7;14760:23;14756:32;14753:119;;;14791:79;;:::i;:::-;14753:119;14911:1;14936:53;14981:7;14972:6;14961:9;14957:22;14936:53;:::i;:::-;14926:63;;14882:117;14677:329;;;;:::o;15012:537::-;15181:4;15219:3;15208:9;15204:19;15196:27;;15233:69;15299:1;15288:9;15284:17;15275:6;15233:69;:::i;:::-;15312:70;15378:2;15367:9;15363:18;15354:6;15312:70;:::i;:::-;15392;15458:2;15447:9;15443:18;15434:6;15392:70;:::i;:::-;15472;15538:2;15527:9;15523:18;15514:6;15472:70;:::i;:::-;15012:537;;;;;;;:::o;15555:104::-;15600:7;15629:24;15647:5;15629:24;:::i;:::-;15618:35;;15555:104;;;:::o;15665:138::-;15746:32;15772:5;15746:32;:::i;:::-;15739:5;15736:43;15726:71;;15793:1;15790;15783:12;15726:71;15665:138;:::o;15809:155::-;15863:5;15901:6;15888:20;15879:29;;15917:41;15952:5;15917:41;:::i;:::-;15809:155;;;;:::o;15970:490::-;16046:6;16054;16103:2;16091:9;16082:7;16078:23;16074:32;16071:119;;;16109:79;;:::i;:::-;16071:119;16229:1;16254:53;16299:7;16290:6;16279:9;16275:22;16254:53;:::i;:::-;16244:63;;16200:117;16356:2;16382:61;16435:7;16426:6;16415:9;16411:22;16382:61;:::i;:::-;16372:71;;16327:126;15970:490;;;;;:::o;16466:474::-;16534:6;16542;16591:2;16579:9;16570:7;16566:23;16562:32;16559:119;;;16597:79;;:::i;:::-;16559:119;16717:1;16742:53;16787:7;16778:6;16767:9;16763:22;16742:53;:::i;:::-;16732:63;;16688:117;16844:2;16870:53;16915:7;16906:6;16895:9;16891:22;16870:53;:::i;:::-;16860:63;;16815:118;16466:474;;;;;:::o;16946:142::-;17049:32;17075:5;17049:32;:::i;:::-;17044:3;17037:45;16946:142;;:::o;17094:364::-;17231:4;17269:2;17258:9;17254:18;17246:26;;17282:71;17350:1;17339:9;17335:17;17326:6;17282:71;:::i;:::-;17363:88;17447:2;17436:9;17432:18;17423:6;17363:88;:::i;:::-;17094:364;;;;;:::o;17464:180::-;17512:77;17509:1;17502:88;17609:4;17606:1;17599:15;17633:4;17630:1;17623:15;17650:102;17692:8;17739:5;17736:1;17732:13;17711:34;;17650:102;;;:::o;17758:848::-;17819:5;17826:4;17850:6;17841:15;;17874:5;17865:14;;17888:712;17909:1;17899:8;17896:15;17888:712;;;18004:4;17999:3;17995:14;17989:4;17986:24;17983:50;;;18013:18;;:::i;:::-;17983:50;18063:1;18053:8;18049:16;18046:451;;;18478:4;18471:5;18467:16;18458:25;;18046:451;18528:4;18522;18518:15;18510:23;;18558:32;18581:8;18558:32;:::i;:::-;18546:44;;17888:712;;;17758:848;;;;;;;:::o;18612:1073::-;18666:5;18857:8;18847:40;;18878:1;18869:10;;18880:5;;18847:40;18906:4;18896:36;;18923:1;18914:10;;18925:5;;18896:36;18992:4;19040:1;19035:27;;;;19076:1;19071:191;;;;18985:277;;19035:27;19053:1;19044:10;;19055:5;;;19071:191;19116:3;19106:8;19103:17;19100:43;;;19123:18;;:::i;:::-;19100:43;19172:8;19169:1;19165:16;19156:25;;19207:3;19200:5;19197:14;19194:40;;;19214:18;;:::i;:::-;19194:40;19247:5;;;18985:277;;19371:2;19361:8;19358:16;19352:3;19346:4;19343:13;19339:36;19321:2;19311:8;19308:16;19303:2;19297:4;19294:12;19290:35;19274:111;19271:246;;;19427:8;19421:4;19417:19;19408:28;;19462:3;19455:5;19452:14;19449:40;;;19469:18;;:::i;:::-;19449:40;19502:5;;19271:246;19542:42;19580:3;19570:8;19564:4;19561:1;19542:42;:::i;:::-;19527:57;;;;19616:4;19611:3;19607:14;19600:5;19597:25;19594:51;;;19625:18;;:::i;:::-;19594:51;19674:4;19667:5;19663:16;19654:25;;18612:1073;;;;;;:::o;19691:281::-;19749:5;19773:23;19791:4;19773:23;:::i;:::-;19765:31;;19817:25;19833:8;19817:25;:::i;:::-;19805:37;;19861:104;19898:66;19888:8;19882:4;19861:104;:::i;:::-;19852:113;;19691:281;;;;:::o;19978:180::-;20026:77;20023:1;20016:88;20123:4;20120:1;20113:15;20147:4;20144:1;20137:15;20164:185;20204:1;20221:20;20239:1;20221:20;:::i;:::-;20216:25;;20255:20;20273:1;20255:20;:::i;:::-;20250:25;;20294:1;20284:35;;20299:18;;:::i;:::-;20284:35;20341:1;20338;20334:9;20329:14;;20164:185;;;;:::o;20355:348::-;20395:7;20418:20;20436:1;20418:20;:::i;:::-;20413:25;;20452:20;20470:1;20452:20;:::i;:::-;20447:25;;20640:1;20572:66;20568:74;20565:1;20562:81;20557:1;20550:9;20543:17;20539:105;20536:131;;;20647:18;;:::i;:::-;20536:131;20695:1;20692;20688:9;20677:20;;20355:348;;;;:::o;20709:191::-;20749:4;20769:20;20787:1;20769:20;:::i;:::-;20764:25;;20803:20;20821:1;20803:20;:::i;:::-;20798:25;;20842:1;20839;20836:8;20833:34;;;20847:18;;:::i;:::-;20833:34;20892:1;20889;20885:9;20877:17;;20709:191;;;;:::o;20906:171::-;21046:23;21042:1;21034:6;21030:14;21023:47;20906:171;:::o;21083:366::-;21225:3;21246:67;21310:2;21305:3;21246:67;:::i;:::-;21239:74;;21322:93;21411:3;21322:93;:::i;:::-;21440:2;21435:3;21431:12;21424:19;;21083:366;;;:::o;21455:419::-;21621:4;21659:2;21648:9;21644:18;21636:26;;21708:9;21702:4;21698:20;21694:1;21683:9;21679:17;21672:47;21736:131;21862:4;21736:131;:::i;:::-;21728:139;;21455:419;;;:::o;21880:180::-;21928:77;21925:1;21918:88;22025:4;22022:1;22015:15;22049:4;22046:1;22039:15;22066:167;22103:3;22126:22;22142:5;22126:22;:::i;:::-;22117:31;;22170:4;22163:5;22160:15;22157:41;;;22178:18;;:::i;:::-;22157:41;22225:1;22218:5;22214:13;22207:20;;22066:167;;;:::o;22239:::-;22379:19;22375:1;22367:6;22363:14;22356:43;22239:167;:::o;22412:366::-;22554:3;22575:67;22639:2;22634:3;22575:67;:::i;:::-;22568:74;;22651:93;22740:3;22651:93;:::i;:::-;22769:2;22764:3;22760:12;22753:19;;22412:366;;;:::o;22784:419::-;22950:4;22988:2;22977:9;22973:18;22965:26;;23037:9;23031:4;23027:20;23023:1;23012:9;23008:17;23001:47;23065:131;23191:4;23065:131;:::i;:::-;23057:139;;22784:419;;;:::o;23209:173::-;23349:25;23345:1;23337:6;23333:14;23326:49;23209:173;:::o;23388:366::-;23530:3;23551:67;23615:2;23610:3;23551:67;:::i;:::-;23544:74;;23627:93;23716:3;23627:93;:::i;:::-;23745:2;23740:3;23736:12;23729:19;;23388:366;;;:::o;23760:419::-;23926:4;23964:2;23953:9;23949:18;23941:26;;24013:9;24007:4;24003:20;23999:1;23988:9;23984:17;23977:47;24041:131;24167:4;24041:131;:::i;:::-;24033:139;;23760:419;;;:::o;24185:248::-;24325:34;24321:1;24313:6;24309:14;24302:58;24394:31;24389:2;24381:6;24377:15;24370:56;24185:248;:::o;24439:366::-;24581:3;24602:67;24666:2;24661:3;24602:67;:::i;:::-;24595:74;;24678:93;24767:3;24678:93;:::i;:::-;24796:2;24791:3;24787:12;24780:19;;24439:366;;;:::o;24811:419::-;24977:4;25015:2;25004:9;25000:18;24992:26;;25064:9;25058:4;25054:20;25050:1;25039:9;25035:17;25028:47;25092:131;25218:4;25092:131;:::i;:::-;25084:139;;24811:419;;;:::o;25236:166::-;25376:18;25372:1;25364:6;25360:14;25353:42;25236:166;:::o;25408:366::-;25550:3;25571:67;25635:2;25630:3;25571:67;:::i;:::-;25564:74;;25647:93;25736:3;25647:93;:::i;:::-;25765:2;25760:3;25756:12;25749:19;;25408:366;;;:::o;25780:419::-;25946:4;25984:2;25973:9;25969:18;25961:26;;26033:9;26027:4;26023:20;26019:1;26008:9;26004:17;25997:47;26061:131;26187:4;26061:131;:::i;:::-;26053:139;;25780:419;;;:::o;26205:174::-;26345:26;26341:1;26333:6;26329:14;26322:50;26205:174;:::o;26385:366::-;26527:3;26548:67;26612:2;26607:3;26548:67;:::i;:::-;26541:74;;26624:93;26713:3;26624:93;:::i;:::-;26742:2;26737:3;26733:12;26726:19;;26385:366;;;:::o;26757:419::-;26923:4;26961:2;26950:9;26946:18;26938:26;;27010:9;27004:4;27000:20;26996:1;26985:9;26981:17;26974:47;27038:131;27164:4;27038:131;:::i;:::-;27030:139;;26757:419;;;:::o;27182:174::-;27322:26;27318:1;27310:6;27306:14;27299:50;27182:174;:::o;27362:366::-;27504:3;27525:67;27589:2;27584:3;27525:67;:::i;:::-;27518:74;;27601:93;27690:3;27601:93;:::i;:::-;27719:2;27714:3;27710:12;27703:19;;27362:366;;;:::o;27734:419::-;27900:4;27938:2;27927:9;27923:18;27915:26;;27987:9;27981:4;27977:20;27973:1;27962:9;27958:17;27951:47;28015:131;28141:4;28015:131;:::i;:::-;28007:139;;27734:419;;;:::o;28159:332::-;28280:4;28318:2;28307:9;28303:18;28295:26;;28331:71;28399:1;28388:9;28384:17;28375:6;28331:71;:::i;:::-;28412:72;28480:2;28469:9;28465:18;28456:6;28412:72;:::i;:::-;28159:332;;;;;:::o;28497:137::-;28551:5;28582:6;28576:13;28567:22;;28598:30;28622:5;28598:30;:::i;:::-;28497:137;;;;:::o;28640:345::-;28707:6;28756:2;28744:9;28735:7;28731:23;28727:32;28724:119;;;28762:79;;:::i;:::-;28724:119;28882:1;28907:61;28960:7;28951:6;28940:9;28936:22;28907:61;:::i;:::-;28897:71;;28853:125;28640:345;;;;:::o;28991:242::-;29030:3;29049:19;29066:1;29049:19;:::i;:::-;29044:24;;29082:19;29099:1;29082:19;:::i;:::-;29077:24;;29175:1;29167:6;29163:14;29160:1;29157:21;29154:47;;;29181:18;;:::i;:::-;29154:47;29225:1;29222;29218:9;29211:16;;28991:242;;;;:::o;29239:143::-;29296:5;29327:6;29321:13;29312:22;;29343:33;29370:5;29343:33;:::i;:::-;29239:143;;;;:::o;29388:351::-;29458:6;29507:2;29495:9;29486:7;29482:23;29478:32;29475:119;;;29513:79;;:::i;:::-;29475:119;29633:1;29658:64;29714:7;29705:6;29694:9;29690:22;29658:64;:::i;:::-;29648:74;;29604:128;29388:351;;;;:::o;29745:332::-;29866:4;29904:2;29893:9;29889:18;29881:26;;29917:71;29985:1;29974:9;29970:17;29961:6;29917:71;:::i;:::-;29998:72;30066:2;30055:9;30051:18;30042:6;29998:72;:::i;:::-;29745:332;;;;;:::o;30083:169::-;30223:21;30219:1;30211:6;30207:14;30200:45;30083:169;:::o;30258:366::-;30400:3;30421:67;30485:2;30480:3;30421:67;:::i;:::-;30414:74;;30497:93;30586:3;30497:93;:::i;:::-;30615:2;30610:3;30606:12;30599:19;;30258:366;;;:::o;30630:419::-;30796:4;30834:2;30823:9;30819:18;30811:26;;30883:9;30877:4;30873:20;30869:1;30858:9;30854:17;30847:47;30911:131;31037:4;30911:131;:::i;:::-;30903:139;;30630:419;;;:::o;31055:224::-;31195:34;31191:1;31183:6;31179:14;31172:58;31264:7;31259:2;31251:6;31247:15;31240:32;31055:224;:::o;31285:366::-;31427:3;31448:67;31512:2;31507:3;31448:67;:::i;:::-;31441:74;;31524:93;31613:3;31524:93;:::i;:::-;31642:2;31637:3;31633:12;31626:19;;31285:366;;;:::o;31657:419::-;31823:4;31861:2;31850:9;31846:18;31838:26;;31910:9;31904:4;31900:20;31896:1;31885:9;31881:17;31874:47;31938:131;32064:4;31938:131;:::i;:::-;31930:139;;31657:419;;;:::o;32082:222::-;32222:34;32218:1;32210:6;32206:14;32199:58;32291:5;32286:2;32278:6;32274:15;32267:30;32082:222;:::o;32310:366::-;32452:3;32473:67;32537:2;32532:3;32473:67;:::i;:::-;32466:74;;32549:93;32638:3;32549:93;:::i;:::-;32667:2;32662:3;32658:12;32651:19;;32310:366;;;:::o;32682:419::-;32848:4;32886:2;32875:9;32871:18;32863:26;;32935:9;32929:4;32925:20;32921:1;32910:9;32906:17;32899:47;32963:131;33089:4;32963:131;:::i;:::-;32955:139;;32682:419;;;:::o;33107:228::-;33247:34;33243:1;33235:6;33231:14;33224:58;33316:11;33311:2;33303:6;33299:15;33292:36;33107:228;:::o;33341:366::-;33483:3;33504:67;33568:2;33563:3;33504:67;:::i;:::-;33497:74;;33580:93;33669:3;33580:93;:::i;:::-;33698:2;33693:3;33689:12;33682:19;;33341:366;;;:::o;33713:419::-;33879:4;33917:2;33906:9;33902:18;33894:26;;33966:9;33960:4;33956:20;33952:1;33941:9;33937:17;33930:47;33994:131;34120:4;33994:131;:::i;:::-;33986:139;;33713:419;;;:::o;34138:174::-;34278:26;34274:1;34266:6;34262:14;34255:50;34138:174;:::o;34318:366::-;34460:3;34481:67;34545:2;34540:3;34481:67;:::i;:::-;34474:74;;34557:93;34646:3;34557:93;:::i;:::-;34675:2;34670:3;34666:12;34659:19;;34318:366;;;:::o;34690:419::-;34856:4;34894:2;34883:9;34879:18;34871:26;;34943:9;34937:4;34933:20;34929:1;34918:9;34914:17;34907:47;34971:131;35097:4;34971:131;:::i;:::-;34963:139;;34690:419;;;:::o;35115:227::-;35255:34;35251:1;35243:6;35239:14;35232:58;35324:10;35319:2;35311:6;35307:15;35300:35;35115:227;:::o;35348:366::-;35490:3;35511:67;35575:2;35570:3;35511:67;:::i;:::-;35504:74;;35587:93;35676:3;35587:93;:::i;:::-;35705:2;35700:3;35696:12;35689:19;;35348:366;;;:::o;35720:419::-;35886:4;35924:2;35913:9;35909:18;35901:26;;35973:9;35967:4;35963:20;35959:1;35948:9;35944:17;35937:47;36001:131;36127:4;36001:131;:::i;:::-;35993:139;;35720:419;;;:::o;36145:305::-;36185:3;36204:20;36222:1;36204:20;:::i;:::-;36199:25;;36238:20;36256:1;36238:20;:::i;:::-;36233:25;;36392:1;36324:66;36320:74;36317:1;36314:81;36311:107;;;36398:18;;:::i;:::-;36311:107;36442:1;36439;36435:9;36428:16;;36145:305;;;;:::o;36456:229::-;36596:34;36592:1;36584:6;36580:14;36573:58;36665:12;36660:2;36652:6;36648:15;36641:37;36456:229;:::o;36691:366::-;36833:3;36854:67;36918:2;36913:3;36854:67;:::i;:::-;36847:74;;36930:93;37019:3;36930:93;:::i;:::-;37048:2;37043:3;37039:12;37032:19;;36691:366;;;:::o;37063:419::-;37229:4;37267:2;37256:9;37252:18;37244:26;;37316:9;37310:4;37306:20;37302:1;37291:9;37287:17;37280:47;37344:131;37470:4;37344:131;:::i;:::-;37336:139;;37063:419;;;:::o;37488:224::-;37628:34;37624:1;37616:6;37612:14;37605:58;37697:7;37692:2;37684:6;37680:15;37673:32;37488:224;:::o;37718:366::-;37860:3;37881:67;37945:2;37940:3;37881:67;:::i;:::-;37874:74;;37957:93;38046:3;37957:93;:::i;:::-;38075:2;38070:3;38066:12;38059:19;;37718:366;;;:::o;38090:419::-;38256:4;38294:2;38283:9;38279:18;38271:26;;38343:9;38337:4;38333:20;38329:1;38318:9;38314:17;38307:47;38371:131;38497:4;38371:131;:::i;:::-;38363:139;;38090:419;;;:::o;38515:85::-;38560:7;38589:5;38578:16;;38515:85;;;:::o;38606:158::-;38664:9;38697:61;38715:42;38724:32;38750:5;38724:32;:::i;:::-;38715:42;:::i;:::-;38697:61;:::i;:::-;38684:74;;38606:158;;;:::o;38770:147::-;38865:45;38904:5;38865:45;:::i;:::-;38860:3;38853:58;38770:147;;:::o;38923:114::-;38990:6;39024:5;39018:12;39008:22;;38923:114;;;:::o;39043:184::-;39142:11;39176:6;39171:3;39164:19;39216:4;39211:3;39207:14;39192:29;;39043:184;;;;:::o;39233:132::-;39300:4;39323:3;39315:11;;39353:4;39348:3;39344:14;39336:22;;39233:132;;;:::o;39371:108::-;39448:24;39466:5;39448:24;:::i;:::-;39443:3;39436:37;39371:108;;:::o;39485:179::-;39554:10;39575:46;39617:3;39609:6;39575:46;:::i;:::-;39653:4;39648:3;39644:14;39630:28;;39485:179;;;;:::o;39670:113::-;39740:4;39772;39767:3;39763:14;39755:22;;39670:113;;;:::o;39819:732::-;39938:3;39967:54;40015:5;39967:54;:::i;:::-;40037:86;40116:6;40111:3;40037:86;:::i;:::-;40030:93;;40147:56;40197:5;40147:56;:::i;:::-;40226:7;40257:1;40242:284;40267:6;40264:1;40261:13;40242:284;;;40343:6;40337:13;40370:63;40429:3;40414:13;40370:63;:::i;:::-;40363:70;;40456:60;40509:6;40456:60;:::i;:::-;40446:70;;40302:224;40289:1;40286;40282:9;40277:14;;40242:284;;;40246:14;40542:3;40535:10;;39943:608;;;39819:732;;;;:::o;40557:831::-;40820:4;40858:3;40847:9;40843:19;40835:27;;40872:71;40940:1;40929:9;40925:17;40916:6;40872:71;:::i;:::-;40953:80;41029:2;41018:9;41014:18;41005:6;40953:80;:::i;:::-;41080:9;41074:4;41070:20;41065:2;41054:9;41050:18;41043:48;41108:108;41211:4;41202:6;41108:108;:::i;:::-;41100:116;;41226:72;41294:2;41283:9;41279:18;41270:6;41226:72;:::i;:::-;41308:73;41376:3;41365:9;41361:19;41352:6;41308:73;:::i;:::-;40557:831;;;;;;;;:::o;41394:147::-;41495:11;41532:3;41517:18;;41394:147;;;;:::o;41547:114::-;;:::o;41667:398::-;41826:3;41847:83;41928:1;41923:3;41847:83;:::i;:::-;41840:90;;41939:93;42028:3;41939:93;:::i;:::-;42057:1;42052:3;42048:11;42041:18;;41667:398;;;:::o;42071:379::-;42255:3;42277:147;42420:3;42277:147;:::i;:::-;42270:154;;42441:3;42434:10;;42071:379;;;:::o;42456:180::-;42596:32;42592:1;42584:6;42580:14;42573:56;42456:180;:::o;42642:366::-;42784:3;42805:67;42869:2;42864:3;42805:67;:::i;:::-;42798:74;;42881:93;42970:3;42881:93;:::i;:::-;42999:2;42994:3;42990:12;42983:19;;42642:366;;;:::o;43014:419::-;43180:4;43218:2;43207:9;43203:18;43195:26;;43267:9;43261:4;43257:20;43253:1;43242:9;43238:17;43231:47;43295:131;43421:4;43295:131;:::i;:::-;43287:139;;43014:419;;;:::o;43439:483::-;43610:4;43648:2;43637:9;43633:18;43625:26;;43661:71;43729:1;43718:9;43714:17;43705:6;43661:71;:::i;:::-;43779:9;43773:4;43769:20;43764:2;43753:9;43749:18;43742:48;43807:108;43910:4;43901:6;43807:108;:::i;:::-;43799:116;;43439:483;;;;;:::o;43928:143::-;43985:5;44016:6;44010:13;44001:22;;44032:33;44059:5;44032:33;:::i;:::-;43928:143;;;;:::o;44094:732::-;44201:5;44226:81;44242:64;44299:6;44242:64;:::i;:::-;44226:81;:::i;:::-;44217:90;;44327:5;44356:6;44349:5;44342:21;44390:4;44383:5;44379:16;44372:23;;44443:4;44435:6;44431:17;44423:6;44419:30;44472:3;44464:6;44461:15;44458:122;;;44491:79;;:::i;:::-;44458:122;44606:6;44589:231;44623:6;44618:3;44615:15;44589:231;;;44698:3;44727:48;44771:3;44759:10;44727:48;:::i;:::-;44722:3;44715:61;44805:4;44800:3;44796:14;44789:21;;44665:155;44649:4;44644:3;44640:14;44633:21;;44589:231;;;44593:21;44207:619;;44094:732;;;;;:::o;44849:385::-;44931:5;44980:3;44973:4;44965:6;44961:17;44957:27;44947:122;;44988:79;;:::i;:::-;44947:122;45098:6;45092:13;45123:105;45224:3;45216:6;45209:4;45201:6;45197:17;45123:105;:::i;:::-;45114:114;;44937:297;44849:385;;;;:::o;45240:554::-;45335:6;45384:2;45372:9;45363:7;45359:23;45355:32;45352:119;;;45390:79;;:::i;:::-;45352:119;45531:1;45520:9;45516:17;45510:24;45561:18;45553:6;45550:30;45547:117;;;45583:79;;:::i;:::-;45547:117;45688:89;45769:7;45760:6;45749:9;45745:22;45688:89;:::i;:::-;45678:99;;45481:306;45240:554;;;;:::o;45800:222::-;45940:34;45936:1;45928:6;45924:14;45917:58;46009:5;46004:2;45996:6;45992:15;45985:30;45800:222;:::o;46028:366::-;46170:3;46191:67;46255:2;46250:3;46191:67;:::i;:::-;46184:74;;46267:93;46356:3;46267:93;:::i;:::-;46385:2;46380:3;46376:12;46369:19;;46028:366;;;:::o;46400:419::-;46566:4;46604:2;46593:9;46589:18;46581:26;;46653:9;46647:4;46643:20;46639:1;46628:9;46624:17;46617:47;46681:131;46807:4;46681:131;:::i;:::-;46673:139;;46400:419;;;:::o;46825:720::-;47060:4;47098:3;47087:9;47083:19;47075:27;;47112:79;47188:1;47177:9;47173:17;47164:6;47112:79;:::i;:::-;47238:9;47232:4;47228:20;47223:2;47212:9;47208:18;47201:48;47266:108;47369:4;47360:6;47266:108;:::i;:::-;47258:116;;47384:72;47452:2;47441:9;47437:18;47428:6;47384:72;:::i;:::-;47466;47534:2;47523:9;47519:18;47510:6;47466:72;:::i;:::-;46825:720;;;;;;;:::o

Swarm Source

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