ETH Price: $3,466.78 (+2.63%)
Gas: 7 Gwei

Token

Hong Tsu (Hong)
 

Overview

Max Total Supply

100,000 Hong

Holders

100

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
901.923709619581783336 Hong

Value
$0.00
0x63bcadf3a14e1967d66886e7249327414136b8b0
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:
HongTsu

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-07
*/

/*
`MM'    `MM'                         MMMMMMMMMM               
 MM      MM                          /   MM   \               
 MM      MM   _____  ___  __     __      MM   ____  ___   ___ 
 MM      MM  6MMMMMb `MM 6MMb   6MMbMMM  MM  6MMMMb\`MM    MM 
 MMMMMMMMMM 6M'   `Mb MMM9 `Mb 6M'`Mb    MM MM'    ` MM    MM 
 MM      MM MM     MM MM'   MM MM  MM    MM YM.      MM    MM 
 MM      MM MM     MM MM    MM YM.,M9    MM  YMMMMb  MM    MM 
 MM      MM MM     MM MM    MM  YMM9     MM      `Mb MM    MM 
 MM      MM YM.   ,M9 MM    MM (M        MM L    ,MM YM.   MM 
_MM_    _MM_ YMMMMM9 _MM_  _MM_ YMMMMb. _MM_MYMMMM9   YMMM9MM_
                               6M    Yb                       
                               YM.   d9                       
                                YMMMM9                        

                                 |                                           
                                 ||                                          
       -==-____        _--_   ___||___   _--_        ____-==-                
          ---__----___/ __ \--  || |  --/ __ \___----__---                   
               ---__ / /  \ \   \\ /   / /  \ \ __---                        
                    -\|    \ \  _\/_  / /    |/-                             
                   __/ \_()/\ \//  \\/ /\()_/ \__                            
                  /_ \ / ~~  `-'    `-'  ~~ \ / _\                           
                 |/_\ |(~/   /\  /\  /\   \~)| /_\|                          
                  /_  | /   (O ` \/ ' O)   \ |  _\                           
                   _\ \_\/\___--~~~~--___/\/_/ /_                            
                  /    _/\^\ V~~V/~V~~V /^/\_    \                           
                  \/\ / \ \^\  |( /    /^/ / \ /\/                           
                     \\   /\^\  \\\   /^/\   //                              
                       \ | /\^\  \/  /^/\ | /                                
                         |( /\_\^__^/_/\ )|                                  
                         | \\__--__--__// |                                  
                        /~~~~~~~~~~~~~~~~~~\                                 
                       |/|  /\  /\/\  /\  |\|                                
                       ||| | | ( () ) | | |||                                
                       |\|  \/  \/\/  \/  |/|                                
                        \__________________/                                 
                        | (____------____) |


https://twitter.com/HongTsuETH
https://medium.com/@hongtsueth/a4cee7d93d0a

*/

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

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 renounceOwnership() 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 HongTsu is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    
    string private _name = "Hong Tsu";
    string private _symbol = "Hong";
    uint8 private _decimals = 18;

    address payable public marketingWallet = payable(0x3885Fe001aefcd49E1a69429dFD8eB835590a9Db);
    address payable public DeveloperWallet = payable(0xb3aAC3C0a73Eecb7d9ee216c8766661EDeB71D83);
    
    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 blacklist;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;

    uint256 public _buyLiquidityFee = 1;
    uint256 public _buyMarketingFee = 2;
    uint256 public _buyDeveloperFee = 2;
    
    uint256 public _sellLiquidityFee = 1;
    uint256 public _sellMarketingFee = 2;
    uint256 public _sellDeveloperFee = 2;

    uint256 public _totalTaxIfBuying;
    uint256 public _totalTaxIfSelling;

    uint256 private _totalSupply = 100000 * 10**_decimals;

    uint256 public minimumTokensBeforeSwap = _totalSupply.mul(1).div(100);   //0.001%

    uint256 public _maxTxAmount =  _totalSupply.mul(2).div(100);  //2%
    uint256 public _walletMax =   _totalSupply.mul(2).div(100);   //2%

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

    bool public checkWalletLimit = true;
    bool public EnableTransactionLimit = 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);

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[marketingWallet] = true;
        isExcludedFromFee[DeveloperWallet] = true;
        isExcludedFromFee[address(this)] = true;

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[marketingWallet] = true;
        isWalletLimitExempt[DeveloperWallet] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[marketingWallet] = true;
        isTxLimitExempt[DeveloperWallet] = true;
        isTxLimitExempt[address(this)] = true;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);

        isMarketPair[address(uniswapPair)] = true;

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

    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 setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }

    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

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

    function enableTxLimit(bool _status) external onlyOwner {
        EnableTransactionLimit = _status;
    }

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }

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

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

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        marketingWallet = payable(newAddress);
    }

    function setDeveloperWalletAddress(address newAddress) external onlyOwner() {
        DeveloperWallet = payable(newAddress);
    }

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

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

    function setBlacklist(address _adr, bool _status) external onlyOwner {
        blacklist[_adr] = _status;
    }

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

    function setBuyTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _buyLiquidityFee = _Liquidity;
        _buyMarketingFee = _Marketing;
        _buyDeveloperFee = _Developer;
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
    }

    function setSellTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _sellLiquidityFee = _Liquidity;
        _sellMarketingFee = _Marketing;
        _sellDeveloperFee = _Developer;
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);
    }

     //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(!blacklist[sender] && !blacklist[recipient], "Bot Enemy address Restricted!");

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

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

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

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

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? 
                                         amount : takeFee(sender, recipient, amount);

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

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

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

    function rescueStuckedToken(address _token, uint _amount) external onlyOwner {
        IERC20(_token).transfer(msg.sender,_amount);
    }

    function rescueFunds() external onlyOwner {
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os);
    }

    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(uint256 tAmount) private lockTheSwap {

        uint256 totalShares = _totalTaxIfBuying.add(_totalTaxIfSelling);

        uint256 liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee);
        uint256 MarketingShare = _buyMarketingFee.add(_sellMarketingFee);
        // uint256 DeveloperShare = _buyDeveloperFee.add(_sellDeveloperFee);
        
        uint256 tokenForLp = tAmount.mul(liquidityShare).div(totalShares).div(2);
        uint256 tokenForSwap = tAmount.sub(tokenForLp);

        uint256 initialBalance =  address(this).balance;
        swapTokensForEth(tokenForSwap);
        uint256 recievedBalance =  address(this).balance.sub(initialBalance);

        uint256 totalETHFee = totalShares.sub(liquidityShare.div(2));

        uint256 amountETHLiquidity = recievedBalance.mul(liquidityShare).div(totalETHFee).div(2);
        uint256 amountETHMarketing = recievedBalance.mul(MarketingShare).div(totalETHFee);
        uint256 amountETHDeveloper = recievedBalance.sub(amountETHLiquidity).sub(amountETHMarketing);

        if(amountETHMarketing > 0) {
            payable(marketingWallet).transfer(amountETHMarketing);
        }

        if(amountETHDeveloper > 0) {
            payable(DeveloperWallet).transfer(amountETHDeveloper);
        }         

        if(amountETHLiquidity > 0 && tokenForLp > 0) {
            addLiquidity(tokenForLp, amountETHLiquidity);
        }
    }
    
    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
            owner(),
            block.timestamp
        );
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    /* AirDrop Function*/

    function airdrop(address[] calldata _address,uint[] calldata _tokens) external onlyOwner {
        address account = msg.sender;
        require(_address.length == _tokens.length,"Error: Mismatch Length");
        uint tokenCount;
        for(uint i = 0; i < _tokens.length; i++) {
            tokenCount += _tokens[i];
        }
        require(balanceOf(account) >= tokenCount,"Error: Insufficient Error!!");
        _balances[account] = _balances[account].sub(tokenCount); 
        for(uint j = 0; j < _address.length; j++) {
            _balances[_address[j]] = _balances[_address[j]].add(_tokens[j]);
            emit Transfer(account, _address[j], _tokens[j]);
        }

    }

    
}

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":"DeveloperWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTransactionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","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":"_address","type":"address[]"},{"internalType":"uint256[]","name":"_tokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","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":"","type":"address"}],"name":"blacklist","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":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","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":[{"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":[{"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":"marketingWallet","outputs":[{"internalType":"address payable","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":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueStuckedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDeveloperWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","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":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"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"}]

60c06040526040518060400160405280600881526020017f486f6e6720547375000000000000000000000000000000000000000000000000815250600190805190602001906200005192919062001002565b506040518060400160405280600481526020017f486f6e6700000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062001002565b506012600360006101000a81548160ff021916908360ff160217905550733885fe001aefcd49e1a69429dfd8eb835590a9db600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b3aac3c0a73eecb7d9ee216c8766661edeb71d83600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff1660601b8152506001600c556002600d556002600e556001600f5560026010556002601155600360009054906101000a900460ff16600a6200021191906200136a565b620186a0620002219190620014a7565b6014556200025b606462000247600160145462000e3060201b620030f71790919060201c565b62000eb460201b620031721790919060201c565b60155562000295606462000281600260145462000e3060201b620030f71790919060201c565b62000eb460201b620031721790919060201c565b601655620002cf6064620002bb600260145462000e3060201b620030f71790919060201c565b62000eb460201b620031721790919060201c565b6017556001601960156101000a81548160ff0219169083151502179055506000601960166101000a81548160ff0219169083151502179055506001601960176101000a81548160ff0219169083151502179055506001601960186101000a81548160ff0219169083151502179055503480156200034b57600080fd5b5060006200035e62000f0660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200045c57600080fd5b505afa15801562000471573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004979190620010c9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004fa57600080fd5b505afa1580156200050f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005359190620010c9565b6040518363ffffffff1660e01b815260040162000554929190620011ac565b602060405180830381600087803b1580156200056f57600080fd5b505af115801562000584573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005aa9190620010c9565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160076000620006e662000f0e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60006200089962000f0e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b600062000ac662000f0e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000c9c600e5462000c88600d54600c5462000f3760201b620031bc1790919060201c565b62000f3760201b620031bc1790919060201c565b60128190555062000cdb60115462000cc7601054600f5462000f3760201b620031bc1790919060201c565b62000f3760201b620031bc1790919060201c565b601381905550600160086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506014546005600062000d7262000f0660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000dc062000f0660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60145460405162000e21919062001241565b60405180910390a35062001701565b60008083141562000e45576000905062000eae565b6000828462000e559190620014a7565b905082848262000e669190620012d7565b1462000ea9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ea0906200121f565b60405180910390fd5b809150505b92915050565b600062000efe83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000f9a60201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000f4891906200127a565b90508381101562000f90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f8790620011fd565b60405180910390fd5b8091505092915050565b6000808311829062000fe4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000fdb9190620011d9565b60405180910390fd5b506000838562000ff59190620012d7565b9050809150509392505050565b828054620010109062001589565b90600052602060002090601f01602090048101928262001034576000855562001080565b82601f106200104f57805160ff191683800117855562001080565b8280016001018555821562001080579182015b828111156200107f57825182559160200191906001019062001062565b5b5090506200108f919062001093565b5090565b5b80821115620010ae57600081600090555060010162001094565b5090565b600081519050620010c381620016e7565b92915050565b600060208284031215620010e257620010e16200164c565b5b6000620010f284828501620010b2565b91505092915050565b620011068162001508565b82525050565b600062001119826200125e565b62001125818562001269565b93506200113781856020860162001553565b620011428162001651565b840191505092915050565b60006200115c601b8362001269565b915062001169826200166f565b602082019050919050565b60006200118360218362001269565b9150620011908262001698565b604082019050919050565b620011a6816200153c565b82525050565b6000604082019050620011c36000830185620010fb565b620011d26020830184620010fb565b9392505050565b60006020820190508181036000830152620011f581846200110c565b905092915050565b6000602082019050818103600083015262001218816200114d565b9050919050565b600060208201905081810360008301526200123a8162001174565b9050919050565b60006020820190506200125860008301846200119b565b92915050565b600081519050919050565b600082825260208201905092915050565b600062001287826200153c565b915062001294836200153c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620012cc57620012cb620015bf565b5b828201905092915050565b6000620012e4826200153c565b9150620012f1836200153c565b925082620013045762001303620015ee565b5b828204905092915050565b6000808291508390505b60018511156200136157808604811115620013395762001338620015bf565b5b6001851615620013495780820291505b8081029050620013598562001662565b945062001319565b94509492505050565b600062001377826200153c565b9150620013848362001546565b9250620013b37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620013bb565b905092915050565b600082620013cd5760019050620014a0565b81620013dd5760009050620014a0565b8160018114620013f65760028114620014015762001437565b6001915050620014a0565b60ff841115620014165762001415620015bf565b5b8360020a91508482111562001430576200142f620015bf565b5b50620014a0565b5060208310610133831016604e8410600b8410161715620014715782820a9050838111156200146b576200146a620015bf565b5b620014a0565b6200148084848460016200130f565b925090508184048111156200149a5762001499620015bf565b5b81810290505b9392505050565b6000620014b4826200153c565b9150620014c1836200153c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620014fd57620014fc620015bf565b5b828202905092915050565b600062001515826200151c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200157357808201518184015260208101905062001556565b8381111562001583576000848401525b50505050565b60006002820490506001821680620015a257607f821691505b60208210811415620015b957620015b86200161d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b620016f28162001508565b8114620016fe57600080fd5b50565b60805160601c60a05160601c61595b6200173b6000396000818161100101526114f10152600081816114c5015261151d015261595b6000f3fe6080604052600436106103a65760003560e01c8063844d591c116101e7578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610dd1578063f8f6329014610dfc578063f9f92be414610e27578063fb4b8e6c14610e64576103ad565b8063f1d5f51714610d2d578063f2fde38b14610d56578063f455444614610d7f578063f84ba65d14610da8576103ad565b8063ec28438a116100dc578063ec28438a14610c87578063ee828db314610cb0578063ef422a1814610cd9578063f0cd1dac14610d02576103ad565b8063da00097d14610bdd578063dc44b6a014610c08578063dd62ed3e14610c33578063e6b2603b14610c70576103ad565b8063a5d69d1f11610185578063c816841b11610154578063c816841b14610b1f578063c860795214610b4a578063c867d60b14610b75578063d2d7ad8314610bb2576103ad565b8063a5d69d1f14610a65578063a9059cbb14610a8e578063c49b9a8014610acb578063c5d2418914610af4576103ad565b80638b42507f116101c15780638b42507f146109955780638da5cb5b146109d257806395d89b41146109fd578063a457c2d714610a28576103ad565b8063844d591c14610916578063852614851461093f57806388790a681461096a576103ad565b806339509351116102cc5780635881f3ef1161026a57806375f0a8741161023957806375f0a8741461086a5780637d1db4a514610895578063807c2d9c146108c057806382eefb43146108eb576103ad565b80635881f3ef146107b057806367243482146107ed57806370a0823114610816578063715018a614610853576103ad565b80634a74bb02116102a65780634a74bb02146106f45780634cb80fd51461071f5780635194f9bf146107485780635342acb414610773576103ad565b806339509351146106515780633b97084a1461068e5780633ecad271146106b7576103ad565b80631870517a116103445780632563ae83116103135780632563ae83146105a757806327c8f835146105d05780632b112e49146105fb578063313ce56714610626576103ad565b80631870517a146104ed5780632198cf6c1461051657806323555d571461053f57806323b872dd1461056a576103ad565b8063095ea7b311610380578063095ea7b314610431578063153b0d1e1461046e5780631694505e1461049757806318160ddd146104c2576103ad565b806306fdde03146103b257806308733214146103dd5780630930907b14610406576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e8d565b6040516103d49190614ee2565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff91906149f7565b610f1f565b005b34801561041257600080fd5b5061041b610fff565b6040516104289190614dc3565b60405180910390f35b34801561043d57600080fd5b50610458600480360381019061045391906148af565b611023565b6040516104659190614eac565b60405180910390f35b34801561047a57600080fd5b506104956004803603810190610490919061486f565b611041565b005b3480156104a357600080fd5b506104ac611131565b6040516104b99190614ec7565b60405180910390f35b3480156104ce57600080fd5b506104d7611157565b6040516104e491906150a4565b60405180910390f35b3480156104f957600080fd5b50610514600480360381019061050f91906149f7565b611161565b005b34801561052257600080fd5b5061053d6004803603810190610538919061486f565b611241565b005b34801561054b57600080fd5b50610554611331565b60405161056191906150a4565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c919061481c565b611337565b60405161059e9190614eac565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190614970565b611411565b005b3480156105dc57600080fd5b506105e56114c3565b6040516105f29190614dc3565b60405180910390f35b34801561060757600080fd5b506106106114e7565b60405161061d91906150a4565b60405180910390f35b34801561063257600080fd5b5061063b611565565b6040516106489190615149565b60405180910390f35b34801561065d57600080fd5b50610678600480360381019061067391906148af565b61157c565b6040516106859190614eac565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b091906149ca565b61162f565b005b3480156106c357600080fd5b506106de60048036038101906106d99190614782565b6116ce565b6040516106eb9190614eac565b60405180910390f35b34801561070057600080fd5b506107096116ee565b6040516107169190614eac565b60405180910390f35b34801561072b57600080fd5b5061074660048036038101906107419190614782565b611701565b005b34801561075457600080fd5b5061075d6117da565b60405161076a91906150a4565b60405180910390f35b34801561077f57600080fd5b5061079a60048036038101906107959190614782565b6117e0565b6040516107a79190614eac565b60405180910390f35b3480156107bc57600080fd5b506107d760048036038101906107d29190614782565b611800565b6040516107e49190614dc3565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f91906148ef565b611ce4565b005b34801561082257600080fd5b5061083d60048036038101906108389190614782565b6120bf565b60405161084a91906150a4565b60405180910390f35b34801561085f57600080fd5b50610868612108565b005b34801561087657600080fd5b5061087f61225d565b60405161088c9190614dde565b60405180910390f35b3480156108a157600080fd5b506108aa612283565b6040516108b791906150a4565b60405180910390f35b3480156108cc57600080fd5b506108d5612289565b6040516108e291906150a4565b60405180910390f35b3480156108f757600080fd5b5061090061228f565b60405161090d91906150a4565b60405180910390f35b34801561092257600080fd5b5061093d6004803603810190610938919061486f565b612295565b005b34801561094b57600080fd5b50610954612385565b6040516109619190614eac565b60405180910390f35b34801561097657600080fd5b5061097f612398565b60405161098c91906150a4565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b79190614782565b61239e565b6040516109c99190614eac565b60405180910390f35b3480156109de57600080fd5b506109e76123be565b6040516109f49190614dc3565b60405180910390f35b348015610a0957600080fd5b50610a126123e7565b604051610a1f9190614ee2565b60405180910390f35b348015610a3457600080fd5b50610a4f6004803603810190610a4a91906148af565b612479565b604051610a5c9190614eac565b60405180910390f35b348015610a7157600080fd5b50610a8c6004803603810190610a879190614970565b612546565b005b348015610a9a57600080fd5b50610ab56004803603810190610ab091906148af565b6125f8565b604051610ac29190614eac565b60405180910390f35b348015610ad757600080fd5b50610af26004803603810190610aed9190614970565b612617565b005b348015610b0057600080fd5b50610b09612700565b604051610b1691906150a4565b60405180910390f35b348015610b2b57600080fd5b50610b34612706565b604051610b419190614dc3565b60405180910390f35b348015610b5657600080fd5b50610b5f61272c565b604051610b6c91906150a4565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b979190614782565b612732565b604051610ba99190614eac565b60405180910390f35b348015610bbe57600080fd5b50610bc7612752565b604051610bd491906150a4565b60405180910390f35b348015610be957600080fd5b50610bf2612758565b604051610bff9190614eac565b60405180910390f35b348015610c1457600080fd5b50610c1d61276b565b604051610c2a91906150a4565b60405180910390f35b348015610c3f57600080fd5b50610c5a6004803603810190610c5591906147dc565b612771565b604051610c6791906150a4565b60405180910390f35b348015610c7c57600080fd5b50610c856127f8565b005b348015610c9357600080fd5b50610cae6004803603810190610ca991906149ca565b612906565b005b348015610cbc57600080fd5b50610cd76004803603810190610cd29190614970565b6129a5565b005b348015610ce557600080fd5b50610d006004803603810190610cfb919061486f565b612a57565b005b348015610d0e57600080fd5b50610d17612b47565b604051610d2491906150a4565b60405180910390f35b348015610d3957600080fd5b50610d546004803603810190610d4f91906149ca565b612b4d565b005b348015610d6257600080fd5b50610d7d6004803603810190610d789190614782565b612bec565b005b348015610d8b57600080fd5b50610da66004803603810190610da191906148af565b612dae565b005b348015610db457600080fd5b50610dcf6004803603810190610dca919061486f565b612ed5565b005b348015610ddd57600080fd5b50610de6612fc5565b604051610df39190614eac565b60405180910390f35b348015610e0857600080fd5b50610e11612fd8565b604051610e1e9190614dde565b60405180910390f35b348015610e3357600080fd5b50610e4e6004803603810190610e499190614782565b612ffe565b604051610e5b9190614eac565b60405180910390f35b348015610e7057600080fd5b50610e8b6004803603810190610e869190614782565b61301e565b005b606060018054610e9c906153bb565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec8906153bb565b8015610f155780601f10610eea57610100808354040283529160200191610f15565b820191906000526020600020905b815481529060010190602001808311610ef857829003601f168201915b5050505050905090565b610f2761321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab90615044565b60405180910390fd5b82600f819055508160108190555080601181905550610ff4601154610fe6601054600f546131bc90919063ffffffff16565b6131bc90919063ffffffff16565b601381905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061103761103061321a565b8484613222565b6001905092915050565b61104961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd90615044565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b61116961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed90615044565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611236600e54611228600d54600c546131bc90919063ffffffff16565b6131bc90919063ffffffff16565b601281905550505050565b61124961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd90615044565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b60006113448484846133ed565b506114068461135161321a565b611401856040518060600160405280602881526020016158d960289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113b761321a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b039092919063ffffffff16565b613222565b600190509392505050565b61141961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d90615044565b60405180910390fd5b80601960176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006115606115157f00000000000000000000000000000000000000000000000000000000000000006120bf565b6115526115417f00000000000000000000000000000000000000000000000000000000000000006120bf565b601454613b6790919063ffffffff16565b613b6790919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b600061162561158961321a565b84611620856006600061159a61321a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b613222565b6001905092915050565b61163761321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb90615044565b60405180910390fd5b8060158190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b601960159054906101000a900460ff1681565b61170961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d90615044565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b60076020528060005260406000206000915054906101000a900460ff1681565b600061180a61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e90615044565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118e257600080fd5b505afa1580156118f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191a91906147af565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561197c57600080fd5b505afa158015611990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b491906147af565b6040518363ffffffff1660e01b81526004016119d1929190614df9565b60206040518083038186803b1580156119e957600080fd5b505afa1580156119fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2191906147af565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611be2578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9e57600080fd5b505afa158015611ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad691906147af565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3857600080fd5b505afa158015611b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7091906147af565b6040518363ffffffff1660e01b8152600401611b8d929190614df9565b602060405180830381600087803b158015611ba757600080fd5b505af1158015611bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdf91906147af565b91505b81601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611cec61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7090615044565b60405180910390fd5b6000339050828290508585905014611dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbd90615024565b60405180910390fd5b600080600090505b84849050811015611e1357848482818110611dec57611deb6154c3565b5b9050602002013582611dfe91906151c4565b91508080611e0b906153ed565b915050611dce565b5080611e1e836120bf565b1015611e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5690614f24565b60405180910390fd5b611eb181600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6790919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b868690508110156120b657611f94858583818110611f1857611f176154c3565b5b90506020020135600560008a8a86818110611f3657611f356154c3565b5b9050602002016020810190611f4b9190614782565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b60056000898985818110611fab57611faa6154c3565b5b9050602002016020810190611fc09190614782565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550868682818110612011576120106154c3565b5b90506020020160208101906120269190614782565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef878785818110612087576120866154c3565b5b9050602002013560405161209b91906150a4565b60405180910390a380806120ae906153ed565b915050611ef7565b50505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61211061321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461219d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219490615044565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b60175481565b60135481565b61229d61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232190615044565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960189054906101000a900460ff1681565b600f5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546123f6906153bb565b80601f0160208091040260200160405190810160405280929190818152602001828054612422906153bb565b801561246f5780601f106124445761010080835404028352916020019161246f565b820191906000526020600020905b81548152906001019060200180831161245257829003601f168201915b5050505050905090565b600061253c61248661321a565b846125378560405180606001604052806025815260200161590160259139600660006124b061321a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b039092919063ffffffff16565b613222565b6001905092915050565b61254e61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d290615044565b60405180910390fd5b80601960166101000a81548160ff02191690831515021790555050565b600061260c61260561321a565b84846133ed565b506001905092915050565b61261f61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a390615044565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516126f59190614eac565b60405180910390a150565b600d5481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60155481565b601960169054906101000a900460ff1681565b600c5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61280061321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461288d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288490615044565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516128b390614dae565b60006040518083038185875af1925050503d80600081146128f0576040519150601f19603f3d011682016040523d82523d6000602084013e6128f5565b606091505b505090508061290357600080fd5b50565b61290e61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461299b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299290615044565b60405180910390fd5b8060168190555050565b6129ad61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3190615044565b60405180910390fd5b80601960186101000a81548160ff02191690831515021790555050565b612a5f61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae390615044565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b612b5561321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd990615044565b60405180910390fd5b8060178190555050565b612bf461321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7890615044565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce890614f44565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612db661321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3a90615044565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612e7e929190614e22565b602060405180830381600087803b158015612e9857600080fd5b505af1158015612eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed0919061499d565b505050565b612edd61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6190615044565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b61302661321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130aa90615044565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083141561310a576000905061316c565b60008284613118919061524b565b9050828482613127919061521a565b14613167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315e90615004565b60405180910390fd5b809150505b92915050565b60006131b483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613bb1565b905092915050565b60008082846131cb91906151c4565b905083811015613210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320790614f84565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613292576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328990615084565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f990614f64565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516133e091906150a4565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561345e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345590615064565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156134ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134c590614f04565b60405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135725750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6135b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a890614fc4565b60405180910390fd5b601960149054906101000a900460ff16156135d8576135d1848484613c14565b9050613afc565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561367c5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136945750601960189054906101000a900460ff165b156136df576016548211156136de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136d590614fe4565b60405180910390fd5b5b60006136ea306120bf565b9050600060155482101590508080156137105750601960149054906101000a900460ff16155b80156137665750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561377e5750601960159054906101000a900460ff165b156137a857601960169054906101000a900460ff161561379e5760155491505b6137a782613de7565b5b613831846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b039092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139175750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61392b576139268787876140b2565b61392d565b845b9050601960179054906101000a900460ff1680156139955750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156139fa576017546139b8826139aa896120bf565b6131bc90919063ffffffff16565b11156139f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139f090614fa4565b60405180910390fd5b5b613a4c81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613aec91906150a4565b60405180910390a3600193505050505b9392505050565b6000838311158290613b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b429190614ee2565b60405180910390fd5b5060008385613b5a91906152a5565b9050809150509392505050565b6000613ba983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613b03565b905092915050565b60008083118290613bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bef9190614ee2565b60405180910390fd5b5060008385613c07919061521a565b9050809150509392505050565b6000613c9f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b039092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d3482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613dd491906150a4565b60405180910390a3600190509392505050565b6001601960146101000a81548160ff0219169083151502179055506000613e1b6013546012546131bc90919063ffffffff16565b90506000613e36600f54600c546131bc90919063ffffffff16565b90506000613e51601054600d546131bc90919063ffffffff16565b90506000613e8d6002613e7f86613e71878a6130f790919063ffffffff16565b61317290919063ffffffff16565b61317290919063ffffffff16565b90506000613ea48287613b6790919063ffffffff16565b90506000479050613eb4826142d9565b6000613ec98247613b6790919063ffffffff16565b90506000613ef3613ee460028961317290919063ffffffff16565b89613b6790919063ffffffff16565b90506000613f2f6002613f2184613f138c886130f790919063ffffffff16565b61317290919063ffffffff16565b61317290919063ffffffff16565b90506000613f5883613f4a8a876130f790919063ffffffff16565b61317290919063ffffffff16565b90506000613f8182613f738588613b6790919063ffffffff16565b613b6790919063ffffffff16565b90506000821115613ff657600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613ff4573d6000803e3d6000fd5b505b600081111561406957600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614067573d6000803e3d6000fd5b505b6000831180156140795750600088115b15614089576140888884614564565b5b50505050505050505050506000601960146101000a81548160ff02191690831515021790555050565b60008060009050600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561413a576141336064614125601254866130f790919063ffffffff16565b61317290919063ffffffff16565b90506141b8565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141b7576141b460646141a6601354866130f790919063ffffffff16565b61317290919063ffffffff16565b90505b5b60008111156142bc5761421381600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516142b391906150a4565b60405180910390a35b6142cf8184613b6790919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff8111156142f6576142f56154f2565b5b6040519080825280602002602001820160405280156143245781602001602082028036833780820191505090505b509050308160008151811061433c5761433b6154c3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156143de57600080fd5b505afa1580156143f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061441691906147af565b8160018151811061442a576144296154c3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061449130601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613222565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016144f59594939291906150ef565b600060405180830381600087803b15801561450f57600080fd5b505af1158015614523573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516145589291906150bf565b60405180910390a15050565b61459130601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613222565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806145dd6123be565b426040518863ffffffff1660e01b81526004016145ff96959493929190614e4b565b6060604051808303818588803b15801561461857600080fd5b505af115801561462c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906146519190614a4a565b5050505050565b60008135905061466781615893565b92915050565b60008151905061467c81615893565b92915050565b60008083601f84011261469857614697615526565b5b8235905067ffffffffffffffff8111156146b5576146b4615521565b5b6020830191508360208202830111156146d1576146d061552b565b5b9250929050565b60008083601f8401126146ee576146ed615526565b5b8235905067ffffffffffffffff81111561470b5761470a615521565b5b6020830191508360208202830111156147275761472661552b565b5b9250929050565b60008135905061473d816158aa565b92915050565b600081519050614752816158aa565b92915050565b600081359050614767816158c1565b92915050565b60008151905061477c816158c1565b92915050565b60006020828403121561479857614797615535565b5b60006147a684828501614658565b91505092915050565b6000602082840312156147c5576147c4615535565b5b60006147d38482850161466d565b91505092915050565b600080604083850312156147f3576147f2615535565b5b600061480185828601614658565b925050602061481285828601614658565b9150509250929050565b60008060006060848603121561483557614834615535565b5b600061484386828701614658565b935050602061485486828701614658565b925050604061486586828701614758565b9150509250925092565b6000806040838503121561488657614885615535565b5b600061489485828601614658565b92505060206148a58582860161472e565b9150509250929050565b600080604083850312156148c6576148c5615535565b5b60006148d485828601614658565b92505060206148e585828601614758565b9150509250929050565b6000806000806040858703121561490957614908615535565b5b600085013567ffffffffffffffff81111561492757614926615530565b5b61493387828801614682565b9450945050602085013567ffffffffffffffff81111561495657614955615530565b5b614962878288016146d8565b925092505092959194509250565b60006020828403121561498657614985615535565b5b60006149948482850161472e565b91505092915050565b6000602082840312156149b3576149b2615535565b5b60006149c184828501614743565b91505092915050565b6000602082840312156149e0576149df615535565b5b60006149ee84828501614758565b91505092915050565b600080600060608486031215614a1057614a0f615535565b5b6000614a1e86828701614758565b9350506020614a2f86828701614758565b9250506040614a4086828701614758565b9150509250925092565b600080600060608486031215614a6357614a62615535565b5b6000614a718682870161476d565b9350506020614a828682870161476d565b9250506040614a938682870161476d565b9150509250925092565b6000614aa98383614ac4565b60208301905092915050565b614abe816152eb565b82525050565b614acd816152d9565b82525050565b614adc816152d9565b82525050565b6000614aed82615174565b614af78185615197565b9350614b0283615164565b8060005b83811015614b33578151614b1a8882614a9d565b9750614b258361518a565b925050600181019050614b06565b5085935050505092915050565b614b49816152fd565b82525050565b614b5881615340565b82525050565b614b6781615352565b82525050565b6000614b788261517f565b614b8281856151b3565b9350614b92818560208601615388565b614b9b8161553a565b840191505092915050565b6000614bb36023836151b3565b9150614bbe8261554b565b604082019050919050565b6000614bd6601b836151b3565b9150614be18261559a565b602082019050919050565b6000614bf96026836151b3565b9150614c04826155c3565b604082019050919050565b6000614c1c6022836151b3565b9150614c2782615612565b604082019050919050565b6000614c3f601b836151b3565b9150614c4a82615661565b602082019050919050565b6000614c626025836151b3565b9150614c6d8261568a565b604082019050919050565b6000614c85601d836151b3565b9150614c90826156d9565b602082019050919050565b6000614ca86028836151b3565b9150614cb382615702565b604082019050919050565b6000614ccb6021836151b3565b9150614cd682615751565b604082019050919050565b6000614cee6016836151b3565b9150614cf9826157a0565b602082019050919050565b6000614d116020836151b3565b9150614d1c826157c9565b602082019050919050565b6000614d346025836151b3565b9150614d3f826157f2565b604082019050919050565b6000614d576000836151a8565b9150614d6282615841565b600082019050919050565b6000614d7a6024836151b3565b9150614d8582615844565b604082019050919050565b614d9981615329565b82525050565b614da881615333565b82525050565b6000614db982614d4a565b9150819050919050565b6000602082019050614dd86000830184614ad3565b92915050565b6000602082019050614df36000830184614ab5565b92915050565b6000604082019050614e0e6000830185614ad3565b614e1b6020830184614ad3565b9392505050565b6000604082019050614e376000830185614ad3565b614e446020830184614d90565b9392505050565b600060c082019050614e606000830189614ad3565b614e6d6020830188614d90565b614e7a6040830187614b5e565b614e876060830186614b5e565b614e946080830185614ad3565b614ea160a0830184614d90565b979650505050505050565b6000602082019050614ec16000830184614b40565b92915050565b6000602082019050614edc6000830184614b4f565b92915050565b60006020820190508181036000830152614efc8184614b6d565b905092915050565b60006020820190508181036000830152614f1d81614ba6565b9050919050565b60006020820190508181036000830152614f3d81614bc9565b9050919050565b60006020820190508181036000830152614f5d81614bec565b9050919050565b60006020820190508181036000830152614f7d81614c0f565b9050919050565b60006020820190508181036000830152614f9d81614c32565b9050919050565b60006020820190508181036000830152614fbd81614c55565b9050919050565b60006020820190508181036000830152614fdd81614c78565b9050919050565b60006020820190508181036000830152614ffd81614c9b565b9050919050565b6000602082019050818103600083015261501d81614cbe565b9050919050565b6000602082019050818103600083015261503d81614ce1565b9050919050565b6000602082019050818103600083015261505d81614d04565b9050919050565b6000602082019050818103600083015261507d81614d27565b9050919050565b6000602082019050818103600083015261509d81614d6d565b9050919050565b60006020820190506150b96000830184614d90565b92915050565b60006040820190506150d46000830185614d90565b81810360208301526150e68184614ae2565b90509392505050565b600060a0820190506151046000830188614d90565b6151116020830187614b5e565b81810360408301526151238186614ae2565b90506151326060830185614ad3565b61513f6080830184614d90565b9695505050505050565b600060208201905061515e6000830184614d9f565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006151cf82615329565b91506151da83615329565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561520f5761520e615436565b5b828201905092915050565b600061522582615329565b915061523083615329565b9250826152405761523f615465565b5b828204905092915050565b600061525682615329565b915061526183615329565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561529a57615299615436565b5b828202905092915050565b60006152b082615329565b91506152bb83615329565b9250828210156152ce576152cd615436565b5b828203905092915050565b60006152e482615309565b9050919050565b60006152f682615309565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061534b82615364565b9050919050565b600061535d82615329565b9050919050565b600061536f82615376565b9050919050565b600061538182615309565b9050919050565b60005b838110156153a657808201518184015260208101905061538b565b838111156153b5576000848401525b50505050565b600060028204905060018216806153d357607f821691505b602082108114156153e7576153e6615494565b5b50919050565b60006153f882615329565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561542b5761542a615436565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f426f7420456e656d792061646472657373205265737472696374656421000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61589c816152d9565b81146158a757600080fd5b50565b6158b3816152fd565b81146158be57600080fd5b50565b6158ca81615329565b81146158d557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206c0bb1e40f8f8532cd3339eb7e09c2a0beb9d46cdd7496d709771d20bbb64f2c64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106103a65760003560e01c8063844d591c116101e7578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610dd1578063f8f6329014610dfc578063f9f92be414610e27578063fb4b8e6c14610e64576103ad565b8063f1d5f51714610d2d578063f2fde38b14610d56578063f455444614610d7f578063f84ba65d14610da8576103ad565b8063ec28438a116100dc578063ec28438a14610c87578063ee828db314610cb0578063ef422a1814610cd9578063f0cd1dac14610d02576103ad565b8063da00097d14610bdd578063dc44b6a014610c08578063dd62ed3e14610c33578063e6b2603b14610c70576103ad565b8063a5d69d1f11610185578063c816841b11610154578063c816841b14610b1f578063c860795214610b4a578063c867d60b14610b75578063d2d7ad8314610bb2576103ad565b8063a5d69d1f14610a65578063a9059cbb14610a8e578063c49b9a8014610acb578063c5d2418914610af4576103ad565b80638b42507f116101c15780638b42507f146109955780638da5cb5b146109d257806395d89b41146109fd578063a457c2d714610a28576103ad565b8063844d591c14610916578063852614851461093f57806388790a681461096a576103ad565b806339509351116102cc5780635881f3ef1161026a57806375f0a8741161023957806375f0a8741461086a5780637d1db4a514610895578063807c2d9c146108c057806382eefb43146108eb576103ad565b80635881f3ef146107b057806367243482146107ed57806370a0823114610816578063715018a614610853576103ad565b80634a74bb02116102a65780634a74bb02146106f45780634cb80fd51461071f5780635194f9bf146107485780635342acb414610773576103ad565b806339509351146106515780633b97084a1461068e5780633ecad271146106b7576103ad565b80631870517a116103445780632563ae83116103135780632563ae83146105a757806327c8f835146105d05780632b112e49146105fb578063313ce56714610626576103ad565b80631870517a146104ed5780632198cf6c1461051657806323555d571461053f57806323b872dd1461056a576103ad565b8063095ea7b311610380578063095ea7b314610431578063153b0d1e1461046e5780631694505e1461049757806318160ddd146104c2576103ad565b806306fdde03146103b257806308733214146103dd5780630930907b14610406576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e8d565b6040516103d49190614ee2565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff91906149f7565b610f1f565b005b34801561041257600080fd5b5061041b610fff565b6040516104289190614dc3565b60405180910390f35b34801561043d57600080fd5b50610458600480360381019061045391906148af565b611023565b6040516104659190614eac565b60405180910390f35b34801561047a57600080fd5b506104956004803603810190610490919061486f565b611041565b005b3480156104a357600080fd5b506104ac611131565b6040516104b99190614ec7565b60405180910390f35b3480156104ce57600080fd5b506104d7611157565b6040516104e491906150a4565b60405180910390f35b3480156104f957600080fd5b50610514600480360381019061050f91906149f7565b611161565b005b34801561052257600080fd5b5061053d6004803603810190610538919061486f565b611241565b005b34801561054b57600080fd5b50610554611331565b60405161056191906150a4565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c919061481c565b611337565b60405161059e9190614eac565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190614970565b611411565b005b3480156105dc57600080fd5b506105e56114c3565b6040516105f29190614dc3565b60405180910390f35b34801561060757600080fd5b506106106114e7565b60405161061d91906150a4565b60405180910390f35b34801561063257600080fd5b5061063b611565565b6040516106489190615149565b60405180910390f35b34801561065d57600080fd5b50610678600480360381019061067391906148af565b61157c565b6040516106859190614eac565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b091906149ca565b61162f565b005b3480156106c357600080fd5b506106de60048036038101906106d99190614782565b6116ce565b6040516106eb9190614eac565b60405180910390f35b34801561070057600080fd5b506107096116ee565b6040516107169190614eac565b60405180910390f35b34801561072b57600080fd5b5061074660048036038101906107419190614782565b611701565b005b34801561075457600080fd5b5061075d6117da565b60405161076a91906150a4565b60405180910390f35b34801561077f57600080fd5b5061079a60048036038101906107959190614782565b6117e0565b6040516107a79190614eac565b60405180910390f35b3480156107bc57600080fd5b506107d760048036038101906107d29190614782565b611800565b6040516107e49190614dc3565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f91906148ef565b611ce4565b005b34801561082257600080fd5b5061083d60048036038101906108389190614782565b6120bf565b60405161084a91906150a4565b60405180910390f35b34801561085f57600080fd5b50610868612108565b005b34801561087657600080fd5b5061087f61225d565b60405161088c9190614dde565b60405180910390f35b3480156108a157600080fd5b506108aa612283565b6040516108b791906150a4565b60405180910390f35b3480156108cc57600080fd5b506108d5612289565b6040516108e291906150a4565b60405180910390f35b3480156108f757600080fd5b5061090061228f565b60405161090d91906150a4565b60405180910390f35b34801561092257600080fd5b5061093d6004803603810190610938919061486f565b612295565b005b34801561094b57600080fd5b50610954612385565b6040516109619190614eac565b60405180910390f35b34801561097657600080fd5b5061097f612398565b60405161098c91906150a4565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b79190614782565b61239e565b6040516109c99190614eac565b60405180910390f35b3480156109de57600080fd5b506109e76123be565b6040516109f49190614dc3565b60405180910390f35b348015610a0957600080fd5b50610a126123e7565b604051610a1f9190614ee2565b60405180910390f35b348015610a3457600080fd5b50610a4f6004803603810190610a4a91906148af565b612479565b604051610a5c9190614eac565b60405180910390f35b348015610a7157600080fd5b50610a8c6004803603810190610a879190614970565b612546565b005b348015610a9a57600080fd5b50610ab56004803603810190610ab091906148af565b6125f8565b604051610ac29190614eac565b60405180910390f35b348015610ad757600080fd5b50610af26004803603810190610aed9190614970565b612617565b005b348015610b0057600080fd5b50610b09612700565b604051610b1691906150a4565b60405180910390f35b348015610b2b57600080fd5b50610b34612706565b604051610b419190614dc3565b60405180910390f35b348015610b5657600080fd5b50610b5f61272c565b604051610b6c91906150a4565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b979190614782565b612732565b604051610ba99190614eac565b60405180910390f35b348015610bbe57600080fd5b50610bc7612752565b604051610bd491906150a4565b60405180910390f35b348015610be957600080fd5b50610bf2612758565b604051610bff9190614eac565b60405180910390f35b348015610c1457600080fd5b50610c1d61276b565b604051610c2a91906150a4565b60405180910390f35b348015610c3f57600080fd5b50610c5a6004803603810190610c5591906147dc565b612771565b604051610c6791906150a4565b60405180910390f35b348015610c7c57600080fd5b50610c856127f8565b005b348015610c9357600080fd5b50610cae6004803603810190610ca991906149ca565b612906565b005b348015610cbc57600080fd5b50610cd76004803603810190610cd29190614970565b6129a5565b005b348015610ce557600080fd5b50610d006004803603810190610cfb919061486f565b612a57565b005b348015610d0e57600080fd5b50610d17612b47565b604051610d2491906150a4565b60405180910390f35b348015610d3957600080fd5b50610d546004803603810190610d4f91906149ca565b612b4d565b005b348015610d6257600080fd5b50610d7d6004803603810190610d789190614782565b612bec565b005b348015610d8b57600080fd5b50610da66004803603810190610da191906148af565b612dae565b005b348015610db457600080fd5b50610dcf6004803603810190610dca919061486f565b612ed5565b005b348015610ddd57600080fd5b50610de6612fc5565b604051610df39190614eac565b60405180910390f35b348015610e0857600080fd5b50610e11612fd8565b604051610e1e9190614dde565b60405180910390f35b348015610e3357600080fd5b50610e4e6004803603810190610e499190614782565b612ffe565b604051610e5b9190614eac565b60405180910390f35b348015610e7057600080fd5b50610e8b6004803603810190610e869190614782565b61301e565b005b606060018054610e9c906153bb565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec8906153bb565b8015610f155780601f10610eea57610100808354040283529160200191610f15565b820191906000526020600020905b815481529060010190602001808311610ef857829003601f168201915b5050505050905090565b610f2761321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab90615044565b60405180910390fd5b82600f819055508160108190555080601181905550610ff4601154610fe6601054600f546131bc90919063ffffffff16565b6131bc90919063ffffffff16565b601381905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061103761103061321a565b8484613222565b6001905092915050565b61104961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd90615044565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b61116961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed90615044565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611236600e54611228600d54600c546131bc90919063ffffffff16565b6131bc90919063ffffffff16565b601281905550505050565b61124961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd90615044565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b60006113448484846133ed565b506114068461135161321a565b611401856040518060600160405280602881526020016158d960289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113b761321a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b039092919063ffffffff16565b613222565b600190509392505050565b61141961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d90615044565b60405180910390fd5b80601960176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006115606115157f00000000000000000000000000000000000000000000000000000000000000006120bf565b6115526115417f000000000000000000000000000000000000000000000000000000000000dead6120bf565b601454613b6790919063ffffffff16565b613b6790919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b600061162561158961321a565b84611620856006600061159a61321a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b613222565b6001905092915050565b61163761321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb90615044565b60405180910390fd5b8060158190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b601960159054906101000a900460ff1681565b61170961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d90615044565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b60076020528060005260406000206000915054906101000a900460ff1681565b600061180a61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e90615044565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118e257600080fd5b505afa1580156118f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191a91906147af565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561197c57600080fd5b505afa158015611990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b491906147af565b6040518363ffffffff1660e01b81526004016119d1929190614df9565b60206040518083038186803b1580156119e957600080fd5b505afa1580156119fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2191906147af565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611be2578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9e57600080fd5b505afa158015611ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad691906147af565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3857600080fd5b505afa158015611b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7091906147af565b6040518363ffffffff1660e01b8152600401611b8d929190614df9565b602060405180830381600087803b158015611ba757600080fd5b505af1158015611bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdf91906147af565b91505b81601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611cec61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7090615044565b60405180910390fd5b6000339050828290508585905014611dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbd90615024565b60405180910390fd5b600080600090505b84849050811015611e1357848482818110611dec57611deb6154c3565b5b9050602002013582611dfe91906151c4565b91508080611e0b906153ed565b915050611dce565b5080611e1e836120bf565b1015611e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5690614f24565b60405180910390fd5b611eb181600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6790919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b868690508110156120b657611f94858583818110611f1857611f176154c3565b5b90506020020135600560008a8a86818110611f3657611f356154c3565b5b9050602002016020810190611f4b9190614782565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b60056000898985818110611fab57611faa6154c3565b5b9050602002016020810190611fc09190614782565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550868682818110612011576120106154c3565b5b90506020020160208101906120269190614782565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef878785818110612087576120866154c3565b5b9050602002013560405161209b91906150a4565b60405180910390a380806120ae906153ed565b915050611ef7565b50505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61211061321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461219d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219490615044565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b60175481565b60135481565b61229d61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232190615044565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960189054906101000a900460ff1681565b600f5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546123f6906153bb565b80601f0160208091040260200160405190810160405280929190818152602001828054612422906153bb565b801561246f5780601f106124445761010080835404028352916020019161246f565b820191906000526020600020905b81548152906001019060200180831161245257829003601f168201915b5050505050905090565b600061253c61248661321a565b846125378560405180606001604052806025815260200161590160259139600660006124b061321a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b039092919063ffffffff16565b613222565b6001905092915050565b61254e61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d290615044565b60405180910390fd5b80601960166101000a81548160ff02191690831515021790555050565b600061260c61260561321a565b84846133ed565b506001905092915050565b61261f61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a390615044565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516126f59190614eac565b60405180910390a150565b600d5481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60155481565b601960169054906101000a900460ff1681565b600c5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61280061321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461288d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288490615044565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516128b390614dae565b60006040518083038185875af1925050503d80600081146128f0576040519150601f19603f3d011682016040523d82523d6000602084013e6128f5565b606091505b505090508061290357600080fd5b50565b61290e61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461299b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299290615044565b60405180910390fd5b8060168190555050565b6129ad61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3190615044565b60405180910390fd5b80601960186101000a81548160ff02191690831515021790555050565b612a5f61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae390615044565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b612b5561321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd990615044565b60405180910390fd5b8060178190555050565b612bf461321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7890615044565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce890614f44565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612db661321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3a90615044565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612e7e929190614e22565b602060405180830381600087803b158015612e9857600080fd5b505af1158015612eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed0919061499d565b505050565b612edd61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6190615044565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b61302661321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130aa90615044565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083141561310a576000905061316c565b60008284613118919061524b565b9050828482613127919061521a565b14613167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315e90615004565b60405180910390fd5b809150505b92915050565b60006131b483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613bb1565b905092915050565b60008082846131cb91906151c4565b905083811015613210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320790614f84565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613292576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328990615084565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f990614f64565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516133e091906150a4565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561345e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345590615064565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156134ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134c590614f04565b60405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135725750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6135b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a890614fc4565b60405180910390fd5b601960149054906101000a900460ff16156135d8576135d1848484613c14565b9050613afc565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561367c5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136945750601960189054906101000a900460ff165b156136df576016548211156136de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136d590614fe4565b60405180910390fd5b5b60006136ea306120bf565b9050600060155482101590508080156137105750601960149054906101000a900460ff16155b80156137665750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561377e5750601960159054906101000a900460ff165b156137a857601960169054906101000a900460ff161561379e5760155491505b6137a782613de7565b5b613831846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b039092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139175750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61392b576139268787876140b2565b61392d565b845b9050601960179054906101000a900460ff1680156139955750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156139fa576017546139b8826139aa896120bf565b6131bc90919063ffffffff16565b11156139f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139f090614fa4565b60405180910390fd5b5b613a4c81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613aec91906150a4565b60405180910390a3600193505050505b9392505050565b6000838311158290613b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b429190614ee2565b60405180910390fd5b5060008385613b5a91906152a5565b9050809150509392505050565b6000613ba983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613b03565b905092915050565b60008083118290613bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bef9190614ee2565b60405180910390fd5b5060008385613c07919061521a565b9050809150509392505050565b6000613c9f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b039092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d3482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613dd491906150a4565b60405180910390a3600190509392505050565b6001601960146101000a81548160ff0219169083151502179055506000613e1b6013546012546131bc90919063ffffffff16565b90506000613e36600f54600c546131bc90919063ffffffff16565b90506000613e51601054600d546131bc90919063ffffffff16565b90506000613e8d6002613e7f86613e71878a6130f790919063ffffffff16565b61317290919063ffffffff16565b61317290919063ffffffff16565b90506000613ea48287613b6790919063ffffffff16565b90506000479050613eb4826142d9565b6000613ec98247613b6790919063ffffffff16565b90506000613ef3613ee460028961317290919063ffffffff16565b89613b6790919063ffffffff16565b90506000613f2f6002613f2184613f138c886130f790919063ffffffff16565b61317290919063ffffffff16565b61317290919063ffffffff16565b90506000613f5883613f4a8a876130f790919063ffffffff16565b61317290919063ffffffff16565b90506000613f8182613f738588613b6790919063ffffffff16565b613b6790919063ffffffff16565b90506000821115613ff657600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613ff4573d6000803e3d6000fd5b505b600081111561406957600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614067573d6000803e3d6000fd5b505b6000831180156140795750600088115b15614089576140888884614564565b5b50505050505050505050506000601960146101000a81548160ff02191690831515021790555050565b60008060009050600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561413a576141336064614125601254866130f790919063ffffffff16565b61317290919063ffffffff16565b90506141b8565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141b7576141b460646141a6601354866130f790919063ffffffff16565b61317290919063ffffffff16565b90505b5b60008111156142bc5761421381600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516142b391906150a4565b60405180910390a35b6142cf8184613b6790919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff8111156142f6576142f56154f2565b5b6040519080825280602002602001820160405280156143245781602001602082028036833780820191505090505b509050308160008151811061433c5761433b6154c3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156143de57600080fd5b505afa1580156143f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061441691906147af565b8160018151811061442a576144296154c3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061449130601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613222565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016144f59594939291906150ef565b600060405180830381600087803b15801561450f57600080fd5b505af1158015614523573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516145589291906150bf565b60405180910390a15050565b61459130601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613222565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806145dd6123be565b426040518863ffffffff1660e01b81526004016145ff96959493929190614e4b565b6060604051808303818588803b15801561461857600080fd5b505af115801561462c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906146519190614a4a565b5050505050565b60008135905061466781615893565b92915050565b60008151905061467c81615893565b92915050565b60008083601f84011261469857614697615526565b5b8235905067ffffffffffffffff8111156146b5576146b4615521565b5b6020830191508360208202830111156146d1576146d061552b565b5b9250929050565b60008083601f8401126146ee576146ed615526565b5b8235905067ffffffffffffffff81111561470b5761470a615521565b5b6020830191508360208202830111156147275761472661552b565b5b9250929050565b60008135905061473d816158aa565b92915050565b600081519050614752816158aa565b92915050565b600081359050614767816158c1565b92915050565b60008151905061477c816158c1565b92915050565b60006020828403121561479857614797615535565b5b60006147a684828501614658565b91505092915050565b6000602082840312156147c5576147c4615535565b5b60006147d38482850161466d565b91505092915050565b600080604083850312156147f3576147f2615535565b5b600061480185828601614658565b925050602061481285828601614658565b9150509250929050565b60008060006060848603121561483557614834615535565b5b600061484386828701614658565b935050602061485486828701614658565b925050604061486586828701614758565b9150509250925092565b6000806040838503121561488657614885615535565b5b600061489485828601614658565b92505060206148a58582860161472e565b9150509250929050565b600080604083850312156148c6576148c5615535565b5b60006148d485828601614658565b92505060206148e585828601614758565b9150509250929050565b6000806000806040858703121561490957614908615535565b5b600085013567ffffffffffffffff81111561492757614926615530565b5b61493387828801614682565b9450945050602085013567ffffffffffffffff81111561495657614955615530565b5b614962878288016146d8565b925092505092959194509250565b60006020828403121561498657614985615535565b5b60006149948482850161472e565b91505092915050565b6000602082840312156149b3576149b2615535565b5b60006149c184828501614743565b91505092915050565b6000602082840312156149e0576149df615535565b5b60006149ee84828501614758565b91505092915050565b600080600060608486031215614a1057614a0f615535565b5b6000614a1e86828701614758565b9350506020614a2f86828701614758565b9250506040614a4086828701614758565b9150509250925092565b600080600060608486031215614a6357614a62615535565b5b6000614a718682870161476d565b9350506020614a828682870161476d565b9250506040614a938682870161476d565b9150509250925092565b6000614aa98383614ac4565b60208301905092915050565b614abe816152eb565b82525050565b614acd816152d9565b82525050565b614adc816152d9565b82525050565b6000614aed82615174565b614af78185615197565b9350614b0283615164565b8060005b83811015614b33578151614b1a8882614a9d565b9750614b258361518a565b925050600181019050614b06565b5085935050505092915050565b614b49816152fd565b82525050565b614b5881615340565b82525050565b614b6781615352565b82525050565b6000614b788261517f565b614b8281856151b3565b9350614b92818560208601615388565b614b9b8161553a565b840191505092915050565b6000614bb36023836151b3565b9150614bbe8261554b565b604082019050919050565b6000614bd6601b836151b3565b9150614be18261559a565b602082019050919050565b6000614bf96026836151b3565b9150614c04826155c3565b604082019050919050565b6000614c1c6022836151b3565b9150614c2782615612565b604082019050919050565b6000614c3f601b836151b3565b9150614c4a82615661565b602082019050919050565b6000614c626025836151b3565b9150614c6d8261568a565b604082019050919050565b6000614c85601d836151b3565b9150614c90826156d9565b602082019050919050565b6000614ca86028836151b3565b9150614cb382615702565b604082019050919050565b6000614ccb6021836151b3565b9150614cd682615751565b604082019050919050565b6000614cee6016836151b3565b9150614cf9826157a0565b602082019050919050565b6000614d116020836151b3565b9150614d1c826157c9565b602082019050919050565b6000614d346025836151b3565b9150614d3f826157f2565b604082019050919050565b6000614d576000836151a8565b9150614d6282615841565b600082019050919050565b6000614d7a6024836151b3565b9150614d8582615844565b604082019050919050565b614d9981615329565b82525050565b614da881615333565b82525050565b6000614db982614d4a565b9150819050919050565b6000602082019050614dd86000830184614ad3565b92915050565b6000602082019050614df36000830184614ab5565b92915050565b6000604082019050614e0e6000830185614ad3565b614e1b6020830184614ad3565b9392505050565b6000604082019050614e376000830185614ad3565b614e446020830184614d90565b9392505050565b600060c082019050614e606000830189614ad3565b614e6d6020830188614d90565b614e7a6040830187614b5e565b614e876060830186614b5e565b614e946080830185614ad3565b614ea160a0830184614d90565b979650505050505050565b6000602082019050614ec16000830184614b40565b92915050565b6000602082019050614edc6000830184614b4f565b92915050565b60006020820190508181036000830152614efc8184614b6d565b905092915050565b60006020820190508181036000830152614f1d81614ba6565b9050919050565b60006020820190508181036000830152614f3d81614bc9565b9050919050565b60006020820190508181036000830152614f5d81614bec565b9050919050565b60006020820190508181036000830152614f7d81614c0f565b9050919050565b60006020820190508181036000830152614f9d81614c32565b9050919050565b60006020820190508181036000830152614fbd81614c55565b9050919050565b60006020820190508181036000830152614fdd81614c78565b9050919050565b60006020820190508181036000830152614ffd81614c9b565b9050919050565b6000602082019050818103600083015261501d81614cbe565b9050919050565b6000602082019050818103600083015261503d81614ce1565b9050919050565b6000602082019050818103600083015261505d81614d04565b9050919050565b6000602082019050818103600083015261507d81614d27565b9050919050565b6000602082019050818103600083015261509d81614d6d565b9050919050565b60006020820190506150b96000830184614d90565b92915050565b60006040820190506150d46000830185614d90565b81810360208301526150e68184614ae2565b90509392505050565b600060a0820190506151046000830188614d90565b6151116020830187614b5e565b81810360408301526151238186614ae2565b90506151326060830185614ad3565b61513f6080830184614d90565b9695505050505050565b600060208201905061515e6000830184614d9f565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006151cf82615329565b91506151da83615329565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561520f5761520e615436565b5b828201905092915050565b600061522582615329565b915061523083615329565b9250826152405761523f615465565b5b828204905092915050565b600061525682615329565b915061526183615329565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561529a57615299615436565b5b828202905092915050565b60006152b082615329565b91506152bb83615329565b9250828210156152ce576152cd615436565b5b828203905092915050565b60006152e482615309565b9050919050565b60006152f682615309565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061534b82615364565b9050919050565b600061535d82615329565b9050919050565b600061536f82615376565b9050919050565b600061538182615309565b9050919050565b60005b838110156153a657808201518184015260208101905061538b565b838111156153b5576000848401525b50505050565b600060028204905060018216806153d357607f821691505b602082108114156153e7576153e6615494565b5b50919050565b60006153f882615329565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561542b5761542a615436565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f426f7420456e656d792061646472657373205265737472696374656421000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61589c816152d9565b81146158a757600080fd5b50565b6158b3816152fd565b81146158be57600080fd5b50565b6158ca81615329565b81146158d557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206c0bb1e40f8f8532cd3339eb7e09c2a0beb9d46cdd7496d709771d20bbb64f2c64736f6c63430008070033

Deployed Bytecode Sourcemap

14146:16324:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18060:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22991:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14650:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19226:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21659:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15782:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18337:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22674:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20159:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15225:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23585:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20536:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14562:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21495:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18246:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18723:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20767:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14924:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15897:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20899:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15359:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14867:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21918:748;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29762:697;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18445:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5823:230;;;;;;;;;;;;;:::i;:::-;;14358:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15636:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15708:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15443:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19740:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16040:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15273:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15084:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5598:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18151:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18949:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21358:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23410:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21179:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15183:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15830:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15316:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15025:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15547:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15944:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15141:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18572:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25947:154;;;;;;;;;;;;;:::i;:::-;;20417:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20302:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19877:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15404:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20657:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6061:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25800:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20020:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15998:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14457:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14976:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21039:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18060:83;18097:13;18130:5;18123:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18060:83;:::o;22991:317::-;5742:12;:10;:12::i;:::-;5732:22;;:6;;;;;;;;;;:22;;;5724:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23113:10:::1;23093:17;:30;;;;23154:10;23134:17;:30;;;;23195:10;23175:17;:30;;;;23237:63;23282:17;;23237:40;23259:17;;23237;;:21;;:40;;;;:::i;:::-;:44;;:63;;;;:::i;:::-;23216:18;:84;;;;22991:317:::0;;;:::o;14650:81::-;;;:::o;19226:161::-;19301:4;19318:39;19327:12;:10;:12::i;:::-;19341:7;19350:6;19318:8;:39::i;:::-;19375:4;19368:11;;19226:161;;;;:::o;21659:113::-;5742:12;:10;:12::i;:::-;5732:22;;:6;;;;;;;;;;:22;;;5724:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21757:7:::1;21739:9;:15;21749:4;21739:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;21659:113:::0;;:::o;15782:41::-;;;;;;;;;;;;;:::o;18337:100::-;18390:7;18417:12;;18410:19;;18337:100;:::o;22674:309::-;5742:12;:10;:12::i;:::-;5732:22;;:6;;;;;;;;;;:22;;;5724:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22794:10:::1;22775:16;:29;;;;22834:10;22815:16;:29;;;;22874:10;22855:16;:29;;;;22915:60;22958:16;;22915:38;22936:16;;22915;;:20;;:38;;;;:::i;:::-;:42;;:60;;;;:::i;:::-;22895:17;:80;;;;22674:309:::0;;;:::o;20159:135::-;5742:12;:10;:12::i;:::-;5732:22;;:6;;;;;;;;;;:22;;;5724:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20280:6:::1;20250:19;:27;20270:6;20250:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;20159:135:::0;;:::o;15225:35::-;;;;:::o;23585:313::-;23683:4;23700:36;23710:6;23718:9;23729:6;23700:9;:36::i;:::-;;23747:121;23756:6;23764:12;:10;:12::i;:::-;23778:89;23816:6;23778:89;;;;;;;;;;;;;;;;;:11;:19;23790:6;23778:19;;;;;;;;;;;;;;;:33;23798:12;:10;:12::i;:::-;23778:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;23747:8;:121::i;:::-;23886:4;23879:11;;23585:313;;;;;:::o;20536:113::-;5742:12;:10;:12::i;:::-;5732:22;;:6;;;;;;;;;;:22;;;5724:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20633:8:::1;20614:16;;:27;;;;;;;;;;;;;;;;;;20536:113:::0;:::o;14562:81::-;;;:::o;21495:156::-;21548:7;21575:68;21620:22;21630:11;21620:9;:22::i;:::-;21575:40;21592:22;21602:11;21592:9;:22::i;:::-;21575:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;21568:75;;21495:156;:::o;18246:83::-;18287:5;18312:9;;;;;;;;;;;18305:16;;18246:83;:::o;18723:218::-;18811:4;18828:83;18837:12;:10;:12::i;:::-;18851:7;18860:50;18899:10;18860:11;:25;18872:12;:10;:12::i;:::-;18860:25;;;;;;;;;;;;;;;:34;18886:7;18860:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18828:8;:83::i;:::-;18929:4;18922:11;;18723:218;;;;:::o;20767:124::-;5742:12;:10;:12::i;:::-;5732:22;;:6;;;;;;;;;;:22;;;5724:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20875:8:::1;20849:23;:34;;;;20767:124:::0;:::o;14924:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;15897:40::-;;;;;;;;;;;;;:::o;20899:132::-;5742:12;:10;:12::i;:::-;5732:22;;:6;;;;;;;;;;:22;;;5724:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21012:10:::1;20986:15;;:37;;;;;;;;;;;;;;;;;;20899:132:::0;:::o;15359:36::-;;;;:::o;14867:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;21918:748::-;21998:22;5742:12;:10;:12::i;:::-;5732:22;;:6;;;;;;;;;;:22;;;5724:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22035:35:::1;22092:16;22035:74;;22158:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22140:53;;;22202:4;22209:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22140:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22123:110;;22275:1;22249:28;;:14;:28;;;22246:225;;;22363:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22345:74;;;22428:4;22435:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22345:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22328:131;;22246:225;22497:14;22483:11;;:28;;;;;;;;;;;;;;;;;;22563:16;22545:15;;:34;;;;;;;;;;;;;;;;;;22654:4;22617:12;:34;22638:11;;;;;;;;;;;22617:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;22022:644;21918:748:::0;;;:::o;29762:697::-;5742:12;:10;:12::i;:::-;5732:22;;:6;;;;;;;;;;:22;;;5724:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29862:15:::1;29880:10;29862:28;;29928:7;;:14;;29909:8;;:15;;:33;29901:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29979:15;30009:6:::0;30018:1:::1;30009:10;;30005:92;30025:7;;:14;;30021:1;:18;30005:92;;;30075:7;;30083:1;30075:10;;;;;;;:::i;:::-;;;;;;;;30061:24;;;;;:::i;:::-;;;30041:3;;;;;:::i;:::-;;;;30005:92;;;;30137:10;30115:18;30125:7;30115:9;:18::i;:::-;:32;;30107:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;30210:34;30233:10;30210:9;:18;30220:7;30210:18;;;;;;;;;;;;;;;;:22;;:34;;;;:::i;:::-;30189:9;:18;30199:7;30189:18;;;;;;;;;;;;;;;:55;;;;30260:6;30256:194;30276:8;;:15;;30272:1;:19;30256:194;;;30338:38;30365:7;;30373:1;30365:10;;;;;;;:::i;:::-;;;;;;;;30338:9;:22;30348:8;;30357:1;30348:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;30338:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;30313:9;:22;30323:8;;30332:1;30323:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;30313:22;;;;;;;;;;;;;;;:63;;;;30414:8;;30423:1;30414:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;30396:42;;30405:7;30396:42;;;30427:7;;30435:1;30427:10;;;;;;;:::i;:::-;;;;;;;;30396:42;;;;;;:::i;:::-;;;;;;;;30293:3;;;;;:::i;:::-;;;;30256:194;;;;29851:608;;29762:697:::0;;;;:::o;18445:119::-;18511:7;18538:9;:18;18548:7;18538:18;;;;;;;;;;;;;;;;18531:25;;18445:119;;;:::o;5823:230::-;5742:12;:10;:12::i;:::-;5732:22;;:6;;;;;;;;;;:22;;;5724:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5930:42:::1;5893:81;;5914:6;::::0;::::1;;;;;;;;5893:81;;;;;;;;;;;;6002:42;5985:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;5823:230::o:0;14358:92::-;;;;;;;;;;;;;:::o;15636:59::-;;;;:::o;15708:58::-;;;;:::o;15443:33::-;;;;:::o;19740:129::-;5742:12;:10;:12::i;:::-;5732:22;;:6;;;;;;;;;;:22;;;5724:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19853:8:::1;19829:12;:21;19842:7;19829:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;19740:129:::0;;:::o;16040:41::-;;;;;;;;;;;;;:::o;15273:36::-;;;;:::o;15084:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;5598:79::-;5636:7;5663:6;;;;;;;;;;;5656:13;;5598:79;:::o;18151:87::-;18190:13;18223:7;18216:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18151:87;:::o;18949:269::-;19042:4;19059:129;19068:12;:10;:12::i;:::-;19082:7;19091:96;19130:15;19091:96;;;;;;;;;;;;;;;;;:11;:25;19103:12;:10;:12::i;:::-;19091:25;;;;;;;;;;;;;;;:34;19117:7;19091:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19059:8;:129::i;:::-;19206:4;19199:11;;18949:269;;;;:::o;21358:125::-;5742:12;:10;:12::i;:::-;5732:22;;:6;;;;;;;;;;:22;;;5724:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21467:8:::1;21439:25;;:36;;;;;;;;;;;;;;;;;;21358:125:::0;:::o;23410:167::-;23488:4;23505:42;23515:12;:10;:12::i;:::-;23529:9;23540:6;23505:9;:42::i;:::-;;23565:4;23558:11;;23410:167;;;;:::o;21179:171::-;5742:12;:10;:12::i;:::-;5732:22;;:6;;;;;;;;;;:22;;;5724:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21280:8:::1;21256:21;;:32;;;;;;;;;;;;;;;;;;21304:38;21333:8;21304:38;;;;;;:::i;:::-;;;;;;;;21179:171:::0;:::o;15183:35::-;;;;:::o;15830:26::-;;;;;;;;;;;;;:::o;15316:36::-;;;;:::o;15025:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;15547:69::-;;;;:::o;15944:45::-;;;;;;;;;;;;;:::o;15141:35::-;;;;:::o;18572:143::-;18653:7;18680:11;:18;18692:5;18680:18;;;;;;;;;;;;;;;:27;18699:7;18680:27;;;;;;;;;;;;;;;;18673:34;;18572:143;;;;:::o;25947:154::-;5742:12;:10;:12::i;:::-;5732:22;;:6;;;;;;;;;;:22;;;5724:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26001:7:::1;26021:10;26013:24;;26045:21;26013:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26000:71;;;26090:2;26082:11;;;::::0;::::1;;25989:112;25947:154::o:0;20417:111::-;5742:12;:10;:12::i;:::-;5732:22;;:6;;;;;;;;;;:22;;;5724:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20509:11:::1;20494:12;:26;;;;20417:111:::0;:::o;20302:107::-;5742:12;:10;:12::i;:::-;5732:22;;:6;;;;;;;;;;:22;;;5724:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20394:7:::1;20369:22;;:32;;;;;;;;;;;;;;;;;;20302:107:::0;:::o;19877:135::-;5742:12;:10;:12::i;:::-;5732:22;;:6;;;;;;;;;;:22;;;5724:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19996:8:::1;19967:17;:26;19985:7;19967:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;19877:135:::0;;:::o;15404:32::-;;;;:::o;20657:102::-;5742:12;:10;:12::i;:::-;5732:22;;:6;;;;;;;;;;:22;;;5724:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20743:8:::1;20729:10;:22;;;;20657:102:::0;:::o;6061:244::-;5742:12;:10;:12::i;:::-;5732:22;;:6;;;;;;;;;;:22;;;5724:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6170:1:::1;6150:22;;:8;:22;;;;6142:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6260:8;6231:38;;6252:6;::::0;::::1;;;;;;;;6231:38;;;;;;;;;;;;6289:8;6280:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6061:244:::0;:::o;25800:139::-;5742:12;:10;:12::i;:::-;5732:22;;:6;;;;;;;;;;:22;;;5724:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25895:6:::1;25888:23;;;25912:10;25923:7;25888:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25800:139:::0;;:::o;20020:127::-;5742:12;:10;:12::i;:::-;5732:22;;:6;;;;;;;;;;:22;;;5724:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20133:6:::1;20107:15;:23;20123:6;20107:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20020:127:::0;;:::o;15998:35::-;;;;;;;;;;;;;:::o;14457:92::-;;;;;;;;;;;;;:::o;14976:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;21039:132::-;5742:12;:10;:12::i;:::-;5732:22;;:6;;;;;;;;;;:22;;;5724:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21152:10:::1;21126:15;;:37;;;;;;;;;;;;;;;;;;21039:132:::0;:::o;4283:250::-;4341:7;4370:1;4365;:6;4361:47;;;4395:1;4388:8;;;;4361:47;4420:9;4436:1;4432;:5;;;;:::i;:::-;4420:17;;4465:1;4460;4456;:5;;;;:::i;:::-;:10;4448:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4524:1;4517:8;;;4283:250;;;;;:::o;4541:132::-;4599:7;4626:39;4630:1;4633;4626:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4619:46;;4541:132;;;;:::o;3750:181::-;3808:7;3828:9;3844:1;3840;:5;;;;:::i;:::-;3828:17;;3869:1;3864;:6;;3856:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3922:1;3915:8;;;3750:181;;;;:::o;2808:115::-;2861:15;2904:10;2889:26;;2808:115;:::o;19395:337::-;19505:1;19488:19;;:5;:19;;;;19480:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19586:1;19567:21;;:7;:21;;;;19559:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19670:6;19640:11;:18;19652:5;19640:18;;;;;;;;;;;;;;;:27;19659:7;19640:27;;;;;;;;;;;;;;;:36;;;;19708:7;19692:32;;19701:5;19692:32;;;19717:6;19692:32;;;;;;:::i;:::-;;;;;;;;19395:337;;;:::o;23906:1886::-;23993:4;24038:1;24020:20;;:6;:20;;;;24012:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;24122:1;24101:23;;:9;:23;;;;24093:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;24184:9;:17;24194:6;24184:17;;;;;;;;;;;;;;;;;;;;;;;;;24183:18;:43;;;;;24206:9;:20;24216:9;24206:20;;;;;;;;;;;;;;;;;;;;;;;;;24205:21;24183:43;24175:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;24276:16;;;;;;;;;;;24273:1502;;;24326:41;24341:6;24349:9;24360:6;24326:14;:41::i;:::-;24319:48;;;;24273:1502;24425:15;:23;24441:6;24425:23;;;;;;;;;;;;;;;;;;;;;;;;;24424:24;:55;;;;;24453:15;:26;24469:9;24453:26;;;;;;;;;;;;;;;;;;;;;;;;;24452:27;24424:55;:81;;;;;24483:22;;;;;;;;;;;24424:81;24421:196;;;24544:12;;24534:6;:22;;24526:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;24421:196;24633:28;24664:24;24682:4;24664:9;:24::i;:::-;24633:55;;24703:28;24758:23;;24734:20;:47;;24703:78;;24814:23;:44;;;;;24842:16;;;;;;;;;;;24841:17;24814:44;:69;;;;;24863:12;:20;24876:6;24863:20;;;;;;;;;;;;;;;;;;;;;;;;;24862:21;24814:69;:94;;;;;24887:21;;;;;;;;;;;24814:94;24810:305;;;24946:25;;;;;;;;;;;24943:97;;;25017:23;;24994:46;;24943:97;25059:36;25074:20;25059:14;:36::i;:::-;24810:305;25151:53;25173:6;25151:53;;;;;;;;;;;;;;;;;:9;:17;25161:6;25151:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;25131:9;:17;25141:6;25131:17;;;;;;;;;;;;;;;:73;;;;25221:19;25244:17;:25;25262:6;25244:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;25273:17;:28;25291:9;25273:28;;;;;;;;;;;;;;;;;;;;;;;;;25244:57;25243:148;;25357:34;25365:6;25373:9;25384:6;25357:7;:34::i;:::-;25243:148;;;25348:6;25243:148;25221:170;;25411:16;;;;;;;;;;;:51;;;;;25432:19;:30;25452:9;25432:30;;;;;;;;;;;;;;;;;;;;;;;;;25431:31;25411:51;25408:191;;;25532:10;;25491:37;25516:11;25491:20;25501:9;25491;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;25483:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;25408:191;25638:37;25663:11;25638:9;:20;25648:9;25638:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;25615:9;:20;25625:9;25615:20;;;;;;;;;;;;;;;:60;;;;25714:9;25697:40;;25706:6;25697:40;;;25725:11;25697:40;;;;;;:::i;:::-;;;;;;;;25759:4;25752:11;;;;;23906:1886;;;;;;:::o;4083:192::-;4169:7;4202:1;4197;:6;;4205:12;4189:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4229:9;4245:1;4241;:5;;;;:::i;:::-;4229:17;;4266:1;4259:8;;;4083:192;;;;;:::o;3939:136::-;3997:7;4024:43;4028:1;4031;4024:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4017:50;;3939:136;;;;:::o;4681:278::-;4767:7;4799:1;4795;:5;4802:12;4787:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4826:9;4842:1;4838;:5;;;;:::i;:::-;4826:17;;4950:1;4943:8;;;4681:278;;;;;:::o;26109:330::-;26202:4;26239:53;26261:6;26239:53;;;;;;;;;;;;;;;;;:9;:17;26249:6;26239:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;26219:9;:17;26229:6;26219:17;;;;;;;;;;;;;;;:73;;;;26326:32;26351:6;26326:9;:20;26336:9;26326:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;26303:9;:20;26313:9;26303:20;;;;;;;;;;;;;;;:55;;;;26391:9;26374:35;;26383:6;26374:35;;;26402:6;26374:35;;;;;;:::i;:::-;;;;;;;;26427:4;26420:11;;26109:330;;;;;:::o;26447:1449::-;16525:4;16506:16;;:23;;;;;;;;;;;;;;;;;;26521:19:::1;26543:41;26565:18;;26543:17;;:21;;:41;;;;:::i;:::-;26521:63;;26597:22;26622:39;26643:17;;26622:16;;:20;;:39;;;;:::i;:::-;26597:64;;26672:22;26697:39;26718:17;;26697:16;;:20;;:39;;;;:::i;:::-;26672:64;;26835:18;26856:51;26905:1;26856:44;26888:11;26856:27;26868:14;26856:7;:11;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;26835:72;;26918:20;26941:23;26953:10;26941:7;:11;;:23;;;;:::i;:::-;26918:46;;26977:22;27003:21;26977:47;;27035:30;27052:12;27035:16;:30::i;:::-;27076:23;27103:41;27129:14;27103:21;:25;;:41;;;;:::i;:::-;27076:68;;27157:19;27179:38;27195:21;27214:1;27195:14;:18;;:21;;;;:::i;:::-;27179:11;:15;;:38;;;;:::i;:::-;27157:60;;27230:26;27259:59;27316:1;27259:52;27299:11;27259:35;27279:14;27259:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;27230:88;;27329:26;27358:52;27398:11;27358:35;27378:14;27358:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;27329:81;;27421:26;27450:63;27494:18;27450:39;27470:18;27450:15;:19;;:39;;;;:::i;:::-;:43;;:63;;;;:::i;:::-;27421:92;;27550:1;27529:18;:22;27526:107;;;27576:15;;;;;;;;;;;27568:33;;:53;27602:18;27568:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;27526:107;27669:1;27648:18;:22;27645:107;;;27695:15;;;;;;;;;;;27687:33;;:53;27721:18;27687:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;27645:107;27797:1;27776:18;:22;:40;;;;;27815:1;27802:10;:14;27776:40;27773:116;;;27833:44;27846:10;27858:18;27833:12;:44::i;:::-;27773:116;26508:1388;;;;;;;;;;;16571:5:::0;16552:16;;:24;;;;;;;;;;;;;;;;;;26447:1449;:::o;29103:622::-;29189:7;29219:17;29239:1;29219:21;;29264:12;:20;29277:6;29264:20;;;;;;;;;;;;;;;;;;;;;;;;;29261:223;;;29313:38;29347:3;29313:29;29324:17;;29313:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;29301:50;;29261:223;;;29381:12;:23;29394:9;29381:23;;;;;;;;;;;;;;;;;;;;;;;;;29378:106;;;29433:39;29468:3;29433:30;29444:18;;29433:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;29421:51;;29378:106;29261:223;29519:1;29507:9;:13;29504:173;;;29564:39;29593:9;29564;:24;29582:4;29564:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;29537:9;:24;29555:4;29537:24;;;;;;;;;;;;;;;:66;;;;29648:4;29623:42;;29632:6;29623:42;;;29655:9;29623:42;;;;;;:::i;:::-;;;;;;;;29504:173;29696:21;29707:9;29696:6;:10;;:21;;;;:::i;:::-;29689:28;;;29103:622;;;;;:::o;27908:666::-;28034:21;28072:1;28058:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28034:40;;28103:4;28085;28090:1;28085:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;28129:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28119:4;28124:1;28119:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;28164:62;28181:4;28196:15;;;;;;;;;;;28214:11;28164:8;:62::i;:::-;28265:15;;;;;;;;;;;:66;;;28346:11;28372:1;28416:4;28443;28479:15;28265:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28531:35;28548:11;28561:4;28531:35;;;;;;;:::i;:::-;;;;;;;;27963:611;27908:666;:::o;28582:513::-;28730:62;28747:4;28762:15;;;;;;;;;;;28780:11;28730:8;:62::i;:::-;28835:15;;;;;;;;;;;:31;;;28874:9;28907:4;28927:11;28953:1;28996;29039:7;:5;:7::i;:::-;29061:15;28835:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28582:513;;:::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;318:568::-;391:8;401:6;451:3;444:4;436:6;432:17;428:27;418:122;;459:79;;:::i;:::-;418:122;572:6;559:20;549:30;;602:18;594:6;591:30;588:117;;;624:79;;:::i;:::-;588:117;738:4;730:6;726:17;714:29;;792:3;784:4;776:6;772:17;762:8;758:32;755:41;752:128;;;799:79;;:::i;:::-;752:128;318:568;;;;;:::o;909:::-;982:8;992:6;1042:3;1035:4;1027:6;1023:17;1019:27;1009:122;;1050:79;;:::i;:::-;1009:122;1163:6;1150:20;1140:30;;1193:18;1185:6;1182:30;1179:117;;;1215:79;;:::i;:::-;1179:117;1329:4;1321:6;1317:17;1305:29;;1383:3;1375:4;1367:6;1363:17;1353:8;1349:32;1346:41;1343:128;;;1390:79;;:::i;:::-;1343:128;909:568;;;;;:::o;1483:133::-;1526:5;1564:6;1551:20;1542:29;;1580:30;1604:5;1580:30;:::i;:::-;1483:133;;;;:::o;1622:137::-;1676:5;1707:6;1701:13;1692:22;;1723:30;1747:5;1723:30;:::i;:::-;1622:137;;;;:::o;1765:139::-;1811:5;1849:6;1836:20;1827:29;;1865:33;1892:5;1865:33;:::i;:::-;1765:139;;;;:::o;1910:143::-;1967:5;1998:6;1992:13;1983:22;;2014:33;2041:5;2014:33;:::i;:::-;1910:143;;;;:::o;2059:329::-;2118:6;2167:2;2155:9;2146:7;2142:23;2138:32;2135:119;;;2173:79;;:::i;:::-;2135:119;2293:1;2318:53;2363:7;2354:6;2343:9;2339:22;2318:53;:::i;:::-;2308:63;;2264:117;2059:329;;;;:::o;2394:351::-;2464:6;2513:2;2501:9;2492:7;2488:23;2484:32;2481:119;;;2519:79;;:::i;:::-;2481:119;2639:1;2664:64;2720:7;2711:6;2700:9;2696:22;2664:64;:::i;:::-;2654:74;;2610:128;2394:351;;;;:::o;2751:474::-;2819:6;2827;2876:2;2864:9;2855:7;2851:23;2847:32;2844:119;;;2882:79;;:::i;:::-;2844:119;3002:1;3027:53;3072:7;3063:6;3052:9;3048:22;3027:53;:::i;:::-;3017:63;;2973:117;3129:2;3155:53;3200:7;3191:6;3180:9;3176:22;3155:53;:::i;:::-;3145:63;;3100:118;2751:474;;;;;:::o;3231:619::-;3308:6;3316;3324;3373:2;3361:9;3352:7;3348:23;3344:32;3341:119;;;3379:79;;:::i;:::-;3341:119;3499:1;3524:53;3569:7;3560:6;3549:9;3545:22;3524:53;:::i;:::-;3514:63;;3470:117;3626:2;3652:53;3697:7;3688:6;3677:9;3673:22;3652:53;:::i;:::-;3642:63;;3597:118;3754:2;3780:53;3825:7;3816:6;3805:9;3801:22;3780:53;:::i;:::-;3770:63;;3725:118;3231:619;;;;;:::o;3856:468::-;3921:6;3929;3978:2;3966:9;3957:7;3953:23;3949:32;3946:119;;;3984:79;;:::i;:::-;3946:119;4104:1;4129:53;4174:7;4165:6;4154:9;4150:22;4129:53;:::i;:::-;4119:63;;4075:117;4231:2;4257:50;4299:7;4290:6;4279:9;4275:22;4257:50;:::i;:::-;4247:60;;4202:115;3856:468;;;;;:::o;4330:474::-;4398:6;4406;4455:2;4443:9;4434:7;4430:23;4426:32;4423:119;;;4461:79;;:::i;:::-;4423:119;4581:1;4606:53;4651:7;4642:6;4631:9;4627:22;4606:53;:::i;:::-;4596:63;;4552:117;4708:2;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4679:118;4330:474;;;;;:::o;4810:934::-;4932:6;4940;4948;4956;5005:2;4993:9;4984:7;4980:23;4976:32;4973:119;;;5011:79;;:::i;:::-;4973:119;5159:1;5148:9;5144:17;5131:31;5189:18;5181:6;5178:30;5175:117;;;5211:79;;:::i;:::-;5175:117;5324:80;5396:7;5387:6;5376:9;5372:22;5324:80;:::i;:::-;5306:98;;;;5102:312;5481:2;5470:9;5466:18;5453:32;5512:18;5504:6;5501:30;5498:117;;;5534:79;;:::i;:::-;5498:117;5647:80;5719:7;5710:6;5699:9;5695:22;5647:80;:::i;:::-;5629:98;;;;5424:313;4810:934;;;;;;;:::o;5750:323::-;5806:6;5855:2;5843:9;5834:7;5830:23;5826:32;5823:119;;;5861:79;;:::i;:::-;5823:119;5981:1;6006:50;6048:7;6039:6;6028:9;6024:22;6006:50;:::i;:::-;5996:60;;5952:114;5750:323;;;;:::o;6079:345::-;6146:6;6195:2;6183:9;6174:7;6170:23;6166:32;6163:119;;;6201:79;;:::i;:::-;6163:119;6321:1;6346:61;6399:7;6390:6;6379:9;6375:22;6346:61;:::i;:::-;6336:71;;6292:125;6079:345;;;;:::o;6430:329::-;6489:6;6538:2;6526:9;6517:7;6513:23;6509:32;6506:119;;;6544:79;;:::i;:::-;6506:119;6664:1;6689:53;6734:7;6725:6;6714:9;6710:22;6689:53;:::i;:::-;6679:63;;6635:117;6430:329;;;;:::o;6765:619::-;6842:6;6850;6858;6907:2;6895:9;6886:7;6882:23;6878:32;6875:119;;;6913:79;;:::i;:::-;6875:119;7033:1;7058:53;7103:7;7094:6;7083:9;7079:22;7058:53;:::i;:::-;7048:63;;7004:117;7160:2;7186:53;7231:7;7222:6;7211:9;7207:22;7186:53;:::i;:::-;7176:63;;7131:118;7288:2;7314:53;7359:7;7350:6;7339:9;7335:22;7314:53;:::i;:::-;7304:63;;7259:118;6765:619;;;;;:::o;7390:663::-;7478:6;7486;7494;7543:2;7531:9;7522:7;7518:23;7514:32;7511:119;;;7549:79;;:::i;:::-;7511:119;7669:1;7694:64;7750:7;7741:6;7730:9;7726:22;7694:64;:::i;:::-;7684:74;;7640:128;7807:2;7833:64;7889:7;7880:6;7869:9;7865:22;7833:64;:::i;:::-;7823:74;;7778:129;7946:2;7972:64;8028:7;8019:6;8008:9;8004:22;7972:64;:::i;:::-;7962:74;;7917:129;7390:663;;;;;:::o;8059:179::-;8128:10;8149:46;8191:3;8183:6;8149:46;:::i;:::-;8227:4;8222:3;8218:14;8204:28;;8059:179;;;;:::o;8244:142::-;8347:32;8373:5;8347:32;:::i;:::-;8342:3;8335:45;8244:142;;:::o;8392:108::-;8469:24;8487:5;8469:24;:::i;:::-;8464:3;8457:37;8392:108;;:::o;8506:118::-;8593:24;8611:5;8593:24;:::i;:::-;8588:3;8581:37;8506:118;;:::o;8660:732::-;8779:3;8808:54;8856:5;8808:54;:::i;:::-;8878:86;8957:6;8952:3;8878:86;:::i;:::-;8871:93;;8988:56;9038:5;8988:56;:::i;:::-;9067:7;9098:1;9083:284;9108:6;9105:1;9102:13;9083:284;;;9184:6;9178:13;9211:63;9270:3;9255:13;9211:63;:::i;:::-;9204:70;;9297:60;9350:6;9297:60;:::i;:::-;9287:70;;9143:224;9130:1;9127;9123:9;9118:14;;9083:284;;;9087:14;9383:3;9376:10;;8784:608;;;8660:732;;;;:::o;9398:109::-;9479:21;9494:5;9479:21;:::i;:::-;9474:3;9467:34;9398:109;;:::o;9513:185::-;9627:64;9685:5;9627:64;:::i;:::-;9622:3;9615:77;9513:185;;:::o;9704:147::-;9799:45;9838:5;9799:45;:::i;:::-;9794:3;9787:58;9704:147;;:::o;9857:364::-;9945:3;9973:39;10006:5;9973:39;:::i;:::-;10028:71;10092:6;10087:3;10028:71;:::i;:::-;10021:78;;10108:52;10153:6;10148:3;10141:4;10134:5;10130:16;10108:52;:::i;:::-;10185:29;10207:6;10185:29;:::i;:::-;10180:3;10176:39;10169:46;;9949:272;9857:364;;;;:::o;10227:366::-;10369:3;10390:67;10454:2;10449:3;10390:67;:::i;:::-;10383:74;;10466:93;10555:3;10466:93;:::i;:::-;10584:2;10579:3;10575:12;10568:19;;10227:366;;;:::o;10599:::-;10741:3;10762:67;10826:2;10821:3;10762:67;:::i;:::-;10755:74;;10838:93;10927:3;10838:93;:::i;:::-;10956:2;10951:3;10947:12;10940:19;;10599:366;;;:::o;10971:::-;11113:3;11134:67;11198:2;11193:3;11134:67;:::i;:::-;11127:74;;11210:93;11299:3;11210:93;:::i;:::-;11328:2;11323:3;11319:12;11312:19;;10971:366;;;:::o;11343:::-;11485:3;11506:67;11570:2;11565:3;11506:67;:::i;:::-;11499:74;;11582:93;11671:3;11582:93;:::i;:::-;11700:2;11695:3;11691:12;11684:19;;11343:366;;;:::o;11715:::-;11857:3;11878:67;11942:2;11937:3;11878:67;:::i;:::-;11871:74;;11954:93;12043:3;11954:93;:::i;:::-;12072:2;12067:3;12063:12;12056:19;;11715:366;;;:::o;12087:::-;12229:3;12250:67;12314:2;12309:3;12250:67;:::i;:::-;12243:74;;12326:93;12415:3;12326:93;:::i;:::-;12444:2;12439:3;12435:12;12428:19;;12087:366;;;:::o;12459:::-;12601:3;12622:67;12686:2;12681:3;12622:67;:::i;:::-;12615:74;;12698:93;12787:3;12698:93;:::i;:::-;12816:2;12811:3;12807:12;12800:19;;12459:366;;;:::o;12831:::-;12973:3;12994:67;13058:2;13053:3;12994:67;:::i;:::-;12987:74;;13070:93;13159:3;13070:93;:::i;:::-;13188:2;13183:3;13179:12;13172:19;;12831:366;;;:::o;13203:::-;13345:3;13366:67;13430:2;13425:3;13366:67;:::i;:::-;13359:74;;13442:93;13531:3;13442:93;:::i;:::-;13560:2;13555:3;13551:12;13544:19;;13203:366;;;:::o;13575:::-;13717:3;13738:67;13802:2;13797:3;13738:67;:::i;:::-;13731:74;;13814:93;13903:3;13814:93;:::i;:::-;13932:2;13927:3;13923:12;13916:19;;13575:366;;;:::o;13947:::-;14089:3;14110:67;14174:2;14169:3;14110:67;:::i;:::-;14103:74;;14186:93;14275:3;14186:93;:::i;:::-;14304:2;14299:3;14295:12;14288:19;;13947:366;;;:::o;14319:::-;14461:3;14482:67;14546:2;14541:3;14482:67;:::i;:::-;14475:74;;14558:93;14647:3;14558:93;:::i;:::-;14676:2;14671:3;14667:12;14660:19;;14319:366;;;:::o;14691:398::-;14850:3;14871:83;14952:1;14947:3;14871:83;:::i;:::-;14864:90;;14963:93;15052:3;14963:93;:::i;:::-;15081:1;15076:3;15072:11;15065:18;;14691:398;;;:::o;15095:366::-;15237:3;15258:67;15322:2;15317:3;15258:67;:::i;:::-;15251:74;;15334:93;15423:3;15334:93;:::i;:::-;15452:2;15447:3;15443:12;15436:19;;15095:366;;;:::o;15467:118::-;15554:24;15572:5;15554:24;:::i;:::-;15549:3;15542:37;15467:118;;:::o;15591:112::-;15674:22;15690:5;15674:22;:::i;:::-;15669:3;15662:35;15591:112;;:::o;15709:379::-;15893:3;15915:147;16058:3;15915:147;:::i;:::-;15908:154;;16079:3;16072:10;;15709:379;;;:::o;16094:222::-;16187:4;16225:2;16214:9;16210:18;16202:26;;16238:71;16306:1;16295:9;16291:17;16282:6;16238:71;:::i;:::-;16094:222;;;;:::o;16322:254::-;16431:4;16469:2;16458:9;16454:18;16446:26;;16482:87;16566:1;16555:9;16551:17;16542:6;16482:87;:::i;:::-;16322:254;;;;:::o;16582:332::-;16703:4;16741:2;16730:9;16726:18;16718:26;;16754:71;16822:1;16811:9;16807:17;16798:6;16754:71;:::i;:::-;16835:72;16903:2;16892:9;16888:18;16879:6;16835:72;:::i;:::-;16582:332;;;;;:::o;16920:::-;17041:4;17079:2;17068:9;17064:18;17056:26;;17092:71;17160:1;17149:9;17145:17;17136:6;17092:71;:::i;:::-;17173:72;17241:2;17230:9;17226:18;17217:6;17173:72;:::i;:::-;16920:332;;;;;:::o;17258:807::-;17507:4;17545:3;17534:9;17530:19;17522:27;;17559:71;17627:1;17616:9;17612:17;17603:6;17559:71;:::i;:::-;17640:72;17708:2;17697:9;17693:18;17684:6;17640:72;:::i;:::-;17722:80;17798:2;17787:9;17783:18;17774:6;17722:80;:::i;:::-;17812;17888:2;17877:9;17873:18;17864:6;17812:80;:::i;:::-;17902:73;17970:3;17959:9;17955:19;17946:6;17902:73;:::i;:::-;17985;18053:3;18042:9;18038:19;18029:6;17985:73;:::i;:::-;17258:807;;;;;;;;;:::o;18071:210::-;18158:4;18196:2;18185:9;18181:18;18173:26;;18209:65;18271:1;18260:9;18256:17;18247:6;18209:65;:::i;:::-;18071:210;;;;:::o;18287:276::-;18407:4;18445:2;18434:9;18430:18;18422:26;;18458:98;18553:1;18542:9;18538:17;18529:6;18458:98;:::i;:::-;18287:276;;;;:::o;18569:313::-;18682:4;18720:2;18709:9;18705:18;18697:26;;18769:9;18763:4;18759:20;18755:1;18744:9;18740:17;18733:47;18797:78;18870:4;18861:6;18797:78;:::i;:::-;18789:86;;18569:313;;;;:::o;18888:419::-;19054:4;19092:2;19081:9;19077:18;19069:26;;19141:9;19135:4;19131:20;19127:1;19116:9;19112:17;19105:47;19169:131;19295:4;19169:131;:::i;:::-;19161:139;;18888:419;;;:::o;19313:::-;19479:4;19517:2;19506:9;19502:18;19494:26;;19566:9;19560:4;19556:20;19552:1;19541:9;19537:17;19530:47;19594:131;19720:4;19594:131;:::i;:::-;19586:139;;19313:419;;;:::o;19738:::-;19904:4;19942:2;19931:9;19927:18;19919:26;;19991:9;19985:4;19981:20;19977:1;19966:9;19962:17;19955:47;20019:131;20145:4;20019:131;:::i;:::-;20011:139;;19738:419;;;:::o;20163:::-;20329:4;20367:2;20356:9;20352:18;20344:26;;20416:9;20410:4;20406:20;20402:1;20391:9;20387:17;20380:47;20444:131;20570:4;20444:131;:::i;:::-;20436:139;;20163:419;;;:::o;20588:::-;20754:4;20792:2;20781:9;20777:18;20769:26;;20841:9;20835:4;20831:20;20827:1;20816:9;20812:17;20805:47;20869:131;20995:4;20869:131;:::i;:::-;20861:139;;20588:419;;;:::o;21013:::-;21179:4;21217:2;21206:9;21202:18;21194:26;;21266:9;21260:4;21256:20;21252:1;21241:9;21237:17;21230:47;21294:131;21420:4;21294:131;:::i;:::-;21286:139;;21013:419;;;:::o;21438:::-;21604:4;21642:2;21631:9;21627:18;21619:26;;21691:9;21685:4;21681:20;21677:1;21666:9;21662:17;21655:47;21719:131;21845:4;21719:131;:::i;:::-;21711:139;;21438:419;;;:::o;21863:::-;22029:4;22067:2;22056:9;22052:18;22044:26;;22116:9;22110:4;22106:20;22102:1;22091:9;22087:17;22080:47;22144:131;22270:4;22144:131;:::i;:::-;22136:139;;21863:419;;;:::o;22288:::-;22454:4;22492:2;22481:9;22477:18;22469:26;;22541:9;22535:4;22531:20;22527:1;22516:9;22512:17;22505:47;22569:131;22695:4;22569:131;:::i;:::-;22561:139;;22288:419;;;:::o;22713:::-;22879:4;22917:2;22906:9;22902:18;22894:26;;22966:9;22960:4;22956:20;22952:1;22941:9;22937:17;22930:47;22994:131;23120:4;22994:131;:::i;:::-;22986:139;;22713:419;;;:::o;23138:::-;23304:4;23342:2;23331:9;23327:18;23319:26;;23391:9;23385:4;23381:20;23377:1;23366:9;23362:17;23355:47;23419:131;23545:4;23419:131;:::i;:::-;23411:139;;23138:419;;;:::o;23563:::-;23729:4;23767:2;23756:9;23752:18;23744:26;;23816:9;23810:4;23806:20;23802:1;23791:9;23787:17;23780:47;23844:131;23970:4;23844:131;:::i;:::-;23836:139;;23563:419;;;:::o;23988:::-;24154:4;24192:2;24181:9;24177:18;24169:26;;24241:9;24235:4;24231:20;24227:1;24216:9;24212:17;24205:47;24269:131;24395:4;24269:131;:::i;:::-;24261:139;;23988:419;;;:::o;24413:222::-;24506:4;24544:2;24533:9;24529:18;24521:26;;24557:71;24625:1;24614:9;24610:17;24601:6;24557:71;:::i;:::-;24413:222;;;;:::o;24641:483::-;24812:4;24850:2;24839:9;24835:18;24827:26;;24863:71;24931:1;24920:9;24916:17;24907:6;24863:71;:::i;:::-;24981:9;24975:4;24971:20;24966:2;24955:9;24951:18;24944:48;25009:108;25112:4;25103:6;25009:108;:::i;:::-;25001:116;;24641:483;;;;;:::o;25130:831::-;25393:4;25431:3;25420:9;25416:19;25408:27;;25445:71;25513:1;25502:9;25498:17;25489:6;25445:71;:::i;:::-;25526:80;25602:2;25591:9;25587:18;25578:6;25526:80;:::i;:::-;25653:9;25647:4;25643:20;25638:2;25627:9;25623:18;25616:48;25681:108;25784:4;25775:6;25681:108;:::i;:::-;25673:116;;25799:72;25867:2;25856:9;25852:18;25843:6;25799:72;:::i;:::-;25881:73;25949:3;25938:9;25934:19;25925:6;25881:73;:::i;:::-;25130:831;;;;;;;;:::o;25967:214::-;26056:4;26094:2;26083:9;26079:18;26071:26;;26107:67;26171:1;26160:9;26156:17;26147:6;26107:67;:::i;:::-;25967:214;;;;:::o;26268:132::-;26335:4;26358:3;26350:11;;26388:4;26383:3;26379:14;26371:22;;26268:132;;;:::o;26406:114::-;26473:6;26507:5;26501:12;26491:22;;26406:114;;;:::o;26526:99::-;26578:6;26612:5;26606:12;26596:22;;26526:99;;;:::o;26631:113::-;26701:4;26733;26728:3;26724:14;26716:22;;26631:113;;;:::o;26750:184::-;26849:11;26883:6;26878:3;26871:19;26923:4;26918:3;26914:14;26899:29;;26750:184;;;;:::o;26940:147::-;27041:11;27078:3;27063:18;;26940:147;;;;:::o;27093:169::-;27177:11;27211:6;27206:3;27199:19;27251:4;27246:3;27242:14;27227:29;;27093:169;;;;:::o;27268:305::-;27308:3;27327:20;27345:1;27327:20;:::i;:::-;27322:25;;27361:20;27379:1;27361:20;:::i;:::-;27356:25;;27515:1;27447:66;27443:74;27440:1;27437:81;27434:107;;;27521:18;;:::i;:::-;27434:107;27565:1;27562;27558:9;27551:16;;27268:305;;;;:::o;27579:185::-;27619:1;27636:20;27654:1;27636:20;:::i;:::-;27631:25;;27670:20;27688:1;27670:20;:::i;:::-;27665:25;;27709:1;27699:35;;27714:18;;:::i;:::-;27699:35;27756:1;27753;27749:9;27744:14;;27579:185;;;;:::o;27770:348::-;27810:7;27833:20;27851:1;27833:20;:::i;:::-;27828:25;;27867:20;27885:1;27867:20;:::i;:::-;27862:25;;28055:1;27987:66;27983:74;27980:1;27977:81;27972:1;27965:9;27958:17;27954:105;27951:131;;;28062:18;;:::i;:::-;27951:131;28110:1;28107;28103:9;28092:20;;27770:348;;;;:::o;28124:191::-;28164:4;28184:20;28202:1;28184:20;:::i;:::-;28179:25;;28218:20;28236:1;28218:20;:::i;:::-;28213:25;;28257:1;28254;28251:8;28248:34;;;28262:18;;:::i;:::-;28248:34;28307:1;28304;28300:9;28292:17;;28124:191;;;;:::o;28321:96::-;28358:7;28387:24;28405:5;28387:24;:::i;:::-;28376:35;;28321:96;;;:::o;28423:104::-;28468:7;28497:24;28515:5;28497:24;:::i;:::-;28486:35;;28423:104;;;:::o;28533:90::-;28567:7;28610:5;28603:13;28596:21;28585:32;;28533:90;;;:::o;28629:126::-;28666:7;28706:42;28699:5;28695:54;28684:65;;28629:126;;;:::o;28761:77::-;28798:7;28827:5;28816:16;;28761:77;;;:::o;28844:86::-;28879:7;28919:4;28912:5;28908:16;28897:27;;28844:86;;;:::o;28936:153::-;29013:9;29046:37;29077:5;29046:37;:::i;:::-;29033:50;;28936:153;;;:::o;29095:121::-;29153:9;29186:24;29204:5;29186:24;:::i;:::-;29173:37;;29095:121;;;:::o;29222:126::-;29272:9;29305:37;29336:5;29305:37;:::i;:::-;29292:50;;29222:126;;;:::o;29354:113::-;29404:9;29437:24;29455:5;29437:24;:::i;:::-;29424:37;;29354:113;;;:::o;29473:307::-;29541:1;29551:113;29565:6;29562:1;29559:13;29551:113;;;29650:1;29645:3;29641:11;29635:18;29631:1;29626:3;29622:11;29615:39;29587:2;29584:1;29580:10;29575:15;;29551:113;;;29682:6;29679:1;29676:13;29673:101;;;29762:1;29753:6;29748:3;29744:16;29737:27;29673:101;29522:258;29473:307;;;:::o;29786:320::-;29830:6;29867:1;29861:4;29857:12;29847:22;;29914:1;29908:4;29904:12;29935:18;29925:81;;29991:4;29983:6;29979:17;29969:27;;29925:81;30053:2;30045:6;30042:14;30022:18;30019:38;30016:84;;;30072:18;;:::i;:::-;30016:84;29837:269;29786:320;;;:::o;30112:233::-;30151:3;30174:24;30192:5;30174:24;:::i;:::-;30165:33;;30220:66;30213:5;30210:77;30207:103;;;30290:18;;:::i;:::-;30207:103;30337:1;30330:5;30326:13;30319:20;;30112:233;;;:::o;30351:180::-;30399:77;30396:1;30389:88;30496:4;30493:1;30486:15;30520:4;30517:1;30510:15;30537:180;30585:77;30582:1;30575:88;30682:4;30679:1;30672:15;30706:4;30703:1;30696:15;30723:180;30771:77;30768:1;30761:88;30868:4;30865:1;30858:15;30892:4;30889:1;30882:15;30909:180;30957:77;30954:1;30947:88;31054:4;31051:1;31044:15;31078:4;31075:1;31068:15;31095:180;31143:77;31140:1;31133:88;31240:4;31237:1;31230:15;31264:4;31261:1;31254:15;31281:117;31390:1;31387;31380:12;31404:117;31513:1;31510;31503:12;31527:117;31636:1;31633;31626:12;31650:117;31759:1;31756;31749:12;31773:117;31882:1;31879;31872:12;31896:102;31937:6;31988:2;31984:7;31979:2;31972:5;31968:14;31964:28;31954:38;;31896:102;;;:::o;32004:222::-;32144:34;32140:1;32132:6;32128:14;32121:58;32213:5;32208:2;32200:6;32196:15;32189:30;32004:222;:::o;32232:177::-;32372:29;32368:1;32360:6;32356:14;32349:53;32232:177;:::o;32415:225::-;32555:34;32551:1;32543:6;32539:14;32532:58;32624:8;32619:2;32611:6;32607:15;32600:33;32415:225;:::o;32646:221::-;32786:34;32782:1;32774:6;32770:14;32763:58;32855:4;32850:2;32842:6;32838:15;32831:29;32646:221;:::o;32873:177::-;33013:29;33009:1;33001:6;32997:14;32990:53;32873:177;:::o;33056:224::-;33196:34;33192:1;33184:6;33180:14;33173:58;33265:7;33260:2;33252:6;33248:15;33241:32;33056:224;:::o;33286:179::-;33426:31;33422:1;33414:6;33410:14;33403:55;33286:179;:::o;33471:227::-;33611:34;33607:1;33599:6;33595:14;33588:58;33680:10;33675:2;33667:6;33663:15;33656:35;33471:227;:::o;33704:220::-;33844:34;33840:1;33832:6;33828:14;33821:58;33913:3;33908:2;33900:6;33896:15;33889:28;33704:220;:::o;33930:172::-;34070:24;34066:1;34058:6;34054:14;34047:48;33930:172;:::o;34108:182::-;34248:34;34244:1;34236:6;34232:14;34225:58;34108:182;:::o;34296:224::-;34436:34;34432:1;34424:6;34420:14;34413:58;34505:7;34500:2;34492:6;34488:15;34481:32;34296:224;:::o;34526:114::-;;:::o;34646:223::-;34786:34;34782:1;34774:6;34770:14;34763:58;34855:6;34850:2;34842:6;34838:15;34831:31;34646:223;:::o;34875:122::-;34948:24;34966:5;34948:24;:::i;:::-;34941:5;34938:35;34928:63;;34987:1;34984;34977:12;34928:63;34875:122;:::o;35003:116::-;35073:21;35088:5;35073:21;:::i;:::-;35066:5;35063:32;35053:60;;35109:1;35106;35099:12;35053:60;35003:116;:::o;35125:122::-;35198:24;35216:5;35198:24;:::i;:::-;35191:5;35188:35;35178:63;;35237:1;35234;35227:12;35178:63;35125:122;:::o

Swarm Source

ipfs://6c0bb1e40f8f8532cd3339eb7e09c2a0beb9d46cdd7496d709771d20bbb64f2c
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.