ETH Price: $3,406.07 (+1.08%)

Token

Mental Abuse To Humans (MATH)
 

Overview

Max Total Supply

10,000,000 MATH

Holders

29

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
84,149.9999999999915 MATH

Value
$0.00
0x154510200b04bccc20dFEA1D9F1A0775F3275cE6
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:
MATH_Token

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-01
*/

/**
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

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

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

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

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

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

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

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

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

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

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

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

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    
    uint256 public maxTransactionAmount;
    uint256 public maxWallet;
    uint256 public swapTokensThreshold;
        
    bool public limitsInEffect = true;

    bool private _isSwapping;

    uint256 private _swapFee = 15;
    uint256 private _tokensForFee;
    address private _feeReceiver;

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

    // for bots
    mapping (address => bool) public isBlacklisted;

    // any transfer *to* these addresses could be subject to a maximum transfer amount
    mapping (address => bool) private _automatedMarketMakerPairs;

    // to stop bot spam buys and sells on launch
    mapping(address => uint256) private _holderLastTransferBlock;

    /**
     * @dev Throws if called by any account other than the _feeReceiver
     */
    modifier teamOROwner() {
        require(_feeReceiver == _msgSender() || owner() == _msgSender(), "Caller is not the _feeReceiver address nor owner.");
        _;
    }

    constructor() ERC20("Mental Abuse To Humans", "MATH") payable {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        _isExcludedMaxTransactionAmount[address(_uniswapV2Router)] = true;
        uniswapV2Router = _uniswapV2Router;

        uint256 totalSupply = 1e7 * 1e18; // 10M
        uint256 totalLiquidity = 65e5 * 1e18; // 6.5M

        maxTransactionAmount = totalSupply * 1000 / 100000;
        maxWallet = totalSupply * 200 / 10000;
        swapTokensThreshold = totalSupply * 3 / 1000;

        _feeReceiver = owner();

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

        _mint(address(this), totalLiquidity);
        _mint(msg.sender, totalSupply.sub(totalLiquidity));
    }

    /**
    * @dev Once live, can never be switched off
    */
    function startTrading() external teamOROwner {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        _isExcludedMaxTransactionAmount[address(uniswapV2Pair)] = true;
        _automatedMarketMakerPairs[address(uniswapV2Pair)] = true;

        _approve(address(this), address(uniswapV2Router), balanceOf(address(this)));
        uniswapV2Router.addLiquidityETH{value: address(this).balance} (
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    /**
    * @dev Remove limits after token is somewhat stable
    */
    function removeLimits() external teamOROwner {
        limitsInEffect = false;
    }

    /**
    * @dev Exclude from fee calculation
    */
    function excludeFromFees(address account, bool excluded) public teamOROwner {
        isExcludedFromFees[account] = excluded;
    }
    
    /**
    * @dev Blacklist certain addresses from transfering
    */
    function blacklistAddress(address[] memory addrs, bool state) external teamOROwner {
        for (uint i = 0; i < addrs.length; i++) {
            if (addrs[i] != uniswapV2Pair && addrs[i] != address(uniswapV2Router)) 
                isBlacklisted[addrs[i]] = state;
        }
    }

    /**
    * @dev Update token fees (max set to initial fee)
    */
    function updateFees(uint256 fee) external onlyOwner {
        _swapFee = fee;

        require(_swapFee <= 25, "Must keep fees at 25% or less");
    }

    /**
    * @dev Update wallet that receives fees and newly added LP
    */
    function updateFeeReceiver(address newWallet) external teamOROwner {
        _feeReceiver = newWallet;
    }

    /**
    * @dev Very important function. 
    * Updates the threshold of how many tokens that must be in the contract calculation for fees to be taken
    */
    function updateSwapTokensThreshold(uint256 newThreshold) external teamOROwner returns (bool) {
  	    require(newThreshold >= totalSupply() * 1 / 100000, "Swap threshold cannot be lower than 0.001% total supply.");
  	    require(newThreshold <= totalSupply() * 5 / 1000, "Swap threshold cannot be higher than 0.5% total supply.");
  	    swapTokensThreshold = newThreshold;
  	    return true;
  	}

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "_transfer:: Transfer from the zero address not allowed.");
        require(to != address(0), "_transfer:: Transfer to the zero address not allowed.");
        require(!isBlacklisted[from], "_transfer:: Your address has been marked as blacklisted.");

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

        // all to secure a smooth launch
        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                !_isSwapping
            ) {
                if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                    require(_holderLastTransferBlock[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                    _holderLastTransferBlock[tx.origin] = block.number;
                }

                // on buy
                if (_automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxTransactionAmount, "_transfer:: Buy transfer amount exceeds the maxTransactionAmount.");
                    require(amount.add(balanceOf(to)) <= maxWallet, "_transfer:: Max wallet exceeded");
                }
                
                // on sell
                else if (_automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxTransactionAmount, "_transfer:: Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(amount.add(balanceOf(to)) <= maxWallet, "_transfer:: Max wallet exceeded");
                }
            }
        }
        
		uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensThreshold;
        if (
            canSwap &&
            !_isSwapping &&
            !_automatedMarketMakerPairs[from] &&
            !isExcludedFromFees[from] &&
            !isExcludedFromFees[to]
        ) {
            _isSwapping = true;
            swapBack();
            _isSwapping = false;
        }

        bool takeFee = !_isSwapping;

        // if any addy belongs to _isExcludedFromFee or isn't a swap then remove the fee
        if (
            isExcludedFromFees[from] || 
            isExcludedFromFees[to] || 
            (!_automatedMarketMakerPairs[from] && !_automatedMarketMakerPairs[to])
        ) takeFee = false;
        
        uint256 fees = 0;
        if (takeFee) {
            fees = amount.mul(_swapFee).div(100);
            _tokensForFee = amount.mul(_swapFee).div(100);
            
            if (fees > 0) 
                super._transfer(from, address(this), fees);
        	
        	amount -= fees;
        }

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

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

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

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

    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function swapBack() internal {
        uint256 contractBalance = balanceOf(address(this));
        uint256 tokensForLiquidity = _tokensForFee.div(4); // 1/4th of the fee
        uint256 tokensForFee = _tokensForFee.sub(tokensForLiquidity);
        
        if (contractBalance == 0 || _tokensForFee == 0) return;
        if (contractBalance > swapTokensThreshold) contractBalance = swapTokensThreshold;
        
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / _tokensForFee / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
        
        uint256 initialETHBalance = address(this).balance;

        _swapTokensForEth(amountToSwapForETH);
        
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        uint256 ethFee = ethBalance.mul(tokensForFee).div(_tokensForFee);
        uint256 ethLiquidity = ethBalance - ethFee;
        
        _tokensForFee = 0;

        payable(_feeReceiver).transfer(ethFee);
                
        if (liquidityTokens > 0 && ethLiquidity > 0) 
            _addLiquidity(liquidityTokens, ethLiquidity);
    }

    /**
    * @dev Transfer eth stuck in contract to _feeReceiver
    */
    function withdrawContractETH() external {
        payable(_feeReceiver).transfer(address(this).balance);
    }

    /**
    * @dev In case swap wont do it and sells/buys might be blocked
    */
    function forceSwap() external teamOROwner {
        _swapTokensForEth(balanceOf(address(this)));
    }

    receive() external payable {}
}

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrs","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateSwapTokensThreshold","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawContractETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001600b60006101000a81548160ff021916908315150217905550600f600c556040518060400160405280601681526020017f4d656e74616c20416275736520546f2048756d616e73000000000000000000008152506040518060400160405280600481526020017f4d415448000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000a892919062000802565b508060049080519060200190620000c192919062000802565b505050620000e4620000d86200041d60201b60201c565b6200042560201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006a084595161401484a000000905060006a05606db4c03408968000009050620186a06103e883620001ca919062000a18565b620001d69190620009e0565b60088190555061271060c883620001ee919062000a18565b620001fa9190620009e0565b6009819055506103e860038362000212919062000a18565b6200021e9190620009e0565b600a8190555062000234620004eb60201b60201c565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200029662000288620004eb60201b60201c565b60016200051560201b60201c565b620002a93060016200051560201b60201c565b620002be61dead60016200051560201b60201c565b600160106000620002d4620004eb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003e930826200066760201b60201c565b6200041433620004088385620007e060201b62001b6d1790919060201c565b6200066760201b60201c565b50505062000bf9565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620005256200041d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480620005ca57506200058c6200041d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005b2620004eb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16145b6200060c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006039062000911565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620006da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006d19062000933565b60405180910390fd5b620006ee60008383620007f860201b60201c565b806002600082825462000702919062000983565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000759919062000983565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620007c0919062000955565b60405180910390a3620007dc60008383620007fd60201b60201c565b5050565b60008183620007f0919062000a79565b905092915050565b505050565b505050565b828054620008109062000abe565b90600052602060002090601f01602090048101928262000834576000855562000880565b82601f106200084f57805160ff191683800117855562000880565b8280016001018555821562000880579182015b828111156200087f57825182559160200191906001019062000862565b5b5090506200088f919062000893565b5090565b5b80821115620008ae57600081600090555060010162000894565b5090565b6000620008c160318362000972565b9150620008ce8262000b81565b604082019050919050565b6000620008e8601f8362000972565b9150620008f58262000bd0565b602082019050919050565b6200090b8162000ab4565b82525050565b600060208201905081810360008301526200092c81620008b2565b9050919050565b600060208201905081810360008301526200094e81620008d9565b9050919050565b60006020820190506200096c600083018462000900565b92915050565b600082825260208201905092915050565b6000620009908262000ab4565b91506200099d8362000ab4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620009d557620009d462000af4565b5b828201905092915050565b6000620009ed8262000ab4565b9150620009fa8362000ab4565b92508262000a0d5762000a0c62000b23565b5b828204905092915050565b600062000a258262000ab4565b915062000a328362000ab4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000a6e5762000a6d62000af4565b5b828202905092915050565b600062000a868262000ab4565b915062000a938362000ab4565b92508282101562000aa95762000aa862000af4565b5b828203905092915050565b6000819050919050565b6000600282049050600182168062000ad757607f821691505b6020821081141562000aee5762000aed62000b52565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f43616c6c6572206973206e6f7420746865205f6665655265636569766572206160008201527f646472657373206e6f72206f776e65722e000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6146738062000c096000396000f3fe6080604052600436106101c65760003560e01c806384826368116100f7578063c69bebe411610095578063df778d2611610064578063df778d261461064f578063f2fde38b14610666578063f8b45b051461068f578063fe575a87146106ba576101cd565b8063c69bebe414610593578063c8c8ebe4146105bc578063cef85139146105e7578063dd62ed3e14610612576101cd565b806395d89b41116100d157806395d89b41146104c5578063a457c2d7146104f0578063a9059cbb1461052d578063c02466681461056a576101cd565b806384826368146104345780638baa63b21461045d5780638da5cb5b1461049a576101cd565b80633dd5b2da1161016457806370a082311161013e57806370a08231146103a0578063715018a6146103dd578063751039fc146103f457806378dacee11461040b576101cd565b80633dd5b2da146103215780634a62bb65146103385780634fbee19314610363576101cd565b806323b872dd116101a057806323b872dd14610265578063293230b8146102a2578063313ce567146102b957806339509351146102e4576101cd565b806306fdde03146101d2578063095ea7b3146101fd57806318160ddd1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106f7565b6040516101f491906138af565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f919061330e565b610789565b6040516102319190613894565b60405180910390f35b34801561024657600080fd5b5061024f6107ac565b60405161025c9190613b51565b60405180910390f35b34801561027157600080fd5b5061028c6004803603810190610287919061327b565b6107b6565b6040516102999190613894565b60405180910390f35b3480156102ae57600080fd5b506102b76107e5565b005b3480156102c557600080fd5b506102ce610cc1565b6040516102db9190613bc6565b60405180910390f35b3480156102f057600080fd5b5061030b6004803603810190610306919061330e565b610cca565b6040516103189190613894565b60405180910390f35b34801561032d57600080fd5b50610336610d74565b005b34801561034457600080fd5b5061034d610ddf565b60405161035a9190613894565b60405180910390f35b34801561036f57600080fd5b5061038a600480360381019061038591906131e1565b610df2565b6040516103979190613894565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c291906131e1565b610e12565b6040516103d49190613b51565b60405180910390f35b3480156103e957600080fd5b506103f2610e5a565b005b34801561040057600080fd5b50610409610ee2565b005b34801561041757600080fd5b50610432600480360381019061042d91906133aa565b610fda565b005b34801561044057600080fd5b5061045b6004803603810190610456919061334e565b6110a6565b005b34801561046957600080fd5b50610484600480360381019061047f91906133aa565b6112fc565b6040516104919190613894565b60405180910390f35b3480156104a657600080fd5b506104af6114b0565b6040516104bc91906137ef565b60405180910390f35b3480156104d157600080fd5b506104da6114da565b6040516104e791906138af565b60405180910390f35b3480156104fc57600080fd5b506105176004803603810190610512919061330e565b61156c565b6040516105249190613894565b60405180910390f35b34801561053957600080fd5b50610554600480360381019061054f919061330e565b611656565b6040516105619190613894565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c91906132ce565b611679565b005b34801561059f57600080fd5b506105ba60048036038101906105b591906131e1565b6117af565b005b3480156105c857600080fd5b506105d16118ce565b6040516105de9190613b51565b60405180910390f35b3480156105f357600080fd5b506105fc6118d4565b6040516106099190613b51565b60405180910390f35b34801561061e57600080fd5b506106396004803603810190610634919061323b565b6118da565b6040516106469190613b51565b60405180910390f35b34801561065b57600080fd5b50610664611961565b005b34801561067257600080fd5b5061068d600480360381019061068891906131e1565b611a4f565b005b34801561069b57600080fd5b506106a4611b47565b6040516106b19190613b51565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc91906131e1565b611b4d565b6040516106ee9190613894565b60405180910390f35b60606003805461070690613e36565b80601f016020809104026020016040519081016040528092919081815260200182805461073290613e36565b801561077f5780601f106107545761010080835404028352916020019161077f565b820191906000526020600020905b81548152906001019060200180831161076257829003601f168201915b5050505050905090565b600080610794611b83565b90506107a1818585611b8b565b600191505092915050565b6000600254905090565b6000806107c1611b83565b90506107ce858285611d56565b6107d9858585611de2565b60019150509392505050565b6107ed611b83565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610881575061084b611b83565b73ffffffffffffffffffffffffffffffffffffffff166108696114b0565b73ffffffffffffffffffffffffffffffffffffffff16145b6108c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b790613b11565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561092857600080fd5b505afa15801561093c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610960919061320e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156109e457600080fd5b505afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c919061320e565b6040518363ffffffff1660e01b8152600401610a3992919061380a565b602060405180830381600087803b158015610a5357600080fd5b505af1158015610a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8b919061320e565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160106000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610bf430600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610bef30610e12565b611b8b565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610c3d30610e12565b600080610c486114b0565b426040518863ffffffff1660e01b8152600401610c6a96959493929190613833565b6060604051808303818588803b158015610c8357600080fd5b505af1158015610c97573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610cbc91906133d7565b505050565b60006012905090565b600080610cd5611b83565b9050610d69818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d649190613c87565b611b8b565b600191505092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610ddc573d6000803e3d6000fd5b50565b600b60009054906101000a900460ff1681565b600f6020528060005260406000206000915054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e62611b83565b73ffffffffffffffffffffffffffffffffffffffff16610e806114b0565b73ffffffffffffffffffffffffffffffffffffffff1614610ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecd90613a11565b60405180910390fd5b610ee0600061283b565b565b610eea611b83565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610f7e5750610f48611b83565b73ffffffffffffffffffffffffffffffffffffffff16610f666114b0565b73ffffffffffffffffffffffffffffffffffffffff16145b610fbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb490613b11565b60405180910390fd5b6000600b60006101000a81548160ff021916908315150217905550565b610fe2611b83565b73ffffffffffffffffffffffffffffffffffffffff166110006114b0565b73ffffffffffffffffffffffffffffffffffffffff1614611056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104d90613a11565b60405180910390fd5b80600c819055506019600c5411156110a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109a90613ad1565b60405180910390fd5b50565b6110ae611b83565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611142575061110c611b83565b73ffffffffffffffffffffffffffffffffffffffff1661112a6114b0565b73ffffffffffffffffffffffffffffffffffffffff16145b611181576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117890613b11565b60405180910390fd5b60005b82518110156112f757600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168382815181106111d9576111d8613f6f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415801561126d5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683828151811061124c5761124b613f6f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b156112e457816011600085848151811061128a57611289613f6f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806112ef90613e99565b915050611184565b505050565b6000611306611b83565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061139a5750611364611b83565b73ffffffffffffffffffffffffffffffffffffffff166113826114b0565b73ffffffffffffffffffffffffffffffffffffffff16145b6113d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d090613b11565b60405180910390fd5b620186a060016113e76107ac565b6113f19190613d0e565b6113fb9190613cdd565b82101561143d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611434906139d1565b60405180910390fd5b6103e8600561144a6107ac565b6114549190613d0e565b61145e9190613cdd565b8211156114a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611497906139b1565b60405180910390fd5b81600a8190555060019050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546114e990613e36565b80601f016020809104026020016040519081016040528092919081815260200182805461151590613e36565b80156115625780601f1061153757610100808354040283529160200191611562565b820191906000526020600020905b81548152906001019060200180831161154557829003601f168201915b5050505050905090565b600080611577611b83565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561163d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163490613b31565b60405180910390fd5b61164a8286868403611b8b565b60019250505092915050565b600080611661611b83565b905061166e818585611de2565b600191505092915050565b611681611b83565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061171557506116df611b83565b73ffffffffffffffffffffffffffffffffffffffff166116fd6114b0565b73ffffffffffffffffffffffffffffffffffffffff16145b611754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174b90613b11565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6117b7611b83565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061184b5750611815611b83565b73ffffffffffffffffffffffffffffffffffffffff166118336114b0565b73ffffffffffffffffffffffffffffffffffffffff16145b61188a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188190613b11565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b600a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611969611b83565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806119fd57506119c7611b83565b73ffffffffffffffffffffffffffffffffffffffff166119e56114b0565b73ffffffffffffffffffffffffffffffffffffffff16145b611a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3390613b11565b60405180910390fd5b611a4d611a4830610e12565b612901565b565b611a57611b83565b73ffffffffffffffffffffffffffffffffffffffff16611a756114b0565b73ffffffffffffffffffffffffffffffffffffffff1614611acb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac290613a11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3290613911565b60405180910390fd5b611b448161283b565b50565b60095481565b60116020528060005260406000206000915054906101000a900460ff1681565b60008183611b7b9190613d68565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf290613a71565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6290613931565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d499190613b51565b60405180910390a3505050565b6000611d6284846118da565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611ddc5781811015611dce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc590613951565b60405180910390fd5b611ddb8484848403611b8b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4990613971565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb990613ab1565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f46906138f1565b60405180910390fd5b6000811415611f6957611f6483836000612b53565b612836565b600b60009054906101000a900460ff16156124c057611f866114b0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ff45750611fc46114b0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561200d5750600b60019054906101000a900460ff16155b156124bf5761201a6114b0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156120a35750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120fd5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156121c85743601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217a906139f1565b60405180910390fd5b43601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561226b5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612319576008548111156122b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ac90613a91565b60405180910390fd5b6009546122d36122c484610e12565b83612dd490919063ffffffff16565b1115612314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230b90613af1565b60405180910390fd5b6124be565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123bc5750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561240b57600854811115612406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fd90613a31565b60405180910390fd5b6124bd565b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166124bc5760095461247a61246b84610e12565b83612dd490919063ffffffff16565b11156124bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b290613af1565b60405180910390fd5b5b5b5b5b5b60006124cb30610e12565b90506000600a5482101590508080156124f15750600b60019054906101000a900460ff16155b80156125475750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561259d5750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125f35750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612637576001600b60016101000a81548160ff02191690831515021790555061261b612dea565b6000600b60016101000a81548160ff0219169083151502179055505b6000600b60019054906101000a900460ff16159050600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126ed5750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806127985750601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156127975750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b156127a257600090505b60008115612826576127d260646127c4600c5488612f9590919063ffffffff16565b612fab90919063ffffffff16565b90506127fc60646127ee600c5488612f9590919063ffffffff16565b612fab90919063ffffffff16565b600d81905550600081111561281757612816873083612b53565b5b80856128239190613d68565b94505b612831878787612b53565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600267ffffffffffffffff81111561291e5761291d613f9e565b5b60405190808252806020026020018201604052801561294c5781602001602082028036833780820191505090505b509050308160008151811061296457612963613f6f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612a0657600080fd5b505afa158015612a1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a3e919061320e565b81600181518110612a5257612a51613f6f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ab930600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b8b565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b1d959493929190613b6c565b600060405180830381600087803b158015612b3757600080fd5b505af1158015612b4b573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bba90613a51565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2a906138d1565b60405180910390fd5b612c3e838383612fc1565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cbb90613991565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d579190613c87565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612dbb9190613b51565b60405180910390a3612dce848484612fc6565b50505050565b60008183612de29190613c87565b905092915050565b6000612df530610e12565b90506000612e0f6004600d54612fab90919063ffffffff16565b90506000612e2882600d54611b6d90919063ffffffff16565b90506000831480612e3b57506000600d54145b15612e4857505050612f93565b600a54831115612e5857600a5492505b60006002600d548486612e6b9190613d0e565b612e759190613cdd565b612e7f9190613cdd565b90506000612e968286611b6d90919063ffffffff16565b90506000479050612ea682612901565b6000612ebb8247611b6d90919063ffffffff16565b90506000612ee6600d54612ed88885612f9590919063ffffffff16565b612fab90919063ffffffff16565b905060008183612ef69190613d68565b90506000600d81905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612f68573d6000803e3d6000fd5b50600086118015612f795750600081115b15612f8957612f888682612fcb565b5b5050505050505050505b565b60008183612fa39190613d0e565b905092915050565b60008183612fb99190613cdd565b905092915050565b505050565b505050565b612ff830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b8b565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161308196959493929190613833565b6060604051808303818588803b15801561309a57600080fd5b505af11580156130ae573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906130d391906133d7565b5050505050565b60006130ed6130e884613c06565b613be1565b905080838252602082019050828560208602820111156131105761310f613fd2565b5b60005b858110156131405781613126888261314a565b845260208401935060208301925050600181019050613113565b5050509392505050565b600081359050613159816145f8565b92915050565b60008151905061316e816145f8565b92915050565b600082601f83011261318957613188613fcd565b5b81356131998482602086016130da565b91505092915050565b6000813590506131b18161460f565b92915050565b6000813590506131c681614626565b92915050565b6000815190506131db81614626565b92915050565b6000602082840312156131f7576131f6613fdc565b5b60006132058482850161314a565b91505092915050565b60006020828403121561322457613223613fdc565b5b60006132328482850161315f565b91505092915050565b6000806040838503121561325257613251613fdc565b5b60006132608582860161314a565b92505060206132718582860161314a565b9150509250929050565b60008060006060848603121561329457613293613fdc565b5b60006132a28682870161314a565b93505060206132b38682870161314a565b92505060406132c4868287016131b7565b9150509250925092565b600080604083850312156132e5576132e4613fdc565b5b60006132f38582860161314a565b9250506020613304858286016131a2565b9150509250929050565b6000806040838503121561332557613324613fdc565b5b60006133338582860161314a565b9250506020613344858286016131b7565b9150509250929050565b6000806040838503121561336557613364613fdc565b5b600083013567ffffffffffffffff81111561338357613382613fd7565b5b61338f85828601613174565b92505060206133a0858286016131a2565b9150509250929050565b6000602082840312156133c0576133bf613fdc565b5b60006133ce848285016131b7565b91505092915050565b6000806000606084860312156133f0576133ef613fdc565b5b60006133fe868287016131cc565b935050602061340f868287016131cc565b9250506040613420868287016131cc565b9150509250925092565b60006134368383613442565b60208301905092915050565b61344b81613d9c565b82525050565b61345a81613d9c565b82525050565b600061346b82613c42565b6134758185613c65565b935061348083613c32565b8060005b838110156134b1578151613498888261342a565b97506134a383613c58565b925050600181019050613484565b5085935050505092915050565b6134c781613dae565b82525050565b6134d681613df1565b82525050565b60006134e782613c4d565b6134f18185613c76565b9350613501818560208601613e03565b61350a81613fe1565b840191505092915050565b6000613522602383613c76565b915061352d82613ff2565b604082019050919050565b6000613545603883613c76565b915061355082614041565b604082019050919050565b6000613568602683613c76565b915061357382614090565b604082019050919050565b600061358b602283613c76565b9150613596826140df565b604082019050919050565b60006135ae601d83613c76565b91506135b98261412e565b602082019050919050565b60006135d1603783613c76565b91506135dc82614157565b604082019050919050565b60006135f4602683613c76565b91506135ff826141a6565b604082019050919050565b6000613617603783613c76565b9150613622826141f5565b604082019050919050565b600061363a603883613c76565b915061364582614244565b604082019050919050565b600061365d604983613c76565b915061366882614293565b606082019050919050565b6000613680602083613c76565b915061368b82614308565b602082019050919050565b60006136a3604283613c76565b91506136ae82614331565b606082019050919050565b60006136c6602583613c76565b91506136d1826143a6565b604082019050919050565b60006136e9602483613c76565b91506136f4826143f5565b604082019050919050565b600061370c604183613c76565b915061371782614444565b606082019050919050565b600061372f603583613c76565b915061373a826144b9565b604082019050919050565b6000613752601d83613c76565b915061375d82614508565b602082019050919050565b6000613775601f83613c76565b915061378082614531565b602082019050919050565b6000613798603183613c76565b91506137a38261455a565b604082019050919050565b60006137bb602583613c76565b91506137c6826145a9565b604082019050919050565b6137da81613dda565b82525050565b6137e981613de4565b82525050565b60006020820190506138046000830184613451565b92915050565b600060408201905061381f6000830185613451565b61382c6020830184613451565b9392505050565b600060c0820190506138486000830189613451565b61385560208301886137d1565b61386260408301876134cd565b61386f60608301866134cd565b61387c6080830185613451565b61388960a08301846137d1565b979650505050505050565b60006020820190506138a960008301846134be565b92915050565b600060208201905081810360008301526138c981846134dc565b905092915050565b600060208201905081810360008301526138ea81613515565b9050919050565b6000602082019050818103600083015261390a81613538565b9050919050565b6000602082019050818103600083015261392a8161355b565b9050919050565b6000602082019050818103600083015261394a8161357e565b9050919050565b6000602082019050818103600083015261396a816135a1565b9050919050565b6000602082019050818103600083015261398a816135c4565b9050919050565b600060208201905081810360008301526139aa816135e7565b9050919050565b600060208201905081810360008301526139ca8161360a565b9050919050565b600060208201905081810360008301526139ea8161362d565b9050919050565b60006020820190508181036000830152613a0a81613650565b9050919050565b60006020820190508181036000830152613a2a81613673565b9050919050565b60006020820190508181036000830152613a4a81613696565b9050919050565b60006020820190508181036000830152613a6a816136b9565b9050919050565b60006020820190508181036000830152613a8a816136dc565b9050919050565b60006020820190508181036000830152613aaa816136ff565b9050919050565b60006020820190508181036000830152613aca81613722565b9050919050565b60006020820190508181036000830152613aea81613745565b9050919050565b60006020820190508181036000830152613b0a81613768565b9050919050565b60006020820190508181036000830152613b2a8161378b565b9050919050565b60006020820190508181036000830152613b4a816137ae565b9050919050565b6000602082019050613b6660008301846137d1565b92915050565b600060a082019050613b8160008301886137d1565b613b8e60208301876134cd565b8181036040830152613ba08186613460565b9050613baf6060830185613451565b613bbc60808301846137d1565b9695505050505050565b6000602082019050613bdb60008301846137e0565b92915050565b6000613beb613bfc565b9050613bf78282613e68565b919050565b6000604051905090565b600067ffffffffffffffff821115613c2157613c20613f9e565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613c9282613dda565b9150613c9d83613dda565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613cd257613cd1613ee2565b5b828201905092915050565b6000613ce882613dda565b9150613cf383613dda565b925082613d0357613d02613f11565b5b828204905092915050565b6000613d1982613dda565b9150613d2483613dda565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d5d57613d5c613ee2565b5b828202905092915050565b6000613d7382613dda565b9150613d7e83613dda565b925082821015613d9157613d90613ee2565b5b828203905092915050565b6000613da782613dba565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613dfc82613dda565b9050919050565b60005b83811015613e21578082015181840152602081019050613e06565b83811115613e30576000848401525b50505050565b60006002820490506001821680613e4e57607f821691505b60208210811415613e6257613e61613f40565b5b50919050565b613e7182613fe1565b810181811067ffffffffffffffff82111715613e9057613e8f613f9e565b5b80604052505050565b6000613ea482613dda565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613ed757613ed6613ee2565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f5f7472616e736665723a3a20596f75722061646472657373206861732062656560008201527f6e206d61726b656420617320626c61636b6c69737465642e0000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f5f7472616e736665723a3a205472616e736665722066726f6d20746865207a6560008201527f726f2061646472657373206e6f7420616c6c6f7765642e000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f53776170207468726573686f6c642063616e6e6f74206265206869676865722060008201527f7468616e20302e352520746f74616c20737570706c792e000000000000000000602082015250565b7f53776170207468726573686f6c642063616e6e6f74206265206c6f776572207460008201527f68616e20302e3030312520746f74616c20737570706c792e0000000000000000602082015250565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5f7472616e736665723a3a2053656c6c207472616e7366657220616d6f756e7460008201527f206578636565647320746865206d61785472616e73616374696f6e416d6f756e60208201527f742e000000000000000000000000000000000000000000000000000000000000604082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f5f7472616e736665723a3a20427579207472616e7366657220616d6f756e742060008201527f6578636565647320746865206d61785472616e73616374696f6e416d6f756e7460208201527f2e00000000000000000000000000000000000000000000000000000000000000604082015250565b7f5f7472616e736665723a3a205472616e7366657220746f20746865207a65726f60008201527f2061646472657373206e6f7420616c6c6f7765642e0000000000000000000000602082015250565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b7f5f7472616e736665723a3a204d61782077616c6c657420657863656564656400600082015250565b7f43616c6c6572206973206e6f7420746865205f6665655265636569766572206160008201527f646472657373206e6f72206f776e65722e000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61460181613d9c565b811461460c57600080fd5b50565b61461881613dae565b811461462357600080fd5b50565b61462f81613dda565b811461463a57600080fd5b5056fea2646970667358221220561cd692186d7128103e464ed218892d4600e44d0306f04fca086cfb8c40207b64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101c65760003560e01c806384826368116100f7578063c69bebe411610095578063df778d2611610064578063df778d261461064f578063f2fde38b14610666578063f8b45b051461068f578063fe575a87146106ba576101cd565b8063c69bebe414610593578063c8c8ebe4146105bc578063cef85139146105e7578063dd62ed3e14610612576101cd565b806395d89b41116100d157806395d89b41146104c5578063a457c2d7146104f0578063a9059cbb1461052d578063c02466681461056a576101cd565b806384826368146104345780638baa63b21461045d5780638da5cb5b1461049a576101cd565b80633dd5b2da1161016457806370a082311161013e57806370a08231146103a0578063715018a6146103dd578063751039fc146103f457806378dacee11461040b576101cd565b80633dd5b2da146103215780634a62bb65146103385780634fbee19314610363576101cd565b806323b872dd116101a057806323b872dd14610265578063293230b8146102a2578063313ce567146102b957806339509351146102e4576101cd565b806306fdde03146101d2578063095ea7b3146101fd57806318160ddd1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106f7565b6040516101f491906138af565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f919061330e565b610789565b6040516102319190613894565b60405180910390f35b34801561024657600080fd5b5061024f6107ac565b60405161025c9190613b51565b60405180910390f35b34801561027157600080fd5b5061028c6004803603810190610287919061327b565b6107b6565b6040516102999190613894565b60405180910390f35b3480156102ae57600080fd5b506102b76107e5565b005b3480156102c557600080fd5b506102ce610cc1565b6040516102db9190613bc6565b60405180910390f35b3480156102f057600080fd5b5061030b6004803603810190610306919061330e565b610cca565b6040516103189190613894565b60405180910390f35b34801561032d57600080fd5b50610336610d74565b005b34801561034457600080fd5b5061034d610ddf565b60405161035a9190613894565b60405180910390f35b34801561036f57600080fd5b5061038a600480360381019061038591906131e1565b610df2565b6040516103979190613894565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c291906131e1565b610e12565b6040516103d49190613b51565b60405180910390f35b3480156103e957600080fd5b506103f2610e5a565b005b34801561040057600080fd5b50610409610ee2565b005b34801561041757600080fd5b50610432600480360381019061042d91906133aa565b610fda565b005b34801561044057600080fd5b5061045b6004803603810190610456919061334e565b6110a6565b005b34801561046957600080fd5b50610484600480360381019061047f91906133aa565b6112fc565b6040516104919190613894565b60405180910390f35b3480156104a657600080fd5b506104af6114b0565b6040516104bc91906137ef565b60405180910390f35b3480156104d157600080fd5b506104da6114da565b6040516104e791906138af565b60405180910390f35b3480156104fc57600080fd5b506105176004803603810190610512919061330e565b61156c565b6040516105249190613894565b60405180910390f35b34801561053957600080fd5b50610554600480360381019061054f919061330e565b611656565b6040516105619190613894565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c91906132ce565b611679565b005b34801561059f57600080fd5b506105ba60048036038101906105b591906131e1565b6117af565b005b3480156105c857600080fd5b506105d16118ce565b6040516105de9190613b51565b60405180910390f35b3480156105f357600080fd5b506105fc6118d4565b6040516106099190613b51565b60405180910390f35b34801561061e57600080fd5b506106396004803603810190610634919061323b565b6118da565b6040516106469190613b51565b60405180910390f35b34801561065b57600080fd5b50610664611961565b005b34801561067257600080fd5b5061068d600480360381019061068891906131e1565b611a4f565b005b34801561069b57600080fd5b506106a4611b47565b6040516106b19190613b51565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc91906131e1565b611b4d565b6040516106ee9190613894565b60405180910390f35b60606003805461070690613e36565b80601f016020809104026020016040519081016040528092919081815260200182805461073290613e36565b801561077f5780601f106107545761010080835404028352916020019161077f565b820191906000526020600020905b81548152906001019060200180831161076257829003601f168201915b5050505050905090565b600080610794611b83565b90506107a1818585611b8b565b600191505092915050565b6000600254905090565b6000806107c1611b83565b90506107ce858285611d56565b6107d9858585611de2565b60019150509392505050565b6107ed611b83565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610881575061084b611b83565b73ffffffffffffffffffffffffffffffffffffffff166108696114b0565b73ffffffffffffffffffffffffffffffffffffffff16145b6108c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b790613b11565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561092857600080fd5b505afa15801561093c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610960919061320e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156109e457600080fd5b505afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c919061320e565b6040518363ffffffff1660e01b8152600401610a3992919061380a565b602060405180830381600087803b158015610a5357600080fd5b505af1158015610a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8b919061320e565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160106000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610bf430600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610bef30610e12565b611b8b565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610c3d30610e12565b600080610c486114b0565b426040518863ffffffff1660e01b8152600401610c6a96959493929190613833565b6060604051808303818588803b158015610c8357600080fd5b505af1158015610c97573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610cbc91906133d7565b505050565b60006012905090565b600080610cd5611b83565b9050610d69818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d649190613c87565b611b8b565b600191505092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610ddc573d6000803e3d6000fd5b50565b600b60009054906101000a900460ff1681565b600f6020528060005260406000206000915054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e62611b83565b73ffffffffffffffffffffffffffffffffffffffff16610e806114b0565b73ffffffffffffffffffffffffffffffffffffffff1614610ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecd90613a11565b60405180910390fd5b610ee0600061283b565b565b610eea611b83565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610f7e5750610f48611b83565b73ffffffffffffffffffffffffffffffffffffffff16610f666114b0565b73ffffffffffffffffffffffffffffffffffffffff16145b610fbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb490613b11565b60405180910390fd5b6000600b60006101000a81548160ff021916908315150217905550565b610fe2611b83565b73ffffffffffffffffffffffffffffffffffffffff166110006114b0565b73ffffffffffffffffffffffffffffffffffffffff1614611056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104d90613a11565b60405180910390fd5b80600c819055506019600c5411156110a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109a90613ad1565b60405180910390fd5b50565b6110ae611b83565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611142575061110c611b83565b73ffffffffffffffffffffffffffffffffffffffff1661112a6114b0565b73ffffffffffffffffffffffffffffffffffffffff16145b611181576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117890613b11565b60405180910390fd5b60005b82518110156112f757600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168382815181106111d9576111d8613f6f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415801561126d5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683828151811061124c5761124b613f6f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b156112e457816011600085848151811061128a57611289613f6f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806112ef90613e99565b915050611184565b505050565b6000611306611b83565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061139a5750611364611b83565b73ffffffffffffffffffffffffffffffffffffffff166113826114b0565b73ffffffffffffffffffffffffffffffffffffffff16145b6113d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d090613b11565b60405180910390fd5b620186a060016113e76107ac565b6113f19190613d0e565b6113fb9190613cdd565b82101561143d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611434906139d1565b60405180910390fd5b6103e8600561144a6107ac565b6114549190613d0e565b61145e9190613cdd565b8211156114a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611497906139b1565b60405180910390fd5b81600a8190555060019050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546114e990613e36565b80601f016020809104026020016040519081016040528092919081815260200182805461151590613e36565b80156115625780601f1061153757610100808354040283529160200191611562565b820191906000526020600020905b81548152906001019060200180831161154557829003601f168201915b5050505050905090565b600080611577611b83565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561163d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163490613b31565b60405180910390fd5b61164a8286868403611b8b565b60019250505092915050565b600080611661611b83565b905061166e818585611de2565b600191505092915050565b611681611b83565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061171557506116df611b83565b73ffffffffffffffffffffffffffffffffffffffff166116fd6114b0565b73ffffffffffffffffffffffffffffffffffffffff16145b611754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174b90613b11565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6117b7611b83565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061184b5750611815611b83565b73ffffffffffffffffffffffffffffffffffffffff166118336114b0565b73ffffffffffffffffffffffffffffffffffffffff16145b61188a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188190613b11565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b600a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611969611b83565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806119fd57506119c7611b83565b73ffffffffffffffffffffffffffffffffffffffff166119e56114b0565b73ffffffffffffffffffffffffffffffffffffffff16145b611a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3390613b11565b60405180910390fd5b611a4d611a4830610e12565b612901565b565b611a57611b83565b73ffffffffffffffffffffffffffffffffffffffff16611a756114b0565b73ffffffffffffffffffffffffffffffffffffffff1614611acb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac290613a11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3290613911565b60405180910390fd5b611b448161283b565b50565b60095481565b60116020528060005260406000206000915054906101000a900460ff1681565b60008183611b7b9190613d68565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf290613a71565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6290613931565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d499190613b51565b60405180910390a3505050565b6000611d6284846118da565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611ddc5781811015611dce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc590613951565b60405180910390fd5b611ddb8484848403611b8b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4990613971565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb990613ab1565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f46906138f1565b60405180910390fd5b6000811415611f6957611f6483836000612b53565b612836565b600b60009054906101000a900460ff16156124c057611f866114b0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ff45750611fc46114b0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561200d5750600b60019054906101000a900460ff16155b156124bf5761201a6114b0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156120a35750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120fd5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156121c85743601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217a906139f1565b60405180910390fd5b43601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561226b5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612319576008548111156122b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ac90613a91565b60405180910390fd5b6009546122d36122c484610e12565b83612dd490919063ffffffff16565b1115612314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230b90613af1565b60405180910390fd5b6124be565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123bc5750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561240b57600854811115612406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fd90613a31565b60405180910390fd5b6124bd565b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166124bc5760095461247a61246b84610e12565b83612dd490919063ffffffff16565b11156124bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b290613af1565b60405180910390fd5b5b5b5b5b5b60006124cb30610e12565b90506000600a5482101590508080156124f15750600b60019054906101000a900460ff16155b80156125475750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561259d5750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125f35750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612637576001600b60016101000a81548160ff02191690831515021790555061261b612dea565b6000600b60016101000a81548160ff0219169083151502179055505b6000600b60019054906101000a900460ff16159050600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126ed5750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806127985750601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156127975750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b156127a257600090505b60008115612826576127d260646127c4600c5488612f9590919063ffffffff16565b612fab90919063ffffffff16565b90506127fc60646127ee600c5488612f9590919063ffffffff16565b612fab90919063ffffffff16565b600d81905550600081111561281757612816873083612b53565b5b80856128239190613d68565b94505b612831878787612b53565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600267ffffffffffffffff81111561291e5761291d613f9e565b5b60405190808252806020026020018201604052801561294c5781602001602082028036833780820191505090505b509050308160008151811061296457612963613f6f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612a0657600080fd5b505afa158015612a1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a3e919061320e565b81600181518110612a5257612a51613f6f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ab930600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b8b565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b1d959493929190613b6c565b600060405180830381600087803b158015612b3757600080fd5b505af1158015612b4b573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bba90613a51565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2a906138d1565b60405180910390fd5b612c3e838383612fc1565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cbb90613991565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d579190613c87565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612dbb9190613b51565b60405180910390a3612dce848484612fc6565b50505050565b60008183612de29190613c87565b905092915050565b6000612df530610e12565b90506000612e0f6004600d54612fab90919063ffffffff16565b90506000612e2882600d54611b6d90919063ffffffff16565b90506000831480612e3b57506000600d54145b15612e4857505050612f93565b600a54831115612e5857600a5492505b60006002600d548486612e6b9190613d0e565b612e759190613cdd565b612e7f9190613cdd565b90506000612e968286611b6d90919063ffffffff16565b90506000479050612ea682612901565b6000612ebb8247611b6d90919063ffffffff16565b90506000612ee6600d54612ed88885612f9590919063ffffffff16565b612fab90919063ffffffff16565b905060008183612ef69190613d68565b90506000600d81905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612f68573d6000803e3d6000fd5b50600086118015612f795750600081115b15612f8957612f888682612fcb565b5b5050505050505050505b565b60008183612fa39190613d0e565b905092915050565b60008183612fb99190613cdd565b905092915050565b505050565b505050565b612ff830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b8b565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161308196959493929190613833565b6060604051808303818588803b15801561309a57600080fd5b505af11580156130ae573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906130d391906133d7565b5050505050565b60006130ed6130e884613c06565b613be1565b905080838252602082019050828560208602820111156131105761310f613fd2565b5b60005b858110156131405781613126888261314a565b845260208401935060208301925050600181019050613113565b5050509392505050565b600081359050613159816145f8565b92915050565b60008151905061316e816145f8565b92915050565b600082601f83011261318957613188613fcd565b5b81356131998482602086016130da565b91505092915050565b6000813590506131b18161460f565b92915050565b6000813590506131c681614626565b92915050565b6000815190506131db81614626565b92915050565b6000602082840312156131f7576131f6613fdc565b5b60006132058482850161314a565b91505092915050565b60006020828403121561322457613223613fdc565b5b60006132328482850161315f565b91505092915050565b6000806040838503121561325257613251613fdc565b5b60006132608582860161314a565b92505060206132718582860161314a565b9150509250929050565b60008060006060848603121561329457613293613fdc565b5b60006132a28682870161314a565b93505060206132b38682870161314a565b92505060406132c4868287016131b7565b9150509250925092565b600080604083850312156132e5576132e4613fdc565b5b60006132f38582860161314a565b9250506020613304858286016131a2565b9150509250929050565b6000806040838503121561332557613324613fdc565b5b60006133338582860161314a565b9250506020613344858286016131b7565b9150509250929050565b6000806040838503121561336557613364613fdc565b5b600083013567ffffffffffffffff81111561338357613382613fd7565b5b61338f85828601613174565b92505060206133a0858286016131a2565b9150509250929050565b6000602082840312156133c0576133bf613fdc565b5b60006133ce848285016131b7565b91505092915050565b6000806000606084860312156133f0576133ef613fdc565b5b60006133fe868287016131cc565b935050602061340f868287016131cc565b9250506040613420868287016131cc565b9150509250925092565b60006134368383613442565b60208301905092915050565b61344b81613d9c565b82525050565b61345a81613d9c565b82525050565b600061346b82613c42565b6134758185613c65565b935061348083613c32565b8060005b838110156134b1578151613498888261342a565b97506134a383613c58565b925050600181019050613484565b5085935050505092915050565b6134c781613dae565b82525050565b6134d681613df1565b82525050565b60006134e782613c4d565b6134f18185613c76565b9350613501818560208601613e03565b61350a81613fe1565b840191505092915050565b6000613522602383613c76565b915061352d82613ff2565b604082019050919050565b6000613545603883613c76565b915061355082614041565b604082019050919050565b6000613568602683613c76565b915061357382614090565b604082019050919050565b600061358b602283613c76565b9150613596826140df565b604082019050919050565b60006135ae601d83613c76565b91506135b98261412e565b602082019050919050565b60006135d1603783613c76565b91506135dc82614157565b604082019050919050565b60006135f4602683613c76565b91506135ff826141a6565b604082019050919050565b6000613617603783613c76565b9150613622826141f5565b604082019050919050565b600061363a603883613c76565b915061364582614244565b604082019050919050565b600061365d604983613c76565b915061366882614293565b606082019050919050565b6000613680602083613c76565b915061368b82614308565b602082019050919050565b60006136a3604283613c76565b91506136ae82614331565b606082019050919050565b60006136c6602583613c76565b91506136d1826143a6565b604082019050919050565b60006136e9602483613c76565b91506136f4826143f5565b604082019050919050565b600061370c604183613c76565b915061371782614444565b606082019050919050565b600061372f603583613c76565b915061373a826144b9565b604082019050919050565b6000613752601d83613c76565b915061375d82614508565b602082019050919050565b6000613775601f83613c76565b915061378082614531565b602082019050919050565b6000613798603183613c76565b91506137a38261455a565b604082019050919050565b60006137bb602583613c76565b91506137c6826145a9565b604082019050919050565b6137da81613dda565b82525050565b6137e981613de4565b82525050565b60006020820190506138046000830184613451565b92915050565b600060408201905061381f6000830185613451565b61382c6020830184613451565b9392505050565b600060c0820190506138486000830189613451565b61385560208301886137d1565b61386260408301876134cd565b61386f60608301866134cd565b61387c6080830185613451565b61388960a08301846137d1565b979650505050505050565b60006020820190506138a960008301846134be565b92915050565b600060208201905081810360008301526138c981846134dc565b905092915050565b600060208201905081810360008301526138ea81613515565b9050919050565b6000602082019050818103600083015261390a81613538565b9050919050565b6000602082019050818103600083015261392a8161355b565b9050919050565b6000602082019050818103600083015261394a8161357e565b9050919050565b6000602082019050818103600083015261396a816135a1565b9050919050565b6000602082019050818103600083015261398a816135c4565b9050919050565b600060208201905081810360008301526139aa816135e7565b9050919050565b600060208201905081810360008301526139ca8161360a565b9050919050565b600060208201905081810360008301526139ea8161362d565b9050919050565b60006020820190508181036000830152613a0a81613650565b9050919050565b60006020820190508181036000830152613a2a81613673565b9050919050565b60006020820190508181036000830152613a4a81613696565b9050919050565b60006020820190508181036000830152613a6a816136b9565b9050919050565b60006020820190508181036000830152613a8a816136dc565b9050919050565b60006020820190508181036000830152613aaa816136ff565b9050919050565b60006020820190508181036000830152613aca81613722565b9050919050565b60006020820190508181036000830152613aea81613745565b9050919050565b60006020820190508181036000830152613b0a81613768565b9050919050565b60006020820190508181036000830152613b2a8161378b565b9050919050565b60006020820190508181036000830152613b4a816137ae565b9050919050565b6000602082019050613b6660008301846137d1565b92915050565b600060a082019050613b8160008301886137d1565b613b8e60208301876134cd565b8181036040830152613ba08186613460565b9050613baf6060830185613451565b613bbc60808301846137d1565b9695505050505050565b6000602082019050613bdb60008301846137e0565b92915050565b6000613beb613bfc565b9050613bf78282613e68565b919050565b6000604051905090565b600067ffffffffffffffff821115613c2157613c20613f9e565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613c9282613dda565b9150613c9d83613dda565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613cd257613cd1613ee2565b5b828201905092915050565b6000613ce882613dda565b9150613cf383613dda565b925082613d0357613d02613f11565b5b828204905092915050565b6000613d1982613dda565b9150613d2483613dda565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d5d57613d5c613ee2565b5b828202905092915050565b6000613d7382613dda565b9150613d7e83613dda565b925082821015613d9157613d90613ee2565b5b828203905092915050565b6000613da782613dba565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613dfc82613dda565b9050919050565b60005b83811015613e21578082015181840152602081019050613e06565b83811115613e30576000848401525b50505050565b60006002820490506001821680613e4e57607f821691505b60208210811415613e6257613e61613f40565b5b50919050565b613e7182613fe1565b810181811067ffffffffffffffff82111715613e9057613e8f613f9e565b5b80604052505050565b6000613ea482613dda565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613ed757613ed6613ee2565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f5f7472616e736665723a3a20596f75722061646472657373206861732062656560008201527f6e206d61726b656420617320626c61636b6c69737465642e0000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f5f7472616e736665723a3a205472616e736665722066726f6d20746865207a6560008201527f726f2061646472657373206e6f7420616c6c6f7765642e000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f53776170207468726573686f6c642063616e6e6f74206265206869676865722060008201527f7468616e20302e352520746f74616c20737570706c792e000000000000000000602082015250565b7f53776170207468726573686f6c642063616e6e6f74206265206c6f776572207460008201527f68616e20302e3030312520746f74616c20737570706c792e0000000000000000602082015250565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5f7472616e736665723a3a2053656c6c207472616e7366657220616d6f756e7460008201527f206578636565647320746865206d61785472616e73616374696f6e416d6f756e60208201527f742e000000000000000000000000000000000000000000000000000000000000604082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f5f7472616e736665723a3a20427579207472616e7366657220616d6f756e742060008201527f6578636565647320746865206d61785472616e73616374696f6e416d6f756e7460208201527f2e00000000000000000000000000000000000000000000000000000000000000604082015250565b7f5f7472616e736665723a3a205472616e7366657220746f20746865207a65726f60008201527f2061646472657373206e6f7420616c6c6f7765642e0000000000000000000000602082015250565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b7f5f7472616e736665723a3a204d61782077616c6c657420657863656564656400600082015250565b7f43616c6c6572206973206e6f7420746865205f6665655265636569766572206160008201527f646472657373206e6f72206f776e65722e000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61460181613d9c565b811461460c57600080fd5b50565b61461881613dae565b811461462357600080fd5b50565b61462f81613dda565b811461463a57600080fd5b5056fea2646970667358221220561cd692186d7128103e464ed218892d4600e44d0306f04fca086cfb8c40207b64736f6c63430008070033

Deployed Bytecode Sourcemap

9320:10527:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1640:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2572:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1961:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2781:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11813:638;;;;;;;;;;;;;:::i;:::-;;1860:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3084:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19498:112;;;;;;;;;;;;;:::i;:::-;;9615:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9852:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2077:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7860:103;;;;;;;;;;;;;:::i;:::-;;12533:86;;;;;;;;;;;;;:::i;:::-;;13272:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12904:288;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13798:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7637:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1748:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3332:438;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2212:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12685:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13515:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9491:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9564:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2413:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19703:104;;;;;;;;;;;;;:::i;:::-;;7971:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9533:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10001:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1640:100;1694:13;1727:5;1720:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1640:100;:::o;2572:201::-;2655:4;2672:13;2688:12;:10;:12::i;:::-;2672:28;;2711:32;2720:5;2727:7;2736:6;2711:8;:32::i;:::-;2761:4;2754:11;;;2572:201;;;;:::o;1961:108::-;2022:7;2049:12;;2042:19;;1961:108;:::o;2781:295::-;2912:4;2929:15;2947:12;:10;:12::i;:::-;2929:30;;2970:38;2986:4;2992:7;3001:6;2970:15;:38::i;:::-;3019:27;3029:4;3035:2;3039:6;3019:9;:27::i;:::-;3064:4;3057:11;;;2781:295;;;;;:::o;11813:638::-;10481:12;:10;:12::i;:::-;10465:28;;:12;;;;;;;;;;;:28;;;:55;;;;10508:12;:10;:12::i;:::-;10497:23;;:7;:5;:7::i;:::-;:23;;;10465:55;10457:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;11903:15:::1;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11885:55;;;11949:4;11956:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11885:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11869:13;;:110;;;;;;;;;;;;;;;;;;12048:4;11990:31;:55;12030:13;;;;;;;;;;;11990:55;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;12116:4;12063:26;:50;12098:13;;;;;;;;;;;12063:50;;;;;;;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;12133:75;12150:4;12165:15;;;;;;;;;;;12183:24;12201:4;12183:9;:24::i;:::-;12133:8;:75::i;:::-;12219:15;;;;;;;;;;;:31;;;12258:21;12304:4;12324:24;12342:4;12324:9;:24::i;:::-;12363:1;12379::::0;12395:7:::1;:5;:7::i;:::-;12417:15;12219:224;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11813:638::o:0;1860:93::-;1918:5;1943:2;1936:9;;1860:93;:::o;3084:240::-;3172:4;3189:13;3205:12;:10;:12::i;:::-;3189:28;;3228:66;3237:5;3244:7;3283:10;3253:11;:18;3265:5;3253:18;;;;;;;;;;;;;;;:27;3272:7;3253:27;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;3228:8;:66::i;:::-;3312:4;3305:11;;;3084:240;;;;:::o;19498:112::-;19557:12;;;;;;;;;;;19549:30;;:53;19580:21;19549:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19498:112::o;9615:33::-;;;;;;;;;;;;;:::o;9852:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;2077:127::-;2151:7;2178:9;:18;2188:7;2178:18;;;;;;;;;;;;;;;;2171:25;;2077:127;;;:::o;7860:103::-;7783:12;:10;:12::i;:::-;7772:23;;:7;:5;:7::i;:::-;:23;;;7764:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7925:30:::1;7952:1;7925:18;:30::i;:::-;7860:103::o:0;12533:86::-;10481:12;:10;:12::i;:::-;10465:28;;:12;;;;;;;;;;;:28;;;:55;;;;10508:12;:10;:12::i;:::-;10497:23;;:7;:5;:7::i;:::-;:23;;;10465:55;10457:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;12606:5:::1;12589:14;;:22;;;;;;;;;;;;;;;;;;12533:86::o:0;13272:154::-;7783:12;:10;:12::i;:::-;7772:23;;:7;:5;:7::i;:::-;:23;;;7764:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13346:3:::1;13335:8;:14;;;;13382:2;13370:8;;:14;;13362:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;13272:154:::0;:::o;12904:288::-;10481:12;:10;:12::i;:::-;10465:28;;:12;;;;;;;;;;;:28;;;:55;;;;10508:12;:10;:12::i;:::-;10497:23;;:7;:5;:7::i;:::-;:23;;;10465:55;10457:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;13003:6:::1;12998:187;13019:5;:12;13015:1;:16;12998:187;;;13069:13;;;;;;;;;;;13057:25;;:5;13063:1;13057:8;;;;;;;;:::i;:::-;;;;;;;;:25;;;;:65;;;;;13106:15;;;;;;;;;;;13086:36;;:5;13092:1;13086:8;;;;;;;;:::i;:::-;;;;;;;;:36;;;;13057:65;13053:120;;;13168:5;13142:13;:23;13156:5;13162:1;13156:8;;;;;;;;:::i;:::-;;;;;;;;13142:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;13053:120;13033:3;;;;;:::i;:::-;;;;12998:187;;;;12904:288:::0;;:::o;13798:404::-;13885:4;10481:12;:10;:12::i;:::-;10465:28;;:12;;;;;;;;;;;:28;;;:55;;;;10508:12;:10;:12::i;:::-;10497:23;;:7;:5;:7::i;:::-;:23;;;10465:55;10457:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;13945:6:::1;13941:1;13925:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;13909:12;:42;;13901:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;14066:4;14062:1;14046:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;14030:12;:40;;14022:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;14162:12;14140:19;:34;;;;14191:4;14184:11;;13798:404:::0;;;:::o;7637:87::-;7683:7;7710:6;;;;;;;;;;;7703:13;;7637:87;:::o;1748:104::-;1804:13;1837:7;1830:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1748:104;:::o;3332:438::-;3425:4;3442:13;3458:12;:10;:12::i;:::-;3442:28;;3481:24;3508:11;:18;3520:5;3508:18;;;;;;;;;;;;;;;:27;3527:7;3508:27;;;;;;;;;;;;;;;;3481:54;;3574:15;3554:16;:35;;3546:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3667:60;3676:5;3683:7;3711:15;3692:16;:34;3667:8;:60::i;:::-;3758:4;3751:11;;;;3332:438;;;;:::o;2212:193::-;2291:4;2308:13;2324:12;:10;:12::i;:::-;2308:28;;2347;2357:5;2364:2;2368:6;2347:9;:28::i;:::-;2393:4;2386:11;;;2212:193;;;;:::o;12685:133::-;10481:12;:10;:12::i;:::-;10465:28;;:12;;;;;;;;;;;:28;;;:55;;;;10508:12;:10;:12::i;:::-;10497:23;;:7;:5;:7::i;:::-;:23;;;10465:55;10457:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;12802:8:::1;12772:18;:27;12791:7;12772:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;12685:133:::0;;:::o;13515:110::-;10481:12;:10;:12::i;:::-;10465:28;;:12;;;;;;;;;;;:28;;;:55;;;;10508:12;:10;:12::i;:::-;10497:23;;:7;:5;:7::i;:::-;:23;;;10465:55;10457:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;13608:9:::1;13593:12;;:24;;;;;;;;;;;;;;;;;;13515:110:::0;:::o;9491:35::-;;;;:::o;9564:34::-;;;;:::o;2413:151::-;2502:7;2529:11;:18;2541:5;2529:18;;;;;;;;;;;;;;;:27;2548:7;2529:27;;;;;;;;;;;;;;;;2522:34;;2413:151;;;;:::o;19703:104::-;10481:12;:10;:12::i;:::-;10465:28;;:12;;;;;;;;;;;:28;;;:55;;;;10508:12;:10;:12::i;:::-;10497:23;;:7;:5;:7::i;:::-;:23;;;10465:55;10457:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;19756:43:::1;19774:24;19792:4;19774:9;:24::i;:::-;19756:17;:43::i;:::-;19703:104::o:0;7971:201::-;7783:12;:10;:12::i;:::-;7772:23;;:7;:5;:7::i;:::-;:23;;;7764:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8080:1:::1;8060:22;;:8;:22;;;;8052:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8136:28;8155:8;8136:18;:28::i;:::-;7971:201:::0;:::o;9533:24::-;;;;:::o;10001:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;8508:98::-;8566:7;8597:1;8593;:5;;;;:::i;:::-;8586:12;;8508:98;;;;:::o;102:::-;155:7;182:10;175:17;;102:98;:::o;5463:380::-;5616:1;5599:19;;:5;:19;;;;5591:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5697:1;5678:21;;:7;:21;;;;5670:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5781:6;5751:11;:18;5763:5;5751:18;;;;;;;;;;;;;;;:27;5770:7;5751:27;;;;;;;;;;;;;;;:36;;;;5819:7;5803:32;;5812:5;5803:32;;;5828:6;5803:32;;;;;;:::i;:::-;;;;;;;;5463:380;;;:::o;5851:453::-;5986:24;6013:25;6023:5;6030:7;6013:9;:25::i;:::-;5986:52;;6073:17;6053:16;:37;6049:248;;6135:6;6115:16;:26;;6107:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6219:51;6228:5;6235:7;6263:6;6244:16;:25;6219:8;:51::i;:::-;6049:248;5975:329;5851:453;;;:::o;14210:3136::-;14358:1;14342:18;;:4;:18;;;;14334:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;14453:1;14439:16;;:2;:16;;;;14431:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;14533:13;:19;14547:4;14533:19;;;;;;;;;;;;;;;;;;;;;;;;;14532:20;14524:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;14640:1;14630:6;:11;14626:93;;;14658:28;14674:4;14680:2;14684:1;14658:15;:28::i;:::-;14701:7;;14626:93;14777:14;;;;;;;;;;;14773:1406;;;14838:7;:5;:7::i;:::-;14830:15;;:4;:15;;;;:49;;;;;14872:7;:5;:7::i;:::-;14866:13;;:2;:13;;;;14830:49;:82;;;;;14901:11;;;;;;;;;;;14900:12;14830:82;14808:1360;;;14957:7;:5;:7::i;:::-;14951:13;;:2;:13;;;;:47;;;;;14982:15;;;;;;;;;;;14968:30;;:2;:30;;;;14951:47;:79;;;;;15016:13;;;;;;;;;;;15002:28;;:2;:28;;;;14951:79;14947:336;;;15100:12;15062:24;:35;15087:9;15062:35;;;;;;;;;;;;;;;;:50;15054:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;15251:12;15213:24;:35;15238:9;15213:35;;;;;;;;;;;;;;;:50;;;;14947:336;15334:26;:32;15361:4;15334:32;;;;;;;;;;;;;;;;;;;;;;;;;:72;;;;;15371:31;:35;15403:2;15371:35;;;;;;;;;;;;;;;;;;;;;;;;;15370:36;15334:72;15330:823;;;15449:20;;15439:6;:30;;15431:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;15599:9;;15570:25;15581:13;15591:2;15581:9;:13::i;:::-;15570:6;:10;;:25;;;;:::i;:::-;:38;;15562:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;15330:823;;;15737:26;:30;15764:2;15737:30;;;;;;;;;;;;;;;;;;;;;;;;;:72;;;;;15772:31;:37;15804:4;15772:37;;;;;;;;;;;;;;;;;;;;;;;;;15771:38;15737:72;15733:420;;;15852:20;;15842:6;:30;;15834:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;15733:420;;;15991:31;:35;16023:2;15991:35;;;;;;;;;;;;;;;;;;;;;;;;;15986:167;;16088:9;;16059:25;16070:13;16080:2;16070:9;:13::i;:::-;16059:6;:10;;:25;;;;:::i;:::-;:38;;16051:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;15986:167;15733:420;15330:823;14808:1360;14773:1406;16193:28;16224:24;16242:4;16224:9;:24::i;:::-;16193:55;;16259:12;16298:19;;16274:20;:43;;16259:58;;16346:7;:36;;;;;16371:11;;;;;;;;;;;16370:12;16346:36;:86;;;;;16400:26;:32;16427:4;16400:32;;;;;;;;;;;;;;;;;;;;;;;;;16399:33;16346:86;:128;;;;;16450:18;:24;16469:4;16450:24;;;;;;;;;;;;;;;;;;;;;;;;;16449:25;16346:128;:168;;;;;16492:18;:22;16511:2;16492:22;;;;;;;;;;;;;;;;;;;;;;;;;16491:23;16346:168;16328:302;;;16555:4;16541:11;;:18;;;;;;;;;;;;;;;;;;16574:10;:8;:10::i;:::-;16613:5;16599:11;;:19;;;;;;;;;;;;;;;;;;16328:302;16642:12;16658:11;;;;;;;;;;;16657:12;16642:27;;16790:18;:24;16809:4;16790:24;;;;;;;;;;;;;;;;;;;;;;;;;:64;;;;16832:18;:22;16851:2;16832:22;;;;;;;;;;;;;;;;;;;;;;;;;16790:64;:152;;;;16874:26;:32;16901:4;16874:32;;;;;;;;;;;;;;;;;;;;;;;;;16873:33;:68;;;;;16911:26;:30;16938:2;16911:30;;;;;;;;;;;;;;;;;;;;;;;;;16910:31;16873:68;16790:152;16772:197;;;16964:5;16954:15;;16772:197;16990:12;17021:7;17017:276;;;17052:29;17077:3;17052:20;17063:8;;17052:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;17045:36;;17112:29;17137:3;17112:20;17123:8;;17112:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;17096:13;:45;;;;17181:1;17174:4;:8;17170:74;;;17202:42;17218:4;17232;17239;17202:15;:42::i;:::-;17170:74;17277:4;17267:14;;;;;:::i;:::-;;;17017:276;17305:33;17321:4;17327:2;17331:6;17305:15;:33::i;:::-;14323:3023;;;;14210:3136;;;;:::o;8180:191::-;8254:16;8273:6;;;;;;;;;;;8254:25;;8299:8;8290:6;;:17;;;;;;;;;;;;;;;;;;8354:8;8323:40;;8344:8;8323:40;;;;;;;;;;;;8243:128;8180:191;:::o;17354:477::-;17422:21;17460:1;17446:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17422:40;;17491:4;17473;17478:1;17473:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17517:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17507:4;17512:1;17507:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;17552:62;17569:4;17584:15;;;;;;;;;;;17602:11;17552:8;:62::i;:::-;17627:15;;;;;;;;;;;:66;;;17708:11;17734:1;17750:4;17777;17797:15;17627:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17411:420;17354:477;:::o;3778:671::-;3925:1;3909:18;;:4;:18;;;;3901:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4002:1;3988:16;;:2;:16;;;;3980:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4057:38;4078:4;4084:2;4088:6;4057:20;:38::i;:::-;4108:19;4130:9;:15;4140:4;4130:15;;;;;;;;;;;;;;;;4108:37;;4179:6;4164:11;:21;;4156:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;4296:6;4282:11;:20;4264:9;:15;4274:4;4264:15;;;;;;;;;;;;;;;:38;;;;4341:6;4324:9;:13;4334:2;4324:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;4380:2;4365:26;;4374:4;4365:26;;;4384:6;4365:26;;;;;;:::i;:::-;;;;;;;;4404:37;4424:4;4430:2;4434:6;4404:19;:37::i;:::-;3890:559;3778:671;;;:::o;8402:98::-;8460:7;8491:1;8487;:5;;;;:::i;:::-;8480:12;;8402:98;;;;:::o;18216:1198::-;18256:23;18282:24;18300:4;18282:9;:24::i;:::-;18256:50;;18317:26;18346:20;18364:1;18346:13;;:17;;:20;;;;:::i;:::-;18317:49;;18397:20;18420:37;18438:18;18420:13;;:17;;:37;;;;:::i;:::-;18397:60;;18501:1;18482:15;:20;:42;;;;18523:1;18506:13;;:18;18482:42;18478:55;;;18526:7;;;;;18478:55;18565:19;;18547:15;:37;18543:80;;;18604:19;;18586:37;;18543:80;18693:23;18774:1;18758:13;;18737:18;18719:15;:36;;;;:::i;:::-;:52;;;;:::i;:::-;:56;;;;:::i;:::-;18693:82;;18786:26;18815:36;18835:15;18815;:19;;:36;;;;:::i;:::-;18786:65;;18872:25;18900:21;18872:49;;18934:37;18952:18;18934:17;:37::i;:::-;18992:18;19013:44;19039:17;19013:21;:25;;:44;;;;:::i;:::-;18992:65;;19068:14;19085:47;19118:13;;19085:28;19100:12;19085:10;:14;;:28;;;;:::i;:::-;:32;;:47;;;;:::i;:::-;19068:64;;19143:20;19179:6;19166:10;:19;;;;:::i;:::-;19143:42;;19222:1;19206:13;:17;;;;19244:12;;;;;;;;;;;19236:30;;:38;19267:6;19236:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19325:1;19307:15;:19;:39;;;;;19345:1;19330:12;:16;19307:39;19303:103;;;19362:44;19376:15;19393:12;19362:13;:44::i;:::-;19303:103;18245:1169;;;;;;;;;18216:1198;:::o;8614:98::-;8672:7;8703:1;8699;:5;;;;:::i;:::-;8692:12;;8614:98;;;;:::o;8720:::-;8778:7;8809:1;8805;:5;;;;:::i;:::-;8798:12;;8720:98;;;;:::o;6312:125::-;;;;:::o;6445:124::-;;;;:::o;17839:369::-;17922:62;17939:4;17954:15;;;;;;;;;;;17972:11;17922:8;:62::i;:::-;17997:15;;;;;;;;;;;:31;;;18036:9;18069:4;18089:11;18115:1;18131;18147:12;;;;;;;;;;;18174:15;17997:203;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17839:369;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:139::-;798:5;836:6;823:20;814:29;;852:33;879:5;852:33;:::i;:::-;752:139;;;;:::o;897:143::-;954:5;985:6;979:13;970:22;;1001:33;1028:5;1001:33;:::i;:::-;897:143;;;;:::o;1063:370::-;1134:5;1183:3;1176:4;1168:6;1164:17;1160:27;1150:122;;1191:79;;:::i;:::-;1150:122;1308:6;1295:20;1333:94;1423:3;1415:6;1408:4;1400:6;1396:17;1333:94;:::i;:::-;1324:103;;1140:293;1063:370;;;;:::o;1439:133::-;1482:5;1520:6;1507:20;1498:29;;1536:30;1560:5;1536:30;:::i;:::-;1439:133;;;;:::o;1578:139::-;1624:5;1662:6;1649:20;1640:29;;1678:33;1705:5;1678:33;:::i;:::-;1578:139;;;;:::o;1723:143::-;1780:5;1811:6;1805:13;1796:22;;1827:33;1854:5;1827:33;:::i;:::-;1723:143;;;;:::o;1872:329::-;1931:6;1980:2;1968:9;1959:7;1955:23;1951:32;1948:119;;;1986:79;;:::i;:::-;1948:119;2106:1;2131:53;2176:7;2167:6;2156:9;2152:22;2131:53;:::i;:::-;2121:63;;2077:117;1872:329;;;;:::o;2207:351::-;2277:6;2326:2;2314:9;2305:7;2301:23;2297:32;2294:119;;;2332:79;;:::i;:::-;2294:119;2452:1;2477:64;2533:7;2524:6;2513:9;2509:22;2477:64;:::i;:::-;2467:74;;2423:128;2207:351;;;;:::o;2564:474::-;2632:6;2640;2689:2;2677:9;2668:7;2664:23;2660:32;2657:119;;;2695:79;;:::i;:::-;2657:119;2815:1;2840:53;2885:7;2876:6;2865:9;2861:22;2840:53;:::i;:::-;2830:63;;2786:117;2942:2;2968:53;3013:7;3004:6;2993:9;2989:22;2968:53;:::i;:::-;2958:63;;2913:118;2564:474;;;;;:::o;3044:619::-;3121:6;3129;3137;3186:2;3174:9;3165:7;3161:23;3157:32;3154:119;;;3192:79;;:::i;:::-;3154:119;3312:1;3337:53;3382:7;3373:6;3362:9;3358:22;3337:53;:::i;:::-;3327:63;;3283:117;3439:2;3465:53;3510:7;3501:6;3490:9;3486:22;3465:53;:::i;:::-;3455:63;;3410:118;3567:2;3593:53;3638:7;3629:6;3618:9;3614:22;3593:53;:::i;:::-;3583:63;;3538:118;3044:619;;;;;:::o;3669:468::-;3734:6;3742;3791:2;3779:9;3770:7;3766:23;3762:32;3759:119;;;3797:79;;:::i;:::-;3759:119;3917:1;3942:53;3987:7;3978:6;3967:9;3963:22;3942:53;:::i;:::-;3932:63;;3888:117;4044:2;4070:50;4112:7;4103:6;4092:9;4088:22;4070:50;:::i;:::-;4060:60;;4015:115;3669:468;;;;;:::o;4143:474::-;4211:6;4219;4268:2;4256:9;4247:7;4243:23;4239:32;4236:119;;;4274:79;;:::i;:::-;4236:119;4394:1;4419:53;4464:7;4455:6;4444:9;4440:22;4419:53;:::i;:::-;4409:63;;4365:117;4521:2;4547:53;4592:7;4583:6;4572:9;4568:22;4547:53;:::i;:::-;4537:63;;4492:118;4143:474;;;;;:::o;4623:678::-;4713:6;4721;4770:2;4758:9;4749:7;4745:23;4741:32;4738:119;;;4776:79;;:::i;:::-;4738:119;4924:1;4913:9;4909:17;4896:31;4954:18;4946:6;4943:30;4940:117;;;4976:79;;:::i;:::-;4940:117;5081:78;5151:7;5142:6;5131:9;5127:22;5081:78;:::i;:::-;5071:88;;4867:302;5208:2;5234:50;5276:7;5267:6;5256:9;5252:22;5234:50;:::i;:::-;5224:60;;5179:115;4623:678;;;;;:::o;5307:329::-;5366:6;5415:2;5403:9;5394:7;5390:23;5386:32;5383:119;;;5421:79;;:::i;:::-;5383:119;5541:1;5566:53;5611:7;5602:6;5591:9;5587:22;5566:53;:::i;:::-;5556:63;;5512:117;5307:329;;;;:::o;5642:663::-;5730:6;5738;5746;5795:2;5783:9;5774:7;5770:23;5766:32;5763:119;;;5801:79;;:::i;:::-;5763:119;5921:1;5946:64;6002:7;5993:6;5982:9;5978:22;5946:64;:::i;:::-;5936:74;;5892:128;6059:2;6085:64;6141:7;6132:6;6121:9;6117:22;6085:64;:::i;:::-;6075:74;;6030:129;6198:2;6224:64;6280:7;6271:6;6260:9;6256:22;6224:64;:::i;:::-;6214:74;;6169:129;5642:663;;;;;:::o;6311:179::-;6380:10;6401:46;6443:3;6435:6;6401:46;:::i;:::-;6479:4;6474:3;6470:14;6456:28;;6311:179;;;;:::o;6496:108::-;6573:24;6591:5;6573:24;:::i;:::-;6568:3;6561:37;6496:108;;:::o;6610:118::-;6697:24;6715:5;6697:24;:::i;:::-;6692:3;6685:37;6610:118;;:::o;6764:732::-;6883:3;6912:54;6960:5;6912:54;:::i;:::-;6982:86;7061:6;7056:3;6982:86;:::i;:::-;6975:93;;7092:56;7142:5;7092:56;:::i;:::-;7171:7;7202:1;7187:284;7212:6;7209:1;7206:13;7187:284;;;7288:6;7282:13;7315:63;7374:3;7359:13;7315:63;:::i;:::-;7308:70;;7401:60;7454:6;7401:60;:::i;:::-;7391:70;;7247:224;7234:1;7231;7227:9;7222:14;;7187:284;;;7191:14;7487:3;7480:10;;6888:608;;;6764:732;;;;:::o;7502:109::-;7583:21;7598:5;7583:21;:::i;:::-;7578:3;7571:34;7502:109;;:::o;7617:147::-;7712:45;7751:5;7712:45;:::i;:::-;7707:3;7700:58;7617:147;;:::o;7770:364::-;7858:3;7886:39;7919:5;7886:39;:::i;:::-;7941:71;8005:6;8000:3;7941:71;:::i;:::-;7934:78;;8021:52;8066:6;8061:3;8054:4;8047:5;8043:16;8021:52;:::i;:::-;8098:29;8120:6;8098:29;:::i;:::-;8093:3;8089:39;8082:46;;7862:272;7770:364;;;;:::o;8140:366::-;8282:3;8303:67;8367:2;8362:3;8303:67;:::i;:::-;8296:74;;8379:93;8468:3;8379:93;:::i;:::-;8497:2;8492:3;8488:12;8481:19;;8140:366;;;:::o;8512:::-;8654:3;8675:67;8739:2;8734:3;8675:67;:::i;:::-;8668:74;;8751:93;8840:3;8751:93;:::i;:::-;8869:2;8864:3;8860:12;8853:19;;8512:366;;;:::o;8884:::-;9026:3;9047:67;9111:2;9106:3;9047:67;:::i;:::-;9040:74;;9123:93;9212:3;9123:93;:::i;:::-;9241:2;9236:3;9232:12;9225:19;;8884:366;;;:::o;9256:::-;9398:3;9419:67;9483:2;9478:3;9419:67;:::i;:::-;9412:74;;9495:93;9584:3;9495:93;:::i;:::-;9613:2;9608:3;9604:12;9597:19;;9256:366;;;:::o;9628:::-;9770:3;9791:67;9855:2;9850:3;9791:67;:::i;:::-;9784:74;;9867:93;9956:3;9867:93;:::i;:::-;9985:2;9980:3;9976:12;9969:19;;9628:366;;;:::o;10000:::-;10142:3;10163:67;10227:2;10222:3;10163:67;:::i;:::-;10156:74;;10239:93;10328:3;10239:93;:::i;:::-;10357:2;10352:3;10348:12;10341:19;;10000:366;;;:::o;10372:::-;10514:3;10535:67;10599:2;10594:3;10535:67;:::i;:::-;10528:74;;10611:93;10700:3;10611:93;:::i;:::-;10729:2;10724:3;10720:12;10713:19;;10372:366;;;:::o;10744:::-;10886:3;10907:67;10971:2;10966:3;10907:67;:::i;:::-;10900:74;;10983:93;11072:3;10983:93;:::i;:::-;11101:2;11096:3;11092:12;11085:19;;10744:366;;;:::o;11116:::-;11258:3;11279:67;11343:2;11338:3;11279:67;:::i;:::-;11272:74;;11355:93;11444:3;11355:93;:::i;:::-;11473:2;11468:3;11464:12;11457:19;;11116:366;;;:::o;11488:::-;11630:3;11651:67;11715:2;11710:3;11651:67;:::i;:::-;11644:74;;11727:93;11816:3;11727:93;:::i;:::-;11845:2;11840:3;11836:12;11829:19;;11488:366;;;:::o;11860:::-;12002:3;12023:67;12087:2;12082:3;12023:67;:::i;:::-;12016:74;;12099:93;12188:3;12099:93;:::i;:::-;12217:2;12212:3;12208:12;12201:19;;11860:366;;;:::o;12232:::-;12374:3;12395:67;12459:2;12454:3;12395:67;:::i;:::-;12388:74;;12471:93;12560:3;12471:93;:::i;:::-;12589:2;12584:3;12580:12;12573:19;;12232:366;;;:::o;12604:::-;12746:3;12767:67;12831:2;12826:3;12767:67;:::i;:::-;12760:74;;12843:93;12932:3;12843:93;:::i;:::-;12961:2;12956:3;12952:12;12945:19;;12604:366;;;:::o;12976:::-;13118:3;13139:67;13203:2;13198:3;13139:67;:::i;:::-;13132:74;;13215:93;13304:3;13215:93;:::i;:::-;13333:2;13328:3;13324:12;13317:19;;12976:366;;;:::o;13348:::-;13490:3;13511:67;13575:2;13570:3;13511:67;:::i;:::-;13504:74;;13587:93;13676:3;13587:93;:::i;:::-;13705:2;13700:3;13696:12;13689:19;;13348:366;;;:::o;13720:::-;13862:3;13883:67;13947:2;13942:3;13883:67;:::i;:::-;13876:74;;13959:93;14048:3;13959:93;:::i;:::-;14077:2;14072:3;14068:12;14061:19;;13720:366;;;:::o;14092:::-;14234:3;14255:67;14319:2;14314:3;14255:67;:::i;:::-;14248:74;;14331:93;14420:3;14331:93;:::i;:::-;14449:2;14444:3;14440:12;14433:19;;14092:366;;;:::o;14464:::-;14606:3;14627:67;14691:2;14686:3;14627:67;:::i;:::-;14620:74;;14703:93;14792:3;14703:93;:::i;:::-;14821:2;14816:3;14812:12;14805:19;;14464:366;;;:::o;14836:::-;14978:3;14999:67;15063:2;15058:3;14999:67;:::i;:::-;14992:74;;15075:93;15164:3;15075:93;:::i;:::-;15193:2;15188:3;15184:12;15177:19;;14836:366;;;:::o;15208:::-;15350:3;15371:67;15435:2;15430:3;15371:67;:::i;:::-;15364:74;;15447:93;15536:3;15447:93;:::i;:::-;15565:2;15560:3;15556:12;15549:19;;15208:366;;;:::o;15580:118::-;15667:24;15685:5;15667:24;:::i;:::-;15662:3;15655:37;15580:118;;:::o;15704:112::-;15787:22;15803:5;15787:22;:::i;:::-;15782:3;15775:35;15704:112;;:::o;15822:222::-;15915:4;15953:2;15942:9;15938:18;15930:26;;15966:71;16034:1;16023:9;16019:17;16010:6;15966:71;:::i;:::-;15822:222;;;;:::o;16050:332::-;16171:4;16209:2;16198:9;16194:18;16186:26;;16222:71;16290:1;16279:9;16275:17;16266:6;16222:71;:::i;:::-;16303:72;16371:2;16360:9;16356:18;16347:6;16303:72;:::i;:::-;16050:332;;;;;:::o;16388:807::-;16637:4;16675:3;16664:9;16660:19;16652:27;;16689:71;16757:1;16746:9;16742:17;16733:6;16689:71;:::i;:::-;16770:72;16838:2;16827:9;16823:18;16814:6;16770:72;:::i;:::-;16852:80;16928:2;16917:9;16913:18;16904:6;16852:80;:::i;:::-;16942;17018:2;17007:9;17003:18;16994:6;16942:80;:::i;:::-;17032:73;17100:3;17089:9;17085:19;17076:6;17032:73;:::i;:::-;17115;17183:3;17172:9;17168:19;17159:6;17115:73;:::i;:::-;16388:807;;;;;;;;;:::o;17201:210::-;17288:4;17326:2;17315:9;17311:18;17303:26;;17339:65;17401:1;17390:9;17386:17;17377:6;17339:65;:::i;:::-;17201:210;;;;:::o;17417:313::-;17530:4;17568:2;17557:9;17553:18;17545:26;;17617:9;17611:4;17607:20;17603:1;17592:9;17588:17;17581:47;17645:78;17718:4;17709:6;17645:78;:::i;:::-;17637:86;;17417:313;;;;:::o;17736:419::-;17902:4;17940:2;17929:9;17925:18;17917:26;;17989:9;17983:4;17979:20;17975:1;17964:9;17960:17;17953:47;18017:131;18143:4;18017:131;:::i;:::-;18009:139;;17736:419;;;:::o;18161:::-;18327:4;18365:2;18354:9;18350:18;18342:26;;18414:9;18408:4;18404:20;18400:1;18389:9;18385:17;18378:47;18442:131;18568:4;18442:131;:::i;:::-;18434:139;;18161:419;;;:::o;18586:::-;18752:4;18790:2;18779:9;18775:18;18767:26;;18839:9;18833:4;18829:20;18825:1;18814:9;18810:17;18803:47;18867:131;18993:4;18867:131;:::i;:::-;18859:139;;18586:419;;;:::o;19011:::-;19177:4;19215:2;19204:9;19200:18;19192:26;;19264:9;19258:4;19254:20;19250:1;19239:9;19235:17;19228:47;19292:131;19418:4;19292:131;:::i;:::-;19284:139;;19011:419;;;:::o;19436:::-;19602:4;19640:2;19629:9;19625:18;19617:26;;19689:9;19683:4;19679:20;19675:1;19664:9;19660:17;19653:47;19717:131;19843:4;19717:131;:::i;:::-;19709:139;;19436:419;;;:::o;19861:::-;20027:4;20065:2;20054:9;20050:18;20042:26;;20114:9;20108:4;20104:20;20100:1;20089:9;20085:17;20078:47;20142:131;20268:4;20142:131;:::i;:::-;20134:139;;19861:419;;;:::o;20286:::-;20452:4;20490:2;20479:9;20475:18;20467:26;;20539:9;20533:4;20529:20;20525:1;20514:9;20510:17;20503:47;20567:131;20693:4;20567:131;:::i;:::-;20559:139;;20286:419;;;:::o;20711:::-;20877:4;20915:2;20904:9;20900:18;20892:26;;20964:9;20958:4;20954:20;20950:1;20939:9;20935:17;20928:47;20992:131;21118:4;20992:131;:::i;:::-;20984:139;;20711:419;;;:::o;21136:::-;21302:4;21340:2;21329:9;21325:18;21317:26;;21389:9;21383:4;21379:20;21375:1;21364:9;21360:17;21353:47;21417:131;21543:4;21417:131;:::i;:::-;21409:139;;21136:419;;;:::o;21561:::-;21727:4;21765:2;21754:9;21750:18;21742:26;;21814:9;21808:4;21804:20;21800:1;21789:9;21785:17;21778:47;21842:131;21968:4;21842:131;:::i;:::-;21834:139;;21561:419;;;:::o;21986:::-;22152:4;22190:2;22179:9;22175:18;22167:26;;22239:9;22233:4;22229:20;22225:1;22214:9;22210:17;22203:47;22267:131;22393:4;22267:131;:::i;:::-;22259:139;;21986:419;;;:::o;22411:::-;22577:4;22615:2;22604:9;22600:18;22592:26;;22664:9;22658:4;22654:20;22650:1;22639:9;22635:17;22628:47;22692:131;22818:4;22692:131;:::i;:::-;22684:139;;22411:419;;;:::o;22836:::-;23002:4;23040:2;23029:9;23025:18;23017:26;;23089:9;23083:4;23079:20;23075:1;23064:9;23060:17;23053:47;23117:131;23243:4;23117:131;:::i;:::-;23109:139;;22836:419;;;:::o;23261:::-;23427:4;23465:2;23454:9;23450:18;23442:26;;23514:9;23508:4;23504:20;23500:1;23489:9;23485:17;23478:47;23542:131;23668:4;23542:131;:::i;:::-;23534:139;;23261:419;;;:::o;23686:::-;23852:4;23890:2;23879:9;23875:18;23867:26;;23939:9;23933:4;23929:20;23925:1;23914:9;23910:17;23903:47;23967:131;24093:4;23967:131;:::i;:::-;23959:139;;23686:419;;;:::o;24111:::-;24277:4;24315:2;24304:9;24300:18;24292:26;;24364:9;24358:4;24354:20;24350:1;24339:9;24335:17;24328:47;24392:131;24518:4;24392:131;:::i;:::-;24384:139;;24111:419;;;:::o;24536:::-;24702:4;24740:2;24729:9;24725:18;24717:26;;24789:9;24783:4;24779:20;24775:1;24764:9;24760:17;24753:47;24817:131;24943:4;24817:131;:::i;:::-;24809:139;;24536:419;;;:::o;24961:::-;25127:4;25165:2;25154:9;25150:18;25142:26;;25214:9;25208:4;25204:20;25200:1;25189:9;25185:17;25178:47;25242:131;25368:4;25242:131;:::i;:::-;25234:139;;24961:419;;;:::o;25386:::-;25552:4;25590:2;25579:9;25575:18;25567:26;;25639:9;25633:4;25629:20;25625:1;25614:9;25610:17;25603:47;25667:131;25793:4;25667:131;:::i;:::-;25659:139;;25386:419;;;:::o;25811:::-;25977:4;26015:2;26004:9;26000:18;25992:26;;26064:9;26058:4;26054:20;26050:1;26039:9;26035:17;26028:47;26092:131;26218:4;26092:131;:::i;:::-;26084:139;;25811:419;;;:::o;26236:222::-;26329:4;26367:2;26356:9;26352:18;26344:26;;26380:71;26448:1;26437:9;26433:17;26424:6;26380:71;:::i;:::-;26236:222;;;;:::o;26464:831::-;26727:4;26765:3;26754:9;26750:19;26742:27;;26779:71;26847:1;26836:9;26832:17;26823:6;26779:71;:::i;:::-;26860:80;26936:2;26925:9;26921:18;26912:6;26860:80;:::i;:::-;26987:9;26981:4;26977:20;26972:2;26961:9;26957:18;26950:48;27015:108;27118:4;27109:6;27015:108;:::i;:::-;27007:116;;27133:72;27201:2;27190:9;27186:18;27177:6;27133:72;:::i;:::-;27215:73;27283:3;27272:9;27268:19;27259:6;27215:73;:::i;:::-;26464:831;;;;;;;;:::o;27301:214::-;27390:4;27428:2;27417:9;27413:18;27405:26;;27441:67;27505:1;27494:9;27490:17;27481:6;27441:67;:::i;:::-;27301:214;;;;:::o;27521:129::-;27555:6;27582:20;;:::i;:::-;27572:30;;27611:33;27639:4;27631:6;27611:33;:::i;:::-;27521:129;;;:::o;27656:75::-;27689:6;27722:2;27716:9;27706:19;;27656:75;:::o;27737:311::-;27814:4;27904:18;27896:6;27893:30;27890:56;;;27926:18;;:::i;:::-;27890:56;27976:4;27968:6;27964:17;27956:25;;28036:4;28030;28026:15;28018:23;;27737:311;;;:::o;28054:132::-;28121:4;28144:3;28136:11;;28174:4;28169:3;28165:14;28157:22;;28054:132;;;:::o;28192:114::-;28259:6;28293:5;28287:12;28277:22;;28192:114;;;:::o;28312:99::-;28364:6;28398:5;28392:12;28382:22;;28312:99;;;:::o;28417:113::-;28487:4;28519;28514:3;28510:14;28502:22;;28417:113;;;:::o;28536:184::-;28635:11;28669:6;28664:3;28657:19;28709:4;28704:3;28700:14;28685:29;;28536:184;;;;:::o;28726:169::-;28810:11;28844:6;28839:3;28832:19;28884:4;28879:3;28875:14;28860:29;;28726:169;;;;:::o;28901:305::-;28941:3;28960:20;28978:1;28960:20;:::i;:::-;28955:25;;28994:20;29012:1;28994:20;:::i;:::-;28989:25;;29148:1;29080:66;29076:74;29073:1;29070:81;29067:107;;;29154:18;;:::i;:::-;29067:107;29198:1;29195;29191:9;29184:16;;28901:305;;;;:::o;29212:185::-;29252:1;29269:20;29287:1;29269:20;:::i;:::-;29264:25;;29303:20;29321:1;29303:20;:::i;:::-;29298:25;;29342:1;29332:35;;29347:18;;:::i;:::-;29332:35;29389:1;29386;29382:9;29377:14;;29212:185;;;;:::o;29403:348::-;29443:7;29466:20;29484:1;29466:20;:::i;:::-;29461:25;;29500:20;29518:1;29500:20;:::i;:::-;29495:25;;29688:1;29620:66;29616:74;29613:1;29610:81;29605:1;29598:9;29591:17;29587:105;29584:131;;;29695:18;;:::i;:::-;29584:131;29743:1;29740;29736:9;29725:20;;29403:348;;;;:::o;29757:191::-;29797:4;29817:20;29835:1;29817:20;:::i;:::-;29812:25;;29851:20;29869:1;29851:20;:::i;:::-;29846:25;;29890:1;29887;29884:8;29881:34;;;29895:18;;:::i;:::-;29881:34;29940:1;29937;29933:9;29925:17;;29757:191;;;;:::o;29954:96::-;29991:7;30020:24;30038:5;30020:24;:::i;:::-;30009:35;;29954:96;;;:::o;30056:90::-;30090:7;30133:5;30126:13;30119:21;30108:32;;30056:90;;;:::o;30152:126::-;30189:7;30229:42;30222:5;30218:54;30207:65;;30152:126;;;:::o;30284:77::-;30321:7;30350:5;30339:16;;30284:77;;;:::o;30367:86::-;30402:7;30442:4;30435:5;30431:16;30420:27;;30367:86;;;:::o;30459:121::-;30517:9;30550:24;30568:5;30550:24;:::i;:::-;30537:37;;30459:121;;;:::o;30586:307::-;30654:1;30664:113;30678:6;30675:1;30672:13;30664:113;;;30763:1;30758:3;30754:11;30748:18;30744:1;30739:3;30735:11;30728:39;30700:2;30697:1;30693:10;30688:15;;30664:113;;;30795:6;30792:1;30789:13;30786:101;;;30875:1;30866:6;30861:3;30857:16;30850:27;30786:101;30635:258;30586:307;;;:::o;30899:320::-;30943:6;30980:1;30974:4;30970:12;30960:22;;31027:1;31021:4;31017:12;31048:18;31038:81;;31104:4;31096:6;31092:17;31082:27;;31038:81;31166:2;31158:6;31155:14;31135:18;31132:38;31129:84;;;31185:18;;:::i;:::-;31129:84;30950:269;30899:320;;;:::o;31225:281::-;31308:27;31330:4;31308:27;:::i;:::-;31300:6;31296:40;31438:6;31426:10;31423:22;31402:18;31390:10;31387:34;31384:62;31381:88;;;31449:18;;:::i;:::-;31381:88;31489:10;31485:2;31478:22;31268:238;31225:281;;:::o;31512:233::-;31551:3;31574:24;31592:5;31574:24;:::i;:::-;31565:33;;31620:66;31613:5;31610:77;31607:103;;;31690:18;;:::i;:::-;31607:103;31737:1;31730:5;31726:13;31719:20;;31512:233;;;:::o;31751:180::-;31799:77;31796:1;31789:88;31896:4;31893:1;31886:15;31920:4;31917:1;31910:15;31937:180;31985:77;31982:1;31975:88;32082:4;32079:1;32072:15;32106:4;32103:1;32096:15;32123:180;32171:77;32168:1;32161:88;32268:4;32265:1;32258:15;32292:4;32289:1;32282:15;32309:180;32357:77;32354:1;32347:88;32454:4;32451:1;32444:15;32478:4;32475:1;32468:15;32495:180;32543:77;32540:1;32533:88;32640:4;32637:1;32630:15;32664:4;32661:1;32654:15;32681:117;32790:1;32787;32780:12;32804:117;32913:1;32910;32903:12;32927:117;33036:1;33033;33026:12;33050:117;33159:1;33156;33149:12;33173:102;33214:6;33265:2;33261:7;33256:2;33249:5;33245:14;33241:28;33231:38;;33173:102;;;:::o;33281:222::-;33421:34;33417:1;33409:6;33405:14;33398:58;33490:5;33485:2;33477:6;33473:15;33466:30;33281:222;:::o;33509:243::-;33649:34;33645:1;33637:6;33633:14;33626:58;33718:26;33713:2;33705:6;33701:15;33694:51;33509:243;:::o;33758:225::-;33898:34;33894:1;33886:6;33882:14;33875:58;33967:8;33962:2;33954:6;33950:15;33943:33;33758:225;:::o;33989:221::-;34129:34;34125:1;34117:6;34113:14;34106:58;34198:4;34193:2;34185:6;34181:15;34174:29;33989:221;:::o;34216:179::-;34356:31;34352:1;34344:6;34340:14;34333:55;34216:179;:::o;34401:242::-;34541:34;34537:1;34529:6;34525:14;34518:58;34610:25;34605:2;34597:6;34593:15;34586:50;34401:242;:::o;34649:225::-;34789:34;34785:1;34777:6;34773:14;34766:58;34858:8;34853:2;34845:6;34841:15;34834:33;34649:225;:::o;34880:242::-;35020:34;35016:1;35008:6;35004:14;34997:58;35089:25;35084:2;35076:6;35072:15;35065:50;34880:242;:::o;35128:243::-;35268:34;35264:1;35256:6;35252:14;35245:58;35337:26;35332:2;35324:6;35320:15;35313:51;35128:243;:::o;35377:297::-;35517:34;35513:1;35505:6;35501:14;35494:58;35586:34;35581:2;35573:6;35569:15;35562:59;35655:11;35650:2;35642:6;35638:15;35631:36;35377:297;:::o;35680:182::-;35820:34;35816:1;35808:6;35804:14;35797:58;35680:182;:::o;35868:290::-;36008:34;36004:1;35996:6;35992:14;35985:58;36077:34;36072:2;36064:6;36060:15;36053:59;36146:4;36141:2;36133:6;36129:15;36122:29;35868:290;:::o;36164:224::-;36304:34;36300:1;36292:6;36288:14;36281:58;36373:7;36368:2;36360:6;36356:15;36349:32;36164:224;:::o;36394:223::-;36534:34;36530:1;36522:6;36518:14;36511:58;36603:6;36598:2;36590:6;36586:15;36579:31;36394:223;:::o;36623:289::-;36763:34;36759:1;36751:6;36747:14;36740:58;36832:34;36827:2;36819:6;36815:15;36808:59;36901:3;36896:2;36888:6;36884:15;36877:28;36623:289;:::o;36918:240::-;37058:34;37054:1;37046:6;37042:14;37035:58;37127:23;37122:2;37114:6;37110:15;37103:48;36918:240;:::o;37164:179::-;37304:31;37300:1;37292:6;37288:14;37281:55;37164:179;:::o;37349:181::-;37489:33;37485:1;37477:6;37473:14;37466:57;37349:181;:::o;37536:236::-;37676:34;37672:1;37664:6;37660:14;37653:58;37745:19;37740:2;37732:6;37728:15;37721:44;37536:236;:::o;37778:224::-;37918:34;37914:1;37906:6;37902:14;37895:58;37987:7;37982:2;37974:6;37970:15;37963:32;37778:224;:::o;38008:122::-;38081:24;38099:5;38081:24;:::i;:::-;38074:5;38071:35;38061:63;;38120:1;38117;38110:12;38061:63;38008:122;:::o;38136:116::-;38206:21;38221:5;38206:21;:::i;:::-;38199:5;38196:32;38186:60;;38242:1;38239;38232:12;38186:60;38136:116;:::o;38258:122::-;38331:24;38349:5;38331:24;:::i;:::-;38324:5;38321:35;38311:63;;38370:1;38367;38360:12;38311:63;38258:122;:::o

Swarm Source

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