ETH Price: $3,266.33 (-0.53%)
Gas: 1 Gwei

Contract

0xcE5a7DB26F1dBaa299e825694A4620Edd6F14580
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve196462752024-04-13 11:12:47106 days ago1713006767IN
0xcE5a7DB2...dd6F14580
0 ETH0.0005018710.72192152
Approve195499162024-03-30 23:05:59119 days ago1711839959IN
0xcE5a7DB2...dd6F14580
0 ETH0.0010168321.7235192
Approve192290572024-02-14 22:05:11164 days ago1707948311IN
0xcE5a7DB2...dd6F14580
0 ETH0.001358229.00899398
Transfer192290012024-02-14 21:53:59164 days ago1707947639IN
0xcE5a7DB2...dd6F14580
0 ETH0.0020496126.08250868
Transfer192289772024-02-14 21:48:59164 days ago1707947339IN
0xcE5a7DB2...dd6F14580
0 ETH0.0018460923.49264039
Transfer192289702024-02-14 21:47:35164 days ago1707947255IN
0xcE5a7DB2...dd6F14580
0 ETH0.0018627223.70418244
Transfer192289442024-02-14 21:42:23165 days ago1707946943IN
0xcE5a7DB2...dd6F14580
0 ETH0.0012212326.00370426
Clear Stuck Toke...192289332024-02-14 21:40:11165 days ago1707946811IN
0xcE5a7DB2...dd6F14580
0 ETH0.0015681224.43555539
Transfer192289262024-02-14 21:38:47165 days ago1707946727IN
0xcE5a7DB2...dd6F14580
0 ETH0.0018639123.72297697
Clear Stuck Toke...192288772024-02-14 21:28:59165 days ago1707946139IN
0xcE5a7DB2...dd6F14580
0 ETH0.002025831.60290445
Approve192249582024-02-14 8:16:23165 days ago1707898583IN
0xcE5a7DB2...dd6F14580
0 ETH0.0009588420.36974661
Approve190547962024-01-21 10:59:59189 days ago1705834799IN
0xcE5a7DB2...dd6F14580
0 ETH0.0002757211.09665783
Approve189543692024-01-07 9:38:23203 days ago1704620303IN
0xcE5a7DB2...dd6F14580
0 ETH0.0009188236.977979
Approve189543682024-01-07 9:38:11203 days ago1704620291IN
0xcE5a7DB2...dd6F14580
0 ETH0.0009310937.5258982
Approve189328112024-01-04 8:35:47206 days ago1704357347IN
0xcE5a7DB2...dd6F14580
0 ETH0.000932919.81874839
Approve188314812023-12-21 3:10:35220 days ago1703128235IN
0xcE5a7DB2...dd6F14580
0 ETH0.0009175336.92582942
Approve187583312023-12-10 20:56:35231 days ago1702241795IN
0xcE5a7DB2...dd6F14580
0 ETH0.0021531545.94080886
Clear Stuck Toke...186753542023-11-29 6:02:47242 days ago1701237767IN
0xcE5a7DB2...dd6F14580
0 ETH0.0027372633.70934676
Approve186701702023-11-28 12:37:47243 days ago1701175067IN
0xcE5a7DB2...dd6F14580
0 ETH0.001294927.47406931
Approve186412082023-11-24 11:16:23247 days ago1700824583IN
0xcE5a7DB2...dd6F14580
0 ETH0.001244426.40253838
Approve186305912023-11-22 23:35:11248 days ago1700696111IN
0xcE5a7DB2...dd6F14580
0 ETH0.0012188349.17033326
Approve186164812023-11-21 0:10:47250 days ago1700525447IN
0xcE5a7DB2...dd6F14580
0 ETH0.0006347625.60766191
Approve186052342023-11-19 10:22:47252 days ago1700389367IN
0xcE5a7DB2...dd6F14580
0 ETH0.0010982523.30163114
Transfer186052302023-11-19 10:21:59252 days ago1700389319IN
0xcE5a7DB2...dd6F14580
0 ETH0.0011985315.24972443
Approve185975502023-11-18 8:28:59253 days ago1700296139IN
0xcE5a7DB2...dd6F14580
0 ETH0.0005873223.63663488
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
185605422023-11-13 4:16:11258 days ago1699848971
0xcE5a7DB2...dd6F14580
4.25352491 ETH
185603452023-11-13 3:36:35258 days ago1699846595
0xcE5a7DB2...dd6F14580
0.78664985 ETH
185602612023-11-13 3:19:47258 days ago1699845587
0xcE5a7DB2...dd6F14580
0.3653753 ETH
185602512023-11-13 3:17:47258 days ago1699845467
0xcE5a7DB2...dd6F14580
0.34004769 ETH
185602482023-11-13 3:17:11258 days ago1699845431
0xcE5a7DB2...dd6F14580
0.06989055 ETH
185602482023-11-13 3:17:11258 days ago1699845431
0xcE5a7DB2...dd6F14580
0.07227531 ETH
185602482023-11-13 3:17:11258 days ago1699845431
0xcE5a7DB2...dd6F14580
0.07478431 ETH
185602482023-11-13 3:17:11258 days ago1699845431
0xcE5a7DB2...dd6F14580
0.07742633 ETH
185602482023-11-13 3:17:11258 days ago1699845431
0xcE5a7DB2...dd6F14580
0.08021096 ETH
185602482023-11-13 3:17:11258 days ago1699845431
0xcE5a7DB2...dd6F14580
0.08314865 ETH
185602482023-11-13 3:17:11258 days ago1699845431
0xcE5a7DB2...dd6F14580
0.08625081 ETH
185602482023-11-13 3:17:11258 days ago1699845431
0xcE5a7DB2...dd6F14580
0.08952998 ETH
185602482023-11-13 3:17:11258 days ago1699845431
0xcE5a7DB2...dd6F14580
0.09299988 ETH
185602482023-11-13 3:17:11258 days ago1699845431
0xcE5a7DB2...dd6F14580
0.0966756 ETH
185602482023-11-13 3:17:11258 days ago1699845431
0xcE5a7DB2...dd6F14580
0.10057374 ETH
185602482023-11-13 3:17:11258 days ago1699845431
0xcE5a7DB2...dd6F14580
0.10471264 ETH
185602482023-11-13 3:17:11258 days ago1699845431
0xcE5a7DB2...dd6F14580
0.10911253 ETH
185602482023-11-13 3:17:11258 days ago1699845431
0xcE5a7DB2...dd6F14580
0.11379585 ETH
185602482023-11-13 3:17:11258 days ago1699845431
0xcE5a7DB2...dd6F14580
0.11878746 ETH
185602482023-11-13 3:17:11258 days ago1699845431
0xcE5a7DB2...dd6F14580
0.12411505 ETH
185602482023-11-13 3:17:11258 days ago1699845431
0xcE5a7DB2...dd6F14580
0.12980948 ETH
185602482023-11-13 3:17:11258 days ago1699845431
0xcE5a7DB2...dd6F14580
0.13590521 ETH
185602482023-11-13 3:17:11258 days ago1699845431
0xcE5a7DB2...dd6F14580
0.14244087 ETH
185602482023-11-13 3:17:11258 days ago1699845431
0xcE5a7DB2...dd6F14580
0.14945986 ETH
185602482023-11-13 3:17:11258 days ago1699845431
0xcE5a7DB2...dd6F14580
0.15701105 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
huh

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-13
*/

//    ██   ██ ██    ██ ██   ██
//    ██   ██ ██    ██ ██   ██
//    ███████ ██    ██ ███████
//    ██   ██ ██    ██ ██   ██
//    ██   ██  ██████  ██   ██

// SPDX-License-Identifier: MIT
// huh
// https://twitter.com/huhcoineth
// https://www.huhcoin.xyz/
// https://t.me/huhcoineth

//



pragma solidity 0.8.18;

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 Context {

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

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

contract Ownable is Context {
    address public _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }
    mapping (address => bool) internal authorizations;

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

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

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

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

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


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

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

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


    string constant _name = "Huh coin";
    string constant _symbol = "HUH";
    uint8 constant _decimals = 18;


    event AutoLiquify(uint256 amountETH, uint256 amountTokens);
    event EditTax(uint8 Buy, uint8 Sell, uint8 Transfer);
    event user_exemptfromfees(address Wallet, bool Exempt);
    event user_TxExempt(address Wallet, bool Exempt);
    event ClearStuck(uint256 amount);
    event ClearToken(address TokenAddressCleared, uint256 Amount);
    event set_Receivers(address marketingFeeReceiver, address buybackFeeReceiver,address burnFeeReceiver,address devFeeReceiver);
    event set_MaxWallet(uint256 maxWallet);
    event set_MaxTX(uint256 maxTX);
    event set_SwapBack(uint256 Amount, bool Enabled);
  
    uint256 _totalSupply =   420690000 * 10**_decimals;

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

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;  
    mapping (address => bool) isexemptfromfees;
    mapping (address => bool) isexemptfrommaxTX;

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

    uint256 sellpercent = 100;
    uint256 buypercent = 100;
    uint256 transferpercent = 100;

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

    uint256 setRatio = 30;
    uint256 setRatioDenominator = 100;
    

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

   
    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 7 / 1000; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    constructor () {
        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;

        isexemptfromfees[msg.sender] = true;            
        isexemptfrommaxTX[msg.sender] = true;
        isexemptfrommaxTX[pair] = true;
        isexemptfrommaxTX[marketingFeeReceiver] = true;
        isexemptfrommaxTX[address(this)] = 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 maxWalletRule(uint256 maxWallPercent) external onlyOwner {
         require(maxWallPercent >= 1); 
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 1000;
        emit set_MaxWallet(_maxWalletToken);
                
    }

      function removeLimits () external onlyOwner {
            _maxTxAmount = _totalSupply;
            _maxWalletToken = _totalSupply;
    }

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

        checkTxLimit(sender, amount);  

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

        uint256 amountReceived = (isexemptfromfees[sender] || isexemptfromfees[recipient]) ? amount : takeFee(sender, amount, 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 || isexemptfrommaxTX[sender], "TX Limit Exceeded");
    }

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

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 percent = transferpercent;
        if(recipient == pair) {
            percent = sellpercent;
        } else if(sender == pair) {
            percent = buypercent;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(percent).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){
            _totalSupply = _totalSupply.sub(burnTokens);
            emit Transfer(sender, ZERO, burnTokens);  
        
        }

        return amount.sub(feeAmount);
    }

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

  
     function manualSend() external { 
             payable(autoLiquidityReceiver).transfer(address(this).balance);
            
    }

   function clearStuckToken(address tokenAddress, uint256 tokens) external returns (bool success) {
             if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        emit ClearToken(tokenAddress, tokens);
        return ERC20(tokenAddress).transfer(autoLiquidityReceiver, tokens);
    }

    function setStructure(uint256 _percentonbuy, uint256 _percentonsell, uint256 _wallettransfer) external onlyOwner {
        sellpercent = _percentonsell;
        buypercent = _percentonbuy;
        transferpercent = _wallettransfer;    
          
    }
       
    function startTrading() public onlyOwner {
        TradingOpen = true;
        buypercent = 1400;
        sellpercent = 800;
        transferpercent = 1000;
                              
    }

      function reduceFee() public onlyOwner {
       
        buypercent = 100;
        sellpercent = 100;
        transferpercent = 100;
                              
    }

             
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = checkRatio(setRatio, setRatioDenominator) ? 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 set_fees() internal {
      
        emit EditTax( uint8(totalFee.mul(buypercent).div(100)),
            uint8(totalFee.mul(sellpercent).div(100)),
            uint8(totalFee.mul(transferpercent).div(100))
            );
    }
    
    function setParameters(uint256 _liquidityFee, uint256 _buybackFee, uint256 _marketingFee, uint256 _devFee, uint256 _burnFee, uint256 _feeDenominator) external onlyOwner {
        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 can not be more than 50%"); 
        set_fees();
    }

   
    function setWallets(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _devFeeReceiver, address _burnFeeReceiver, address _buybackFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = _devFeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
        buybackFeeReceiver = _buybackFeeReceiver;

        emit set_Receivers(marketingFeeReceiver, buybackFeeReceiver, burnFeeReceiver, devFeeReceiver);
    }

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

    function checkRatio(uint256 ratio, uint256 accuracy) public view returns (bool) {
        return showBacking(accuracy) > ratio;
    }

    function showBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(showSupply());
    }
    
    function showSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }


}

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":"uint256","name":"amount","type":"uint256"}],"name":"ClearStuck","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"ClearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"Buy","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Sell","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Transfer","type":"uint8"}],"name":"EditTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTX","type":"uint256"}],"name":"set_MaxTX","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"set_MaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"buybackFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"burnFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"devFeeReceiver","type":"address"}],"name":"set_Receivers","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"Enabled","type":"bool"}],"name":"set_SwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"user_TxExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"user_exemptfromfees","type":"event"},{"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":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ratio","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"checkRatio","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"maxWalletRule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","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":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentonbuy","type":"uint256"},{"internalType":"uint256","name":"_percentonsell","type":"uint256"},{"internalType":"uint256","name":"_wallettransfer","type":"uint256"}],"name":"setStructure","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":"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":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"showBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a62000014919062000d43565b631913385062000025919062000d94565b6003556200005f60646200004b600160035462000a6460201b62001c761790919060201c565b62000ae760201b62001cf01790919060201c565b60045562000099606462000085600160035462000a6460201b62001c761790919060201c565b62000ae760201b62001cf01790919060201c565b6005556002600a556000600b556000600c556000600d556002600e55600e54600c54600a54600b54600d54620000d0919062000ddf565b620000dc919062000ddf565b620000e8919062000ddf565b620000f4919062000ddf565b600f556064601055606460115560646012556064601355601e6019556064601a556000601d60146101000a81548160ff0219169083151502179055506001601d60156101000a81548160ff0219169083151502179055506103e860076003546200015f919062000d94565b6200016b919062000e49565b601e553480156200017b57600080fd5b5060006200018e62000b3960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000367573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038d919062000eeb565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200043b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000461919062000eeb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620004bf92919062000f2e565b6020604051808303816000875af1158015620004df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000505919062000eeb565b601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600354600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405162000a56919062000f6c565b60405180910390a3620010df565b600080830362000a78576000905062000ae1565b6000828462000a88919062000d94565b905082848262000a99919062000e49565b1462000adc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ad39062001010565b60405180910390fd5b809150505b92915050565b600062000b3183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000b4160201b60201c565b905092915050565b600033905090565b6000808311829062000b8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b829190620010bb565b60405180910390fd5b506000838562000b9c919062000e49565b9050809150509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c375780860481111562000c0f5762000c0e62000ba9565b5b600185161562000c1f5780820291505b808102905062000c2f8562000bd8565b945062000bef565b94509492505050565b60008262000c52576001905062000d25565b8162000c62576000905062000d25565b816001811462000c7b576002811462000c865762000cbc565b600191505062000d25565b60ff84111562000c9b5762000c9a62000ba9565b5b8360020a91508482111562000cb55762000cb462000ba9565b5b5062000d25565b5060208310610133831016604e8410600b841016171562000cf65782820a90508381111562000cf05762000cef62000ba9565b5b62000d25565b62000d05848484600162000be5565b9250905081840481111562000d1f5762000d1e62000ba9565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000d508262000d2c565b915062000d5d8362000d36565b925062000d8c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c40565b905092915050565b600062000da18262000d2c565b915062000dae8362000d2c565b925082820262000dbe8162000d2c565b9150828204841483151762000dd85762000dd762000ba9565b5b5092915050565b600062000dec8262000d2c565b915062000df98362000d2c565b925082820190508082111562000e145762000e1362000ba9565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e568262000d2c565b915062000e638362000d2c565b92508262000e765762000e7562000e1a565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000eb38262000e86565b9050919050565b62000ec58162000ea6565b811462000ed157600080fd5b50565b60008151905062000ee58162000eba565b92915050565b60006020828403121562000f045762000f0362000e81565b5b600062000f148482850162000ed4565b91505092915050565b62000f288162000ea6565b82525050565b600060408201905062000f45600083018562000f1d565b62000f54602083018462000f1d565b9392505050565b62000f668162000d2c565b82525050565b600060208201905062000f83600083018462000f5b565b92915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600062000ff860218362000f89565b9150620010058262000f9a565b604082019050919050565b600060208201905081810360008301526200102b8162000fe9565b9050919050565b600081519050919050565b60005b838110156200105d57808201518184015260208101905062001040565b60008484015250505050565b6000601f19601f8301169050919050565b6000620010878262001032565b62001093818562000f89565b9350620010a58185602086016200103d565b620010b08162001069565b840191505092915050565b60006020820190508181036000830152620010d781846200107a565b905092915050565b61422080620010ef6000396000f3fe6080604052600436106102135760003560e01c806377b54bad11610118578063a9059cbb116100a0578063ded1e4381161006f578063ded1e4381461078c578063df20fd49146107c9578063f2fde38b146107f2578063f42938901461081b578063f887ea40146108325761021a565b8063a9059cbb146106be578063b2bdfa7b146106fb578063c0cbdea414610726578063dd62ed3e1461074f5761021a565b8063893d20e8116100e7578063893d20e8146105fb5780638da5cb5b1461062657806395d89b4114610651578063a70419d21461067c578063a8aa1b31146106935761021a565b806377b54bad1461053f57806378109e541461057c5780637d1db4a5146105a757806382528791146105d25761021a565b806330c9a6a01161019b5780635d83e1d51161016a5780635d83e1d5146104805780636ddd1713146104a957806370a08231146104d4578063715018a614610511578063751039fc146105285761021a565b806330c9a6a0146103b0578063313ce567146103ed5780635526566914610418578063571ac8b0146104435761021a565b806318160ddd116101e257806318160ddd146102dd5780631df4ccfc1461030857806323b872dd14610333578063282c874914610370578063293230b8146103995761021a565b80630445b6671461021f57806306fdde031461024a57806308fd3d0514610275578063095ea7b3146102a05761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b5061023461085d565b6040516102419190613318565b60405180910390f35b34801561025657600080fd5b5061025f610863565b60405161026c91906133c3565b60405180910390f35b34801561028157600080fd5b5061028a6108a0565b6040516102979190613400565b60405180910390f35b3480156102ac57600080fd5b506102c760048036038101906102c291906134aa565b6108b3565b6040516102d49190613400565b60405180910390f35b3480156102e957600080fd5b506102f26109a5565b6040516102ff9190613318565b60405180910390f35b34801561031457600080fd5b5061031d6109af565b60405161032a9190613318565b60405180910390f35b34801561033f57600080fd5b5061035a600480360381019061035591906134ea565b6109b5565b6040516103679190613400565b60405180910390f35b34801561037c57600080fd5b506103976004803603810190610392919061353d565b610bb5565b005b3480156103a557600080fd5b506103ae610d25565b005b3480156103bc57600080fd5b506103d760048036038101906103d291906135ca565b610df2565b6040516103e49190613318565b60405180910390f35b3480156103f957600080fd5b50610402610e64565b60405161040f9190613613565b60405180910390f35b34801561042457600080fd5b5061042d610e6d565b60405161043a9190613318565b60405180910390f35b34801561044f57600080fd5b5061046a6004803603810190610465919061362e565b610eae565b6040516104779190613400565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a291906135ca565b610ee1565b005b3480156104b557600080fd5b506104be610fe1565b6040516104cb9190613400565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f6919061362e565b610ff4565b6040516105089190613318565b60405180910390f35b34801561051d57600080fd5b5061052661103d565b005b34801561053457600080fd5b5061053d611190565b005b34801561054b57600080fd5b50610566600480360381019061056191906134aa565b611239565b6040516105739190613400565b60405180910390f35b34801561058857600080fd5b506105916113a0565b60405161059e9190613318565b60405180910390f35b3480156105b357600080fd5b506105bc6113a6565b6040516105c99190613318565b60405180910390f35b3480156105de57600080fd5b506105f960048036038101906105f4919061365b565b6113ac565b005b34801561060757600080fd5b50610610611652565b60405161061d91906136e5565b60405180910390f35b34801561063257600080fd5b5061063b611661565b60405161064891906136e5565b60405180910390f35b34801561065d57600080fd5b5061066661168a565b60405161067391906133c3565b60405180910390f35b34801561068857600080fd5b506106916116c7565b005b34801561069f57600080fd5b506106a8611776565b6040516106b591906136e5565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e091906134aa565b61179c565b6040516106f29190613400565b60405180910390f35b34801561070757600080fd5b506107106117b1565b60405161071d91906136e5565b60405180910390f35b34801561073257600080fd5b5061074d60048036038101906107489190613700565b6117d5565b005b34801561075b57600080fd5b5061077660048036038101906107719190613753565b611884565b6040516107839190613318565b60405180910390f35b34801561079857600080fd5b506107b360048036038101906107ae9190613793565b61190b565b6040516107c09190613400565b60405180910390f35b3480156107d557600080fd5b506107f060048036038101906107eb91906137ff565b611920565b005b3480156107fe57600080fd5b506108196004803603810190610814919061362e565b611a24565b005b34801561082757600080fd5b50610830611be5565b005b34801561083e57600080fd5b50610847611c50565b604051610854919061389e565b60405180910390f35b601e5481565b60606040518060400160405280600881526020017f48756820636f696e000000000000000000000000000000000000000000000000815250905090565b601d60149054906101000a900460ff1681565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109939190613318565b60405180910390a36001905092915050565b6000600354905090565b600f5481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ba157610b20826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3a9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610bac848484611d9e565b90509392505050565b610bbd6123f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4190613905565b60405180910390fd5b85600a8190555084600d8190555083600b8190555082600c8190555081600e81905550610cb682610ca885610c9a88610c8c8b8d6123fe90919063ffffffff16565b6123fe90919063ffffffff16565b6123fe90919063ffffffff16565b6123fe90919063ffffffff16565b600f81905550806010819055506002601054610cd29190613983565b600f5410610d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0c90613a00565b60405180910390fd5b610d1d61245c565b505050505050565b610d2d6123f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db190613905565b60405180910390fd5b6001601d60146101000a81548160ff0219169083151502179055506105786012819055506103206011819055506103e8601381905550565b6000610e5d610dff610e6d565b610e4f610e406002610e32601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ff4565b611c7690919063ffffffff16565b85611c7690919063ffffffff16565b611cf090919063ffffffff16565b9050919050565b60006012905090565b6000610ea9610e7c6000610ff4565b610e9b610e8a61dead610ff4565b60035461251490919063ffffffff16565b61251490919063ffffffff16565b905090565b6000610eda827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108b3565b9050919050565b610ee96123f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6d90613905565b60405180910390fd5b6001811015610f8457600080fd5b6103e881600354610f959190613a20565b610f9f9190613983565b6005819055507f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be51600554604051610fd69190613318565b60405180910390a150565b601d60159054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110456123f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c990613905565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6111986123f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c90613905565b60405180910390fd5b600354600481905550600354600581905550565b60008082036112bf578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161127b91906136e5565b602060405180830381865afa158015611298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bc9190613a77565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f83836040516112f0929190613aa4565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401611355929190613aa4565b6020604051808303816000875af1158015611374573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113989190613ae2565b905092915050565b60055481565b60045481565b6113b46123f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143890613905565b60405180910390fd5b84601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b15601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516116439493929190613b0f565b60405180910390a15050505050565b600061165c611661565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f4855480000000000000000000000000000000000000000000000000000000000815250905090565b6116cf6123f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175390613905565b60405180910390fd5b606460128190555060646011819055506064601381905550565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006117a9338484611d9e565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117dd6123f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186190613905565b60405180910390fd5b816011819055508260128190555080601381905550505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008261191783610df2565b11905092915050565b6119286123f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ac90613905565b60405180910390fd5b81601d60156101000a81548160ff02191690831515021790555080601e819055507f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60601e54601d60159054906101000a900460ff16604051611a18929190613b54565b60405180910390a15050565b611a2c6123f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab090613905565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1f90613bef565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611c4d573d6000803e3d6000fd5b50565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808303611c885760009050611cea565b60008284611c969190613a20565b9050828482611ca59190613983565b14611ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdc90613c81565b60405180910390fd5b809150505b92915050565b6000611d3283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061255e565b905092915050565b6000838311158290611d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7991906133c3565b60405180910390fd5b5060008385611d919190613ca1565b9050809150509392505050565b6000601f60009054906101000a900460ff1615611dc757611dc08484846125c1565b90506123ef565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e6b5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ec057601d60149054906101000a900460ff16611ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb690613d21565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f4657503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f80575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611fda5750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120345750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561208e5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120e45750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121485760006120f484610ff4565b905060055483826121059190613d41565b1115612146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213d90613de7565b60405180910390fd5b505b6121528483612794565b61215a612831565b1561216857612167612908565b5b6121f1826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3a9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122d75750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6122eb576122e6858486612f2f565b6122ed565b825b905061234181600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123fe90919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123e19190613318565b60405180910390a360019150505b9392505050565b600033905090565b600080828461240d9190613d41565b905083811015612452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244990613e53565b60405180910390fd5b8091505092915050565b7f8cc651ceed4360bdb07d4dfc17daa4a6fa17092a313d2464a582a73e9b9328006124a76064612499601254600f54611c7690919063ffffffff16565b611cf090919063ffffffff16565b6124d160646124c3601154600f54611c7690919063ffffffff16565b611cf090919063ffffffff16565b6124fb60646124ed601354600f54611c7690919063ffffffff16565b611cf090919063ffffffff16565b60405161250a93929190613e73565b60405180910390a1565b600061255683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d3a565b905092915050565b600080831182906125a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259c91906133c3565b60405180910390fd5b50600083856125b49190613983565b9050809150509392505050565b600061264c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3a9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126e182600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123fe90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127819190613318565b60405180910390a3600190509392505050565b600454811115806127ee5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61282d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282490613ef6565b60405180910390fd5b5050565b6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561289e5750601f60009054906101000a900460ff16155b80156128b65750601d60159054906101000a900460ff165b80156129035750601e54600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601f60006101000a81548160ff0219169083151502179055506000612933601954601a5461190b565b61293f57600a54612942565b60005b905060006129826002612974600f5461296686601e54611c7690919063ffffffff16565b611cf090919063ffffffff16565b611cf090919063ffffffff16565b9050600061299b82601e5461251490919063ffffffff16565b90506000600267ffffffffffffffff8111156129ba576129b9613f16565b5b6040519080825280602002602001820160405280156129e85781602001602082028036833780820191505090505b5090503081600081518110612a00576129ff613f45565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612a7157612a70613f45565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612b1495949392919061406d565b600060405180830381600087803b158015612b2e57600080fd5b505af1158015612b42573d6000803e3d6000fd5b505050506000612b5b824761251490919063ffffffff16565b90506000612b87612b76600289611cf090919063ffffffff16565b600f5461251490919063ffffffff16565b90506000612bc36002612bb584612ba78c88611c7690919063ffffffff16565b611cf090919063ffffffff16565b611cf090919063ffffffff16565b90506000612bee83612be0600b5487611c7690919063ffffffff16565b611cf090919063ffffffff16565b90506000612c1984612c0b600d5488611c7690919063ffffffff16565b611cf090919063ffffffff16565b90506000612c4485612c36600c5489611c7690919063ffffffff16565b611cf090919063ffffffff16565b90506000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051612c8e906140f8565b60006040518083038185875af1925050503d8060008114612ccb576040519150601f19603f3d011682016040523d82523d6000602084013e612cd0565b606091505b50509050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612d1a906140f8565b60006040518083038185875af1925050503d8060008114612d57576040519150601f19603f3d011682016040523d82523d6000602084013e612d5c565b606091505b505080915050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612da8906140f8565b60006040518083038185875af1925050503d8060008114612de5576040519150601f19603f3d011682016040523d82523d6000602084013e612dea565b606091505b5050809150506000905060008b1115612f0657601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612e869695949392919061410d565b60606040518083038185885af1158015612ea4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ec9919061416e565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051612efd9291906141c1565b60405180910390a15b5050505050505050505050506000601f60006101000a81548160ff021916908315150217905550565b6000806013549050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f96576011549050612ff2565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612ff15760125490505b5b600061303b60646010546130069190613a20565b61302d8461301f600f548a611c7690919063ffffffff16565b611c7690919063ffffffff16565b611cf090919063ffffffff16565b90506000613068600f5461305a600e5485611c7690919063ffffffff16565b611cf090919063ffffffff16565b9050600061307f828461251490919063ffffffff16565b90506130d381600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123fe90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061318a8260066000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123fe90919063ffffffff16565b60066000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161324c9190613318565b60405180910390a360008211156132df576132728260035461251490919063ffffffff16565b600381905550600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132d69190613318565b60405180910390a35b6132f2838861251490919063ffffffff16565b9450505050509392505050565b6000819050919050565b613312816132ff565b82525050565b600060208201905061332d6000830184613309565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561336d578082015181840152602081019050613352565b60008484015250505050565b6000601f19601f8301169050919050565b600061339582613333565b61339f818561333e565b93506133af81856020860161334f565b6133b881613379565b840191505092915050565b600060208201905081810360008301526133dd818461338a565b905092915050565b60008115159050919050565b6133fa816133e5565b82525050565b600060208201905061341560008301846133f1565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061344b82613420565b9050919050565b61345b81613440565b811461346657600080fd5b50565b60008135905061347881613452565b92915050565b613487816132ff565b811461349257600080fd5b50565b6000813590506134a48161347e565b92915050565b600080604083850312156134c1576134c061341b565b5b60006134cf85828601613469565b92505060206134e085828601613495565b9150509250929050565b6000806000606084860312156135035761350261341b565b5b600061351186828701613469565b935050602061352286828701613469565b925050604061353386828701613495565b9150509250925092565b60008060008060008060c0878903121561355a5761355961341b565b5b600061356889828a01613495565b965050602061357989828a01613495565b955050604061358a89828a01613495565b945050606061359b89828a01613495565b93505060806135ac89828a01613495565b92505060a06135bd89828a01613495565b9150509295509295509295565b6000602082840312156135e0576135df61341b565b5b60006135ee84828501613495565b91505092915050565b600060ff82169050919050565b61360d816135f7565b82525050565b60006020820190506136286000830184613604565b92915050565b6000602082840312156136445761364361341b565b5b600061365284828501613469565b91505092915050565b600080600080600060a086880312156136775761367661341b565b5b600061368588828901613469565b955050602061369688828901613469565b94505060406136a788828901613469565b93505060606136b888828901613469565b92505060806136c988828901613469565b9150509295509295909350565b6136df81613440565b82525050565b60006020820190506136fa60008301846136d6565b92915050565b6000806000606084860312156137195761371861341b565b5b600061372786828701613495565b935050602061373886828701613495565b925050604061374986828701613495565b9150509250925092565b6000806040838503121561376a5761376961341b565b5b600061377885828601613469565b925050602061378985828601613469565b9150509250929050565b600080604083850312156137aa576137a961341b565b5b60006137b885828601613495565b92505060206137c985828601613495565b9150509250929050565b6137dc816133e5565b81146137e757600080fd5b50565b6000813590506137f9816137d3565b92915050565b600080604083850312156138165761381561341b565b5b6000613824858286016137ea565b925050602061383585828601613495565b9150509250929050565b6000819050919050565b600061386461385f61385a84613420565b61383f565b613420565b9050919050565b600061387682613849565b9050919050565b60006138888261386b565b9050919050565b6138988161387d565b82525050565b60006020820190506138b3600083018461388f565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138ef60208361333e565b91506138fa826138b9565b602082019050919050565b6000602082019050818103600083015261391e816138e2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061398e826132ff565b9150613999836132ff565b9250826139a9576139a8613925565b5b828204905092915050565b7f466565732063616e206e6f74206265206d6f7265207468616e20353025000000600082015250565b60006139ea601d8361333e565b91506139f5826139b4565b602082019050919050565b60006020820190508181036000830152613a19816139dd565b9050919050565b6000613a2b826132ff565b9150613a36836132ff565b9250828202613a44816132ff565b91508282048414831517613a5b57613a5a613954565b5b5092915050565b600081519050613a718161347e565b92915050565b600060208284031215613a8d57613a8c61341b565b5b6000613a9b84828501613a62565b91505092915050565b6000604082019050613ab960008301856136d6565b613ac66020830184613309565b9392505050565b600081519050613adc816137d3565b92915050565b600060208284031215613af857613af761341b565b5b6000613b0684828501613acd565b91505092915050565b6000608082019050613b2460008301876136d6565b613b3160208301866136d6565b613b3e60408301856136d6565b613b4b60608301846136d6565b95945050505050565b6000604082019050613b696000830185613309565b613b7660208301846133f1565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613bd960268361333e565b9150613be482613b7d565b604082019050919050565b60006020820190508181036000830152613c0881613bcc565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c6b60218361333e565b9150613c7682613c0f565b604082019050919050565b60006020820190508181036000830152613c9a81613c5e565b9050919050565b6000613cac826132ff565b9150613cb7836132ff565b9250828203905081811115613ccf57613cce613954565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000613d0b60148361333e565b9150613d1682613cd5565b602082019050919050565b60006020820190508181036000830152613d3a81613cfe565b9050919050565b6000613d4c826132ff565b9150613d57836132ff565b9250828201905080821115613d6f57613d6e613954565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b6000613dd1603e8361333e565b9150613ddc82613d75565b604082019050919050565b60006020820190508181036000830152613e0081613dc4565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613e3d601b8361333e565b9150613e4882613e07565b602082019050919050565b60006020820190508181036000830152613e6c81613e30565b9050919050565b6000606082019050613e886000830186613604565b613e956020830185613604565b613ea26040830184613604565b949350505050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000613ee060118361333e565b9150613eeb82613eaa565b602082019050919050565b60006020820190508181036000830152613f0f81613ed3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000613f99613f94613f8f84613f74565b61383f565b6132ff565b9050919050565b613fa981613f7e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613fe481613440565b82525050565b6000613ff68383613fdb565b60208301905092915050565b6000602082019050919050565b600061401a82613faf565b6140248185613fba565b935061402f83613fcb565b8060005b838110156140605781516140478882613fea565b975061405283614002565b925050600181019050614033565b5085935050505092915050565b600060a0820190506140826000830188613309565b61408f6020830187613fa0565b81810360408301526140a1818661400f565b90506140b060608301856136d6565b6140bd6080830184613309565b9695505050505050565b600081905092915050565b50565b60006140e26000836140c7565b91506140ed826140d2565b600082019050919050565b6000614103826140d5565b9150819050919050565b600060c08201905061412260008301896136d6565b61412f6020830188613309565b61413c6040830187613fa0565b6141496060830186613fa0565b61415660808301856136d6565b61416360a0830184613309565b979650505050505050565b6000806000606084860312156141875761418661341b565b5b600061419586828701613a62565b93505060206141a686828701613a62565b92505060406141b786828701613a62565b9150509250925092565b60006040820190506141d66000830185613309565b6141e36020830184613309565b939250505056fea26469706673582212205b5eee72389f5e22f89c6db63be1dafa9eaed7ccf8ff7b4629d95579a5726b6464736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102135760003560e01c806377b54bad11610118578063a9059cbb116100a0578063ded1e4381161006f578063ded1e4381461078c578063df20fd49146107c9578063f2fde38b146107f2578063f42938901461081b578063f887ea40146108325761021a565b8063a9059cbb146106be578063b2bdfa7b146106fb578063c0cbdea414610726578063dd62ed3e1461074f5761021a565b8063893d20e8116100e7578063893d20e8146105fb5780638da5cb5b1461062657806395d89b4114610651578063a70419d21461067c578063a8aa1b31146106935761021a565b806377b54bad1461053f57806378109e541461057c5780637d1db4a5146105a757806382528791146105d25761021a565b806330c9a6a01161019b5780635d83e1d51161016a5780635d83e1d5146104805780636ddd1713146104a957806370a08231146104d4578063715018a614610511578063751039fc146105285761021a565b806330c9a6a0146103b0578063313ce567146103ed5780635526566914610418578063571ac8b0146104435761021a565b806318160ddd116101e257806318160ddd146102dd5780631df4ccfc1461030857806323b872dd14610333578063282c874914610370578063293230b8146103995761021a565b80630445b6671461021f57806306fdde031461024a57806308fd3d0514610275578063095ea7b3146102a05761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b5061023461085d565b6040516102419190613318565b60405180910390f35b34801561025657600080fd5b5061025f610863565b60405161026c91906133c3565b60405180910390f35b34801561028157600080fd5b5061028a6108a0565b6040516102979190613400565b60405180910390f35b3480156102ac57600080fd5b506102c760048036038101906102c291906134aa565b6108b3565b6040516102d49190613400565b60405180910390f35b3480156102e957600080fd5b506102f26109a5565b6040516102ff9190613318565b60405180910390f35b34801561031457600080fd5b5061031d6109af565b60405161032a9190613318565b60405180910390f35b34801561033f57600080fd5b5061035a600480360381019061035591906134ea565b6109b5565b6040516103679190613400565b60405180910390f35b34801561037c57600080fd5b506103976004803603810190610392919061353d565b610bb5565b005b3480156103a557600080fd5b506103ae610d25565b005b3480156103bc57600080fd5b506103d760048036038101906103d291906135ca565b610df2565b6040516103e49190613318565b60405180910390f35b3480156103f957600080fd5b50610402610e64565b60405161040f9190613613565b60405180910390f35b34801561042457600080fd5b5061042d610e6d565b60405161043a9190613318565b60405180910390f35b34801561044f57600080fd5b5061046a6004803603810190610465919061362e565b610eae565b6040516104779190613400565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a291906135ca565b610ee1565b005b3480156104b557600080fd5b506104be610fe1565b6040516104cb9190613400565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f6919061362e565b610ff4565b6040516105089190613318565b60405180910390f35b34801561051d57600080fd5b5061052661103d565b005b34801561053457600080fd5b5061053d611190565b005b34801561054b57600080fd5b50610566600480360381019061056191906134aa565b611239565b6040516105739190613400565b60405180910390f35b34801561058857600080fd5b506105916113a0565b60405161059e9190613318565b60405180910390f35b3480156105b357600080fd5b506105bc6113a6565b6040516105c99190613318565b60405180910390f35b3480156105de57600080fd5b506105f960048036038101906105f4919061365b565b6113ac565b005b34801561060757600080fd5b50610610611652565b60405161061d91906136e5565b60405180910390f35b34801561063257600080fd5b5061063b611661565b60405161064891906136e5565b60405180910390f35b34801561065d57600080fd5b5061066661168a565b60405161067391906133c3565b60405180910390f35b34801561068857600080fd5b506106916116c7565b005b34801561069f57600080fd5b506106a8611776565b6040516106b591906136e5565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e091906134aa565b61179c565b6040516106f29190613400565b60405180910390f35b34801561070757600080fd5b506107106117b1565b60405161071d91906136e5565b60405180910390f35b34801561073257600080fd5b5061074d60048036038101906107489190613700565b6117d5565b005b34801561075b57600080fd5b5061077660048036038101906107719190613753565b611884565b6040516107839190613318565b60405180910390f35b34801561079857600080fd5b506107b360048036038101906107ae9190613793565b61190b565b6040516107c09190613400565b60405180910390f35b3480156107d557600080fd5b506107f060048036038101906107eb91906137ff565b611920565b005b3480156107fe57600080fd5b506108196004803603810190610814919061362e565b611a24565b005b34801561082757600080fd5b50610830611be5565b005b34801561083e57600080fd5b50610847611c50565b604051610854919061389e565b60405180910390f35b601e5481565b60606040518060400160405280600881526020017f48756820636f696e000000000000000000000000000000000000000000000000815250905090565b601d60149054906101000a900460ff1681565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109939190613318565b60405180910390a36001905092915050565b6000600354905090565b600f5481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ba157610b20826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3a9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610bac848484611d9e565b90509392505050565b610bbd6123f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4190613905565b60405180910390fd5b85600a8190555084600d8190555083600b8190555082600c8190555081600e81905550610cb682610ca885610c9a88610c8c8b8d6123fe90919063ffffffff16565b6123fe90919063ffffffff16565b6123fe90919063ffffffff16565b6123fe90919063ffffffff16565b600f81905550806010819055506002601054610cd29190613983565b600f5410610d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0c90613a00565b60405180910390fd5b610d1d61245c565b505050505050565b610d2d6123f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db190613905565b60405180910390fd5b6001601d60146101000a81548160ff0219169083151502179055506105786012819055506103206011819055506103e8601381905550565b6000610e5d610dff610e6d565b610e4f610e406002610e32601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ff4565b611c7690919063ffffffff16565b85611c7690919063ffffffff16565b611cf090919063ffffffff16565b9050919050565b60006012905090565b6000610ea9610e7c6000610ff4565b610e9b610e8a61dead610ff4565b60035461251490919063ffffffff16565b61251490919063ffffffff16565b905090565b6000610eda827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108b3565b9050919050565b610ee96123f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6d90613905565b60405180910390fd5b6001811015610f8457600080fd5b6103e881600354610f959190613a20565b610f9f9190613983565b6005819055507f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be51600554604051610fd69190613318565b60405180910390a150565b601d60159054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110456123f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c990613905565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6111986123f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c90613905565b60405180910390fd5b600354600481905550600354600581905550565b60008082036112bf578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161127b91906136e5565b602060405180830381865afa158015611298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bc9190613a77565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f83836040516112f0929190613aa4565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401611355929190613aa4565b6020604051808303816000875af1158015611374573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113989190613ae2565b905092915050565b60055481565b60045481565b6113b46123f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143890613905565b60405180910390fd5b84601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b15601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516116439493929190613b0f565b60405180910390a15050505050565b600061165c611661565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f4855480000000000000000000000000000000000000000000000000000000000815250905090565b6116cf6123f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175390613905565b60405180910390fd5b606460128190555060646011819055506064601381905550565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006117a9338484611d9e565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117dd6123f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186190613905565b60405180910390fd5b816011819055508260128190555080601381905550505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008261191783610df2565b11905092915050565b6119286123f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ac90613905565b60405180910390fd5b81601d60156101000a81548160ff02191690831515021790555080601e819055507f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60601e54601d60159054906101000a900460ff16604051611a18929190613b54565b60405180910390a15050565b611a2c6123f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab090613905565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1f90613bef565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611c4d573d6000803e3d6000fd5b50565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808303611c885760009050611cea565b60008284611c969190613a20565b9050828482611ca59190613983565b14611ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdc90613c81565b60405180910390fd5b809150505b92915050565b6000611d3283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061255e565b905092915050565b6000838311158290611d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7991906133c3565b60405180910390fd5b5060008385611d919190613ca1565b9050809150509392505050565b6000601f60009054906101000a900460ff1615611dc757611dc08484846125c1565b90506123ef565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e6b5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ec057601d60149054906101000a900460ff16611ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb690613d21565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f4657503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f80575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611fda5750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120345750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561208e5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120e45750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121485760006120f484610ff4565b905060055483826121059190613d41565b1115612146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213d90613de7565b60405180910390fd5b505b6121528483612794565b61215a612831565b1561216857612167612908565b5b6121f1826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3a9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122d75750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6122eb576122e6858486612f2f565b6122ed565b825b905061234181600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123fe90919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123e19190613318565b60405180910390a360019150505b9392505050565b600033905090565b600080828461240d9190613d41565b905083811015612452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244990613e53565b60405180910390fd5b8091505092915050565b7f8cc651ceed4360bdb07d4dfc17daa4a6fa17092a313d2464a582a73e9b9328006124a76064612499601254600f54611c7690919063ffffffff16565b611cf090919063ffffffff16565b6124d160646124c3601154600f54611c7690919063ffffffff16565b611cf090919063ffffffff16565b6124fb60646124ed601354600f54611c7690919063ffffffff16565b611cf090919063ffffffff16565b60405161250a93929190613e73565b60405180910390a1565b600061255683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d3a565b905092915050565b600080831182906125a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259c91906133c3565b60405180910390fd5b50600083856125b49190613983565b9050809150509392505050565b600061264c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3a9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126e182600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123fe90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127819190613318565b60405180910390a3600190509392505050565b600454811115806127ee5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61282d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282490613ef6565b60405180910390fd5b5050565b6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561289e5750601f60009054906101000a900460ff16155b80156128b65750601d60159054906101000a900460ff165b80156129035750601e54600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601f60006101000a81548160ff0219169083151502179055506000612933601954601a5461190b565b61293f57600a54612942565b60005b905060006129826002612974600f5461296686601e54611c7690919063ffffffff16565b611cf090919063ffffffff16565b611cf090919063ffffffff16565b9050600061299b82601e5461251490919063ffffffff16565b90506000600267ffffffffffffffff8111156129ba576129b9613f16565b5b6040519080825280602002602001820160405280156129e85781602001602082028036833780820191505090505b5090503081600081518110612a00576129ff613f45565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612a7157612a70613f45565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612b1495949392919061406d565b600060405180830381600087803b158015612b2e57600080fd5b505af1158015612b42573d6000803e3d6000fd5b505050506000612b5b824761251490919063ffffffff16565b90506000612b87612b76600289611cf090919063ffffffff16565b600f5461251490919063ffffffff16565b90506000612bc36002612bb584612ba78c88611c7690919063ffffffff16565b611cf090919063ffffffff16565b611cf090919063ffffffff16565b90506000612bee83612be0600b5487611c7690919063ffffffff16565b611cf090919063ffffffff16565b90506000612c1984612c0b600d5488611c7690919063ffffffff16565b611cf090919063ffffffff16565b90506000612c4485612c36600c5489611c7690919063ffffffff16565b611cf090919063ffffffff16565b90506000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051612c8e906140f8565b60006040518083038185875af1925050503d8060008114612ccb576040519150601f19603f3d011682016040523d82523d6000602084013e612cd0565b606091505b50509050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612d1a906140f8565b60006040518083038185875af1925050503d8060008114612d57576040519150601f19603f3d011682016040523d82523d6000602084013e612d5c565b606091505b505080915050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612da8906140f8565b60006040518083038185875af1925050503d8060008114612de5576040519150601f19603f3d011682016040523d82523d6000602084013e612dea565b606091505b5050809150506000905060008b1115612f0657601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612e869695949392919061410d565b60606040518083038185885af1158015612ea4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ec9919061416e565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051612efd9291906141c1565b60405180910390a15b5050505050505050505050506000601f60006101000a81548160ff021916908315150217905550565b6000806013549050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f96576011549050612ff2565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612ff15760125490505b5b600061303b60646010546130069190613a20565b61302d8461301f600f548a611c7690919063ffffffff16565b611c7690919063ffffffff16565b611cf090919063ffffffff16565b90506000613068600f5461305a600e5485611c7690919063ffffffff16565b611cf090919063ffffffff16565b9050600061307f828461251490919063ffffffff16565b90506130d381600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123fe90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061318a8260066000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123fe90919063ffffffff16565b60066000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161324c9190613318565b60405180910390a360008211156132df576132728260035461251490919063ffffffff16565b600381905550600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132d69190613318565b60405180910390a35b6132f2838861251490919063ffffffff16565b9450505050509392505050565b6000819050919050565b613312816132ff565b82525050565b600060208201905061332d6000830184613309565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561336d578082015181840152602081019050613352565b60008484015250505050565b6000601f19601f8301169050919050565b600061339582613333565b61339f818561333e565b93506133af81856020860161334f565b6133b881613379565b840191505092915050565b600060208201905081810360008301526133dd818461338a565b905092915050565b60008115159050919050565b6133fa816133e5565b82525050565b600060208201905061341560008301846133f1565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061344b82613420565b9050919050565b61345b81613440565b811461346657600080fd5b50565b60008135905061347881613452565b92915050565b613487816132ff565b811461349257600080fd5b50565b6000813590506134a48161347e565b92915050565b600080604083850312156134c1576134c061341b565b5b60006134cf85828601613469565b92505060206134e085828601613495565b9150509250929050565b6000806000606084860312156135035761350261341b565b5b600061351186828701613469565b935050602061352286828701613469565b925050604061353386828701613495565b9150509250925092565b60008060008060008060c0878903121561355a5761355961341b565b5b600061356889828a01613495565b965050602061357989828a01613495565b955050604061358a89828a01613495565b945050606061359b89828a01613495565b93505060806135ac89828a01613495565b92505060a06135bd89828a01613495565b9150509295509295509295565b6000602082840312156135e0576135df61341b565b5b60006135ee84828501613495565b91505092915050565b600060ff82169050919050565b61360d816135f7565b82525050565b60006020820190506136286000830184613604565b92915050565b6000602082840312156136445761364361341b565b5b600061365284828501613469565b91505092915050565b600080600080600060a086880312156136775761367661341b565b5b600061368588828901613469565b955050602061369688828901613469565b94505060406136a788828901613469565b93505060606136b888828901613469565b92505060806136c988828901613469565b9150509295509295909350565b6136df81613440565b82525050565b60006020820190506136fa60008301846136d6565b92915050565b6000806000606084860312156137195761371861341b565b5b600061372786828701613495565b935050602061373886828701613495565b925050604061374986828701613495565b9150509250925092565b6000806040838503121561376a5761376961341b565b5b600061377885828601613469565b925050602061378985828601613469565b9150509250929050565b600080604083850312156137aa576137a961341b565b5b60006137b885828601613495565b92505060206137c985828601613495565b9150509250929050565b6137dc816133e5565b81146137e757600080fd5b50565b6000813590506137f9816137d3565b92915050565b600080604083850312156138165761381561341b565b5b6000613824858286016137ea565b925050602061383585828601613495565b9150509250929050565b6000819050919050565b600061386461385f61385a84613420565b61383f565b613420565b9050919050565b600061387682613849565b9050919050565b60006138888261386b565b9050919050565b6138988161387d565b82525050565b60006020820190506138b3600083018461388f565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138ef60208361333e565b91506138fa826138b9565b602082019050919050565b6000602082019050818103600083015261391e816138e2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061398e826132ff565b9150613999836132ff565b9250826139a9576139a8613925565b5b828204905092915050565b7f466565732063616e206e6f74206265206d6f7265207468616e20353025000000600082015250565b60006139ea601d8361333e565b91506139f5826139b4565b602082019050919050565b60006020820190508181036000830152613a19816139dd565b9050919050565b6000613a2b826132ff565b9150613a36836132ff565b9250828202613a44816132ff565b91508282048414831517613a5b57613a5a613954565b5b5092915050565b600081519050613a718161347e565b92915050565b600060208284031215613a8d57613a8c61341b565b5b6000613a9b84828501613a62565b91505092915050565b6000604082019050613ab960008301856136d6565b613ac66020830184613309565b9392505050565b600081519050613adc816137d3565b92915050565b600060208284031215613af857613af761341b565b5b6000613b0684828501613acd565b91505092915050565b6000608082019050613b2460008301876136d6565b613b3160208301866136d6565b613b3e60408301856136d6565b613b4b60608301846136d6565b95945050505050565b6000604082019050613b696000830185613309565b613b7660208301846133f1565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613bd960268361333e565b9150613be482613b7d565b604082019050919050565b60006020820190508181036000830152613c0881613bcc565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c6b60218361333e565b9150613c7682613c0f565b604082019050919050565b60006020820190508181036000830152613c9a81613c5e565b9050919050565b6000613cac826132ff565b9150613cb7836132ff565b9250828203905081811115613ccf57613cce613954565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000613d0b60148361333e565b9150613d1682613cd5565b602082019050919050565b60006020820190508181036000830152613d3a81613cfe565b9050919050565b6000613d4c826132ff565b9150613d57836132ff565b9250828201905080821115613d6f57613d6e613954565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b6000613dd1603e8361333e565b9150613ddc82613d75565b604082019050919050565b60006020820190508181036000830152613e0081613dc4565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613e3d601b8361333e565b9150613e4882613e07565b602082019050919050565b60006020820190508181036000830152613e6c81613e30565b9050919050565b6000606082019050613e886000830186613604565b613e956020830185613604565b613ea26040830184613604565b949350505050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000613ee060118361333e565b9150613eeb82613eaa565b602082019050919050565b60006020820190508181036000830152613f0f81613ed3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000613f99613f94613f8f84613f74565b61383f565b6132ff565b9050919050565b613fa981613f7e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613fe481613440565b82525050565b6000613ff68383613fdb565b60208301905092915050565b6000602082019050919050565b600061401a82613faf565b6140248185613fba565b935061402f83613fcb565b8060005b838110156140605781516140478882613fea565b975061405283614002565b925050600181019050614033565b5085935050505092915050565b600060a0820190506140826000830188613309565b61408f6020830187613fa0565b81810360408301526140a1818661400f565b90506140b060608301856136d6565b6140bd6080830184613309565b9695505050505050565b600081905092915050565b50565b60006140e26000836140c7565b91506140ed826140d2565b600082019050919050565b6000614103826140d5565b9150819050919050565b600060c08201905061412260008301896136d6565b61412f6020830188613309565b61413c6040830187613fa0565b6141496060830186613fa0565b61415660808301856136d6565b61416360a0830184613309565b979650505050505050565b6000806000606084860312156141875761418661341b565b5b600061419586828701613a62565b93505060206141a686828701613a62565b92505060406141b786828701613a62565b9150509250925092565b60006040820190506141d66000830185613309565b6141e36020830184613309565b939250505056fea26469706673582212205b5eee72389f5e22f89c6db63be1dafa9eaed7ccf8ff7b4629d95579a5726b6464736f6c63430008120033

Deployed Bytecode Sourcemap

5381:13632:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7695:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9084:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7612:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9506:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8814:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6982:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10024:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17192:591;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14663:199;;;;;;;;;;;;;:::i;:::-;;18713:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8908:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18874:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9730:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10406:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7658:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9254:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2295:148;;;;;;;;;;;;;:::i;:::-;;10663:139;;;;;;;;;;;;;:::i;:::-;;14045:338;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6485:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6420:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17796:547;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9170:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2081:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8994:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14872:174;;;;;;;;;;;;;:::i;:::-;;7580:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9860:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1701:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14391:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9365:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18570:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18351:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2451:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13906:132;;;;;;;;;;;;;:::i;:::-;;7510:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7695:54;;;;:::o;9084:80::-;9132:13;9156:5;;;;;;;;;;;;;;;;;9149:12;;9084:80;:::o;7612:31::-;;;;;;;;;;;;;:::o;9506:216::-;9581:4;9633:6;9598:11;:23;9610:10;9598:23;;;;;;;;;;;;;;;:32;9622:7;9598:32;;;;;;;;;;;;;;;:41;;;;9676:7;9655:37;;9664:10;9655:37;;;9685:6;9655:37;;;;;;:::i;:::-;;;;;;;;9710:4;9703:11;;9506:216;;;;:::o;8814:88::-;8869:7;8887:12;;8880:19;;8814:88;:::o;6982:93::-;;;;:::o;10024:370::-;10124:4;10179:17;10144:11;:19;10156:6;10144:19;;;;;;;;;;;;;;;:31;10164:10;10144:31;;;;;;;;;;;;;;;;:52;10141:186;;10246:69;10282:6;10246:69;;;;;;;;;;;;;;;;;:11;:19;10258:6;10246:19;;;;;;;;;;;;;;;:31;10266:10;10246:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;10212:11;:19;10224:6;10212:19;;;;;;;;;;;;;;;:31;10232:10;10212:31;;;;;;;;;;;;;;;:103;;;;10141:186;10346:40;10360:6;10368:9;10379:6;10346:13;:40::i;:::-;10339:47;;10024:370;;;;;:::o;17192:591::-;2218:12;:10;:12::i;:::-;2208:22;;:6;;;;;;;;;;:22;;;2200:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17387:13:::1;17372:12;:28;;;;17424:11;17411:10;:24;;;;17461:13;17446:12;:28;;;;17494:7;17485:6;:16;;;;17522:8;17512:7;:18;;;;17552:76;17619:8;17552:62;17606:7;17552:49;17587:13;17552:30;17570:11;17552:13;:17;;:30;;;;:::i;:::-;:34;;:49;;;;:::i;:::-;:53;;:62;;;;:::i;:::-;:66;;:76;;;;:::i;:::-;17541:8;:87;;;;17656:15;17639:14;:32;;;;17718:1;17701:14;;:18;;;;:::i;:::-;17690:8;;:29;17682:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17765:10;:8;:10::i;:::-;17192:591:::0;;;;;;:::o;14663:199::-;2218:12;:10;:12::i;:::-;2208:22;;:6;;;;;;;;;;:22;;;2200:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14729:4:::1;14715:11;;:18;;;;;;;;;;;;;;;;;;14757:4;14744:10;:17;;;;14786:3;14772:11;:17;;;;14818:4;14800:15;:22;;;;14663:199::o:0;18713:149::-;18773:7;18800:54;18841:12;:10;:12::i;:::-;18800:36;18813:22;18833:1;18813:15;18823:4;;;;;;;;;;;18813:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;18800:8;:12;;:36;;;;:::i;:::-;:40;;:54;;;;:::i;:::-;18793:61;;18713:149;;;:::o;8908:80::-;8960:5;5729:2;8969:16;;8908:80;:::o;18874:132::-;18917:7;18944:54;18982:15;5570:42;18982:9;:15::i;:::-;18944:33;18961:15;5497:42;18961:9;:15::i;:::-;18944:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;18937:61;;18874:132;:::o;9730:122::-;9785:4;9809:35;9817:7;9826:17;9809:7;:35::i;:::-;9802:42;;9730:122;;;:::o;10406:247::-;2218:12;:10;:12::i;:::-;2208:22;;:6;;;;;;;;;;:22;;;2200:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10510:1:::1;10492:14;:19;;10484:28;;;::::0;::::1;;10577:4;10558:14;10543:12;;:29;;;;:::i;:::-;10542:39;;;;:::i;:::-;10524:15;:57;;;;10597:30;10611:15;;10597:30;;;;;;:::i;:::-;;;;;;;;10406:247:::0;:::o;7658:30::-;;;;;;;;;;;;;:::o;9254:105::-;9320:7;9338:9;:18;9348:7;9338:18;;;;;;;;;;;;;;;;9331:25;;9254:105;;;:::o;2295:148::-;2218:12;:10;:12::i;:::-;2208:22;;:6;;;;;;;;;;:22;;;2200:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2402:1:::1;2365:40;;2386:6;::::0;::::1;;;;;;;;2365:40;;;;;;;;;;;;2433:1;2416:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2295:148::o:0;10663:139::-;2218:12;:10;:12::i;:::-;2208:22;;:6;;;;;;;;;;:22;;;2200:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10737:12:::1;;10722;:27;;;;10782:12;;10764:15;:30;;;;10663:139::o:0;14045:338::-;14126:12;14169:1;14159:6;:11;14156:95;;14201:12;14195:29;;;14233:4;14195:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14186:53;;14156:95;14266:32;14277:12;14291:6;14266:32;;;;;;;:::i;:::-;;;;;;;;14322:12;14316:28;;;14345:21;;;;;;;;;;;14368:6;14316:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14309:66;;14045:338;;;;:::o;6485:61::-;;;;:::o;6420:58::-;;;;:::o;17796:547::-;2218:12;:10;:12::i;:::-;2208:22;;:6;;;;;;;;;;:22;;;2200:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18013:22:::1;17989:21;;:46;;;;;;;;;;;;;;;;;;18069:21;18046:20;;:44;;;;;;;;;;;;;;;;;;18118:15;18101:14;;:32;;;;;;;;;;;;;;;;;;18162:16;18144:15;;:34;;;;;;;;;;;;;;;;;;18210:19;18189:18;;:40;;;;;;;;;;;;;;;;;;18247:88;18261:20;;;;;;;;;;;18283:18;;;;;;;;;;;18303:15;;;;;;;;;;;18320:14;;;;;;;;;;;18247:88;;;;;;;;;:::i;:::-;;;;;;;;17796:547:::0;;;;;:::o;9170:78::-;9222:7;9239;:5;:7::i;:::-;9232:14;;9170:78;:::o;2081:79::-;2119:7;2146:6;;;;;;;;;;;2139:13;;2081:79;:::o;8994:84::-;9044:13;9068:7;;;;;;;;;;;;;;;;;9061:14;;8994:84;:::o;14872:174::-;2218:12;:10;:12::i;:::-;2208:22;;:6;;;;;;;;;;:22;;;2200:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14943:3:::1;14930:10;:16;;;;14971:3;14957:11;:17;;;;15003:3;14985:15;:21;;;;14872:174::o:0;7580:19::-;;;;;;;;;;;;;:::o;9860:156::-;9940:4;9964:44;9978:10;9990:9;10001:6;9964:13;:44::i;:::-;9957:51;;9860:156;;;;:::o;1701:21::-;;;;;;;;;;;;:::o;14391:257::-;2218:12;:10;:12::i;:::-;2208:22;;:6;;;;;;;;;;:22;;;2200:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14529:14:::1;14515:11;:28;;;;14567:13;14554:10;:26;;;;14609:15;14591;:33;;;;14391:257:::0;;;:::o;9365:133::-;9449:7;9467:11;:19;9479:6;9467:19;;;;;;;;;;;;;;;:28;9487:7;9467:28;;;;;;;;;;;;;;;;9460:35;;9365:133;;;;:::o;18570:135::-;18644:4;18692:5;18668:21;18680:8;18668:11;:21::i;:::-;:29;18661:36;;18570:135;;;;:::o;18351:211::-;2218:12;:10;:12::i;:::-;2208:22;;:6;;;;;;;;;;:22;;;2200:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18456:8:::1;18442:11;;:22;;;;;;;;;;;;;;;;;;18491:7;18475:13;:23;;;;18514:40;18527:13;;18542:11;;;;;;;;;;;18514:40;;;;;;;:::i;:::-;;;;;;;;18351:211:::0;;:::o;2451:244::-;2218:12;:10;:12::i;:::-;2208:22;;:6;;;;;;;;;;:22;;;2200:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2560:1:::1;2540:22;;:8;:22;;::::0;2532:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2650:8;2621:38;;2642:6;::::0;::::1;;;;;;;;2621:38;;;;;;;;;;;;2679:8;2670:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2451:244:::0;:::o;13906:132::-;13962:21;;;;;;;;;;;13954:39;;:62;13994:21;13954:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13906:132::o;7510:24::-;;;;;;;;;;;;;:::o;4791:250::-;4849:7;4878:1;4873;:6;4869:47;;4903:1;4896:8;;;;4869:47;4928:9;4944:1;4940;:5;;;;:::i;:::-;4928:17;;4973:1;4968;4964;:5;;;;:::i;:::-;:10;4956:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;5032:1;5025:8;;;4791:250;;;;;:::o;5047:132::-;5105:7;5132:39;5136:1;5139;5132:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5125:46;;5047:132;;;;:::o;4593:192::-;4679:7;4712:1;4707;:6;;4715:12;4699:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4739:9;4755:1;4751;:5;;;;:::i;:::-;4739:17;;4776:1;4769:8;;;4593:192;;;;;:::o;10818:1238::-;10910:4;10930:6;;;;;;;;;;;10927:63;;;10946:41;10961:6;10969:9;10980:6;10946:14;:41::i;:::-;10939:48;;;;10927:63;11006:14;:22;11021:6;11006:22;;;;;;;;;;;;;;;;;;;;;;;;;11005:23;:53;;;;;11033:14;:25;11048:9;11033:25;;;;;;;;;;;;;;;;;;;;;;;;;11032:26;11005:53;11002:139;;;11082:11;;;;;;;;;;;11074:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;11002:139;11183:14;:22;11198:6;11183:22;;;;;;;;;;;;;;;;;;;;;;;;;11182:23;:53;;;;;11230:4;11209:26;;:9;:26;;;;11182:53;:84;;;;;5497:42;11240:26;;:9;:26;;;;11182:84;:105;;;;;11283:4;;;;;;;;;;;11270:17;;:9;:17;;;;11182:105;:137;;;;;11304:15;;;;;;;;;;;11291:28;;:9;:28;;;;11182:137;:174;;;;;11336:20;;;;;;;;;;;11323:33;;:9;:33;;;;11182:174;:207;;;;;11361:17;:28;11379:9;11361:28;;;;;;;;;;;;;;;;;;;;;;;;;11360:29;11182:207;11178:399;;;11405:18;11426:20;11436:9;11426;:20::i;:::-;11405:41;;11494:15;;11483:6;11470:10;:19;;;;:::i;:::-;11469:40;;11461:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;11390:187;11178:399;11589:28;11602:6;11610;11589:12;:28::i;:::-;11635:16;:14;:16::i;:::-;11632:35;;;11654:10;:8;:10::i;:::-;11632:35;11697:53;11719:6;11697:53;;;;;;;;;;;;;;;;;:9;:17;11707:6;11697:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;11677:9;:17;11687:6;11677:17;;;;;;;;;;;;;;;:73;;;;11763:22;11789:16;:24;11806:6;11789:24;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;11817:16;:27;11834:9;11817:27;;;;;;;;;;;;;;;;;;;;;;;;;11789:55;11788:103;;11857:34;11865:6;11873;11881:9;11857:7;:34::i;:::-;11788:103;;;11848:6;11788:103;11763:128;;11925:40;11950:14;11925:9;:20;11935:9;11925:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;11902:9;:20;11912:9;11902:20;;;;;;;;;;;;;;;:63;;;;12000:9;11983:43;;11992:6;11983:43;;;12011:14;11983:43;;;;;;:::i;:::-;;;;;;;;12044:4;12037:11;;;10818:1238;;;;;;:::o;1422:115::-;1475:15;1518:10;1503:26;;1422:115;:::o;4264:181::-;4322:7;4342:9;4358:1;4354;:5;;;;:::i;:::-;4342:17;;4383:1;4378;:6;;4370:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4436:1;4429:8;;;4264:181;;;;:::o;16939:241::-;16992:180;17007:33;17036:3;17007:24;17020:10;;17007:8;;:12;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;17062:34;17092:3;17062:25;17075:11;;17062:8;;:12;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;17118:38;17152:3;17118:29;17131:15;;17118:8;;:12;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;16992:180;;;;;;;;:::i;:::-;;;;;;;;16939:241::o;4451:136::-;4509:7;4536:43;4540:1;4543;4536:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4529:50;;4451:136;;;;:::o;5185:189::-;5271:7;5303:1;5299;:5;5306:12;5291:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5330:9;5346:1;5342;:5;;;;:::i;:::-;5330:17;;5365:1;5358:8;;;5185:189;;;;;:::o;12065:330::-;12158:4;12195:53;12217:6;12195:53;;;;;;;;;;;;;;;;;:9;:17;12205:6;12195:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;12175:9;:17;12185:6;12175:17;;;;;;;;;;;;;;;:73;;;;12282:32;12307:6;12282:9;:20;12292:9;12282:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12259:9;:20;12269:9;12259:20;;;;;;;;;;;;;;;:55;;;;12347:9;12330:35;;12339:6;12330:35;;;12358:6;12330:35;;;;;;:::i;:::-;;;;;;;;12383:4;12376:11;;12065:330;;;;;:::o;12403:168::-;12500:12;;12490:6;:22;;:51;;;;12516:17;:25;12534:6;12516:25;;;;;;;;;;;;;;;;;;;;;;;;;12490:51;12482:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;12403:168;;:::o;13696:197::-;13745:4;13783;;;;;;;;;;;13769:18;;:10;:18;;;;:38;;;;;13801:6;;;;;;;;;;;13800:7;13769:38;:62;;;;;13820:11;;;;;;;;;;;13769:62;:116;;;;;13872:13;;13844:9;:24;13862:4;13844:24;;;;;;;;;;;;;;;;:41;;13769:116;13762:123;;13696:197;:::o;15069:1854::-;7806:4;7797:6;;:13;;;;;;;;;;;;;;;;;;15118:27:::1;15148:41;15159:8;;15169:19;;15148:10;:41::i;:::-;:60;;15196:12;;15148:60;;;15192:1;15148:60;15118:90;;15219:23;15245:59;15302:1;15245:52;15288:8;;15245:38;15263:19;15245:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;15219:85;;15315:20;15338:34;15356:15;15338:13;;:17;;:34;;;;:::i;:::-;15315:57;;15385:21;15423:1;15409:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15385:40;;15454:4;15436;15441:1;15436:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15480:4;;;;;;;;;;;15470;15475:1;15470:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;15497:21;15521;15497:45;;15555:6;;;;;;;;;;;:57;;;15627:12;15654:1;15670:4;15697;15717:15;15555:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15756:17;15776:40;15802:13;15776:21;:25;;:40;;;;:::i;:::-;15756:60;;15829:19;15851:40;15864:26;15888:1;15864:19;:23;;:26;;;;:::i;:::-;15851:8;;:12;;:40;;;;:::i;:::-;15829:62;;15912:26;15941:58;15997:1;15941:51;15980:11;15941:34;15955:19;15941:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;15912:87;;16010:26;16039:44;16071:11;16039:27;16053:12;;16039:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;16010:73;;16094:24;16121:42;16151:11;16121:25;16135:10;;16121:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;16094:69;;16174:20;16197:38;16223:11;16197:21;16211:6;;16197:9;:13;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;16174:61;;16249:15;16277:20;;;;;;;;;;;16269:34;;16311:18;16269:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16248:86;;;16369:14;;;;;;;;;;;16361:28;;16397:12;16361:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16345:69;;;;;16449:18;;;;;;;;;;;16441:32;;16481:16;16441:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16425:77;;;;;16536:5;16523:18;;16575:1;16557:15;:19;16554:362;;;16592:6;;;;;;;;;;;:22;;;16622:18;16668:4;16692:15;16726:1;16746::::0;16766:21:::1;;;;;;;;;;;16806:15;16592:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16856:48;16868:18;16888:15;16856:48;;;;;;;:::i;:::-;;;;;;;;16554:362;15107:1816;;;;;;;;;;;;7824:5:::0;7815:6;;:14;;;;;;;;;;;;;;;;;;15069:1854::o;12706:982::-;12792:7;12822:15;12840;;12822:33;;12882:4;;;;;;;;;;;12869:17;;:9;:17;;;12866:142;;12913:11;;12903:21;;12866:142;;;12955:4;;;;;;;;;;;12945:14;;:6;:14;;;12942:66;;12986:10;;12976:20;;12942:66;12866:142;13020:17;13040:59;13095:3;13078:14;;:20;;;;:::i;:::-;13040:33;13065:7;13040:20;13051:8;;13040:6;:10;;:20;;;;:::i;:::-;:24;;:33;;;;:::i;:::-;:37;;:59;;;;:::i;:::-;13020:79;;13110:18;13131:36;13158:8;;13131:22;13145:7;;13131:9;:13;;:22;;;;:::i;:::-;:26;;:36;;;;:::i;:::-;13110:57;;13178:22;13203:25;13217:10;13203:9;:13;;:25;;;;:::i;:::-;13178:50;;13266:44;13295:14;13266:9;:24;13284:4;13266:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;13239:9;:24;13257:4;13239:24;;;;;;;;;;;;;;;:71;;;;13350:42;13381:10;13350:9;:26;13360:15;;;;;;;;;;;13350:26;;;;;;;;;;;;;;;;:30;;:42;;;;:::i;:::-;13321:9;:26;13331:15;;;;;;;;;;;13321:26;;;;;;;;;;;;;;;:71;;;;13433:4;13408:47;;13417:6;13408:47;;;13440:14;13408:47;;;;;;:::i;:::-;;;;;;;;13502:1;13489:10;:14;13486:154;;;13534:28;13551:10;13534:12;;:16;;:28;;;;:::i;:::-;13519:12;:43;;;;5570:42;13582:34;;13591:6;13582:34;;;13605:10;13582:34;;;;;;:::i;:::-;;;;;;;;13486:154;13659:21;13670:9;13659:6;:10;;:21;;;;:::i;:::-;13652:28;;;;;;12706:982;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:90::-;1818:7;1861:5;1854:13;1847:21;1836:32;;1784:90;;;:::o;1880:109::-;1961:21;1976:5;1961:21;:::i;:::-;1956:3;1949:34;1880:109;;:::o;1995:210::-;2082:4;2120:2;2109:9;2105:18;2097:26;;2133:65;2195:1;2184:9;2180:17;2171:6;2133:65;:::i;:::-;1995:210;;;;:::o;2292:117::-;2401:1;2398;2391:12;2538:126;2575:7;2615:42;2608:5;2604:54;2593:65;;2538:126;;;:::o;2670:96::-;2707:7;2736:24;2754:5;2736:24;:::i;:::-;2725:35;;2670:96;;;:::o;2772:122::-;2845:24;2863:5;2845:24;:::i;:::-;2838:5;2835:35;2825:63;;2884:1;2881;2874:12;2825:63;2772:122;:::o;2900:139::-;2946:5;2984:6;2971:20;2962:29;;3000:33;3027:5;3000:33;:::i;:::-;2900:139;;;;:::o;3045:122::-;3118:24;3136:5;3118:24;:::i;:::-;3111:5;3108:35;3098:63;;3157:1;3154;3147:12;3098:63;3045:122;:::o;3173:139::-;3219:5;3257:6;3244:20;3235:29;;3273:33;3300:5;3273:33;:::i;:::-;3173:139;;;;:::o;3318:474::-;3386:6;3394;3443:2;3431:9;3422:7;3418:23;3414:32;3411:119;;;3449:79;;:::i;:::-;3411:119;3569:1;3594:53;3639:7;3630:6;3619:9;3615:22;3594:53;:::i;:::-;3584:63;;3540:117;3696:2;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3667:118;3318:474;;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:1057::-;4527:6;4535;4543;4551;4559;4567;4616:3;4604:9;4595:7;4591:23;4587:33;4584:120;;;4623:79;;:::i;:::-;4584:120;4743:1;4768:53;4813:7;4804:6;4793:9;4789:22;4768:53;:::i;:::-;4758:63;;4714:117;4870:2;4896:53;4941:7;4932:6;4921:9;4917:22;4896:53;:::i;:::-;4886:63;;4841:118;4998:2;5024:53;5069:7;5060:6;5049:9;5045:22;5024:53;:::i;:::-;5014:63;;4969:118;5126:2;5152:53;5197:7;5188:6;5177:9;5173:22;5152:53;:::i;:::-;5142:63;;5097:118;5254:3;5281:53;5326:7;5317:6;5306:9;5302:22;5281:53;:::i;:::-;5271:63;;5225:119;5383:3;5410:53;5455:7;5446:6;5435:9;5431:22;5410:53;:::i;:::-;5400:63;;5354:119;4423:1057;;;;;;;;:::o;5486:329::-;5545:6;5594:2;5582:9;5573:7;5569:23;5565:32;5562:119;;;5600:79;;:::i;:::-;5562:119;5720:1;5745:53;5790:7;5781:6;5770:9;5766:22;5745:53;:::i;:::-;5735:63;;5691:117;5486:329;;;;:::o;5821:86::-;5856:7;5896:4;5889:5;5885:16;5874:27;;5821:86;;;:::o;5913:112::-;5996:22;6012:5;5996:22;:::i;:::-;5991:3;5984:35;5913:112;;:::o;6031:214::-;6120:4;6158:2;6147:9;6143:18;6135:26;;6171:67;6235:1;6224:9;6220:17;6211:6;6171:67;:::i;:::-;6031:214;;;;:::o;6251:329::-;6310:6;6359:2;6347:9;6338:7;6334:23;6330:32;6327:119;;;6365:79;;:::i;:::-;6327:119;6485:1;6510:53;6555:7;6546:6;6535:9;6531:22;6510:53;:::i;:::-;6500:63;;6456:117;6251:329;;;;:::o;6586:911::-;6681:6;6689;6697;6705;6713;6762:3;6750:9;6741:7;6737:23;6733:33;6730:120;;;6769:79;;:::i;:::-;6730:120;6889:1;6914:53;6959:7;6950:6;6939:9;6935:22;6914:53;:::i;:::-;6904:63;;6860:117;7016:2;7042:53;7087:7;7078:6;7067:9;7063:22;7042:53;:::i;:::-;7032:63;;6987:118;7144:2;7170:53;7215:7;7206:6;7195:9;7191:22;7170:53;:::i;:::-;7160:63;;7115:118;7272:2;7298:53;7343:7;7334:6;7323:9;7319:22;7298:53;:::i;:::-;7288:63;;7243:118;7400:3;7427:53;7472:7;7463:6;7452:9;7448:22;7427:53;:::i;:::-;7417:63;;7371:119;6586:911;;;;;;;;:::o;7503:118::-;7590:24;7608:5;7590:24;:::i;:::-;7585:3;7578:37;7503:118;;:::o;7627:222::-;7720:4;7758:2;7747:9;7743:18;7735:26;;7771:71;7839:1;7828:9;7824:17;7815:6;7771:71;:::i;:::-;7627:222;;;;:::o;7855:619::-;7932:6;7940;7948;7997:2;7985:9;7976:7;7972:23;7968:32;7965:119;;;8003:79;;:::i;:::-;7965:119;8123:1;8148:53;8193:7;8184:6;8173:9;8169:22;8148:53;:::i;:::-;8138:63;;8094:117;8250:2;8276:53;8321:7;8312:6;8301:9;8297:22;8276:53;:::i;:::-;8266:63;;8221:118;8378:2;8404:53;8449:7;8440:6;8429:9;8425:22;8404:53;:::i;:::-;8394:63;;8349:118;7855:619;;;;;:::o;8480:474::-;8548:6;8556;8605:2;8593:9;8584:7;8580:23;8576:32;8573:119;;;8611:79;;:::i;:::-;8573:119;8731:1;8756:53;8801:7;8792:6;8781:9;8777:22;8756:53;:::i;:::-;8746:63;;8702:117;8858:2;8884:53;8929:7;8920:6;8909:9;8905:22;8884:53;:::i;:::-;8874:63;;8829:118;8480:474;;;;;:::o;8960:::-;9028:6;9036;9085:2;9073:9;9064:7;9060:23;9056:32;9053:119;;;9091:79;;:::i;:::-;9053:119;9211:1;9236:53;9281:7;9272:6;9261:9;9257:22;9236:53;:::i;:::-;9226:63;;9182:117;9338:2;9364:53;9409:7;9400:6;9389:9;9385:22;9364:53;:::i;:::-;9354:63;;9309:118;8960:474;;;;;:::o;9440:116::-;9510:21;9525:5;9510:21;:::i;:::-;9503:5;9500:32;9490:60;;9546:1;9543;9536:12;9490:60;9440:116;:::o;9562:133::-;9605:5;9643:6;9630:20;9621:29;;9659:30;9683:5;9659:30;:::i;:::-;9562:133;;;;:::o;9701:468::-;9766:6;9774;9823:2;9811:9;9802:7;9798:23;9794:32;9791:119;;;9829:79;;:::i;:::-;9791:119;9949:1;9974:50;10016:7;10007:6;9996:9;9992:22;9974:50;:::i;:::-;9964:60;;9920:114;10073:2;10099:53;10144:7;10135:6;10124:9;10120:22;10099:53;:::i;:::-;10089:63;;10044:118;9701:468;;;;;:::o;10175:60::-;10203:3;10224:5;10217:12;;10175:60;;;:::o;10241:142::-;10291:9;10324:53;10342:34;10351:24;10369:5;10351:24;:::i;:::-;10342:34;:::i;:::-;10324:53;:::i;:::-;10311:66;;10241:142;;;:::o;10389:126::-;10439:9;10472:37;10503:5;10472:37;:::i;:::-;10459:50;;10389:126;;;:::o;10521:144::-;10589:9;10622:37;10653:5;10622:37;:::i;:::-;10609:50;;10521:144;;;:::o;10671:167::-;10776:55;10825:5;10776:55;:::i;:::-;10771:3;10764:68;10671:167;;:::o;10844:258::-;10955:4;10993:2;10982:9;10978:18;10970:26;;11006:89;11092:1;11081:9;11077:17;11068:6;11006:89;:::i;:::-;10844:258;;;;:::o;11108:182::-;11248:34;11244:1;11236:6;11232:14;11225:58;11108:182;:::o;11296:366::-;11438:3;11459:67;11523:2;11518:3;11459:67;:::i;:::-;11452:74;;11535:93;11624:3;11535:93;:::i;:::-;11653:2;11648:3;11644:12;11637:19;;11296:366;;;:::o;11668:419::-;11834:4;11872:2;11861:9;11857:18;11849:26;;11921:9;11915:4;11911:20;11907:1;11896:9;11892:17;11885:47;11949:131;12075:4;11949:131;:::i;:::-;11941:139;;11668:419;;;:::o;12093:180::-;12141:77;12138:1;12131:88;12238:4;12235:1;12228:15;12262:4;12259:1;12252:15;12279:180;12327:77;12324:1;12317:88;12424:4;12421:1;12414:15;12448:4;12445:1;12438:15;12465:185;12505:1;12522:20;12540:1;12522:20;:::i;:::-;12517:25;;12556:20;12574:1;12556:20;:::i;:::-;12551:25;;12595:1;12585:35;;12600:18;;:::i;:::-;12585:35;12642:1;12639;12635:9;12630:14;;12465:185;;;;:::o;12656:179::-;12796:31;12792:1;12784:6;12780:14;12773:55;12656:179;:::o;12841:366::-;12983:3;13004:67;13068:2;13063:3;13004:67;:::i;:::-;12997:74;;13080:93;13169:3;13080:93;:::i;:::-;13198:2;13193:3;13189:12;13182:19;;12841:366;;;:::o;13213:419::-;13379:4;13417:2;13406:9;13402:18;13394:26;;13466:9;13460:4;13456:20;13452:1;13441:9;13437:17;13430:47;13494:131;13620:4;13494:131;:::i;:::-;13486:139;;13213:419;;;:::o;13638:410::-;13678:7;13701:20;13719:1;13701:20;:::i;:::-;13696:25;;13735:20;13753:1;13735:20;:::i;:::-;13730:25;;13790:1;13787;13783:9;13812:30;13830:11;13812:30;:::i;:::-;13801:41;;13991:1;13982:7;13978:15;13975:1;13972:22;13952:1;13945:9;13925:83;13902:139;;14021:18;;:::i;:::-;13902:139;13686:362;13638:410;;;;:::o;14054:143::-;14111:5;14142:6;14136:13;14127:22;;14158:33;14185:5;14158:33;:::i;:::-;14054:143;;;;:::o;14203:351::-;14273:6;14322:2;14310:9;14301:7;14297:23;14293:32;14290:119;;;14328:79;;:::i;:::-;14290:119;14448:1;14473:64;14529:7;14520:6;14509:9;14505:22;14473:64;:::i;:::-;14463:74;;14419:128;14203:351;;;;:::o;14560:332::-;14681:4;14719:2;14708:9;14704:18;14696:26;;14732:71;14800:1;14789:9;14785:17;14776:6;14732:71;:::i;:::-;14813:72;14881:2;14870:9;14866:18;14857:6;14813:72;:::i;:::-;14560:332;;;;;:::o;14898:137::-;14952:5;14983:6;14977:13;14968:22;;14999:30;15023:5;14999:30;:::i;:::-;14898:137;;;;:::o;15041:345::-;15108:6;15157:2;15145:9;15136:7;15132:23;15128:32;15125:119;;;15163:79;;:::i;:::-;15125:119;15283:1;15308:61;15361:7;15352:6;15341:9;15337:22;15308:61;:::i;:::-;15298:71;;15254:125;15041:345;;;;:::o;15392:553::-;15569:4;15607:3;15596:9;15592:19;15584:27;;15621:71;15689:1;15678:9;15674:17;15665:6;15621:71;:::i;:::-;15702:72;15770:2;15759:9;15755:18;15746:6;15702:72;:::i;:::-;15784;15852:2;15841:9;15837:18;15828:6;15784:72;:::i;:::-;15866;15934:2;15923:9;15919:18;15910:6;15866:72;:::i;:::-;15392:553;;;;;;;:::o;15951:320::-;16066:4;16104:2;16093:9;16089:18;16081:26;;16117:71;16185:1;16174:9;16170:17;16161:6;16117:71;:::i;:::-;16198:66;16260:2;16249:9;16245:18;16236:6;16198:66;:::i;:::-;15951:320;;;;;:::o;16277:225::-;16417:34;16413:1;16405:6;16401:14;16394:58;16486:8;16481:2;16473:6;16469:15;16462:33;16277:225;:::o;16508:366::-;16650:3;16671:67;16735:2;16730:3;16671:67;:::i;:::-;16664:74;;16747:93;16836:3;16747:93;:::i;:::-;16865:2;16860:3;16856:12;16849:19;;16508:366;;;:::o;16880:419::-;17046:4;17084:2;17073:9;17069:18;17061:26;;17133:9;17127:4;17123:20;17119:1;17108:9;17104:17;17097:47;17161:131;17287:4;17161:131;:::i;:::-;17153:139;;16880:419;;;:::o;17305:220::-;17445:34;17441:1;17433:6;17429:14;17422:58;17514:3;17509:2;17501:6;17497:15;17490:28;17305:220;:::o;17531:366::-;17673:3;17694:67;17758:2;17753:3;17694:67;:::i;:::-;17687:74;;17770:93;17859:3;17770:93;:::i;:::-;17888:2;17883:3;17879:12;17872:19;;17531:366;;;:::o;17903:419::-;18069:4;18107:2;18096:9;18092:18;18084:26;;18156:9;18150:4;18146:20;18142:1;18131:9;18127:17;18120:47;18184:131;18310:4;18184:131;:::i;:::-;18176:139;;17903:419;;;:::o;18328:194::-;18368:4;18388:20;18406:1;18388:20;:::i;:::-;18383:25;;18422:20;18440:1;18422:20;:::i;:::-;18417:25;;18466:1;18463;18459:9;18451:17;;18490:1;18484:4;18481:11;18478:37;;;18495:18;;:::i;:::-;18478:37;18328:194;;;;:::o;18528:170::-;18668:22;18664:1;18656:6;18652:14;18645:46;18528:170;:::o;18704:366::-;18846:3;18867:67;18931:2;18926:3;18867:67;:::i;:::-;18860:74;;18943:93;19032:3;18943:93;:::i;:::-;19061:2;19056:3;19052:12;19045:19;;18704:366;;;:::o;19076:419::-;19242:4;19280:2;19269:9;19265:18;19257:26;;19329:9;19323:4;19319:20;19315:1;19304:9;19300:17;19293:47;19357:131;19483:4;19357:131;:::i;:::-;19349:139;;19076:419;;;:::o;19501:191::-;19541:3;19560:20;19578:1;19560:20;:::i;:::-;19555:25;;19594:20;19612:1;19594:20;:::i;:::-;19589:25;;19637:1;19634;19630:9;19623:16;;19658:3;19655:1;19652:10;19649:36;;;19665:18;;:::i;:::-;19649:36;19501:191;;;;:::o;19698:249::-;19838:34;19834:1;19826:6;19822:14;19815:58;19907:32;19902:2;19894:6;19890:15;19883:57;19698:249;:::o;19953:366::-;20095:3;20116:67;20180:2;20175:3;20116:67;:::i;:::-;20109:74;;20192:93;20281:3;20192:93;:::i;:::-;20310:2;20305:3;20301:12;20294:19;;19953:366;;;:::o;20325:419::-;20491:4;20529:2;20518:9;20514:18;20506:26;;20578:9;20572:4;20568:20;20564:1;20553:9;20549:17;20542:47;20606:131;20732:4;20606:131;:::i;:::-;20598:139;;20325:419;;;:::o;20750:177::-;20890:29;20886:1;20878:6;20874:14;20867:53;20750:177;:::o;20933:366::-;21075:3;21096:67;21160:2;21155:3;21096:67;:::i;:::-;21089:74;;21172:93;21261:3;21172:93;:::i;:::-;21290:2;21285:3;21281:12;21274:19;;20933:366;;;:::o;21305:419::-;21471:4;21509:2;21498:9;21494:18;21486:26;;21558:9;21552:4;21548:20;21544:1;21533:9;21529:17;21522:47;21586:131;21712:4;21586:131;:::i;:::-;21578:139;;21305:419;;;:::o;21730:418::-;21867:4;21905:2;21894:9;21890:18;21882:26;;21918:67;21982:1;21971:9;21967:17;21958:6;21918:67;:::i;:::-;21995:68;22059:2;22048:9;22044:18;22035:6;21995:68;:::i;:::-;22073;22137:2;22126:9;22122:18;22113:6;22073:68;:::i;:::-;21730:418;;;;;;:::o;22154:167::-;22294:19;22290:1;22282:6;22278:14;22271:43;22154:167;:::o;22327:366::-;22469:3;22490:67;22554:2;22549:3;22490:67;:::i;:::-;22483:74;;22566:93;22655:3;22566:93;:::i;:::-;22684:2;22679:3;22675:12;22668:19;;22327:366;;;:::o;22699:419::-;22865:4;22903:2;22892:9;22888:18;22880:26;;22952:9;22946:4;22942:20;22938:1;22927:9;22923:17;22916:47;22980:131;23106:4;22980:131;:::i;:::-;22972:139;;22699:419;;;:::o;23124:180::-;23172:77;23169:1;23162:88;23269:4;23266:1;23259:15;23293:4;23290:1;23283:15;23310:180;23358:77;23355:1;23348:88;23455:4;23452:1;23445:15;23479:4;23476:1;23469:15;23496:85;23541:7;23570:5;23559:16;;23496:85;;;:::o;23587:158::-;23645:9;23678:61;23696:42;23705:32;23731:5;23705:32;:::i;:::-;23696:42;:::i;:::-;23678:61;:::i;:::-;23665:74;;23587:158;;;:::o;23751:147::-;23846:45;23885:5;23846:45;:::i;:::-;23841:3;23834:58;23751:147;;:::o;23904:114::-;23971:6;24005:5;23999:12;23989:22;;23904:114;;;:::o;24024:184::-;24123:11;24157:6;24152:3;24145:19;24197:4;24192:3;24188:14;24173:29;;24024:184;;;;:::o;24214:132::-;24281:4;24304:3;24296:11;;24334:4;24329:3;24325:14;24317:22;;24214:132;;;:::o;24352:108::-;24429:24;24447:5;24429:24;:::i;:::-;24424:3;24417:37;24352:108;;:::o;24466:179::-;24535:10;24556:46;24598:3;24590:6;24556:46;:::i;:::-;24634:4;24629:3;24625:14;24611:28;;24466:179;;;;:::o;24651:113::-;24721:4;24753;24748:3;24744:14;24736:22;;24651:113;;;:::o;24800:732::-;24919:3;24948:54;24996:5;24948:54;:::i;:::-;25018:86;25097:6;25092:3;25018:86;:::i;:::-;25011:93;;25128:56;25178:5;25128:56;:::i;:::-;25207:7;25238:1;25223:284;25248:6;25245:1;25242:13;25223:284;;;25324:6;25318:13;25351:63;25410:3;25395:13;25351:63;:::i;:::-;25344:70;;25437:60;25490:6;25437:60;:::i;:::-;25427:70;;25283:224;25270:1;25267;25263:9;25258:14;;25223:284;;;25227:14;25523:3;25516:10;;24924:608;;;24800:732;;;;:::o;25538:831::-;25801:4;25839:3;25828:9;25824:19;25816:27;;25853:71;25921:1;25910:9;25906:17;25897:6;25853:71;:::i;:::-;25934:80;26010:2;25999:9;25995:18;25986:6;25934:80;:::i;:::-;26061:9;26055:4;26051:20;26046:2;26035:9;26031:18;26024:48;26089:108;26192:4;26183:6;26089:108;:::i;:::-;26081:116;;26207:72;26275:2;26264:9;26260:18;26251:6;26207:72;:::i;:::-;26289:73;26357:3;26346:9;26342:19;26333:6;26289:73;:::i;:::-;25538:831;;;;;;;;:::o;26375:147::-;26476:11;26513:3;26498:18;;26375:147;;;;:::o;26528:114::-;;:::o;26648:398::-;26807:3;26828:83;26909:1;26904:3;26828:83;:::i;:::-;26821:90;;26920:93;27009:3;26920:93;:::i;:::-;27038:1;27033:3;27029:11;27022:18;;26648:398;;;:::o;27052:379::-;27236:3;27258:147;27401:3;27258:147;:::i;:::-;27251:154;;27422:3;27415:10;;27052:379;;;:::o;27437:807::-;27686:4;27724:3;27713:9;27709:19;27701:27;;27738:71;27806:1;27795:9;27791:17;27782:6;27738:71;:::i;:::-;27819:72;27887:2;27876:9;27872:18;27863:6;27819:72;:::i;:::-;27901:80;27977:2;27966:9;27962:18;27953:6;27901:80;:::i;:::-;27991;28067:2;28056:9;28052:18;28043:6;27991:80;:::i;:::-;28081:73;28149:3;28138:9;28134:19;28125:6;28081:73;:::i;:::-;28164;28232:3;28221:9;28217:19;28208:6;28164:73;:::i;:::-;27437:807;;;;;;;;;:::o;28250:663::-;28338:6;28346;28354;28403:2;28391:9;28382:7;28378:23;28374:32;28371:119;;;28409:79;;:::i;:::-;28371:119;28529:1;28554:64;28610:7;28601:6;28590:9;28586:22;28554:64;:::i;:::-;28544:74;;28500:128;28667:2;28693:64;28749:7;28740:6;28729:9;28725:22;28693:64;:::i;:::-;28683:74;;28638:129;28806:2;28832:64;28888:7;28879:6;28868:9;28864:22;28832:64;:::i;:::-;28822:74;;28777:129;28250:663;;;;;:::o;28919:332::-;29040:4;29078:2;29067:9;29063:18;29055:26;;29091:71;29159:1;29148:9;29144:17;29135:6;29091:71;:::i;:::-;29172:72;29240:2;29229:9;29225:18;29216:6;29172:72;:::i;:::-;28919:332;;;;;:::o

Swarm Source

ipfs://5b5eee72389f5e22f89c6db63be1dafa9eaed7ccf8ff7b4629d95579a5726b64

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.