ETH Price: $3,487.41 (-0.02%)
Gas: 2 Gwei

Token

HEX Doge (HEXDOGE)
 

Overview

Max Total Supply

666,000,000 HEXDOGE

Holders

76

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
3,786,835.75839622 HEXDOGE

Value
$0.00
0xE5B0B92d08293E0B2CFB6743d76Fb13dC4B5Ae53
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:
HEX

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-07
*/

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

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

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
  function totalSupply() external view returns (uint256);
  function decimals() external view returns (uint8);
  function symbol() external view returns (string memory);
  function name() external view returns (string memory);
  function getOwner() external view returns (address);
  function balanceOf(address account) external view returns (uint256);
  function transfer(address recipient, uint256 amount) external returns (bool);
  function allowance(address _owner, address spender) external view returns (uint256);
  function approve(address spender, uint256 amount) external returns (bool);
  function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function factory() external view returns (address);
}

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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract HEX is Context, IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;

    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public isExcludedFromMaxWalletRestrictions;

    mapping (address => bool) private _isSniperOrBlacklisted;
    
    mapping (address => uint256) firstBuy;
    
    uint256 private startingSupply = 666_000_000;

    string private _name = "HEX Doge";
    string private _symbol = "HEXDOGE";
//==========================
    // FEES
    struct taxes {
    uint buyFee;
    uint sellFee;
    uint transferFee;
    uint antiDumpLT;
    }

    taxes public Fees = taxes(
    {buyFee: 400, sellFee: 500, transferFee: 700, antiDumpLT: 800});
//==========================
    // Maxima

    struct Maxima {
    uint maxBuy;
    uint maxSell;
    uint maxTransfer;
    uint maxAntiDump;
    }

    Maxima public maxFees = Maxima(
    {maxBuy: 700, maxSell: 700, maxTransfer: 700, maxAntiDump: 700});
//==========================    
    //Proportions of Taxes
    struct feeProportions {
    uint liquidity;
    uint burn;
    uint Developer;
    uint developer;
    }

    feeProportions public Ratios = feeProportions(
    { liquidity: 0, burn: 0, Developer: 500, developer: 500});
//==========================
    // Anti-Dump
    struct jeetParameters {
    uint longTerm;
    bool enabled;
    }
    jeetParameters public terms = jeetParameters(
    {longTerm: 24 hours, enabled: true});
    // Anti-Dump
//==========================
    uint256 private constant masterTaxDivisor = 10000;
    uint256 private constant MAX = ~uint256(0);
    uint8 constant private _decimals = 9;
 
    uint256 private _tTotal = startingSupply * 10**_decimals;
    uint256 private _tFeeTotal;

    IUniswapV2Router02 public dexRouter;
    address public lpPair;

    // UNI ROUTER
    address constant private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD; // Receives tokens, deflates supply, increases price floor.
    
    address payable public _DeveloperWallet = payable(0xe4dBB14D22bf35312164B97969598a3e4974a220);
    address payable public _developerWallet = payable(0xe4dBB14D22bf35312164B97969598a3e4974a220);
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    
    uint256 private maxTxPercent = 1;
    uint256 private maxTxDivisor = 100;
    uint256 private _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor;
    
    uint256 private maxWalletPercent = 2;
    uint256 private maxWalletDivisor = 100;
    uint256 private _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor;
    
    uint256 private swapThreshold = (_tTotal * 5) / 10_000;
    uint256 private swapAmount = (_tTotal * 5) / 1_000;

    bool private sniperProtection = true;
    bool public _hasLiqBeenAdded = false;
    uint256 private _liqAddStatus = 0;
    uint256 private _liqAddBlock = 0;
    uint256 private _liqAddStamp = 0;
    uint256 private _initialLiquidityAmount = 0; // make constant
    uint256 private snipeBlockAmt = 0;
    uint256 public snipersCaught = 0;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event SniperCaught(address sniperAddress);
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Caller != owner.");
        _;
    }
    
    constructor () payable {
        _tOwned[_msgSender()] = _tTotal;

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

        dexRouter = IUniswapV2Router02(_routerAddress);
        lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;
        _allowances[address(this)][address(dexRouter)] = type(uint256).max;

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

        // Approve the owner for Uniswap, timesaver.
        _approve(_msgSender(), _routerAddress, _tTotal);

        // Event regarding the tTotal transferred to the _msgSender.
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and recnouncements.
    // This allows for removal of ownership privelages from the owner once renounced or transferred.
    function owner() public view returns (address) {
        return _owner;
    }

    function transferOwner(address newOwner) external onlyOwner() {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if (_DeveloperWallet == payable(_owner))
            _DeveloperWallet = payable(newOwner);
        
        _allowances[_owner][newOwner] = balanceOf(_owner);
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

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

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

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

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

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

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

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

    function approveMax(address spender) public returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function getFirstBuy(address account) public view returns (uint256) {
        return firstBuy[account];
    }

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

        return _transfer(sender, recipient, amount);
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function setNewRouter(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
    }

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

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

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


    function excludeFromWalletRestrictions(address excludedAddress) public onlyOwner{
        isExcludedFromMaxWalletRestrictions[excludedAddress] = true;
    }

    function revokeExcludedFromWalletRestrictions(address excludedAddress) public onlyOwner{
        isExcludedFromMaxWalletRestrictions[excludedAddress] = false;
    }

    function isSniperOrBlacklisted(address account) public view returns (bool) {
        return _isSniperOrBlacklisted[account];
    }

    function isProtected(uint256 rInitializer) external onlyOwner {
        require (_liqAddStatus == 0, "Error.");
        _liqAddStatus = rInitializer;
        snipeBlockAmt = 3;
    }

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

    function setRatios(uint _liquidity, uint _Developer, uint _developer, uint _burn) external onlyOwner {
        require ( (_liquidity+_Developer+_developer+_burn) == 1100, "!(1K)");
        Ratios.liquidity = _liquidity;
        Ratios.Developer = _Developer;
        Ratios.developer = _developer;
        Ratios.burn = _burn;}

    function antiDumpParameters(bool _enabled, uint _longTerm) external onlyOwner {
        require(_longTerm <= 24);
        terms.longTerm = _longTerm * 1 hours;
        terms.enabled = _enabled;}

    function setTaxes(uint _buyFee, uint _sellFee, uint _transferFee, uint _antiDumpLT) external onlyOwner {
        require(_buyFee <= maxFees.maxBuy
                && _sellFee <= maxFees.maxSell
                && _transferFee <= maxFees.maxTransfer
                && _antiDumpLT <= maxFees.maxAntiDump,
                "Cannot exceed maximums.");
         Fees.buyFee = _buyFee;
         Fees.sellFee = _sellFee;
         Fees.transferFee = _transferFee;
         Fees.antiDumpLT= _antiDumpLT;

    }

    function setMaxTxPercent(uint percent, uint divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply.");
        _maxTxAmount = check;
    }

    function setMaxWalletSize(uint percent, uint divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply.");
        _maxWalletSize = check;

    }

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

    function setWallets(address payable DeveloperWallet, address payable developerWallet) external onlyOwner {
        _DeveloperWallet = payable(DeveloperWallet);
        _developerWallet = payable(developerWallet);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function _hasLimits(address from, address to) private view returns (bool) {
        return from != owner()
            && to != owner()
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: Zero address.");
        require(to != address(0), "ERC20: Zero address.");
        require(amount > 0, "Must >0.");
        if(_hasLimits(from, to)) {
            if(!(isExcludedFromMaxWalletRestrictions[from] || isExcludedFromMaxWalletRestrictions[to])) {
                if(lpPairs[from] || lpPairs[to]){
                require(amount <= _maxTxAmount, "Exceeds the maxTxAmount.");
                }
                if(to != _routerAddress && !lpPairs[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                }

            }
            
        }


        if (_tOwned[to] == 0) {
            firstBuy[to] = block.timestamp;
        }

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

        if (lpPairs[to]) {
            if (!inSwapAndLiquify
                && swapAndLiquifyEnabled
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance >= swapThreshold) {
                    if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                    swapAndLiquify(contractTokenBalance);
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        if (Ratios.liquidity + Ratios.Developer + Ratios.developer == 0)
            return;
        uint256 toLiquify = ((contractTokenBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.Developer + Ratios.developer) ) / 2;

        uint256 toSwapForEth = contractTokenBalance - toLiquify;
        swapTokensForEth(toSwapForEth);

        uint256 currentBalance = address(this).balance;
        uint256 liquidityBalance = ((currentBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.Developer + Ratios.developer) ) / 2;

        if (toLiquify > 0) {
            addLiquidity(toLiquify, liquidityBalance);
            emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify);
        }
        if (contractTokenBalance - toLiquify > 0) {
            _DeveloperWallet.transfer(((currentBalance - liquidityBalance) * Ratios.Developer) / (Ratios.Developer + Ratios.developer));
            _developerWallet.transfer(address(this).balance);
        }
    }

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

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            if (snipeBlockAmt != 3) {
                _liqAddBlock = block.number + 5000;
            } else {
                _liqAddBlock = block.number;
            }

            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            _liqAddStamp = block.timestamp;

            swapAndLiquifyEnabled = true;
            emit SwapAndLiquifyEnabledUpdated(true);
        }
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) private returns (bool) {
        if (sniperProtection){
            if (isSniperOrBlacklisted(from) || isSniperOrBlacklisted(to)) {
                revert("Sniper rejected.");
            }

            if (!_hasLiqBeenAdded) {
                _checkLiquidityAdd(from, to);
                if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                    revert("Only owner can transfer at this time.");
                }
            } else {
                if (_liqAddBlock > 0 
                    && lpPairs[from] 
                    && _hasLimits(from, to)
                ) {
                    if (block.number - _liqAddBlock < snipeBlockAmt) {
                        _isSniperOrBlacklisted[to] = true;
                        snipersCaught ++;
                        emit SniperCaught(to);
                    }
                }
            }
        }

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

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

    function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 currentFee;

        if (to == lpPair) {
            if (terms.enabled){
                if (firstBuy[from] + terms.longTerm > block.timestamp) {currentFee = Fees.antiDumpLT;}

                else {currentFee = Fees.sellFee;}
            }
            else {currentFee=Fees.sellFee;}
            } 

        else if (from == lpPair) {currentFee = Fees.buyFee;} 

        else {currentFee = Fees.transferFee;}

        if (_hasLimits(from, to)){
            if (_liqAddStatus == 0 || _liqAddStatus != (1)) {
                revert();
            }
        }
        uint256 burnAmt = (amount * currentFee * Ratios.burn) / (Ratios.burn + Ratios.liquidity + Ratios.Developer + Ratios.developer ) / masterTaxDivisor;
        uint256 feeAmount = (amount * currentFee / masterTaxDivisor) - burnAmt;
        _tOwned[DEAD] += burnAmt;
        _tOwned[address(this)] += (feeAmount);
        emit Transfer(from, DEAD, burnAmt);
        emit Transfer(from, address(this), feeAmount);
        return amount - feeAmount - burnAmt;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Fees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"},{"internalType":"uint256","name":"transferFee","type":"uint256"},{"internalType":"uint256","name":"antiDumpLT","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Ratios","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"Developer","type":"uint256"},{"internalType":"uint256","name":"developer","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_DeveloperWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developerWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_longTerm","type":"uint256"}],"name":"antiDumpParameters","outputs":[],"stateMutability":"nonpayable","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"}],"name":"excludeFromWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getFirstBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxWalletRestrictions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rInitializer","type":"uint256"}],"name":"isProtected","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSniperOrBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxFees","outputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxTransfer","type":"uint256"},{"internalType":"uint256","name":"maxAntiDump","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"}],"name":"revokeExcludedFromWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"},{"internalType":"uint256","name":"_developer","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_transferFee","type":"uint256"},{"internalType":"uint256","name":"_antiDumpLT","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"DeveloperWallet","type":"address"},{"internalType":"address payable","name":"developerWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"terms","outputs":[{"internalType":"uint256","name":"longTerm","type":"uint256"},{"internalType":"bool","name":"enabled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260006003556327b25a80600a556040518060400160405280600881526020017f48455820446f6765000000000000000000000000000000000000000000000000815250600b90805190602001906200005e92919062000c4b565b506040518060400160405280600781526020017f484558444f474500000000000000000000000000000000000000000000000000815250600c9080519060200190620000ac92919062000c4b565b50604051806080016040528061019081526020016101f481526020016102bc8152602001610320815250600d60008201518160000155602082015181600101556040820151816002015560608201518160030155505060405180608001604052806102bc81526020016102bc81526020016102bc81526020016102bc8152506011600082015181600001556020820151816001015560408201518160020155606082015181600301555050604051806080016040528060008152602001600081526020016101f481526020016101f4815250601560008201518160000155602082015181600101556040820151816002015560608201518160030155505060405180604001604052806201518081526020016001151581525060196000820151816000015560208201518160010160006101000a81548160ff02191690831515021790555050506009600a62000203919062000e9d565b600a5462000212919062000fda565b601b5573e4dbb14d22bf35312164b97969598a3e4974a220601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e4dbb14d22bf35312164b97969598a3e4974a220602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000602060156101000a81548160ff02191690831515021790555060016021556064602255602254602154601b54620002f9919062000fda565b62000305919062000e0a565b60235560026024556064602555602554602454601b5462000327919062000fda565b62000333919062000e0a565b6026556127106005601b546200034a919062000fda565b62000356919062000e0a565b6027556103e86005601b546200036d919062000fda565b62000379919062000e0a565b6028556001602960006101000a81548160ff0219169083151502179055506000602960016101000a81548160ff0219169083151502179055506000602a556000602b556000602c556000602d556000602e556000602f55601b5460016000620003e762000a4760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200052357600080fd5b505afa15801562000538573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055e919062000d12565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620005e257600080fd5b505afa158015620005f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200061d919062000d12565b306040518363ffffffff1660e01b81526004016200063d92919062000d8d565b602060405180830381600087803b1580156200065857600080fd5b505af11580156200066d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000693919062000d12565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160026000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600660006200082662000a4f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560006200093f62000a4f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620009c8620009a462000a4760201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d601b5462000a7860201b60201c565b620009d862000a4760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601b5460405162000a39919062000ddc565b60405180910390a36200119e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000aeb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ae29062000dba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000b5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b559062000dba565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000c3e919062000ddc565b60405180910390a3505050565b82805462000c599062001086565b90600052602060002090601f01602090048101928262000c7d576000855562000cc9565b82601f1062000c9857805160ff191683800117855562000cc9565b8280016001018555821562000cc9579182015b8281111562000cc857825182559160200191906001019062000cab565b5b50905062000cd8919062000cdc565b5090565b5b8082111562000cf757600081600090555060010162000cdd565b5090565b60008151905062000d0c8162001184565b92915050565b60006020828403121562000d2b5762000d2a62001149565b5b600062000d3b8482850162000cfb565b91505092915050565b62000d4f816200103b565b82525050565b600062000d6460138362000df9565b915062000d71826200115b565b602082019050919050565b62000d87816200106f565b82525050565b600060408201905062000da4600083018562000d44565b62000db3602083018462000d44565b9392505050565b6000602082019050818103600083015262000dd58162000d55565b9050919050565b600060208201905062000df3600083018462000d7c565b92915050565b600082825260208201905092915050565b600062000e17826200106f565b915062000e24836200106f565b92508262000e375762000e36620010eb565b5b828204905092915050565b6000808291508390505b600185111562000e945780860481111562000e6c5762000e6b620010bc565b5b600185161562000e7c5780820291505b808102905062000e8c856200114e565b945062000e4c565b94509492505050565b600062000eaa826200106f565b915062000eb78362001079565b925062000ee67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000eee565b905092915050565b60008262000f00576001905062000fd3565b8162000f10576000905062000fd3565b816001811462000f29576002811462000f345762000f6a565b600191505062000fd3565b60ff84111562000f495762000f48620010bc565b5b8360020a91508482111562000f635762000f62620010bc565b5b5062000fd3565b5060208310610133831016604e8410600b841016171562000fa45782820a90508381111562000f9e5762000f9d620010bc565b5b62000fd3565b62000fb3848484600162000e42565b9250905081840481111562000fcd5762000fcc620010bc565b5b81810290505b9392505050565b600062000fe7826200106f565b915062000ff4836200106f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001030576200102f620010bc565b5b828202905092915050565b600062001048826200104f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600060028204905060018216806200109f57607f821691505b60208210811415620010b657620010b56200111a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b60008160011c9050919050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b6200118f816200103b565b81146200119b57600080fd5b50565b61566880620011ae6000396000f3fe60806040526004361061028c5760003560e01c806381c6f11b1161015a578063bc1323e8116100c1578063e5b55c6b1161007a578063e5b55c6b14610a2c578063e79d416014610a57578063e83e34b114610a82578063eafb5a3c14610ab0578063eec2744e14610ad9578063fb78680d14610b0257610293565b8063bc1323e81461091f578063c49b9a8014610948578063ce8b79c914610971578063d3f6a1571461099a578063d5025625146109c3578063dd62ed3e146109ef57610293565b8063a12a7d6111610113578063a12a7d61146107e6578063a13ce2c61461080f578063a457c2d71461084c578063a9059cbb14610889578063b4969beb146108c6578063b5f7bfa2146108f157610293565b806381c6f11b146106c2578063893d20e8146106eb57806389fd9bc1146107165780638c7321ad146107535780638da5cb5b1461079057806395d89b41146107bb57610293565b80633aaa36e6116101fe57806350a8e016116101b757806350a8e016146105b4578063571ac8b0146105df578063590ffdce1461061c57806370a0823114610645578063715018a61461068257806380c581d11461069957610293565b80633aaa36e6146104a15780633f3cf56c146104cf578063452ed4f1146104f85780634a74bb02146105235780634fb2e45d1461054e5780634fbee1931461057757610293565b806318160ddd1161025057806318160ddd1461037f57806323b872dd146103aa57806326003957146103e7578063313ce56714610410578063355b74de1461043b578063395093511461046457610293565b806303fd2a451461029857806306fdde03146102c35780630758d924146102ee578063095ea7b3146103195780631793fe4e1461035657610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610b2b565b6040516102ba9190614ae2565b60405180910390f35b3480156102cf57600080fd5b506102d8610b31565b6040516102e59190614bd8565b60405180910390f35b3480156102fa57600080fd5b50610303610bc3565b6040516103109190614bbd565b60405180910390f35b34801561032557600080fd5b50610340600480360381019061033b91906145da565b610be9565b60405161034d9190614ba2565b60405180910390f35b34801561036257600080fd5b5061037d60048036038101906103789190614747565b610c07565b005b34801561038b57600080fd5b50610394610d2f565b6040516103a19190614dda565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc9190614547565b610d39565b6040516103de9190614ba2565b60405180910390f35b3480156103f357600080fd5b5061040e600480360381019061040991906146b4565b610e86565b005b34801561041c57600080fd5b50610425610f96565b6040516104329190614ef4565b60405180910390f35b34801561044757600080fd5b50610462600480360381019061045d9190614647565b610f9f565b005b34801561047057600080fd5b5061048b600480360381019061048691906145da565b61107a565b6040516104989190614ba2565b60405180910390f35b3480156104ad57600080fd5b506104b6611126565b6040516104c69493929190614eaf565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f191906146b4565b611144565b005b34801561050457600080fd5b5061050d611254565b60405161051a9190614ae2565b60405180910390f35b34801561052f57600080fd5b5061053861127a565b6040516105459190614ba2565b60405180910390f35b34801561055a57600080fd5b506105756004803603810190610570919061446d565b61128d565b005b34801561058357600080fd5b5061059e6004803603810190610599919061446d565b6116fe565b6040516105ab9190614ba2565b60405180910390f35b3480156105c057600080fd5b506105c9611754565b6040516105d69190614ba2565b60405180910390f35b3480156105eb57600080fd5b506106066004803603810190610601919061446d565b611767565b6040516106139190614ba2565b60405180910390f35b34801561062857600080fd5b50610643600480360381019061063e919061459a565b61179a565b005b34801561065157600080fd5b5061066c6004803603810190610667919061446d565b61188a565b6040516106799190614dda565b60405180910390f35b34801561068e57600080fd5b506106976118d3565b005b3480156106a557600080fd5b506106c060048036038101906106bb919061459a565b611a51565b005b3480156106ce57600080fd5b506106e960048036038101906106e49190614687565b611c11565b005b3480156106f757600080fd5b50610700611cfd565b60405161070d9190614ae2565b60405180910390f35b34801561072257600080fd5b5061073d6004803603810190610738919061446d565b611d0c565b60405161074a9190614ba2565b60405180910390f35b34801561075f57600080fd5b5061077a6004803603810190610775919061446d565b611d62565b6040516107879190614ba2565b60405180910390f35b34801561079c57600080fd5b506107a5611d82565b6040516107b29190614ae2565b60405180910390f35b3480156107c757600080fd5b506107d0611dab565b6040516107dd9190614bd8565b60405180910390f35b3480156107f257600080fd5b5061080d60048036038101906108089190614747565b611e3d565b005b34801561081b57600080fd5b506108366004803603810190610831919061446d565b611f7b565b6040516108439190614dda565b60405180910390f35b34801561085857600080fd5b50610873600480360381019061086e91906145da565b611fc4565b6040516108809190614ba2565b60405180910390f35b34801561089557600080fd5b506108b060048036038101906108ab91906145da565b612070565b6040516108bd9190614ba2565b60405180910390f35b3480156108d257600080fd5b506108db61208f565b6040516108e89190614afd565b60405180910390f35b3480156108fd57600080fd5b506109066120b5565b6040516109169493929190614eaf565b60405180910390f35b34801561092b57600080fd5b506109466004803603810190610941919061446d565b6120d3565b005b34801561095457600080fd5b5061096f600480360381019061096a919061461a565b6121c3565b005b34801561097d57600080fd5b506109986004803603810190610993919061446d565b6122ac565b005b3480156109a657600080fd5b506109c160048036038101906109bc91906144c7565b61239c565b005b3480156109cf57600080fd5b506109d86124b7565b6040516109e6929190614df5565b60405180910390f35b3480156109fb57600080fd5b50610a166004803603810190610a119190614507565b6124d6565b604051610a239190614dda565b60405180910390f35b348015610a3857600080fd5b50610a4161255d565b604051610a4e9190614afd565b60405180910390f35b348015610a6357600080fd5b50610a6c612583565b604051610a799190614dda565b60405180910390f35b348015610a8e57600080fd5b50610a97612589565b604051610aa79493929190614eaf565b60405180910390f35b348015610abc57600080fd5b50610ad76004803603810190610ad2919061446d565b6125a7565b005b348015610ae557600080fd5b50610b006004803603810190610afb919061459a565b612a53565b005b348015610b0e57600080fd5b50610b296004803603810190610b249190614747565b612b43565b005b61dead81565b6060600b8054610b409061515b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6c9061515b565b8015610bb95780601f10610b8e57610100808354040283529160200191610bb9565b820191906000526020600020905b815481529060010190602001808311610b9c57829003601f168201915b5050505050905090565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610bfd610bf6612c1c565b8484612c24565b6001905092915050565b610c0f612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9390614bfa565b60405180910390fd5b61044c81838587610cad9190614f64565b610cb79190614f64565b610cc19190614f64565b14610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf890614dba565b60405180910390fd5b8360156000018190555082601560020181905550816015600301819055508060156001018190555050505050565b6000601b54905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e725781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6a9190615045565b925050819055505b610e7d848484612def565b90509392505050565b610e8e612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1290614bfa565b60405180910390fd5b60008183601b54610f2c9190614feb565b610f369190614fba565b905061012c601b54610f489190614fba565b811015610f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8190614d7a565b60405180910390fd5b80602681905550505050565b60006009905090565b610fa7612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102b90614bfa565b60405180910390fd5b601881111561104257600080fd5b610e10816110509190614feb565b60196000018190555081601960010160006101000a81548160ff0219169083151502179055505050565b600061111c611087612c1c565b848460046000611095612c1c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111179190614f64565b612c24565b6001905092915050565b600d8060000154908060010154908060020154908060030154905084565b61114c612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d090614bfa565b60405180910390fd5b60008183601b546111ea9190614feb565b6111f49190614fba565b905061012c601b546112069190614fba565b811015611248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123f90614d7a565b60405180910390fd5b80602381905550505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602060159054906101000a900460ff1681565b611295612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131990614bfa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138990614d9a565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fa90614d9a565b60405180910390fd5b61142e60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600061179a565b61143981600161179a565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156114f15780601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b61151a60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661188a565b600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006115e660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661188a565b11156116415761163f60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261163a60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661188a565b612def565b505b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b602960019054906101000a900460ff1681565b6000611793827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610be9565b9050919050565b6117a2612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461182f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182690614bfa565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118db612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195f90614bfa565b60405180910390fd5b61199360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600061179a565b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b611a59612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add90614bfa565b60405180910390fd5b600015158115151415611b50576000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611c0d565b600060035414611bad5762093a8060035442611b6c9190615045565b11611bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba390614c9a565b60405180910390fd5b5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426003819055505b5050565b611c19612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9d90614bfa565b60405180910390fd5b6000602a5414611ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce290614d1a565b60405180910390fd5b80602a819055506003602e8190555050565b6000611d07611d82565b905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60076020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c8054611dba9061515b565b80601f0160208091040260200160405190810160405280929190818152602001828054611de69061515b565b8015611e335780601f10611e0857610100808354040283529160200191611e33565b820191906000526020600020905b815481529060010190602001808311611e1657829003601f168201915b5050505050905090565b611e45612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec990614bfa565b60405180910390fd5b6011600001548411158015611eec57506011600101548311155b8015611efd57506011600201548211155b8015611f0e57506011600301548111155b611f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4490614c5a565b60405180910390fd5b83600d6000018190555082600d6001018190555081600d6002018190555080600d6003018190555050505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000612066611fd1612c1c565b848460046000611fdf612c1c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120619190615045565b612c24565b6001905092915050565b600061208461207d612c1c565b8484612def565b506001905092915050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60158060000154908060010154908060020154908060030154905084565b6120db612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215f90614bfa565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6121cb612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224f90614bfa565b60405180910390fd5b80602060156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516122a19190614ba2565b60405180910390a150565b6122b4612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233890614bfa565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6123a4612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612431576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242890614bfa565b60405180910390fd5b81601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60198060000154908060010160009054906101000a900460ff16905082565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602f5481565b60118060000154908060010154908060020154908060030154905084565b6125af612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461263c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263390614bfa565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561268957600080fd5b505afa15801561269d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c1919061449a565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561272357600080fd5b505afa158015612737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275b919061449a565b6040518363ffffffff1660e01b8152600401612778929190614b18565b60206040518083038186803b15801561279057600080fd5b505afa1580156127a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c8919061449a565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129cb578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561284557600080fd5b505afa158015612859573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287d919061449a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156128df57600080fd5b505afa1580156128f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612917919061449a565b6040518363ffffffff1660e01b8152600401612934929190614b18565b602060405180830381600087803b15801561294e57600080fd5b505af1158015612962573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612986919061449a565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612a0d565b80601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b612a5b612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adf90614bfa565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612b4b612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bcf90614bfa565b60405180910390fd5b8284601b54612be79190614feb565b612bf19190614fba565b6027819055508082601b54612c069190614feb565b612c109190614fba565b60288190555050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8b90614cda565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cfb90614cda565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612de29190614dda565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5790614c7a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec790614c7a565b60405180910390fd5b60008211612f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0a90614cba565b60405180910390fd5b612f1d84846133b3565b156131ad57600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612fc35750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6131ac57600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130685750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130b3576023548211156130b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a990614d5a565b60405180910390fd5b5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561314d5750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131ab576026548261315f8561188a565b6131699190614f64565b11156131aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a190614d3a565b60405180910390fd5b5b5b5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561323a5742600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600060019050600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132e15750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132eb57600090505b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561339d57602060149054906101000a900460ff161580156133665750602060159054906101000a900460ff165b1561339c5760006133763061188a565b9050602754811061339a5760285481106133905760285490505b6133998161358a565b5b505b5b6133a98585858461382c565b9150509392505050565b60006133bd611d82565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561342b57506133fb611d82565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156134815750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134d75750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613511575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561354a5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561358257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6001602060146101000a81548160ff02191690831515021790555060006015600301546015600201546015600001546135c39190614f64565b6135cd9190614f64565b14156135d85761380e565b600060026015600301546015600201546015600001546135f89190614f64565b6136029190614f64565b601560000154846136139190614feb565b61361d9190614fba565b6136279190614fba565b9050600081836136379190615045565b905061364281613b8f565b6000479050600060026015600301546015600201546015600001546136679190614f64565b6136719190614f64565b601560000154846136829190614feb565b61368c9190614fba565b6136969190614fba565b905060008411156136e7576136ab8482613db4565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482866040516136de93929190614e78565b60405180910390a15b600084866136f59190615045565b111561380957601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60156003015460156002015461374d9190614f64565b601560020154848661375f9190615045565b6137699190614feb565b6137739190614fba565b9081150290604051600060405180830381858888f1935050505015801561379e573d6000803e3d6000fd5b50602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015613807573d6000803e3d6000fd5b505b505050505b6000602060146101000a81548160ff02191690831515021790555050565b6000602960009054906101000a900460ff1615613a565761384c85611d0c565b8061385c575061385b84611d0c565b5b1561389c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161389390614cfa565b60405180910390fd5b602960019054906101000a900460ff16613922576138ba8585613e7b565b602960019054906101000a900460ff161580156138dd57506138dc85856133b3565b5b1561391d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161391490614c3a565b60405180910390fd5b613a55565b6000602b5411801561397d5750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561398f575061398e85856133b3565b5b15613a5457602e54602b54436139a59190615045565b1015613a53576001600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602f6000815480929190613a169061518d565b91905055507f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e584604051613a4a9190614ae2565b60405180910390a15b5b5b5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613aa59190615045565b92505081905550600082613ab95783613ac5565b613ac4868686614031565b5b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613b169190614f64565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b7a9190614dda565b60405180910390a36001915050949350505050565b6000600267ffffffffffffffff811115613bac57613bab615292565b5b604051908082528060200260200182016040528015613bda5781602001602082028036833780820191505090505b5090503081600081518110613bf257613bf1615263565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613c9457600080fd5b505afa158015613ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ccc919061449a565b81600181518110613ce057613cdf615263565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d7e959493929190614e1e565b600060405180830381600087803b158015613d9857600080fd5b505af1158015613dac573d6000803e3d6000fd5b505050505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613e00611d82565b426040518863ffffffff1660e01b8152600401613e2296959493929190614b41565b6060604051808303818588803b158015613e3b57600080fd5b505af1158015613e4f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613e7491906146f4565b5050505050565b602960019054906101000a900460ff1615613ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ec290614c1a565b60405180910390fd5b613ed582826133b3565b158015613f2f5750601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1561402d576003602e5414613f575761138843613f4c9190614f64565b602b81905550613f5f565b43602b819055505b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602960016101000a81548160ff02191690831515021790555042602c819055506001602060156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15960016040516140249190614ba2565b60405180910390a15b5050565b600080601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561412257601960010160009054906101000a900460ff16156141145742601960000154600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546140f39190614f64565b111561410657600d60030154905061410f565b600d6001015490505b61411d565b600d6001015490505b61418f565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561418557600d60000154905061418e565b600d6002015490505b5b61419985856133b3565b156141bd576000602a5414806141b257506001602a5414155b156141bc57600080fd5b5b60006127106015600301546015600201546015600001546015600101546141e49190614f64565b6141ee9190614f64565b6141f89190614f64565b601560010154848761420a9190614feb565b6142149190614feb565b61421e9190614fba565b6142289190614fba565b9050600081612710848761423c9190614feb565b6142469190614fba565b6142509190615045565b9050816001600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546142a39190614f64565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546142f99190614f64565b9250508190555061dead73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161435f9190614dda565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516143c49190614dda565b60405180910390a38181866143d99190615045565b6143e39190615045565b93505050509392505050565b6000813590506143fe816155d6565b92915050565b600081519050614413816155d6565b92915050565b600081359050614428816155ed565b92915050565b60008135905061443d81615604565b92915050565b6000813590506144528161561b565b92915050565b6000815190506144678161561b565b92915050565b600060208284031215614483576144826152c1565b5b6000614491848285016143ef565b91505092915050565b6000602082840312156144b0576144af6152c1565b5b60006144be84828501614404565b91505092915050565b600080604083850312156144de576144dd6152c1565b5b60006144ec85828601614419565b92505060206144fd85828601614419565b9150509250929050565b6000806040838503121561451e5761451d6152c1565b5b600061452c858286016143ef565b925050602061453d858286016143ef565b9150509250929050565b6000806000606084860312156145605761455f6152c1565b5b600061456e868287016143ef565b935050602061457f868287016143ef565b925050604061459086828701614443565b9150509250925092565b600080604083850312156145b1576145b06152c1565b5b60006145bf858286016143ef565b92505060206145d08582860161442e565b9150509250929050565b600080604083850312156145f1576145f06152c1565b5b60006145ff858286016143ef565b925050602061461085828601614443565b9150509250929050565b6000602082840312156146305761462f6152c1565b5b600061463e8482850161442e565b91505092915050565b6000806040838503121561465e5761465d6152c1565b5b600061466c8582860161442e565b925050602061467d85828601614443565b9150509250929050565b60006020828403121561469d5761469c6152c1565b5b60006146ab84828501614443565b91505092915050565b600080604083850312156146cb576146ca6152c1565b5b60006146d985828601614443565b92505060206146ea85828601614443565b9150509250929050565b60008060006060848603121561470d5761470c6152c1565b5b600061471b86828701614458565b935050602061472c86828701614458565b925050604061473d86828701614458565b9150509250925092565b60008060008060808587031215614761576147606152c1565b5b600061476f87828801614443565b945050602061478087828801614443565b935050604061479187828801614443565b92505060606147a287828801614443565b91505092959194509250565b60006147ba83836147d5565b60208301905092915050565b6147cf8161508b565b82525050565b6147de81615079565b82525050565b6147ed81615079565b82525050565b60006147fe82614f1f565b6148088185614f42565b935061481383614f0f565b8060005b8381101561484457815161482b88826147ae565b975061483683614f35565b925050600181019050614817565b5085935050505092915050565b61485a8161509d565b82525050565b614869816150e0565b82525050565b614878816150f2565b82525050565b600061488982614f2a565b6148938185614f53565b93506148a3818560208601615128565b6148ac816152c6565b840191505092915050565b60006148c4601083614f53565b91506148cf826152d7565b602082019050919050565b60006148e7602383614f53565b91506148f282615300565b604082019050919050565b600061490a602583614f53565b91506149158261534f565b604082019050919050565b600061492d601783614f53565b91506149388261539e565b602082019050919050565b6000614950601483614f53565b915061495b826153c7565b602082019050919050565b6000614973601283614f53565b915061497e826153f0565b602082019050919050565b6000614996600883614f53565b91506149a182615419565b602082019050919050565b60006149b9601383614f53565b91506149c482615442565b602082019050919050565b60006149dc601083614f53565b91506149e78261546b565b602082019050919050565b60006149ff600683614f53565b9150614a0a82615494565b602082019050919050565b6000614a22601a83614f53565b9150614a2d826154bd565b602082019050919050565b6000614a45601883614f53565b9150614a50826154e6565b602082019050919050565b6000614a68602583614f53565b9150614a738261550f565b604082019050919050565b6000614a8b603d83614f53565b9150614a968261555e565b604082019050919050565b6000614aae600583614f53565b9150614ab9826155ad565b602082019050919050565b614acd816150c9565b82525050565b614adc816150d3565b82525050565b6000602082019050614af760008301846147e4565b92915050565b6000602082019050614b1260008301846147c6565b92915050565b6000604082019050614b2d60008301856147e4565b614b3a60208301846147e4565b9392505050565b600060c082019050614b5660008301896147e4565b614b636020830188614ac4565b614b70604083018761486f565b614b7d606083018661486f565b614b8a60808301856147e4565b614b9760a0830184614ac4565b979650505050505050565b6000602082019050614bb76000830184614851565b92915050565b6000602082019050614bd26000830184614860565b92915050565b60006020820190508181036000830152614bf2818461487e565b905092915050565b60006020820190508181036000830152614c13816148b7565b9050919050565b60006020820190508181036000830152614c33816148da565b9050919050565b60006020820190508181036000830152614c53816148fd565b9050919050565b60006020820190508181036000830152614c7381614920565b9050919050565b60006020820190508181036000830152614c9381614943565b9050919050565b60006020820190508181036000830152614cb381614966565b9050919050565b60006020820190508181036000830152614cd381614989565b9050919050565b60006020820190508181036000830152614cf3816149ac565b9050919050565b60006020820190508181036000830152614d13816149cf565b9050919050565b60006020820190508181036000830152614d33816149f2565b9050919050565b60006020820190508181036000830152614d5381614a15565b9050919050565b60006020820190508181036000830152614d7381614a38565b9050919050565b60006020820190508181036000830152614d9381614a5b565b9050919050565b60006020820190508181036000830152614db381614a7e565b9050919050565b60006020820190508181036000830152614dd381614aa1565b9050919050565b6000602082019050614def6000830184614ac4565b92915050565b6000604082019050614e0a6000830185614ac4565b614e176020830184614851565b9392505050565b600060a082019050614e336000830188614ac4565b614e40602083018761486f565b8181036040830152614e5281866147f3565b9050614e6160608301856147e4565b614e6e6080830184614ac4565b9695505050505050565b6000606082019050614e8d6000830186614ac4565b614e9a6020830185614ac4565b614ea76040830184614ac4565b949350505050565b6000608082019050614ec46000830187614ac4565b614ed16020830186614ac4565b614ede6040830185614ac4565b614eeb6060830184614ac4565b95945050505050565b6000602082019050614f096000830184614ad3565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614f6f826150c9565b9150614f7a836150c9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614faf57614fae6151d6565b5b828201905092915050565b6000614fc5826150c9565b9150614fd0836150c9565b925082614fe057614fdf615205565b5b828204905092915050565b6000614ff6826150c9565b9150615001836150c9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561503a576150396151d6565b5b828202905092915050565b6000615050826150c9565b915061505b836150c9565b92508282101561506e5761506d6151d6565b5b828203905092915050565b6000615084826150a9565b9050919050565b6000615096826150a9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006150eb82615104565b9050919050565b60006150fd826150c9565b9050919050565b600061510f82615116565b9050919050565b6000615121826150a9565b9050919050565b60005b8381101561514657808201518184015260208101905061512b565b83811115615155576000848401525b50505050565b6000600282049050600182168061517357607f821691505b6020821081141561518757615186615234565b5b50919050565b6000615198826150c9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156151cb576151ca6151d6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f43616c6c657220213d206f776e65722e00000000000000000000000000000000600082015250565b7f4c697175696469747920616c726561647920616464656420616e64206d61726b60008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b7f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060008201527f74696d652e000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000600082015250565b7f45524332303a205a65726f20616464726573732e000000000000000000000000600082015250565b7f4f6e65207765656b20636f6f6c646f776e2e0000000000000000000000000000600082015250565b7f4d757374203e302e000000000000000000000000000000000000000000000000600082015250565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b7f536e697065722072656a65637465642e00000000000000000000000000000000600082015250565b7f4572726f722e0000000000000000000000000000000000000000000000000000600082015250565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b7f4d7573742062652061626f766520302e33337e25206f6620746f74616c20737560008201527f70706c792e000000000000000000000000000000000000000000000000000000602082015250565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660008201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b7f2128314b29000000000000000000000000000000000000000000000000000000600082015250565b6155df81615079565b81146155ea57600080fd5b50565b6155f68161508b565b811461560157600080fd5b50565b61560d8161509d565b811461561857600080fd5b50565b615624816150c9565b811461562f57600080fd5b5056fea26469706673582212204f32d0e15c5747c6f698ed31208194c9d224f3fc789901417f4351cb6ee3905464736f6c63430008070033

Deployed Bytecode

0x60806040526004361061028c5760003560e01c806381c6f11b1161015a578063bc1323e8116100c1578063e5b55c6b1161007a578063e5b55c6b14610a2c578063e79d416014610a57578063e83e34b114610a82578063eafb5a3c14610ab0578063eec2744e14610ad9578063fb78680d14610b0257610293565b8063bc1323e81461091f578063c49b9a8014610948578063ce8b79c914610971578063d3f6a1571461099a578063d5025625146109c3578063dd62ed3e146109ef57610293565b8063a12a7d6111610113578063a12a7d61146107e6578063a13ce2c61461080f578063a457c2d71461084c578063a9059cbb14610889578063b4969beb146108c6578063b5f7bfa2146108f157610293565b806381c6f11b146106c2578063893d20e8146106eb57806389fd9bc1146107165780638c7321ad146107535780638da5cb5b1461079057806395d89b41146107bb57610293565b80633aaa36e6116101fe57806350a8e016116101b757806350a8e016146105b4578063571ac8b0146105df578063590ffdce1461061c57806370a0823114610645578063715018a61461068257806380c581d11461069957610293565b80633aaa36e6146104a15780633f3cf56c146104cf578063452ed4f1146104f85780634a74bb02146105235780634fb2e45d1461054e5780634fbee1931461057757610293565b806318160ddd1161025057806318160ddd1461037f57806323b872dd146103aa57806326003957146103e7578063313ce56714610410578063355b74de1461043b578063395093511461046457610293565b806303fd2a451461029857806306fdde03146102c35780630758d924146102ee578063095ea7b3146103195780631793fe4e1461035657610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610b2b565b6040516102ba9190614ae2565b60405180910390f35b3480156102cf57600080fd5b506102d8610b31565b6040516102e59190614bd8565b60405180910390f35b3480156102fa57600080fd5b50610303610bc3565b6040516103109190614bbd565b60405180910390f35b34801561032557600080fd5b50610340600480360381019061033b91906145da565b610be9565b60405161034d9190614ba2565b60405180910390f35b34801561036257600080fd5b5061037d60048036038101906103789190614747565b610c07565b005b34801561038b57600080fd5b50610394610d2f565b6040516103a19190614dda565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc9190614547565b610d39565b6040516103de9190614ba2565b60405180910390f35b3480156103f357600080fd5b5061040e600480360381019061040991906146b4565b610e86565b005b34801561041c57600080fd5b50610425610f96565b6040516104329190614ef4565b60405180910390f35b34801561044757600080fd5b50610462600480360381019061045d9190614647565b610f9f565b005b34801561047057600080fd5b5061048b600480360381019061048691906145da565b61107a565b6040516104989190614ba2565b60405180910390f35b3480156104ad57600080fd5b506104b6611126565b6040516104c69493929190614eaf565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f191906146b4565b611144565b005b34801561050457600080fd5b5061050d611254565b60405161051a9190614ae2565b60405180910390f35b34801561052f57600080fd5b5061053861127a565b6040516105459190614ba2565b60405180910390f35b34801561055a57600080fd5b506105756004803603810190610570919061446d565b61128d565b005b34801561058357600080fd5b5061059e6004803603810190610599919061446d565b6116fe565b6040516105ab9190614ba2565b60405180910390f35b3480156105c057600080fd5b506105c9611754565b6040516105d69190614ba2565b60405180910390f35b3480156105eb57600080fd5b506106066004803603810190610601919061446d565b611767565b6040516106139190614ba2565b60405180910390f35b34801561062857600080fd5b50610643600480360381019061063e919061459a565b61179a565b005b34801561065157600080fd5b5061066c6004803603810190610667919061446d565b61188a565b6040516106799190614dda565b60405180910390f35b34801561068e57600080fd5b506106976118d3565b005b3480156106a557600080fd5b506106c060048036038101906106bb919061459a565b611a51565b005b3480156106ce57600080fd5b506106e960048036038101906106e49190614687565b611c11565b005b3480156106f757600080fd5b50610700611cfd565b60405161070d9190614ae2565b60405180910390f35b34801561072257600080fd5b5061073d6004803603810190610738919061446d565b611d0c565b60405161074a9190614ba2565b60405180910390f35b34801561075f57600080fd5b5061077a6004803603810190610775919061446d565b611d62565b6040516107879190614ba2565b60405180910390f35b34801561079c57600080fd5b506107a5611d82565b6040516107b29190614ae2565b60405180910390f35b3480156107c757600080fd5b506107d0611dab565b6040516107dd9190614bd8565b60405180910390f35b3480156107f257600080fd5b5061080d60048036038101906108089190614747565b611e3d565b005b34801561081b57600080fd5b506108366004803603810190610831919061446d565b611f7b565b6040516108439190614dda565b60405180910390f35b34801561085857600080fd5b50610873600480360381019061086e91906145da565b611fc4565b6040516108809190614ba2565b60405180910390f35b34801561089557600080fd5b506108b060048036038101906108ab91906145da565b612070565b6040516108bd9190614ba2565b60405180910390f35b3480156108d257600080fd5b506108db61208f565b6040516108e89190614afd565b60405180910390f35b3480156108fd57600080fd5b506109066120b5565b6040516109169493929190614eaf565b60405180910390f35b34801561092b57600080fd5b506109466004803603810190610941919061446d565b6120d3565b005b34801561095457600080fd5b5061096f600480360381019061096a919061461a565b6121c3565b005b34801561097d57600080fd5b506109986004803603810190610993919061446d565b6122ac565b005b3480156109a657600080fd5b506109c160048036038101906109bc91906144c7565b61239c565b005b3480156109cf57600080fd5b506109d86124b7565b6040516109e6929190614df5565b60405180910390f35b3480156109fb57600080fd5b50610a166004803603810190610a119190614507565b6124d6565b604051610a239190614dda565b60405180910390f35b348015610a3857600080fd5b50610a4161255d565b604051610a4e9190614afd565b60405180910390f35b348015610a6357600080fd5b50610a6c612583565b604051610a799190614dda565b60405180910390f35b348015610a8e57600080fd5b50610a97612589565b604051610aa79493929190614eaf565b60405180910390f35b348015610abc57600080fd5b50610ad76004803603810190610ad2919061446d565b6125a7565b005b348015610ae557600080fd5b50610b006004803603810190610afb919061459a565b612a53565b005b348015610b0e57600080fd5b50610b296004803603810190610b249190614747565b612b43565b005b61dead81565b6060600b8054610b409061515b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6c9061515b565b8015610bb95780601f10610b8e57610100808354040283529160200191610bb9565b820191906000526020600020905b815481529060010190602001808311610b9c57829003601f168201915b5050505050905090565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610bfd610bf6612c1c565b8484612c24565b6001905092915050565b610c0f612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9390614bfa565b60405180910390fd5b61044c81838587610cad9190614f64565b610cb79190614f64565b610cc19190614f64565b14610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf890614dba565b60405180910390fd5b8360156000018190555082601560020181905550816015600301819055508060156001018190555050505050565b6000601b54905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e725781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6a9190615045565b925050819055505b610e7d848484612def565b90509392505050565b610e8e612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1290614bfa565b60405180910390fd5b60008183601b54610f2c9190614feb565b610f369190614fba565b905061012c601b54610f489190614fba565b811015610f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8190614d7a565b60405180910390fd5b80602681905550505050565b60006009905090565b610fa7612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102b90614bfa565b60405180910390fd5b601881111561104257600080fd5b610e10816110509190614feb565b60196000018190555081601960010160006101000a81548160ff0219169083151502179055505050565b600061111c611087612c1c565b848460046000611095612c1c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111179190614f64565b612c24565b6001905092915050565b600d8060000154908060010154908060020154908060030154905084565b61114c612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d090614bfa565b60405180910390fd5b60008183601b546111ea9190614feb565b6111f49190614fba565b905061012c601b546112069190614fba565b811015611248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123f90614d7a565b60405180910390fd5b80602381905550505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602060159054906101000a900460ff1681565b611295612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131990614bfa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138990614d9a565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fa90614d9a565b60405180910390fd5b61142e60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600061179a565b61143981600161179a565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156114f15780601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b61151a60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661188a565b600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006115e660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661188a565b11156116415761163f60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261163a60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661188a565b612def565b505b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b602960019054906101000a900460ff1681565b6000611793827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610be9565b9050919050565b6117a2612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461182f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182690614bfa565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118db612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195f90614bfa565b60405180910390fd5b61199360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600061179a565b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b611a59612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add90614bfa565b60405180910390fd5b600015158115151415611b50576000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611c0d565b600060035414611bad5762093a8060035442611b6c9190615045565b11611bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba390614c9a565b60405180910390fd5b5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426003819055505b5050565b611c19612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9d90614bfa565b60405180910390fd5b6000602a5414611ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce290614d1a565b60405180910390fd5b80602a819055506003602e8190555050565b6000611d07611d82565b905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60076020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c8054611dba9061515b565b80601f0160208091040260200160405190810160405280929190818152602001828054611de69061515b565b8015611e335780601f10611e0857610100808354040283529160200191611e33565b820191906000526020600020905b815481529060010190602001808311611e1657829003601f168201915b5050505050905090565b611e45612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec990614bfa565b60405180910390fd5b6011600001548411158015611eec57506011600101548311155b8015611efd57506011600201548211155b8015611f0e57506011600301548111155b611f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4490614c5a565b60405180910390fd5b83600d6000018190555082600d6001018190555081600d6002018190555080600d6003018190555050505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000612066611fd1612c1c565b848460046000611fdf612c1c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120619190615045565b612c24565b6001905092915050565b600061208461207d612c1c565b8484612def565b506001905092915050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60158060000154908060010154908060020154908060030154905084565b6120db612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215f90614bfa565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6121cb612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224f90614bfa565b60405180910390fd5b80602060156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516122a19190614ba2565b60405180910390a150565b6122b4612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233890614bfa565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6123a4612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612431576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242890614bfa565b60405180910390fd5b81601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60198060000154908060010160009054906101000a900460ff16905082565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602f5481565b60118060000154908060010154908060020154908060030154905084565b6125af612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461263c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263390614bfa565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561268957600080fd5b505afa15801561269d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c1919061449a565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561272357600080fd5b505afa158015612737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275b919061449a565b6040518363ffffffff1660e01b8152600401612778929190614b18565b60206040518083038186803b15801561279057600080fd5b505afa1580156127a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c8919061449a565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129cb578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561284557600080fd5b505afa158015612859573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287d919061449a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156128df57600080fd5b505afa1580156128f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612917919061449a565b6040518363ffffffff1660e01b8152600401612934929190614b18565b602060405180830381600087803b15801561294e57600080fd5b505af1158015612962573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612986919061449a565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612a0d565b80601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b612a5b612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adf90614bfa565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612b4b612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bcf90614bfa565b60405180910390fd5b8284601b54612be79190614feb565b612bf19190614fba565b6027819055508082601b54612c069190614feb565b612c109190614fba565b60288190555050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8b90614cda565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cfb90614cda565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612de29190614dda565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5790614c7a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec790614c7a565b60405180910390fd5b60008211612f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0a90614cba565b60405180910390fd5b612f1d84846133b3565b156131ad57600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612fc35750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6131ac57600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130685750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130b3576023548211156130b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a990614d5a565b60405180910390fd5b5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561314d5750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131ab576026548261315f8561188a565b6131699190614f64565b11156131aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a190614d3a565b60405180910390fd5b5b5b5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561323a5742600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600060019050600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132e15750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132eb57600090505b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561339d57602060149054906101000a900460ff161580156133665750602060159054906101000a900460ff165b1561339c5760006133763061188a565b9050602754811061339a5760285481106133905760285490505b6133998161358a565b5b505b5b6133a98585858461382c565b9150509392505050565b60006133bd611d82565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561342b57506133fb611d82565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156134815750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134d75750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613511575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561354a5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561358257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6001602060146101000a81548160ff02191690831515021790555060006015600301546015600201546015600001546135c39190614f64565b6135cd9190614f64565b14156135d85761380e565b600060026015600301546015600201546015600001546135f89190614f64565b6136029190614f64565b601560000154846136139190614feb565b61361d9190614fba565b6136279190614fba565b9050600081836136379190615045565b905061364281613b8f565b6000479050600060026015600301546015600201546015600001546136679190614f64565b6136719190614f64565b601560000154846136829190614feb565b61368c9190614fba565b6136969190614fba565b905060008411156136e7576136ab8482613db4565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482866040516136de93929190614e78565b60405180910390a15b600084866136f59190615045565b111561380957601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60156003015460156002015461374d9190614f64565b601560020154848661375f9190615045565b6137699190614feb565b6137739190614fba565b9081150290604051600060405180830381858888f1935050505015801561379e573d6000803e3d6000fd5b50602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015613807573d6000803e3d6000fd5b505b505050505b6000602060146101000a81548160ff02191690831515021790555050565b6000602960009054906101000a900460ff1615613a565761384c85611d0c565b8061385c575061385b84611d0c565b5b1561389c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161389390614cfa565b60405180910390fd5b602960019054906101000a900460ff16613922576138ba8585613e7b565b602960019054906101000a900460ff161580156138dd57506138dc85856133b3565b5b1561391d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161391490614c3a565b60405180910390fd5b613a55565b6000602b5411801561397d5750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561398f575061398e85856133b3565b5b15613a5457602e54602b54436139a59190615045565b1015613a53576001600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602f6000815480929190613a169061518d565b91905055507f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e584604051613a4a9190614ae2565b60405180910390a15b5b5b5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613aa59190615045565b92505081905550600082613ab95783613ac5565b613ac4868686614031565b5b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613b169190614f64565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b7a9190614dda565b60405180910390a36001915050949350505050565b6000600267ffffffffffffffff811115613bac57613bab615292565b5b604051908082528060200260200182016040528015613bda5781602001602082028036833780820191505090505b5090503081600081518110613bf257613bf1615263565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613c9457600080fd5b505afa158015613ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ccc919061449a565b81600181518110613ce057613cdf615263565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d7e959493929190614e1e565b600060405180830381600087803b158015613d9857600080fd5b505af1158015613dac573d6000803e3d6000fd5b505050505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613e00611d82565b426040518863ffffffff1660e01b8152600401613e2296959493929190614b41565b6060604051808303818588803b158015613e3b57600080fd5b505af1158015613e4f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613e7491906146f4565b5050505050565b602960019054906101000a900460ff1615613ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ec290614c1a565b60405180910390fd5b613ed582826133b3565b158015613f2f5750601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1561402d576003602e5414613f575761138843613f4c9190614f64565b602b81905550613f5f565b43602b819055505b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602960016101000a81548160ff02191690831515021790555042602c819055506001602060156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15960016040516140249190614ba2565b60405180910390a15b5050565b600080601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561412257601960010160009054906101000a900460ff16156141145742601960000154600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546140f39190614f64565b111561410657600d60030154905061410f565b600d6001015490505b61411d565b600d6001015490505b61418f565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561418557600d60000154905061418e565b600d6002015490505b5b61419985856133b3565b156141bd576000602a5414806141b257506001602a5414155b156141bc57600080fd5b5b60006127106015600301546015600201546015600001546015600101546141e49190614f64565b6141ee9190614f64565b6141f89190614f64565b601560010154848761420a9190614feb565b6142149190614feb565b61421e9190614fba565b6142289190614fba565b9050600081612710848761423c9190614feb565b6142469190614fba565b6142509190615045565b9050816001600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546142a39190614f64565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546142f99190614f64565b9250508190555061dead73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161435f9190614dda565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516143c49190614dda565b60405180910390a38181866143d99190615045565b6143e39190615045565b93505050509392505050565b6000813590506143fe816155d6565b92915050565b600081519050614413816155d6565b92915050565b600081359050614428816155ed565b92915050565b60008135905061443d81615604565b92915050565b6000813590506144528161561b565b92915050565b6000815190506144678161561b565b92915050565b600060208284031215614483576144826152c1565b5b6000614491848285016143ef565b91505092915050565b6000602082840312156144b0576144af6152c1565b5b60006144be84828501614404565b91505092915050565b600080604083850312156144de576144dd6152c1565b5b60006144ec85828601614419565b92505060206144fd85828601614419565b9150509250929050565b6000806040838503121561451e5761451d6152c1565b5b600061452c858286016143ef565b925050602061453d858286016143ef565b9150509250929050565b6000806000606084860312156145605761455f6152c1565b5b600061456e868287016143ef565b935050602061457f868287016143ef565b925050604061459086828701614443565b9150509250925092565b600080604083850312156145b1576145b06152c1565b5b60006145bf858286016143ef565b92505060206145d08582860161442e565b9150509250929050565b600080604083850312156145f1576145f06152c1565b5b60006145ff858286016143ef565b925050602061461085828601614443565b9150509250929050565b6000602082840312156146305761462f6152c1565b5b600061463e8482850161442e565b91505092915050565b6000806040838503121561465e5761465d6152c1565b5b600061466c8582860161442e565b925050602061467d85828601614443565b9150509250929050565b60006020828403121561469d5761469c6152c1565b5b60006146ab84828501614443565b91505092915050565b600080604083850312156146cb576146ca6152c1565b5b60006146d985828601614443565b92505060206146ea85828601614443565b9150509250929050565b60008060006060848603121561470d5761470c6152c1565b5b600061471b86828701614458565b935050602061472c86828701614458565b925050604061473d86828701614458565b9150509250925092565b60008060008060808587031215614761576147606152c1565b5b600061476f87828801614443565b945050602061478087828801614443565b935050604061479187828801614443565b92505060606147a287828801614443565b91505092959194509250565b60006147ba83836147d5565b60208301905092915050565b6147cf8161508b565b82525050565b6147de81615079565b82525050565b6147ed81615079565b82525050565b60006147fe82614f1f565b6148088185614f42565b935061481383614f0f565b8060005b8381101561484457815161482b88826147ae565b975061483683614f35565b925050600181019050614817565b5085935050505092915050565b61485a8161509d565b82525050565b614869816150e0565b82525050565b614878816150f2565b82525050565b600061488982614f2a565b6148938185614f53565b93506148a3818560208601615128565b6148ac816152c6565b840191505092915050565b60006148c4601083614f53565b91506148cf826152d7565b602082019050919050565b60006148e7602383614f53565b91506148f282615300565b604082019050919050565b600061490a602583614f53565b91506149158261534f565b604082019050919050565b600061492d601783614f53565b91506149388261539e565b602082019050919050565b6000614950601483614f53565b915061495b826153c7565b602082019050919050565b6000614973601283614f53565b915061497e826153f0565b602082019050919050565b6000614996600883614f53565b91506149a182615419565b602082019050919050565b60006149b9601383614f53565b91506149c482615442565b602082019050919050565b60006149dc601083614f53565b91506149e78261546b565b602082019050919050565b60006149ff600683614f53565b9150614a0a82615494565b602082019050919050565b6000614a22601a83614f53565b9150614a2d826154bd565b602082019050919050565b6000614a45601883614f53565b9150614a50826154e6565b602082019050919050565b6000614a68602583614f53565b9150614a738261550f565b604082019050919050565b6000614a8b603d83614f53565b9150614a968261555e565b604082019050919050565b6000614aae600583614f53565b9150614ab9826155ad565b602082019050919050565b614acd816150c9565b82525050565b614adc816150d3565b82525050565b6000602082019050614af760008301846147e4565b92915050565b6000602082019050614b1260008301846147c6565b92915050565b6000604082019050614b2d60008301856147e4565b614b3a60208301846147e4565b9392505050565b600060c082019050614b5660008301896147e4565b614b636020830188614ac4565b614b70604083018761486f565b614b7d606083018661486f565b614b8a60808301856147e4565b614b9760a0830184614ac4565b979650505050505050565b6000602082019050614bb76000830184614851565b92915050565b6000602082019050614bd26000830184614860565b92915050565b60006020820190508181036000830152614bf2818461487e565b905092915050565b60006020820190508181036000830152614c13816148b7565b9050919050565b60006020820190508181036000830152614c33816148da565b9050919050565b60006020820190508181036000830152614c53816148fd565b9050919050565b60006020820190508181036000830152614c7381614920565b9050919050565b60006020820190508181036000830152614c9381614943565b9050919050565b60006020820190508181036000830152614cb381614966565b9050919050565b60006020820190508181036000830152614cd381614989565b9050919050565b60006020820190508181036000830152614cf3816149ac565b9050919050565b60006020820190508181036000830152614d13816149cf565b9050919050565b60006020820190508181036000830152614d33816149f2565b9050919050565b60006020820190508181036000830152614d5381614a15565b9050919050565b60006020820190508181036000830152614d7381614a38565b9050919050565b60006020820190508181036000830152614d9381614a5b565b9050919050565b60006020820190508181036000830152614db381614a7e565b9050919050565b60006020820190508181036000830152614dd381614aa1565b9050919050565b6000602082019050614def6000830184614ac4565b92915050565b6000604082019050614e0a6000830185614ac4565b614e176020830184614851565b9392505050565b600060a082019050614e336000830188614ac4565b614e40602083018761486f565b8181036040830152614e5281866147f3565b9050614e6160608301856147e4565b614e6e6080830184614ac4565b9695505050505050565b6000606082019050614e8d6000830186614ac4565b614e9a6020830185614ac4565b614ea76040830184614ac4565b949350505050565b6000608082019050614ec46000830187614ac4565b614ed16020830186614ac4565b614ede6040830185614ac4565b614eeb6060830184614ac4565b95945050505050565b6000602082019050614f096000830184614ad3565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614f6f826150c9565b9150614f7a836150c9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614faf57614fae6151d6565b5b828201905092915050565b6000614fc5826150c9565b9150614fd0836150c9565b925082614fe057614fdf615205565b5b828204905092915050565b6000614ff6826150c9565b9150615001836150c9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561503a576150396151d6565b5b828202905092915050565b6000615050826150c9565b915061505b836150c9565b92508282101561506e5761506d6151d6565b5b828203905092915050565b6000615084826150a9565b9050919050565b6000615096826150a9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006150eb82615104565b9050919050565b60006150fd826150c9565b9050919050565b600061510f82615116565b9050919050565b6000615121826150a9565b9050919050565b60005b8381101561514657808201518184015260208101905061512b565b83811115615155576000848401525b50505050565b6000600282049050600182168061517357607f821691505b6020821081141561518757615186615234565b5b50919050565b6000615198826150c9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156151cb576151ca6151d6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f43616c6c657220213d206f776e65722e00000000000000000000000000000000600082015250565b7f4c697175696469747920616c726561647920616464656420616e64206d61726b60008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b7f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060008201527f74696d652e000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000600082015250565b7f45524332303a205a65726f20616464726573732e000000000000000000000000600082015250565b7f4f6e65207765656b20636f6f6c646f776e2e0000000000000000000000000000600082015250565b7f4d757374203e302e000000000000000000000000000000000000000000000000600082015250565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b7f536e697065722072656a65637465642e00000000000000000000000000000000600082015250565b7f4572726f722e0000000000000000000000000000000000000000000000000000600082015250565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b7f4d7573742062652061626f766520302e33337e25206f6620746f74616c20737560008201527f70706c792e000000000000000000000000000000000000000000000000000000602082015250565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660008201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b7f2128314b29000000000000000000000000000000000000000000000000000000600082015250565b6155df81615079565b81146155ea57600080fd5b50565b6155f68161508b565b811461560157600080fd5b50565b61560d8161509d565b811461561857600080fd5b50565b615624816150c9565b811461562f57600080fd5b5056fea26469706673582212204f32d0e15c5747c6f698ed31208194c9d224f3fc789901417f4351cb6ee3905464736f6c63430008070033

Deployed Bytecode Sourcemap

3628:20456:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5940:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10923:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5752:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11536:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15066:332;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10658:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12269:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16391:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10747:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15406:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12583:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4573:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;16131:252;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5794:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6320:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9335:761;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13966:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6881:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12022:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14099:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11236:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10104:195;;;;;;;;;;;;;:::i;:::-;;13548:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14723:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11009:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14583:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4089:68;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9248:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10833:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15611:512;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12150:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12806:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11361:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6086:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5122:109;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;14409:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17182:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14243:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16953:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5361:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;11095:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6186:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7149:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4835:101;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;13039:501;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14917:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16656:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5940:73;5971:42;5940:73;:::o;10923:80::-;10971:13;10995:5;10988:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10923:80;:::o;5752:35::-;;;;;;;;;;;;;:::o;11536:161::-;11611:4;11628:39;11637:12;:10;:12::i;:::-;11651:7;11660:6;11628:8;:39::i;:::-;11685:4;11678:11;;11536:161;;;;:::o;15066:332::-;7758:12;:10;:12::i;:::-;7748:22;;:6;;;;;;;;;;:22;;;7740:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15232:4:::1;15222:5;15211:10;15200;15189;:21;;;;:::i;:::-;:32;;;;:::i;:::-;:38;;;;:::i;:::-;15188:48;15178:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15276:10;15257:6;:16;;:29;;;;15316:10;15297:6;:16;;:29;;;;15356:10;15337:6;:16;;:29;;;;15391:5;15377:6;:11;;:19;;;;15066:332:::0;;;;:::o;10658:83::-;10713:7;10731;;10724:14;;10658:83;:::o;12269:306::-;12369:4;12425:17;12390:11;:19;12402:6;12390:19;;;;;;;;;;;;;;;:31;12410:10;12390:31;;;;;;;;;;;;;;;;:52;12386:126;;12494:6;12459:11;:19;12471:6;12459:19;;;;;;;;;;;;;;;:31;12479:10;12459:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;12386:126;12531:36;12541:6;12549:9;12560:6;12531:9;:36::i;:::-;12524:43;;12269:306;;;;;:::o;16391:257::-;7758:12;:10;:12::i;:::-;7748:22;;:6;;;;;;;;;;:22;;;7740:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;16475:13:::1;16513:7;16502;16492;;:17;;;;:::i;:::-;16491:29;;;;:::i;:::-;16475:45;;16559:3;16549:7;;:13;;;;:::i;:::-;16539:5;:24;;16531:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;16633:5;16616:14;:22;;;;16464:184;16391:257:::0;;:::o;10747:80::-;10799:5;5643:1;10808:16;;10747:80;:::o;15406:197::-;7758:12;:10;:12::i;:::-;7748:22;;:6;;;;;;;;;;:22;;;7740:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15516:2:::1;15503:9;:15;;15495:24;;;::::0;::::1;;15559:7;15547:9;:19;;;;:::i;:::-;15530:5;:14;;:36;;;;15593:8;15577:5;:13;;;:24;;;;;;;;;;;;;;;;;;15406:197:::0;;:::o;12583:215::-;12671:4;12688:80;12697:12;:10;:12::i;:::-;12711:7;12757:10;12720:11;:25;12732:12;:10;:12::i;:::-;12720:25;;;;;;;;;;;;;;;:34;12746:7;12720:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12688:8;:80::i;:::-;12786:4;12779:11;;12583:215;;;;:::o;4573:95::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;16131:252::-;7758:12;:10;:12::i;:::-;7748:22;;:6;;;;;;;;;;:22;;;7740:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;16214:13:::1;16252:7;16241;16231;;:17;;;;:::i;:::-;16230:29;;;;:::i;:::-;16214:45;;16298:3;16288:7;;:13;;;;:::i;:::-;16278:5;:24;;16270:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;16370:5;16355:12;:20;;;;16203:180;16131:252:::0;;:::o;5794:21::-;;;;;;;;;;;;;:::o;6320:41::-;;;;;;;;;;;;;:::o;9335:761::-;7758:12;:10;:12::i;:::-;7748:22;;:6;;;;;;;;;;:22;;;7740:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;9436:1:::1;9416:22;;:8;:22;;;;9408:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;5971:42;9523:16;;:8;:16;;;;9515:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;9616:34;9636:6;::::0;::::1;;;;;;;;9644:5;9616:19;:34::i;:::-;9661:35;9681:8;9691:4;9661:19;:35::i;:::-;9749:6;::::0;::::1;;;;;;;;9721:35;;:16;;;;;;;;;;;:35;;;9717:90;;;9798:8;9771:16;;:36;;;;;;;;;;;;;;;;;;9717:90;9860:17;9870:6;::::0;::::1;;;;;;;;9860:9;:17::i;:::-;9828:11;:19;9840:6:::0;::::1;;;;;;;;;;9828:19;;;;;;;;;;;;;;;:29;9848:8;9828:29;;;;;;;;;;;;;;;:49;;;;9911:1;9891:17;9901:6;::::0;::::1;;;;;;;;9891:9;:17::i;:::-;:21;9888:99;;;9929:46;9939:6;::::0;::::1;;;;;;;;9947:8;9957:17;9967:6;::::0;::::1;;;;;;;;9957:9;:17::i;:::-;9929:9;:46::i;:::-;;9888:99;10016:8;10007:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;10069:8;10040:38;;10061:6;::::0;::::1;;;;;;;;10040:38;;;;;;;;;;;;9335:761:::0;:::o;13966:125::-;14031:4;14055:19;:28;14075:7;14055:28;;;;;;;;;;;;;;;;;;;;;;;;;14048:35;;13966:125;;;:::o;6881:36::-;;;;;;;;;;;;;:::o;12022:120::-;12075:4;12099:35;12107:7;12116:17;12099:7;:35::i;:::-;12092:42;;12022:120;;;:::o;14099:134::-;7758:12;:10;:12::i;:::-;7748:22;;:6;;;;;;;;;;:22;;;7740:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14218:7:::1;14187:19;:28;14207:7;14187:28;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;14099:134:::0;;:::o;11236:117::-;11302:7;11329;:16;11337:7;11329:16;;;;;;;;;;;;;;;;11322:23;;11236:117;;;:::o;10104:195::-;7758:12;:10;:12::i;:::-;7748:22;;:6;;;;;;;;;;:22;;;7740:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;10171:34:::1;10191:6;::::0;::::1;;;;;;;;10199:5;10171:19;:34::i;:::-;10233:1;10216:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;10288:1;10251:40;;10272:6;::::0;::::1;;;;;;;;10251:40;;;;;;;;;;;;10104:195::o:0;13548:410::-;7758:12;:10;:12::i;:::-;7748:22;;:6;;;;;;;;;;:22;;;7740:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;13640:5:::1;13629:16;;:7;:16;;;13625:326;;;13678:5;13662:7;:13;13670:4;13662:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13625:326;;;13741:1;13720:17;;:22;13716:139;;13809:7;13789:17;;13771:15;:35;;;;:::i;:::-;:45;13763:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;13716:139;13885:4;13869:7;:13;13877:4;13869:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13924:15;13904:17;:35;;;;13625:326;13548:410:::0;;:::o;14723:186::-;7758:12;:10;:12::i;:::-;7748:22;;:6;;;;;;;;;;:22;;;7740:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14822:1:::1;14805:13;;:18;14796:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14861:12;14845:13;:28;;;;14900:1;14884:13;:17;;;;14723:186:::0;:::o;11009:80::-;11061:7;11079;:5;:7::i;:::-;11072:14;;11009:80;:::o;14583:132::-;14652:4;14676:22;:31;14699:7;14676:31;;;;;;;;;;;;;;;;;;;;;;;;;14669:38;;14583:132;;;:::o;4089:68::-;;;;;;;;;;;;;;;;;;;;;;:::o;9248:79::-;9286:7;9313:6;;;;;;;;;;;9306:13;;9248:79;:::o;10833:84::-;10883:13;10907:7;10900:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10833:84;:::o;15611:512::-;7758:12;:10;:12::i;:::-;7748:22;;:6;;;;;;;;;;:22;;;7740:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15744:7:::1;:14;;;15733:7;:25;;:73;;;;;15791:7;:15;;;15779:8;:27;;15733:73;:129;;;;;15843:7;:19;;;15827:12;:35;;15733:129;:184;;;;;15898:7;:19;;;15883:11;:34;;15733:184;15725:237;;;;;;;;;;;;:::i;:::-;;;;;;;;;15988:7;15974:4;:11;;:21;;;;16022:8;16007:4;:12;;:23;;;;16061:12;16042:4;:16;;:31;;;;16102:11;16085:4;:15;;:28;;;;15611:512:::0;;;;:::o;12150:111::-;12209:7;12236:8;:17;12245:7;12236:17;;;;;;;;;;;;;;;;12229:24;;12150:111;;;:::o;12806:225::-;12899:4;12916:85;12925:12;:10;:12::i;:::-;12939:7;12985:15;12948:11;:25;12960:12;:10;:12::i;:::-;12948:25;;;;;;;;;;;;;;;:34;12974:7;12948:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;12916:8;:85::i;:::-;13019:4;13012:11;;12806:225;;;;:::o;11361:167::-;11439:4;11456:42;11466:12;:10;:12::i;:::-;11480:9;11491:6;11456:9;:42::i;:::-;;11516:4;11509:11;;11361:167;;;;:::o;6086:93::-;;;;;;;;;;;;;:::o;5122:109::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14409:166::-;7758:12;:10;:12::i;:::-;7748:22;;:6;;;;;;;;;;:22;;;7740:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14562:5:::1;14507:35;:52;14543:15;14507:52;;;;;;;;;;;;;;;;:60;;;;;;;;;;;;;;;;;;14409:166:::0;:::o;17182:171::-;7758:12;:10;:12::i;:::-;7748:22;;:6;;;;;;;;;;:22;;;7740:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;17283:8:::1;17259:21;;:32;;;;;;;;;;;;;;;;;;17307:38;17336:8;17307:38;;;;;;:::i;:::-;;;;;;;;17182:171:::0;:::o;14243:158::-;7758:12;:10;:12::i;:::-;7748:22;;:6;;;;;;;;;;:22;;;7740:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14389:4:::1;14334:35;:52;14370:15;14334:52;;;;;;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;;14243:158:::0;:::o;16953:221::-;7758:12;:10;:12::i;:::-;7748:22;;:6;;;;;;;;;;:22;;;7740:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;17096:15:::1;17069:16;;:43;;;;;;;;;;;;;;;;;;17150:15;17123:16;;:43;;;;;;;;;;;;;;;;;;16953:221:::0;;:::o;5361:87::-;;;;;;;;;;;;;;;;;;;;;;;:::o;11095:133::-;11179:7;11197:11;:19;11209:6;11197:19;;;;;;;;;;;;;;;:28;11217:7;11197:28;;;;;;;;;;;;;;;;11190:35;;11095:133;;;;:::o;6186:93::-;;;;;;;;;;;;;:::o;7149:32::-;;;;:::o;4835:101::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;13039:501::-;7758:12;:10;:12::i;:::-;7748:22;;:6;;;;;;;;;;:22;;;7740:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;13110:29:::1;13161:9;13110:61;;13182:16;13219:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13201:47;;;13257:4;13264:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13201:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13182:100;;13317:1;13297:22;;:8;:22;;;13293:207;;;13363:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13345:50;;;13404:4;13411:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13345:84;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13336:6;;:93;;;;;;;;;;;;;;;;;;13293:207;;;13480:8;13471:6;;:17;;;;;;;;;;;;;;;;;;13293:207;13522:10;13510:9;;:22;;;;;;;;;;;;;;;;;;13099:441;;13039:501:::0;:::o;14917:141::-;7758:12;:10;:12::i;:::-;7748:22;;:6;;;;;;;;;;:22;;;7740:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15043:7:::1;15009:22;:31;15032:7;15009:31;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;14917:141:::0;;:::o;16656:289::-;7758:12;:10;:12::i;:::-;7748:22;;:6;;;;;;;;;;:22;;;7740:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;16856:16:::1;16836;16826:7;;:26;;;;:::i;:::-;16825:47;;;;:::i;:::-;16809:13;:63;;;;16924:13;16907;16897:7;;:23;;;;:::i;:::-;16896:41;;;;:::i;:::-;16883:10;:54;;;;16656:289:::0;;;;:::o;92:107::-;137:15;180:10;165:26;;92:107;:::o;11705:309::-;11817:1;11799:20;;:6;:20;;;;11791:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;11881:1;11862:21;;:7;:21;;;;11854:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;11951:6;11920:11;:19;11932:6;11920:19;;;;;;;;;;;;;;;:28;11940:7;11920:28;;;;;;;;;;;;;;;:37;;;;11990:7;11973:33;;11982:6;11973:33;;;11999:6;11973:33;;;;;;:::i;:::-;;;;;;;;11705:309;;;:::o;17692:1536::-;17771:4;17812:1;17796:18;;:4;:18;;;;17788:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;17872:1;17858:16;;:2;:16;;;;17850:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17927:1;17918:6;:10;17910:31;;;;;;;;;;;;:::i;:::-;;;;;;;;;17955:20;17966:4;17972:2;17955:10;:20::i;:::-;17952:504;;;17997:35;:41;18033:4;17997:41;;;;;;;;;;;;;;;;;;;;;;;;;:84;;;;18042:35;:39;18078:2;18042:39;;;;;;;;;;;;;;;;;;;;;;;;;17997:84;17992:439;;18106:7;:13;18114:4;18106:13;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;;18123:7;:11;18131:2;18123:11;;;;;;;;;;;;;;;;;;;;;;;;;18106:28;18103:130;;;18172:12;;18162:6;:22;;18154:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;18103:130;5885:42;18254:20;;:2;:20;;;;:36;;;;;18279:7;:11;18287:2;18279:11;;;;;;;;;;;;;;;;;;;;;;;;;18278:12;18254:36;18251:163;;;18349:14;;18339:6;18323:13;18333:2;18323:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18315:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;18251:163;17992:439;17952:504;18489:1;18474:7;:11;18482:2;18474:11;;;;;;;;;;;;;;;;:16;18470:79;;;18522:15;18507:8;:12;18516:2;18507:12;;;;;;;;;;;;;;;:30;;;;18470:79;18561:12;18576:4;18561:19;;18594;:25;18614:4;18594:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;18623:19;:23;18643:2;18623:23;;;;;;;;;;;;;;;;;;;;;;;;;18594:52;18591:98;;;18672:5;18662:15;;18591:98;18705:7;:11;18713:2;18705:11;;;;;;;;;;;;;;;;;;;;;;;;;18701:457;;;18738:16;;;;;;;;;;;18737:17;:59;;;;;18775:21;;;;;;;;;;;18737:59;18733:408;;;18831:28;18862:24;18880:4;18862:9;:24::i;:::-;18831:55;;18933:13;;18909:20;:37;18905:221;;18998:10;;18974:20;:34;18971:77;;19035:10;;19012:33;;18971:77;19070:36;19085:20;19070:14;:36::i;:::-;18905:221;18812:329;18733:408;18701:457;19176:44;19194:4;19200:2;19204:6;19212:7;19176:17;:44::i;:::-;19169:51;;;17692:1536;;;;;:::o;17361:323::-;17429:4;17461:7;:5;:7::i;:::-;17453:15;;:4;:15;;;;:45;;;;;17491:7;:5;:7::i;:::-;17485:13;;:2;:13;;;;17453:45;:84;;;;;17516:17;:21;17534:2;17516:21;;;;;;;;;;;;;;;;;;;;;;;;;17515:22;17453:84;:125;;;;;17555:17;:23;17573:4;17555:23;;;;;;;;;;;;;;;;;;;;;;;;;17554:24;17453:125;:152;;;;;5971:42;17595:10;;:2;:10;;;;17453:152;:185;;;;;17636:1;17622:16;;:2;:16;;;;17453:185;:223;;;;;17671:4;17655:21;;:4;:21;;;;17453:223;17446:230;;17361:323;;;;:::o;19236:1060::-;7641:4;7622:16;;:23;;;;;;;;;;;;;;;;;;19383:1:::1;19363:6;:16;;;19344:6;:16;;;19325:6;:16;;;:35;;;;:::i;:::-;:54;;;;:::i;:::-;:59;19321:85;;;19399:7;;19321:85;19416:17;19542:1;19520:6;:16;;;19501:6;:16;;;19482:6;:16;;;:35;;;;:::i;:::-;:54;;;;:::i;:::-;19461:6;:16;;;19438:20;:39;;;;:::i;:::-;19437:100;;;;:::i;:::-;19436:107;;;;:::i;:::-;19416:127;;19556:20;19602:9;19579:20;:32;;;;:::i;:::-;19556:55;;19622:30;19639:12;19622:16;:30::i;:::-;19665:22;19690:21;19665:46;;19722:24;19849:1;19827:6;:16;;;19808:6;:16;;;19789:6;:16;;;:35;;;;:::i;:::-;:54;;;;:::i;:::-;19768:6;:16;;;19751:14;:33;;;;:::i;:::-;19750:94;;;;:::i;:::-;19749:101;;;;:::i;:::-;19722:128;;19879:1;19867:9;:13;19863:161;;;19897:41;19910:9;19921:16;19897:12;:41::i;:::-;19958:54;19973:9;19984:16;20002:9;19958:54;;;;;;;;:::i;:::-;;;;;;;;19863:161;20073:1;20061:9;20038:20;:32;;;;:::i;:::-;:36;20034:255;;;20091:16;;;;;;;;;;;:25;;:123;20196:6;:16;;;20177:6;:16;;;:35;;;;:::i;:::-;20156:6;:16;;;20136;20119:14;:33;;;;:::i;:::-;20118:54;;;;:::i;:::-;20117:96;;;;:::i;:::-;20091:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;20229:16;;;;;;;;;;;:25;;:48;20255:21;20229:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;20034:255;19310:986;;;;7656:1;7687:5:::0;7668:16;;:24;;;;;;;;;;;;;;;;;;19236:1060;:::o;21695:1220::-;21795:4;21816:16;;;;;;;;;;;21812:858;;;21852:27;21874:4;21852:21;:27::i;:::-;:56;;;;21883:25;21905:2;21883:21;:25::i;:::-;21852:56;21848:123;;;21929:26;;;;;;;;;;:::i;:::-;;;;;;;;21848:123;21992:16;;;;;;;;;;;21987:672;;22029:28;22048:4;22054:2;22029:18;:28::i;:::-;22081:16;;;;;;;;;;;22080:17;:41;;;;;22101:20;22112:4;22118:2;22101:10;:20::i;:::-;22080:41;22076:137;;;22146:47;;;;;;;;;;:::i;:::-;;;;;;;;22076:137;21987:672;;;22272:1;22257:12;;:16;:55;;;;;22299:7;:13;22307:4;22299:13;;;;;;;;;;;;;;;;;;;;;;;;;22257:55;:101;;;;;22338:20;22349:4;22355:2;22338:10;:20::i;:::-;22257:101;22253:391;;;22435:13;;22420:12;;22405;:27;;;;:::i;:::-;:43;22401:224;;;22506:4;22477:22;:26;22500:2;22477:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;22537:13;;:16;;;;;;;;;:::i;:::-;;;;;;22585;22598:2;22585:16;;;;;;:::i;:::-;;;;;;;;22401:224;22253:391;21987:672;21812:858;22699:6;22682:7;:13;22690:4;22682:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;22716:22;22742:7;22741:48;;22783:6;22741:48;;;22753:27;22763:4;22769:2;22773:6;22753:9;:27::i;:::-;22741:48;22716:73;;22819:14;22804:7;:11;22812:2;22804:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;22866:2;22851:34;;22860:4;22851:34;;;22870:14;22851:34;;;;;;:::i;:::-;;;;;;;;22903:4;22896:11;;;21695:1220;;;;;;:::o;20304:417::-;20371:21;20409:1;20395:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20371:40;;20440:4;20422;20427:1;20422:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20466:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20456:4;20461:1;20456:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;20495:9;;;;;;;;;;;:60;;;20570:11;20596:1;20640:4;20667;20687:15;20495:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20360:361;20304:417;:::o;20729:335::-;20810:9;;;;;;;;;;;:25;;;20843:9;20876:4;20896:11;20922:1;20965;21008:7;:5;:7::i;:::-;21030:15;20810:246;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20729:335;;:::o;21072:615::-;21154:16;;;;;;;;;;;21153:17;21145:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;21226:20;21237:4;21243:2;21226:10;:20::i;:::-;21225:21;:37;;;;;21256:6;;;;;;;;;;;21250:12;;:2;:12;;;21225:37;21221:459;;;21300:1;21283:13;;:18;21279:161;;21352:4;21337:12;:19;;;;:::i;:::-;21322:12;:34;;;;21279:161;;;21412:12;21397;:27;;;;21279:161;21482:4;21456:17;:23;21474:4;21456:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;21520:4;21501:16;;:23;;;;;;;;;;;;;;;;;;21554:15;21539:12;:30;;;;21610:4;21586:21;;:28;;;;;;;;;;;;;;;;;;21634:34;21663:4;21634:34;;;;;;:::i;:::-;;;;;;;;21221:459;21072:615;;:::o;22923:1158::-;23002:7;23022:18;23063:6;;;;;;;;;;;23057:12;;:2;:12;;;23053:399;;;23090:5;:13;;;;;;;;;;;;23086:236;;;23161:15;23144:5;:14;;;23127:8;:14;23136:4;23127:14;;;;;;;;;;;;;;;;:31;;;;:::i;:::-;:49;23123:139;;;23192:4;:15;;;23179:28;;23123:139;;;23248:4;:12;;;23235:25;;23123:139;23086:236;;;23308:4;:12;;;23297:23;;23086:236;23053:399;;;23367:6;;;;;;;;;;;23359:14;;:4;:14;;;23355:97;;;23389:4;:11;;;23376:24;;23355:97;;;23434:4;:16;;;23421:29;;23355:97;23053:399;23468:20;23479:4;23485:2;23468:10;:20::i;:::-;23464:142;;;23525:1;23508:13;;:18;:42;;;;23548:1;23530:13;;:20;;23508:42;23504:91;;;23571:8;;;23504:91;23464:142;23616:15;5547:5;23725:6;:16;;;23706:6;:16;;;23687:6;:16;;;23673:6;:11;;;:30;;;;:::i;:::-;:49;;;;:::i;:::-;:68;;;;:::i;:::-;23657:6;:11;;;23644:10;23635:6;:19;;;;:::i;:::-;:33;;;;:::i;:::-;23634:109;;;;:::i;:::-;:128;;;;:::i;:::-;23616:146;;23773:17;23836:7;5547:5;23803:10;23794:6;:19;;;;:::i;:::-;:38;;;;:::i;:::-;23793:50;;;;:::i;:::-;23773:70;;23871:7;23854;:13;5971:42;23854:13;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;23916:9;23889:7;:22;23905:4;23889:22;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;5971:42;23942:29;;23951:4;23942:29;;;23963:7;23942:29;;;;;;:::i;:::-;;;;;;;;24010:4;23987:40;;23996:4;23987:40;;;24017:9;23987:40;;;;;;:::i;:::-;;;;;;;;24066:7;24054:9;24045:6;:18;;;;:::i;:::-;:28;;;;:::i;:::-;24038:35;;;;;22923:1158;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;301:155;;;;:::o;462:133::-;505:5;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;462:133;;;;:::o;601:139::-;647:5;685:6;672:20;663:29;;701:33;728:5;701:33;:::i;:::-;601:139;;;;:::o;746:143::-;803:5;834:6;828:13;819:22;;850:33;877:5;850:33;:::i;:::-;746:143;;;;:::o;895:329::-;954:6;1003:2;991:9;982:7;978:23;974:32;971:119;;;1009:79;;:::i;:::-;971:119;1129:1;1154:53;1199:7;1190:6;1179:9;1175:22;1154:53;:::i;:::-;1144:63;;1100:117;895:329;;;;:::o;1230:351::-;1300:6;1349:2;1337:9;1328:7;1324:23;1320:32;1317:119;;;1355:79;;:::i;:::-;1317:119;1475:1;1500:64;1556:7;1547:6;1536:9;1532:22;1500:64;:::i;:::-;1490:74;;1446:128;1230:351;;;;:::o;1587:506::-;1671:6;1679;1728:2;1716:9;1707:7;1703:23;1699:32;1696:119;;;1734:79;;:::i;:::-;1696:119;1854:1;1879:61;1932:7;1923:6;1912:9;1908:22;1879:61;:::i;:::-;1869:71;;1825:125;1989:2;2015:61;2068:7;2059:6;2048:9;2044:22;2015:61;:::i;:::-;2005:71;;1960:126;1587:506;;;;;:::o;2099:474::-;2167:6;2175;2224:2;2212:9;2203:7;2199:23;2195:32;2192:119;;;2230:79;;:::i;:::-;2192:119;2350:1;2375:53;2420:7;2411:6;2400:9;2396:22;2375:53;:::i;:::-;2365:63;;2321:117;2477:2;2503:53;2548:7;2539:6;2528:9;2524:22;2503:53;:::i;:::-;2493:63;;2448:118;2099:474;;;;;:::o;2579:619::-;2656:6;2664;2672;2721:2;2709:9;2700:7;2696:23;2692:32;2689:119;;;2727:79;;:::i;:::-;2689:119;2847:1;2872:53;2917:7;2908:6;2897:9;2893:22;2872:53;:::i;:::-;2862:63;;2818:117;2974:2;3000:53;3045:7;3036:6;3025:9;3021:22;3000:53;:::i;:::-;2990:63;;2945:118;3102:2;3128:53;3173:7;3164:6;3153:9;3149:22;3128:53;:::i;:::-;3118:63;;3073:118;2579:619;;;;;:::o;3204:468::-;3269:6;3277;3326:2;3314:9;3305:7;3301:23;3297:32;3294:119;;;3332:79;;:::i;:::-;3294:119;3452:1;3477:53;3522:7;3513:6;3502:9;3498:22;3477:53;:::i;:::-;3467:63;;3423:117;3579:2;3605:50;3647:7;3638:6;3627:9;3623:22;3605:50;:::i;:::-;3595:60;;3550:115;3204:468;;;;;:::o;3678:474::-;3746:6;3754;3803:2;3791:9;3782:7;3778:23;3774:32;3771:119;;;3809:79;;:::i;:::-;3771:119;3929:1;3954:53;3999:7;3990:6;3979:9;3975:22;3954:53;:::i;:::-;3944:63;;3900:117;4056:2;4082:53;4127:7;4118:6;4107:9;4103:22;4082:53;:::i;:::-;4072:63;;4027:118;3678:474;;;;;:::o;4158:323::-;4214:6;4263:2;4251:9;4242:7;4238:23;4234:32;4231:119;;;4269:79;;:::i;:::-;4231:119;4389:1;4414:50;4456:7;4447:6;4436:9;4432:22;4414:50;:::i;:::-;4404:60;;4360:114;4158:323;;;;:::o;4487:468::-;4552:6;4560;4609:2;4597:9;4588:7;4584:23;4580:32;4577:119;;;4615:79;;:::i;:::-;4577:119;4735:1;4760:50;4802:7;4793:6;4782:9;4778:22;4760:50;:::i;:::-;4750:60;;4706:114;4859:2;4885:53;4930:7;4921:6;4910:9;4906:22;4885:53;:::i;:::-;4875:63;;4830:118;4487:468;;;;;:::o;4961:329::-;5020:6;5069:2;5057:9;5048:7;5044:23;5040:32;5037:119;;;5075:79;;:::i;:::-;5037:119;5195:1;5220:53;5265:7;5256:6;5245:9;5241:22;5220:53;:::i;:::-;5210:63;;5166:117;4961:329;;;;:::o;5296:474::-;5364:6;5372;5421:2;5409:9;5400:7;5396:23;5392:32;5389:119;;;5427:79;;:::i;:::-;5389:119;5547:1;5572:53;5617:7;5608:6;5597:9;5593:22;5572:53;:::i;:::-;5562:63;;5518:117;5674:2;5700:53;5745:7;5736:6;5725:9;5721:22;5700:53;:::i;:::-;5690:63;;5645:118;5296:474;;;;;:::o;5776:663::-;5864:6;5872;5880;5929:2;5917:9;5908:7;5904:23;5900:32;5897:119;;;5935:79;;:::i;:::-;5897:119;6055:1;6080:64;6136:7;6127:6;6116:9;6112:22;6080:64;:::i;:::-;6070:74;;6026:128;6193:2;6219:64;6275:7;6266:6;6255:9;6251:22;6219:64;:::i;:::-;6209:74;;6164:129;6332:2;6358:64;6414:7;6405:6;6394:9;6390:22;6358:64;:::i;:::-;6348:74;;6303:129;5776:663;;;;;:::o;6445:765::-;6531:6;6539;6547;6555;6604:3;6592:9;6583:7;6579:23;6575:33;6572:120;;;6611:79;;:::i;:::-;6572:120;6731:1;6756:53;6801:7;6792:6;6781:9;6777:22;6756:53;:::i;:::-;6746:63;;6702:117;6858:2;6884:53;6929:7;6920:6;6909:9;6905:22;6884:53;:::i;:::-;6874:63;;6829:118;6986:2;7012:53;7057:7;7048:6;7037:9;7033:22;7012:53;:::i;:::-;7002:63;;6957:118;7114:2;7140:53;7185:7;7176:6;7165:9;7161:22;7140:53;:::i;:::-;7130:63;;7085:118;6445:765;;;;;;;:::o;7216:179::-;7285:10;7306:46;7348:3;7340:6;7306:46;:::i;:::-;7384:4;7379:3;7375:14;7361:28;;7216:179;;;;:::o;7401:142::-;7504:32;7530:5;7504:32;:::i;:::-;7499:3;7492:45;7401:142;;:::o;7549:108::-;7626:24;7644:5;7626:24;:::i;:::-;7621:3;7614:37;7549:108;;:::o;7663:118::-;7750:24;7768:5;7750:24;:::i;:::-;7745:3;7738:37;7663:118;;:::o;7817:732::-;7936:3;7965:54;8013:5;7965:54;:::i;:::-;8035:86;8114:6;8109:3;8035:86;:::i;:::-;8028:93;;8145:56;8195:5;8145:56;:::i;:::-;8224:7;8255:1;8240:284;8265:6;8262:1;8259:13;8240:284;;;8341:6;8335:13;8368:63;8427:3;8412:13;8368:63;:::i;:::-;8361:70;;8454:60;8507:6;8454:60;:::i;:::-;8444:70;;8300:224;8287:1;8284;8280:9;8275:14;;8240:284;;;8244:14;8540:3;8533:10;;7941:608;;;7817:732;;;;:::o;8555:109::-;8636:21;8651:5;8636:21;:::i;:::-;8631:3;8624:34;8555:109;;:::o;8670:183::-;8783:63;8840:5;8783:63;:::i;:::-;8778:3;8771:76;8670:183;;:::o;8859:147::-;8954:45;8993:5;8954:45;:::i;:::-;8949:3;8942:58;8859:147;;:::o;9012:364::-;9100:3;9128:39;9161:5;9128:39;:::i;:::-;9183:71;9247:6;9242:3;9183:71;:::i;:::-;9176:78;;9263:52;9308:6;9303:3;9296:4;9289:5;9285:16;9263:52;:::i;:::-;9340:29;9362:6;9340:29;:::i;:::-;9335:3;9331:39;9324:46;;9104:272;9012:364;;;;:::o;9382:366::-;9524:3;9545:67;9609:2;9604:3;9545:67;:::i;:::-;9538:74;;9621:93;9710:3;9621:93;:::i;:::-;9739:2;9734:3;9730:12;9723:19;;9382:366;;;:::o;9754:::-;9896:3;9917:67;9981:2;9976:3;9917:67;:::i;:::-;9910:74;;9993:93;10082:3;9993:93;:::i;:::-;10111:2;10106:3;10102:12;10095:19;;9754:366;;;:::o;10126:::-;10268:3;10289:67;10353:2;10348:3;10289:67;:::i;:::-;10282:74;;10365:93;10454:3;10365:93;:::i;:::-;10483:2;10478:3;10474:12;10467:19;;10126:366;;;:::o;10498:::-;10640:3;10661:67;10725:2;10720:3;10661:67;:::i;:::-;10654:74;;10737:93;10826:3;10737:93;:::i;:::-;10855:2;10850:3;10846:12;10839:19;;10498:366;;;:::o;10870:::-;11012:3;11033:67;11097:2;11092:3;11033:67;:::i;:::-;11026:74;;11109:93;11198:3;11109:93;:::i;:::-;11227:2;11222:3;11218:12;11211:19;;10870:366;;;:::o;11242:::-;11384:3;11405:67;11469:2;11464:3;11405:67;:::i;:::-;11398:74;;11481:93;11570:3;11481:93;:::i;:::-;11599:2;11594:3;11590:12;11583:19;;11242:366;;;:::o;11614:365::-;11756:3;11777:66;11841:1;11836:3;11777:66;:::i;:::-;11770:73;;11852:93;11941:3;11852:93;:::i;:::-;11970:2;11965:3;11961:12;11954:19;;11614:365;;;:::o;11985:366::-;12127:3;12148:67;12212:2;12207:3;12148:67;:::i;:::-;12141:74;;12224:93;12313:3;12224:93;:::i;:::-;12342:2;12337:3;12333:12;12326:19;;11985:366;;;:::o;12357:::-;12499:3;12520:67;12584:2;12579:3;12520:67;:::i;:::-;12513:74;;12596:93;12685:3;12596:93;:::i;:::-;12714:2;12709:3;12705:12;12698:19;;12357:366;;;:::o;12729:365::-;12871:3;12892:66;12956:1;12951:3;12892:66;:::i;:::-;12885:73;;12967:93;13056:3;12967:93;:::i;:::-;13085:2;13080:3;13076:12;13069:19;;12729:365;;;:::o;13100:366::-;13242:3;13263:67;13327:2;13322:3;13263:67;:::i;:::-;13256:74;;13339:93;13428:3;13339:93;:::i;:::-;13457:2;13452:3;13448:12;13441:19;;13100:366;;;:::o;13472:::-;13614:3;13635:67;13699:2;13694:3;13635:67;:::i;:::-;13628:74;;13711:93;13800:3;13711:93;:::i;:::-;13829:2;13824:3;13820:12;13813:19;;13472:366;;;:::o;13844:::-;13986:3;14007:67;14071:2;14066:3;14007:67;:::i;:::-;14000:74;;14083:93;14172:3;14083:93;:::i;:::-;14201:2;14196:3;14192:12;14185:19;;13844:366;;;:::o;14216:::-;14358:3;14379:67;14443:2;14438:3;14379:67;:::i;:::-;14372:74;;14455:93;14544:3;14455:93;:::i;:::-;14573:2;14568:3;14564:12;14557:19;;14216:366;;;:::o;14588:365::-;14730:3;14751:66;14815:1;14810:3;14751:66;:::i;:::-;14744:73;;14826:93;14915:3;14826:93;:::i;:::-;14944:2;14939:3;14935:12;14928:19;;14588:365;;;:::o;14959:118::-;15046:24;15064:5;15046:24;:::i;:::-;15041:3;15034:37;14959:118;;:::o;15083:112::-;15166:22;15182:5;15166:22;:::i;:::-;15161:3;15154:35;15083:112;;:::o;15201:222::-;15294:4;15332:2;15321:9;15317:18;15309:26;;15345:71;15413:1;15402:9;15398:17;15389:6;15345:71;:::i;:::-;15201:222;;;;:::o;15429:254::-;15538:4;15576:2;15565:9;15561:18;15553:26;;15589:87;15673:1;15662:9;15658:17;15649:6;15589:87;:::i;:::-;15429:254;;;;:::o;15689:332::-;15810:4;15848:2;15837:9;15833:18;15825:26;;15861:71;15929:1;15918:9;15914:17;15905:6;15861:71;:::i;:::-;15942:72;16010:2;15999:9;15995:18;15986:6;15942:72;:::i;:::-;15689:332;;;;;:::o;16027:807::-;16276:4;16314:3;16303:9;16299:19;16291:27;;16328:71;16396:1;16385:9;16381:17;16372:6;16328:71;:::i;:::-;16409:72;16477:2;16466:9;16462:18;16453:6;16409:72;:::i;:::-;16491:80;16567:2;16556:9;16552:18;16543:6;16491:80;:::i;:::-;16581;16657:2;16646:9;16642:18;16633:6;16581:80;:::i;:::-;16671:73;16739:3;16728:9;16724:19;16715:6;16671:73;:::i;:::-;16754;16822:3;16811:9;16807:19;16798:6;16754:73;:::i;:::-;16027:807;;;;;;;;;:::o;16840:210::-;16927:4;16965:2;16954:9;16950:18;16942:26;;16978:65;17040:1;17029:9;17025:17;17016:6;16978:65;:::i;:::-;16840:210;;;;:::o;17056:274::-;17175:4;17213:2;17202:9;17198:18;17190:26;;17226:97;17320:1;17309:9;17305:17;17296:6;17226:97;:::i;:::-;17056:274;;;;:::o;17336:313::-;17449:4;17487:2;17476:9;17472:18;17464:26;;17536:9;17530:4;17526:20;17522:1;17511:9;17507:17;17500:47;17564:78;17637:4;17628:6;17564:78;:::i;:::-;17556:86;;17336:313;;;;:::o;17655:419::-;17821:4;17859:2;17848:9;17844:18;17836:26;;17908:9;17902:4;17898:20;17894:1;17883:9;17879:17;17872:47;17936:131;18062:4;17936:131;:::i;:::-;17928:139;;17655:419;;;:::o;18080:::-;18246:4;18284:2;18273:9;18269:18;18261:26;;18333:9;18327:4;18323:20;18319:1;18308:9;18304:17;18297:47;18361:131;18487:4;18361:131;:::i;:::-;18353:139;;18080:419;;;:::o;18505:::-;18671:4;18709:2;18698:9;18694:18;18686:26;;18758:9;18752:4;18748:20;18744:1;18733:9;18729:17;18722:47;18786:131;18912:4;18786:131;:::i;:::-;18778:139;;18505:419;;;:::o;18930:::-;19096:4;19134:2;19123:9;19119:18;19111:26;;19183:9;19177:4;19173:20;19169:1;19158:9;19154:17;19147:47;19211:131;19337:4;19211:131;:::i;:::-;19203:139;;18930:419;;;:::o;19355:::-;19521:4;19559:2;19548:9;19544:18;19536:26;;19608:9;19602:4;19598:20;19594:1;19583:9;19579:17;19572:47;19636:131;19762:4;19636:131;:::i;:::-;19628:139;;19355:419;;;:::o;19780:::-;19946:4;19984:2;19973:9;19969:18;19961:26;;20033:9;20027:4;20023:20;20019:1;20008:9;20004:17;19997:47;20061:131;20187:4;20061:131;:::i;:::-;20053:139;;19780:419;;;:::o;20205:::-;20371:4;20409:2;20398:9;20394:18;20386:26;;20458:9;20452:4;20448:20;20444:1;20433:9;20429:17;20422:47;20486:131;20612:4;20486:131;:::i;:::-;20478:139;;20205:419;;;:::o;20630:::-;20796:4;20834:2;20823:9;20819:18;20811:26;;20883:9;20877:4;20873:20;20869:1;20858:9;20854:17;20847:47;20911:131;21037:4;20911:131;:::i;:::-;20903:139;;20630:419;;;:::o;21055:::-;21221:4;21259:2;21248:9;21244:18;21236:26;;21308:9;21302:4;21298:20;21294:1;21283:9;21279:17;21272:47;21336:131;21462:4;21336:131;:::i;:::-;21328:139;;21055:419;;;:::o;21480:::-;21646:4;21684:2;21673:9;21669:18;21661:26;;21733:9;21727:4;21723:20;21719:1;21708:9;21704:17;21697:47;21761:131;21887:4;21761:131;:::i;:::-;21753:139;;21480:419;;;:::o;21905:::-;22071:4;22109:2;22098:9;22094:18;22086:26;;22158:9;22152:4;22148:20;22144:1;22133:9;22129:17;22122:47;22186:131;22312:4;22186:131;:::i;:::-;22178:139;;21905:419;;;:::o;22330:::-;22496:4;22534:2;22523:9;22519:18;22511:26;;22583:9;22577:4;22573:20;22569:1;22558:9;22554:17;22547:47;22611:131;22737:4;22611:131;:::i;:::-;22603:139;;22330:419;;;:::o;22755:::-;22921:4;22959:2;22948:9;22944:18;22936:26;;23008:9;23002:4;22998:20;22994:1;22983:9;22979:17;22972:47;23036:131;23162:4;23036:131;:::i;:::-;23028:139;;22755:419;;;:::o;23180:::-;23346:4;23384:2;23373:9;23369:18;23361:26;;23433:9;23427:4;23423:20;23419:1;23408:9;23404:17;23397:47;23461:131;23587:4;23461:131;:::i;:::-;23453:139;;23180:419;;;:::o;23605:::-;23771:4;23809:2;23798:9;23794:18;23786:26;;23858:9;23852:4;23848:20;23844:1;23833:9;23829:17;23822:47;23886:131;24012:4;23886:131;:::i;:::-;23878:139;;23605:419;;;:::o;24030:222::-;24123:4;24161:2;24150:9;24146:18;24138:26;;24174:71;24242:1;24231:9;24227:17;24218:6;24174:71;:::i;:::-;24030:222;;;;:::o;24258:320::-;24373:4;24411:2;24400:9;24396:18;24388:26;;24424:71;24492:1;24481:9;24477:17;24468:6;24424:71;:::i;:::-;24505:66;24567:2;24556:9;24552:18;24543:6;24505:66;:::i;:::-;24258:320;;;;;:::o;24584:831::-;24847:4;24885:3;24874:9;24870:19;24862:27;;24899:71;24967:1;24956:9;24952:17;24943:6;24899:71;:::i;:::-;24980:80;25056:2;25045:9;25041:18;25032:6;24980:80;:::i;:::-;25107:9;25101:4;25097:20;25092:2;25081:9;25077:18;25070:48;25135:108;25238:4;25229:6;25135:108;:::i;:::-;25127:116;;25253:72;25321:2;25310:9;25306:18;25297:6;25253:72;:::i;:::-;25335:73;25403:3;25392:9;25388:19;25379:6;25335:73;:::i;:::-;24584:831;;;;;;;;:::o;25421:442::-;25570:4;25608:2;25597:9;25593:18;25585:26;;25621:71;25689:1;25678:9;25674:17;25665:6;25621:71;:::i;:::-;25702:72;25770:2;25759:9;25755:18;25746:6;25702:72;:::i;:::-;25784;25852:2;25841:9;25837:18;25828:6;25784:72;:::i;:::-;25421:442;;;;;;:::o;25869:553::-;26046:4;26084:3;26073:9;26069:19;26061:27;;26098:71;26166:1;26155:9;26151:17;26142:6;26098:71;:::i;:::-;26179:72;26247:2;26236:9;26232:18;26223:6;26179:72;:::i;:::-;26261;26329:2;26318:9;26314:18;26305:6;26261:72;:::i;:::-;26343;26411:2;26400:9;26396:18;26387:6;26343:72;:::i;:::-;25869:553;;;;;;;:::o;26428:214::-;26517:4;26555:2;26544:9;26540:18;26532:26;;26568:67;26632:1;26621:9;26617:17;26608:6;26568:67;:::i;:::-;26428:214;;;;:::o;26729:132::-;26796:4;26819:3;26811:11;;26849:4;26844:3;26840:14;26832:22;;26729:132;;;:::o;26867:114::-;26934:6;26968:5;26962:12;26952:22;;26867:114;;;:::o;26987:99::-;27039:6;27073:5;27067:12;27057:22;;26987:99;;;:::o;27092:113::-;27162:4;27194;27189:3;27185:14;27177:22;;27092:113;;;:::o;27211:184::-;27310:11;27344:6;27339:3;27332:19;27384:4;27379:3;27375:14;27360:29;;27211:184;;;;:::o;27401:169::-;27485:11;27519:6;27514:3;27507:19;27559:4;27554:3;27550:14;27535:29;;27401:169;;;;:::o;27576:305::-;27616:3;27635:20;27653:1;27635:20;:::i;:::-;27630:25;;27669:20;27687:1;27669:20;:::i;:::-;27664:25;;27823:1;27755:66;27751:74;27748:1;27745:81;27742:107;;;27829:18;;:::i;:::-;27742:107;27873:1;27870;27866:9;27859:16;;27576:305;;;;:::o;27887:185::-;27927:1;27944:20;27962:1;27944:20;:::i;:::-;27939:25;;27978:20;27996:1;27978:20;:::i;:::-;27973:25;;28017:1;28007:35;;28022:18;;:::i;:::-;28007:35;28064:1;28061;28057:9;28052:14;;27887:185;;;;:::o;28078:348::-;28118:7;28141:20;28159:1;28141:20;:::i;:::-;28136:25;;28175:20;28193:1;28175:20;:::i;:::-;28170:25;;28363:1;28295:66;28291:74;28288:1;28285:81;28280:1;28273:9;28266:17;28262:105;28259:131;;;28370:18;;:::i;:::-;28259:131;28418:1;28415;28411:9;28400:20;;28078:348;;;;:::o;28432:191::-;28472:4;28492:20;28510:1;28492:20;:::i;:::-;28487:25;;28526:20;28544:1;28526:20;:::i;:::-;28521:25;;28565:1;28562;28559:8;28556:34;;;28570:18;;:::i;:::-;28556:34;28615:1;28612;28608:9;28600:17;;28432:191;;;;:::o;28629:96::-;28666:7;28695:24;28713:5;28695:24;:::i;:::-;28684:35;;28629:96;;;:::o;28731:104::-;28776:7;28805:24;28823:5;28805:24;:::i;:::-;28794:35;;28731:104;;;:::o;28841:90::-;28875:7;28918:5;28911:13;28904:21;28893:32;;28841:90;;;:::o;28937:126::-;28974:7;29014:42;29007:5;29003:54;28992:65;;28937:126;;;:::o;29069:77::-;29106:7;29135:5;29124:16;;29069:77;;;:::o;29152:86::-;29187:7;29227:4;29220:5;29216:16;29205:27;;29152:86;;;:::o;29244:152::-;29320:9;29353:37;29384:5;29353:37;:::i;:::-;29340:50;;29244:152;;;:::o;29402:121::-;29460:9;29493:24;29511:5;29493:24;:::i;:::-;29480:37;;29402:121;;;:::o;29529:126::-;29579:9;29612:37;29643:5;29612:37;:::i;:::-;29599:50;;29529:126;;;:::o;29661:113::-;29711:9;29744:24;29762:5;29744:24;:::i;:::-;29731:37;;29661:113;;;:::o;29780:307::-;29848:1;29858:113;29872:6;29869:1;29866:13;29858:113;;;29957:1;29952:3;29948:11;29942:18;29938:1;29933:3;29929:11;29922:39;29894:2;29891:1;29887:10;29882:15;;29858:113;;;29989:6;29986:1;29983:13;29980:101;;;30069:1;30060:6;30055:3;30051:16;30044:27;29980:101;29829:258;29780:307;;;:::o;30093:320::-;30137:6;30174:1;30168:4;30164:12;30154:22;;30221:1;30215:4;30211:12;30242:18;30232:81;;30298:4;30290:6;30286:17;30276:27;;30232:81;30360:2;30352:6;30349:14;30329:18;30326:38;30323:84;;;30379:18;;:::i;:::-;30323:84;30144:269;30093:320;;;:::o;30419:233::-;30458:3;30481:24;30499:5;30481:24;:::i;:::-;30472:33;;30527:66;30520:5;30517:77;30514:103;;;30597:18;;:::i;:::-;30514:103;30644:1;30637:5;30633:13;30626:20;;30419:233;;;:::o;30658:180::-;30706:77;30703:1;30696:88;30803:4;30800:1;30793:15;30827:4;30824:1;30817:15;30844:180;30892:77;30889:1;30882:88;30989:4;30986:1;30979:15;31013:4;31010:1;31003:15;31030:180;31078:77;31075:1;31068:88;31175:4;31172:1;31165:15;31199:4;31196:1;31189:15;31216:180;31264:77;31261:1;31254:88;31361:4;31358:1;31351:15;31385:4;31382:1;31375:15;31402:180;31450:77;31447:1;31440:88;31547:4;31544:1;31537:15;31571:4;31568:1;31561:15;31711:117;31820:1;31817;31810:12;31834:102;31875:6;31926:2;31922:7;31917:2;31910:5;31906:14;31902:28;31892:38;;31834:102;;;:::o;31942:166::-;32082:18;32078:1;32070:6;32066:14;32059:42;31942:166;:::o;32114:222::-;32254:34;32250:1;32242:6;32238:14;32231:58;32323:5;32318:2;32310:6;32306:15;32299:30;32114:222;:::o;32342:224::-;32482:34;32478:1;32470:6;32466:14;32459:58;32551:7;32546:2;32538:6;32534:15;32527:32;32342:224;:::o;32572:173::-;32712:25;32708:1;32700:6;32696:14;32689:49;32572:173;:::o;32751:170::-;32891:22;32887:1;32879:6;32875:14;32868:46;32751:170;:::o;32927:168::-;33067:20;33063:1;33055:6;33051:14;33044:44;32927:168;:::o;33101:158::-;33241:10;33237:1;33229:6;33225:14;33218:34;33101:158;:::o;33265:169::-;33405:21;33401:1;33393:6;33389:14;33382:45;33265:169;:::o;33440:166::-;33580:18;33576:1;33568:6;33564:14;33557:42;33440:166;:::o;33612:156::-;33752:8;33748:1;33740:6;33736:14;33729:32;33612:156;:::o;33774:176::-;33914:28;33910:1;33902:6;33898:14;33891:52;33774:176;:::o;33956:174::-;34096:26;34092:1;34084:6;34080:14;34073:50;33956:174;:::o;34136:224::-;34276:34;34272:1;34264:6;34260:14;34253:58;34345:7;34340:2;34332:6;34328:15;34321:32;34136:224;:::o;34366:248::-;34506:34;34502:1;34494:6;34490:14;34483:58;34575:31;34570:2;34562:6;34558:15;34551:56;34366:248;:::o;34620:155::-;34760:7;34756:1;34748:6;34744:14;34737:31;34620:155;:::o;34781:122::-;34854:24;34872:5;34854:24;:::i;:::-;34847:5;34844:35;34834:63;;34893:1;34890;34883:12;34834:63;34781:122;:::o;34909:138::-;34990:32;35016:5;34990:32;:::i;:::-;34983:5;34980:43;34970:71;;35037:1;35034;35027:12;34970:71;34909:138;:::o;35053:116::-;35123:21;35138:5;35123:21;:::i;:::-;35116:5;35113:32;35103:60;;35159:1;35156;35149:12;35103:60;35053:116;:::o;35175:122::-;35248:24;35266:5;35248:24;:::i;:::-;35241:5;35238:35;35228:63;;35287:1;35284;35277:12;35228:63;35175:122;:::o

Swarm Source

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