ETH Price: $3,244.77 (-0.43%)
Gas: 1 Gwei

Token

The Stable Dragon (Statheros)
 

Overview

Max Total Supply

100,000 Statheros

Holders

58

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,221.008115236410456261 Statheros

Value
$0.00
0x5ee5eef74b1765f9956606584bf301ec88ed5913
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
TheStableDragon

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-02
*/

/*
 (                             )     (       )  (     
 )\ )  *   )   (      *   ) ( /(     )\ ) ( /(  )\ )  
(()/(` )  /(   )\   ` )  /( )\())(  (()/( )\())(()/(  
 /(_))( )(_)|(((_)(  ( )(_)|(_)\ )\  /(_)|(_)\  /(_)) 
(_)) (_(_()) )\ _ )\(_(_()) _((_|(_)(_))   ((_)(_))   
/ __||_   _| (_)_\(_)_   _|| || | __| _ \ / _ \/ __|  
\__ \  | |    / _ \   | |  | __ | _||   /| (_) \__ \  
|___/  |_|   /_/ \_\  |_|  |_||_|___|_|_\ \___/|___/  
                                                                                             
                                        ,   ,                                
                                        $,  $,     ,                         
                                        "ss.$ss. .s'                         
                                ,     .ss$$$$$$$$$$s,                        
                                $. s$$$$$$$$$$$$$$`$$Ss                      
                                "$$$$$$$$$$$$$$$$$$o$$$       ,              
                               s$$$$$$$$$$$$$$$$$$$$$$$$s,  ,s               
                              s$$$$$$$$$"$$$$$$""""$$$$$$"$$$$$,             
                              s$$$$$$$$$$s""$$$$ssssss"$$$$$$$$"             
                             s$$$$$$$$$$'         `"""ss"$"$s""              
                             s$$$$$$$$$$,              `"""""$  .s$$s        
                             s$$$$$$$$$$$$s,...               `s$$'  `       
                         `ssss$$$$$$$$$$$$$$$$$$$$####s.     .$$"$.   , s-   
                           `""""$$$$$$$$$$$$$$$$$$$$#####$$$$$$"     $.$'    
                                 "$$$$$$$$$$$$$$$$$$$$$####s""     .$$$|     
                                   "$$$$$$$$$$$$$$$$$$$$$$$$##s    .$$" $    
                                   $$""$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"   `    
                                  $$"  "$"$$$$$$$$$$$$$$$$$$$$S""""'         
                             ,   ,"     '  $$$$$$$$$$$$$$$$####s             
                             $.          .s$$$$$$$$$$$$$$$$$####"            
                 ,           "$s.   ..ssS$$$$$$$$$$$$$$$$$$$####"            
                 $           .$$$S$$$$$$$$$$$$$$$$$$$$$$$$#####"             
                 Ss     ..sS$$$$$$$$$$$$$$$$$$$$$$$$$$$######""              
                  "$$sS$$$$$$$$$$$$$$$$$$$$$$$$$$$########"                  
           ,      s$$$$$$$$$$$$$$$$$$$$$$$$#########""'                      
           $    s$$$$$$$$$$$$$$$$$$$$$#######""'      s'         ,           
           $$..$$$$$$$$$$$$$$$$$$######"'       ....,$$....    ,$            
            "$$$$$$$$$$$$$$$######"' ,     .sS$$$$$$$$$$$$$$$$s$$            
              $$$$$$$$$$$$#####"     $, .s$$$$$$$$$$$$$$$$$$$$$$$$s.         
   )          $$$$$$$$$$$#####'      `$$$$$$$$$###########$$$$$$$$$$$.       
  ((          $$$$$$$$$$$#####       $$$$$$$$###"       "####$$$$$$$$$$      
  ) \         $$$$$$$$$$$$####.     $$$$$$###"             "###$$$$$$$$$   s'
 (   )        $$$$$$$$$$$$$####.   $$$$$###"                ####$$$$$$$$s$$' 
 )  ( (       $$"$$$$$$$$$$$#####.$$$$$###'                .###$$$$$$$$$$"   
 (  )  )   _,$"   $$$$$$$$$$$$######.$$##'                .###$$$$$$$$$$     
 ) (  ( \.         "$$$$$$$$$$$$$#######,,,.          ..####$$$$$$$$$$$"     
(   )$ )  )        ,$$$$$$$$$$$$$$$$$$####################$$$$$$$$$$$"       
(   ($$  ( \     _sS"  `"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$S$$,       
 )  )$$$s ) )  .      .   `$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"'  `$$      
  (   $$$Ss/  .$,    .$,,s$$$$$$##S$$$$$$$$$$$$$$$$$$$$$$$$S""        '      
    \)_$$$$$$$$$$$$$$$$$$$$$$$##"  $$        `$$.        `$$.                
        `"S$$$$$$$$$$$$$$$$$#"      $          `$          `$                
            `"""""""""""""'         '           '           '                                      


Ο Σταθερός Δράκος έρχεται από την Αρχαία Ελλάδα για να φέρει σταθερότητα σε όλους.
Κοίτα τον εαυτό σου στον καθρέφτη, πες μου τι βλέπεις.

https://t.me/StableDragonETH
https://twitter.com/thestabledragon
https://medium.com/@thestabledragon/%CE%BF-%CF%83%CF%84%CE%B1%CE%B8%CE%B5%CF%81%CF%8C%CF%82-%CE%B4%CF%81%CE%AC%CE%BA%CE%BF%CF%82-a5fd4e41053


*/

// SPDX-License-Identifier: MIT


pragma solidity ^0.7.4;

library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;

        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    function div(int256 a, int256 b) internal pure returns (int256) {
        require(b != -1 || a != MIN_INT256);

        return a / b;
    }

    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
}

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

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0);
        return a % b;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address who) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function transfer(address to, uint256 value) external returns (bool);

    function approve(address spender, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

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

interface IPancakeSwapPair {
		event Approval(address indexed owner, address indexed spender, uint value);
		event Transfer(address indexed from, address indexed to, uint value);

		function name() external pure returns (string memory);
		function symbol() external pure returns (string memory);
		function decimals() external pure returns (uint8);
		function totalSupply() external view returns (uint);
		function balanceOf(address owner) external view returns (uint);
		function allowance(address owner, address spender) external view returns (uint);

		function approve(address spender, uint value) external returns (bool);
		function transfer(address to, uint value) external returns (bool);
		function transferFrom(address from, address to, uint value) external returns (bool);

		function DOMAIN_SEPARATOR() external view returns (bytes32);
		function PERMIT_TYPEHASH() external pure returns (bytes32);
		function nonces(address owner) external view returns (uint);

		function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

		event Mint(address indexed sender, uint amount0, uint amount1);
		event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
		event Swap(
				address indexed sender,
				uint amount0In,
				uint amount1In,
				uint amount0Out,
				uint amount1Out,
				address indexed to
		);
		event Sync(uint112 reserve0, uint112 reserve1);

		function MINIMUM_LIQUIDITY() external pure returns (uint);
		function factory() external view returns (address);
		function token0() external view returns (address);
		function token1() external view returns (address);
		function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
		function price0CumulativeLast() external view returns (uint);
		function price1CumulativeLast() external view returns (uint);
		function kLast() external view returns (uint);

		function mint(address to) external returns (uint liquidity);
		function burn(address to) external returns (uint amount0, uint amount1);
		function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
		function skim(address to) external;
		function sync() external;

		function initialize(address, address) external;
}

interface IPancakeSwapRouter{
		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 removeLiquidity(
				address tokenA,
				address tokenB,
				uint liquidity,
				uint amountAMin,
				uint amountBMin,
				address to,
				uint deadline
		) external returns (uint amountA, uint amountB);
		function removeLiquidityETH(
				address token,
				uint liquidity,
				uint amountTokenMin,
				uint amountETHMin,
				address to,
				uint deadline
		) external returns (uint amountToken, uint amountETH);
		function removeLiquidityWithPermit(
				address tokenA,
				address tokenB,
				uint liquidity,
				uint amountAMin,
				uint amountBMin,
				address to,
				uint deadline,
				bool approveMax, uint8 v, bytes32 r, bytes32 s
		) external returns (uint amountA, uint amountB);
		function removeLiquidityETHWithPermit(
				address token,
				uint liquidity,
				uint amountTokenMin,
				uint amountETHMin,
				address to,
				uint deadline,
				bool approveMax, uint8 v, bytes32 r, bytes32 s
		) external returns (uint amountToken, uint amountETH);
		function swapExactTokensForTokens(
				uint amountIn,
				uint amountOutMin,
				address[] calldata path,
				address to,
				uint deadline
		) external returns (uint[] memory amounts);
		function swapTokensForExactTokens(
				uint amountOut,
				uint amountInMax,
				address[] calldata path,
				address to,
				uint deadline
		) external returns (uint[] memory amounts);
		function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
				external
				payable
				returns (uint[] memory amounts);
		function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
				external
				returns (uint[] memory amounts);
		function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
				external
				returns (uint[] memory amounts);
		function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
				external
				payable
				returns (uint[] memory amounts);

		function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
		function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
		function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
		function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
		function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
		function removeLiquidityETHSupportingFeeOnTransferTokens(
			address token,
			uint liquidity,
			uint amountTokenMin,
			uint amountETHMin,
			address to,
			uint deadline
		) external returns (uint amountETH);
		function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
			address token,
			uint liquidity,
			uint amountTokenMin,
			uint amountETHMin,
			address to,
			uint deadline,
			bool approveMax, uint8 v, bytes32 r, bytes32 s
		) external returns (uint amountETH);
	
		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 IPancakeSwapFactory {
		event PairCreated(address indexed token0, address indexed token1, address pair, uint);

		function feeTo() external view returns (address);
		function feeToSetter() external view returns (address);

		function getPair(address tokenA, address tokenB) external view returns (address pair);
		function allPairs(uint) external view returns (address pair);
		function allPairsLength() external view returns (uint);

		function createPair(address tokenA, address tokenB) external returns (address pair);

		function setFeeTo(address) external;
		function setFeeToSetter(address) external;
}

interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
}

contract DividendDistributor is IDividendDistributor {

    using SafeMath for uint256;

    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }
   
    IERC20 UC = IERC20(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48); 

    IPancakeSwapRouter router;

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;

    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public currentIndex;

    uint256 public dividendsPerShareAccuracyFactor = 10 ** 24;
    uint256 public minPeriod = 3600;
    uint256 public minDistribution = 1 * (10 ** 6);

    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor (address _router) {
        router = _router != address(0)
        ? IPancakeSwapRouter(_router)
        : IPancakeSwapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _token = msg.sender;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {
        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function rescueToken(address tokenAddress,address _receiver, uint256 tokens) external onlyToken returns (bool success){
        return IERC20(tokenAddress).transfer(_receiver, tokens);
    }

    function deposit() external payable override onlyToken {
        uint256 balanceBefore = UC.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(UC);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = UC.balanceOf(address(this)).sub(balanceBefore);

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();
        uint256 iterations = 0;

        while(gasUsed < gas && iterations < shareholderCount) {
            if(currentIndex >= shareholderCount){
                currentIndex = 0;
            }

            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }

    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            UC.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }

    function claimDividend() external {
        distributeDividend(msg.sender);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

contract Ownable {
    address private _owner;

    event OwnershipRenounced(address indexed previousOwner);

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

    constructor() {
        _owner = msg.sender;
    }

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

    modifier onlyOwner() {
        require(isOwner());
        _;
    }

    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    function renounceOwnership() public onlyOwner {
        emit OwnershipRenounced(_owner);
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0));
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

abstract contract ERC20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

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

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }
}

contract TheStableDragon is ERC20Detailed, Ownable {

    using SafeMath for uint256;
    using SafeMathInt for int256;

    uint256 public buyLiquidityFee = 10;
    uint256 public buyMarketingFee = 900;
    uint256 public buyRewardsFee = 10;

    uint256 public sellLiquidityFee = 10;
    uint256 public sellMarketingFee = 900;
    uint256 public sellRewardsFee = 10;

    uint256 public AmountLiquidityFee;
    uint256 public AmountMarketingFee;
    uint256 public AmountRewardsFee;

    uint256 public feeDenominator = 1000;

    address public _marketingWalletAddress = 0xca45BB0ACc9C6BE4A0A042D652e5382354c6449e;
    address public _liquidityReciever;

    address private constant deadWallet = 0x000000000000000000000000000000000000dEaD;
    address private constant ZeroWallet = 0x0000000000000000000000000000000000000000;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public automatedMarketMakerPairs;
    mapping(address => bool) public isDividendExempt;

    uint256 public constant DECIMALS = 18;

    uint256 public _totalSupply = 100000 * (10 ** DECIMALS);

    uint256 public swapTokensAtAmount = _totalSupply.mul(50).div(feeDenominator); //0.5%

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

    bool public _enableLiquidity = true;
    bool public _enableSwap = true; 

     modifier validRecipient(address to) {
        require(to != address(0x0));
        _;
    }
  
    DividendDistributor distributor;
    address public PCASHDividendReceiver;

    uint256 distributorGas = 500000;
    
    address public pair;
    IPancakeSwapPair public pairContract;
    IPancakeSwapRouter public router;

    bool inSwap = false;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() ERC20Detailed("The Stable Dragon", "Statheros", uint8(DECIMALS)) Ownable() {

        router = IPancakeSwapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); 

        pair = IPancakeSwapFactory(router.factory()).createPair(
            router.WETH(),
            address(this)
        );

        _allowances[address(this)][address(router)] = uint256(-1);

        pairContract = IPancakeSwapPair(pair);
        automatedMarketMakerPairs[pair] = true;
        _liquidityReciever = msg.sender;

        distributor = new DividendDistributor(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D );

        PCASHDividendReceiver = address(distributor);

        isDividendExempt[owner()] = true;
        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[deadWallet] = true;
        isDividendExempt[ZeroWallet] = true;
        
        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(this)] = true;

        _balances[owner()] = _totalSupply;
        emit Transfer(address(0x0), owner(), _totalSupply);
    }

    function transfer(address to, uint256 value)
        external
        override
        validRecipient(to)
        returns (bool)
    {
        _transferFrom(msg.sender, to, value);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external override validRecipient(to) returns (bool) {
        
        if (_allowances[from][msg.sender] != uint256(-1)) {
            _allowances[from][msg.sender] = _allowances[from][
                msg.sender
            ].sub(value, "Insufficient Allowance");
        }
        _transferFrom(from, to, value);
        return true;
    }

    function _basicTransfer(
        address from,
        address to,
        uint256 amount
    ) internal returns (bool) {
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount);
        return true;
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {


        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        if (shouldAddLiquidity()) {
            addLiquidity();
        }

        if (shouldSwapBack()) {
            swapBack();
        }
        
        _balances[sender] = _balances[sender].sub(amount);
        
        uint256 AmountReceived = shouldTakeFee(sender, recipient)
            ? takeFee(sender, recipient, amount)
            : amount;

        _balances[recipient] = _balances[recipient].add(AmountReceived);

        if(!isDividendExempt[sender]){ try distributor.setShare(sender, balanceOf(sender)) {} catch {} }
        if(!isDividendExempt[recipient]){ try distributor.setShare(recipient, balanceOf(recipient)) {} catch {} }

        try distributor.process(distributorGas) {} catch {}

        emit Transfer(sender,recipient,AmountReceived);
        return true;
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal  returns (uint256) {

        uint256 feeAmount;
        uint LFEE;
        uint MFEE;
        uint RFEE;
        
        if(automatedMarketMakerPairs[sender]){

            LFEE = amount.mul(buyLiquidityFee).div(feeDenominator);
            AmountLiquidityFee += LFEE;
            MFEE = amount.mul(buyMarketingFee).div(feeDenominator);
            AmountMarketingFee += MFEE;
            RFEE = amount.mul(buyRewardsFee).div(feeDenominator);
            AmountRewardsFee += RFEE;

            feeAmount = LFEE.add(MFEE).add(RFEE);
        }
        else if(automatedMarketMakerPairs[recipient]){

            LFEE = amount.mul(sellLiquidityFee).div(feeDenominator);
            AmountLiquidityFee += LFEE;
            MFEE = amount.mul(sellMarketingFee).div(feeDenominator);
            AmountMarketingFee += MFEE;
            RFEE = amount.mul(sellRewardsFee).div(feeDenominator);
            AmountRewardsFee += RFEE;

            feeAmount = LFEE.add(MFEE).add(RFEE);
    
        }

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

        return amount.sub(feeAmount);
    }

    function manualSwap() public onlyOwner swapping { 
        if(AmountLiquidityFee > 0) swapForLiquidity(AmountLiquidityFee); 
        if(AmountMarketingFee > 0) swapForMarketing(AmountMarketingFee);
        if(AmountRewardsFee > 0) swapAndSendDivident(AmountRewardsFee);
    }

    function addLiquidity() internal swapping {

        if(AmountLiquidityFee > 0){
            swapForLiquidity(AmountLiquidityFee);
        }

        if(AmountMarketingFee > 0){
            swapForMarketing(AmountMarketingFee);
        }

    }

    function swapBack() internal swapping {
        if(AmountRewardsFee > 0){
            swapAndSendDivident(AmountRewardsFee);
        }      
    }

    function swapAndSendDivident(uint256 _tokens) private {
        uint initialBalance = address(this).balance;
        swapTokensForEth(_tokens);
        uint ReceivedBalance = address(this).balance.sub(initialBalance);
        AmountRewardsFee = AmountRewardsFee.sub(_tokens);
        try distributor.deposit { value: ReceivedBalance } () {} catch {}  
    }

    function shouldTakeFee(address from, address to)
        internal
        view
        returns (bool)
    {
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            return false;
        }        
        else{
            return (automatedMarketMakerPairs[from] || automatedMarketMakerPairs[to]);
        }
    }

    function shouldAddLiquidity() internal view returns (bool) {

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        return
            _enableLiquidity && 
            !inSwap && 
            canSwap &&
            !automatedMarketMakerPairs[msg.sender];
    }

    function shouldSwapBack() internal view returns (bool) {
        return 
            _enableSwap &&
            !inSwap &&
            !automatedMarketMakerPairs[msg.sender]; 
    }


    function setAutoAddLiquidity(bool _flag) external onlyOwner {
        if(_flag) {
            _enableLiquidity = _flag;
        } else {
            _enableLiquidity = _flag;
        }
    }

    function setAutoSwapBack(bool _flag) external onlyOwner {
        if(_flag) {
            _enableSwap = _flag;
        } else {
            _enableSwap = _flag;
        }
    }

    function allowance(address owner_, address spender)
        external
        view
        override
        returns (uint256)
    {
        return _allowances[owner_][spender];
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        external
        returns (bool)
    {
        uint256 oldValue = _allowances[msg.sender][spender];
        if (subtractedValue >= oldValue) {
            _allowances[msg.sender][spender] = 0;
        } else {
            _allowances[msg.sender][spender] = oldValue.sub(
                subtractedValue
            );
        }
        emit Approval(
            msg.sender,
            spender,
            _allowances[msg.sender][spender]
        );
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        external
        returns (bool)
    {
        _allowances[msg.sender][spender] = _allowances[msg.sender][
            spender
        ].add(addedValue);
        emit Approval(
            msg.sender,
            spender,
            _allowances[msg.sender][spender]
        );
        return true;
    }

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

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

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

    function checkFeeExempt(address _addr) external view returns (bool) {
        return _isExcludedFromFees[_addr];
    }

    function setBuyFee(
            uint _newLp,
            uint _newMarketing,
            uint _newReward
        ) public onlyOwner {
      
        buyLiquidityFee = _newLp;
        buyMarketingFee = _newMarketing;
        buyRewardsFee = _newReward;
    }

    function setSellFee(
            uint _newLp,
            uint _newMarketing,
            uint _newReward
        ) public onlyOwner {

        sellLiquidityFee = _newLp;
        sellMarketingFee = _newMarketing;
        sellRewardsFee = _newReward;
    }

    function setIsDividendExempt(address holder, bool exempt) external onlyOwner {
        require(holder != address(this) && !automatedMarketMakerPairs[holder]);
        isDividendExempt[holder] = exempt;

        if (exempt) {
            distributor.setShare(holder, 0);
        } else {
            distributor.setShare(holder, balanceOf(holder));
        }
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external onlyOwner {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    function clearStuckBalance(address _receiver) external onlyOwner {
        uint256 balance = address(this).balance;
        payable(_receiver).transfer(balance);
    }

    function rescueToken(address tokenAddress,address _receiver, uint256 tokens) external onlyOwner returns (bool success){
        return IERC20(tokenAddress).transfer(_receiver, tokens);
    }

    function rescueDToken(address tokenAddress,address _receiver, uint256 tokens) external onlyOwner  returns (bool success) {
        return distributor.rescueToken(tokenAddress, _receiver,tokens);
    }

    function setFeeReceivers(address _marketing,address _liquidity) public onlyOwner {
        _marketingWalletAddress = _marketing;
        _liquidityReciever = _liquidity;
    }

    function setDistributorSettings(uint256 gas) external onlyOwner {
        require(gas < 750000, "Gas must be lower than 750000");
        distributorGas = gas;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return
            _totalSupply.sub(_balances[deadWallet]).sub(_balances[ZeroWallet]);
    }

    function isNotInSwap() external view returns (bool) {
        return !inSwap;
    }

    function manualSync() external {
        IPancakeSwapPair(pair).sync();
    }

    function setLP(address _address) external onlyOwner {
        pairContract = IPancakeSwapPair(_address);
        pair = _address;
    }

    function setAutomaticPairMarket(address _addr,bool _status) public onlyOwner {
        if(_status) {
            require(!automatedMarketMakerPairs[_addr],"Pair Already Set!!");
        }
        automatedMarketMakerPairs[_addr] = _status;
        isDividendExempt[_addr] = true;
    }

    function setWhitelistFee(address _addr,bool _status) external onlyOwner {
        require(_isExcludedFromFees[_addr] != _status, "Error: Not changed");
        _isExcludedFromFees[_addr] = _status;
    }

    function setMinSwapAmount(uint _value) external onlyOwner {
        swapTokensAtAmount = _value;
    }
    
    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }
   
    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function swapForMarketing(uint _tokens) private {
        uint initalBalance = address(this).balance;
        swapTokensForEth(_tokens);
        uint recieveBalance = address(this).balance.sub(initalBalance);
        AmountMarketingFee = AmountMarketingFee.sub(_tokens);
        payable(_marketingWalletAddress).transfer(recieveBalance);
    }

    function swapForLiquidity(uint _tokens) private {
        uint half = AmountLiquidityFee.div(2);
        uint otherhalf = AmountLiquidityFee.sub(half);
        uint initalBalance = address(this).balance;
        swapTokensForEth(half);
        uint recieveBalance = address(this).balance.sub(initalBalance);
        AmountLiquidityFee = AmountLiquidityFee.sub(_tokens);
        addLiquidity(otherhalf,recieveBalance);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);
        // add the liquidity
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            _liquidityReciever,
            block.timestamp
        );

    }

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

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );

    }

    receive() external payable {}


}

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":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"AmountLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AmountMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AmountRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DECIMALS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PCASHDividendReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_enableLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_enableSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityReciever","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"checkFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNotInSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairContract","outputs":[{"internalType":"contract IPancakeSwapPair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"rescueDToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"rescueToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IPancakeSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setAutoAddLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setAutoSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setAutomaticPairMarket","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLp","type":"uint256"},{"internalType":"uint256","name":"_newMarketing","type":"uint256"},{"internalType":"uint256","name":"_newReward","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setMinSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLp","type":"uint256"},{"internalType":"uint256","name":"_newMarketing","type":"uint256"},{"internalType":"uint256","name":"_newReward","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setWhitelistFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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"}]

6080604052600a600355610384600455600a600555600a600655610384600755600a6008556103e8600c5573ca45bb0acc9c6be4a0a042d652e5382354c6449e600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a0a620186a002601255620000c4600c54620000b0603260125462000b3160201b62002d681790919060201c565b62000bbc60201b62002dee1790919060201c565b6013556001601660006101000a81548160ff0219169083151502179055506001601660016101000a81548160ff0219169083151502179055506207a1206018556000601b60146101000a81548160ff0219169083151502179055503480156200012c57600080fd5b506040518060400160405280601181526020017f54686520537461626c6520447261676f6e0000000000000000000000000000008152506040518060400160405280600981526020017f537461746865726f73000000000000000000000000000000000000000000000081525060128260009080519060200190620001b392919062000d03565b508160019080519060200190620001cc92919062000d03565b5080600260006101000a81548160ff021916908360ff16021790555050505033600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002ea57600080fd5b505afa158015620002ff573d6000803e3d6000fd5b505050506040513d60208110156200031657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ab57600080fd5b505afa158015620003c0573d6000803e3d6000fd5b505050506040513d6020811015620003d757600080fd5b8101908080519060200190929190505050306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200045357600080fd5b505af115801562000468573d6000803e3d6000fd5b505050506040513d60208110156200047f57600080fd5b8101908080519060200190929190505050601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160106000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d604051620006d49062000d9a565b808273ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801562000711573d6000803e3d6000fd5b50601660026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160116000620007cb62000c0e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016011600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000620009b662000c0e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506012546014600062000a7662000c0e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000ac462000c0e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012546040518082815260200191505060405180910390a362000dc7565b60008083141562000b46576000905062000bb6565b600082840290508284828162000b5857fe5b041462000bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180620070a26021913960400191505060405180910390fd5b809150505b92915050565b600062000c0683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000c3860201b60201c565b905092915050565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000ce8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000cac57808201518184015260208101905062000c8f565b50505050905090810190601f16801562000cda5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858162000cf557fe5b049050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000d3b576000855562000d87565b82601f1062000d5657805160ff191683800117855562000d87565b8280016001018555821562000d87579182015b8281111562000d8657825182559160200191906001019062000d69565b5b50905062000d96919062000da8565b5090565b611bda80620054c883390190565b5b8082111562000dc357600081600090555060010162000da9565b5090565b6146f18062000dd76000396000f3fe6080604052600436106103855760003560e01c80638f32d59b116101d1578063cfbac92f11610102578063e5711e8b116100a0578063f63743421161006f578063f637434214611314578063f708a64f1461133f578063f83267951461139c578063f887ea40146113c75761038c565b8063e5711e8b146111aa578063ea8b2c441461123b578063f11a24d314611298578063f2fde38b146112c35761038c565b8063d4399790116100dc578063d439979014611036578063dd62ed3e1461109d578063dde04b9514611122578063e2f456051461117f5761038c565b8063cfbac92f14610fa1578063cfe0e61914610fde578063d4057d7e146110095761038c565b8063a8aa1b311161016f578063b62496f511610149578063b62496f514610e53578063b677814c14610eba578063bb8d513114610ee5578063c6501c8914610f105761038c565b8063a8aa1b3114610d74578063a9059cbb14610db5578063ad64598a14610e265761038c565b80639d1944f5116101ab5780639d1944f514610c16578063a457c2d714610c51578063a4b45c0014610cc2578063a715184d14610d335761038c565b80638f32d59b14610b2e5780639213691314610b5b57806395d89b4114610b865761038c565b80633eaaf86b116102b6578063715018a6116102545780637bce5a04116102235780637bce5a0414610a545780637fb6df5814610a7f57806383b4ac6814610ac05780638da5cb5b14610aed5761038c565b8063715018a6146109aa578063753d02a1146109c1578063764d72bf146109d857806377a3b60914610a295761038c565b80634bc6dd18116102905780634bc6dd18146108b05780634d709adf146108ed57806351bc3c851461092e57806370a08231146109455761038c565b80633eaaf86b146107dd5780634144d9e4146108085780634355855a146108495761038c565b80632b112e49116103235780632f34d282116102fd5780632f34d282146106b2578063313ce56714610703578063320d453414610731578063395093511461076c5761038c565b80632b112e49146106175780632d48e896146106425780632e0f2625146106875761038c565b806318160ddd1161035f57806318160ddd146104bd5780631d865c30146104e857806323b872dd1461053757806325519cf2146105c85761038c565b806306fdde0314610391578063095ea7b314610421578063180b0d7e146104925761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6611408565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103e65780820151818401526020810190506103cb565b50505050905090810190601f1680156104135780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042d57600080fd5b5061047a6004803603604081101561044457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114aa565b60405180821515815260200191505060405180910390f35b34801561049e57600080fd5b506104a76114c1565b6040518082815260200191505060405180910390f35b3480156104c957600080fd5b506104d26114c7565b6040518082815260200191505060405180910390f35b3480156104f457600080fd5b506105356004803603606081101561050b57600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506114d1565b005b34801561054357600080fd5b506105b06004803603606081101561055a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114fc565b60405180821515815260200191505060405180910390f35b3480156105d457600080fd5b50610615600480360360608110156105eb57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061173b565b005b34801561062357600080fd5b5061062c611766565b6040518082815260200191505060405180910390f35b34801561064e57600080fd5b506106856004803603604081101561066557600080fd5b810190808035906020019092919080359060200190929190505050611814565b005b34801561069357600080fd5b5061069c6118be565b6040518082815260200191505060405180910390f35b3480156106be57600080fd5b50610701600480360360208110156106d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118c3565b005b34801561070f57600080fd5b50610718611959565b604051808260ff16815260200191505060405180910390f35b34801561073d57600080fd5b5061076a6004803603602081101561075457600080fd5b8101908080359060200190929190505050611970565b005b34801561077857600080fd5b506107c56004803603604081101561078f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061198b565b60405180821515815260200191505060405180910390f35b3480156107e957600080fd5b506107f2611b87565b6040518082815260200191505060405180910390f35b34801561081457600080fd5b5061081d611b8d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561085557600080fd5b506108986004803603602081101561086c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bb3565b60405180821515815260200191505060405180910390f35b3480156108bc57600080fd5b506108eb600480360360208110156108d357600080fd5b81019080803515159060200190929190505050611bd3565b005b3480156108f957600080fd5b50610902611c27565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561093a57600080fd5b50610943611c4d565b005b34801561095157600080fd5b506109946004803603602081101561096857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cdb565b6040518082815260200191505060405180910390f35b3480156109b657600080fd5b506109bf611d24565b005b3480156109cd57600080fd5b506109d6611dde565b005b3480156109e457600080fd5b50610a27600480360360208110156109fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e62565b005b348015610a3557600080fd5b50610a3e611ec3565b6040518082815260200191505060405180910390f35b348015610a6057600080fd5b50610a69611ec9565b6040518082815260200191505060405180910390f35b348015610a8b57600080fd5b50610a94611ecf565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610acc57600080fd5b50610ad5611ef5565b60405180821515815260200191505060405180910390f35b348015610af957600080fd5b50610b02611f0d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b3a57600080fd5b50610b43611f37565b60405180821515815260200191505060405180910390f35b348015610b6757600080fd5b50610b70611f8f565b6040518082815260200191505060405180910390f35b348015610b9257600080fd5b50610b9b611f95565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bdb578082015181840152602081019050610bc0565b50505050905090810190601f168015610c085780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c2257600080fd5b50610c4f60048036036020811015610c3957600080fd5b8101908080359060200190929190505050612037565b005b348015610c5d57600080fd5b50610caa60048036036040811015610c7457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506120ca565b60405180821515815260200191505060405180910390f35b348015610cce57600080fd5b50610d3160048036036040811015610ce557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061235a565b005b348015610d3f57600080fd5b50610d486123f1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d8057600080fd5b50610d89612417565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610dc157600080fd5b50610e0e60048036036040811015610dd857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061243d565b60405180821515815260200191505060405180910390f35b348015610e3257600080fd5b50610e3b612491565b60405180821515815260200191505060405180910390f35b348015610e5f57600080fd5b50610ea260048036036020811015610e7657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124a4565b60405180821515815260200191505060405180910390f35b348015610ec657600080fd5b50610ecf6124c4565b6040518082815260200191505060405180910390f35b348015610ef157600080fd5b50610efa6124ca565b6040518082815260200191505060405180910390f35b348015610f1c57600080fd5b50610f8960048036036060811015610f3357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506124d0565b60405180821515815260200191505060405180910390f35b348015610fad57600080fd5b50610fdc60048036036020811015610fc457600080fd5b810190808035151590602001909291905050506125d8565b005b348015610fea57600080fd5b50610ff361262c565b6040518082815260200191505060405180910390f35b34801561101557600080fd5b5061101e612632565b60405180821515815260200191505060405180910390f35b34801561104257600080fd5b506110856004803603602081101561105957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612645565b60405180821515815260200191505060405180910390f35b3480156110a957600080fd5b5061110c600480360360408110156110c057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061269b565b6040518082815260200191505060405180910390f35b34801561112e57600080fd5b5061117d6004803603604081101561114557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612722565b005b34801561118b57600080fd5b50611194612854565b6040518082815260200191505060405180910390f35b3480156111b657600080fd5b50611223600480360360608110156111cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061285a565b60405180821515815260200191505060405180910390f35b34801561124757600080fd5b506112966004803603604081101561125e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612922565b005b3480156112a457600080fd5b506112ad612aad565b6040518082815260200191505060405180910390f35b3480156112cf57600080fd5b50611312600480360360208110156112e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ab3565b005b34801561132057600080fd5b50611329612ad0565b6040518082815260200191505060405180910390f35b34801561134b57600080fd5b5061139a6004803603604081101561136257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612ad6565b005b3480156113a857600080fd5b506113b1612d3c565b6040518082815260200191505060405180910390f35b3480156113d357600080fd5b506113dc612d42565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b606060008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114a05780601f10611475576101008083540402835291602001916114a0565b820191906000526020600020905b81548152906001019060200180831161148357829003601f168201915b5050505050905090565b60006114b7338484612e38565b6001905092915050565b600c5481565b6000601254905090565b6114d9611f37565b6114e257600080fd5b826006819055508160078190555080600881905550505050565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561153957600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611723576116a2836040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250601560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461302f9092919063ffffffff16565b601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61172e8585856130ef565b5060019150509392505050565b611743611f37565b61174c57600080fd5b826003819055508160048190555080600581905550505050565b600061180f601460008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118016014600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546012546135a690919063ffffffff16565b6135a690919063ffffffff16565b905090565b61181c611f37565b61182557600080fd5b601660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b1580156118a257600080fd5b505af11580156118b6573d6000803e3d6000fd5b505050505050565b601281565b6118cb611f37565b6118d457600080fd5b80601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260009054906101000a900460ff16905090565b611978611f37565b61198157600080fd5b8060138190555050565b6000611a1c82601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f090919063ffffffff16565b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60125481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60116020528060005260406000206000915054906101000a900460ff1681565b611bdb611f37565b611be457600080fd5b8015611c095780601660016101000a81548160ff021916908315150217905550611c24565b80601660016101000a81548160ff0219169083151502179055505b50565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c55611f37565b611c5e57600080fd5b6001601b60146101000a81548160ff02191690831515021790555060006009541115611c9057611c8f600954613678565b5b6000600a541115611ca757611ca6600a546136fc565b5b6000600b541115611cbe57611cbd600b546137aa565b5b6000601b60146101000a81548160ff021916908315150217905550565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611d2c611f37565b611d3557600080fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e4857600080fd5b505af1158015611e5c573d6000803e3d6000fd5b50505050565b611e6a611f37565b611e7357600080fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611ebe573d6000803e3d6000fd5b505050565b60055481565b60045481565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601b60149054906101000a900460ff1615905090565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60075481565b606060018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561202d5780601f106120025761010080835404028352916020019161202d565b820191906000526020600020905b81548152906001019060200180831161201057829003601f168201915b5050505050905090565b61203f611f37565b61204857600080fd5b620b71b081106120c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f476173206d757374206265206c6f776572207468616e2037353030303000000081525060200191505060405180910390fd5b8060188190555050565b600080601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083106121da576000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061226e565b6121ed83826135a690919063ffffffff16565b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b612362611f37565b61236b57600080fd5b81600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561247a57600080fd5b6124853385856130ef565b50600191505092915050565b601660009054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b600b5481565b60085481565b60006124da611f37565b6124e357600080fd5b601660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e5711e8b8585856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561259457600080fd5b505af11580156125a8573d6000803e3d6000fd5b505050506040513d60208110156125be57600080fd5b810190808051906020019092919050505090509392505050565b6125e0611f37565b6125e957600080fd5b801561260e5780601660006101000a81548160ff021916908315150217905550612629565b80601660006101000a81548160ff0219169083151502179055505b50565b600a5481565b601660019054906101000a900460ff1681565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61272a611f37565b61273357600080fd5b801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156127f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4572726f723a204e6f74206368616e676564000000000000000000000000000081525060200191505060405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b6000612864611f37565b61286d57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156128de57600080fd5b505af11580156128f2573d6000803e3d6000fd5b505050506040513d602081101561290857600080fd5b810190808051906020019092919050505090509392505050565b61292a611f37565b61293357600080fd5b80156129fa57601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156129f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5061697220416c7265616479205365742121000000000000000000000000000081525060200191505060405180910390fd5b5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60035481565b612abb611f37565b612ac457600080fd5b612acd81613875565b50565b60065481565b612ade611f37565b612ae757600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612b6d5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612b7657600080fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015612c8457601660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612c6757600080fd5b505af1158015612c7b573d6000803e3d6000fd5b50505050612d38565b601660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683612ccc85611cdb565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612d1f57600080fd5b505af1158015612d33573d6000803e3d6000fd5b505050505b5050565b60095481565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080831415612d7b5760009050612de8565b6000828402905082848281612d8c57fe5b0414612de3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806146776021913960400191505060405180910390fd5b809150505b92915050565b6000612e3083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061396f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ebe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806146986024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806146556022913960400191505060405180910390fd5b80601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b60008383111582906130dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156130a1578082015181840152602081019050613086565b50505050905090810190601f1680156130ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000601b60149054906101000a900460ff161561311857613111848484613a35565b905061359f565b613120613b6c565b1561312e5761312d613c13565b5b613136613c79565b1561314457613143613cff565b5b61319682601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135a690919063ffffffff16565b601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006131e58585613d4e565b6131ef57826131fb565b6131fa858585613ea9565b5b905061324f81601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f090919063ffffffff16565b601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661339a57601660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968661332b88611cdb565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561337e57600080fd5b505af192505050801561338f575060015b61339857613399565b5b5b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166134a257601660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968561343387611cdb565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561348657600080fd5b505af1925050508015613497575060015b6134a0576134a1565b5b5b601660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796018546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561351957600080fd5b505af192505050801561352a575060015b61353357613534565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b60006135e883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061302f565b905092915050565b60008082840190508381101561366e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60006136906002600954612dee90919063ffffffff16565b905060006136a9826009546135a690919063ffffffff16565b905060004790506136b983614230565b60006136ce82476135a690919063ffffffff16565b90506136e5856009546135a690919063ffffffff16565b6009819055506136f583826144e4565b5050505050565b600047905061370a82614230565b600061371f82476135a690919063ffffffff16565b905061373683600a546135a690919063ffffffff16565b600a81905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156137a4573d6000803e3d6000fd5b50505050565b60004790506137b882614230565b60006137cd82476135a690919063ffffffff16565b90506137e483600b546135a690919063ffffffff16565b600b81905550601660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561385457600080fd5b505af193505050508015613866575060015b61386f57613870565b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156138af57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083118290613a1b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156139e05780820151818401526020810190506139c5565b50505050905090810190601f168015613a0d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613a2757fe5b049050809150509392505050565b6000613a8982601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135a690919063ffffffff16565b601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b1e82601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f090919063ffffffff16565b601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b600080613b7830611cdb565b905060006013548210159050601660009054906101000a900460ff168015613bad5750601b60149054906101000a900460ff16155b8015613bb65750805b8015613c0c5750601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b9250505090565b6001601b60146101000a81548160ff02191690831515021790555060006009541115613c4557613c44600954613678565b5b6000600a541115613c5c57613c5b600a546136fc565b5b6000601b60146101000a81548160ff021916908315150217905550565b6000601660019054906101000a900460ff168015613ca45750601b60149054906101000a900460ff16155b8015613cfa5750601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905090565b6001601b60146101000a81548160ff0219169083151502179055506000600b541115613d3157613d30600b546137aa565b5b6000601b60146101000a81548160ff021916908315150217905550565b6000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613df15750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613dff5760009050613ea3565b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613ea05750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90505b92915050565b6000806000806000601060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613fe057613f2c600c54613f1e60035489612d6890919063ffffffff16565b612dee90919063ffffffff16565b925082600960008282540192505081905550613f67600c54613f5960045489612d6890919063ffffffff16565b612dee90919063ffffffff16565b915081600a60008282540192505081905550613fa2600c54613f9460055489612d6890919063ffffffff16565b612dee90919063ffffffff16565b905080600b60008282540192505081905550613fd981613fcb84866135f090919063ffffffff16565b6135f090919063ffffffff16565b935061410c565b601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561410b5761405b600c5461404d60065489612d6890919063ffffffff16565b612dee90919063ffffffff16565b925082600960008282540192505081905550614096600c5461408860075489612d6890919063ffffffff16565b612dee90919063ffffffff16565b915081600a600082825401925050819055506140d1600c546140c360085489612d6890919063ffffffff16565b612dee90919063ffffffff16565b905080600b60008282540192505081905550614108816140fa84866135f090919063ffffffff16565b6135f090919063ffffffff16565b93505b5b60008411156142105761416784601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f090919063ffffffff16565b601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35b61422384876135a690919063ffffffff16565b9450505050509392505050565b6000600267ffffffffffffffff8111801561424a57600080fd5b506040519080825280602002602001820160405280156142795781602001602082028036833780820191505090505b509050308160008151811061428a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561432c57600080fd5b505afa158015614340573d6000803e3d6000fd5b505050506040513d602081101561435657600080fd5b81019080805190602001909291905050508160018151811061437457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506143db30601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e38565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561449f578082015181840152602081019050614484565b505050509050019650505050505050600060405180830381600087803b1580156144c857600080fd5b505af11580156144dc573d6000803e3d6000fd5b505050505050565b61451130601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e38565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b1580156145fd57600080fd5b505af1158015614611573d6000803e3d6000fd5b50505050506040513d606081101561462857600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050505050505056fe45524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a264697066735822122022e923310a0b12ad295cf0f4f84e6cc0fe338b11c9c0fc7d5a3d2730c8fb39df64736f6c63430007060033608060405273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555069d3c21bcecceda1000000600c55610e10600d55620f4240600e5534801561008057600080fd5b50604051611bda380380611bda833981810160405260208110156100a357600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561010357737a250d5630b4cf539739df2c5dacb4c659f2488d610105565b805b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050611a45806101956000396000f3fe6080604052600436106100f35760003560e01c8063ce7c2ac21161008a578063efca2eed11610059578063efca2eed1461040d578063f0fc6bca14610438578063ffb2c4791461044f578063ffd49c841461048a576100f3565b8063ce7c2ac2146102d4578063d0e30db014610347578063e2d2e21914610351578063e5711e8b1461037c576100f3565b80632d48e896116100c65780632d48e8961461020e5780633a98ef39146102535780634fab0ae81461027e578063997664d7146102a9576100f3565b806311ce023d146100f857806314b6ca961461012357806326987b601461017e57806328fd3198146101a9575b600080fd5b34801561010457600080fd5b5061010d6104b5565b6040518082815260200191505060405180910390f35b34801561012f57600080fd5b5061017c6004803603604081101561014657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104bb565b005b34801561018a57600080fd5b5061019361077a565b6040518082815260200191505060405180910390f35b3480156101b557600080fd5b506101f8600480360360208110156101cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610780565b6040518082815260200191505060405180910390f35b34801561021a57600080fd5b506102516004803603604081101561023157600080fd5b81019080803590602001909291908035906020019092919050505061089a565b005b34801561025f57600080fd5b50610268610904565b6040518082815260200191505060405180910390f35b34801561028a57600080fd5b5061029361090a565b6040518082815260200191505060405180910390f35b3480156102b557600080fd5b506102be610910565b6040518082815260200191505060405180910390f35b3480156102e057600080fd5b50610323600480360360208110156102f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610916565b60405180848152602001838152602001828152602001935050505060405180910390f35b61034f610940565b005b34801561035d57600080fd5b50610366610e3b565b6040518082815260200191505060405180910390f35b34801561038857600080fd5b506103f56004803603606081101561039f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e41565b60405180821515815260200191505060405180910390f35b34801561041957600080fd5b50610422610f51565b6040518082815260200191505060405180910390f35b34801561044457600080fd5b5061044d610f57565b005b34801561045b57600080fd5b506104886004803603602081101561047257600080fd5b8101908080359060200190929190505050610f62565b005b34801561049657600080fd5b5061049f6110dc565b6040518082815260200191505060405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461051357600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154111561056857610567826110e2565b5b6000811180156105ba57506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156105cd576105c8826113a8565b61062f565b60008114801561061f57506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b1561062e5761062d82611457565b5b5b6106988161068a600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015460075461163090919063ffffffff16565b61167a90919063ffffffff16565b60078190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550610730600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611702565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600b5481565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156107d55760009050610895565b6000610822600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611702565b90506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905080821161087d57600092505050610895565b610890818361163090919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108f257600080fd5b81600d8190555080600e819055505050565b60075481565b600e5481565b60085481565b60066020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461099857600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a2357600080fd5b505afa158015610a37573d6000803e3d6000fd5b505050506040513d6020811015610a4d57600080fd5b810190808051906020019092919050505090506000600267ffffffffffffffff81118015610a7a57600080fd5b50604051908082528060200260200182016040528015610aa95781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610b1457600080fd5b505afa158015610b28573d6000803e3d6000fd5b505050506040513d6020811015610b3e57600080fd5b810190808051906020019092919050505081600081518110610b5c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610bc657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015610cbe578082015181840152602081019050610ca3565b50505050905001955050505050506000604051808303818588803b158015610ce557600080fd5b505af1158015610cf9573d6000803e3d6000fd5b50505050506000610dd683600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610d8d57600080fd5b505afa158015610da1573d6000803e3d6000fd5b505050506040513d6020811015610db757600080fd5b810190808051906020019092919050505061163090919063ffffffff16565b9050610ded8160085461167a90919063ffffffff16565b600881905550610e30610e1f600754610e1184600c5461173490919063ffffffff16565b6117ba90919063ffffffff16565b600a5461167a90919063ffffffff16565b600a81905550505050565b600a5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e9c57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610f0d57600080fd5b505af1158015610f21573d6000803e3d6000fd5b505050506040513d6020811015610f3757600080fd5b810190808051906020019092919050505090509392505050565b60095481565b610f60336110e2565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fba57600080fd5b600060038054905090506000811415610fd357506110d9565b6000805a905060005b8483108015610fea57508381105b156110d45783600b5410611001576000600b819055505b6110436003600b548154811061101357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611804565b1561108b5761108a6003600b548154811061105a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166110e2565b5b6110b06110a15a8461163090919063ffffffff16565b8461167a90919063ffffffff16565b92505a9150600b600081548092919060010191905055508080600101915050610fdc565b505050505b50565b600d5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415611132576113a5565b600061113d82610780565b905060008111156113a35761115d8160095461167a90919063ffffffff16565b600981905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156111f657600080fd5b505af115801561120a573d6000803e3d6000fd5b505050506040513d602081101561122057600080fd5b81019080805190602001909291905050505042600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112cb81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461167a90919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555061135c600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611702565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600380549050600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60036001600380549050038154811061146c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481106114e357fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546004600060036001600380549050038154811061158457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060038054806115f857fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600061167283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611868565b905092915050565b6000808284019050838110156116f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061172d600c5461171f600a548561173490919063ffffffff16565b6117ba90919063ffffffff16565b9050919050565b60008083141561174757600090506117b4565b600082840290508284828161175857fe5b04146117af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806119ef6021913960400191505060405180910390fd5b809150505b92915050565b60006117fc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611928565b905092915050565b600042600d54600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011080156118615750600e5461185f83610780565b115b9050919050565b6000838311158290611915576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156118da5780820151818401526020810190506118bf565b50505050905090810190601f1680156119075780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080831182906119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561199957808201518184015260208101905061197e565b50505050905090810190601f1680156119c65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816119e057fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220a2e07d17d6b5ff532a4eaff9c939dd87781e47db10bed0d5481860e0c28f59d464736f6c63430007060033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77

Deployed Bytecode

0x6080604052600436106103855760003560e01c80638f32d59b116101d1578063cfbac92f11610102578063e5711e8b116100a0578063f63743421161006f578063f637434214611314578063f708a64f1461133f578063f83267951461139c578063f887ea40146113c75761038c565b8063e5711e8b146111aa578063ea8b2c441461123b578063f11a24d314611298578063f2fde38b146112c35761038c565b8063d4399790116100dc578063d439979014611036578063dd62ed3e1461109d578063dde04b9514611122578063e2f456051461117f5761038c565b8063cfbac92f14610fa1578063cfe0e61914610fde578063d4057d7e146110095761038c565b8063a8aa1b311161016f578063b62496f511610149578063b62496f514610e53578063b677814c14610eba578063bb8d513114610ee5578063c6501c8914610f105761038c565b8063a8aa1b3114610d74578063a9059cbb14610db5578063ad64598a14610e265761038c565b80639d1944f5116101ab5780639d1944f514610c16578063a457c2d714610c51578063a4b45c0014610cc2578063a715184d14610d335761038c565b80638f32d59b14610b2e5780639213691314610b5b57806395d89b4114610b865761038c565b80633eaaf86b116102b6578063715018a6116102545780637bce5a04116102235780637bce5a0414610a545780637fb6df5814610a7f57806383b4ac6814610ac05780638da5cb5b14610aed5761038c565b8063715018a6146109aa578063753d02a1146109c1578063764d72bf146109d857806377a3b60914610a295761038c565b80634bc6dd18116102905780634bc6dd18146108b05780634d709adf146108ed57806351bc3c851461092e57806370a08231146109455761038c565b80633eaaf86b146107dd5780634144d9e4146108085780634355855a146108495761038c565b80632b112e49116103235780632f34d282116102fd5780632f34d282146106b2578063313ce56714610703578063320d453414610731578063395093511461076c5761038c565b80632b112e49146106175780632d48e896146106425780632e0f2625146106875761038c565b806318160ddd1161035f57806318160ddd146104bd5780631d865c30146104e857806323b872dd1461053757806325519cf2146105c85761038c565b806306fdde0314610391578063095ea7b314610421578063180b0d7e146104925761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6611408565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103e65780820151818401526020810190506103cb565b50505050905090810190601f1680156104135780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042d57600080fd5b5061047a6004803603604081101561044457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114aa565b60405180821515815260200191505060405180910390f35b34801561049e57600080fd5b506104a76114c1565b6040518082815260200191505060405180910390f35b3480156104c957600080fd5b506104d26114c7565b6040518082815260200191505060405180910390f35b3480156104f457600080fd5b506105356004803603606081101561050b57600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506114d1565b005b34801561054357600080fd5b506105b06004803603606081101561055a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114fc565b60405180821515815260200191505060405180910390f35b3480156105d457600080fd5b50610615600480360360608110156105eb57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061173b565b005b34801561062357600080fd5b5061062c611766565b6040518082815260200191505060405180910390f35b34801561064e57600080fd5b506106856004803603604081101561066557600080fd5b810190808035906020019092919080359060200190929190505050611814565b005b34801561069357600080fd5b5061069c6118be565b6040518082815260200191505060405180910390f35b3480156106be57600080fd5b50610701600480360360208110156106d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118c3565b005b34801561070f57600080fd5b50610718611959565b604051808260ff16815260200191505060405180910390f35b34801561073d57600080fd5b5061076a6004803603602081101561075457600080fd5b8101908080359060200190929190505050611970565b005b34801561077857600080fd5b506107c56004803603604081101561078f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061198b565b60405180821515815260200191505060405180910390f35b3480156107e957600080fd5b506107f2611b87565b6040518082815260200191505060405180910390f35b34801561081457600080fd5b5061081d611b8d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561085557600080fd5b506108986004803603602081101561086c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bb3565b60405180821515815260200191505060405180910390f35b3480156108bc57600080fd5b506108eb600480360360208110156108d357600080fd5b81019080803515159060200190929190505050611bd3565b005b3480156108f957600080fd5b50610902611c27565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561093a57600080fd5b50610943611c4d565b005b34801561095157600080fd5b506109946004803603602081101561096857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cdb565b6040518082815260200191505060405180910390f35b3480156109b657600080fd5b506109bf611d24565b005b3480156109cd57600080fd5b506109d6611dde565b005b3480156109e457600080fd5b50610a27600480360360208110156109fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e62565b005b348015610a3557600080fd5b50610a3e611ec3565b6040518082815260200191505060405180910390f35b348015610a6057600080fd5b50610a69611ec9565b6040518082815260200191505060405180910390f35b348015610a8b57600080fd5b50610a94611ecf565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610acc57600080fd5b50610ad5611ef5565b60405180821515815260200191505060405180910390f35b348015610af957600080fd5b50610b02611f0d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b3a57600080fd5b50610b43611f37565b60405180821515815260200191505060405180910390f35b348015610b6757600080fd5b50610b70611f8f565b6040518082815260200191505060405180910390f35b348015610b9257600080fd5b50610b9b611f95565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bdb578082015181840152602081019050610bc0565b50505050905090810190601f168015610c085780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c2257600080fd5b50610c4f60048036036020811015610c3957600080fd5b8101908080359060200190929190505050612037565b005b348015610c5d57600080fd5b50610caa60048036036040811015610c7457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506120ca565b60405180821515815260200191505060405180910390f35b348015610cce57600080fd5b50610d3160048036036040811015610ce557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061235a565b005b348015610d3f57600080fd5b50610d486123f1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d8057600080fd5b50610d89612417565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610dc157600080fd5b50610e0e60048036036040811015610dd857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061243d565b60405180821515815260200191505060405180910390f35b348015610e3257600080fd5b50610e3b612491565b60405180821515815260200191505060405180910390f35b348015610e5f57600080fd5b50610ea260048036036020811015610e7657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124a4565b60405180821515815260200191505060405180910390f35b348015610ec657600080fd5b50610ecf6124c4565b6040518082815260200191505060405180910390f35b348015610ef157600080fd5b50610efa6124ca565b6040518082815260200191505060405180910390f35b348015610f1c57600080fd5b50610f8960048036036060811015610f3357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506124d0565b60405180821515815260200191505060405180910390f35b348015610fad57600080fd5b50610fdc60048036036020811015610fc457600080fd5b810190808035151590602001909291905050506125d8565b005b348015610fea57600080fd5b50610ff361262c565b6040518082815260200191505060405180910390f35b34801561101557600080fd5b5061101e612632565b60405180821515815260200191505060405180910390f35b34801561104257600080fd5b506110856004803603602081101561105957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612645565b60405180821515815260200191505060405180910390f35b3480156110a957600080fd5b5061110c600480360360408110156110c057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061269b565b6040518082815260200191505060405180910390f35b34801561112e57600080fd5b5061117d6004803603604081101561114557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612722565b005b34801561118b57600080fd5b50611194612854565b6040518082815260200191505060405180910390f35b3480156111b657600080fd5b50611223600480360360608110156111cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061285a565b60405180821515815260200191505060405180910390f35b34801561124757600080fd5b506112966004803603604081101561125e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612922565b005b3480156112a457600080fd5b506112ad612aad565b6040518082815260200191505060405180910390f35b3480156112cf57600080fd5b50611312600480360360208110156112e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ab3565b005b34801561132057600080fd5b50611329612ad0565b6040518082815260200191505060405180910390f35b34801561134b57600080fd5b5061139a6004803603604081101561136257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612ad6565b005b3480156113a857600080fd5b506113b1612d3c565b6040518082815260200191505060405180910390f35b3480156113d357600080fd5b506113dc612d42565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b606060008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114a05780601f10611475576101008083540402835291602001916114a0565b820191906000526020600020905b81548152906001019060200180831161148357829003601f168201915b5050505050905090565b60006114b7338484612e38565b6001905092915050565b600c5481565b6000601254905090565b6114d9611f37565b6114e257600080fd5b826006819055508160078190555080600881905550505050565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561153957600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611723576116a2836040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250601560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461302f9092919063ffffffff16565b601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61172e8585856130ef565b5060019150509392505050565b611743611f37565b61174c57600080fd5b826003819055508160048190555080600581905550505050565b600061180f601460008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118016014600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546012546135a690919063ffffffff16565b6135a690919063ffffffff16565b905090565b61181c611f37565b61182557600080fd5b601660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b1580156118a257600080fd5b505af11580156118b6573d6000803e3d6000fd5b505050505050565b601281565b6118cb611f37565b6118d457600080fd5b80601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260009054906101000a900460ff16905090565b611978611f37565b61198157600080fd5b8060138190555050565b6000611a1c82601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f090919063ffffffff16565b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60125481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60116020528060005260406000206000915054906101000a900460ff1681565b611bdb611f37565b611be457600080fd5b8015611c095780601660016101000a81548160ff021916908315150217905550611c24565b80601660016101000a81548160ff0219169083151502179055505b50565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c55611f37565b611c5e57600080fd5b6001601b60146101000a81548160ff02191690831515021790555060006009541115611c9057611c8f600954613678565b5b6000600a541115611ca757611ca6600a546136fc565b5b6000600b541115611cbe57611cbd600b546137aa565b5b6000601b60146101000a81548160ff021916908315150217905550565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611d2c611f37565b611d3557600080fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e4857600080fd5b505af1158015611e5c573d6000803e3d6000fd5b50505050565b611e6a611f37565b611e7357600080fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611ebe573d6000803e3d6000fd5b505050565b60055481565b60045481565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601b60149054906101000a900460ff1615905090565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60075481565b606060018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561202d5780601f106120025761010080835404028352916020019161202d565b820191906000526020600020905b81548152906001019060200180831161201057829003601f168201915b5050505050905090565b61203f611f37565b61204857600080fd5b620b71b081106120c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f476173206d757374206265206c6f776572207468616e2037353030303000000081525060200191505060405180910390fd5b8060188190555050565b600080601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083106121da576000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061226e565b6121ed83826135a690919063ffffffff16565b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b612362611f37565b61236b57600080fd5b81600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561247a57600080fd5b6124853385856130ef565b50600191505092915050565b601660009054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b600b5481565b60085481565b60006124da611f37565b6124e357600080fd5b601660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e5711e8b8585856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561259457600080fd5b505af11580156125a8573d6000803e3d6000fd5b505050506040513d60208110156125be57600080fd5b810190808051906020019092919050505090509392505050565b6125e0611f37565b6125e957600080fd5b801561260e5780601660006101000a81548160ff021916908315150217905550612629565b80601660006101000a81548160ff0219169083151502179055505b50565b600a5481565b601660019054906101000a900460ff1681565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61272a611f37565b61273357600080fd5b801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156127f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4572726f723a204e6f74206368616e676564000000000000000000000000000081525060200191505060405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b6000612864611f37565b61286d57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156128de57600080fd5b505af11580156128f2573d6000803e3d6000fd5b505050506040513d602081101561290857600080fd5b810190808051906020019092919050505090509392505050565b61292a611f37565b61293357600080fd5b80156129fa57601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156129f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5061697220416c7265616479205365742121000000000000000000000000000081525060200191505060405180910390fd5b5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60035481565b612abb611f37565b612ac457600080fd5b612acd81613875565b50565b60065481565b612ade611f37565b612ae757600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612b6d5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612b7657600080fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015612c8457601660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612c6757600080fd5b505af1158015612c7b573d6000803e3d6000fd5b50505050612d38565b601660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683612ccc85611cdb565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612d1f57600080fd5b505af1158015612d33573d6000803e3d6000fd5b505050505b5050565b60095481565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080831415612d7b5760009050612de8565b6000828402905082848281612d8c57fe5b0414612de3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806146776021913960400191505060405180910390fd5b809150505b92915050565b6000612e3083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061396f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ebe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806146986024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806146556022913960400191505060405180910390fd5b80601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b60008383111582906130dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156130a1578082015181840152602081019050613086565b50505050905090810190601f1680156130ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000601b60149054906101000a900460ff161561311857613111848484613a35565b905061359f565b613120613b6c565b1561312e5761312d613c13565b5b613136613c79565b1561314457613143613cff565b5b61319682601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135a690919063ffffffff16565b601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006131e58585613d4e565b6131ef57826131fb565b6131fa858585613ea9565b5b905061324f81601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f090919063ffffffff16565b601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661339a57601660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968661332b88611cdb565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561337e57600080fd5b505af192505050801561338f575060015b61339857613399565b5b5b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166134a257601660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968561343387611cdb565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561348657600080fd5b505af1925050508015613497575060015b6134a0576134a1565b5b5b601660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796018546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561351957600080fd5b505af192505050801561352a575060015b61353357613534565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b60006135e883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061302f565b905092915050565b60008082840190508381101561366e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60006136906002600954612dee90919063ffffffff16565b905060006136a9826009546135a690919063ffffffff16565b905060004790506136b983614230565b60006136ce82476135a690919063ffffffff16565b90506136e5856009546135a690919063ffffffff16565b6009819055506136f583826144e4565b5050505050565b600047905061370a82614230565b600061371f82476135a690919063ffffffff16565b905061373683600a546135a690919063ffffffff16565b600a81905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156137a4573d6000803e3d6000fd5b50505050565b60004790506137b882614230565b60006137cd82476135a690919063ffffffff16565b90506137e483600b546135a690919063ffffffff16565b600b81905550601660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561385457600080fd5b505af193505050508015613866575060015b61386f57613870565b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156138af57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083118290613a1b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156139e05780820151818401526020810190506139c5565b50505050905090810190601f168015613a0d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613a2757fe5b049050809150509392505050565b6000613a8982601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135a690919063ffffffff16565b601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b1e82601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f090919063ffffffff16565b601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b600080613b7830611cdb565b905060006013548210159050601660009054906101000a900460ff168015613bad5750601b60149054906101000a900460ff16155b8015613bb65750805b8015613c0c5750601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b9250505090565b6001601b60146101000a81548160ff02191690831515021790555060006009541115613c4557613c44600954613678565b5b6000600a541115613c5c57613c5b600a546136fc565b5b6000601b60146101000a81548160ff021916908315150217905550565b6000601660019054906101000a900460ff168015613ca45750601b60149054906101000a900460ff16155b8015613cfa5750601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905090565b6001601b60146101000a81548160ff0219169083151502179055506000600b541115613d3157613d30600b546137aa565b5b6000601b60146101000a81548160ff021916908315150217905550565b6000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613df15750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613dff5760009050613ea3565b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613ea05750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90505b92915050565b6000806000806000601060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613fe057613f2c600c54613f1e60035489612d6890919063ffffffff16565b612dee90919063ffffffff16565b925082600960008282540192505081905550613f67600c54613f5960045489612d6890919063ffffffff16565b612dee90919063ffffffff16565b915081600a60008282540192505081905550613fa2600c54613f9460055489612d6890919063ffffffff16565b612dee90919063ffffffff16565b905080600b60008282540192505081905550613fd981613fcb84866135f090919063ffffffff16565b6135f090919063ffffffff16565b935061410c565b601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561410b5761405b600c5461404d60065489612d6890919063ffffffff16565b612dee90919063ffffffff16565b925082600960008282540192505081905550614096600c5461408860075489612d6890919063ffffffff16565b612dee90919063ffffffff16565b915081600a600082825401925050819055506140d1600c546140c360085489612d6890919063ffffffff16565b612dee90919063ffffffff16565b905080600b60008282540192505081905550614108816140fa84866135f090919063ffffffff16565b6135f090919063ffffffff16565b93505b5b60008411156142105761416784601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f090919063ffffffff16565b601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35b61422384876135a690919063ffffffff16565b9450505050509392505050565b6000600267ffffffffffffffff8111801561424a57600080fd5b506040519080825280602002602001820160405280156142795781602001602082028036833780820191505090505b509050308160008151811061428a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561432c57600080fd5b505afa158015614340573d6000803e3d6000fd5b505050506040513d602081101561435657600080fd5b81019080805190602001909291905050508160018151811061437457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506143db30601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e38565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561449f578082015181840152602081019050614484565b505050509050019650505050505050600060405180830381600087803b1580156144c857600080fd5b505af11580156144dc573d6000803e3d6000fd5b505050505050565b61451130601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e38565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b1580156145fd57600080fd5b505af1158015614611573d6000803e3d6000fd5b50505050506040513d606081101561462857600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050505050505056fe45524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a264697066735822122022e923310a0b12ad295cf0f4f84e6cc0fe338b11c9c0fc7d5a3d2730c8fb39df64736f6c63430007060033

Deployed Bytecode Sourcemap

22799:16057:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22523:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32789:189;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23306:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;36698:102;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33776:264;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26075:447;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33502:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35568:167;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34428:182;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23841:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35923:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22709:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;36582:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32393:388;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23887:55;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23351:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23784:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31427:182;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24513:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29231:279;;;;;;;;;;;;;:::i;:::-;;36811:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21734:126;;;;;;;;;;;;;:::i;:::-;;35836:79;;;;;;;;;;;;;:::i;:::-;;34618:170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23014:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22971:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24398;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;35743:85;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21469:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21634:92;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23099:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22614:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35392:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31813:572;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;35206:178;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23441:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24487:19;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25852:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24173:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23719:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23266:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23143:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34996:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31223:196;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23226:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24215:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33374:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31617:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;36368:206;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23951:76;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34796:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;36069:291;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22929:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21868:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23056:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34048:372;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23186:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24556:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22523:83;22560:13;22593:5;22586:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22523:83;:::o;32789:189::-;32892:4;32914:34;32923:10;32934:7;32942:5;32914:8;:34::i;:::-;32966:4;32959:11;;32789:189;;;;:::o;23306:36::-;;;;:::o;36698:102::-;36753:7;36780:12;;36773:19;;36698:102;:::o;33776:264::-;21596:9;:7;:9::i;:::-;21588:18;;;;;;33945:6:::1;33926:16;:25;;;;33981:13;33962:16;:32;;;;34022:10;34005:14;:27;;;;33776:264:::0;;;:::o;26075:447::-;26218:4;26205:2;24325:3;24311:18;;:2;:18;;;;24303:27;;;;;;26290:2:::1;26249:11;:17;26261:4;26249:17;;;;;;;;;;;;;;;:29;26267:10;26249:29;;;;;;;;;;;;;;;;:44;26245:207;;26342:98;26408:5;26342:98;;;;;;;;;;;;;;;;::::0;:11:::1;:17;26354:4;26342:17;;;;;;;;;;;;;;;:61;26378:10;26342:61;;;;;;;;;;;;;;;;:65;;:98;;;;;:::i;:::-;26310:11;:17;26322:4;26310:17;;;;;;;;;;;;;;;:29;26328:10;26310:29;;;;;;;;;;;;;;;:130;;;;26245:207;26462:30;26476:4;26482:2;26486:5;26462:13;:30::i;:::-;;26510:4;26503:11;;26075:447:::0;;;;;;:::o;33502:266::-;21596:9;:7;:9::i;:::-;21588:18;;;;;;33675:6:::1;33657:15;:24;;;;33710:13;33692:15;:31;;;;33750:10;33734:13;:26;;;;33502:266:::0;;;:::o;35568:167::-;35621:7;35661:66;35705:9;:21;23608:42;35705:21;;;;;;;;;;;;;;;;35661:39;35678:9;:21;23521:42;35678:21;;;;;;;;;;;;;;;;35661:12;;:16;;:39;;;;:::i;:::-;:43;;:66;;;;:::i;:::-;35641:86;;35568:167;:::o;34428:182::-;21596:9;:7;:9::i;:::-;21588:18;;;;;;34537:11:::1;;;;;;;;;;;:35;;;34573:10;34585:16;34537:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;34428:182:::0;;:::o;23841:37::-;23876:2;23841:37;:::o;35923:138::-;21596:9;:7;:9::i;:::-;21588:18;;;;;;36018:8:::1;35986:12;;:41;;;;;;;;;;;;;;;;;;36045:8;36038:4;;:15;;;;;;;;;;;;;;;;;;35923:138:::0;:::o;22709:83::-;22750:5;22775:9;;;;;;;;;;;22768:16;;22709:83;:::o;36582:104::-;21596:9;:7;:9::i;:::-;21588:18;;;;;;36672:6:::1;36651:18;:27;;;;36582:104:::0;:::o;32393:388::-;32493:4;32550:72;32611:10;32550:11;:23;32562:10;32550:23;;;;;;;;;;;;;;;:56;32588:7;32550:56;;;;;;;;;;;;;;;;:60;;:72;;;;:::i;:::-;32515:11;:23;32527:10;32515:23;;;;;;;;;;;;;;;:32;32539:7;32515:32;;;;;;;;;;;;;;;:107;;;;32686:7;32638:113;;32661:10;32638:113;;;32708:11;:23;32720:10;32708:23;;;;;;;;;;;;;;;:32;32732:7;32708:32;;;;;;;;;;;;;;;;32638:113;;;;;;;;;;;;;;;;;;32769:4;32762:11;;32393:388;;;;:::o;23887:55::-;;;;:::o;23351:83::-;;;;;;;;;;;;;:::o;23784:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;31427:182::-;21596:9;:7;:9::i;:::-;21588:18;;;;;;31497:5:::1;31494:108;;;31533:5;31519:11;;:19;;;;;;;;;;;;;;;;;;31494:108;;;31585:5;31571:11;;:19;;;;;;;;;;;;;;;;;;31494:108;31427:182:::0;:::o;24513:36::-;;;;;;;;;;;;;:::o;29231:279::-;21596:9;:7;:9::i;:::-;21588:18;;;;;;24665:4:::1;24656:6;;:13;;;;;;;;;;;;;;;;;;29315:1:::2;29294:18;;:22;29291:63;;;29318:36;29335:18;;29318:16;:36::i;:::-;29291:63;29390:1;29369:18;;:22;29366:63;;;29393:36;29410:18;;29393:16;:36::i;:::-;29366:63;29462:1;29443:16;;:20;29440:62;;;29465:37;29485:16;;29465:19;:37::i;:::-;29440:62;24701:5:::1;24692:6;;:14;;;;;;;;;;;;;;;;;;29231:279::o:0;36811:119::-;36877:7;36904:9;:18;36914:7;36904:18;;;;;;;;;;;;;;;;36897:25;;36811:119;;;:::o;21734:126::-;21596:9;:7;:9::i;:::-;21588:18;;;;;;21815:6:::1;;;;;;;;;;;21796:26;;;;;;;;;;;;21850:1;21833:6;;:19;;;;;;;;;;;;;;;;;;21734:126::o:0;35836:79::-;35895:4;;;;;;;;;;;35878:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35836:79::o;34618:170::-;21596:9;:7;:9::i;:::-;21588:18;;;;;;34694:15:::1;34712:21;34694:39;;34752:9;34744:27;;:36;34772:7;34744:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;21617:1;34618:170:::0;:::o;23014:33::-;;;;:::o;22971:36::-;;;;:::o;24398:::-;;;;;;;;;;;;;:::o;35743:85::-;35789:4;35814:6;;;;;;;;;;;35813:7;35806:14;;35743:85;:::o;21469:79::-;21507:7;21534:6;;;;;;;;;;;21527:13;;21469:79;:::o;21634:92::-;21674:4;21712:6;;;;;;;;;;;21698:20;;:10;:20;;;21691:27;;21634:92;:::o;23099:37::-;;;;:::o;22614:87::-;22653:13;22686:7;22679:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22614:87;:::o;35392:168::-;21596:9;:7;:9::i;:::-;21588:18;;;;;;35481:6:::1;35475:3;:12;35467:54;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;35549:3;35532:14;:20;;;;35392:168:::0;:::o;31813:572::-;31918:4;31940:16;31959:11;:23;31971:10;31959:23;;;;;;;;;;;;;;;:32;31983:7;31959:32;;;;;;;;;;;;;;;;31940:51;;32025:8;32006:15;:27;32002:225;;32085:1;32050:11;:23;32062:10;32050:23;;;;;;;;;;;;;;;:32;32074:7;32050:32;;;;;;;;;;;;;;;:36;;;;32002:225;;;32154:61;32185:15;32154:8;:12;;:61;;;;:::i;:::-;32119:11;:23;32131:10;32119:23;;;;;;;;;;;;;;;:32;32143:7;32119:32;;;;;;;;;;;;;;;:96;;;;32002:225;32290:7;32242:113;;32265:10;32242:113;;;32312:11;:23;32324:10;32312:23;;;;;;;;;;;;;;;:32;32336:7;32312:32;;;;;;;;;;;;;;;;32242:113;;;;;;;;;;;;;;;;;;32373:4;32366:11;;;31813:572;;;;:::o;35206:178::-;21596:9;:7;:9::i;:::-;21588:18;;;;;;35324:10:::1;35298:23;;:36;;;;;;;;;;;;;;;;;;35366:10;35345:18;;:31;;;;;;;;;;;;;;;;;;35206:178:::0;;:::o;23441:33::-;;;;;;;;;;;;;:::o;24487:19::-;;;;;;;;;;;;;:::o;25852:215::-;25979:4;25957:2;24325:3;24311:18;;:2;:18;;;;24303:27;;;;;;26001:36:::1;26015:10;26027:2;26031:5;26001:13;:36::i;:::-;;26055:4;26048:11;;25852:215:::0;;;;;:::o;24173:35::-;;;;;;;;;;;;;:::o;23719:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;23266:31::-;;;;:::o;23143:34::-;;;;:::o;34996:202::-;35103:12;21596:9;:7;:9::i;:::-;21588:18;;;;;;35135:11:::1;;;;;;;;;;;:23;;;35159:12;35173:9;35183:6;35135:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;35128:62;;34996:202:::0;;;;;:::o;31223:196::-;21596:9;:7;:9::i;:::-;21588:18;;;;;;31297:5:::1;31294:118;;;31338:5;31319:16;;:24;;;;;;;;;;;;;;;;;;31294:118;;;31395:5;31376:16;;:24;;;;;;;;;;;;;;;;;;31294:118;31223:196:::0;:::o;23226:33::-;;;;:::o;24215:30::-;;;;;;;;;;;;;:::o;33374:120::-;33436:4;33460:19;:26;33480:5;33460:26;;;;;;;;;;;;;;;;;;;;;;;;;33453:33;;33374:120;;;:::o;31617:188::-;31737:7;31769:11;:19;31781:6;31769:19;;;;;;;;;;;;;;;:28;31789:7;31769:28;;;;;;;;;;;;;;;;31762:35;;31617:188;;;;:::o;36368:206::-;21596:9;:7;:9::i;:::-;21588:18;;;;;;36489:7:::1;36459:37;;:19;:26;36479:5;36459:26;;;;;;;;;;;;;;;;;;;;;;;;;:37;;;;36451:68;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;36559:7;36530:19;:26;36550:5;36530:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;36368:206:::0;;:::o;23951:76::-;;;;:::o;34796:192::-;34901:12;21596:9;:7;:9::i;:::-;21588:18;;;;;;34939:12:::1;34932:29;;;34962:9;34973:6;34932:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;34925:55;;34796:192:::0;;;;;:::o;36069:291::-;21596:9;:7;:9::i;:::-;21588:18;;;;;;36160:7:::1;36157:102;;;36193:25;:32;36219:5;36193:32;;;;;;;;;;;;;;;;;;;;;;;;;36192:33;36184:63;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;36157:102;36304:7;36269:25;:32;36295:5;36269:32;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;36348:4;36322:16;:23;36339:5;36322:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;36069:291:::0;;:::o;22929:35::-;;;;:::o;21868:109::-;21596:9;:7;:9::i;:::-;21588:18;;;;;;21941:28:::1;21960:8;21941:18;:28::i;:::-;21868:109:::0;:::o;23056:36::-;;;;:::o;34048:372::-;21596:9;:7;:9::i;:::-;21588:18;;;;;;34162:4:::1;34144:23;;:6;:23;;;;:61;;;;;34172:25;:33;34198:6;34172:33;;;;;;;;;;;;;;;;;;;;;;;;;34171:34;34144:61;34136:70;;;::::0;::::1;;34244:6;34217:16;:24;34234:6;34217:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;34267:6;34263:150;;;34290:11;;;;;;;;;;;:20;;;34311:6;34319:1;34290:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;34263:150;;;34354:11;;;;;;;;;;;:20;;;34375:6;34383:17;34393:6;34383:9;:17::i;:::-;34354:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;34263:150;34048:372:::0;;:::o;23186:33::-;;;;:::o;24556:32::-;;;;;;;;;;;;;:::o;6151:250::-;6209:7;6238:1;6233;:6;6229:47;;;6263:1;6256:8;;;;6229:47;6288:9;6304:1;6300;:5;6288:17;;6333:1;6328;6324;:5;;;;;;:10;6316:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6392:1;6385:8;;;6151:250;;;;;:::o;6409:132::-;6467:7;6494:39;6498:1;6501;6494:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6487:46;;6409:132;;;;:::o;32986:380::-;33139:1;33122:19;;:5;:19;;;;33114:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33220:1;33201:21;;:7;:21;;;;33193:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33304:6;33274:11;:18;33286:5;33274:18;;;;;;;;;;;;;;;:27;33293:7;33274:27;;;;;;;;;;;;;;;:36;;;;33342:7;33326:32;;33335:5;33326:32;;;33351:6;33326:32;;;;;;;;;;;;;;;;;;32986:380;;;:::o;5917:226::-;6037:7;6070:1;6065;:6;;6073:12;6057:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6097:9;6113:1;6109;:5;6097:17;;6134:1;6127:8;;;5917:226;;;;;:::o;26800:1054::-;26926:4;26951:6;;;;;;;;;;;26947:87;;;26981:41;26996:6;27004:9;27015:6;26981:14;:41::i;:::-;26974:48;;;;26947:87;27050:20;:18;:20::i;:::-;27046:67;;;27087:14;:12;:14::i;:::-;27046:67;27129:16;:14;:16::i;:::-;27125:59;;;27162:10;:8;:10::i;:::-;27125:59;27224:29;27246:6;27224:9;:17;27234:6;27224:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;27204:9;:17;27214:6;27204:17;;;;;;;;;;;;;;;:49;;;;27274:22;27299:32;27313:6;27321:9;27299:13;:32::i;:::-;:104;;27397:6;27299:104;;;27347:34;27355:6;27363:9;27374:6;27347:7;:34::i;:::-;27299:104;27274:129;;27439:40;27464:14;27439:9;:20;27449:9;27439:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;27416:9;:20;27426:9;27416:20;;;;;;;;;;;;;;;:63;;;;27496:16;:24;27513:6;27496:24;;;;;;;;;;;;;;;;;;;;;;;;;27492:96;;27527:11;;;;;;;;;;;:20;;;27548:6;27556:17;27566:6;27556:9;:17::i;:::-;27527:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27523:63;;;;;;27492:96;27602:16;:27;27619:9;27602:27;;;;;;;;;;;;;;;;;;;;;;;;;27598:105;;27636:11;;;;;;;;;;;:20;;;27657:9;27668:20;27678:9;27668;:20::i;:::-;27636:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27632:69;;;;;;27598:105;27719:11;;;;;;;;;;;:19;;;27739:14;;27719:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27715:51;;;;;;27799:9;27783:41;;27792:6;27783:41;;;27809:14;27783:41;;;;;;;;;;;;;;;;;;27842:4;27835:11;;;26800:1054;;;;;;:::o;5773:136::-;5831:7;5858:43;5862:1;5865;5858:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;5851:50;;5773:136;;;;:::o;5584:181::-;5642:7;5662:9;5678:1;5674;:5;5662:17;;5703:1;5698;:6;;5690:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5756:1;5749:8;;;5584:181;;;;:::o;37295:431::-;37354:9;37366:25;37389:1;37366:18;;:22;;:25;;;;:::i;:::-;37354:37;;37402:14;37419:28;37442:4;37419:18;;:22;;:28;;;;:::i;:::-;37402:45;;37458:18;37479:21;37458:42;;37511:22;37528:4;37511:16;:22::i;:::-;37544:19;37566:40;37592:13;37566:21;:25;;:40;;;;:::i;:::-;37544:62;;37638:31;37661:7;37638:18;;:22;;:31;;;;:::i;:::-;37617:18;:52;;;;37680:38;37693:9;37703:14;37680:12;:38::i;:::-;37295:431;;;;;:::o;36938:349::-;36997:18;37018:21;36997:42;;37050:25;37067:7;37050:16;:25::i;:::-;37086:19;37108:40;37134:13;37108:21;:25;;:40;;;;:::i;:::-;37086:62;;37180:31;37203:7;37180:18;;:22;;:31;;;;:::i;:::-;37159:18;:52;;;;37230:23;;;;;;;;;;;37222:41;;:57;37264:14;37222:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36938:349;;;:::o;29938:363::-;30003:19;30025:21;30003:43;;30057:25;30074:7;30057:16;:25::i;:::-;30093:20;30116:41;30142:14;30116:21;:25;;:41;;;;:::i;:::-;30093:64;;30187:29;30208:7;30187:16;;:20;;:29;;;;:::i;:::-;30168:16;:48;;;;30231:11;;;;;;;;;;;:19;;;30260:15;30231:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30227:65;;;;;;29938:363;;;:::o;21985:187::-;22079:1;22059:22;;:8;:22;;;;22051:31;;;;;;22127:8;22098:38;;22119:6;;;;;;;;;;;22098:38;;;;;;;;;;;;22156:8;22147:6;;:17;;;;;;;;;;;;;;;;;;21985:187;:::o;6549:225::-;6669:7;6701:1;6697;:5;6704:12;6689:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6728:9;6744:1;6740;:5;;;;;;6728:17;;6765:1;6758:8;;;6549:225;;;;;:::o;26530:262::-;26648:4;26683:27;26703:6;26683:9;:15;26693:4;26683:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;26665:9;:15;26675:4;26665:15;;;;;;;;;;;;;;;:45;;;;26737:25;26755:6;26737:9;:13;26747:2;26737:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;26721:9;:13;26731:2;26721:13;;;;;;;;;;;;;;;:41;;;;26780:4;26773:11;;26530:262;;;;;:::o;30662:357::-;30715:4;30734:28;30765:24;30783:4;30765:9;:24::i;:::-;30734:55;;30800:12;30839:18;;30815:20;:42;;30800:57;;30890:16;;;;;;;;;;;:41;;;;;30925:6;;;;;;;;;;;30924:7;30890:41;:66;;;;;30949:7;30890:66;:121;;;;;30974:25;:37;31000:10;30974:37;;;;;;;;;;;;;;;;;;;;;;;;;30973:38;30890:121;30870:141;;;;30662:357;:::o;29518:254::-;24665:4;24656:6;;:13;;;;;;;;;;;;;;;;;;29597:1:::1;29576:18;;:22;29573:89;;;29614:36;29631:18;;29614:16;:36::i;:::-;29573:89;29698:1;29677:18;;:22;29674:89;;;29715:36;29732:18;;29715:16;:36::i;:::-;29674:89;24701:5:::0;24692:6;;:14;;;;;;;;;;;;;;;;;;29518:254::o;31027:186::-;31076:4;31114:11;;;;;;;;;;;:35;;;;;31143:6;;;;;;;;;;;31142:7;31114:35;:90;;;;;31167:25;:37;31193:10;31167:37;;;;;;;;;;;;;;;;;;;;;;;;;31166:38;31114:90;31093:111;;31027:186;:::o;29780:150::-;24665:4;24656:6;;:13;;;;;;;;;;;;;;;;;;29851:1:::1;29832:16;;:20;29829:88;;;29868:37;29888:16;;29868:19;:37::i;:::-;29829:88;24701:5:::0;24692:6;;:14;;;;;;;;;;;;;;;;;;29780:150::o;30309:345::-;30408:4;30433:19;:25;30453:4;30433:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;30462:19;:23;30482:2;30462:23;;;;;;;;;;;;;;;;;;;;;;;;;30433:52;30430:217;;;30508:5;30501:12;;;;30430:217;30570:25;:31;30596:4;30570:31;;;;;;;;;;;;;;;;;;;;;;;;;:64;;;;30605:25;:29;30631:2;30605:29;;;;;;;;;;;;;;;;;;;;;;;;;30570:64;30562:73;;30309:345;;;;;:::o;27862:1361::-;27983:7;28005:17;28033:9;28053;28073;28106:25;:33;28132:6;28106:33;;;;;;;;;;;;;;;;;;;;;;;;;28103:887;;;28164:47;28196:14;;28164:27;28175:15;;28164:6;:10;;:27;;;;:::i;:::-;:31;;:47;;;;:::i;:::-;28157:54;;28248:4;28226:18;;:26;;;;;;;;;;;28274:47;28306:14;;28274:27;28285:15;;28274:6;:10;;:27;;;;:::i;:::-;:31;;:47;;;;:::i;:::-;28267:54;;28358:4;28336:18;;:26;;;;;;;;;;;28384:45;28414:14;;28384:25;28395:13;;28384:6;:10;;:25;;;;:::i;:::-;:29;;:45;;;;:::i;:::-;28377:52;;28464:4;28444:16;;:24;;;;;;;;;;;28497;28516:4;28497:14;28506:4;28497;:8;;:14;;;;:::i;:::-;:18;;:24;;;;:::i;:::-;28485:36;;28103:887;;;28551:25;:36;28577:9;28551:36;;;;;;;;;;;;;;;;;;;;;;;;;28548:442;;;28612:48;28645:14;;28612:28;28623:16;;28612:6;:10;;:28;;;;:::i;:::-;:32;;:48;;;;:::i;:::-;28605:55;;28697:4;28675:18;;:26;;;;;;;;;;;28723:48;28756:14;;28723:28;28734:16;;28723:6;:10;;:28;;;;:::i;:::-;:32;;:48;;;;:::i;:::-;28716:55;;28808:4;28786:18;;:26;;;;;;;;;;;28834:46;28865:14;;28834:26;28845:14;;28834:6;:10;;:26;;;;:::i;:::-;:30;;:46;;;;:::i;:::-;28827:53;;28915:4;28895:16;;:24;;;;;;;;;;;28948;28967:4;28948:14;28957:4;28948;:8;;:14;;;;:::i;:::-;:18;;:24;;;;:::i;:::-;28936:36;;28548:442;28103:887;29017:1;29005:9;:13;29002:173;;;29062:39;29091:9;29062;:24;29080:4;29062:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;29035:9;:24;29053:4;29035:24;;;;;;;;;;;;;;;:66;;;;29146:4;29121:42;;29130:6;29121:42;;;29153:9;29121:42;;;;;;;;;;;;;;;;;;29002:173;29194:21;29205:9;29194:6;:10;;:21;;;;:::i;:::-;29187:28;;;;;;27862:1361;;;;;:::o;38248:564::-;38374:21;38412:1;38398:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38374:40;;38443:4;38425;38430:1;38425:7;;;;;;;;;;;;;:23;;;;;;;;;;;38469:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38459:4;38464:1;38459:7;;;;;;;;;;;;;:23;;;;;;;;;;;38495:53;38512:4;38527:6;;;;;;;;;;;38536:11;38495:8;:53::i;:::-;38587:6;;;;;;;;;;;:57;;;38659:11;38685:1;38729:4;38756;38776:15;38587:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38248:564;;:::o;37734:506::-;37882:53;37899:4;37914:6;;;;;;;;;;;37923:11;37882:8;:53::i;:::-;37976:6;;;;;;;;;;;:22;;;38006:9;38039:4;38059:11;38085:1;38128;38171:18;;;;;;;;;;;38204:15;37976:254;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37734:506;;:::o

Swarm Source

ipfs://a2e07d17d6b5ff532a4eaff9c939dd87781e47db10bed0d5481860e0c28f59d4
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.