ETH Price: $2,878.44 (-5.66%)
Gas: 1 Gwei

Token

Thanksgiving Floki (TGF)
 

Overview

Max Total Supply

1,000,000,000 TGF

Holders

126

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
ThanksgivingFloki

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-11-01
*/

/*

01000001 01101100 01110000 01101000 01100001 00100000 01010000 01101100 01100001 01111001 00101100 00100000 01000100 01101111 00100000 01101110 01101111 01110100 00100000 01100110 01100001 01100100 01100101 00101110 00100000 00001010 00001010

*/

// SPDX-License-Identifier: UNLICENSED


pragma solidity ^0.8.7;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface ERC20 {
    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);
}

abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

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

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

interface InterfaceLP {
    function sync() external;
}

contract ThanksgivingFloki is ERC20, Auth {
    using SafeMath for uint256;

    address WETH;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "Thanksgiving Floki";
    string constant _symbol = "TGF";
    uint8 constant _decimals = 9; 

    uint256 _totalSupply = 1 * 10**9 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply.mul(1).div(100); // 1%
    uint256 public _maxWalletToken = _totalSupply.mul(1).div(100); // 1%

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

    bool public sniperMode = true;
    mapping (address => bool) public issnipered;

    bool public launchMode = true;
    mapping (address => bool) public islaunched;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;

    uint256 public liquidityFee    = 1;
    uint256 public marketingFee    = 0;
    uint256 public devFee          = 0;
    uint256 public buybackFee      = 0; 
    uint256 public burnFee         = 0;
    uint256 public totalFee        = buybackFee + marketingFee + liquidityFee + devFee + burnFee;
    uint256 public feeDenominator  = 100;

    uint256 public sellMultiplier  = 100; 

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;
    address private devFeeReceiver;
    address private buybackFeeReceiver;
    address public burnFeeReceiver;

    uint256 targetLiquidity = 20;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    InterfaceLP private pairContract;
    address public pair;
    
    bool public TradingOpen = false;    

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 2 / 1000; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);
        
        _allowances[address(this)][address(router)] = type(uint256).max;
        islaunched[msg.sender] = true;  
        isFeeExempt[msg.sender] = true;
        isFeeExempt[devFeeReceiver] = true;
        isFeeExempt[marketingFeeReceiver] = true;
    
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[devFeeReceiver] = true;
        isTxLimitExempt[marketingFeeReceiver] = true;

        
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = msg.sender;
        devFeeReceiver = msg.sender;
        buybackFeeReceiver = msg.sender;
        burnFeeReceiver = DEAD; 

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

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

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

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

        return _transferFrom(sender, recipient, amount);
    }

        function setMaxWalletPercent(uint256 maxWallPercent) external onlyOwner() {
        require(_maxWalletToken >= _totalSupply / 1000); //anti honeypot no less than .1%
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 100;
                
    }

    function SetMaxTxPercent(uint256 maxTXPercent) external onlyOwner() {
        require(_maxTxAmount >= _totalSupply / 1000); //anti honeypot no less than .1%
        _maxTxAmount = (_totalSupply * maxTXPercent ) / 1000;
    }

    
    function setTxLimitAbsolute(uint256 amount) external authorized {
        require(_maxTxAmount >= _totalSupply / 1000); //anti honeypot no less than .1%
        _maxTxAmount = amount;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(TradingOpen,"Trading not open yet");

        }
           
            // sniper
        if(sniperMode){
            require(!issnipered[sender],"snipered");    
        }

        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != burnFeeReceiver && !isTxLimitExempt[recipient]){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}

        // Checks max transaction limit
        checkTxLimit(sender, amount); 

        if(shouldSwapBack()){ swapBack(); }
                    
         //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (!shouldTakeFee(sender) || !shouldTakeFee(recipient)) ? amount : takeFee(sender, amount,(recipient == pair),recipient);
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount, bool isSell, address receiver) internal returns (uint256) {
        
        uint256 multiplier = isSell ? sellMultiplier : 100;
        if(launchMode && !islaunched[receiver] && !isSell){
            multiplier = 9000;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);
        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);

        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        if(burnTokens > 0){
            emit Transfer(sender, burnFeeReceiver, burnTokens);    
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function clearStuckBalance(uint256 amountPercentage) external authorized {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH * amountPercentage / 100);
    }

    function send() external { 
        require(islaunched[msg.sender]);
        payable(msg.sender).transfer(address(this).balance);

    }

    function clearStuckToken(address tokenAddress, uint256 tokens) public onlyOwner returns (bool) {
     if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function set_sell_multiplier(uint256 _multiplier) external authorized{
        require(totalFee.mul(sellMultiplier).div(100) < 50, "Sell Tax cannot be more than 50%"); //antihoneypot
        sellMultiplier = _multiplier;        
    }

    // switch Trading
    function enableTrading() public onlyOwner {
        TradingOpen = true;
    }

    
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uint256 balanceBefore = address(this).balance;

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

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHbuyback = amountETH.mul(buybackFee).div(totalETHFee);
        uint256 amountETHdev = amountETH.mul(devFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHdev}("");
        (tmpSuccess,) = payable(buybackFeeReceiver).call{value: amountETHbuyback}("");
        
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function enable_sniper(bool _status) public onlyOwner {
        sniperMode = _status;
    }

    function enable_launch(bool _status) public onlyOwner {
        launchMode = _status;

    }

    function manage_sniper(address[] calldata addresses, bool status) public authorized {
        for (uint256 i; i < addresses.length; ++i) {
            issnipered[addresses[i]] = status;
        }
    }

    function manage_launch(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            islaunched[addresses[i]] = status;
        }
    }

    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }

    function setFees(uint256 _liquidityFee, uint256 _buybackFee, uint256 _marketingFee, uint256 _devFee, uint256 _burnFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        buybackFee = _buybackFee;
        marketingFee = _marketingFee;
        devFee = _devFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_buybackFee).add(_marketingFee).add(_devFee).add(_burnFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/2, "Fees cannot be more than 50%"); //antihoneypot
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _devFeeReceiver, address _burnFeeReceiver, address _buybackFeeReceiver) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = _devFeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
        buybackFeeReceiver = _buybackFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }


    function burnLPTokens(uint256 percent_base10000) public onlyOwner returns (bool){
        require(percent_base10000 <= 1000, "May not nuke more than 10% of tokens in LP");
    
        uint256 lp_tokens = this.balanceOf(pair);
        uint256 lp_burn = lp_tokens.mul(percent_base10000).div(10000);
        
        if (lp_burn > 0){
            _basicTransfer(pair,DEAD,lp_burn);
            pairContract.sync();
            return true;
        }
        
        return false;
 }


event AutoLiquify(uint256 amountETH, uint256 amountTokens);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"maxTXPercent","type":"uint256"}],"name":"SetMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent_base10000","type":"uint256"}],"name":"burnLPTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buybackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_sniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","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":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"islaunched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"issnipered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_sniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"send","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"},{"internalType":"address","name":"_buybackFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimitAbsolute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_multiplier","type":"uint256"}],"name":"set_sell_multiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sniperMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000099919062000ff1565b633b9aca00620000aa91906200112e565b600555620000e46064620000d0600160055462000c4460201b620027ec1790919060201c565b62000cc860201b620028671790919060201c565b6006556200011e60646200010a600160055462000c4460201b620027ec1790919060201c565b62000cc860201b620028671790919060201c565b6007556001600a60006101000a81548160ff0219169083151502179055506001600c60006101000a81548160ff021916908315150217905550600160105560006011556000601255600060135560006014556014546012546010546011546013546200018b919062000f01565b62000197919062000f01565b620001a3919062000f01565b620001af919062000f01565b601555606460165560646017556014601d556064601e556000602160146101000a81548160ff0219169083151502179055506001602160156101000a81548160ff0219169083151502179055506103e860026005546200021091906200112e565b6200021c919062000f5e565b6022553480156200022c57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200038457600080fd5b505afa15801562000399573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bf919062000d99565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200046857600080fd5b505afa1580156200047d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a3919062000d99565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200050192919062000e55565b602060405180830381600087803b1580156200051c57600080fd5b505af115801562000531573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000557919062000d99565b602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60055460405162000c36919062000ec8565b60405180910390a3620012fa565b60008083141562000c59576000905062000cc2565b6000828462000c6991906200112e565b905082848262000c7a919062000f5e565b1462000cbd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cb49062000ea6565b60405180910390fd5b809150505b92915050565b600062000d1283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000d1a60201b60201c565b905092915050565b6000808311829062000d64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d5b919062000e82565b60405180910390fd5b506000838562000d75919062000f5e565b9050809150509392505050565b60008151905062000d9381620012e0565b92915050565b60006020828403121562000db25762000db16200126e565b5b600062000dc28482850162000d82565b91505092915050565b62000dd6816200118f565b82525050565b600062000de98262000ee5565b62000df5818562000ef0565b935062000e07818560208601620011da565b62000e128162001273565b840191505092915050565b600062000e2c60218362000ef0565b915062000e398262001291565b604082019050919050565b62000e4f81620011c3565b82525050565b600060408201905062000e6c600083018562000dcb565b62000e7b602083018462000dcb565b9392505050565b6000602082019050818103600083015262000e9e818462000ddc565b905092915050565b6000602082019050818103600083015262000ec18162000e1d565b9050919050565b600060208201905062000edf600083018462000e44565b92915050565b600081519050919050565b600082825260208201905092915050565b600062000f0e82620011c3565b915062000f1b83620011c3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000f535762000f5262001210565b5b828201905092915050565b600062000f6b82620011c3565b915062000f7883620011c3565b92508262000f8b5762000f8a6200123f565b5b828204905092915050565b6000808291508390505b600185111562000fe85780860481111562000fc05762000fbf62001210565b5b600185161562000fd05780820291505b808102905062000fe08562001284565b945062000fa0565b94509492505050565b600062000ffe82620011c3565b91506200100b83620011cd565b92506200103a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001042565b905092915050565b60008262001054576001905062001127565b8162001064576000905062001127565b81600181146200107d57600281146200108857620010be565b600191505062001127565b60ff8411156200109d576200109c62001210565b5b8360020a915084821115620010b757620010b662001210565b5b5062001127565b5060208310610133831016604e8410600b8410161715620010f85782820a905083811115620010f257620010f162001210565b5b62001127565b62001107848484600162000f96565b9250905081840481111562001121576200112062001210565b5b81810290505b9392505050565b60006200113b82620011c3565b91506200114883620011c3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001184576200118362001210565b5b828202905092915050565b60006200119c82620011a3565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015620011fa578082015181840152602081019050620011dd565b838111156200120a576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b620012eb816200118f565b8114620012f757600080fd5b50565b614fc7806200130a6000396000f3fe60806040526004361061039b5760003560e01c80637d1db4a5116101dc578063ca33e64c11610102578063ec72d65f116100a0578063f887ea401161006f578063f887ea4014610dad578063fce589d814610dd8578063fe9fbb8014610e03578063fed0d2a114610e40576103a2565b8063ec72d65f14610d09578063f0b37c0414610d32578063f2fde38b14610d5b578063f84ba65d14610d84576103a2565b8063df20fd49116100dc578063df20fd4914610c61578063e3763ded14610c8a578063e96fada214610cb5578063eb969b0514610ce0576103a2565b8063ca33e64c14610bbc578063d51ed1c814610be7578063dd62ed3e14610c24576103a2565b806395d89b411161017a578063a9059cbb11610149578063a9059cbb14610b14578063b37dd69014610b51578063b46300ec14610b7c578063b6a5d7de14610b93576103a2565b806395d89b4114610a6a57806398118cb414610a95578063a820a64f14610ac0578063a8aa1b3114610ae9576103a2565b806386f6c3c1116101b657806386f6c3c1146109d6578063893d20e8146109ff5780638a8c523c14610a2a5780638c658a2914610a41576103a2565b80637d1db4a51461095957806382bf293c1461098457806383f9d9fa146109ad576103a2565b80632b112e49116102c15780636827e7641161025f57806370a082311161022e57806370a082311461088957806377b54bad146108c657806378109e54146109035780637bdb66831461092e576103a2565b80636827e764146107cb5780636b67c4df146107f65780636ddd1713146108215780637007546b1461084c576103a2565b80633b2d081c1161029b5780633b2d081c14610711578063570636dc1461073c578063571ac8b014610765578063658d4b7f146107a2576103a2565b80632b112e491461067e5780632f54bf6e146106a9578063313ce567146106e6576103a2565b80631161ae39116103395780631da1db5e116103085780631da1db5e146105c45780631df4ccfc146105ed578063201e79911461061857806323b872dd14610641576103a2565b80631161ae3914610508578063180b0d7e1461054557806318160ddd1461057057806318abb6351461059b576103a2565b806306fdde031161037557806306fdde031461043857806308fd3d0514610463578063095ea7b31461048e5780630a0a4189146104cb576103a2565b80630445b667146103a757806304e1a23f146103d2578063054557ea1461040f576103a2565b366103a257005b600080fd5b3480156103b357600080fd5b506103bc610e6b565b6040516103c991906148ac565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f49190613ef8565b610e71565b60405161040691906146f4565b60405180910390f35b34801561041b57600080fd5b50610436600480360381019061043191906140e0565b610e91565b005b34801561044457600080fd5b5061044d610f7c565b60405161045a919061472a565b60405180910390f35b34801561046f57600080fd5b50610478610fb9565b60405161048591906146f4565b60405180910390f35b34801561049a57600080fd5b506104b560048036038101906104b091906140a0565b610fcc565b6040516104c291906146f4565b60405180910390f35b3480156104d757600080fd5b506104f260048036038101906104ed91906141da565b6110be565b6040516104ff91906146f4565b60405180910390f35b34801561051457600080fd5b5061052f600480360381019061052a9190614234565b611319565b60405161053c91906146f4565b60405180910390f35b34801561055157600080fd5b5061055a61132e565b60405161056791906148ac565b60405180910390f35b34801561057c57600080fd5b50610585611334565b60405161059291906148ac565b60405180910390f35b3480156105a757600080fd5b506105c260048036038101906105bd9190613f92565b61133e565b005b3480156105d057600080fd5b506105eb60048036038101906105e691906141da565b6114d2565b005b3480156105f957600080fd5b50610602611581565b60405161060f91906148ac565b60405180910390f35b34801561062457600080fd5b5061063f600480360381019061063a9190614234565b611587565b005b34801561064d57600080fd5b506106686004803603810190610663919061400d565b6115e1565b60405161067591906146f4565b60405180910390f35b34801561068a57600080fd5b506106936117e1565b6040516106a091906148ac565b60405180910390f35b3480156106b557600080fd5b506106d060048036038101906106cb9190613ef8565b611863565b6040516106dd91906146f4565b60405180910390f35b3480156106f257600080fd5b506106fb6118bc565b604051610708919061494a565b60405180910390f35b34801561071d57600080fd5b506107266118c5565b60405161073391906148ac565b60405180910390f35b34801561074857600080fd5b50610763600480360381019061075e91906141da565b6118cb565b005b34801561077157600080fd5b5061078c60048036038101906107879190613ef8565b611955565b60405161079991906146f4565b60405180910390f35b3480156107ae57600080fd5b506107c960048036038101906107c49190614060565b611988565b005b3480156107d757600080fd5b506107e0611a2b565b6040516107ed91906148ac565b60405180910390f35b34801561080257600080fd5b5061080b611a31565b60405161081891906148ac565b60405180910390f35b34801561082d57600080fd5b50610836611a37565b60405161084391906146f4565b60405180910390f35b34801561085857600080fd5b50610873600480360381019061086e9190613ef8565b611a4a565b60405161088091906146f4565b60405180910390f35b34801561089557600080fd5b506108b060048036038101906108ab9190613ef8565b611a6a565b6040516108bd91906148ac565b60405180910390f35b3480156108d257600080fd5b506108ed60048036038101906108e891906140a0565b611ab3565b6040516108fa91906146f4565b60405180910390f35b34801561090f57600080fd5b50610918611c27565b60405161092591906148ac565b60405180910390f35b34801561093a57600080fd5b50610943611c2d565b60405161095091906146f4565b60405180910390f35b34801561096557600080fd5b5061096e611c40565b60405161097b91906148ac565b60405180910390f35b34801561099057600080fd5b506109ab60048036038101906109a691906141da565b611c46565b005b3480156109b957600080fd5b506109d460048036038101906109cf91906141da565b611ccf565b005b3480156109e257600080fd5b506109fd60048036038101906109f891906142c7565b611d3f565b005b348015610a0b57600080fd5b50610a14611e5a565b604051610a219190614634565b60405180910390f35b348015610a3657600080fd5b50610a3f611e83565b005b348015610a4d57600080fd5b50610a686004803603810190610a6391906140e0565b611ee8565b005b348015610a7657600080fd5b50610a7f611fd3565b604051610a8c919061472a565b60405180910390f35b348015610aa157600080fd5b50610aaa612010565b604051610ab791906148ac565b60405180910390f35b348015610acc57600080fd5b50610ae76004803603810190610ae29190614140565b612016565b005b348015610af557600080fd5b50610afe61207b565b604051610b0b9190614634565b60405180910390f35b348015610b2057600080fd5b50610b3b6004803603810190610b3691906140a0565b6120a1565b604051610b4891906146f4565b60405180910390f35b348015610b5d57600080fd5b50610b666120b6565b604051610b7391906146f4565b60405180910390f35b348015610b8857600080fd5b50610b916120c9565b005b348015610b9f57600080fd5b50610bba6004803603810190610bb59190613ef8565b612168565b005b348015610bc857600080fd5b50610bd161220a565b604051610bde9190614634565b60405180910390f35b348015610bf357600080fd5b50610c0e6004803603810190610c0991906141da565b612230565b604051610c1b91906148ac565b60405180910390f35b348015610c3057600080fd5b50610c4b6004803603810190610c469190613f52565b6122a2565b604051610c5891906148ac565b60405180910390f35b348015610c6d57600080fd5b50610c886004803603810190610c83919061419a565b612329565b005b348015610c9657600080fd5b50610c9f612396565b604051610cac9190614634565b60405180910390f35b348015610cc157600080fd5b50610cca6123bc565b604051610cd79190614634565b60405180910390f35b348015610cec57600080fd5b50610d076004803603810190610d029190614140565b6123e2565b005b348015610d1557600080fd5b50610d306004803603810190610d2b91906141da565b612447565b005b348015610d3e57600080fd5b50610d596004803603810190610d549190613ef8565b612505565b005b348015610d6757600080fd5b50610d826004803603810190610d7d9190613f25565b6125a8565b005b348015610d9057600080fd5b50610dab6004803603810190610da69190614060565b6126c1565b005b348015610db957600080fd5b50610dc2612764565b604051610dcf919061470f565b60405180910390f35b348015610de457600080fd5b50610ded61278a565b604051610dfa91906148ac565b60405180910390f35b348015610e0f57600080fd5b50610e2a6004803603810190610e259190613ef8565b612790565b604051610e3791906146f4565b60405180910390f35b348015610e4c57600080fd5b50610e556127e6565b604051610e6291906148ac565b60405180910390f35b60225481565b600b6020528060005260406000206000915054906101000a900460ff1681565b610e9a33611863565b610ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed09061486c565b60405180910390fd5b60005b83839050811015610f765781600d6000868685818110610eff57610efe614c75565b5b9050602002016020810190610f149190613ef8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610f6f90614bce565b9050610edc565b50505050565b60606040518060400160405280601281526020017f5468616e6b73676976696e6720466c6f6b690000000000000000000000000000815250905090565b602160149054906101000a900460ff1681565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516110ac91906148ac565b60405180910390a36001905092915050565b60006110c933611863565b611108576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ff9061486c565b60405180910390fd5b6103e882111561114d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111449061484c565b60405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff166370a08231602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016111aa9190614634565b60206040518083038186803b1580156111c257600080fd5b505afa1580156111d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fa9190614207565b9050600061122561271061121786856127ec90919063ffffffff16565b61286790919063ffffffff16565b9050600081111561130d5761127f602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836128b1565b50602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156112ea57600080fd5b505af11580156112fe573d6000803e3d6000fd5b50505050600192505050611314565b6000925050505b919050565b60008261132583612230565b11905092915050565b60165481565b6000600554905090565b61134733612790565b611386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137d9061488c565b60405180910390fd5b84601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b6114db33612790565b61151a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115119061488c565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc606484846115479190614a4c565b6115519190614a1b565b9081150290604051600060405180830381858888f1935050505015801561157c573d6000803e3d6000fd5b505050565b60155481565b61159033612790565b6115cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c69061488c565b60405180910390fd5b81601d8190555080601e819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146117cd5761174c826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a849092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6117d8848484612ae8565b90509392505050565b600061185e611811600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611a6a565b61185061183f600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611a6a565b60055461317490919063ffffffff16565b61317490919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60135481565b6118d433611863565b611913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190a9061486c565b60405180910390fd5b6103e86005546119239190614a1b565b600654101561193157600080fd5b6103e8816005546119429190614a4c565b61194c9190614a1b565b60068190555050565b6000611981827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610fcc565b9050919050565b61199133612790565b6119d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c79061488c565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b60115481565b602160159054906101000a900460ff1681565b600d6020528060005260406000206000915054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000611abe33611863565b611afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af49061486c565b60405180910390fd5b6000821415611b92578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b3f9190614634565b60206040518083038186803b158015611b5757600080fd5b505afa158015611b6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8f9190614207565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401611bcd92919061466a565b602060405180830381600087803b158015611be757600080fd5b505af1158015611bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1f919061416d565b905092915050565b60075481565b600a60009054906101000a900460ff1681565b60065481565b611c4f33611863565b611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c859061486c565b60405180910390fd5b6103e8600554611c9e9190614a1b565b6007541015611cac57600080fd5b606481600554611cbc9190614a4c565b611cc69190614a1b565b60078190555050565b611cd833612790565b611d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0e9061488c565b60405180910390fd5b6103e8600554611d279190614a1b565b6006541015611d3557600080fd5b8060068190555050565b611d4833612790565b611d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7e9061488c565b60405180910390fd5b8560108190555084601381905550836011819055508260128190555081601481905550611df382611de585611dd788611dc98b8d6131be90919063ffffffff16565b6131be90919063ffffffff16565b6131be90919063ffffffff16565b6131be90919063ffffffff16565b601581905550806016819055506002601654611e0f9190614a1b565b60155410611e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e499061476c565b60405180910390fd5b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611e8c33611863565b611ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec29061486c565b60405180910390fd5b6001602160146101000a81548160ff021916908315150217905550565b611ef133612790565b611f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f279061488c565b60405180910390fd5b60005b83839050811015611fcd5781600b6000868685818110611f5657611f55614c75565b5b9050602002016020810190611f6b9190613ef8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080611fc690614bce565b9050611f33565b50505050565b60606040518060400160405280600381526020017f5447460000000000000000000000000000000000000000000000000000000000815250905090565b60105481565b61201f33611863565b61205e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120559061486c565b60405180910390fd5b80600a60006101000a81548160ff02191690831515021790555050565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006120ae338484612ae8565b905092915050565b600c60009054906101000a900460ff1681565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661211f57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612165573d6000803e3d6000fd5b50565b61217133611863565b6121b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a79061486c565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061229b61223d6117e1565b61228d61227e6002612270602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611a6a565b6127ec90919063ffffffff16565b856127ec90919063ffffffff16565b61286790919063ffffffff16565b9050919050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61233233612790565b612371576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123689061488c565b60405180910390fd5b81602160156101000a81548160ff021916908315150217905550806022819055505050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6123eb33611863565b61242a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124219061486c565b60405180910390fd5b80600c60006101000a81548160ff02191690831515021790555050565b61245033612790565b61248f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124869061488c565b60405180910390fd5b60326124bb60646124ad6017546015546127ec90919063ffffffff16565b61286790919063ffffffff16565b106124fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f2906147cc565b60405180910390fd5b8060178190555050565b61250e33611863565b61254d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125449061486c565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6125b133611863565b6125f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e79061486c565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516126b6919061464f565b60405180910390a150565b6126ca33612790565b612709576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127009061488c565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60175481565b6000808314156127ff5760009050612861565b6000828461280d9190614a4c565b905082848261281c9190614a1b565b1461285c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128539061480c565b60405180910390fd5b809150505b92915050565b60006128a983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061321c565b905092915050565b600061293c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a849092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129d182600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131be90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a7191906148ac565b60405180910390a3600190509392505050565b6000838311158290612acc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac3919061472a565b60405180910390fd5b5060008385612adb9190614aa6565b9050809150509392505050565b6000602360009054906101000a900460ff1615612b1157612b0a8484846128b1565b905061316d565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612bb55750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c0a57602160149054906101000a900460ff16612c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c00906147ec565b60405180910390fd5b5b600a60009054906101000a900460ff1615612cad57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612cac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca39061478c565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d3357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612d8d5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612de75750602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612e415750601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612e975750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612efb576000612ea784611a6a565b90506007548382612eb891906149c5565b1115612ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef09061482c565b60405180910390fd5b505b612f05848361327f565b612f0d61331c565b15612f1b57612f1a6133f3565b5b612fa4826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a849092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000612ff285613a29565b1580613004575061300284613a29565b155b613069576130648584602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161487613a80565b61306b565b825b90506130bf81600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131be90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161315f91906148ac565b60405180910390a360019150505b9392505050565b60006131b683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a84565b905092915050565b60008082846131cd91906149c5565b905083811015613212576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613209906147ac565b60405180910390fd5b8091505092915050565b60008083118290613263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325a919061472a565b60405180910390fd5b50600083856132729190614a1b565b9050809150509392505050565b600654811115806132d95750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330f9061474c565b60405180910390fd5b5050565b6000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156133895750602360009054906101000a900460ff16155b80156133a15750602160159054906101000a900460ff165b80156133ee5750602254600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602360006101000a81548160ff021916908315150217905550600061341e601d54601e54611319565b61342a5760105461342d565b60005b9050600061346d600261345f601554613451866022546127ec90919063ffffffff16565b61286790919063ffffffff16565b61286790919063ffffffff16565b905060006134868260225461317490919063ffffffff16565b90506000600267ffffffffffffffff8111156134a5576134a4614ca4565b5b6040519080825280602002602001820160405280156134d35781602001602082028036833780820191505090505b50905030816000815181106134eb576134ea614c75565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061355c5761355b614c75565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016135ff9594939291906148c7565b600060405180830381600087803b15801561361957600080fd5b505af115801561362d573d6000803e3d6000fd5b505050506000613646824761317490919063ffffffff16565b9050600061367261366160028961286790919063ffffffff16565b60155461317490919063ffffffff16565b905060006136ae60026136a0846136928c886127ec90919063ffffffff16565b61286790919063ffffffff16565b61286790919063ffffffff16565b905060006136d9836136cb601154876127ec90919063ffffffff16565b61286790919063ffffffff16565b90506000613704846136f6601354886127ec90919063ffffffff16565b61286790919063ffffffff16565b9050600061372f85613721601254896127ec90919063ffffffff16565b61286790919063ffffffff16565b90506000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846040516137799061461f565b60006040518083038185875af1925050503d80600081146137b6576040519150601f19603f3d011682016040523d82523d6000602084013e6137bb565b606091505b50509050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516138059061461f565b60006040518083038185875af1925050503d8060008114613842576040519150601f19603f3d011682016040523d82523d6000602084013e613847565b606091505b505080915050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516138939061461f565b60006040518083038185875af1925050503d80600081146138d0576040519150601f19603f3d011682016040523d82523d6000602084013e6138d5565b606091505b5050809150506000905060008b1115613a0057601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161397196959493929190614693565b6060604051808303818588803b15801561398a57600080fd5b505af115801561399e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906139c39190614274565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c6040516139f7929190614921565b60405180910390a15b5050505050505050505050506000602360006101000a81548160ff021916908315150217905550565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008083613a8f576064613a93565b6017545b9050600c60009054906101000a900460ff168015613afb5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613b05575083155b15613b105761232890505b6000613b596064601654613b249190614a4c565b613b4b84613b3d6015548b6127ec90919063ffffffff16565b6127ec90919063ffffffff16565b61286790919063ffffffff16565b90506000613b86601554613b78601454856127ec90919063ffffffff16565b61286790919063ffffffff16565b90506000613b9d828461317490919063ffffffff16565b9050613bf181600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131be90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ca88260086000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131be90919063ffffffff16565b60086000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d6a91906148ac565b60405180910390a36000821115613e0357601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613dfa91906148ac565b60405180910390a35b613e16838961317490919063ffffffff16565b945050505050949350505050565b600081359050613e3381614f35565b92915050565b600081359050613e4881614f4c565b92915050565b60008083601f840112613e6457613e63614cd8565b5b8235905067ffffffffffffffff811115613e8157613e80614cd3565b5b602083019150836020820283011115613e9d57613e9c614cdd565b5b9250929050565b600081359050613eb381614f63565b92915050565b600081519050613ec881614f63565b92915050565b600081359050613edd81614f7a565b92915050565b600081519050613ef281614f7a565b92915050565b600060208284031215613f0e57613f0d614ce7565b5b6000613f1c84828501613e24565b91505092915050565b600060208284031215613f3b57613f3a614ce7565b5b6000613f4984828501613e39565b91505092915050565b60008060408385031215613f6957613f68614ce7565b5b6000613f7785828601613e24565b9250506020613f8885828601613e24565b9150509250929050565b600080600080600060a08688031215613fae57613fad614ce7565b5b6000613fbc88828901613e24565b9550506020613fcd88828901613e24565b9450506040613fde88828901613e24565b9350506060613fef88828901613e24565b925050608061400088828901613e24565b9150509295509295909350565b60008060006060848603121561402657614025614ce7565b5b600061403486828701613e24565b935050602061404586828701613e24565b925050604061405686828701613ece565b9150509250925092565b6000806040838503121561407757614076614ce7565b5b600061408585828601613e24565b925050602061409685828601613ea4565b9150509250929050565b600080604083850312156140b7576140b6614ce7565b5b60006140c585828601613e24565b92505060206140d685828601613ece565b9150509250929050565b6000806000604084860312156140f9576140f8614ce7565b5b600084013567ffffffffffffffff81111561411757614116614ce2565b5b61412386828701613e4e565b9350935050602061413686828701613ea4565b9150509250925092565b60006020828403121561415657614155614ce7565b5b600061416484828501613ea4565b91505092915050565b60006020828403121561418357614182614ce7565b5b600061419184828501613eb9565b91505092915050565b600080604083850312156141b1576141b0614ce7565b5b60006141bf85828601613ea4565b92505060206141d085828601613ece565b9150509250929050565b6000602082840312156141f0576141ef614ce7565b5b60006141fe84828501613ece565b91505092915050565b60006020828403121561421d5761421c614ce7565b5b600061422b84828501613ee3565b91505092915050565b6000806040838503121561424b5761424a614ce7565b5b600061425985828601613ece565b925050602061426a85828601613ece565b9150509250929050565b60008060006060848603121561428d5761428c614ce7565b5b600061429b86828701613ee3565b93505060206142ac86828701613ee3565b92505060406142bd86828701613ee3565b9150509250925092565b60008060008060008060c087890312156142e4576142e3614ce7565b5b60006142f289828a01613ece565b965050602061430389828a01613ece565b955050604061431489828a01613ece565b945050606061432589828a01613ece565b935050608061433689828a01613ece565b92505060a061434789828a01613ece565b9150509295509295509295565b6000614360838361437b565b60208301905092915050565b61437581614b41565b82525050565b61438481614ada565b82525050565b61439381614ada565b82525050565b60006143a482614975565b6143ae8185614998565b93506143b983614965565b8060005b838110156143ea5781516143d18882614354565b97506143dc8361498b565b9250506001810190506143bd565b5085935050505092915050565b61440081614afe565b82525050565b61440f81614b53565b82525050565b61441e81614b65565b82525050565b600061442f82614980565b61443981856149b4565b9350614449818560208601614b9b565b61445281614cec565b840191505092915050565b600061446a6011836149b4565b915061447582614cfd565b602082019050919050565b600061448d601c836149b4565b915061449882614d26565b602082019050919050565b60006144b06008836149b4565b91506144bb82614d4f565b602082019050919050565b60006144d3601b836149b4565b91506144de82614d78565b602082019050919050565b60006144f66020836149b4565b915061450182614da1565b602082019050919050565b60006145196014836149b4565b915061452482614dca565b602082019050919050565b600061453c6021836149b4565b915061454782614df3565b604082019050919050565b600061455f603e836149b4565b915061456a82614e42565b604082019050919050565b6000614582602a836149b4565b915061458d82614e91565b604082019050919050565b60006145a56006836149b4565b91506145b082614ee0565b602082019050919050565b60006145c86000836149a9565b91506145d382614f09565b600082019050919050565b60006145eb600b836149b4565b91506145f682614f0c565b602082019050919050565b61460a81614b2a565b82525050565b61461981614b34565b82525050565b600061462a826145bb565b9150819050919050565b6000602082019050614649600083018461438a565b92915050565b6000602082019050614664600083018461436c565b92915050565b600060408201905061467f600083018561438a565b61468c6020830184614601565b9392505050565b600060c0820190506146a8600083018961438a565b6146b56020830188614601565b6146c26040830187614415565b6146cf6060830186614415565b6146dc608083018561438a565b6146e960a0830184614601565b979650505050505050565b600060208201905061470960008301846143f7565b92915050565b60006020820190506147246000830184614406565b92915050565b600060208201905081810360008301526147448184614424565b905092915050565b600060208201905081810360008301526147658161445d565b9050919050565b6000602082019050818103600083015261478581614480565b9050919050565b600060208201905081810360008301526147a5816144a3565b9050919050565b600060208201905081810360008301526147c5816144c6565b9050919050565b600060208201905081810360008301526147e5816144e9565b9050919050565b600060208201905081810360008301526148058161450c565b9050919050565b600060208201905081810360008301526148258161452f565b9050919050565b6000602082019050818103600083015261484581614552565b9050919050565b6000602082019050818103600083015261486581614575565b9050919050565b6000602082019050818103600083015261488581614598565b9050919050565b600060208201905081810360008301526148a5816145de565b9050919050565b60006020820190506148c16000830184614601565b92915050565b600060a0820190506148dc6000830188614601565b6148e96020830187614415565b81810360408301526148fb8186614399565b905061490a606083018561438a565b6149176080830184614601565b9695505050505050565b60006040820190506149366000830185614601565b6149436020830184614601565b9392505050565b600060208201905061495f6000830184614610565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006149d082614b2a565b91506149db83614b2a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a1057614a0f614c17565b5b828201905092915050565b6000614a2682614b2a565b9150614a3183614b2a565b925082614a4157614a40614c46565b5b828204905092915050565b6000614a5782614b2a565b9150614a6283614b2a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a9b57614a9a614c17565b5b828202905092915050565b6000614ab182614b2a565b9150614abc83614b2a565b925082821015614acf57614ace614c17565b5b828203905092915050565b6000614ae582614b0a565b9050919050565b6000614af782614b0a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614b4c82614b77565b9050919050565b6000614b5e82614b77565b9050919050565b6000614b7082614b2a565b9050919050565b6000614b8282614b89565b9050919050565b6000614b9482614b0a565b9050919050565b60005b83811015614bb9578082015181840152602081019050614b9e565b83811115614bc8576000848401525b50505050565b6000614bd982614b2a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c0c57614c0b614c17565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f466565732063616e6e6f74206265206d6f7265207468616e2035302500000000600082015250565b7f736e697065726564000000000000000000000000000000000000000000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f53656c6c205461782063616e6e6f74206265206d6f7265207468616e20353025600082015250565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b614f3e81614ada565b8114614f4957600080fd5b50565b614f5581614aec565b8114614f6057600080fd5b50565b614f6c81614afe565b8114614f7757600080fd5b50565b614f8381614b2a565b8114614f8e57600080fd5b5056fea26469706673582212206388cae897cff4241c47bcfd8db5a8a298798b91dc3421c067babc3a97dfff0a64736f6c63430008070033

Deployed Bytecode

0x60806040526004361061039b5760003560e01c80637d1db4a5116101dc578063ca33e64c11610102578063ec72d65f116100a0578063f887ea401161006f578063f887ea4014610dad578063fce589d814610dd8578063fe9fbb8014610e03578063fed0d2a114610e40576103a2565b8063ec72d65f14610d09578063f0b37c0414610d32578063f2fde38b14610d5b578063f84ba65d14610d84576103a2565b8063df20fd49116100dc578063df20fd4914610c61578063e3763ded14610c8a578063e96fada214610cb5578063eb969b0514610ce0576103a2565b8063ca33e64c14610bbc578063d51ed1c814610be7578063dd62ed3e14610c24576103a2565b806395d89b411161017a578063a9059cbb11610149578063a9059cbb14610b14578063b37dd69014610b51578063b46300ec14610b7c578063b6a5d7de14610b93576103a2565b806395d89b4114610a6a57806398118cb414610a95578063a820a64f14610ac0578063a8aa1b3114610ae9576103a2565b806386f6c3c1116101b657806386f6c3c1146109d6578063893d20e8146109ff5780638a8c523c14610a2a5780638c658a2914610a41576103a2565b80637d1db4a51461095957806382bf293c1461098457806383f9d9fa146109ad576103a2565b80632b112e49116102c15780636827e7641161025f57806370a082311161022e57806370a082311461088957806377b54bad146108c657806378109e54146109035780637bdb66831461092e576103a2565b80636827e764146107cb5780636b67c4df146107f65780636ddd1713146108215780637007546b1461084c576103a2565b80633b2d081c1161029b5780633b2d081c14610711578063570636dc1461073c578063571ac8b014610765578063658d4b7f146107a2576103a2565b80632b112e491461067e5780632f54bf6e146106a9578063313ce567146106e6576103a2565b80631161ae39116103395780631da1db5e116103085780631da1db5e146105c45780631df4ccfc146105ed578063201e79911461061857806323b872dd14610641576103a2565b80631161ae3914610508578063180b0d7e1461054557806318160ddd1461057057806318abb6351461059b576103a2565b806306fdde031161037557806306fdde031461043857806308fd3d0514610463578063095ea7b31461048e5780630a0a4189146104cb576103a2565b80630445b667146103a757806304e1a23f146103d2578063054557ea1461040f576103a2565b366103a257005b600080fd5b3480156103b357600080fd5b506103bc610e6b565b6040516103c991906148ac565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f49190613ef8565b610e71565b60405161040691906146f4565b60405180910390f35b34801561041b57600080fd5b50610436600480360381019061043191906140e0565b610e91565b005b34801561044457600080fd5b5061044d610f7c565b60405161045a919061472a565b60405180910390f35b34801561046f57600080fd5b50610478610fb9565b60405161048591906146f4565b60405180910390f35b34801561049a57600080fd5b506104b560048036038101906104b091906140a0565b610fcc565b6040516104c291906146f4565b60405180910390f35b3480156104d757600080fd5b506104f260048036038101906104ed91906141da565b6110be565b6040516104ff91906146f4565b60405180910390f35b34801561051457600080fd5b5061052f600480360381019061052a9190614234565b611319565b60405161053c91906146f4565b60405180910390f35b34801561055157600080fd5b5061055a61132e565b60405161056791906148ac565b60405180910390f35b34801561057c57600080fd5b50610585611334565b60405161059291906148ac565b60405180910390f35b3480156105a757600080fd5b506105c260048036038101906105bd9190613f92565b61133e565b005b3480156105d057600080fd5b506105eb60048036038101906105e691906141da565b6114d2565b005b3480156105f957600080fd5b50610602611581565b60405161060f91906148ac565b60405180910390f35b34801561062457600080fd5b5061063f600480360381019061063a9190614234565b611587565b005b34801561064d57600080fd5b506106686004803603810190610663919061400d565b6115e1565b60405161067591906146f4565b60405180910390f35b34801561068a57600080fd5b506106936117e1565b6040516106a091906148ac565b60405180910390f35b3480156106b557600080fd5b506106d060048036038101906106cb9190613ef8565b611863565b6040516106dd91906146f4565b60405180910390f35b3480156106f257600080fd5b506106fb6118bc565b604051610708919061494a565b60405180910390f35b34801561071d57600080fd5b506107266118c5565b60405161073391906148ac565b60405180910390f35b34801561074857600080fd5b50610763600480360381019061075e91906141da565b6118cb565b005b34801561077157600080fd5b5061078c60048036038101906107879190613ef8565b611955565b60405161079991906146f4565b60405180910390f35b3480156107ae57600080fd5b506107c960048036038101906107c49190614060565b611988565b005b3480156107d757600080fd5b506107e0611a2b565b6040516107ed91906148ac565b60405180910390f35b34801561080257600080fd5b5061080b611a31565b60405161081891906148ac565b60405180910390f35b34801561082d57600080fd5b50610836611a37565b60405161084391906146f4565b60405180910390f35b34801561085857600080fd5b50610873600480360381019061086e9190613ef8565b611a4a565b60405161088091906146f4565b60405180910390f35b34801561089557600080fd5b506108b060048036038101906108ab9190613ef8565b611a6a565b6040516108bd91906148ac565b60405180910390f35b3480156108d257600080fd5b506108ed60048036038101906108e891906140a0565b611ab3565b6040516108fa91906146f4565b60405180910390f35b34801561090f57600080fd5b50610918611c27565b60405161092591906148ac565b60405180910390f35b34801561093a57600080fd5b50610943611c2d565b60405161095091906146f4565b60405180910390f35b34801561096557600080fd5b5061096e611c40565b60405161097b91906148ac565b60405180910390f35b34801561099057600080fd5b506109ab60048036038101906109a691906141da565b611c46565b005b3480156109b957600080fd5b506109d460048036038101906109cf91906141da565b611ccf565b005b3480156109e257600080fd5b506109fd60048036038101906109f891906142c7565b611d3f565b005b348015610a0b57600080fd5b50610a14611e5a565b604051610a219190614634565b60405180910390f35b348015610a3657600080fd5b50610a3f611e83565b005b348015610a4d57600080fd5b50610a686004803603810190610a6391906140e0565b611ee8565b005b348015610a7657600080fd5b50610a7f611fd3565b604051610a8c919061472a565b60405180910390f35b348015610aa157600080fd5b50610aaa612010565b604051610ab791906148ac565b60405180910390f35b348015610acc57600080fd5b50610ae76004803603810190610ae29190614140565b612016565b005b348015610af557600080fd5b50610afe61207b565b604051610b0b9190614634565b60405180910390f35b348015610b2057600080fd5b50610b3b6004803603810190610b3691906140a0565b6120a1565b604051610b4891906146f4565b60405180910390f35b348015610b5d57600080fd5b50610b666120b6565b604051610b7391906146f4565b60405180910390f35b348015610b8857600080fd5b50610b916120c9565b005b348015610b9f57600080fd5b50610bba6004803603810190610bb59190613ef8565b612168565b005b348015610bc857600080fd5b50610bd161220a565b604051610bde9190614634565b60405180910390f35b348015610bf357600080fd5b50610c0e6004803603810190610c0991906141da565b612230565b604051610c1b91906148ac565b60405180910390f35b348015610c3057600080fd5b50610c4b6004803603810190610c469190613f52565b6122a2565b604051610c5891906148ac565b60405180910390f35b348015610c6d57600080fd5b50610c886004803603810190610c83919061419a565b612329565b005b348015610c9657600080fd5b50610c9f612396565b604051610cac9190614634565b60405180910390f35b348015610cc157600080fd5b50610cca6123bc565b604051610cd79190614634565b60405180910390f35b348015610cec57600080fd5b50610d076004803603810190610d029190614140565b6123e2565b005b348015610d1557600080fd5b50610d306004803603810190610d2b91906141da565b612447565b005b348015610d3e57600080fd5b50610d596004803603810190610d549190613ef8565b612505565b005b348015610d6757600080fd5b50610d826004803603810190610d7d9190613f25565b6125a8565b005b348015610d9057600080fd5b50610dab6004803603810190610da69190614060565b6126c1565b005b348015610db957600080fd5b50610dc2612764565b604051610dcf919061470f565b60405180910390f35b348015610de457600080fd5b50610ded61278a565b604051610dfa91906148ac565b60405180910390f35b348015610e0f57600080fd5b50610e2a6004803603810190610e259190613ef8565b612790565b604051610e3791906146f4565b60405180910390f35b348015610e4c57600080fd5b50610e556127e6565b604051610e6291906148ac565b60405180910390f35b60225481565b600b6020528060005260406000206000915054906101000a900460ff1681565b610e9a33611863565b610ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed09061486c565b60405180910390fd5b60005b83839050811015610f765781600d6000868685818110610eff57610efe614c75565b5b9050602002016020810190610f149190613ef8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610f6f90614bce565b9050610edc565b50505050565b60606040518060400160405280601281526020017f5468616e6b73676976696e6720466c6f6b690000000000000000000000000000815250905090565b602160149054906101000a900460ff1681565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516110ac91906148ac565b60405180910390a36001905092915050565b60006110c933611863565b611108576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ff9061486c565b60405180910390fd5b6103e882111561114d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111449061484c565b60405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff166370a08231602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016111aa9190614634565b60206040518083038186803b1580156111c257600080fd5b505afa1580156111d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fa9190614207565b9050600061122561271061121786856127ec90919063ffffffff16565b61286790919063ffffffff16565b9050600081111561130d5761127f602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836128b1565b50602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156112ea57600080fd5b505af11580156112fe573d6000803e3d6000fd5b50505050600192505050611314565b6000925050505b919050565b60008261132583612230565b11905092915050565b60165481565b6000600554905090565b61134733612790565b611386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137d9061488c565b60405180910390fd5b84601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b6114db33612790565b61151a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115119061488c565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc606484846115479190614a4c565b6115519190614a1b565b9081150290604051600060405180830381858888f1935050505015801561157c573d6000803e3d6000fd5b505050565b60155481565b61159033612790565b6115cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c69061488c565b60405180910390fd5b81601d8190555080601e819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146117cd5761174c826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a849092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6117d8848484612ae8565b90509392505050565b600061185e611811600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611a6a565b61185061183f600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611a6a565b60055461317490919063ffffffff16565b61317490919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60135481565b6118d433611863565b611913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190a9061486c565b60405180910390fd5b6103e86005546119239190614a1b565b600654101561193157600080fd5b6103e8816005546119429190614a4c565b61194c9190614a1b565b60068190555050565b6000611981827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610fcc565b9050919050565b61199133612790565b6119d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c79061488c565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b60115481565b602160159054906101000a900460ff1681565b600d6020528060005260406000206000915054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000611abe33611863565b611afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af49061486c565b60405180910390fd5b6000821415611b92578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b3f9190614634565b60206040518083038186803b158015611b5757600080fd5b505afa158015611b6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8f9190614207565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401611bcd92919061466a565b602060405180830381600087803b158015611be757600080fd5b505af1158015611bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1f919061416d565b905092915050565b60075481565b600a60009054906101000a900460ff1681565b60065481565b611c4f33611863565b611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c859061486c565b60405180910390fd5b6103e8600554611c9e9190614a1b565b6007541015611cac57600080fd5b606481600554611cbc9190614a4c565b611cc69190614a1b565b60078190555050565b611cd833612790565b611d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0e9061488c565b60405180910390fd5b6103e8600554611d279190614a1b565b6006541015611d3557600080fd5b8060068190555050565b611d4833612790565b611d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7e9061488c565b60405180910390fd5b8560108190555084601381905550836011819055508260128190555081601481905550611df382611de585611dd788611dc98b8d6131be90919063ffffffff16565b6131be90919063ffffffff16565b6131be90919063ffffffff16565b6131be90919063ffffffff16565b601581905550806016819055506002601654611e0f9190614a1b565b60155410611e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e499061476c565b60405180910390fd5b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611e8c33611863565b611ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec29061486c565b60405180910390fd5b6001602160146101000a81548160ff021916908315150217905550565b611ef133612790565b611f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f279061488c565b60405180910390fd5b60005b83839050811015611fcd5781600b6000868685818110611f5657611f55614c75565b5b9050602002016020810190611f6b9190613ef8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080611fc690614bce565b9050611f33565b50505050565b60606040518060400160405280600381526020017f5447460000000000000000000000000000000000000000000000000000000000815250905090565b60105481565b61201f33611863565b61205e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120559061486c565b60405180910390fd5b80600a60006101000a81548160ff02191690831515021790555050565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006120ae338484612ae8565b905092915050565b600c60009054906101000a900460ff1681565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661211f57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612165573d6000803e3d6000fd5b50565b61217133611863565b6121b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a79061486c565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061229b61223d6117e1565b61228d61227e6002612270602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611a6a565b6127ec90919063ffffffff16565b856127ec90919063ffffffff16565b61286790919063ffffffff16565b9050919050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61233233612790565b612371576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123689061488c565b60405180910390fd5b81602160156101000a81548160ff021916908315150217905550806022819055505050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6123eb33611863565b61242a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124219061486c565b60405180910390fd5b80600c60006101000a81548160ff02191690831515021790555050565b61245033612790565b61248f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124869061488c565b60405180910390fd5b60326124bb60646124ad6017546015546127ec90919063ffffffff16565b61286790919063ffffffff16565b106124fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f2906147cc565b60405180910390fd5b8060178190555050565b61250e33611863565b61254d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125449061486c565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6125b133611863565b6125f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e79061486c565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516126b6919061464f565b60405180910390a150565b6126ca33612790565b612709576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127009061488c565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60175481565b6000808314156127ff5760009050612861565b6000828461280d9190614a4c565b905082848261281c9190614a1b565b1461285c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128539061480c565b60405180910390fd5b809150505b92915050565b60006128a983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061321c565b905092915050565b600061293c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a849092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129d182600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131be90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a7191906148ac565b60405180910390a3600190509392505050565b6000838311158290612acc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac3919061472a565b60405180910390fd5b5060008385612adb9190614aa6565b9050809150509392505050565b6000602360009054906101000a900460ff1615612b1157612b0a8484846128b1565b905061316d565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612bb55750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c0a57602160149054906101000a900460ff16612c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c00906147ec565b60405180910390fd5b5b600a60009054906101000a900460ff1615612cad57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612cac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca39061478c565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d3357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612d8d5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612de75750602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612e415750601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612e975750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612efb576000612ea784611a6a565b90506007548382612eb891906149c5565b1115612ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef09061482c565b60405180910390fd5b505b612f05848361327f565b612f0d61331c565b15612f1b57612f1a6133f3565b5b612fa4826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a849092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000612ff285613a29565b1580613004575061300284613a29565b155b613069576130648584602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161487613a80565b61306b565b825b90506130bf81600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131be90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161315f91906148ac565b60405180910390a360019150505b9392505050565b60006131b683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a84565b905092915050565b60008082846131cd91906149c5565b905083811015613212576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613209906147ac565b60405180910390fd5b8091505092915050565b60008083118290613263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325a919061472a565b60405180910390fd5b50600083856132729190614a1b565b9050809150509392505050565b600654811115806132d95750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330f9061474c565b60405180910390fd5b5050565b6000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156133895750602360009054906101000a900460ff16155b80156133a15750602160159054906101000a900460ff165b80156133ee5750602254600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602360006101000a81548160ff021916908315150217905550600061341e601d54601e54611319565b61342a5760105461342d565b60005b9050600061346d600261345f601554613451866022546127ec90919063ffffffff16565b61286790919063ffffffff16565b61286790919063ffffffff16565b905060006134868260225461317490919063ffffffff16565b90506000600267ffffffffffffffff8111156134a5576134a4614ca4565b5b6040519080825280602002602001820160405280156134d35781602001602082028036833780820191505090505b50905030816000815181106134eb576134ea614c75565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061355c5761355b614c75565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016135ff9594939291906148c7565b600060405180830381600087803b15801561361957600080fd5b505af115801561362d573d6000803e3d6000fd5b505050506000613646824761317490919063ffffffff16565b9050600061367261366160028961286790919063ffffffff16565b60155461317490919063ffffffff16565b905060006136ae60026136a0846136928c886127ec90919063ffffffff16565b61286790919063ffffffff16565b61286790919063ffffffff16565b905060006136d9836136cb601154876127ec90919063ffffffff16565b61286790919063ffffffff16565b90506000613704846136f6601354886127ec90919063ffffffff16565b61286790919063ffffffff16565b9050600061372f85613721601254896127ec90919063ffffffff16565b61286790919063ffffffff16565b90506000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846040516137799061461f565b60006040518083038185875af1925050503d80600081146137b6576040519150601f19603f3d011682016040523d82523d6000602084013e6137bb565b606091505b50509050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516138059061461f565b60006040518083038185875af1925050503d8060008114613842576040519150601f19603f3d011682016040523d82523d6000602084013e613847565b606091505b505080915050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516138939061461f565b60006040518083038185875af1925050503d80600081146138d0576040519150601f19603f3d011682016040523d82523d6000602084013e6138d5565b606091505b5050809150506000905060008b1115613a0057601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161397196959493929190614693565b6060604051808303818588803b15801561398a57600080fd5b505af115801561399e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906139c39190614274565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c6040516139f7929190614921565b60405180910390a15b5050505050505050505050506000602360006101000a81548160ff021916908315150217905550565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008083613a8f576064613a93565b6017545b9050600c60009054906101000a900460ff168015613afb5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613b05575083155b15613b105761232890505b6000613b596064601654613b249190614a4c565b613b4b84613b3d6015548b6127ec90919063ffffffff16565b6127ec90919063ffffffff16565b61286790919063ffffffff16565b90506000613b86601554613b78601454856127ec90919063ffffffff16565b61286790919063ffffffff16565b90506000613b9d828461317490919063ffffffff16565b9050613bf181600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131be90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ca88260086000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131be90919063ffffffff16565b60086000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d6a91906148ac565b60405180910390a36000821115613e0357601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613dfa91906148ac565b60405180910390a35b613e16838961317490919063ffffffff16565b945050505050949350505050565b600081359050613e3381614f35565b92915050565b600081359050613e4881614f4c565b92915050565b60008083601f840112613e6457613e63614cd8565b5b8235905067ffffffffffffffff811115613e8157613e80614cd3565b5b602083019150836020820283011115613e9d57613e9c614cdd565b5b9250929050565b600081359050613eb381614f63565b92915050565b600081519050613ec881614f63565b92915050565b600081359050613edd81614f7a565b92915050565b600081519050613ef281614f7a565b92915050565b600060208284031215613f0e57613f0d614ce7565b5b6000613f1c84828501613e24565b91505092915050565b600060208284031215613f3b57613f3a614ce7565b5b6000613f4984828501613e39565b91505092915050565b60008060408385031215613f6957613f68614ce7565b5b6000613f7785828601613e24565b9250506020613f8885828601613e24565b9150509250929050565b600080600080600060a08688031215613fae57613fad614ce7565b5b6000613fbc88828901613e24565b9550506020613fcd88828901613e24565b9450506040613fde88828901613e24565b9350506060613fef88828901613e24565b925050608061400088828901613e24565b9150509295509295909350565b60008060006060848603121561402657614025614ce7565b5b600061403486828701613e24565b935050602061404586828701613e24565b925050604061405686828701613ece565b9150509250925092565b6000806040838503121561407757614076614ce7565b5b600061408585828601613e24565b925050602061409685828601613ea4565b9150509250929050565b600080604083850312156140b7576140b6614ce7565b5b60006140c585828601613e24565b92505060206140d685828601613ece565b9150509250929050565b6000806000604084860312156140f9576140f8614ce7565b5b600084013567ffffffffffffffff81111561411757614116614ce2565b5b61412386828701613e4e565b9350935050602061413686828701613ea4565b9150509250925092565b60006020828403121561415657614155614ce7565b5b600061416484828501613ea4565b91505092915050565b60006020828403121561418357614182614ce7565b5b600061419184828501613eb9565b91505092915050565b600080604083850312156141b1576141b0614ce7565b5b60006141bf85828601613ea4565b92505060206141d085828601613ece565b9150509250929050565b6000602082840312156141f0576141ef614ce7565b5b60006141fe84828501613ece565b91505092915050565b60006020828403121561421d5761421c614ce7565b5b600061422b84828501613ee3565b91505092915050565b6000806040838503121561424b5761424a614ce7565b5b600061425985828601613ece565b925050602061426a85828601613ece565b9150509250929050565b60008060006060848603121561428d5761428c614ce7565b5b600061429b86828701613ee3565b93505060206142ac86828701613ee3565b92505060406142bd86828701613ee3565b9150509250925092565b60008060008060008060c087890312156142e4576142e3614ce7565b5b60006142f289828a01613ece565b965050602061430389828a01613ece565b955050604061431489828a01613ece565b945050606061432589828a01613ece565b935050608061433689828a01613ece565b92505060a061434789828a01613ece565b9150509295509295509295565b6000614360838361437b565b60208301905092915050565b61437581614b41565b82525050565b61438481614ada565b82525050565b61439381614ada565b82525050565b60006143a482614975565b6143ae8185614998565b93506143b983614965565b8060005b838110156143ea5781516143d18882614354565b97506143dc8361498b565b9250506001810190506143bd565b5085935050505092915050565b61440081614afe565b82525050565b61440f81614b53565b82525050565b61441e81614b65565b82525050565b600061442f82614980565b61443981856149b4565b9350614449818560208601614b9b565b61445281614cec565b840191505092915050565b600061446a6011836149b4565b915061447582614cfd565b602082019050919050565b600061448d601c836149b4565b915061449882614d26565b602082019050919050565b60006144b06008836149b4565b91506144bb82614d4f565b602082019050919050565b60006144d3601b836149b4565b91506144de82614d78565b602082019050919050565b60006144f66020836149b4565b915061450182614da1565b602082019050919050565b60006145196014836149b4565b915061452482614dca565b602082019050919050565b600061453c6021836149b4565b915061454782614df3565b604082019050919050565b600061455f603e836149b4565b915061456a82614e42565b604082019050919050565b6000614582602a836149b4565b915061458d82614e91565b604082019050919050565b60006145a56006836149b4565b91506145b082614ee0565b602082019050919050565b60006145c86000836149a9565b91506145d382614f09565b600082019050919050565b60006145eb600b836149b4565b91506145f682614f0c565b602082019050919050565b61460a81614b2a565b82525050565b61461981614b34565b82525050565b600061462a826145bb565b9150819050919050565b6000602082019050614649600083018461438a565b92915050565b6000602082019050614664600083018461436c565b92915050565b600060408201905061467f600083018561438a565b61468c6020830184614601565b9392505050565b600060c0820190506146a8600083018961438a565b6146b56020830188614601565b6146c26040830187614415565b6146cf6060830186614415565b6146dc608083018561438a565b6146e960a0830184614601565b979650505050505050565b600060208201905061470960008301846143f7565b92915050565b60006020820190506147246000830184614406565b92915050565b600060208201905081810360008301526147448184614424565b905092915050565b600060208201905081810360008301526147658161445d565b9050919050565b6000602082019050818103600083015261478581614480565b9050919050565b600060208201905081810360008301526147a5816144a3565b9050919050565b600060208201905081810360008301526147c5816144c6565b9050919050565b600060208201905081810360008301526147e5816144e9565b9050919050565b600060208201905081810360008301526148058161450c565b9050919050565b600060208201905081810360008301526148258161452f565b9050919050565b6000602082019050818103600083015261484581614552565b9050919050565b6000602082019050818103600083015261486581614575565b9050919050565b6000602082019050818103600083015261488581614598565b9050919050565b600060208201905081810360008301526148a5816145de565b9050919050565b60006020820190506148c16000830184614601565b92915050565b600060a0820190506148dc6000830188614601565b6148e96020830187614415565b81810360408301526148fb8186614399565b905061490a606083018561438a565b6149176080830184614601565b9695505050505050565b60006040820190506149366000830185614601565b6149436020830184614601565b9392505050565b600060208201905061495f6000830184614610565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006149d082614b2a565b91506149db83614b2a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a1057614a0f614c17565b5b828201905092915050565b6000614a2682614b2a565b9150614a3183614b2a565b925082614a4157614a40614c46565b5b828204905092915050565b6000614a5782614b2a565b9150614a6283614b2a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a9b57614a9a614c17565b5b828202905092915050565b6000614ab182614b2a565b9150614abc83614b2a565b925082821015614acf57614ace614c17565b5b828203905092915050565b6000614ae582614b0a565b9050919050565b6000614af782614b0a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614b4c82614b77565b9050919050565b6000614b5e82614b77565b9050919050565b6000614b7082614b2a565b9050919050565b6000614b8282614b89565b9050919050565b6000614b9482614b0a565b9050919050565b60005b83811015614bb9578082015181840152602081019050614b9e565b83811115614bc8576000848401525b50505050565b6000614bd982614b2a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c0c57614c0b614c17565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f466565732063616e6e6f74206265206d6f7265207468616e2035302500000000600082015250565b7f736e697065726564000000000000000000000000000000000000000000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f53656c6c205461782063616e6e6f74206265206d6f7265207468616e20353025600082015250565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b614f3e81614ada565b8114614f4957600080fd5b50565b614f5581614aec565b8114614f6057600080fd5b50565b614f6c81614afe565b8114614f7757600080fd5b50565b614f8381614b2a565b8114614f8e57600080fd5b5056fea26469706673582212206388cae897cff4241c47bcfd8db5a8a298798b91dc3421c067babc3a97dfff0a64736f6c63430008070033

Deployed Bytecode Sourcemap

4997:14740:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6811:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5712:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16814:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8322:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6730:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8744:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19173:494;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19013:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6251:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8052:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17874:447;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13512:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6152:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18493:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9262:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18688:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3005:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8146:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6069:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9910:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8968:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17026:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6028:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5987;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6774:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5800:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8492:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13876:271;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5485:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5676:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5414:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9644:258;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10151:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17290:576;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8408:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14423:79;;;;;;;;;;;;;:::i;:::-;;16601:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8232:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5946:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16397:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6698:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9098:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5764:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13728:140;;;;;;;;;;;;;:::i;:::-;;2798:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6342:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18838:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8603:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18329:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6505:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6385:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16498:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14155:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2900:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3231:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17154:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6628:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6111:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3116:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6296:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6811:54;;;;:::o;5712:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;16814:204::-;2649:19;2657:10;2649:7;:19::i;:::-;2641:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16913:9:::1;16908:103;16928:9;;:16;;16924:1;:20;16908:103;;;16993:6;16966:10;:24;16977:9;;16987:1;16977:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16966:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;16946:3;;;;:::i;:::-;;;16908:103;;;;16814:204:::0;;;:::o;8322:80::-;8370:13;8394:5;;;;;;;;;;;;;;;;;8387:12;;8322:80;:::o;6730:31::-;;;;;;;;;;;;;:::o;8744:216::-;8819:4;8871:6;8836:11;:23;8848:10;8836:23;;;;;;;;;;;;;;;:32;8860:7;8836:32;;;;;;;;;;;;;;;:41;;;;8914:7;8893:37;;8902:10;8893:37;;;8923:6;8893:37;;;;;;:::i;:::-;;;;;;;;8948:4;8941:11;;8744:216;;;;:::o;19173:494::-;19248:4;2649:19;2657:10;2649:7;:19::i;:::-;2641:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19293:4:::1;19272:17;:25;;19264:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;19361:17;19381:4;:14;;;19396:4;;;;;;;;;;;19381:20;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19361:40;;19412:15;19430:43;19467:5;19430:32;19444:17;19430:9;:13;;:32;;;;:::i;:::-;:36;;:43;;;;:::i;:::-;19412:61;;19508:1;19498:7;:11;19494:136;;;19525:33;19540:4;;;;;;;;;;;19545;;;;;;;;;;;19550:7;19525:14;:33::i;:::-;;19573:12;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19614:4;19607:11;;;;;;19494:136;19657:5;19650:12;;;;2681:1;19173:494:::0;;;:::o;19013:150::-;19093:4;19149:6;19117:29;19137:8;19117:19;:29::i;:::-;:38;19110:45;;19013:150;;;;:::o;6251:36::-;;;;:::o;8052:88::-;8107:7;8125:12;;8118:19;;8052:88;:::o;17874:447::-;2739:24;2752:10;2739:12;:24::i;:::-;2731:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;18097:22:::1;18073:21;;:46;;;;;;;;;;;;;;;;;;18153:21;18130:20;;:44;;;;;;;;;;;;;;;;;;18202:15;18185:14;;:32;;;;;;;;;;;;;;;;;;18246:16;18228:15;;:34;;;;;;;;;;;;;;;;;;18294:19;18273:18;;:40;;;;;;;;;;;;;;;;;;17874:447:::0;;;;;:::o;13512:208::-;2739:24;2752:10;2739:12;:24::i;:::-;2731:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13596:17:::1;13616:21;13596:41;;13656:10;13648:28;;:64;13708:3;13689:16;13677:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;13648:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13585:135;13512:208:::0;:::o;6152:92::-;;;;:::o;18493:183::-;2739:24;2752:10;2739:12;:24::i;:::-;2731:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;18609:7:::1;18591:15;:25;;;;18656:12;18627:26;:41;;;;18493:183:::0;;:::o;9262:370::-;9362:4;9417:17;9382:11;:19;9394:6;9382:19;;;;;;;;;;;;;;;:31;9402:10;9382:31;;;;;;;;;;;;;;;;:52;9379:186;;9484:69;9520:6;9484:69;;;;;;;;;;;;;;;;;:11;:19;9496:6;9484:19;;;;;;;;;;;;;;;:31;9504:10;9484:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;9450:11;:19;9462:6;9450:19;;;;;;;;;;;;;;;:31;9470:10;9450:31;;;;;;;;;;;;;;;:103;;;;9379:186;9584:40;9598:6;9606:9;9617:6;9584:13;:40::i;:::-;9577:47;;9262:370;;;;;:::o;18688:142::-;18741:7;18768:54;18806:15;18816:4;;;;;;;;;;;18806:9;:15::i;:::-;18768:33;18785:15;18795:4;;;;;;;;;;;18785:9;:15::i;:::-;18768:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;18761:61;;18688:142;:::o;3005:103::-;3060:4;3095:5;;;;;;;;;;;3084:16;;:7;:16;;;3077:23;;3005:103;;;:::o;8146:80::-;8198:5;5346:1;8207:16;;8146:80;:::o;6069:34::-;;;;:::o;9910:227::-;2649:19;2657:10;2649:7;:19::i;:::-;2641:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10028:4:::1;10013:12;;:19;;;;:::i;:::-;9997:12;;:35;;9989:44;;;::::0;::::1;;10125:4;10108:12;10093;;:27;;;;:::i;:::-;10092:37;;;;:::i;:::-;10077:12;:52;;;;9910:227:::0;:::o;8968:122::-;9023:4;9047:35;9055:7;9064:17;9047:7;:35::i;:::-;9040:42;;8968:122;;;:::o;17026:120::-;2739:24;2752:10;2739:12;:24::i;:::-;2731:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;17132:6:::1;17110:11;:19;17122:6;17110:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;17026:120:::0;;:::o;6028:34::-;;;;:::o;5987:::-;;;;:::o;6774:30::-;;;;;;;;;;;;;:::o;5800:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;8492:105::-;8558:7;8576:9;:18;8586:7;8576:18;;;;;;;;;;;;;;;;8569:25;;8492:105;;;:::o;13876:271::-;13965:4;2649:19;2657:10;2649:7;:19::i;:::-;2641:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13992:1:::1;13982:6;:11;13979:95;;;14024:12;14018:29;;;14056:4;14018:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14009:53;;13979:95;14097:12;14091:28;;;14120:10;14132:6;14091:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14084:55;;13876:271:::0;;;;:::o;5485:61::-;;;;:::o;5676:29::-;;;;;;;;;;;;;:::o;5414:58::-;;;;:::o;9644:258::-;2649:19;2657:10;2649:7;:19::i;:::-;2641:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9771:4:::1;9756:12;;:19;;;;:::i;:::-;9737:15;;:38;;9729:47;;;::::0;::::1;;9873:3;9854:14;9839:12;;:29;;;;:::i;:::-;9838:38;;;;:::i;:::-;9820:15;:56;;;;9644:258:::0;:::o;10151:192::-;2739:24;2752:10;2739:12;:24::i;:::-;2731:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;10265:4:::1;10250:12;;:19;;;;:::i;:::-;10234:12;;:35;;10226:44;;;::::0;::::1;;10329:6;10314:12;:21;;;;10151:192:::0;:::o;17290:576::-;2739:24;2752:10;2739:12;:24::i;:::-;2731:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;17480:13:::1;17465:12;:28;;;;17517:11;17504:10;:24;;;;17554:13;17539:12;:28;;;;17587:7;17578:6;:16;;;;17615:8;17605:7;:18;;;;17645:76;17712:8;17645:62;17699:7;17645:49;17680:13;17645:30;17663:11;17645:13;:17;;:30;;;;:::i;:::-;:34;;:49;;;;:::i;:::-;:53;;:62;;;;:::i;:::-;:66;;:76;;;;:::i;:::-;17634:8;:87;;;;17749:15;17732:14;:32;;;;17809:1;17794:14;;:16;;;;:::i;:::-;17783:8;;:27;17775:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17290:576:::0;;;;;;:::o;8408:78::-;8460:7;8478:5;;;;;;;;;;;8471:12;;8408:78;:::o;14423:79::-;2649:19;2657:10;2649:7;:19::i;:::-;2641:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14490:4:::1;14476:11;;:18;;;;;;;;;;;;;;;;;;14423:79::o:0;16601:205::-;2739:24;2752:10;2739:12;:24::i;:::-;2731:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;16701:9:::1;16696:103;16716:9;;:16;;16712:1;:20;16696:103;;;16781:6;16754:10;:24;16765:9;;16775:1;16765:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16754:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;16734:3;;;;:::i;:::-;;;16696:103;;;;16601:205:::0;;;:::o;8232:84::-;8282:13;8306:7;;;;;;;;;;;;;;;;;8299:14;;8232:84;:::o;5946:34::-;;;;:::o;16397:93::-;2649:19;2657:10;2649:7;:19::i;:::-;2641:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16475:7:::1;16462:10;;:20;;;;;;;;;;;;;;;;;;16397:93:::0;:::o;6698:19::-;;;;;;;;;;;;;:::o;9098:156::-;9178:4;9202:44;9216:10;9228:9;9239:6;9202:13;:44::i;:::-;9195:51;;9098:156;;;;:::o;5764:29::-;;;;;;;;;;;;;:::o;13728:140::-;13773:10;:22;13784:10;13773:22;;;;;;;;;;;;;;;;;;;;;;;;;13765:31;;;;;;13815:10;13807:28;;:51;13836:21;13807:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13728:140::o;2798:94::-;2649:19;2657:10;2649:7;:19::i;:::-;2641:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2880:4:::1;2858:14:::0;:19:::1;2873:3;2858:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2798:94:::0;:::o;6342:36::-;;;;;;;;;;;;;:::o;18838:167::-;18906:7;18933:64;18974:22;:20;:22::i;:::-;18933:36;18946:22;18966:1;18946:15;18956:4;;;;;;;;;;;18946:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;18933:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;18926:71;;18838:167;;;:::o;8603:133::-;8687:7;8705:11;:19;8717:6;8705:19;;;;;;;;;;;;;;;:28;8725:7;8705:28;;;;;;;;;;;;;;;;8698:35;;8603:133;;;;:::o;18329:156::-;2739:24;2752:10;2739:12;:24::i;:::-;2731:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;18435:8:::1;18421:11;;:22;;;;;;;;;;;;;;;;;;18470:7;18454:13;:23;;;;18329:156:::0;;:::o;6505:30::-;;;;;;;;;;;;;:::o;6385:35::-;;;;;;;;;;;;;:::o;16498:95::-;2649:19;2657:10;2649:7;:19::i;:::-;2641:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16576:7:::1;16563:10;;:20;;;;;;;;;;;;;;;;;;16498:95:::0;:::o;14155:237::-;2739:24;2752:10;2739:12;:24::i;:::-;2731:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14283:2:::1;14243:37;14276:3;14243:28;14256:14;;14243:8;;:12;;:28;;;;:::i;:::-;:32;;:37;;;;:::i;:::-;:42;14235:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;14365:11;14348:14;:28;;;;14155:237:::0;:::o;2900:97::-;2649:19;2657:10;2649:7;:19::i;:::-;2641:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2984:5:::1;2962:14;:19;2977:3;2962:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2900:97:::0;:::o;3231:173::-;2649:19;2657:10;2649:7;:19::i;:::-;2641:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3315:3:::1;3307:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3351:4;3329:14:::0;:19:::1;3344:3;3329:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3371:25;3392:3;3371:25;;;;;;:::i;:::-;;;;;;;;3231:173:::0;:::o;17154:128::-;2739:24;2752:10;2739:12;:24::i;:::-;2731:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;17268:6:::1;17242:15;:23;17258:6;17242:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17154:128:::0;;:::o;6628:24::-;;;;;;;;;;;;;:::o;6111:34::-;;;;:::o;3116:107::-;3172:4;3196:14;:19;3211:3;3196:19;;;;;;;;;;;;;;;;;;;;;;;;;3189:26;;3116:107;;;:::o;6296:36::-;;;;:::o;880:250::-;938:7;967:1;962;:6;958:47;;;992:1;985:8;;;;958:47;1017:9;1033:1;1029;:5;;;;:::i;:::-;1017:17;;1062:1;1057;1053;:5;;;;:::i;:::-;:10;1045:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1121:1;1114:8;;;880:250;;;;;:::o;1136:132::-;1194:7;1221:39;1225:1;1228;1221:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1214:46;;1136:132;;;;:::o;11762:330::-;11855:4;11892:53;11914:6;11892:53;;;;;;;;;;;;;;;;;:9;:17;11902:6;11892:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;11872:9;:17;11882:6;11872:17;;;;;;;;;;;;;;;:73;;;;11979:32;12004:6;11979:9;:20;11989:9;11979:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11956:9;:20;11966:9;11956:20;;;;;;;;;;;;;;;:55;;;;12044:9;12027:35;;12036:6;12027:35;;;12055:6;12027:35;;;;;;:::i;:::-;;;;;;;;12080:4;12073:11;;11762:330;;;;;:::o;682:192::-;768:7;801:1;796;:6;;804:12;788:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;828:9;844:1;840;:5;;;;:::i;:::-;828:17;;865:1;858:8;;;682:192;;;;;:::o;10351:1399::-;10443:4;10463:6;;;;;;;;;;;10460:63;;;10479:41;10494:6;10502:9;10513:6;10479:14;:41::i;:::-;10472:48;;;;10460:63;10539:14;:22;10554:6;10539:22;;;;;;;;;;;;;;;;;;;;;;;;;10538:23;:53;;;;;10566:14;:25;10581:9;10566:25;;;;;;;;;;;;;;;;;;;;;;;;;10565:26;10538:53;10535:129;;;10615:11;;;;;;;;;;;10607:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;10535:129;10713:10;;;;;;;;;;;10710:84;;;10748:10;:18;10759:6;10748:18;;;;;;;;;;;;;;;;;;;;;;;;;10747:19;10739:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;10710:84;10811:14;:22;10826:6;10811:22;;;;;;;;;;;;;;;;;;;;;;;;;10810:23;:53;;;;;10858:4;10837:26;;:9;:26;;;;10810:53;:84;;;;;10889:4;;;;;;;;;;;10868:26;;:9;:26;;;;10810:84;:105;;;;;10911:4;;;;;;;;;;;10898:17;;:9;:17;;;;10810:105;:137;;;;;10932:15;;;;;;;;;;;10919:28;;:9;:28;;;;10810:137;:168;;;;;10952:15;:26;10968:9;10952:26;;;;;;;;;;;;;;;;;;;;;;;;;10951:27;10810:168;10806:360;;;10994:18;11015:20;11025:9;11015;:20::i;:::-;10994:41;;11083:15;;11072:6;11059:10;:19;;;;:::i;:::-;11058:40;;11050:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;10979:187;10806:360;11219:28;11232:6;11240;11219:12;:28::i;:::-;11264:16;:14;:16::i;:::-;11261:35;;;11283:10;:8;:10::i;:::-;11261:35;11376:53;11398:6;11376:53;;;;;;;;;;;;;;;;;:9;:17;11386:6;11376:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;11356:9;:17;11366:6;11356:17;;;;;;;;;;;;;;;:73;;;;11442:22;11469:21;11483:6;11469:13;:21::i;:::-;11468:22;:51;;;;11495:24;11509:9;11495:13;:24::i;:::-;11494:25;11468:51;11467:118;;11532:53;11540:6;11548;11569:4;;;;;;;;;;;11556:17;;:9;:17;;;11575:9;11532:7;:53::i;:::-;11467:118;;;11523:6;11467:118;11442:143;;11619:40;11644:14;11619:9;:20;11629:9;11619:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;11596:9;:20;11606:9;11596:20;;;;;;;;;;;;;;;:63;;;;11694:9;11677:43;;11686:6;11677:43;;;11705:14;11677:43;;;;;;:::i;:::-;;;;;;;;11738:4;11731:11;;;10351:1399;;;;;;:::o;540:136::-;598:7;625:43;629:1;632;625:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;618:50;;540:136;;;;:::o;353:181::-;411:7;431:9;447:1;443;:5;;;;:::i;:::-;431:17;;472:1;467;:6;;459:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;525:1;518:8;;;353:181;;;;:::o;1274:189::-;1360:7;1392:1;1388;:5;1395:12;1380:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1419:9;1435:1;1431;:5;;;;:::i;:::-;1419:17;;1454:1;1447:8;;;1274:189;;;;;:::o;12100:166::-;12197:12;;12187:6;:22;;:49;;;;12213:15;:23;12229:6;12213:23;;;;;;;;;;;;;;;;;;;;;;;;;12187:49;12179:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12100:166;;:::o;13307:197::-;13356:4;13394;;;;;;;;;;;13380:18;;:10;:18;;;;:38;;;;;13412:6;;;;;;;;;;;13411:7;13380:38;:62;;;;;13431:11;;;;;;;;;;;13380:62;:116;;;;;13483:13;;13455:9;:24;13473:4;13455:24;;;;;;;;;;;;;;;;:41;;13380:116;13373:123;;13307:197;:::o;14516:1873::-;6922:4;6913:6;;:13;;;;;;;;;;;;;;;;;;14565:27:::1;14595:60;14611:15;;14628:26;;14595:15;:60::i;:::-;:79;;14662:12;;14595:79;;;14658:1;14595:79;14565:109;;14685:23;14711:59;14768:1;14711:52;14754:8;;14711:38;14729:19;14711:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;14685:85;;14781:20;14804:34;14822:15;14804:13;;:17;;:34;;;;:::i;:::-;14781:57;;14851:21;14889:1;14875:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14851:40;;14920:4;14902;14907:1;14902:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14946:4;;;;;;;;;;;14936;14941:1;14936:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;14963:21;14987;14963:45;;15021:6;;;;;;;;;;;:57;;;15093:12;15120:1;15136:4;15163;15183:15;15021:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15222:17;15242:40;15268:13;15242:21;:25;;:40;;;;:::i;:::-;15222:60;;15295:19;15317:40;15330:26;15354:1;15330:19;:23;;:26;;;;:::i;:::-;15317:8;;:12;;:40;;;;:::i;:::-;15295:62;;15378:26;15407:58;15463:1;15407:51;15446:11;15407:34;15421:19;15407:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;15378:87;;15476:26;15505:44;15537:11;15505:27;15519:12;;15505:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;15476:73;;15560:24;15587:42;15617:11;15587:25;15601:10;;15587:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;15560:69;;15640:20;15663:38;15689:11;15663:21;15677:6;;15663:9;:13;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;15640:61;;15715:15;15743:20;;;;;;;;;;;15735:34;;15777:18;15735:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15714:86;;;15835:14;;;;;;;;;;;15827:28;;15863:12;15827:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15811:69;;;;;15915:18;;;;;;;;;;;15907:32;;15947:16;15907:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15891:77;;;;;16002:5;15989:18;;16041:1;16023:15;:19;16020:362;;;16058:6;;;;;;;;;;;:22;;;16088:18;16134:4;16158:15;16192:1;16212::::0;16232:21:::1;;;;;;;;;;;16272:15;16058:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16322:48;16334:18;16354:15;16322:48;;;;;;;:::i;:::-;;;;;;;;16020:362;14554:1835;;;;;;;;;;;;6940:5:::0;6931:6;;:14;;;;;;;;;;;;;;;;;;14516:1873::o;12274:114::-;12336:4;12361:11;:19;12373:6;12361:19;;;;;;;;;;;;;;;;;;;;;;;;;12360:20;12353:27;;12274:114;;;:::o;12396:903::-;12494:7;12524:18;12545:6;:29;;12571:3;12545:29;;;12554:14;;12545:29;12524:50;;12588:10;;;;;;;;;;;:35;;;;;12603:10;:20;12614:8;12603:20;;;;;;;;;;;;;;;;;;;;;;;;;12602:21;12588:35;:46;;;;;12628:6;12627:7;12588:46;12585:94;;;12663:4;12650:17;;12585:94;12691:17;12711:62;12769:3;12752:14;;:20;;;;:::i;:::-;12711:36;12736:10;12711:20;12722:8;;12711:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;12691:82;;12784:18;12805:36;12832:8;;12805:22;12819:7;;12805:9;:13;;:22;;;;:::i;:::-;:26;;:36;;;;:::i;:::-;12784:57;;12852:22;12877:25;12891:10;12877:9;:13;;:25;;;;:::i;:::-;12852:50;;12942:44;12971:14;12942:9;:24;12960:4;12942:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;12915:9;:24;12933:4;12915:24;;;;;;;;;;;;;;;:71;;;;13026:42;13057:10;13026:9;:26;13036:15;;;;;;;;;;;13026:26;;;;;;;;;;;;;;;;:30;;:42;;;;:::i;:::-;12997:9;:26;13007:15;;;;;;;;;;;12997:26;;;;;;;;;;;;;;;:71;;;;13109:4;13084:47;;13093:6;13084:47;;;13116:14;13084:47;;;;;;:::i;:::-;;;;;;;;13168:1;13155:10;:14;13152:99;;;13207:15;;;;;;;;;;;13190:45;;13199:6;13190:45;;;13224:10;13190:45;;;;;;:::i;:::-;;;;;;;;13152:99;13270:21;13281:9;13270:6;:10;;:21;;;;:::i;:::-;13263:28;;;;;;12396:903;;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:155::-;206:5;244:6;231:20;222:29;;260:41;295:5;260:41;:::i;:::-;152:155;;;;:::o;330:568::-;403:8;413:6;463:3;456:4;448:6;444:17;440:27;430:122;;471:79;;:::i;:::-;430:122;584:6;571:20;561:30;;614:18;606:6;603:30;600:117;;;636:79;;:::i;:::-;600:117;750:4;742:6;738:17;726:29;;804:3;796:4;788:6;784:17;774:8;770:32;767:41;764:128;;;811:79;;:::i;:::-;764:128;330:568;;;;;:::o;904:133::-;947:5;985:6;972:20;963:29;;1001:30;1025:5;1001:30;:::i;:::-;904:133;;;;:::o;1043:137::-;1097:5;1128:6;1122:13;1113:22;;1144:30;1168:5;1144:30;:::i;:::-;1043:137;;;;:::o;1186:139::-;1232:5;1270:6;1257:20;1248:29;;1286:33;1313:5;1286:33;:::i;:::-;1186:139;;;;:::o;1331:143::-;1388:5;1419:6;1413:13;1404:22;;1435:33;1462:5;1435:33;:::i;:::-;1331:143;;;;:::o;1480:329::-;1539:6;1588:2;1576:9;1567:7;1563:23;1559:32;1556:119;;;1594:79;;:::i;:::-;1556:119;1714:1;1739:53;1784:7;1775:6;1764:9;1760:22;1739:53;:::i;:::-;1729:63;;1685:117;1480:329;;;;:::o;1815:345::-;1882:6;1931:2;1919:9;1910:7;1906:23;1902:32;1899:119;;;1937:79;;:::i;:::-;1899:119;2057:1;2082:61;2135:7;2126:6;2115:9;2111:22;2082:61;:::i;:::-;2072:71;;2028:125;1815:345;;;;:::o;2166:474::-;2234:6;2242;2291:2;2279:9;2270:7;2266:23;2262:32;2259:119;;;2297:79;;:::i;:::-;2259:119;2417:1;2442:53;2487:7;2478:6;2467:9;2463:22;2442:53;:::i;:::-;2432:63;;2388:117;2544:2;2570:53;2615:7;2606:6;2595:9;2591:22;2570:53;:::i;:::-;2560:63;;2515:118;2166:474;;;;;:::o;2646:911::-;2741:6;2749;2757;2765;2773;2822:3;2810:9;2801:7;2797:23;2793:33;2790:120;;;2829:79;;:::i;:::-;2790:120;2949:1;2974:53;3019:7;3010:6;2999:9;2995:22;2974:53;:::i;:::-;2964:63;;2920:117;3076:2;3102:53;3147:7;3138:6;3127:9;3123:22;3102:53;:::i;:::-;3092:63;;3047:118;3204:2;3230:53;3275:7;3266:6;3255:9;3251:22;3230:53;:::i;:::-;3220:63;;3175:118;3332:2;3358:53;3403:7;3394:6;3383:9;3379:22;3358:53;:::i;:::-;3348:63;;3303:118;3460:3;3487:53;3532:7;3523:6;3512:9;3508:22;3487:53;:::i;:::-;3477:63;;3431:119;2646:911;;;;;;;;:::o;3563:619::-;3640:6;3648;3656;3705:2;3693:9;3684:7;3680:23;3676:32;3673:119;;;3711:79;;:::i;:::-;3673:119;3831:1;3856:53;3901:7;3892:6;3881:9;3877:22;3856:53;:::i;:::-;3846:63;;3802:117;3958:2;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3929:118;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;3563:619;;;;;:::o;4188:468::-;4253:6;4261;4310:2;4298:9;4289:7;4285:23;4281:32;4278:119;;;4316:79;;:::i;:::-;4278:119;4436:1;4461:53;4506:7;4497:6;4486:9;4482:22;4461:53;:::i;:::-;4451:63;;4407:117;4563:2;4589:50;4631:7;4622:6;4611:9;4607:22;4589:50;:::i;:::-;4579:60;;4534:115;4188:468;;;;;:::o;4662:474::-;4730:6;4738;4787:2;4775:9;4766:7;4762:23;4758:32;4755:119;;;4793:79;;:::i;:::-;4755:119;4913:1;4938:53;4983:7;4974:6;4963:9;4959:22;4938:53;:::i;:::-;4928:63;;4884:117;5040:2;5066:53;5111:7;5102:6;5091:9;5087:22;5066:53;:::i;:::-;5056:63;;5011:118;4662:474;;;;;:::o;5142:698::-;5234:6;5242;5250;5299:2;5287:9;5278:7;5274:23;5270:32;5267:119;;;5305:79;;:::i;:::-;5267:119;5453:1;5442:9;5438:17;5425:31;5483:18;5475:6;5472:30;5469:117;;;5505:79;;:::i;:::-;5469:117;5618:80;5690:7;5681:6;5670:9;5666:22;5618:80;:::i;:::-;5600:98;;;;5396:312;5747:2;5773:50;5815:7;5806:6;5795:9;5791:22;5773:50;:::i;:::-;5763:60;;5718:115;5142:698;;;;;:::o;5846:323::-;5902:6;5951:2;5939:9;5930:7;5926:23;5922:32;5919:119;;;5957:79;;:::i;:::-;5919:119;6077:1;6102:50;6144:7;6135:6;6124:9;6120:22;6102:50;:::i;:::-;6092:60;;6048:114;5846:323;;;;:::o;6175:345::-;6242:6;6291:2;6279:9;6270:7;6266:23;6262:32;6259:119;;;6297:79;;:::i;:::-;6259:119;6417:1;6442:61;6495:7;6486:6;6475:9;6471:22;6442:61;:::i;:::-;6432:71;;6388:125;6175:345;;;;:::o;6526:468::-;6591:6;6599;6648:2;6636:9;6627:7;6623:23;6619:32;6616:119;;;6654:79;;:::i;:::-;6616:119;6774:1;6799:50;6841:7;6832:6;6821:9;6817:22;6799:50;:::i;:::-;6789:60;;6745:114;6898:2;6924:53;6969:7;6960:6;6949:9;6945:22;6924:53;:::i;:::-;6914:63;;6869:118;6526:468;;;;;:::o;7000:329::-;7059:6;7108:2;7096:9;7087:7;7083:23;7079:32;7076:119;;;7114:79;;:::i;:::-;7076:119;7234:1;7259:53;7304:7;7295:6;7284:9;7280:22;7259:53;:::i;:::-;7249:63;;7205:117;7000:329;;;;:::o;7335:351::-;7405:6;7454:2;7442:9;7433:7;7429:23;7425:32;7422:119;;;7460:79;;:::i;:::-;7422:119;7580:1;7605:64;7661:7;7652:6;7641:9;7637:22;7605:64;:::i;:::-;7595:74;;7551:128;7335:351;;;;:::o;7692:474::-;7760:6;7768;7817:2;7805:9;7796:7;7792:23;7788:32;7785:119;;;7823:79;;:::i;:::-;7785:119;7943:1;7968:53;8013:7;8004:6;7993:9;7989:22;7968:53;:::i;:::-;7958:63;;7914:117;8070:2;8096:53;8141:7;8132:6;8121:9;8117:22;8096:53;:::i;:::-;8086:63;;8041:118;7692:474;;;;;:::o;8172:663::-;8260:6;8268;8276;8325:2;8313:9;8304:7;8300:23;8296:32;8293:119;;;8331:79;;:::i;:::-;8293:119;8451:1;8476:64;8532:7;8523:6;8512:9;8508:22;8476:64;:::i;:::-;8466:74;;8422:128;8589:2;8615:64;8671:7;8662:6;8651:9;8647:22;8615:64;:::i;:::-;8605:74;;8560:129;8728:2;8754:64;8810:7;8801:6;8790:9;8786:22;8754:64;:::i;:::-;8744:74;;8699:129;8172:663;;;;;:::o;8841:1057::-;8945:6;8953;8961;8969;8977;8985;9034:3;9022:9;9013:7;9009:23;9005:33;9002:120;;;9041:79;;:::i;:::-;9002:120;9161:1;9186:53;9231:7;9222:6;9211:9;9207:22;9186:53;:::i;:::-;9176:63;;9132:117;9288:2;9314:53;9359:7;9350:6;9339:9;9335:22;9314:53;:::i;:::-;9304:63;;9259:118;9416:2;9442:53;9487:7;9478:6;9467:9;9463:22;9442:53;:::i;:::-;9432:63;;9387:118;9544:2;9570:53;9615:7;9606:6;9595:9;9591:22;9570:53;:::i;:::-;9560:63;;9515:118;9672:3;9699:53;9744:7;9735:6;9724:9;9720:22;9699:53;:::i;:::-;9689:63;;9643:119;9801:3;9828:53;9873:7;9864:6;9853:9;9849:22;9828:53;:::i;:::-;9818:63;;9772:119;8841:1057;;;;;;;;:::o;9904:179::-;9973:10;9994:46;10036:3;10028:6;9994:46;:::i;:::-;10072:4;10067:3;10063:14;10049:28;;9904:179;;;;:::o;10089:147::-;10184:45;10223:5;10184:45;:::i;:::-;10179:3;10172:58;10089:147;;:::o;10242:108::-;10319:24;10337:5;10319:24;:::i;:::-;10314:3;10307:37;10242:108;;:::o;10356:118::-;10443:24;10461:5;10443:24;:::i;:::-;10438:3;10431:37;10356:118;;:::o;10510:732::-;10629:3;10658:54;10706:5;10658:54;:::i;:::-;10728:86;10807:6;10802:3;10728:86;:::i;:::-;10721:93;;10838:56;10888:5;10838:56;:::i;:::-;10917:7;10948:1;10933:284;10958:6;10955:1;10952:13;10933:284;;;11034:6;11028:13;11061:63;11120:3;11105:13;11061:63;:::i;:::-;11054:70;;11147:60;11200:6;11147:60;:::i;:::-;11137:70;;10993:224;10980:1;10977;10973:9;10968:14;;10933:284;;;10937:14;11233:3;11226:10;;10634:608;;;10510:732;;;;:::o;11248:109::-;11329:21;11344:5;11329:21;:::i;:::-;11324:3;11317:34;11248:109;;:::o;11363:167::-;11468:55;11517:5;11468:55;:::i;:::-;11463:3;11456:68;11363:167;;:::o;11536:147::-;11631:45;11670:5;11631:45;:::i;:::-;11626:3;11619:58;11536:147;;:::o;11689:364::-;11777:3;11805:39;11838:5;11805:39;:::i;:::-;11860:71;11924:6;11919:3;11860:71;:::i;:::-;11853:78;;11940:52;11985:6;11980:3;11973:4;11966:5;11962:16;11940:52;:::i;:::-;12017:29;12039:6;12017:29;:::i;:::-;12012:3;12008:39;12001:46;;11781:272;11689:364;;;;:::o;12059:366::-;12201:3;12222:67;12286:2;12281:3;12222:67;:::i;:::-;12215:74;;12298:93;12387:3;12298:93;:::i;:::-;12416:2;12411:3;12407:12;12400:19;;12059:366;;;:::o;12431:::-;12573:3;12594:67;12658:2;12653:3;12594:67;:::i;:::-;12587:74;;12670:93;12759:3;12670:93;:::i;:::-;12788:2;12783:3;12779:12;12772:19;;12431:366;;;:::o;12803:365::-;12945:3;12966:66;13030:1;13025:3;12966:66;:::i;:::-;12959:73;;13041:93;13130:3;13041:93;:::i;:::-;13159:2;13154:3;13150:12;13143:19;;12803:365;;;:::o;13174:366::-;13316:3;13337:67;13401:2;13396:3;13337:67;:::i;:::-;13330:74;;13413:93;13502:3;13413:93;:::i;:::-;13531:2;13526:3;13522:12;13515:19;;13174:366;;;:::o;13546:::-;13688:3;13709:67;13773:2;13768:3;13709:67;:::i;:::-;13702:74;;13785:93;13874:3;13785:93;:::i;:::-;13903:2;13898:3;13894:12;13887:19;;13546:366;;;:::o;13918:::-;14060:3;14081:67;14145:2;14140:3;14081:67;:::i;:::-;14074:74;;14157:93;14246:3;14157:93;:::i;:::-;14275:2;14270:3;14266:12;14259:19;;13918:366;;;:::o;14290:::-;14432:3;14453:67;14517:2;14512:3;14453:67;:::i;:::-;14446:74;;14529:93;14618:3;14529:93;:::i;:::-;14647:2;14642:3;14638:12;14631:19;;14290:366;;;:::o;14662:::-;14804:3;14825:67;14889:2;14884:3;14825:67;:::i;:::-;14818:74;;14901:93;14990:3;14901:93;:::i;:::-;15019:2;15014:3;15010:12;15003:19;;14662:366;;;:::o;15034:::-;15176:3;15197:67;15261:2;15256:3;15197:67;:::i;:::-;15190:74;;15273:93;15362:3;15273:93;:::i;:::-;15391:2;15386:3;15382:12;15375:19;;15034:366;;;:::o;15406:365::-;15548:3;15569:66;15633:1;15628:3;15569:66;:::i;:::-;15562:73;;15644:93;15733:3;15644:93;:::i;:::-;15762:2;15757:3;15753:12;15746:19;;15406:365;;;:::o;15777:398::-;15936:3;15957:83;16038:1;16033:3;15957:83;:::i;:::-;15950:90;;16049:93;16138:3;16049:93;:::i;:::-;16167:1;16162:3;16158:11;16151:18;;15777:398;;;:::o;16181:366::-;16323:3;16344:67;16408:2;16403:3;16344:67;:::i;:::-;16337:74;;16420:93;16509:3;16420:93;:::i;:::-;16538:2;16533:3;16529:12;16522:19;;16181:366;;;:::o;16553:118::-;16640:24;16658:5;16640:24;:::i;:::-;16635:3;16628:37;16553:118;;:::o;16677:112::-;16760:22;16776:5;16760:22;:::i;:::-;16755:3;16748:35;16677:112;;:::o;16795:379::-;16979:3;17001:147;17144:3;17001:147;:::i;:::-;16994:154;;17165:3;17158:10;;16795:379;;;:::o;17180:222::-;17273:4;17311:2;17300:9;17296:18;17288:26;;17324:71;17392:1;17381:9;17377:17;17368:6;17324:71;:::i;:::-;17180:222;;;;:::o;17408:238::-;17509:4;17547:2;17536:9;17532:18;17524:26;;17560:79;17636:1;17625:9;17621:17;17612:6;17560:79;:::i;:::-;17408:238;;;;:::o;17652:332::-;17773:4;17811:2;17800:9;17796:18;17788:26;;17824:71;17892:1;17881:9;17877:17;17868:6;17824:71;:::i;:::-;17905:72;17973:2;17962:9;17958:18;17949:6;17905:72;:::i;:::-;17652:332;;;;;:::o;17990:807::-;18239:4;18277:3;18266:9;18262:19;18254:27;;18291:71;18359:1;18348:9;18344:17;18335:6;18291:71;:::i;:::-;18372:72;18440:2;18429:9;18425:18;18416:6;18372:72;:::i;:::-;18454:80;18530:2;18519:9;18515:18;18506:6;18454:80;:::i;:::-;18544;18620:2;18609:9;18605:18;18596:6;18544:80;:::i;:::-;18634:73;18702:3;18691:9;18687:19;18678:6;18634:73;:::i;:::-;18717;18785:3;18774:9;18770:19;18761:6;18717:73;:::i;:::-;17990:807;;;;;;;;;:::o;18803:210::-;18890:4;18928:2;18917:9;18913:18;18905:26;;18941:65;19003:1;18992:9;18988:17;18979:6;18941:65;:::i;:::-;18803:210;;;;:::o;19019:258::-;19130:4;19168:2;19157:9;19153:18;19145:26;;19181:89;19267:1;19256:9;19252:17;19243:6;19181:89;:::i;:::-;19019:258;;;;:::o;19283:313::-;19396:4;19434:2;19423:9;19419:18;19411:26;;19483:9;19477:4;19473:20;19469:1;19458:9;19454:17;19447:47;19511:78;19584:4;19575:6;19511:78;:::i;:::-;19503:86;;19283:313;;;;:::o;19602:419::-;19768:4;19806:2;19795:9;19791:18;19783:26;;19855:9;19849:4;19845:20;19841:1;19830:9;19826:17;19819:47;19883:131;20009:4;19883:131;:::i;:::-;19875:139;;19602:419;;;:::o;20027:::-;20193:4;20231:2;20220:9;20216:18;20208:26;;20280:9;20274:4;20270:20;20266:1;20255:9;20251:17;20244:47;20308:131;20434:4;20308:131;:::i;:::-;20300:139;;20027:419;;;:::o;20452:::-;20618:4;20656:2;20645:9;20641:18;20633:26;;20705:9;20699:4;20695:20;20691:1;20680:9;20676:17;20669:47;20733:131;20859:4;20733:131;:::i;:::-;20725:139;;20452:419;;;:::o;20877:::-;21043:4;21081:2;21070:9;21066:18;21058:26;;21130:9;21124:4;21120:20;21116:1;21105:9;21101:17;21094:47;21158:131;21284:4;21158:131;:::i;:::-;21150:139;;20877:419;;;:::o;21302:::-;21468:4;21506:2;21495:9;21491:18;21483:26;;21555:9;21549:4;21545:20;21541:1;21530:9;21526:17;21519:47;21583:131;21709:4;21583:131;:::i;:::-;21575:139;;21302:419;;;:::o;21727:::-;21893:4;21931:2;21920:9;21916:18;21908:26;;21980:9;21974:4;21970:20;21966:1;21955:9;21951:17;21944:47;22008:131;22134:4;22008:131;:::i;:::-;22000:139;;21727:419;;;:::o;22152:::-;22318:4;22356:2;22345:9;22341:18;22333:26;;22405:9;22399:4;22395:20;22391:1;22380:9;22376:17;22369:47;22433:131;22559:4;22433:131;:::i;:::-;22425:139;;22152:419;;;:::o;22577:::-;22743:4;22781:2;22770:9;22766:18;22758:26;;22830:9;22824:4;22820:20;22816:1;22805:9;22801:17;22794:47;22858:131;22984:4;22858:131;:::i;:::-;22850:139;;22577:419;;;:::o;23002:::-;23168:4;23206:2;23195:9;23191:18;23183:26;;23255:9;23249:4;23245:20;23241:1;23230:9;23226:17;23219:47;23283:131;23409:4;23283:131;:::i;:::-;23275:139;;23002:419;;;:::o;23427:::-;23593:4;23631:2;23620:9;23616:18;23608:26;;23680:9;23674:4;23670:20;23666:1;23655:9;23651:17;23644:47;23708:131;23834:4;23708:131;:::i;:::-;23700:139;;23427:419;;;:::o;23852:::-;24018:4;24056:2;24045:9;24041:18;24033:26;;24105:9;24099:4;24095:20;24091:1;24080:9;24076:17;24069:47;24133:131;24259:4;24133:131;:::i;:::-;24125:139;;23852:419;;;:::o;24277:222::-;24370:4;24408:2;24397:9;24393:18;24385:26;;24421:71;24489:1;24478:9;24474:17;24465:6;24421:71;:::i;:::-;24277:222;;;;:::o;24505:831::-;24768:4;24806:3;24795:9;24791:19;24783:27;;24820:71;24888:1;24877:9;24873:17;24864:6;24820:71;:::i;:::-;24901:80;24977:2;24966:9;24962:18;24953:6;24901:80;:::i;:::-;25028:9;25022:4;25018:20;25013:2;25002:9;24998:18;24991:48;25056:108;25159:4;25150:6;25056:108;:::i;:::-;25048:116;;25174:72;25242:2;25231:9;25227:18;25218:6;25174:72;:::i;:::-;25256:73;25324:3;25313:9;25309:19;25300:6;25256:73;:::i;:::-;24505:831;;;;;;;;:::o;25342:332::-;25463:4;25501:2;25490:9;25486:18;25478:26;;25514:71;25582:1;25571:9;25567:17;25558:6;25514:71;:::i;:::-;25595:72;25663:2;25652:9;25648:18;25639:6;25595:72;:::i;:::-;25342:332;;;;;:::o;25680:214::-;25769:4;25807:2;25796:9;25792:18;25784:26;;25820:67;25884:1;25873:9;25869:17;25860:6;25820:67;:::i;:::-;25680:214;;;;:::o;25981:132::-;26048:4;26071:3;26063:11;;26101:4;26096:3;26092:14;26084:22;;25981:132;;;:::o;26119:114::-;26186:6;26220:5;26214:12;26204:22;;26119:114;;;:::o;26239:99::-;26291:6;26325:5;26319:12;26309:22;;26239:99;;;:::o;26344:113::-;26414:4;26446;26441:3;26437:14;26429:22;;26344:113;;;:::o;26463:184::-;26562:11;26596:6;26591:3;26584:19;26636:4;26631:3;26627:14;26612:29;;26463:184;;;;:::o;26653:147::-;26754:11;26791:3;26776:18;;26653:147;;;;:::o;26806:169::-;26890:11;26924:6;26919:3;26912:19;26964:4;26959:3;26955:14;26940:29;;26806:169;;;;:::o;26981:305::-;27021:3;27040:20;27058:1;27040:20;:::i;:::-;27035:25;;27074:20;27092:1;27074:20;:::i;:::-;27069:25;;27228:1;27160:66;27156:74;27153:1;27150:81;27147:107;;;27234:18;;:::i;:::-;27147:107;27278:1;27275;27271:9;27264:16;;26981:305;;;;:::o;27292:185::-;27332:1;27349:20;27367:1;27349:20;:::i;:::-;27344:25;;27383:20;27401:1;27383:20;:::i;:::-;27378:25;;27422:1;27412:35;;27427:18;;:::i;:::-;27412:35;27469:1;27466;27462:9;27457:14;;27292:185;;;;:::o;27483:348::-;27523:7;27546:20;27564:1;27546:20;:::i;:::-;27541:25;;27580:20;27598:1;27580:20;:::i;:::-;27575:25;;27768:1;27700:66;27696:74;27693:1;27690:81;27685:1;27678:9;27671:17;27667:105;27664:131;;;27775:18;;:::i;:::-;27664:131;27823:1;27820;27816:9;27805:20;;27483:348;;;;:::o;27837:191::-;27877:4;27897:20;27915:1;27897:20;:::i;:::-;27892:25;;27931:20;27949:1;27931:20;:::i;:::-;27926:25;;27970:1;27967;27964:8;27961:34;;;27975:18;;:::i;:::-;27961:34;28020:1;28017;28013:9;28005:17;;27837:191;;;;:::o;28034:96::-;28071:7;28100:24;28118:5;28100:24;:::i;:::-;28089:35;;28034:96;;;:::o;28136:104::-;28181:7;28210:24;28228:5;28210:24;:::i;:::-;28199:35;;28136:104;;;:::o;28246:90::-;28280:7;28323:5;28316:13;28309:21;28298:32;;28246:90;;;:::o;28342:126::-;28379:7;28419:42;28412:5;28408:54;28397:65;;28342:126;;;:::o;28474:77::-;28511:7;28540:5;28529:16;;28474:77;;;:::o;28557:86::-;28592:7;28632:4;28625:5;28621:16;28610:27;;28557:86;;;:::o;28649:134::-;28707:9;28740:37;28771:5;28740:37;:::i;:::-;28727:50;;28649:134;;;:::o;28789:144::-;28857:9;28890:37;28921:5;28890:37;:::i;:::-;28877:50;;28789:144;;;:::o;28939:121::-;28997:9;29030:24;29048:5;29030:24;:::i;:::-;29017:37;;28939:121;;;:::o;29066:126::-;29116:9;29149:37;29180:5;29149:37;:::i;:::-;29136:50;;29066:126;;;:::o;29198:113::-;29248:9;29281:24;29299:5;29281:24;:::i;:::-;29268:37;;29198:113;;;:::o;29317:307::-;29385:1;29395:113;29409:6;29406:1;29403:13;29395:113;;;29494:1;29489:3;29485:11;29479:18;29475:1;29470:3;29466:11;29459:39;29431:2;29428:1;29424:10;29419:15;;29395:113;;;29526:6;29523:1;29520:13;29517:101;;;29606:1;29597:6;29592:3;29588:16;29581:27;29517:101;29366:258;29317:307;;;:::o;29630:233::-;29669:3;29692:24;29710:5;29692:24;:::i;:::-;29683:33;;29738:66;29731:5;29728:77;29725:103;;;29808:18;;:::i;:::-;29725:103;29855:1;29848:5;29844:13;29837:20;;29630:233;;;:::o;29869:180::-;29917:77;29914:1;29907:88;30014:4;30011:1;30004:15;30038:4;30035:1;30028:15;30055:180;30103:77;30100:1;30093:88;30200:4;30197:1;30190:15;30224:4;30221:1;30214:15;30241:180;30289:77;30286:1;30279:88;30386:4;30383:1;30376:15;30410:4;30407:1;30400:15;30427:180;30475:77;30472:1;30465:88;30572:4;30569:1;30562:15;30596:4;30593:1;30586:15;30613:117;30722:1;30719;30712:12;30736:117;30845:1;30842;30835:12;30859:117;30968:1;30965;30958:12;30982:117;31091:1;31088;31081:12;31105:117;31214:1;31211;31204:12;31228:102;31269:6;31320:2;31316:7;31311:2;31304:5;31300:14;31296:28;31286:38;;31228:102;;;:::o;31336:167::-;31476:19;31472:1;31464:6;31460:14;31453:43;31336:167;:::o;31509:178::-;31649:30;31645:1;31637:6;31633:14;31626:54;31509:178;:::o;31693:158::-;31833:10;31829:1;31821:6;31817:14;31810:34;31693:158;:::o;31857:177::-;31997:29;31993:1;31985:6;31981:14;31974:53;31857:177;:::o;32040:182::-;32180:34;32176:1;32168:6;32164:14;32157:58;32040:182;:::o;32228:170::-;32368:22;32364:1;32356:6;32352:14;32345:46;32228:170;:::o;32404:220::-;32544:34;32540:1;32532:6;32528:14;32521:58;32613:3;32608:2;32600:6;32596:15;32589:28;32404:220;:::o;32630:249::-;32770:34;32766:1;32758:6;32754:14;32747:58;32839:32;32834:2;32826:6;32822:15;32815:57;32630:249;:::o;32885:229::-;33025:34;33021:1;33013:6;33009:14;33002:58;33094:12;33089:2;33081:6;33077:15;33070:37;32885:229;:::o;33120:156::-;33260:8;33256:1;33248:6;33244:14;33237:32;33120:156;:::o;33282:114::-;;:::o;33402:161::-;33542:13;33538:1;33530:6;33526:14;33519:37;33402:161;:::o;33569:122::-;33642:24;33660:5;33642:24;:::i;:::-;33635:5;33632:35;33622:63;;33681:1;33678;33671:12;33622:63;33569:122;:::o;33697:138::-;33778:32;33804:5;33778:32;:::i;:::-;33771:5;33768:43;33758:71;;33825:1;33822;33815:12;33758:71;33697:138;:::o;33841:116::-;33911:21;33926:5;33911:21;:::i;:::-;33904:5;33901:32;33891:60;;33947:1;33944;33937:12;33891:60;33841:116;:::o;33963:122::-;34036:24;34054:5;34036:24;:::i;:::-;34029:5;34026:35;34016:63;;34075:1;34072;34065:12;34016:63;33963:122;:::o

Swarm Source

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