ETH Price: $3,359.64 (-3.65%)

Token

(0x41dC2F7c461F8233f9cCE6cBedc82dB47f7b81f8)
 

Overview

Max Total Supply

1,000,000,000 ERC-20 TOKEN*

Holders

461

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
wagmiillusion.eth
Balance
5,381.41687854203465216 ERC-20 TOKEN*

Value
$0.00
0x8b98edaad83c9d2302834f868073a52dd18585c6
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:
THIS

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-18
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

abstract contract Context {

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

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

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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

library Address {

    function isContract(address account) internal view returns (bool) {
  
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;  //hash address of empty contract

        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {

    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

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

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

}

interface IUniswapV2Factory {
    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 IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

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

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

    function 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 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 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 IUniswapV2Router01 {
    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);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    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;
}

contract THIS is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    using Address for address;
    
    string private _name = "THIS";
    string private _symbol = "THIS";
    uint8 private _decimals = 18;

    address public marketingWallet = 0x9E50A542E9de75F8E17669152472c6806dDfA7AE;
    address public developerWallet = 0xE6E03bc0ed2D9027880e7cED07608040914C770a;
    address public liquidityReciever;

    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public blacklisted;
    mapping (address => bool) private allowTransfer;

    uint256 _buyLiquidityFee = 0;
    uint256 _buyMarketingFee = 0;
    uint256 _buyDeveloperFee = 0;
    
    uint256 _sellLiquidityFee = 0;
    uint256 _sellMarketingFee = 0;
    uint256 _sellDeveloperFee = 0;

    uint256 totalBuy;
    uint256 totalSell;

    uint256 denominator = 1000;

    uint256 private _totalSupply = 1_000_000_000 * 10**_decimals;   

    uint256 public minimumTokensBeforeSwap = 100000 * 10**_decimals;

    uint256 public _maxTxAmount =  _totalSupply.mul(5).div(denominator);     //0.5%
    uint256 public _walletMax = _totalSupply.mul(10).div(denominator);    //1%

    bool public EnableTxLimit = true;
    bool public checkWalletLimit = true;

    bool public initalDistribution;
    bool public triggered;
    uint public launchTime;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 

        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0);

        liquidityReciever = msg.sender;

        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[msg.sender] = true;
        isExcludedFromFee[marketingWallet] = true;
        isExcludedFromFee[developerWallet] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;

        isMarketPair[address(uniswapPair)] = true;

        totalBuy = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
        totalSell = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);

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

    /*====================================
    |               Getters              |
    ====================================*/

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

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

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

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

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

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

    function _approve(address owner, address spender, uint256 amount) private {
        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 getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!blacklisted[sender] && !blacklisted[recipient],"Error: Blacklist Bots/Contracts not Allowed!!");
        require(initalDistribution || allowTransfer[msg.sender] || isOwner() ,"Trade is Currently Paused!!");
        
        
        if((block.timestamp > launchTime + 15 minutes) && !triggered && (launchTime != 0) ){
            _maxTxAmount =  _totalSupply.mul(15).div(denominator);     //1.5%
            _walletMax = _totalSupply.mul(15).div(denominator);    //1.5%
            triggered = true;
            
        }
        

        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {  
            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTxLimit) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            } 

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                swapAndLiquify();
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = shouldTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Max Wallet Limit Exceeded!!");
            }

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

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

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

    function swapAndLiquify() private lockTheSwap {

        uint256 contractBalance = balanceOf(address(this));

        if(contractBalance == 0) return;

        uint256 totalShares = totalBuy.add(totalSell);
        uint256 _liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee);
        uint256 _MarketingShare = _buyMarketingFee.add(_sellMarketingFee);

        uint256 tokensForLP = contractBalance.mul(_liquidityShare).div(totalShares).div(2);
        uint256 tokensForSwap = contractBalance.sub(tokensForLP);

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance.sub(initialBalance);

        uint256 totalBNBFee = totalShares.sub(_liquidityShare.div(2));
        
        uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2);
        uint256 amountBNBMarketing = amountReceived.mul(_MarketingShare).div(totalBNBFee);
        uint256 amountBNBDeveloper = amountReceived.sub(amountBNBLiquidity).sub(amountBNBMarketing);

        if(amountBNBMarketing > 0)
            transferToAddressETH(marketingWallet, amountBNBMarketing);

        if(amountBNBDeveloper > 0)
            transferToAddressETH(developerWallet, amountBNBDeveloper);

        if(amountBNBLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountBNBLiquidity);
    }

    function transferToAddressETH(address recipient, uint256 amount) private {
        payable(recipient).transfer(amount);
    }
    
    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] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            liquidityReciever,
            block.timestamp
        );
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) {
            return true;
        }
        else if (isMarketPair[sender] || isMarketPair[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }

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

        unchecked {

            if(isMarketPair[sender]) {
            
                feeAmount = amount.mul(totalBuy).div(denominator);
            }
            else if(isMarketPair[recipient]) {

                feeAmount = amount.mul(totalSell).div(denominator);
                
            }     

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

            return amount.sub(feeAmount);
        }
        
    }

    /*====================================
    |               Setters              |
    ====================================*/

    //To Block Bots to trade
    function blacklistBot(address _adr,bool _status) public onlyOwner {
        blacklisted[_adr] = _status;
    }

    //To Rescue Stucked Balance
    function rescueFunds() public onlyOwner { 
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os,"Transaction Failed!!");
    }

    //To Rescue Stucked Tokens
    function rescueTokens(IERC20 adr,address recipient,uint amount) public onlyOwner {
        adr.transfer(recipient,amount);
    }

    function openTrade(bool _status,bool _r) public onlyOwner {
        initalDistribution = _status;
        if(_r) launchTime = block.timestamp;
    }

    function setWhitelistTransfer(address _adr, bool _status) public onlyOwner {
        allowTransfer[_adr] = _status;
    }

    function enableTxLimit(bool _status) public onlyOwner {
        EnableTxLimit = _status;
    }

    function enableWalletLimit(bool _status) public onlyOwner {
        checkWalletLimit = _status;
    }

    function setBuyFee(uint _newLP , uint _newMarket , uint _newDeveloper) public onlyOwner {     
        _buyLiquidityFee = _newLP;
        _buyMarketingFee = _newMarket;
        _buyDeveloperFee = _newDeveloper;
        totalBuy = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
    }

    function setSellFee(uint _newLP , uint _newMarket , uint _newDeveloper) public onlyOwner {        
        _sellLiquidityFee = _newLP;
        _sellMarketingFee = _newMarket;
        _sellDeveloperFee = _newDeveloper;
        totalSell = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);
    }

    function setWallets(address _market,address _developer,address _liquidityRec) public onlyOwner {
        marketingWallet = _market;
        developerWallet = _developer;
        liquidityReciever = _liquidityRec;
    }

    function setExcludeFromFee(address _adr,bool _status) public onlyOwner {
        require(isExcludedFromFee[_adr] != _status,"Not Changed!!");
        isExcludedFromFee[_adr] = _status;
    }

    function ExcludeWalletLimit(address _adr,bool _status) public onlyOwner {
        require(isWalletLimitExempt[_adr] != _status,"Not Changed!!");
        isWalletLimitExempt[_adr] = _status;
    }

    function ExcludeTxLimit(address _adr,bool _status) public onlyOwner {
        require(isTxLimitExempt[_adr] != _status,"Not Changed!!");
        isTxLimitExempt[_adr] = _status;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function setMaxWalletLimit(uint256 newLimit) external onlyOwner() {
        _walletMax = newLimit;
    }

    function setTxLimit(uint256 newLimit) external onlyOwner() {
        _maxTxAmount = newLimit;
    }

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

    function setMarketPair(address _pair, bool _status) public onlyOwner {
        isMarketPair[_pair] = _status;
    }

    function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0)) //Create If Doesnt exist
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address

        isMarketPair[address(uniswapPair)] = true;
    }

}

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"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"EnableTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"ExcludeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"ExcludeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","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":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"blacklistBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"developerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableWalletLimit","outputs":[],"stateMutability":"nonpayable","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":[],"name":"initalDistribution","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReciever","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"bool","name":"_r","type":"bool"}],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renouncedOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"adr","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLP","type":"uint256"},{"internalType":"uint256","name":"_newMarket","type":"uint256"},{"internalType":"uint256","name":"_newDeveloper","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLP","type":"uint256"},{"internalType":"uint256","name":"_newMarket","type":"uint256"},{"internalType":"uint256","name":"_newDeveloper","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_market","type":"address"},{"internalType":"address","name":"_developer","type":"address"},{"internalType":"address","name":"_liquidityRec","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setWhitelistTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"triggered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526040518060400160405280600481526020017f5448495300000000000000000000000000000000000000000000000000000000815250600190805190602001906200005192919062000dcc565b506040518060400160405280600481526020017f5448495300000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000dcc565b506012600360006101000a81548160ff021916908360ff160217905550739e50a542e9de75f8e17669152472c6806ddfa7ae600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e6e03bc0ed2d9027880e7ced07608040914c770a600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff1660601b8152506000600e556000600f5560006010556000601155600060125560006013556103e8601655600360009054906101000a900460ff16600a62000217919062001134565b633b9aca0062000228919062001271565b601755600360009054906101000a900460ff16600a62000249919062001134565b620186a062000259919062001271565b6018556200029460165462000280600560175462000c2360201b62002f101790919060201c565b62000ca760201b62002f8b1790919060201c565b601955620002cf601654620002bb600a60175462000c2360201b62002f101790919060201c565b62000ca760201b62002f8b1790919060201c565b601a556001601b60006101000a81548160ff0219169083151502179055506001601b60016101000a81548160ff0219169083151502179055506001601e60156101000a81548160ff0219169083151502179055503480156200033057600080fd5b5060006200034362000cf960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200044157600080fd5b505afa15801562000456573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047c919062000e93565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004df57600080fd5b505afa158015620004f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200051a919062000e93565b6040518363ffffffff1660e01b81526004016200053992919062000f76565b602060405180830381600087803b1580156200055457600080fd5b505af115801562000569573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058f919062000e93565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000b2760105462000b13600f54600e5462000d0160201b62002fd51790919060201c565b62000d0160201b62002fd51790919060201c565b60148190555062000b6660135462000b5260125460115462000d0160201b62002fd51790919060201c565b62000d0160201b62002fd51790919060201c565b601581905550601754600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60175460405162000c1491906200100b565b60405180910390a350620014cb565b60008083141562000c38576000905062000ca1565b6000828462000c48919062001271565b905082848262000c599190620010a1565b1462000c9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c939062000fe9565b60405180910390fd5b809150505b92915050565b600062000cf183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000d6460201b60201c565b905092915050565b600033905090565b600080828462000d12919062001044565b90508381101562000d5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d519062000fc7565b60405180910390fd5b8091505092915050565b6000808311829062000dae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000da5919062000fa3565b60405180910390fd5b506000838562000dbf9190620010a1565b9050809150509392505050565b82805462000dda9062001353565b90600052602060002090601f01602090048101928262000dfe576000855562000e4a565b82601f1062000e1957805160ff191683800117855562000e4a565b8280016001018555821562000e4a579182015b8281111562000e4957825182559160200191906001019062000e2c565b5b50905062000e59919062000e5d565b5090565b5b8082111562000e7857600081600090555060010162000e5e565b5090565b60008151905062000e8d81620014b1565b92915050565b60006020828403121562000eac5762000eab62001416565b5b600062000ebc8482850162000e7c565b91505092915050565b62000ed081620012d2565b82525050565b600062000ee38262001028565b62000eef818562001033565b935062000f018185602086016200131d565b62000f0c816200141b565b840191505092915050565b600062000f26601b8362001033565b915062000f338262001439565b602082019050919050565b600062000f4d60218362001033565b915062000f5a8262001462565b604082019050919050565b62000f708162001306565b82525050565b600060408201905062000f8d600083018562000ec5565b62000f9c602083018462000ec5565b9392505050565b6000602082019050818103600083015262000fbf818462000ed6565b905092915050565b6000602082019050818103600083015262000fe28162000f17565b9050919050565b60006020820190508181036000830152620010048162000f3e565b9050919050565b600060208201905062001022600083018462000f65565b92915050565b600081519050919050565b600082825260208201905092915050565b6000620010518262001306565b91506200105e8362001306565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562001096576200109562001389565b5b828201905092915050565b6000620010ae8262001306565b9150620010bb8362001306565b925082620010ce57620010cd620013b8565b5b828204905092915050565b6000808291508390505b60018511156200112b5780860481111562001103576200110262001389565b5b6001851615620011135780820291505b808102905062001123856200142c565b9450620010e3565b94509492505050565b6000620011418262001306565b91506200114e8362001310565b92506200117d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001185565b905092915050565b6000826200119757600190506200126a565b81620011a757600090506200126a565b8160018114620011c05760028114620011cb5762001201565b60019150506200126a565b60ff841115620011e057620011df62001389565b5b8360020a915084821115620011fa57620011f962001389565b5b506200126a565b5060208310610133831016604e8410600b84101617156200123b5782820a90508381111562001235576200123462001389565b5b6200126a565b6200124a8484846001620010d9565b9250905081840481111562001264576200126362001389565b5b81810290505b9392505050565b60006200127e8262001306565b91506200128b8362001306565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620012c757620012c662001389565b5b828202905092915050565b6000620012df82620012e6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200133d57808201518184015260208101905062001320565b838111156200134d576000848401525b50505050565b600060028204905060018216806200136c57607f821691505b60208210811415620013835762001382620013e7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b620014bc81620012d2565b8114620014c857600080fd5b50565b60805160601c60a05160601c615a3f6200150560003960008181610e15015261144b01526000818161141f01526114770152615a3f6000f3fe60806040526004361061036f5760003560e01c806375cb1bd1116101c6578063b37f80f8116100f7578063d2d7ad8311610095578063e6b2603b1161006f578063e6b2603b14610ced578063ee828db314610d04578063f2fde38b14610d2d578063f872858a14610d5657610376565b8063d2d7ad8314610c48578063dbac26e914610c73578063dd62ed3e14610cb057610376565b8063c49b9a80116100d1578063c49b9a8014610b8e578063c816841b14610bb7578063c867d60b14610be2578063cea9d26f14610c1f57610376565b8063b37f80f814610b11578063b38d323c14610b3c578063c16dd4a414610b6557610376565b80638da5cb5b1161016457806398e944c81161013e57806398e944c814610a43578063a457c2d714610a6e578063a9059cbb14610aab578063af9549e014610ae857610376565b80638da5cb5b146109c25780638f32d59b146109ed57806395d89b4114610a1857610376565b80637d1db4a5116101a05780637d1db4a514610906578063807c2d9c146109315780638236802e1461095c5780638b42507f1461098557610376565b806375cb1bd11461088757806375f0a874146108b0578063790ca413146108db57610376565b806338ec0b11116102a05780635881f3ef1161023e57806366a16cad1161021857806366a16cad146107cd57806370a08231146107f6578063728d41c914610833578063741c89071461085c57610376565b80635881f3ef1461073c5780635c85974f146107795780635e42358c146107a257610376565b80633ecad2711161027a5780633ecad2711461066e5780634974d88f146106ab5780634a74bb02146106d45780635342acb4146106ff57610376565b806338ec0b11146105df57806339509351146106085780633b97084a1461064557610376565b80631d865c301161030d57806325519cf2116102e757806325519cf21461053557806327c8f8351461055e5780632b112e4914610589578063313ce567146105b457610376565b80631d865c30146104b857806320365d5f146104e157806323b872dd146104f857610376565b806313ea1d891161034957806313ea1d891461040e5780631694505e1461043757806318160ddd14610462578063185870f91461048d57610376565b806306fdde031461037b5780630930907b146103a6578063095ea7b3146103d157610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d81565b60405161039d9190614f54565b60405180910390f35b3480156103b257600080fd5b506103bb610e13565b6040516103c89190614e50565b60405180910390f35b3480156103dd57600080fd5b506103f860048036038101906103f391906148f3565b610e37565b6040516104059190614f1e565b60405180910390f35b34801561041a57600080fd5b50610435600480360381019061043091906148b3565b610e55565b005b34801561044357600080fd5b5061044c610fd8565b6040516104599190614f39565b60405180910390f35b34801561046e57600080fd5b50610477610ffe565b6040516104849190615156565b60405180910390f35b34801561049957600080fd5b506104a2611008565b6040516104af9190614e50565b60405180910390f35b3480156104c457600080fd5b506104df60048036038101906104da9190614a4d565b61102e565b005b3480156104ed57600080fd5b506104f661110e565b005b34801561050457600080fd5b5061051f600480360381019061051a9190614860565b611263565b60405161052c9190614f1e565b60405180910390f35b34801561054157600080fd5b5061055c60048036038101906105579190614a4d565b61133d565b005b34801561056a57600080fd5b5061057361141d565b6040516105809190614e50565b60405180910390f35b34801561059557600080fd5b5061059e611441565b6040516105ab9190615156565b60405180910390f35b3480156105c057600080fd5b506105c96114bf565b6040516105d691906151fb565b60405180910390f35b3480156105eb57600080fd5b50610606600480360381019061060191906148b3565b6114d6565b005b34801561061457600080fd5b5061062f600480360381019061062a91906148f3565b611659565b60405161063c9190614f1e565b60405180910390f35b34801561065157600080fd5b5061066c60048036038101906106679190614a20565b61170c565b005b34801561067a57600080fd5b5061069560048036038101906106909190614773565b6117ab565b6040516106a29190614f1e565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd9190614933565b6117cb565b005b3480156106e057600080fd5b506106e961187d565b6040516106f69190614f1e565b60405180910390f35b34801561070b57600080fd5b5061072660048036038101906107219190614773565b611890565b6040516107339190614f1e565b60405180910390f35b34801561074857600080fd5b50610763600480360381019061075e9190614773565b6118b0565b6040516107709190614e50565b60405180910390f35b34801561078557600080fd5b506107a0600480360381019061079b9190614a20565b611d94565b005b3480156107ae57600080fd5b506107b7611e33565b6040516107c49190614f1e565b60405180910390f35b3480156107d957600080fd5b506107f460048036038101906107ef91906148b3565b611e46565b005b34801561080257600080fd5b5061081d60048036038101906108189190614773565b611f36565b60405161082a9190615156565b60405180910390f35b34801561083f57600080fd5b5061085a60048036038101906108559190614a20565b611f7f565b005b34801561086857600080fd5b5061087161201e565b60405161087e9190614f1e565b60405180910390f35b34801561089357600080fd5b506108ae60048036038101906108a9919061480d565b612031565b005b3480156108bc57600080fd5b506108c561218e565b6040516108d29190614e50565b60405180910390f35b3480156108e757600080fd5b506108f06121b4565b6040516108fd9190615156565b60405180910390f35b34801561091257600080fd5b5061091b6121ba565b6040516109289190615156565b60405180910390f35b34801561093d57600080fd5b506109466121c0565b6040516109539190615156565b60405180910390f35b34801561096857600080fd5b50610983600480360381019061097e91906148b3565b6121c6565b005b34801561099157600080fd5b506109ac60048036038101906109a79190614773565b6122b6565b6040516109b99190614f1e565b60405180910390f35b3480156109ce57600080fd5b506109d76122d6565b6040516109e49190614e50565b60405180910390f35b3480156109f957600080fd5b50610a026122ff565b604051610a0f9190614f1e565b60405180910390f35b348015610a2457600080fd5b50610a2d612356565b604051610a3a9190614f54565b60405180910390f35b348015610a4f57600080fd5b50610a586123e8565b604051610a659190614e50565b60405180910390f35b348015610a7a57600080fd5b50610a956004803603810190610a9091906148f3565b61240e565b604051610aa29190614f1e565b60405180910390f35b348015610ab757600080fd5b50610ad26004803603810190610acd91906148f3565b6124db565b604051610adf9190614f1e565b60405180910390f35b348015610af457600080fd5b50610b0f6004803603810190610b0a91906148b3565b6124fa565b005b348015610b1d57600080fd5b50610b2661267d565b604051610b339190614f1e565b60405180910390f35b348015610b4857600080fd5b50610b636004803603810190610b5e919061498d565b612690565b005b348015610b7157600080fd5b50610b8c6004803603810190610b8791906148b3565b612751565b005b348015610b9a57600080fd5b50610bb56004803603810190610bb09190614933565b612841565b005b348015610bc357600080fd5b50610bcc61292a565b604051610bd99190614e50565b60405180910390f35b348015610bee57600080fd5b50610c096004803603810190610c049190614773565b612950565b604051610c169190614f1e565b60405180910390f35b348015610c2b57600080fd5b50610c466004803603810190610c4191906149cd565b612970565b005b348015610c5457600080fd5b50610c5d612a98565b604051610c6a9190615156565b60405180910390f35b348015610c7f57600080fd5b50610c9a6004803603810190610c959190614773565b612a9e565b604051610ca79190614f1e565b60405180910390f35b348015610cbc57600080fd5b50610cd76004803603810190610cd291906147cd565b612abe565b604051610ce49190615156565b60405180910390f35b348015610cf957600080fd5b50610d02612b45565b005b348015610d1057600080fd5b50610d2b6004803603810190610d269190614933565b612c89565b005b348015610d3957600080fd5b50610d546004803603810190610d4f9190614773565b612d3b565b005b348015610d6257600080fd5b50610d6b612efd565b604051610d789190614f1e565b60405180910390f35b606060018054610d909061546d565b80601f0160208091040260200160405190810160405280929190818152602001828054610dbc9061546d565b8015610e095780601f10610dde57610100808354040283529160200191610e09565b820191906000526020600020905b815481529060010190602001808311610dec57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610e4b610e44613033565b848461303b565b6001905092915050565b610e5d613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee190615076565b60405180910390fd5b801515600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7490615016565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601754905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611036613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ba90615076565b60405180910390fd5b8260118190555081601281905550806013819055506111036013546110f5601254601154612fd590919063ffffffff16565b612fd590919063ffffffff16565b601581905550505050565b611116613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119a90615076565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611270848484613206565b506113328461127d613033565b61132d856040518060600160405280602881526020016159bd60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112e3613033565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a199092919063ffffffff16565b61303b565b600190509392505050565b611345613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c990615076565b60405180910390fd5b82600e8190555081600f8190555080601081905550611412601054611404600f54600e54612fd590919063ffffffff16565b612fd590919063ffffffff16565b601481905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006114ba61146f7f0000000000000000000000000000000000000000000000000000000000000000611f36565b6114ac61149b7f0000000000000000000000000000000000000000000000000000000000000000611f36565b601754613a7d90919063ffffffff16565b613a7d90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b6114de613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461156b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156290615076565b60405180910390fd5b801515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156115fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f590615016565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611702611666613033565b846116fd8560076000611677613033565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fd590919063ffffffff16565b61303b565b6001905092915050565b611714613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179890615076565b60405180910390fd5b8060188190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b6117d3613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611860576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185790615076565b60405180910390fd5b80601b60016101000a81548160ff02191690831515021790555050565b601e60159054906101000a900460ff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b60006118ba613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193e90615076565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561199257600080fd5b505afa1580156119a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ca91906147a0565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611a2c57600080fd5b505afa158015611a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6491906147a0565b6040518363ffffffff1660e01b8152600401611a81929190614e6b565b60206040518083038186803b158015611a9957600080fd5b505afa158015611aad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad191906147a0565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c92578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611b4e57600080fd5b505afa158015611b62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8691906147a0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611be857600080fd5b505afa158015611bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2091906147a0565b6040518363ffffffff1660e01b8152600401611c3d929190614e6b565b602060405180830381600087803b158015611c5757600080fd5b505af1158015611c6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8f91906147a0565b91505b81601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611d9c613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2090615076565b60405180910390fd5b8060198190555050565b601b60009054906101000a900460ff1681565b611e4e613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed290615076565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611f87613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200b90615076565b60405180910390fd5b80601a8190555050565b601b60039054906101000a900460ff1681565b612039613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bd90615076565b60405180910390fd5b82600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5481565b60195481565b601a5481565b6121ce613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225290615076565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6060600280546123659061546d565b80601f01602080910402602001604051908101604052809291908181526020018280546123919061546d565b80156123de5780601f106123b3576101008083540402835291602001916123de565b820191906000526020600020905b8154815290600101906020018083116123c157829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006124d161241b613033565b846124cc856040518060600160405280602581526020016159e56025913960076000612445613033565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a199092919063ffffffff16565b61303b565b6001905092915050565b60006124ef6124e8613033565b8484613206565b506001905092915050565b612502613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461258f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258690615076565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415612622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261990615016565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60029054906101000a900460ff1681565b612698613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271c90615076565b60405180910390fd5b81601b60026101000a81548160ff021916908315150217905550801561274d5742601c819055505b5050565b612759613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127dd90615076565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612849613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cd90615076565b60405180910390fd5b80601e60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161291f9190614f1e565b60405180910390a150565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b612978613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fc90615076565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612a40929190614e94565b602060405180830381600087803b158015612a5a57600080fd5b505af1158015612a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a929190614960565b50505050565b60185481565b600c6020528060005260406000206000915054906101000a900460ff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612b4d613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd190615076565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612c0090614e3b565b60006040518083038185875af1925050503d8060008114612c3d576040519150601f19603f3d011682016040523d82523d6000602084013e612c42565b606091505b5050905080612c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7d90615136565b60405180910390fd5b50565b612c91613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1590615076565b60405180910390fd5b80601b60006101000a81548160ff02191690831515021790555050565b612d43613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc790615076565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3790614fb6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601b60019054906101000a900460ff1681565b600080831415612f235760009050612f85565b60008284612f3191906152fd565b9050828482612f4091906152cc565b14612f80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7790615056565b60405180910390fd5b809150505b92915050565b6000612fcd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ac7565b905092915050565b6000808284612fe49190615276565b905083811015613029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302090614ff6565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156130ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a2906150d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561311b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311290614fd6565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516131f99190615156565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326e906150b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156132e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132de90614f76565b60405180910390fd5b6000821161332a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161332190615096565b60405180910390fd5b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133ce5750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61340d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340490615116565b60405180910390fd5b601b60029054906101000a900460ff16806134715750600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80613480575061347f6122ff565b5b6134bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134b6906150f6565b60405180910390fd5b610384601c546134cf9190615276565b421180156134ea5750601b60039054906101000a900460ff16155b80156134f957506000601c5414155b1561357a5761352860165461351a600f601754612f1090919063ffffffff16565b612f8b90919063ffffffff16565b60198190555061355860165461354a600f601754612f1090919063ffffffff16565b612f8b90919063ffffffff16565b601a819055506001601b60036101000a81548160ff0219169083151502179055505b601e60149054906101000a900460ff16156135a15761359a848484613b2a565b9050613a12565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136455750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561365d5750601b60009054906101000a900460ff165b156136a8576019548211156136a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161369e90615036565b60405180910390fd5b5b60006136b330611f36565b9050600060185482101590508080156136d95750601e60149054906101000a900460ff16155b801561372f5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137475750601e60159054906101000a900460ff165b1561375557613754613cfd565b5b6137de846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a199092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061382d8787613f6b565b6138415761383c8787876140d6565b613843565b845b9050601b60019054906101000a900460ff1680156138ab5750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561391057601a546138ce826138c089611f36565b612fd590919063ffffffff16565b111561390f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161390690614f96565b60405180910390fd5b5b61396281600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fd590919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a029190615156565b60405180910390a3600193505050505b9392505050565b6000838311158290613a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a589190614f54565b60405180910390fd5b5060008385613a709190615357565b9050809150509392505050565b6000613abf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613a19565b905092915050565b60008083118290613b0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b059190614f54565b60405180910390fd5b5060008385613b1d91906152cc565b9050809150509392505050565b6000613bb5826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a199092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c4a82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fd590919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613cea9190615156565b60405180910390a3600190509392505050565b6001601e60146101000a81548160ff0219169083151502179055506000613d2330611f36565b90506000811415613d345750613f4e565b6000613d4d601554601454612fd590919063ffffffff16565b90506000613d68601154600e54612fd590919063ffffffff16565b90506000613d83601254600f54612fd590919063ffffffff16565b90506000613dbf6002613db186613da3878a612f1090919063ffffffff16565b612f8b90919063ffffffff16565b612f8b90919063ffffffff16565b90506000613dd68287613a7d90919063ffffffff16565b90506000479050613de6826142fb565b6000613dfb8247613a7d90919063ffffffff16565b90506000613e25613e16600289612f8b90919063ffffffff16565b89613a7d90919063ffffffff16565b90506000613e616002613e5384613e458c88612f1090919063ffffffff16565b612f8b90919063ffffffff16565b612f8b90919063ffffffff16565b90506000613e8a83613e7c8a87612f1090919063ffffffff16565b612f8b90919063ffffffff16565b90506000613eb382613ea58588613a7d90919063ffffffff16565b613a7d90919063ffffffff16565b90506000821115613eeb57613eea600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683614586565b5b6000811115613f2157613f20600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682614586565b5b600083118015613f315750600088115b15613f4157613f4088846145d1565b5b5050505050505050505050505b6000601e60146101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061400e5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561401c57600190506140d0565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806140bd5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156140cb57600090506140d0565b600090505b92915050565b600080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561415b5761415460165461414660145486612f1090919063ffffffff16565b612f8b90919063ffffffff16565b90506141da565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141d9576141d66016546141c860155486612f1090919063ffffffff16565b612f8b90919063ffffffff16565b90505b5b60008111156142de5761423581600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fd590919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516142d59190615156565b60405180910390a35b6142f18184613a7d90919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff8111156143185761431761555b565b5b6040519080825280602002602001820160405280156143465781602001602082028036833780820191505090505b509050308160008151811061435e5761435d61552c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561440057600080fd5b505afa158015614414573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061443891906147a0565b8160018151811061444c5761444b61552c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506144b330601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461303b565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016145179594939291906151a1565b600060405180830381600087803b15801561453157600080fd5b505af1158015614545573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161457a929190615171565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156145cc573d6000803e3d6000fd5b505050565b6145fe30601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461303b565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161468796959493929190614ebd565b6060604051808303818588803b1580156146a057600080fd5b505af11580156146b4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906146d99190614aa0565b5050505050565b6000813590506146ef81615960565b92915050565b60008151905061470481615960565b92915050565b60008135905061471981615977565b92915050565b60008151905061472e81615977565b92915050565b6000813590506147438161598e565b92915050565b600081359050614758816159a5565b92915050565b60008151905061476d816159a5565b92915050565b6000602082840312156147895761478861558a565b5b6000614797848285016146e0565b91505092915050565b6000602082840312156147b6576147b561558a565b5b60006147c4848285016146f5565b91505092915050565b600080604083850312156147e4576147e361558a565b5b60006147f2858286016146e0565b9250506020614803858286016146e0565b9150509250929050565b6000806000606084860312156148265761482561558a565b5b6000614834868287016146e0565b9350506020614845868287016146e0565b9250506040614856868287016146e0565b9150509250925092565b6000806000606084860312156148795761487861558a565b5b6000614887868287016146e0565b9350506020614898868287016146e0565b92505060406148a986828701614749565b9150509250925092565b600080604083850312156148ca576148c961558a565b5b60006148d8858286016146e0565b92505060206148e98582860161470a565b9150509250929050565b6000806040838503121561490a5761490961558a565b5b6000614918858286016146e0565b925050602061492985828601614749565b9150509250929050565b6000602082840312156149495761494861558a565b5b60006149578482850161470a565b91505092915050565b6000602082840312156149765761497561558a565b5b60006149848482850161471f565b91505092915050565b600080604083850312156149a4576149a361558a565b5b60006149b28582860161470a565b92505060206149c38582860161470a565b9150509250929050565b6000806000606084860312156149e6576149e561558a565b5b60006149f486828701614734565b9350506020614a05868287016146e0565b9250506040614a1686828701614749565b9150509250925092565b600060208284031215614a3657614a3561558a565b5b6000614a4484828501614749565b91505092915050565b600080600060608486031215614a6657614a6561558a565b5b6000614a7486828701614749565b9350506020614a8586828701614749565b9250506040614a9686828701614749565b9150509250925092565b600080600060608486031215614ab957614ab861558a565b5b6000614ac78682870161475e565b9350506020614ad88682870161475e565b9250506040614ae98682870161475e565b9150509250925092565b6000614aff8383614b0b565b60208301905092915050565b614b148161538b565b82525050565b614b238161538b565b82525050565b6000614b3482615226565b614b3e8185615249565b9350614b4983615216565b8060005b83811015614b7a578151614b618882614af3565b9750614b6c8361523c565b925050600181019050614b4d565b5085935050505092915050565b614b908161539d565b82525050565b614b9f816153f2565b82525050565b614bae81615404565b82525050565b6000614bbf82615231565b614bc98185615265565b9350614bd981856020860161543a565b614be28161558f565b840191505092915050565b6000614bfa602383615265565b9150614c05826155a0565b604082019050919050565b6000614c1d601b83615265565b9150614c28826155ef565b602082019050919050565b6000614c40602683615265565b9150614c4b82615618565b604082019050919050565b6000614c63602283615265565b9150614c6e82615667565b604082019050919050565b6000614c86601b83615265565b9150614c91826156b6565b602082019050919050565b6000614ca9600d83615265565b9150614cb4826156df565b602082019050919050565b6000614ccc602883615265565b9150614cd782615708565b604082019050919050565b6000614cef602183615265565b9150614cfa82615757565b604082019050919050565b6000614d12602083615265565b9150614d1d826157a6565b602082019050919050565b6000614d35602983615265565b9150614d40826157cf565b604082019050919050565b6000614d58602583615265565b9150614d638261581e565b604082019050919050565b6000614d7b60008361525a565b9150614d868261586d565b600082019050919050565b6000614d9e602483615265565b9150614da982615870565b604082019050919050565b6000614dc1601b83615265565b9150614dcc826158bf565b602082019050919050565b6000614de4602d83615265565b9150614def826158e8565b604082019050919050565b6000614e07601483615265565b9150614e1282615937565b602082019050919050565b614e26816153db565b82525050565b614e35816153e5565b82525050565b6000614e4682614d6e565b9150819050919050565b6000602082019050614e656000830184614b1a565b92915050565b6000604082019050614e806000830185614b1a565b614e8d6020830184614b1a565b9392505050565b6000604082019050614ea96000830185614b1a565b614eb66020830184614e1d565b9392505050565b600060c082019050614ed26000830189614b1a565b614edf6020830188614e1d565b614eec6040830187614ba5565b614ef96060830186614ba5565b614f066080830185614b1a565b614f1360a0830184614e1d565b979650505050505050565b6000602082019050614f336000830184614b87565b92915050565b6000602082019050614f4e6000830184614b96565b92915050565b60006020820190508181036000830152614f6e8184614bb4565b905092915050565b60006020820190508181036000830152614f8f81614bed565b9050919050565b60006020820190508181036000830152614faf81614c10565b9050919050565b60006020820190508181036000830152614fcf81614c33565b9050919050565b60006020820190508181036000830152614fef81614c56565b9050919050565b6000602082019050818103600083015261500f81614c79565b9050919050565b6000602082019050818103600083015261502f81614c9c565b9050919050565b6000602082019050818103600083015261504f81614cbf565b9050919050565b6000602082019050818103600083015261506f81614ce2565b9050919050565b6000602082019050818103600083015261508f81614d05565b9050919050565b600060208201905081810360008301526150af81614d28565b9050919050565b600060208201905081810360008301526150cf81614d4b565b9050919050565b600060208201905081810360008301526150ef81614d91565b9050919050565b6000602082019050818103600083015261510f81614db4565b9050919050565b6000602082019050818103600083015261512f81614dd7565b9050919050565b6000602082019050818103600083015261514f81614dfa565b9050919050565b600060208201905061516b6000830184614e1d565b92915050565b60006040820190506151866000830185614e1d565b81810360208301526151988184614b29565b90509392505050565b600060a0820190506151b66000830188614e1d565b6151c36020830187614ba5565b81810360408301526151d58186614b29565b90506151e46060830185614b1a565b6151f16080830184614e1d565b9695505050505050565b60006020820190506152106000830184614e2c565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000615281826153db565b915061528c836153db565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156152c1576152c061549f565b5b828201905092915050565b60006152d7826153db565b91506152e2836153db565b9250826152f2576152f16154ce565b5b828204905092915050565b6000615308826153db565b9150615313836153db565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561534c5761534b61549f565b5b828202905092915050565b6000615362826153db565b915061536d836153db565b9250828210156153805761537f61549f565b5b828203905092915050565b6000615396826153bb565b9050919050565b60008115159050919050565b60006153b48261538b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006153fd82615416565b9050919050565b600061540f826153db565b9050919050565b600061542182615428565b9050919050565b6000615433826153bb565b9050919050565b60005b8381101561545857808201518184015260208101905061543d565b83811115615467576000848401525b50505050565b6000600282049050600182168061548557607f821691505b60208210811415615499576154986154fd565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782057616c6c6574204c696d697420457863656564656421210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4e6f74204368616e676564212100000000000000000000000000000000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f54726164652069732043757272656e746c792050617573656421210000000000600082015250565b7f4572726f723a20426c61636b6c69737420426f74732f436f6e7472616374732060008201527f6e6f7420416c6c6f776564212100000000000000000000000000000000000000602082015250565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b6159698161538b565b811461597457600080fd5b50565b6159808161539d565b811461598b57600080fd5b50565b615997816153a9565b81146159a257600080fd5b50565b6159ae816153db565b81146159b957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220113ddcbd1f13e2a2fa334ccd502911d4890cd0985aae47877bfc3febd72e641f64736f6c63430008070033

Deployed Bytecode

0x60806040526004361061036f5760003560e01c806375cb1bd1116101c6578063b37f80f8116100f7578063d2d7ad8311610095578063e6b2603b1161006f578063e6b2603b14610ced578063ee828db314610d04578063f2fde38b14610d2d578063f872858a14610d5657610376565b8063d2d7ad8314610c48578063dbac26e914610c73578063dd62ed3e14610cb057610376565b8063c49b9a80116100d1578063c49b9a8014610b8e578063c816841b14610bb7578063c867d60b14610be2578063cea9d26f14610c1f57610376565b8063b37f80f814610b11578063b38d323c14610b3c578063c16dd4a414610b6557610376565b80638da5cb5b1161016457806398e944c81161013e57806398e944c814610a43578063a457c2d714610a6e578063a9059cbb14610aab578063af9549e014610ae857610376565b80638da5cb5b146109c25780638f32d59b146109ed57806395d89b4114610a1857610376565b80637d1db4a5116101a05780637d1db4a514610906578063807c2d9c146109315780638236802e1461095c5780638b42507f1461098557610376565b806375cb1bd11461088757806375f0a874146108b0578063790ca413146108db57610376565b806338ec0b11116102a05780635881f3ef1161023e57806366a16cad1161021857806366a16cad146107cd57806370a08231146107f6578063728d41c914610833578063741c89071461085c57610376565b80635881f3ef1461073c5780635c85974f146107795780635e42358c146107a257610376565b80633ecad2711161027a5780633ecad2711461066e5780634974d88f146106ab5780634a74bb02146106d45780635342acb4146106ff57610376565b806338ec0b11146105df57806339509351146106085780633b97084a1461064557610376565b80631d865c301161030d57806325519cf2116102e757806325519cf21461053557806327c8f8351461055e5780632b112e4914610589578063313ce567146105b457610376565b80631d865c30146104b857806320365d5f146104e157806323b872dd146104f857610376565b806313ea1d891161034957806313ea1d891461040e5780631694505e1461043757806318160ddd14610462578063185870f91461048d57610376565b806306fdde031461037b5780630930907b146103a6578063095ea7b3146103d157610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d81565b60405161039d9190614f54565b60405180910390f35b3480156103b257600080fd5b506103bb610e13565b6040516103c89190614e50565b60405180910390f35b3480156103dd57600080fd5b506103f860048036038101906103f391906148f3565b610e37565b6040516104059190614f1e565b60405180910390f35b34801561041a57600080fd5b50610435600480360381019061043091906148b3565b610e55565b005b34801561044357600080fd5b5061044c610fd8565b6040516104599190614f39565b60405180910390f35b34801561046e57600080fd5b50610477610ffe565b6040516104849190615156565b60405180910390f35b34801561049957600080fd5b506104a2611008565b6040516104af9190614e50565b60405180910390f35b3480156104c457600080fd5b506104df60048036038101906104da9190614a4d565b61102e565b005b3480156104ed57600080fd5b506104f661110e565b005b34801561050457600080fd5b5061051f600480360381019061051a9190614860565b611263565b60405161052c9190614f1e565b60405180910390f35b34801561054157600080fd5b5061055c60048036038101906105579190614a4d565b61133d565b005b34801561056a57600080fd5b5061057361141d565b6040516105809190614e50565b60405180910390f35b34801561059557600080fd5b5061059e611441565b6040516105ab9190615156565b60405180910390f35b3480156105c057600080fd5b506105c96114bf565b6040516105d691906151fb565b60405180910390f35b3480156105eb57600080fd5b50610606600480360381019061060191906148b3565b6114d6565b005b34801561061457600080fd5b5061062f600480360381019061062a91906148f3565b611659565b60405161063c9190614f1e565b60405180910390f35b34801561065157600080fd5b5061066c60048036038101906106679190614a20565b61170c565b005b34801561067a57600080fd5b5061069560048036038101906106909190614773565b6117ab565b6040516106a29190614f1e565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd9190614933565b6117cb565b005b3480156106e057600080fd5b506106e961187d565b6040516106f69190614f1e565b60405180910390f35b34801561070b57600080fd5b5061072660048036038101906107219190614773565b611890565b6040516107339190614f1e565b60405180910390f35b34801561074857600080fd5b50610763600480360381019061075e9190614773565b6118b0565b6040516107709190614e50565b60405180910390f35b34801561078557600080fd5b506107a0600480360381019061079b9190614a20565b611d94565b005b3480156107ae57600080fd5b506107b7611e33565b6040516107c49190614f1e565b60405180910390f35b3480156107d957600080fd5b506107f460048036038101906107ef91906148b3565b611e46565b005b34801561080257600080fd5b5061081d60048036038101906108189190614773565b611f36565b60405161082a9190615156565b60405180910390f35b34801561083f57600080fd5b5061085a60048036038101906108559190614a20565b611f7f565b005b34801561086857600080fd5b5061087161201e565b60405161087e9190614f1e565b60405180910390f35b34801561089357600080fd5b506108ae60048036038101906108a9919061480d565b612031565b005b3480156108bc57600080fd5b506108c561218e565b6040516108d29190614e50565b60405180910390f35b3480156108e757600080fd5b506108f06121b4565b6040516108fd9190615156565b60405180910390f35b34801561091257600080fd5b5061091b6121ba565b6040516109289190615156565b60405180910390f35b34801561093d57600080fd5b506109466121c0565b6040516109539190615156565b60405180910390f35b34801561096857600080fd5b50610983600480360381019061097e91906148b3565b6121c6565b005b34801561099157600080fd5b506109ac60048036038101906109a79190614773565b6122b6565b6040516109b99190614f1e565b60405180910390f35b3480156109ce57600080fd5b506109d76122d6565b6040516109e49190614e50565b60405180910390f35b3480156109f957600080fd5b50610a026122ff565b604051610a0f9190614f1e565b60405180910390f35b348015610a2457600080fd5b50610a2d612356565b604051610a3a9190614f54565b60405180910390f35b348015610a4f57600080fd5b50610a586123e8565b604051610a659190614e50565b60405180910390f35b348015610a7a57600080fd5b50610a956004803603810190610a9091906148f3565b61240e565b604051610aa29190614f1e565b60405180910390f35b348015610ab757600080fd5b50610ad26004803603810190610acd91906148f3565b6124db565b604051610adf9190614f1e565b60405180910390f35b348015610af457600080fd5b50610b0f6004803603810190610b0a91906148b3565b6124fa565b005b348015610b1d57600080fd5b50610b2661267d565b604051610b339190614f1e565b60405180910390f35b348015610b4857600080fd5b50610b636004803603810190610b5e919061498d565b612690565b005b348015610b7157600080fd5b50610b8c6004803603810190610b8791906148b3565b612751565b005b348015610b9a57600080fd5b50610bb56004803603810190610bb09190614933565b612841565b005b348015610bc357600080fd5b50610bcc61292a565b604051610bd99190614e50565b60405180910390f35b348015610bee57600080fd5b50610c096004803603810190610c049190614773565b612950565b604051610c169190614f1e565b60405180910390f35b348015610c2b57600080fd5b50610c466004803603810190610c4191906149cd565b612970565b005b348015610c5457600080fd5b50610c5d612a98565b604051610c6a9190615156565b60405180910390f35b348015610c7f57600080fd5b50610c9a6004803603810190610c959190614773565b612a9e565b604051610ca79190614f1e565b60405180910390f35b348015610cbc57600080fd5b50610cd76004803603810190610cd291906147cd565b612abe565b604051610ce49190615156565b60405180910390f35b348015610cf957600080fd5b50610d02612b45565b005b348015610d1057600080fd5b50610d2b6004803603810190610d269190614933565b612c89565b005b348015610d3957600080fd5b50610d546004803603810190610d4f9190614773565b612d3b565b005b348015610d6257600080fd5b50610d6b612efd565b604051610d789190614f1e565b60405180910390f35b606060018054610d909061546d565b80601f0160208091040260200160405190810160405280929190818152602001828054610dbc9061546d565b8015610e095780601f10610dde57610100808354040283529160200191610e09565b820191906000526020600020905b815481529060010190602001808311610dec57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610e4b610e44613033565b848461303b565b6001905092915050565b610e5d613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee190615076565b60405180910390fd5b801515600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7490615016565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601754905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611036613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ba90615076565b60405180910390fd5b8260118190555081601281905550806013819055506111036013546110f5601254601154612fd590919063ffffffff16565b612fd590919063ffffffff16565b601581905550505050565b611116613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119a90615076565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611270848484613206565b506113328461127d613033565b61132d856040518060600160405280602881526020016159bd60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112e3613033565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a199092919063ffffffff16565b61303b565b600190509392505050565b611345613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c990615076565b60405180910390fd5b82600e8190555081600f8190555080601081905550611412601054611404600f54600e54612fd590919063ffffffff16565b612fd590919063ffffffff16565b601481905550505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006114ba61146f7f0000000000000000000000000000000000000000000000000000000000000000611f36565b6114ac61149b7f000000000000000000000000000000000000000000000000000000000000dead611f36565b601754613a7d90919063ffffffff16565b613a7d90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b6114de613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461156b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156290615076565b60405180910390fd5b801515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156115fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f590615016565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611702611666613033565b846116fd8560076000611677613033565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fd590919063ffffffff16565b61303b565b6001905092915050565b611714613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179890615076565b60405180910390fd5b8060188190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b6117d3613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611860576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185790615076565b60405180910390fd5b80601b60016101000a81548160ff02191690831515021790555050565b601e60159054906101000a900460ff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b60006118ba613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193e90615076565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561199257600080fd5b505afa1580156119a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ca91906147a0565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611a2c57600080fd5b505afa158015611a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6491906147a0565b6040518363ffffffff1660e01b8152600401611a81929190614e6b565b60206040518083038186803b158015611a9957600080fd5b505afa158015611aad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad191906147a0565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c92578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611b4e57600080fd5b505afa158015611b62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8691906147a0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611be857600080fd5b505afa158015611bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2091906147a0565b6040518363ffffffff1660e01b8152600401611c3d929190614e6b565b602060405180830381600087803b158015611c5757600080fd5b505af1158015611c6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8f91906147a0565b91505b81601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611d9c613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2090615076565b60405180910390fd5b8060198190555050565b601b60009054906101000a900460ff1681565b611e4e613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed290615076565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611f87613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200b90615076565b60405180910390fd5b80601a8190555050565b601b60039054906101000a900460ff1681565b612039613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bd90615076565b60405180910390fd5b82600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5481565b60195481565b601a5481565b6121ce613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225290615076565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6060600280546123659061546d565b80601f01602080910402602001604051908101604052809291908181526020018280546123919061546d565b80156123de5780601f106123b3576101008083540402835291602001916123de565b820191906000526020600020905b8154815290600101906020018083116123c157829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006124d161241b613033565b846124cc856040518060600160405280602581526020016159e56025913960076000612445613033565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a199092919063ffffffff16565b61303b565b6001905092915050565b60006124ef6124e8613033565b8484613206565b506001905092915050565b612502613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461258f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258690615076565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415612622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261990615016565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60029054906101000a900460ff1681565b612698613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271c90615076565b60405180910390fd5b81601b60026101000a81548160ff021916908315150217905550801561274d5742601c819055505b5050565b612759613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127dd90615076565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612849613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cd90615076565b60405180910390fd5b80601e60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161291f9190614f1e565b60405180910390a150565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b612978613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fc90615076565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612a40929190614e94565b602060405180830381600087803b158015612a5a57600080fd5b505af1158015612a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a929190614960565b50505050565b60185481565b600c6020528060005260406000206000915054906101000a900460ff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612b4d613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd190615076565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612c0090614e3b565b60006040518083038185875af1925050503d8060008114612c3d576040519150601f19603f3d011682016040523d82523d6000602084013e612c42565b606091505b5050905080612c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7d90615136565b60405180910390fd5b50565b612c91613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1590615076565b60405180910390fd5b80601b60006101000a81548160ff02191690831515021790555050565b612d43613033565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc790615076565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3790614fb6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601b60019054906101000a900460ff1681565b600080831415612f235760009050612f85565b60008284612f3191906152fd565b9050828482612f4091906152cc565b14612f80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7790615056565b60405180910390fd5b809150505b92915050565b6000612fcd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ac7565b905092915050565b6000808284612fe49190615276565b905083811015613029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302090614ff6565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156130ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a2906150d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561311b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311290614fd6565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516131f99190615156565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326e906150b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156132e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132de90614f76565b60405180910390fd5b6000821161332a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161332190615096565b60405180910390fd5b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133ce5750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61340d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340490615116565b60405180910390fd5b601b60029054906101000a900460ff16806134715750600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80613480575061347f6122ff565b5b6134bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134b6906150f6565b60405180910390fd5b610384601c546134cf9190615276565b421180156134ea5750601b60039054906101000a900460ff16155b80156134f957506000601c5414155b1561357a5761352860165461351a600f601754612f1090919063ffffffff16565b612f8b90919063ffffffff16565b60198190555061355860165461354a600f601754612f1090919063ffffffff16565b612f8b90919063ffffffff16565b601a819055506001601b60036101000a81548160ff0219169083151502179055505b601e60149054906101000a900460ff16156135a15761359a848484613b2a565b9050613a12565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136455750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561365d5750601b60009054906101000a900460ff165b156136a8576019548211156136a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161369e90615036565b60405180910390fd5b5b60006136b330611f36565b9050600060185482101590508080156136d95750601e60149054906101000a900460ff16155b801561372f5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137475750601e60159054906101000a900460ff165b1561375557613754613cfd565b5b6137de846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a199092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061382d8787613f6b565b6138415761383c8787876140d6565b613843565b845b9050601b60019054906101000a900460ff1680156138ab5750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561391057601a546138ce826138c089611f36565b612fd590919063ffffffff16565b111561390f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161390690614f96565b60405180910390fd5b5b61396281600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fd590919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a029190615156565b60405180910390a3600193505050505b9392505050565b6000838311158290613a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a589190614f54565b60405180910390fd5b5060008385613a709190615357565b9050809150509392505050565b6000613abf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613a19565b905092915050565b60008083118290613b0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b059190614f54565b60405180910390fd5b5060008385613b1d91906152cc565b9050809150509392505050565b6000613bb5826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a199092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c4a82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fd590919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613cea9190615156565b60405180910390a3600190509392505050565b6001601e60146101000a81548160ff0219169083151502179055506000613d2330611f36565b90506000811415613d345750613f4e565b6000613d4d601554601454612fd590919063ffffffff16565b90506000613d68601154600e54612fd590919063ffffffff16565b90506000613d83601254600f54612fd590919063ffffffff16565b90506000613dbf6002613db186613da3878a612f1090919063ffffffff16565b612f8b90919063ffffffff16565b612f8b90919063ffffffff16565b90506000613dd68287613a7d90919063ffffffff16565b90506000479050613de6826142fb565b6000613dfb8247613a7d90919063ffffffff16565b90506000613e25613e16600289612f8b90919063ffffffff16565b89613a7d90919063ffffffff16565b90506000613e616002613e5384613e458c88612f1090919063ffffffff16565b612f8b90919063ffffffff16565b612f8b90919063ffffffff16565b90506000613e8a83613e7c8a87612f1090919063ffffffff16565b612f8b90919063ffffffff16565b90506000613eb382613ea58588613a7d90919063ffffffff16565b613a7d90919063ffffffff16565b90506000821115613eeb57613eea600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683614586565b5b6000811115613f2157613f20600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682614586565b5b600083118015613f315750600088115b15613f4157613f4088846145d1565b5b5050505050505050505050505b6000601e60146101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061400e5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561401c57600190506140d0565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806140bd5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156140cb57600090506140d0565b600090505b92915050565b600080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561415b5761415460165461414660145486612f1090919063ffffffff16565b612f8b90919063ffffffff16565b90506141da565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141d9576141d66016546141c860155486612f1090919063ffffffff16565b612f8b90919063ffffffff16565b90505b5b60008111156142de5761423581600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fd590919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516142d59190615156565b60405180910390a35b6142f18184613a7d90919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff8111156143185761431761555b565b5b6040519080825280602002602001820160405280156143465781602001602082028036833780820191505090505b509050308160008151811061435e5761435d61552c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561440057600080fd5b505afa158015614414573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061443891906147a0565b8160018151811061444c5761444b61552c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506144b330601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461303b565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016145179594939291906151a1565b600060405180830381600087803b15801561453157600080fd5b505af1158015614545573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161457a929190615171565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156145cc573d6000803e3d6000fd5b505050565b6145fe30601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461303b565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161468796959493929190614ebd565b6060604051808303818588803b1580156146a057600080fd5b505af11580156146b4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906146d99190614aa0565b5050505050565b6000813590506146ef81615960565b92915050565b60008151905061470481615960565b92915050565b60008135905061471981615977565b92915050565b60008151905061472e81615977565b92915050565b6000813590506147438161598e565b92915050565b600081359050614758816159a5565b92915050565b60008151905061476d816159a5565b92915050565b6000602082840312156147895761478861558a565b5b6000614797848285016146e0565b91505092915050565b6000602082840312156147b6576147b561558a565b5b60006147c4848285016146f5565b91505092915050565b600080604083850312156147e4576147e361558a565b5b60006147f2858286016146e0565b9250506020614803858286016146e0565b9150509250929050565b6000806000606084860312156148265761482561558a565b5b6000614834868287016146e0565b9350506020614845868287016146e0565b9250506040614856868287016146e0565b9150509250925092565b6000806000606084860312156148795761487861558a565b5b6000614887868287016146e0565b9350506020614898868287016146e0565b92505060406148a986828701614749565b9150509250925092565b600080604083850312156148ca576148c961558a565b5b60006148d8858286016146e0565b92505060206148e98582860161470a565b9150509250929050565b6000806040838503121561490a5761490961558a565b5b6000614918858286016146e0565b925050602061492985828601614749565b9150509250929050565b6000602082840312156149495761494861558a565b5b60006149578482850161470a565b91505092915050565b6000602082840312156149765761497561558a565b5b60006149848482850161471f565b91505092915050565b600080604083850312156149a4576149a361558a565b5b60006149b28582860161470a565b92505060206149c38582860161470a565b9150509250929050565b6000806000606084860312156149e6576149e561558a565b5b60006149f486828701614734565b9350506020614a05868287016146e0565b9250506040614a1686828701614749565b9150509250925092565b600060208284031215614a3657614a3561558a565b5b6000614a4484828501614749565b91505092915050565b600080600060608486031215614a6657614a6561558a565b5b6000614a7486828701614749565b9350506020614a8586828701614749565b9250506040614a9686828701614749565b9150509250925092565b600080600060608486031215614ab957614ab861558a565b5b6000614ac78682870161475e565b9350506020614ad88682870161475e565b9250506040614ae98682870161475e565b9150509250925092565b6000614aff8383614b0b565b60208301905092915050565b614b148161538b565b82525050565b614b238161538b565b82525050565b6000614b3482615226565b614b3e8185615249565b9350614b4983615216565b8060005b83811015614b7a578151614b618882614af3565b9750614b6c8361523c565b925050600181019050614b4d565b5085935050505092915050565b614b908161539d565b82525050565b614b9f816153f2565b82525050565b614bae81615404565b82525050565b6000614bbf82615231565b614bc98185615265565b9350614bd981856020860161543a565b614be28161558f565b840191505092915050565b6000614bfa602383615265565b9150614c05826155a0565b604082019050919050565b6000614c1d601b83615265565b9150614c28826155ef565b602082019050919050565b6000614c40602683615265565b9150614c4b82615618565b604082019050919050565b6000614c63602283615265565b9150614c6e82615667565b604082019050919050565b6000614c86601b83615265565b9150614c91826156b6565b602082019050919050565b6000614ca9600d83615265565b9150614cb4826156df565b602082019050919050565b6000614ccc602883615265565b9150614cd782615708565b604082019050919050565b6000614cef602183615265565b9150614cfa82615757565b604082019050919050565b6000614d12602083615265565b9150614d1d826157a6565b602082019050919050565b6000614d35602983615265565b9150614d40826157cf565b604082019050919050565b6000614d58602583615265565b9150614d638261581e565b604082019050919050565b6000614d7b60008361525a565b9150614d868261586d565b600082019050919050565b6000614d9e602483615265565b9150614da982615870565b604082019050919050565b6000614dc1601b83615265565b9150614dcc826158bf565b602082019050919050565b6000614de4602d83615265565b9150614def826158e8565b604082019050919050565b6000614e07601483615265565b9150614e1282615937565b602082019050919050565b614e26816153db565b82525050565b614e35816153e5565b82525050565b6000614e4682614d6e565b9150819050919050565b6000602082019050614e656000830184614b1a565b92915050565b6000604082019050614e806000830185614b1a565b614e8d6020830184614b1a565b9392505050565b6000604082019050614ea96000830185614b1a565b614eb66020830184614e1d565b9392505050565b600060c082019050614ed26000830189614b1a565b614edf6020830188614e1d565b614eec6040830187614ba5565b614ef96060830186614ba5565b614f066080830185614b1a565b614f1360a0830184614e1d565b979650505050505050565b6000602082019050614f336000830184614b87565b92915050565b6000602082019050614f4e6000830184614b96565b92915050565b60006020820190508181036000830152614f6e8184614bb4565b905092915050565b60006020820190508181036000830152614f8f81614bed565b9050919050565b60006020820190508181036000830152614faf81614c10565b9050919050565b60006020820190508181036000830152614fcf81614c33565b9050919050565b60006020820190508181036000830152614fef81614c56565b9050919050565b6000602082019050818103600083015261500f81614c79565b9050919050565b6000602082019050818103600083015261502f81614c9c565b9050919050565b6000602082019050818103600083015261504f81614cbf565b9050919050565b6000602082019050818103600083015261506f81614ce2565b9050919050565b6000602082019050818103600083015261508f81614d05565b9050919050565b600060208201905081810360008301526150af81614d28565b9050919050565b600060208201905081810360008301526150cf81614d4b565b9050919050565b600060208201905081810360008301526150ef81614d91565b9050919050565b6000602082019050818103600083015261510f81614db4565b9050919050565b6000602082019050818103600083015261512f81614dd7565b9050919050565b6000602082019050818103600083015261514f81614dfa565b9050919050565b600060208201905061516b6000830184614e1d565b92915050565b60006040820190506151866000830185614e1d565b81810360208301526151988184614b29565b90509392505050565b600060a0820190506151b66000830188614e1d565b6151c36020830187614ba5565b81810360408301526151d58186614b29565b90506151e46060830185614b1a565b6151f16080830184614e1d565b9695505050505050565b60006020820190506152106000830184614e2c565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000615281826153db565b915061528c836153db565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156152c1576152c061549f565b5b828201905092915050565b60006152d7826153db565b91506152e2836153db565b9250826152f2576152f16154ce565b5b828204905092915050565b6000615308826153db565b9150615313836153db565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561534c5761534b61549f565b5b828202905092915050565b6000615362826153db565b915061536d836153db565b9250828210156153805761537f61549f565b5b828203905092915050565b6000615396826153bb565b9050919050565b60008115159050919050565b60006153b48261538b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006153fd82615416565b9050919050565b600061540f826153db565b9050919050565b600061542182615428565b9050919050565b6000615433826153bb565b9050919050565b60005b8381101561545857808201518184015260208101905061543d565b83811115615467576000848401525b50505050565b6000600282049050600182168061548557607f821691505b60208210811415615499576154986154fd565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782057616c6c6574204c696d697420457863656564656421210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4e6f74204368616e676564212100000000000000000000000000000000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f54726164652069732043757272656e746c792050617573656421210000000000600082015250565b7f4572726f723a20426c61636b6c69737420426f74732f436f6e7472616374732060008201527f6e6f7420416c6c6f776564212100000000000000000000000000000000000000602082015250565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b6159698161538b565b811461597457600080fd5b50565b6159808161539d565b811461598b57600080fd5b50565b615997816153a9565b81146159a257600080fd5b50565b6159ae816153db565b81146159b957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220113ddcbd1f13e2a2fa334ccd502911d4890cd0985aae47877bfc3febd72e641f64736f6c63430008070033

Deployed Bytecode Sourcemap

13918:16847:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17858:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14448:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19028:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29159:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15794:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18135:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14237:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28201:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5594:231;;;;;;;;;;;;;:::i;:::-;;19979:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27891:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14360:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19546:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18044:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28953:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18525:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29353:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14726:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27780:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15909:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14669:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30012:748;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29599:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15615:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27545:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29485:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15735:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28522:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14155:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15763:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15448:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15533:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26879:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14837:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5269:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5494:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17949:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14319:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18751:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19804:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28752:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15698:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27386:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29887:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29708:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15842:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14778:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27248:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15376:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14892:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18374:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27032:176;;;;;;;;;;;;;:::i;:::-;;27676:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5833:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15654:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17858:83;17895:13;17928:5;17921:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17858:83;:::o;14448:81::-;;;:::o;19028:161::-;19103:4;19120:39;19129:12;:10;:12::i;:::-;19143:7;19152:6;19120:8;:39::i;:::-;19177:4;19170:11;;19028:161;;;;:::o;29159:186::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29271:7:::1;29246:32;;:15;:21;29262:4;29246:21;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;29238:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;29330:7;29306:15;:21;29322:4;29306:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;29159:186:::0;;:::o;15794:41::-;;;;;;;;;;;;;:::o;18135:100::-;18188:7;18215:12;;18208:19;;18135:100;:::o;14237:75::-;;;;;;;;;;;;;:::o;28201:313::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28329:6:::1;28309:17;:26;;;;28366:10;28346:17;:30;;;;28407:13;28387:17;:33;;;;28443:63;28488:17;;28443:40;28465:17;;28443;;:21;;:40;;;;:::i;:::-;:44;;:63;;;;:::i;:::-;28431:9;:75;;;;28201:313:::0;;;:::o;5594:231::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5702:42:::1;5665:81;;5686:6;::::0;::::1;;;;;;;;5665:81;;;;;;;;;;;;5774:42;5757:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;5594:231::o:0;19979:313::-;20077:4;20094:36;20104:6;20112:9;20123:6;20094:9;:36::i;:::-;;20141:121;20150:6;20158:12;:10;:12::i;:::-;20172:89;20210:6;20172:89;;;;;;;;;;;;;;;;;:11;:19;20184:6;20172:19;;;;;;;;;;;;;;;:33;20192:12;:10;:12::i;:::-;20172:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;20141:8;:121::i;:::-;20280:4;20273:11;;19979:313;;;;;:::o;27891:302::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28014:6:::1;27995:16;:25;;;;28050:10;28031:16;:29;;;;28090:13;28071:16;:32;;;;28125:60;28168:16;;28125:38;28146:16;;28125;;:20;;:38;;;;:::i;:::-;:42;;:60;;;;:::i;:::-;28114:8;:71;;;;27891:302:::0;;;:::o;14360:81::-;;;:::o;19546:156::-;19599:7;19626:68;19671:22;19681:11;19671:9;:22::i;:::-;19626:40;19643:22;19653:11;19643:9;:22::i;:::-;19626:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;19619:75;;19546:156;:::o;18044:83::-;18085:5;18110:9;;;;;;;;;;;18103:16;;18044:83;:::o;28953:198::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29073:7:::1;29044:36;;:19;:25;29064:4;29044:25;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;29036:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;29136:7;29108:19;:25;29128:4;29108:25;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;28953:198:::0;;:::o;18525:218::-;18613:4;18630:83;18639:12;:10;:12::i;:::-;18653:7;18662:50;18701:10;18662:11;:25;18674:12;:10;:12::i;:::-;18662:25;;;;;;;;;;;;;;;:34;18688:7;18662:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18630:8;:83::i;:::-;18731:4;18724:11;;18525:218;;;;:::o;29353:124::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29461:8:::1;29435:23;:34;;;;29353:124:::0;:::o;14726:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;27780:103::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27868:7:::1;27849:16;;:26;;;;;;;;;;;;;;;;;;27780:103:::0;:::o;15909:40::-;;;;;;;;;;;;;:::o;14669:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;30012:748::-;30092:22;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30129:35:::1;30186:16;30129:74;;30252:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30234:53;;;30296:4;30303:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30234:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30217:110;;30369:1;30343:28;;:14;:28;;;30340:225;;;30457:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30439:74;;;30522:4;30529:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30439:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30422:131;;30340:225;30591:14;30577:11;;:28;;;;;;;;;;;;;;;;;;30657:16;30639:15;;:34;;;;;;;;;;;;;;;;;;30748:4;30711:12;:34;30732:11;;;;;;;;;;;30711:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;30116:644;30012:748:::0;;;:::o;29599:101::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29684:8:::1;29669:12;:23;;;;29599:101:::0;:::o;15615:32::-;;;;;;;;;;;;;:::o;27545:123::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27653:7:::1;27631:13;:19;27645:4;27631:19;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;27545:123:::0;;:::o;18243:::-;18309:7;18335:9;:18;18345:7;18335:18;;;;;;;;;;;;;;;;18328:25;;18243:123;;;:::o;29485:106::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29575:8:::1;29562:10;:21;;;;29485:106:::0;:::o;15735:21::-;;;;;;;;;;;;;:::o;28522:222::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28646:7:::1;28628:15;;:25;;;;;;;;;;;;;;;;;;28682:10;28664:15;;:28;;;;;;;;;;;;;;;;;;28723:13;28703:17;;:33;;;;;;;;;;;;;;;;;;28522:222:::0;;;:::o;14155:75::-;;;;;;;;;;;;;:::o;15763:22::-;;;;:::o;15448:67::-;;;;:::o;15533:65::-;;;;:::o;26879:112::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26976:7:::1;26956:11;:17;26968:4;26956:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;26879:112:::0;;:::o;14837:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;5269:79::-;5307:7;5334:6;;;;;;;;;;;5327:13;;5269:79;:::o;5494:92::-;5534:4;5572:6;;;;;;;;;;;5558:20;;:10;:20;;;5551:27;;5494:92;:::o;17949:87::-;17988:13;18021:7;18014:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17949:87;:::o;14319:32::-;;;;;;;;;;;;;:::o;18751:269::-;18844:4;18861:129;18870:12;:10;:12::i;:::-;18884:7;18893:96;18932:15;18893:96;;;;;;;;;;;;;;;;;:11;:25;18905:12;:10;:12::i;:::-;18893:25;;;;;;;;;;;;;;;:34;18919:7;18893:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;18861:8;:129::i;:::-;19008:4;19001:11;;18751:269;;;;:::o;19804:167::-;19882:4;19899:42;19909:12;:10;:12::i;:::-;19923:9;19934:6;19899:9;:42::i;:::-;;19959:4;19952:11;;19804:167;;;;:::o;28752:193::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28869:7:::1;28842:34;;:17;:23;28860:4;28842:23;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;28834:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;28930:7;28904:17;:23;28922:4;28904:23;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;28752:193:::0;;:::o;15698:30::-;;;;;;;;;;;;;:::o;27386:151::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27476:7:::1;27455:18;;:28;;;;;;;;;;;;;;;;;;27497:2;27494:35;;;27514:15;27501:10;:28;;;;27494:35;27386:151:::0;;:::o;29887:117::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29989:7:::1;29967:12;:19;29980:5;29967:19;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;29887:117:::0;;:::o;29708:171::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29809:8:::1;29785:21;;:32;;;;;;;;;;;;;;;;;;29833:38;29862:8;29833:38;;;;;;:::i;:::-;;;;;;;;29708:171:::0;:::o;15842:26::-;;;;;;;;;;;;;:::o;14778:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;27248:130::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27340:3:::1;:12;;;27353:9;27363:6;27340:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27248:130:::0;;;:::o;15376:63::-;;;;:::o;14892:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;18374:143::-;18455:7;18482:11;:18;18494:5;18482:18;;;;;;;;;;;;;;;:27;18501:7;18482:27;;;;;;;;;;;;;;;;18475:34;;18374:143;;;;:::o;27032:176::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27085:7:::1;27105:10;27097:24;;27129:21;27097:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27084:71;;;27174:2;27166:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;27072:136;27032:176::o:0;27676:96::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27757:7:::1;27741:13;;:23;;;;;;;;;;;;;;;;;;27676:96:::0;:::o;5833:244::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5942:1:::1;5922:22;;:8;:22;;;;5914:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6032:8;6003:38;;6024:6;::::0;::::1;;;;;;;;6003:38;;;;;;;;;;;;6061:8;6052:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;5833:244:::0;:::o;15654:35::-;;;;;;;;;;;;;:::o;1579:250::-;1637:7;1666:1;1661;:6;1657:47;;;1691:1;1684:8;;;;1657:47;1716:9;1732:1;1728;:5;;;;:::i;:::-;1716:17;;1761:1;1756;1752;:5;;;;:::i;:::-;:10;1744:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1820:1;1813:8;;;1579:250;;;;;:::o;1837:132::-;1895:7;1922:39;1926:1;1929;1922:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1915:46;;1837:132;;;;:::o;1046:181::-;1104:7;1124:9;1140:1;1136;:5;;;;:::i;:::-;1124:17;;1165:1;1160;:6;;1152:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1218:1;1211:8;;;1046:181;;;;:::o;97:115::-;150:15;193:10;178:26;;97:115;:::o;19197:337::-;19307:1;19290:19;;:5;:19;;;;19282:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19388:1;19369:21;;:7;:21;;;;19361:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19472:6;19442:11;:18;19454:5;19442:18;;;;;;;;;;;;;;;:27;19461:7;19442:27;;;;;;;;;;;;;;;:36;;;;19510:7;19494:32;;19503:5;19494:32;;;19519:6;19494:32;;;;;;:::i;:::-;;;;;;;;19197:337;;;:::o;20300:2186::-;20387:4;20432:1;20414:20;;:6;:20;;;;20406:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;20516:1;20495:23;;:9;:23;;;;20487:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;20586:1;20577:6;:10;20569:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20653:11;:19;20665:6;20653:19;;;;;;;;;;;;;;;;;;;;;;;;;20652:20;:47;;;;;20677:11;:22;20689:9;20677:22;;;;;;;;;;;;;;;;;;;;;;;;;20676:23;20652:47;20644:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;20767:18;;;;;;;;;;;:47;;;;20789:13;:25;20803:10;20789:25;;;;;;;;;;;;;;;;;;;;;;;;;20767:47;:60;;;;20818:9;:7;:9::i;:::-;20767:60;20759:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;20925:10;20912;;:23;;;;:::i;:::-;20894:15;:41;20893:57;;;;;20941:9;;;;;;;;;;;20940:10;20893:57;:78;;;;;20969:1;20955:10;;:15;;20893:78;20890:294;;;21004:37;21029:11;;21004:20;21021:2;21004:12;;:16;;:20;;;;:::i;:::-;:24;;:37;;;;:::i;:::-;20988:12;:53;;;;21080:37;21105:11;;21080:20;21097:2;21080:12;;:16;;:20;;;;:::i;:::-;:24;;:37;;;;:::i;:::-;21067:10;:50;;;;21154:4;21142:9;;:16;;;;;;;;;;;;;;;;;;20890:294;21209:16;;;;;;;;;;;21206:1273;;;21259:41;21274:6;21282:9;21293:6;21259:14;:41::i;:::-;21252:48;;;;21206:1273;21358:15;:23;21374:6;21358:23;;;;;;;;;;;;;;;;;;;;;;;;;21357:24;:55;;;;;21386:15;:26;21402:9;21386:26;;;;;;;;;;;;;;;;;;;;;;;;;21385:27;21357:55;:72;;;;;21416:13;;;;;;;;;;;21357:72;21354:187;;;21468:12;;21458:6;:22;;21450:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21354:187;21558:28;21589:24;21607:4;21589:9;:24::i;:::-;21558:55;;21628:28;21683:23;;21659:20;:47;;21628:78;;21739:23;:44;;;;;21767:16;;;;;;;;;;;21766:17;21739:44;:69;;;;;21788:12;:20;21801:6;21788:20;;;;;;;;;;;;;;;;;;;;;;;;;21787:21;21739:69;:94;;;;;21812:21;;;;;;;;;;;21739:94;21735:165;;;21868:16;:14;:16::i;:::-;21735:165;21936:53;21958:6;21936:53;;;;;;;;;;;;;;;;;:9;:17;21946:6;21936:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;21916:9;:17;21926:6;21916:17;;;;;;;;;;;;;;;:73;;;;22006:19;22028:31;22042:6;22049:9;22028:13;:31::i;:::-;:77;;22071:34;22079:6;22087:9;22098:6;22071:7;:34::i;:::-;22028:77;;;22062:6;22028:77;22006:99;;22125:16;;;;;;;;;;;:51;;;;;22146:19;:30;22166:9;22146:30;;;;;;;;;;;;;;;;;;;;;;;;;22145:31;22125:51;22122:181;;;22246:10;;22205:37;22230:11;22205:20;22215:9;22205;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;22197:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;22122:181;22342:37;22367:11;22342:9;:20;22352:9;22342:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;22319:9;:20;22329:9;22319:20;;;;;;;;;;;;;;;:60;;;;22418:9;22401:40;;22410:6;22401:40;;;22429:11;22401:40;;;;;;:::i;:::-;;;;;;;;22463:4;22456:11;;;;;20300:2186;;;;;;:::o;1379:192::-;1465:7;1498:1;1493;:6;;1501:12;1485:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1525:9;1541:1;1537;:5;;;;:::i;:::-;1525:17;;1562:1;1555:8;;;1379:192;;;;;:::o;1235:136::-;1293:7;1320:43;1324:1;1327;1320:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1313:50;;1235:136;;;;:::o;1977:278::-;2063:7;2095:1;2091;:5;2098:12;2083:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2122:9;2138:1;2134;:5;;;;:::i;:::-;2122:17;;2246:1;2239:8;;;1977:278;;;;;:::o;22494:330::-;22587:4;22624:53;22646:6;22624:53;;;;;;;;;;;;;;;;;:9;:17;22634:6;22624:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;22604:9;:17;22614:6;22604:17;;;;;;;;;;;;;;;:73;;;;22711:32;22736:6;22711:9;:20;22721:9;22711:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;22688:9;:20;22698:9;22688:20;;;;;;;;;;;;;;;:55;;;;22776:9;22759:35;;22768:6;22759:35;;;22787:6;22759:35;;;;;;:::i;:::-;;;;;;;;22812:4;22805:11;;22494:330;;;;;:::o;22832:1425::-;16393:4;16374:16;;:23;;;;;;;;;;;;;;;;;;22891::::1;22917:24;22935:4;22917:9;:24::i;:::-;22891:50;;22976:1;22957:15;:20;22954:32;;;22979:7;;;22954:32;22998:19;23020:23;23033:9;;23020:8;;:12;;:23;;;;:::i;:::-;22998:45;;23054:23;23080:39;23101:17;;23080:16;;:20;;:39;;;;:::i;:::-;23054:65;;23130:23;23156:39;23177:17;;23156:16;;:20;;:39;;;;:::i;:::-;23130:65;;23208:19;23230:60;23288:1;23230:53;23271:11;23230:36;23250:15;23230;:19;;:36;;;;:::i;:::-;:40;;:53;;;;:::i;:::-;:57;;:60;;;;:::i;:::-;23208:82;;23301:21;23325:32;23345:11;23325:15;:19;;:32;;;;:::i;:::-;23301:56;;23370:22;23395:21;23370:46;;23427:31;23444:13;23427:16;:31::i;:::-;23469:22;23494:41;23520:14;23494:21;:25;;:41;;;;:::i;:::-;23469:66;;23548:19;23570:39;23586:22;23606:1;23586:15;:19;;:22;;;;:::i;:::-;23570:11;:15;;:39;;;;:::i;:::-;23548:61;;23630:26;23659:59;23716:1;23659:52;23699:11;23659:35;23678:15;23659:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;23630:88;;23729:26;23758:52;23798:11;23758:35;23777:15;23758:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;23729:81;;23821:26;23850:62;23893:18;23850:38;23869:18;23850:14;:18;;:38;;;;:::i;:::-;:42;;:62;;;;:::i;:::-;23821:91;;23949:1;23928:18;:22;23925:97;;;23965:57;23986:15;;;;;;;;;;;24003:18;23965:20;:57::i;:::-;23925:97;24059:1;24038:18;:22;24035:97;;;24075:57;24096:15;;;;;;;;;;;24113:18;24075:20;:57::i;:::-;24035:97;24169:1;24148:18;:22;:41;;;;;24188:1;24174:11;:15;24148:41;24145:104;;;24204:45;24217:11;24230:18;24204:12;:45::i;:::-;24145:104;22878:1379;;;;;;;;;;;;16408:1;16439:5:::0;16420:16;;:24;;;;;;;;;;;;;;;;;;22832:1425::o;25609:366::-;25690:4;25710:17;:25;25728:6;25710:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;25739:17;:28;25757:9;25739:28;;;;;;;;;;;;;;;;;;;;;;;;;25710:57;25707:261;;;25791:4;25784:11;;;;25707:261;25826:12;:20;25839:6;25826:20;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;25850:12;:23;25863:9;25850:23;;;;;;;;;;;;;;;;;;;;;;;;;25826:47;25822:146;;;25897:5;25890:12;;;;25822:146;25951:5;25944:12;;25609:366;;;;;:::o;25983:724::-;26069:7;26099:14;26156:12;:20;26169:6;26156:20;;;;;;;;;;;;;;;;;;;;;;;;;26153:275;;;26223:37;26248:11;;26223:20;26234:8;;26223:6;:10;;:20;;;;:::i;:::-;:24;;:37;;;;:::i;:::-;26211:49;;26153:275;;;26298:12;:23;26311:9;26298:23;;;;;;;;;;;;;;;;;;;;;;;;;26295:133;;;26356:38;26382:11;;26356:21;26367:9;;26356:6;:10;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;26344:50;;26295:133;26153:275;26464:1;26452:9;:13;26449:185;;;26513:39;26542:9;26513;:24;26531:4;26513:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;26486:9;:24;26504:4;26486:24;;;;;;;;;;;;;;;:66;;;;26601:4;26576:42;;26585:6;26576:42;;;26608:9;26576:42;;;;;;:::i;:::-;;;;;;;;26449:185;26657:21;26668:9;26657:6;:10;;:21;;;;:::i;:::-;26650:28;;;25983:724;;;;;:::o;24404:666::-;24530:21;24568:1;24554:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24530:40;;24599:4;24581;24586:1;24581:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24625:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24615:4;24620:1;24615:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24660:62;24677:4;24692:15;;;;;;;;;;;24710:11;24660:8;:62::i;:::-;24761:15;;;;;;;;;;;:66;;;24842:11;24868:1;24912:4;24939;24975:15;24761:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25027:35;25044:11;25057:4;25027:35;;;;;;;:::i;:::-;;;;;;;;24459:611;24404:666;:::o;24265:127::-;24357:9;24349:27;;:35;24377:6;24349:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24265:127;;:::o;25078:523::-;25226:62;25243:4;25258:15;;;;;;;;;;;25276:11;25226:8;:62::i;:::-;25331:15;;;;;;;;;;;:31;;;25370:9;25403:4;25423:11;25449:1;25492;25535:17;;;;;;;;;;;25567:15;25331:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25078:523;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;301:133;;;;:::o;440:137::-;494:5;525:6;519:13;510:22;;541:30;565:5;541:30;:::i;:::-;440:137;;;;:::o;583:165::-;642:5;680:6;667:20;658:29;;696:46;736:5;696:46;:::i;:::-;583:165;;;;:::o;754:139::-;800:5;838:6;825:20;816:29;;854:33;881:5;854:33;:::i;:::-;754:139;;;;:::o;899:143::-;956:5;987:6;981:13;972:22;;1003:33;1030:5;1003:33;:::i;:::-;899:143;;;;:::o;1048:329::-;1107:6;1156:2;1144:9;1135:7;1131:23;1127:32;1124:119;;;1162:79;;:::i;:::-;1124:119;1282:1;1307:53;1352:7;1343:6;1332:9;1328:22;1307:53;:::i;:::-;1297:63;;1253:117;1048:329;;;;:::o;1383:351::-;1453:6;1502:2;1490:9;1481:7;1477:23;1473:32;1470:119;;;1508:79;;:::i;:::-;1470:119;1628:1;1653:64;1709:7;1700:6;1689:9;1685:22;1653:64;:::i;:::-;1643:74;;1599:128;1383:351;;;;:::o;1740:474::-;1808:6;1816;1865:2;1853:9;1844:7;1840:23;1836:32;1833:119;;;1871:79;;:::i;:::-;1833:119;1991:1;2016:53;2061:7;2052:6;2041:9;2037:22;2016:53;:::i;:::-;2006:63;;1962:117;2118:2;2144:53;2189:7;2180:6;2169:9;2165:22;2144:53;:::i;:::-;2134:63;;2089:118;1740:474;;;;;:::o;2220:619::-;2297:6;2305;2313;2362:2;2350:9;2341:7;2337:23;2333:32;2330:119;;;2368:79;;:::i;:::-;2330:119;2488:1;2513:53;2558:7;2549:6;2538:9;2534:22;2513:53;:::i;:::-;2503:63;;2459:117;2615:2;2641:53;2686:7;2677:6;2666:9;2662:22;2641:53;:::i;:::-;2631:63;;2586:118;2743:2;2769:53;2814:7;2805:6;2794:9;2790:22;2769:53;:::i;:::-;2759:63;;2714:118;2220:619;;;;;:::o;2845:::-;2922:6;2930;2938;2987:2;2975:9;2966:7;2962:23;2958:32;2955:119;;;2993:79;;:::i;:::-;2955:119;3113:1;3138:53;3183:7;3174:6;3163:9;3159:22;3138:53;:::i;:::-;3128:63;;3084:117;3240:2;3266:53;3311:7;3302:6;3291:9;3287:22;3266:53;:::i;:::-;3256:63;;3211:118;3368:2;3394:53;3439:7;3430:6;3419:9;3415:22;3394:53;:::i;:::-;3384:63;;3339:118;2845:619;;;;;:::o;3470:468::-;3535:6;3543;3592:2;3580:9;3571:7;3567:23;3563:32;3560:119;;;3598:79;;:::i;:::-;3560:119;3718:1;3743:53;3788:7;3779:6;3768:9;3764:22;3743:53;:::i;:::-;3733:63;;3689:117;3845:2;3871:50;3913:7;3904:6;3893:9;3889:22;3871:50;:::i;:::-;3861:60;;3816:115;3470:468;;;;;:::o;3944:474::-;4012:6;4020;4069:2;4057:9;4048:7;4044:23;4040:32;4037:119;;;4075:79;;:::i;:::-;4037:119;4195:1;4220:53;4265:7;4256:6;4245:9;4241:22;4220:53;:::i;:::-;4210:63;;4166:117;4322:2;4348:53;4393:7;4384:6;4373:9;4369:22;4348:53;:::i;:::-;4338:63;;4293:118;3944:474;;;;;:::o;4424:323::-;4480:6;4529:2;4517:9;4508:7;4504:23;4500:32;4497:119;;;4535:79;;:::i;:::-;4497:119;4655:1;4680:50;4722:7;4713:6;4702:9;4698:22;4680:50;:::i;:::-;4670:60;;4626:114;4424:323;;;;:::o;4753:345::-;4820:6;4869:2;4857:9;4848:7;4844:23;4840:32;4837:119;;;4875:79;;:::i;:::-;4837:119;4995:1;5020:61;5073:7;5064:6;5053:9;5049:22;5020:61;:::i;:::-;5010:71;;4966:125;4753:345;;;;:::o;5104:462::-;5166:6;5174;5223:2;5211:9;5202:7;5198:23;5194:32;5191:119;;;5229:79;;:::i;:::-;5191:119;5349:1;5374:50;5416:7;5407:6;5396:9;5392:22;5374:50;:::i;:::-;5364:60;;5320:114;5473:2;5499:50;5541:7;5532:6;5521:9;5517:22;5499:50;:::i;:::-;5489:60;;5444:115;5104:462;;;;;:::o;5572:645::-;5662:6;5670;5678;5727:2;5715:9;5706:7;5702:23;5698:32;5695:119;;;5733:79;;:::i;:::-;5695:119;5853:1;5878:66;5936:7;5927:6;5916:9;5912:22;5878:66;:::i;:::-;5868:76;;5824:130;5993:2;6019:53;6064:7;6055:6;6044:9;6040:22;6019:53;:::i;:::-;6009:63;;5964:118;6121:2;6147:53;6192:7;6183:6;6172:9;6168:22;6147:53;:::i;:::-;6137:63;;6092:118;5572:645;;;;;:::o;6223:329::-;6282:6;6331:2;6319:9;6310:7;6306:23;6302:32;6299:119;;;6337:79;;:::i;:::-;6299:119;6457:1;6482:53;6527:7;6518:6;6507:9;6503:22;6482:53;:::i;:::-;6472:63;;6428:117;6223:329;;;;:::o;6558:619::-;6635:6;6643;6651;6700:2;6688:9;6679:7;6675:23;6671:32;6668:119;;;6706:79;;:::i;:::-;6668:119;6826:1;6851:53;6896:7;6887:6;6876:9;6872:22;6851:53;:::i;:::-;6841:63;;6797:117;6953:2;6979:53;7024:7;7015:6;7004:9;7000:22;6979:53;:::i;:::-;6969:63;;6924:118;7081:2;7107:53;7152:7;7143:6;7132:9;7128:22;7107:53;:::i;:::-;7097:63;;7052:118;6558:619;;;;;:::o;7183:663::-;7271:6;7279;7287;7336:2;7324:9;7315:7;7311:23;7307:32;7304:119;;;7342:79;;:::i;:::-;7304:119;7462:1;7487:64;7543:7;7534:6;7523:9;7519:22;7487:64;:::i;:::-;7477:74;;7433:128;7600:2;7626:64;7682:7;7673:6;7662:9;7658:22;7626:64;:::i;:::-;7616:74;;7571:129;7739:2;7765:64;7821:7;7812:6;7801:9;7797:22;7765:64;:::i;:::-;7755:74;;7710:129;7183:663;;;;;:::o;7852:179::-;7921:10;7942:46;7984:3;7976:6;7942:46;:::i;:::-;8020:4;8015:3;8011:14;7997:28;;7852:179;;;;:::o;8037:108::-;8114:24;8132:5;8114:24;:::i;:::-;8109:3;8102:37;8037:108;;:::o;8151:118::-;8238:24;8256:5;8238:24;:::i;:::-;8233:3;8226:37;8151:118;;:::o;8305:732::-;8424:3;8453:54;8501:5;8453:54;:::i;:::-;8523:86;8602:6;8597:3;8523:86;:::i;:::-;8516:93;;8633:56;8683:5;8633:56;:::i;:::-;8712:7;8743:1;8728:284;8753:6;8750:1;8747:13;8728:284;;;8829:6;8823:13;8856:63;8915:3;8900:13;8856:63;:::i;:::-;8849:70;;8942:60;8995:6;8942:60;:::i;:::-;8932:70;;8788:224;8775:1;8772;8768:9;8763:14;;8728:284;;;8732:14;9028:3;9021:10;;8429:608;;;8305:732;;;;:::o;9043:109::-;9124:21;9139:5;9124:21;:::i;:::-;9119:3;9112:34;9043:109;;:::o;9158:185::-;9272:64;9330:5;9272:64;:::i;:::-;9267:3;9260:77;9158:185;;:::o;9349:147::-;9444:45;9483:5;9444:45;:::i;:::-;9439:3;9432:58;9349:147;;:::o;9502:364::-;9590:3;9618:39;9651:5;9618:39;:::i;:::-;9673:71;9737:6;9732:3;9673:71;:::i;:::-;9666:78;;9753:52;9798:6;9793:3;9786:4;9779:5;9775:16;9753:52;:::i;:::-;9830:29;9852:6;9830:29;:::i;:::-;9825:3;9821:39;9814:46;;9594:272;9502:364;;;;:::o;9872:366::-;10014:3;10035:67;10099:2;10094:3;10035:67;:::i;:::-;10028:74;;10111:93;10200:3;10111:93;:::i;:::-;10229:2;10224:3;10220:12;10213:19;;9872:366;;;:::o;10244:::-;10386:3;10407:67;10471:2;10466:3;10407:67;:::i;:::-;10400:74;;10483:93;10572:3;10483:93;:::i;:::-;10601:2;10596:3;10592:12;10585:19;;10244:366;;;:::o;10616:::-;10758:3;10779:67;10843:2;10838:3;10779:67;:::i;:::-;10772:74;;10855:93;10944:3;10855:93;:::i;:::-;10973:2;10968:3;10964:12;10957:19;;10616:366;;;:::o;10988:::-;11130:3;11151:67;11215:2;11210:3;11151:67;:::i;:::-;11144:74;;11227:93;11316:3;11227:93;:::i;:::-;11345:2;11340:3;11336:12;11329:19;;10988:366;;;:::o;11360:::-;11502:3;11523:67;11587:2;11582:3;11523:67;:::i;:::-;11516:74;;11599:93;11688:3;11599:93;:::i;:::-;11717:2;11712:3;11708:12;11701:19;;11360:366;;;:::o;11732:::-;11874:3;11895:67;11959:2;11954:3;11895:67;:::i;:::-;11888:74;;11971:93;12060:3;11971:93;:::i;:::-;12089:2;12084:3;12080:12;12073:19;;11732:366;;;:::o;12104:::-;12246:3;12267:67;12331:2;12326:3;12267:67;:::i;:::-;12260:74;;12343:93;12432:3;12343:93;:::i;:::-;12461:2;12456:3;12452:12;12445:19;;12104:366;;;:::o;12476:::-;12618:3;12639:67;12703:2;12698:3;12639:67;:::i;:::-;12632:74;;12715:93;12804:3;12715:93;:::i;:::-;12833:2;12828:3;12824:12;12817:19;;12476:366;;;:::o;12848:::-;12990:3;13011:67;13075:2;13070:3;13011:67;:::i;:::-;13004:74;;13087:93;13176:3;13087:93;:::i;:::-;13205:2;13200:3;13196:12;13189:19;;12848:366;;;:::o;13220:::-;13362:3;13383:67;13447:2;13442:3;13383:67;:::i;:::-;13376:74;;13459:93;13548:3;13459:93;:::i;:::-;13577:2;13572:3;13568:12;13561:19;;13220:366;;;:::o;13592:::-;13734:3;13755:67;13819:2;13814:3;13755:67;:::i;:::-;13748:74;;13831:93;13920:3;13831:93;:::i;:::-;13949:2;13944:3;13940:12;13933:19;;13592:366;;;:::o;13964:398::-;14123:3;14144:83;14225:1;14220:3;14144:83;:::i;:::-;14137:90;;14236:93;14325:3;14236:93;:::i;:::-;14354:1;14349:3;14345:11;14338:18;;13964:398;;;:::o;14368:366::-;14510:3;14531:67;14595:2;14590:3;14531:67;:::i;:::-;14524:74;;14607:93;14696:3;14607:93;:::i;:::-;14725:2;14720:3;14716:12;14709:19;;14368:366;;;:::o;14740:::-;14882:3;14903:67;14967:2;14962:3;14903:67;:::i;:::-;14896:74;;14979:93;15068:3;14979:93;:::i;:::-;15097:2;15092:3;15088:12;15081:19;;14740:366;;;:::o;15112:::-;15254:3;15275:67;15339:2;15334:3;15275:67;:::i;:::-;15268:74;;15351:93;15440:3;15351:93;:::i;:::-;15469:2;15464:3;15460:12;15453:19;;15112:366;;;:::o;15484:::-;15626:3;15647:67;15711:2;15706:3;15647:67;:::i;:::-;15640:74;;15723:93;15812:3;15723:93;:::i;:::-;15841:2;15836:3;15832:12;15825:19;;15484:366;;;:::o;15856:118::-;15943:24;15961:5;15943:24;:::i;:::-;15938:3;15931:37;15856:118;;:::o;15980:112::-;16063:22;16079:5;16063:22;:::i;:::-;16058:3;16051:35;15980:112;;:::o;16098:379::-;16282:3;16304:147;16447:3;16304:147;:::i;:::-;16297:154;;16468:3;16461:10;;16098:379;;;:::o;16483:222::-;16576:4;16614:2;16603:9;16599:18;16591:26;;16627:71;16695:1;16684:9;16680:17;16671:6;16627:71;:::i;:::-;16483:222;;;;:::o;16711:332::-;16832:4;16870:2;16859:9;16855:18;16847:26;;16883:71;16951:1;16940:9;16936:17;16927:6;16883:71;:::i;:::-;16964:72;17032:2;17021:9;17017:18;17008:6;16964:72;:::i;:::-;16711:332;;;;;:::o;17049:::-;17170:4;17208:2;17197:9;17193:18;17185:26;;17221:71;17289:1;17278:9;17274:17;17265:6;17221:71;:::i;:::-;17302:72;17370:2;17359:9;17355:18;17346:6;17302:72;:::i;:::-;17049:332;;;;;:::o;17387:807::-;17636:4;17674:3;17663:9;17659:19;17651:27;;17688:71;17756:1;17745:9;17741:17;17732:6;17688:71;:::i;:::-;17769:72;17837:2;17826:9;17822:18;17813:6;17769:72;:::i;:::-;17851:80;17927:2;17916:9;17912:18;17903:6;17851:80;:::i;:::-;17941;18017:2;18006:9;18002:18;17993:6;17941:80;:::i;:::-;18031:73;18099:3;18088:9;18084:19;18075:6;18031:73;:::i;:::-;18114;18182:3;18171:9;18167:19;18158:6;18114:73;:::i;:::-;17387:807;;;;;;;;;:::o;18200:210::-;18287:4;18325:2;18314:9;18310:18;18302:26;;18338:65;18400:1;18389:9;18385:17;18376:6;18338:65;:::i;:::-;18200:210;;;;:::o;18416:276::-;18536:4;18574:2;18563:9;18559:18;18551:26;;18587:98;18682:1;18671:9;18667:17;18658:6;18587:98;:::i;:::-;18416:276;;;;:::o;18698:313::-;18811:4;18849:2;18838:9;18834:18;18826:26;;18898:9;18892:4;18888:20;18884:1;18873:9;18869:17;18862:47;18926:78;18999:4;18990:6;18926:78;:::i;:::-;18918:86;;18698:313;;;;:::o;19017:419::-;19183:4;19221:2;19210:9;19206:18;19198:26;;19270:9;19264:4;19260:20;19256:1;19245:9;19241:17;19234:47;19298:131;19424:4;19298:131;:::i;:::-;19290:139;;19017:419;;;:::o;19442:::-;19608:4;19646:2;19635:9;19631:18;19623:26;;19695:9;19689:4;19685:20;19681:1;19670:9;19666:17;19659:47;19723:131;19849:4;19723:131;:::i;:::-;19715:139;;19442:419;;;:::o;19867:::-;20033:4;20071:2;20060:9;20056:18;20048:26;;20120:9;20114:4;20110:20;20106:1;20095:9;20091:17;20084:47;20148:131;20274:4;20148:131;:::i;:::-;20140:139;;19867:419;;;:::o;20292:::-;20458:4;20496:2;20485:9;20481:18;20473:26;;20545:9;20539:4;20535:20;20531:1;20520:9;20516:17;20509:47;20573:131;20699:4;20573:131;:::i;:::-;20565:139;;20292:419;;;:::o;20717:::-;20883:4;20921:2;20910:9;20906:18;20898:26;;20970:9;20964:4;20960:20;20956:1;20945:9;20941:17;20934:47;20998:131;21124:4;20998:131;:::i;:::-;20990:139;;20717:419;;;:::o;21142:::-;21308:4;21346:2;21335:9;21331:18;21323:26;;21395:9;21389:4;21385:20;21381:1;21370:9;21366:17;21359:47;21423:131;21549:4;21423:131;:::i;:::-;21415:139;;21142:419;;;:::o;21567:::-;21733:4;21771:2;21760:9;21756:18;21748:26;;21820:9;21814:4;21810:20;21806:1;21795:9;21791:17;21784:47;21848:131;21974:4;21848:131;:::i;:::-;21840:139;;21567:419;;;:::o;21992:::-;22158:4;22196:2;22185:9;22181:18;22173:26;;22245:9;22239:4;22235:20;22231:1;22220:9;22216:17;22209:47;22273:131;22399:4;22273:131;:::i;:::-;22265:139;;21992:419;;;:::o;22417:::-;22583:4;22621:2;22610:9;22606:18;22598:26;;22670:9;22664:4;22660:20;22656:1;22645:9;22641:17;22634:47;22698:131;22824:4;22698:131;:::i;:::-;22690:139;;22417:419;;;:::o;22842:::-;23008:4;23046:2;23035:9;23031:18;23023:26;;23095:9;23089:4;23085:20;23081:1;23070:9;23066:17;23059:47;23123:131;23249:4;23123:131;:::i;:::-;23115:139;;22842:419;;;:::o;23267:::-;23433:4;23471:2;23460:9;23456:18;23448:26;;23520:9;23514:4;23510:20;23506:1;23495:9;23491:17;23484:47;23548:131;23674:4;23548:131;:::i;:::-;23540:139;;23267:419;;;:::o;23692:::-;23858:4;23896:2;23885:9;23881:18;23873:26;;23945:9;23939:4;23935:20;23931:1;23920:9;23916:17;23909:47;23973:131;24099:4;23973:131;:::i;:::-;23965:139;;23692:419;;;:::o;24117:::-;24283:4;24321:2;24310:9;24306:18;24298:26;;24370:9;24364:4;24360:20;24356:1;24345:9;24341:17;24334:47;24398:131;24524:4;24398:131;:::i;:::-;24390:139;;24117:419;;;:::o;24542:::-;24708:4;24746:2;24735:9;24731:18;24723:26;;24795:9;24789:4;24785:20;24781:1;24770:9;24766:17;24759:47;24823:131;24949:4;24823:131;:::i;:::-;24815:139;;24542:419;;;:::o;24967:::-;25133:4;25171:2;25160:9;25156:18;25148:26;;25220:9;25214:4;25210:20;25206:1;25195:9;25191:17;25184:47;25248:131;25374:4;25248:131;:::i;:::-;25240:139;;24967:419;;;:::o;25392:222::-;25485:4;25523:2;25512:9;25508:18;25500:26;;25536:71;25604:1;25593:9;25589:17;25580:6;25536:71;:::i;:::-;25392:222;;;;:::o;25620:483::-;25791:4;25829:2;25818:9;25814:18;25806:26;;25842:71;25910:1;25899:9;25895:17;25886:6;25842:71;:::i;:::-;25960:9;25954:4;25950:20;25945:2;25934:9;25930:18;25923:48;25988:108;26091:4;26082:6;25988:108;:::i;:::-;25980:116;;25620:483;;;;;:::o;26109:831::-;26372:4;26410:3;26399:9;26395:19;26387:27;;26424:71;26492:1;26481:9;26477:17;26468:6;26424:71;:::i;:::-;26505:80;26581:2;26570:9;26566:18;26557:6;26505:80;:::i;:::-;26632:9;26626:4;26622:20;26617:2;26606:9;26602:18;26595:48;26660:108;26763:4;26754:6;26660:108;:::i;:::-;26652:116;;26778:72;26846:2;26835:9;26831:18;26822:6;26778:72;:::i;:::-;26860:73;26928:3;26917:9;26913:19;26904:6;26860:73;:::i;:::-;26109:831;;;;;;;;:::o;26946:214::-;27035:4;27073:2;27062:9;27058:18;27050:26;;27086:67;27150:1;27139:9;27135:17;27126:6;27086:67;:::i;:::-;26946:214;;;;:::o;27247:132::-;27314:4;27337:3;27329:11;;27367:4;27362:3;27358:14;27350:22;;27247:132;;;:::o;27385:114::-;27452:6;27486:5;27480:12;27470:22;;27385:114;;;:::o;27505:99::-;27557:6;27591:5;27585:12;27575:22;;27505:99;;;:::o;27610:113::-;27680:4;27712;27707:3;27703:14;27695:22;;27610:113;;;:::o;27729:184::-;27828:11;27862:6;27857:3;27850:19;27902:4;27897:3;27893:14;27878:29;;27729:184;;;;:::o;27919:147::-;28020:11;28057:3;28042:18;;27919:147;;;;:::o;28072:169::-;28156:11;28190:6;28185:3;28178:19;28230:4;28225:3;28221:14;28206:29;;28072:169;;;;:::o;28247:305::-;28287:3;28306:20;28324:1;28306:20;:::i;:::-;28301:25;;28340:20;28358:1;28340:20;:::i;:::-;28335:25;;28494:1;28426:66;28422:74;28419:1;28416:81;28413:107;;;28500:18;;:::i;:::-;28413:107;28544:1;28541;28537:9;28530:16;;28247:305;;;;:::o;28558:185::-;28598:1;28615:20;28633:1;28615:20;:::i;:::-;28610:25;;28649:20;28667:1;28649:20;:::i;:::-;28644:25;;28688:1;28678:35;;28693:18;;:::i;:::-;28678:35;28735:1;28732;28728:9;28723:14;;28558:185;;;;:::o;28749:348::-;28789:7;28812:20;28830:1;28812:20;:::i;:::-;28807:25;;28846:20;28864:1;28846:20;:::i;:::-;28841:25;;29034:1;28966:66;28962:74;28959:1;28956:81;28951:1;28944:9;28937:17;28933:105;28930:131;;;29041:18;;:::i;:::-;28930:131;29089:1;29086;29082:9;29071:20;;28749:348;;;;:::o;29103:191::-;29143:4;29163:20;29181:1;29163:20;:::i;:::-;29158:25;;29197:20;29215:1;29197:20;:::i;:::-;29192:25;;29236:1;29233;29230:8;29227:34;;;29241:18;;:::i;:::-;29227:34;29286:1;29283;29279:9;29271:17;;29103:191;;;;:::o;29300:96::-;29337:7;29366:24;29384:5;29366:24;:::i;:::-;29355:35;;29300:96;;;:::o;29402:90::-;29436:7;29479:5;29472:13;29465:21;29454:32;;29402:90;;;:::o;29498:109::-;29548:7;29577:24;29595:5;29577:24;:::i;:::-;29566:35;;29498:109;;;:::o;29613:126::-;29650:7;29690:42;29683:5;29679:54;29668:65;;29613:126;;;:::o;29745:77::-;29782:7;29811:5;29800:16;;29745:77;;;:::o;29828:86::-;29863:7;29903:4;29896:5;29892:16;29881:27;;29828:86;;;:::o;29920:153::-;29997:9;30030:37;30061:5;30030:37;:::i;:::-;30017:50;;29920:153;;;:::o;30079:121::-;30137:9;30170:24;30188:5;30170:24;:::i;:::-;30157:37;;30079:121;;;:::o;30206:126::-;30256:9;30289:37;30320:5;30289:37;:::i;:::-;30276:50;;30206:126;;;:::o;30338:113::-;30388:9;30421:24;30439:5;30421:24;:::i;:::-;30408:37;;30338:113;;;:::o;30457:307::-;30525:1;30535:113;30549:6;30546:1;30543:13;30535:113;;;30634:1;30629:3;30625:11;30619:18;30615:1;30610:3;30606:11;30599:39;30571:2;30568:1;30564:10;30559:15;;30535:113;;;30666:6;30663:1;30660:13;30657:101;;;30746:1;30737:6;30732:3;30728:16;30721:27;30657:101;30506:258;30457:307;;;:::o;30770:320::-;30814:6;30851:1;30845:4;30841:12;30831:22;;30898:1;30892:4;30888:12;30919:18;30909:81;;30975:4;30967:6;30963:17;30953:27;;30909:81;31037:2;31029:6;31026:14;31006:18;31003:38;31000:84;;;31056:18;;:::i;:::-;31000:84;30821:269;30770:320;;;:::o;31096:180::-;31144:77;31141:1;31134:88;31241:4;31238:1;31231:15;31265:4;31262:1;31255:15;31282:180;31330:77;31327:1;31320:88;31427:4;31424:1;31417:15;31451:4;31448:1;31441:15;31468:180;31516:77;31513:1;31506:88;31613:4;31610:1;31603:15;31637:4;31634:1;31627:15;31654:180;31702:77;31699:1;31692:88;31799:4;31796:1;31789:15;31823:4;31820:1;31813:15;31840:180;31888:77;31885:1;31878:88;31985:4;31982:1;31975:15;32009:4;32006:1;31999:15;32149:117;32258:1;32255;32248:12;32272:102;32313:6;32364:2;32360:7;32355:2;32348:5;32344:14;32340:28;32330:38;;32272:102;;;:::o;32380:222::-;32520:34;32516:1;32508:6;32504:14;32497:58;32589:5;32584:2;32576:6;32572:15;32565:30;32380:222;:::o;32608:177::-;32748:29;32744:1;32736:6;32732:14;32725:53;32608:177;:::o;32791:225::-;32931:34;32927:1;32919:6;32915:14;32908:58;33000:8;32995:2;32987:6;32983:15;32976:33;32791:225;:::o;33022:221::-;33162:34;33158:1;33150:6;33146:14;33139:58;33231:4;33226:2;33218:6;33214:15;33207:29;33022:221;:::o;33249:177::-;33389:29;33385:1;33377:6;33373:14;33366:53;33249:177;:::o;33432:163::-;33572:15;33568:1;33560:6;33556:14;33549:39;33432:163;:::o;33601:227::-;33741:34;33737:1;33729:6;33725:14;33718:58;33810:10;33805:2;33797:6;33793:15;33786:35;33601:227;:::o;33834:220::-;33974:34;33970:1;33962:6;33958:14;33951:58;34043:3;34038:2;34030:6;34026:15;34019:28;33834:220;:::o;34060:182::-;34200:34;34196:1;34188:6;34184:14;34177:58;34060:182;:::o;34248:228::-;34388:34;34384:1;34376:6;34372:14;34365:58;34457:11;34452:2;34444:6;34440:15;34433:36;34248:228;:::o;34482:224::-;34622:34;34618:1;34610:6;34606:14;34599:58;34691:7;34686:2;34678:6;34674:15;34667:32;34482:224;:::o;34712:114::-;;:::o;34832:223::-;34972:34;34968:1;34960:6;34956:14;34949:58;35041:6;35036:2;35028:6;35024:15;35017:31;34832:223;:::o;35061:177::-;35201:29;35197:1;35189:6;35185:14;35178:53;35061:177;:::o;35244:232::-;35384:34;35380:1;35372:6;35368:14;35361:58;35453:15;35448:2;35440:6;35436:15;35429:40;35244:232;:::o;35482:170::-;35622:22;35618:1;35610:6;35606:14;35599:46;35482:170;:::o;35658:122::-;35731:24;35749:5;35731:24;:::i;:::-;35724:5;35721:35;35711:63;;35770:1;35767;35760:12;35711:63;35658:122;:::o;35786:116::-;35856:21;35871:5;35856:21;:::i;:::-;35849:5;35846:32;35836:60;;35892:1;35889;35882:12;35836:60;35786:116;:::o;35908:148::-;35994:37;36025:5;35994:37;:::i;:::-;35987:5;35984:48;35974:76;;36046:1;36043;36036:12;35974:76;35908:148;:::o;36062:122::-;36135:24;36153:5;36135:24;:::i;:::-;36128:5;36125:35;36115:63;;36174:1;36171;36164:12;36115:63;36062:122;:::o

Swarm Source

ipfs://113ddcbd1f13e2a2fa334ccd502911d4890cd0985aae47877bfc3febd72e641f
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.