ETH Price: $2,637.30 (-0.78%)

Token

BLACK APE (BAPE)
 

Overview

Max Total Supply

333,333,333 BAPE

Holders

83

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
595,838.269267817631354093 BAPE

Value
$0.00
0xc499256ff25baa10f80d4f471642a13a4dc899e7
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:
BLACKAPE

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
BLACK APE For The Apes
$BAPE 
3% Tax Buy/Sell

*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        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 Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

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

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }


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

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

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

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

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

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


abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}




contract BLACKAPE is Context,IERC20, Ownable{
    using Address for address;

    string private _name = "BLACK APE";
    string private _symbol = "BAPE";
    uint8 private _decimals = 18;
    uint256 totalFeeFortx = 0;
    uint256 maxWalletTreshold = 2;
    uint256 maxTxTreshold = 2;
    uint256 private swapTreshold =2;
    bool public limitsInEffect = true;

    uint256 private currentThreshold = 20; 
    uint256 private _totalSupply = 333_333_333 * 10**_decimals; 
    uint256 public requiredTokensToSwap = _totalSupply * swapTreshold /1000;
    mapping (address => uint256) private _balances;
    mapping (address => bool) private _excludedFromFees;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) _isExcludedMaxTransactionAmount;
    mapping (address => bool) public automatedMarketMakerPairs;
    address _owner;
    address payable public marketingAddress = payable(0xd2d02a6758A99e5788CB9cb947d44749e8C85067);
    
    uint256 maxWalletAmount = _totalSupply*maxWalletTreshold/100; 
    uint256 maxTxAmount = _totalSupply*maxTxTreshold/100;
    mapping (address => bool) botWallets;
    bool botTradeEnabled = false;
    bool checkWalletSize = true;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private presaleAddresses;
    uint256 private buyliqFee = 1; 
    uint256 private buyprevLiqFee = 1;
    uint256 private buymktFee = 2;
    uint256 private buyPrevmktFee = 2;
    
    
    bool private tradeEnabled = false;

    
    uint256 private sellliqFee = 1;
    uint256 private sellprevLiqFee = 1;
    uint256 private sellmktFee = 2;
    uint256 private sellPrevmktFee = 2;


    bool public inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    uint256 private mktTokens = 0;
  
    uint256 private liqTokens = 0;

    
    event SwapAndLiquify(uint256 tokensSwapped,
		uint256 ethReceived,
		uint256 tokensIntoLiquidity
	);
    event tokensSwappedDuringTokenomics(uint256 amount);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    
    
    IUniswapV2Router02 _router;
    address public uniswapV2Pair;

    //Balances tracker

    modifier lockTheSwap{
		inSwapAndLiquify = true;
		_;
		inSwapAndLiquify = false;
	}
    

    constructor(){
        _balances[_msgSender()] = _totalSupply;
        
        IUniswapV2Router02 _uniRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        uniswapV2Pair = IUniswapV2Factory(_uniRouter.factory())
            .createPair(address(this), _uniRouter.WETH());
        
        _excludedFromFees[owner()] = true;         
        _excludedFromFees[address(this)] = true;
        _router = _uniRouter;
        _liquidityHolders[address(_router)] = true;
        _liquidityHolders[owner()] = true;
        _liquidityHolders[address(this)] = true;
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        emit Transfer(address(0),_msgSender(),_totalSupply);
 
    }
    receive() external payable{}


    //general token data and tracking of balances to be swapped.
    function getOwner()external view returns(address){
            return owner();
    }
    function currentmktTokens() external view returns (uint256){
            return mktTokens;
     }
   
     function currentLiqTokens() external view returns (uint256){
            return liqTokens;
     }

     function totalSupply() external view override returns (uint256){
            return _totalSupply;
     }
   
    function balanceOf(address account) public view override returns (uint256){
        return _balances[account];
    }
   
    function transfer(address recipient, uint256 amount) external override returns (bool){
            _transfer(_msgSender(),recipient,amount);
            return true;

    }
   
    function allowance(address owner, address spender) external view override returns (uint256){
            return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount) external override returns (bool){
            _approve(_msgSender(),spender,amount);
            return true;
    }
    function removeLimits() public onlyOwner{
        limitsInEffect = false;
    }

    function decimals()external view returns(uint256){
        return _decimals;
    }
    function name() external view returns (string memory) {
		return _name;
	}
    function symbol() external view returns (string memory){
        return _symbol;
    }
        function updateMaxTxTreshold(uint256 newVal) public onlyOwner{
        maxTxTreshold = newVal;
        maxTxAmount = _totalSupply*maxTxTreshold/100;// 1%

    }
     function updateMaxWalletTreshold(uint256 newVal) public onlyOwner{
        maxWalletTreshold = newVal;
        maxWalletAmount = _totalSupply*maxWalletTreshold/100;

    }
    

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

    function addBotWallet (address payable detectedBot, bool isBot) public onlyOwner{
        botWallets[detectedBot] = isBot;
    }
    function currentbuyliqFee() public view returns (uint256){
            return buyliqFee;
    }
    function currentbuymktfee() public view returns (uint256){
            return buymktFee;
    }
   

      function currentsellLiqFee() public view returns (uint256){
            return sellliqFee;
    }
    function currentsellmktfee() public view returns (uint256){
            return sellmktFee;
    }
    
    function currentThresholdInt()public view returns (uint256){
        return currentThreshold;
    }
    function isExcluded(address toCheck)public view returns (bool){
            return _excludedFromFees[toCheck];
    }

    function _transfer(address from, address to, uint256 amount) internal{
        
        require(from != address(0), "ERC20: transfer from the zero address");
		require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0,"ERC20: transfered amount must be greater than zero");
        uint256 senderBalance = _balances[from];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        if(tradeEnabled == false){
            require(_liquidityHolders[to] || _liquidityHolders[from],"Cant trade, trade is disabled");
        }
        
       
         
          if(limitsInEffect){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead)
            ){

                
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxTxAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                    require(amount + balanceOf(to) <= maxWalletAmount, "Unable to exceed Max Wallet");
                    

                } 
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxTxAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_isExcludedMaxTransactionAmount[to]) {
                    require(amount + balanceOf(to) <= maxWalletAmount, "Unable to exceed Max Wallet");
                }
            }
        }
         uint256 inContractBalance = balanceOf(address(this));

        if(inContractBalance >=requiredTokensToSwap && 
			!inSwapAndLiquify && 
			from != uniswapV2Pair && 
			swapAndLiquifyEnabled){
                if(inContractBalance >= requiredTokensToSwap ){
                    inContractBalance = requiredTokensToSwap;
                    swapForTokenomics(inContractBalance);
                }
            }

            bool takeFees = true;
            
            
            if(_excludedFromFees[from] || _excludedFromFees[to]) {
                totalFeeFortx = 0;
                takeFees = false;
               

            }
            uint256 mktAmount = 0;
           
		    uint256 liqAmount = 0;  // Amount to be added to liquidity.

            if(takeFees){
                
                //bot fees
                if(botWallets[from] == true||botWallets[to]==true){
                    revert("No bots allowed to trade");
                }
                //Selling fees
                if (automatedMarketMakerPairs[to] && to != address(_router) ){
                        totalFeeFortx = 0;
                        mktAmount = amount * sellmktFee/100;
                        liqAmount = amount * sellliqFee/100;
                        
                        totalFeeFortx = mktAmount + liqAmount ;
                }
                //Buy Fees
                else if(automatedMarketMakerPairs[from] && from != address(_router)) {
                    
                    totalFeeFortx = 0;
                    mktAmount = amount * buymktFee/100;
                    liqAmount = amount * buyliqFee/100;
                    
                    totalFeeFortx = mktAmount + liqAmount ;
                }

                
            }

            _balances[from] = senderBalance - amount;
            _balances[to] += amount - mktAmount - liqAmount;

          if(liqAmount != 0) {
			_balances[address(this)] += totalFeeFortx;
			//tLiqTotal += liqAmount;
            liqTokens += liqAmount;
            mktTokens += mktAmount;
			emit Transfer(from, address(this), totalFeeFortx);
            
		    }
            emit Transfer(from, to,amount-totalFeeFortx);
            
        
    }
    function swapForTokenomics(uint256 balanceToswap) private lockTheSwap{
        swapAndLiquify(liqTokens);
        swapTokensForETHmkt(mktTokens);
        emit tokensSwappedDuringTokenomics(balanceToswap);
        mktTokens = 0;
        liqTokens = 0;
    }
     function addLimitExempt(address newAddress)external onlyOwner{
        _liquidityHolders[newAddress] = true;
     
    }
    function swapTokensForETHmkt(uint256 amount)private {
        address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _router.WETH();
		_approve(address(this), address(_router), amount);

		
		_router.swapExactTokensForETHSupportingFeeOnTransferTokens(
			amount,
			0, // Accept any amount of ETH.
			path,
			marketingAddress,
			block.timestamp
		);

    }
  


    function unstuckTokens (IERC20 tokenToClear, address payable destination, uint256 amount) public onlyOwner{
        //uint256 contractBalance = tokenToClear.balanceOf(address(this));
        tokenToClear.transfer(destination, amount);
    }

    function unstuckETH(address payable destination) public onlyOwner{
        uint256 ethBalance = address(this).balance;
        payable(destination).transfer(ethBalance);
    }

    function tradeStatus(bool status) public onlyOwner{
        tradeEnabled = status;
    }

    function swapAndLiquify(uint256 liqTokensPassed) private {
		uint256 half = liqTokensPassed / 2;
		uint256 otherHalf = liqTokensPassed - half;
		uint256 initialBalance = address(this).balance;

		swapTokensForETH(half);
		uint256 newBalance = address(this).balance - (initialBalance); 

		addLiquidity(otherHalf, newBalance);
		emit SwapAndLiquify(half,newBalance,otherHalf);
	}

    function swapTokensForETH(uint256 tokenAmount) private{
		address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _router.WETH();
		_approve(address(this), address(_router), tokenAmount);

		
		_router.swapExactTokensForETHSupportingFeeOnTransferTokens(
			tokenAmount,
			0, // Accept any amount of ETH.
			path,
			address(this),
			block.timestamp
		);
	}
    
    function addLiquidity(uint256 tokenAmount,uint256 ethAmount) private{
		_approve(address(this), address(_router), tokenAmount);

		_router.addLiquidityETH{value:ethAmount}(
			address(this),
			tokenAmount,
			0,
			0,
			deadAddress,// tr
			block.timestamp
		);
	}

    function _approve(address owner,address spender, uint256 amount) internal{
        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);


    }




    //Fees related functions

    function addToExcluded(address toExclude) public onlyOwner{  
        _excludedFromFees[toExclude] = true;
    }

    function removeFromExcluded(address toRemove) public onlyOwner{
        _excludedFromFees[toRemove] = false;
    }
      function excludePresaleAddresses(address router, address presale) external onlyOwner {
        
        _liquidityHolders[address(router)] = true;
        _liquidityHolders[presale] = true;
        presaleAddresses[address(router)] = true;
        presaleAddresses[presale] = true;
       
    }



    function updateThreshold(uint newThreshold) public onlyOwner{
        currentThreshold = newThreshold;

    }

    function setSwapAndLiquify(bool _enabled) public onlyOwner{
            swapAndLiquifyEnabled = _enabled;
    }


    //Marketing related 

    function setMktAddress(address newAddress) external onlyOwner{
        marketingAddress = payable(newAddress);
    }
   
    function transferAssetsETH(address payable to, uint256 amount) internal{
            to.transfer(amount);
    }
   
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updatecurrentbuyliqFee(uint256 newAmount) public onlyOwner{
            buyliqFee = newAmount;
    }
    function updatecurrentbuymktfee(uint256 newAmount) public onlyOwner{
             buymktFee= newAmount;
    }
   

      function updatecurrentsellLiqFee(uint256 newAmount) public onlyOwner{
             sellliqFee= newAmount;
    }
    function updatecurrentsellmktfee(uint256 newAmount)public onlyOwner{
             sellmktFee= newAmount;
    }
    
  
    function currentMaxWallet() public view returns(uint256){
        return maxWalletAmount;
    }
    function currentMaxTx() public view returns(uint256){
        return maxTxAmount;
    }
    function updateSwapTreshold(uint256 newVal) public onlyOwner{
        swapTreshold = newVal;
        requiredTokensToSwap = _totalSupply*swapTreshold/1000;
        
    }
    function currentTradeStatus() public view returns (bool){
        return tradeEnabled;   
    }
    function currentSwapTreshold() public view returns(uint256){
        return swapTreshold;
    }
    function currentTokensToSwap() public view returns(uint256){
        return requiredTokensToSwap;
    }
}


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 Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}

interface 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 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":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"tokensSwappedDuringTokenomics","type":"event"},{"inputs":[{"internalType":"address payable","name":"detectedBot","type":"address"},{"internalType":"bool","name":"isBot","type":"bool"}],"name":"addBotWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"addLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toExclude","type":"address"}],"name":"addToExcluded","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentLiqTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentSwapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentThresholdInt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTradeStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuyliqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuymktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentmktTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellLiqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellmktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toCheck","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"removeFromExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"requiredTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMktAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"tradeStatus","outputs":[],"stateMutability":"nonpayable","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"destination","type":"address"}],"name":"unstuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenToClear","type":"address"},{"internalType":"address payable","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxTxTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxWalletTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuyliqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuymktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellLiqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellmktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600981526020017f424c41434b204150450000000000000000000000000000000000000000000000815250600190805190602001906200005192919062000979565b506040518060400160405280600481526020017f4241504500000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000979565b506012600360006101000a81548160ff021916908360ff16021790555060006004556002600555600260065560026007556001600860006101000a81548160ff0219169083151502179055506014600955600360009054906101000a900460ff16600a6200010e919062000bc3565b6313de43556200011f919062000c14565b600a556103e8600754600a5462000137919062000c14565b62000143919062000ca4565b600b5573d2d02a6758a99e5788cb9cb947d44749e8c85067601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506064600554600a54620001af919062000c14565b620001bb919062000ca4565b6013556064600654600a54620001d2919062000c14565b620001de919062000ca4565b6014556000601660006101000a81548160ff0219169083151502179055506001601660016101000a81548160ff02191690831515021790555060016019556001601a556002601b556002601c556000601d60006101000a81548160ff0219169083151502179055506001601e556001601f55600260205560026021556001602260016101000a81548160ff02191690831515021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1681525060006023556000602455348015620002c157600080fd5b50620002e2620002d6620007e360201b60201c565b620007eb60201b60201c565b600a54600c6000620002f9620007e360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200039c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c2919062000d46565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200042a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000450919062000d46565b6040518363ffffffff1660e01b81526004016200046f92919062000d89565b6020604051808303816000875af11580156200048f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b5919062000d46565b602660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60006200050b620008af60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080602560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160176000602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016017600062000685620008af60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000763602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620008d860201b60201c565b62000773620007e360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620007d4919062000dc7565b60405180910390a35062000e49565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b828054620009879062000e13565b90600052602060002090601f016020900481019282620009ab5760008555620009f7565b82601f10620009c657805160ff1916838001178555620009f7565b82800160010185558215620009f7579182015b82811115620009f6578251825591602001919060010190620009d9565b5b50905062000a06919062000a0a565b5090565b5b8082111562000a2557600081600090555060010162000a0b565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000ab75780860481111562000a8f5762000a8e62000a29565b5b600185161562000a9f5780820291505b808102905062000aaf8562000a58565b945062000a6f565b94509492505050565b60008262000ad2576001905062000ba5565b8162000ae2576000905062000ba5565b816001811462000afb576002811462000b065762000b3c565b600191505062000ba5565b60ff84111562000b1b5762000b1a62000a29565b5b8360020a91508482111562000b355762000b3462000a29565b5b5062000ba5565b5060208310610133831016604e8410600b841016171562000b765782820a90508381111562000b705762000b6f62000a29565b5b62000ba5565b62000b85848484600162000a65565b9250905081840481111562000b9f5762000b9e62000a29565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000bd08262000bac565b915062000bdd8362000bb6565b925062000c0c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ac0565b905092915050565b600062000c218262000bac565b915062000c2e8362000bac565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c6a5762000c6962000a29565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000cb18262000bac565b915062000cbe8362000bac565b92508262000cd15762000cd062000c75565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d0e8262000ce1565b9050919050565b62000d208162000d01565b811462000d2c57600080fd5b50565b60008151905062000d408162000d15565b92915050565b60006020828403121562000d5f5762000d5e62000cdc565b5b600062000d6f8482850162000d2f565b91505092915050565b62000d838162000d01565b82525050565b600060408201905062000da0600083018562000d78565b62000daf602083018462000d78565b9392505050565b62000dc18162000bac565b82525050565b600060208201905062000dde600083018462000db6565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e2c57607f821691505b6020821081141562000e435762000e4262000de4565b5b50919050565b608051614d5462000e6c6000396000818161114201526139a80152614d546000f3fe6080604052600436106103395760003560e01c8063893d20e8116101ab578063b62496f5116100f7578063d7d7442f11610095578063e1370dd31161006f578063e1370dd314610bdf578063edcf19b214610c0a578063f2fde38b14610c33578063f7da678514610c5c57610340565b8063d7d7442f14610b4e578063dd62ed3e14610b77578063ddcf9b9814610bb457610340565b8063cb664534116100d1578063cb66453414610a94578063cba0e99614610abd578063d1294d4c14610afa578063d15bcf0f14610b2357610340565b8063b62496f514610a03578063bf9b015914610a40578063bf9eb54014610a6b57610340565b80639b136da411610164578063a6c38f591161013e578063a6c38f591461094b578063a7a0745214610974578063a9059cbb1461099d578063b4d95a93146109da57610340565b80639b136da4146108ca578063a04bdc81146108f5578063a5ece9411461092057610340565b8063893d20e8146107cc5780638cd0260c146107f75780638da5cb5b1461082057806390f502831461084b57806395d89b41146108765780639a7a23d6146108a157610340565b80634a0e963c116102855780636573c4df11610223578063715018a6116101fd578063715018a61461074c578063751039fc14610763578063801527ce1461077a5780638628c23f146107a357610340565b80636573c4df146106bb5780636df3333a146106e457806370a082311461070f57610340565b80634bd7ace51161025f5780634bd7ace5146106115780635297defd1461063c5780635be76f111461066757806364c161631461069057610340565b80634a0e963c146105925780634a62bb65146105bb5780634a74bb02146105e657610340565b806322788f86116102f25780632d03420b116102cc5780632d03420b146104e8578063313ce56714610511578063487a69051461053c57806349bd5a5e1461056757610340565b806322788f861461045557806323b872dd1461048057806327c8f835146104bd57610340565b806306fdde03146103455780630882a86314610370578063095ea7b31461039957806313b4a7f4146103d657806318160ddd146103ff578063220f66961461042a57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610c85565b6040516103679190613acc565b60405180910390f35b34801561037c57600080fd5b5061039760048036038101906103929190613b29565b610d17565b005b3480156103a557600080fd5b506103c060048036038101906103bb9190613bb4565b610d9d565b6040516103cd9190613c0f565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f89190613c2a565b610dbb565b005b34801561040b57600080fd5b50610414610f9b565b6040516104219190613c79565b60405180910390f35b34801561043657600080fd5b5061043f610fa5565b60405161044c9190613c0f565b60405180910390f35b34801561046157600080fd5b5061046a610fb8565b6040516104779190613c79565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a29190613c94565b610fc2565b6040516104b49190613c0f565b60405180910390f35b3480156104c957600080fd5b506104d2611140565b6040516104df9190613cf6565b60405180910390f35b3480156104f457600080fd5b5061050f600480360381019061050a9190613d3d565b611164565b005b34801561051d57600080fd5b506105266111fd565b6040516105339190613c79565b60405180910390f35b34801561054857600080fd5b50610551611217565b60405161055e9190613c79565b60405180910390f35b34801561057357600080fd5b5061057c611221565b6040516105899190613cf6565b60405180910390f35b34801561059e57600080fd5b506105b960048036038101906105b49190613d6a565b611247565b005b3480156105c757600080fd5b506105d061131e565b6040516105dd9190613c0f565b60405180910390f35b3480156105f257600080fd5b506105fb611331565b6040516106089190613c0f565b60405180910390f35b34801561061d57600080fd5b50610626611344565b6040516106339190613c79565b60405180910390f35b34801561064857600080fd5b5061065161134e565b60405161065e9190613c79565b60405180910390f35b34801561067357600080fd5b5061068e60048036038101906106899190613dd5565b611358565b005b34801561069c57600080fd5b506106a5611424565b6040516106b29190613c79565b60405180910390f35b3480156106c757600080fd5b506106e260048036038101906106dd9190613b29565b61142e565b005b3480156106f057600080fd5b506106f96114d6565b6040516107069190613c79565b60405180910390f35b34801561071b57600080fd5b5061073660048036038101906107319190613d6a565b6114e0565b6040516107439190613c79565b60405180910390f35b34801561075857600080fd5b50610761611529565b005b34801561076f57600080fd5b506107786115b1565b005b34801561078657600080fd5b506107a1600480360381019061079c9190613d3d565b61164a565b005b3480156107af57600080fd5b506107ca60048036038101906107c59190613b29565b6116e3565b005b3480156107d857600080fd5b506107e1611769565b6040516107ee9190613cf6565b60405180910390f35b34801561080357600080fd5b5061081e60048036038101906108199190613b29565b611778565b005b34801561082c57600080fd5b506108356117fe565b6040516108429190613cf6565b60405180910390f35b34801561085757600080fd5b50610860611827565b60405161086d9190613c79565b60405180910390f35b34801561088257600080fd5b5061088b611831565b6040516108989190613acc565b60405180910390f35b3480156108ad57600080fd5b506108c860048036038101906108c39190613e02565b6118c3565b005b3480156108d657600080fd5b506108df6119de565b6040516108ec9190613c79565b60405180910390f35b34801561090157600080fd5b5061090a6119e8565b6040516109179190613c79565b60405180910390f35b34801561092c57600080fd5b506109356119ee565b6040516109429190613e51565b60405180910390f35b34801561095757600080fd5b50610972600480360381019061096d9190613e6c565b611a14565b005b34801561098057600080fd5b5061099b60048036038101906109969190613b29565b611aeb565b005b3480156109a957600080fd5b506109c460048036038101906109bf9190613bb4565b611b93565b6040516109d19190613c0f565b60405180910390f35b3480156109e657600080fd5b50610a0160048036038101906109fc9190613d6a565b611bb1565b005b348015610a0f57600080fd5b50610a2a6004803603810190610a259190613d6a565b611c88565b604051610a379190613c0f565b60405180910390f35b348015610a4c57600080fd5b50610a55611ca8565b604051610a629190613c79565b60405180910390f35b348015610a7757600080fd5b50610a926004803603810190610a8d9190613d6a565b611cb2565b005b348015610aa057600080fd5b50610abb6004803603810190610ab69190613d6a565b611d72565b005b348015610ac957600080fd5b50610ae46004803603810190610adf9190613d6a565b611e49565b604051610af19190613c0f565b60405180910390f35b348015610b0657600080fd5b50610b216004803603810190610b1c9190613b29565b611e9f565b005b348015610b2f57600080fd5b50610b38611f48565b604051610b459190613c0f565b60405180910390f35b348015610b5a57600080fd5b50610b756004803603810190610b709190613b29565b611f5f565b005b348015610b8357600080fd5b50610b9e6004803603810190610b999190613c2a565b611fe5565b604051610bab9190613c79565b60405180910390f35b348015610bc057600080fd5b50610bc961206c565b604051610bd69190613c79565b60405180910390f35b348015610beb57600080fd5b50610bf4612076565b604051610c019190613c79565b60405180910390f35b348015610c1657600080fd5b50610c316004803603810190610c2c9190613b29565b612080565b005b348015610c3f57600080fd5b50610c5a6004803603810190610c559190613d6a565b612106565b005b348015610c6857600080fd5b50610c836004803603810190610c7e9190613eea565b6121fe565b005b606060018054610c9490613f6c565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc090613f6c565b8015610d0d5780601f10610ce257610100808354040283529160200191610d0d565b820191906000526020600020905b815481529060010190602001808311610cf057829003601f168201915b5050505050905090565b610d1f6122fe565b73ffffffffffffffffffffffffffffffffffffffff16610d3d6117fe565b73ffffffffffffffffffffffffffffffffffffffff1614610d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8a90613fea565b60405180910390fd5b8060198190555050565b6000610db1610daa6122fe565b8484612306565b6001905092915050565b610dc36122fe565b73ffffffffffffffffffffffffffffffffffffffff16610de16117fe565b73ffffffffffffffffffffffffffffffffffffffff1614610e37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2e90613fea565b60405180910390fd5b6001601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600a54905090565b602260009054906101000a900460ff1681565b6000600954905090565b6000600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061100d6122fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561108a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110819061407c565b60405180910390fd5b6110958484846124d1565b611135846110a16122fe565b84600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110eb6122fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461113091906140cb565b612306565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b61116c6122fe565b73ffffffffffffffffffffffffffffffffffffffff1661118a6117fe565b73ffffffffffffffffffffffffffffffffffffffff16146111e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d790613fea565b60405180910390fd5b80601d60006101000a81548160ff02191690831515021790555050565b6000600360009054906101000a900460ff1660ff16905090565b6000600b54905090565b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61124f6122fe565b73ffffffffffffffffffffffffffffffffffffffff1661126d6117fe565b73ffffffffffffffffffffffffffffffffffffffff16146112c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ba90613fea565b60405180910390fd5b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600860009054906101000a900460ff1681565b602260019054906101000a900460ff1681565b6000601954905090565b6000602054905090565b6113606122fe565b73ffffffffffffffffffffffffffffffffffffffff1661137e6117fe565b73ffffffffffffffffffffffffffffffffffffffff16146113d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cb90613fea565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561141f573d6000803e3d6000fd5b505050565b6000602454905090565b6114366122fe565b73ffffffffffffffffffffffffffffffffffffffff166114546117fe565b73ffffffffffffffffffffffffffffffffffffffff16146114aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a190613fea565b60405180910390fd5b806005819055506064600554600a546114c391906140ff565b6114cd9190614188565b60138190555050565b6000600754905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115316122fe565b73ffffffffffffffffffffffffffffffffffffffff1661154f6117fe565b73ffffffffffffffffffffffffffffffffffffffff16146115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159c90613fea565b60405180910390fd5b6115af6000613207565b565b6115b96122fe565b73ffffffffffffffffffffffffffffffffffffffff166115d76117fe565b73ffffffffffffffffffffffffffffffffffffffff161461162d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162490613fea565b60405180910390fd5b6000600860006101000a81548160ff021916908315150217905550565b6116526122fe565b73ffffffffffffffffffffffffffffffffffffffff166116706117fe565b73ffffffffffffffffffffffffffffffffffffffff16146116c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bd90613fea565b60405180910390fd5b80602260016101000a81548160ff02191690831515021790555050565b6116eb6122fe565b73ffffffffffffffffffffffffffffffffffffffff166117096117fe565b73ffffffffffffffffffffffffffffffffffffffff161461175f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175690613fea565b60405180910390fd5b8060208190555050565b60006117736117fe565b905090565b6117806122fe565b73ffffffffffffffffffffffffffffffffffffffff1661179e6117fe565b73ffffffffffffffffffffffffffffffffffffffff16146117f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117eb90613fea565b60405180910390fd5b80601e8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601e54905090565b60606002805461184090613f6c565b80601f016020809104026020016040519081016040528092919081815260200182805461186c90613f6c565b80156118b95780601f1061188e576101008083540402835291602001916118b9565b820191906000526020600020905b81548152906001019060200180831161189c57829003601f168201915b5050505050905090565b6118cb6122fe565b73ffffffffffffffffffffffffffffffffffffffff166118e96117fe565b73ffffffffffffffffffffffffffffffffffffffff161461193f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193690613fea565b60405180910390fd5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c79061422b565b60405180910390fd5b6119da82826132cb565b5050565b6000601b54905090565b600b5481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a1c6122fe565b73ffffffffffffffffffffffffffffffffffffffff16611a3a6117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8790613fea565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611af36122fe565b73ffffffffffffffffffffffffffffffffffffffff16611b116117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5e90613fea565b60405180910390fd5b806006819055506064600654600a54611b8091906140ff565b611b8a9190614188565b60148190555050565b6000611ba7611ba06122fe565b84846124d1565b6001905092915050565b611bb96122fe565b73ffffffffffffffffffffffffffffffffffffffff16611bd76117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2490613fea565b60405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60106020528060005260406000206000915054906101000a900460ff1681565b6000601454905090565b611cba6122fe565b73ffffffffffffffffffffffffffffffffffffffff16611cd86117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2590613fea565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d7a6122fe565b73ffffffffffffffffffffffffffffffffffffffff16611d986117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de590613fea565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611ea76122fe565b73ffffffffffffffffffffffffffffffffffffffff16611ec56117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1290613fea565b60405180910390fd5b806007819055506103e8600754600a54611f3591906140ff565b611f3f9190614188565b600b8190555050565b6000601d60009054906101000a900460ff16905090565b611f676122fe565b73ffffffffffffffffffffffffffffffffffffffff16611f856117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd290613fea565b60405180910390fd5b8060098190555050565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000602354905090565b6000601354905090565b6120886122fe565b73ffffffffffffffffffffffffffffffffffffffff166120a66117fe565b73ffffffffffffffffffffffffffffffffffffffff16146120fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f390613fea565b60405180910390fd5b80601b8190555050565b61210e6122fe565b73ffffffffffffffffffffffffffffffffffffffff1661212c6117fe565b73ffffffffffffffffffffffffffffffffffffffff1614612182576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217990613fea565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156121f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e9906142bd565b60405180910390fd5b6121fb81613207565b50565b6122066122fe565b73ffffffffffffffffffffffffffffffffffffffff166122246117fe565b73ffffffffffffffffffffffffffffffffffffffff161461227a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227190613fea565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016122b592919061433c565b6020604051808303816000875af11580156122d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f8919061437a565b50505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236d90614419565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123dd906144ab565b60405180910390fd5b80600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124c49190613c79565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612541576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125389061453d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a8906145cf565b60405180910390fd5b600081116125f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125eb90614661565b60405180910390fd5b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561267b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612672906146f3565b60405180910390fd5b60001515601d60009054906101000a900460ff161515141561277857601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127385750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276e9061475f565b60405180910390fd5b5b600860009054906101000a900460ff1615612b65576127956117fe565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561280357506127d36117fe565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561283c5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612876575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612b6457601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561291e5750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129c557601454821115612968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295f906147f1565b60405180910390fd5b601354612974846114e0565b8361297f9190614811565b11156129c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b7906148b3565b60405180910390fd5b612b63565b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a685750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ab757601454821115612ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa990614945565b60405180910390fd5b612b62565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b6157601354612b14846114e0565b83612b1f9190614811565b1115612b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b57906148b3565b60405180910390fd5b5b5b5b5b5b6000612b70306114e0565b9050600b548110158015612b915750602260009054906101000a900460ff16155b8015612beb5750602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612c035750602260019054906101000a900460ff165b15612c2157600b548110612c2057600b549050612c1f8161336c565b5b5b600060019050600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612cc85750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612cda576000600481905550600090505b6000808215612fd65760011515601560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480612d92575060011515601560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc9906149b1565b60405180910390fd5b601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e795750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b15612ed5576000600481905550606460205487612e9691906140ff565b612ea09190614188565b91506064601e5487612eb291906140ff565b612ebc9190614188565b90508082612eca9190614811565b600481905550612fd5565b601060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f7c5750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b15612fd45760006004819055506064601b5487612f9991906140ff565b612fa39190614188565b9150606460195487612fb591906140ff565b612fbf9190614188565b90508082612fcd9190614811565b6004819055505b5b5b8585612fe291906140cb565b600c60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080828761303291906140cb565b61303c91906140cb565b600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461308a9190614811565b925050819055506000811461318b57600454600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130ea9190614811565b9250508190555080602460008282546131039190614811565b92505081905550816023600082825461311c9190614811565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516131829190613c79565b60405180910390a35b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454896131e891906140cb565b6040516131f59190613c79565b60405180910390a35050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001602260006101000a81548160ff021916908315150217905550613392602454613402565b61339d60235461348d565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f01904816040516133cc9190613c79565b60405180910390a1600060238190555060006024819055506000602260006101000a81548160ff02191690831515021790555050565b60006002826134119190614188565b90506000818361342191906140cb565b90506000479050613431836136f2565b6000814761343f91906140cb565b905061344b8382613935565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161347e939291906149d1565b60405180910390a15050505050565b6000600267ffffffffffffffff8111156134aa576134a9614a08565b5b6040519080825280602002602001820160405280156134d85781602001602082028036833780820191505090505b50905030816000815181106134f0576134ef614a37565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135bb9190614a7b565b816001815181106135cf576135ce614a37565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061363630602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612306565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016136bc959493929190614ba1565b600060405180830381600087803b1580156136d657600080fd5b505af11580156136ea573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff81111561370f5761370e614a08565b5b60405190808252806020026020018201604052801561373d5781602001602082028036833780820191505090505b509050308160008151811061375557613754614a37565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138209190614a7b565b8160018151811061383457613833614a37565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061389b30602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612306565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016138ff959493929190614bfb565b600060405180830381600087803b15801561391957600080fd5b505af115801561392d573d6000803e3d6000fd5b505050505050565b61396230602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612306565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807f0000000000000000000000000000000000000000000000000000000000000000426040518863ffffffff1660e01b81526004016139e996959493929190614c55565b60606040518083038185885af1158015613a07573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613a2c9190614ccb565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613a6d578082015181840152602081019050613a52565b83811115613a7c576000848401525b50505050565b6000601f19601f8301169050919050565b6000613a9e82613a33565b613aa88185613a3e565b9350613ab8818560208601613a4f565b613ac181613a82565b840191505092915050565b60006020820190508181036000830152613ae68184613a93565b905092915050565b600080fd5b6000819050919050565b613b0681613af3565b8114613b1157600080fd5b50565b600081359050613b2381613afd565b92915050565b600060208284031215613b3f57613b3e613aee565b5b6000613b4d84828501613b14565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613b8182613b56565b9050919050565b613b9181613b76565b8114613b9c57600080fd5b50565b600081359050613bae81613b88565b92915050565b60008060408385031215613bcb57613bca613aee565b5b6000613bd985828601613b9f565b9250506020613bea85828601613b14565b9150509250929050565b60008115159050919050565b613c0981613bf4565b82525050565b6000602082019050613c246000830184613c00565b92915050565b60008060408385031215613c4157613c40613aee565b5b6000613c4f85828601613b9f565b9250506020613c6085828601613b9f565b9150509250929050565b613c7381613af3565b82525050565b6000602082019050613c8e6000830184613c6a565b92915050565b600080600060608486031215613cad57613cac613aee565b5b6000613cbb86828701613b9f565b9350506020613ccc86828701613b9f565b9250506040613cdd86828701613b14565b9150509250925092565b613cf081613b76565b82525050565b6000602082019050613d0b6000830184613ce7565b92915050565b613d1a81613bf4565b8114613d2557600080fd5b50565b600081359050613d3781613d11565b92915050565b600060208284031215613d5357613d52613aee565b5b6000613d6184828501613d28565b91505092915050565b600060208284031215613d8057613d7f613aee565b5b6000613d8e84828501613b9f565b91505092915050565b6000613da282613b56565b9050919050565b613db281613d97565b8114613dbd57600080fd5b50565b600081359050613dcf81613da9565b92915050565b600060208284031215613deb57613dea613aee565b5b6000613df984828501613dc0565b91505092915050565b60008060408385031215613e1957613e18613aee565b5b6000613e2785828601613b9f565b9250506020613e3885828601613d28565b9150509250929050565b613e4b81613d97565b82525050565b6000602082019050613e666000830184613e42565b92915050565b60008060408385031215613e8357613e82613aee565b5b6000613e9185828601613dc0565b9250506020613ea285828601613d28565b9150509250929050565b6000613eb782613b76565b9050919050565b613ec781613eac565b8114613ed257600080fd5b50565b600081359050613ee481613ebe565b92915050565b600080600060608486031215613f0357613f02613aee565b5b6000613f1186828701613ed5565b9350506020613f2286828701613dc0565b9250506040613f3386828701613b14565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613f8457607f821691505b60208210811415613f9857613f97613f3d565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613fd4602083613a3e565b9150613fdf82613f9e565b602082019050919050565b6000602082019050818103600083015261400381613fc7565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614066602883613a3e565b91506140718261400a565b604082019050919050565b6000602082019050818103600083015261409581614059565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006140d682613af3565b91506140e183613af3565b9250828210156140f4576140f361409c565b5b828203905092915050565b600061410a82613af3565b915061411583613af3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561414e5761414d61409c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061419382613af3565b915061419e83613af3565b9250826141ae576141ad614159565b5b828204905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614215603983613a3e565b9150614220826141b9565b604082019050919050565b6000602082019050818103600083015261424481614208565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006142a7602683613a3e565b91506142b28261424b565b604082019050919050565b600060208201905081810360008301526142d68161429a565b9050919050565b6000819050919050565b60006143026142fd6142f884613b56565b6142dd565b613b56565b9050919050565b6000614314826142e7565b9050919050565b600061432682614309565b9050919050565b6143368161431b565b82525050565b6000604082019050614351600083018561432d565b61435e6020830184613c6a565b9392505050565b60008151905061437481613d11565b92915050565b6000602082840312156143905761438f613aee565b5b600061439e84828501614365565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614403602483613a3e565b915061440e826143a7565b604082019050919050565b60006020820190508181036000830152614432816143f6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614495602283613a3e565b91506144a082614439565b604082019050919050565b600060208201905081810360008301526144c481614488565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614527602583613a3e565b9150614532826144cb565b604082019050919050565b600060208201905081810360008301526145568161451a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006145b9602383613a3e565b91506145c48261455d565b604082019050919050565b600060208201905081810360008301526145e8816145ac565b9050919050565b7f45524332303a207472616e73666572656420616d6f756e74206d75737420626560008201527f2067726561746572207468616e207a65726f0000000000000000000000000000602082015250565b600061464b603283613a3e565b9150614656826145ef565b604082019050919050565b6000602082019050818103600083015261467a8161463e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006146dd602683613a3e565b91506146e882614681565b604082019050919050565b6000602082019050818103600083015261470c816146d0565b9050919050565b7f43616e742074726164652c2074726164652069732064697361626c6564000000600082015250565b6000614749601d83613a3e565b915061475482614713565b602082019050919050565b600060208201905081810360008301526147788161473c565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006147db603583613a3e565b91506147e68261477f565b604082019050919050565b6000602082019050818103600083015261480a816147ce565b9050919050565b600061481c82613af3565b915061482783613af3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561485c5761485b61409c565b5b828201905092915050565b7f556e61626c6520746f20657863656564204d61782057616c6c65740000000000600082015250565b600061489d601b83613a3e565b91506148a882614867565b602082019050919050565b600060208201905081810360008301526148cc81614890565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061492f603683613a3e565b915061493a826148d3565b604082019050919050565b6000602082019050818103600083015261495e81614922565b9050919050565b7f4e6f20626f747320616c6c6f77656420746f2074726164650000000000000000600082015250565b600061499b601883613a3e565b91506149a682614965565b602082019050919050565b600060208201905081810360008301526149ca8161498e565b9050919050565b60006060820190506149e66000830186613c6a565b6149f36020830185613c6a565b614a006040830184613c6a565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614a7581613b88565b92915050565b600060208284031215614a9157614a90613aee565b5b6000614a9f84828501614a66565b91505092915050565b6000819050919050565b6000614acd614ac8614ac384614aa8565b6142dd565b613af3565b9050919050565b614add81614ab2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614b1881613b76565b82525050565b6000614b2a8383614b0f565b60208301905092915050565b6000602082019050919050565b6000614b4e82614ae3565b614b588185614aee565b9350614b6383614aff565b8060005b83811015614b94578151614b7b8882614b1e565b9750614b8683614b36565b925050600181019050614b67565b5085935050505092915050565b600060a082019050614bb66000830188613c6a565b614bc36020830187614ad4565b8181036040830152614bd58186614b43565b9050614be4606083018561432d565b614bf16080830184613c6a565b9695505050505050565b600060a082019050614c106000830188613c6a565b614c1d6020830187614ad4565b8181036040830152614c2f8186614b43565b9050614c3e6060830185613ce7565b614c4b6080830184613c6a565b9695505050505050565b600060c082019050614c6a6000830189613ce7565b614c776020830188613c6a565b614c846040830187614ad4565b614c916060830186614ad4565b614c9e6080830185613ce7565b614cab60a0830184613c6a565b979650505050505050565b600081519050614cc581613afd565b92915050565b600080600060608486031215614ce457614ce3613aee565b5b6000614cf286828701614cb6565b9350506020614d0386828701614cb6565b9250506040614d1486828701614cb6565b915050925092509256fea2646970667358221220aa088b9559461b93a918ec93337ef3c762890904ffaba2c7d14d10ed7c6fe04e64736f6c634300080b0033

Deployed Bytecode

0x6080604052600436106103395760003560e01c8063893d20e8116101ab578063b62496f5116100f7578063d7d7442f11610095578063e1370dd31161006f578063e1370dd314610bdf578063edcf19b214610c0a578063f2fde38b14610c33578063f7da678514610c5c57610340565b8063d7d7442f14610b4e578063dd62ed3e14610b77578063ddcf9b9814610bb457610340565b8063cb664534116100d1578063cb66453414610a94578063cba0e99614610abd578063d1294d4c14610afa578063d15bcf0f14610b2357610340565b8063b62496f514610a03578063bf9b015914610a40578063bf9eb54014610a6b57610340565b80639b136da411610164578063a6c38f591161013e578063a6c38f591461094b578063a7a0745214610974578063a9059cbb1461099d578063b4d95a93146109da57610340565b80639b136da4146108ca578063a04bdc81146108f5578063a5ece9411461092057610340565b8063893d20e8146107cc5780638cd0260c146107f75780638da5cb5b1461082057806390f502831461084b57806395d89b41146108765780639a7a23d6146108a157610340565b80634a0e963c116102855780636573c4df11610223578063715018a6116101fd578063715018a61461074c578063751039fc14610763578063801527ce1461077a5780638628c23f146107a357610340565b80636573c4df146106bb5780636df3333a146106e457806370a082311461070f57610340565b80634bd7ace51161025f5780634bd7ace5146106115780635297defd1461063c5780635be76f111461066757806364c161631461069057610340565b80634a0e963c146105925780634a62bb65146105bb5780634a74bb02146105e657610340565b806322788f86116102f25780632d03420b116102cc5780632d03420b146104e8578063313ce56714610511578063487a69051461053c57806349bd5a5e1461056757610340565b806322788f861461045557806323b872dd1461048057806327c8f835146104bd57610340565b806306fdde03146103455780630882a86314610370578063095ea7b31461039957806313b4a7f4146103d657806318160ddd146103ff578063220f66961461042a57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610c85565b6040516103679190613acc565b60405180910390f35b34801561037c57600080fd5b5061039760048036038101906103929190613b29565b610d17565b005b3480156103a557600080fd5b506103c060048036038101906103bb9190613bb4565b610d9d565b6040516103cd9190613c0f565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f89190613c2a565b610dbb565b005b34801561040b57600080fd5b50610414610f9b565b6040516104219190613c79565b60405180910390f35b34801561043657600080fd5b5061043f610fa5565b60405161044c9190613c0f565b60405180910390f35b34801561046157600080fd5b5061046a610fb8565b6040516104779190613c79565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a29190613c94565b610fc2565b6040516104b49190613c0f565b60405180910390f35b3480156104c957600080fd5b506104d2611140565b6040516104df9190613cf6565b60405180910390f35b3480156104f457600080fd5b5061050f600480360381019061050a9190613d3d565b611164565b005b34801561051d57600080fd5b506105266111fd565b6040516105339190613c79565b60405180910390f35b34801561054857600080fd5b50610551611217565b60405161055e9190613c79565b60405180910390f35b34801561057357600080fd5b5061057c611221565b6040516105899190613cf6565b60405180910390f35b34801561059e57600080fd5b506105b960048036038101906105b49190613d6a565b611247565b005b3480156105c757600080fd5b506105d061131e565b6040516105dd9190613c0f565b60405180910390f35b3480156105f257600080fd5b506105fb611331565b6040516106089190613c0f565b60405180910390f35b34801561061d57600080fd5b50610626611344565b6040516106339190613c79565b60405180910390f35b34801561064857600080fd5b5061065161134e565b60405161065e9190613c79565b60405180910390f35b34801561067357600080fd5b5061068e60048036038101906106899190613dd5565b611358565b005b34801561069c57600080fd5b506106a5611424565b6040516106b29190613c79565b60405180910390f35b3480156106c757600080fd5b506106e260048036038101906106dd9190613b29565b61142e565b005b3480156106f057600080fd5b506106f96114d6565b6040516107069190613c79565b60405180910390f35b34801561071b57600080fd5b5061073660048036038101906107319190613d6a565b6114e0565b6040516107439190613c79565b60405180910390f35b34801561075857600080fd5b50610761611529565b005b34801561076f57600080fd5b506107786115b1565b005b34801561078657600080fd5b506107a1600480360381019061079c9190613d3d565b61164a565b005b3480156107af57600080fd5b506107ca60048036038101906107c59190613b29565b6116e3565b005b3480156107d857600080fd5b506107e1611769565b6040516107ee9190613cf6565b60405180910390f35b34801561080357600080fd5b5061081e60048036038101906108199190613b29565b611778565b005b34801561082c57600080fd5b506108356117fe565b6040516108429190613cf6565b60405180910390f35b34801561085757600080fd5b50610860611827565b60405161086d9190613c79565b60405180910390f35b34801561088257600080fd5b5061088b611831565b6040516108989190613acc565b60405180910390f35b3480156108ad57600080fd5b506108c860048036038101906108c39190613e02565b6118c3565b005b3480156108d657600080fd5b506108df6119de565b6040516108ec9190613c79565b60405180910390f35b34801561090157600080fd5b5061090a6119e8565b6040516109179190613c79565b60405180910390f35b34801561092c57600080fd5b506109356119ee565b6040516109429190613e51565b60405180910390f35b34801561095757600080fd5b50610972600480360381019061096d9190613e6c565b611a14565b005b34801561098057600080fd5b5061099b60048036038101906109969190613b29565b611aeb565b005b3480156109a957600080fd5b506109c460048036038101906109bf9190613bb4565b611b93565b6040516109d19190613c0f565b60405180910390f35b3480156109e657600080fd5b50610a0160048036038101906109fc9190613d6a565b611bb1565b005b348015610a0f57600080fd5b50610a2a6004803603810190610a259190613d6a565b611c88565b604051610a379190613c0f565b60405180910390f35b348015610a4c57600080fd5b50610a55611ca8565b604051610a629190613c79565b60405180910390f35b348015610a7757600080fd5b50610a926004803603810190610a8d9190613d6a565b611cb2565b005b348015610aa057600080fd5b50610abb6004803603810190610ab69190613d6a565b611d72565b005b348015610ac957600080fd5b50610ae46004803603810190610adf9190613d6a565b611e49565b604051610af19190613c0f565b60405180910390f35b348015610b0657600080fd5b50610b216004803603810190610b1c9190613b29565b611e9f565b005b348015610b2f57600080fd5b50610b38611f48565b604051610b459190613c0f565b60405180910390f35b348015610b5a57600080fd5b50610b756004803603810190610b709190613b29565b611f5f565b005b348015610b8357600080fd5b50610b9e6004803603810190610b999190613c2a565b611fe5565b604051610bab9190613c79565b60405180910390f35b348015610bc057600080fd5b50610bc961206c565b604051610bd69190613c79565b60405180910390f35b348015610beb57600080fd5b50610bf4612076565b604051610c019190613c79565b60405180910390f35b348015610c1657600080fd5b50610c316004803603810190610c2c9190613b29565b612080565b005b348015610c3f57600080fd5b50610c5a6004803603810190610c559190613d6a565b612106565b005b348015610c6857600080fd5b50610c836004803603810190610c7e9190613eea565b6121fe565b005b606060018054610c9490613f6c565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc090613f6c565b8015610d0d5780601f10610ce257610100808354040283529160200191610d0d565b820191906000526020600020905b815481529060010190602001808311610cf057829003601f168201915b5050505050905090565b610d1f6122fe565b73ffffffffffffffffffffffffffffffffffffffff16610d3d6117fe565b73ffffffffffffffffffffffffffffffffffffffff1614610d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8a90613fea565b60405180910390fd5b8060198190555050565b6000610db1610daa6122fe565b8484612306565b6001905092915050565b610dc36122fe565b73ffffffffffffffffffffffffffffffffffffffff16610de16117fe565b73ffffffffffffffffffffffffffffffffffffffff1614610e37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2e90613fea565b60405180910390fd5b6001601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600a54905090565b602260009054906101000a900460ff1681565b6000600954905090565b6000600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061100d6122fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561108a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110819061407c565b60405180910390fd5b6110958484846124d1565b611135846110a16122fe565b84600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110eb6122fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461113091906140cb565b612306565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b61116c6122fe565b73ffffffffffffffffffffffffffffffffffffffff1661118a6117fe565b73ffffffffffffffffffffffffffffffffffffffff16146111e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d790613fea565b60405180910390fd5b80601d60006101000a81548160ff02191690831515021790555050565b6000600360009054906101000a900460ff1660ff16905090565b6000600b54905090565b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61124f6122fe565b73ffffffffffffffffffffffffffffffffffffffff1661126d6117fe565b73ffffffffffffffffffffffffffffffffffffffff16146112c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ba90613fea565b60405180910390fd5b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600860009054906101000a900460ff1681565b602260019054906101000a900460ff1681565b6000601954905090565b6000602054905090565b6113606122fe565b73ffffffffffffffffffffffffffffffffffffffff1661137e6117fe565b73ffffffffffffffffffffffffffffffffffffffff16146113d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cb90613fea565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561141f573d6000803e3d6000fd5b505050565b6000602454905090565b6114366122fe565b73ffffffffffffffffffffffffffffffffffffffff166114546117fe565b73ffffffffffffffffffffffffffffffffffffffff16146114aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a190613fea565b60405180910390fd5b806005819055506064600554600a546114c391906140ff565b6114cd9190614188565b60138190555050565b6000600754905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115316122fe565b73ffffffffffffffffffffffffffffffffffffffff1661154f6117fe565b73ffffffffffffffffffffffffffffffffffffffff16146115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159c90613fea565b60405180910390fd5b6115af6000613207565b565b6115b96122fe565b73ffffffffffffffffffffffffffffffffffffffff166115d76117fe565b73ffffffffffffffffffffffffffffffffffffffff161461162d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162490613fea565b60405180910390fd5b6000600860006101000a81548160ff021916908315150217905550565b6116526122fe565b73ffffffffffffffffffffffffffffffffffffffff166116706117fe565b73ffffffffffffffffffffffffffffffffffffffff16146116c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bd90613fea565b60405180910390fd5b80602260016101000a81548160ff02191690831515021790555050565b6116eb6122fe565b73ffffffffffffffffffffffffffffffffffffffff166117096117fe565b73ffffffffffffffffffffffffffffffffffffffff161461175f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175690613fea565b60405180910390fd5b8060208190555050565b60006117736117fe565b905090565b6117806122fe565b73ffffffffffffffffffffffffffffffffffffffff1661179e6117fe565b73ffffffffffffffffffffffffffffffffffffffff16146117f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117eb90613fea565b60405180910390fd5b80601e8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601e54905090565b60606002805461184090613f6c565b80601f016020809104026020016040519081016040528092919081815260200182805461186c90613f6c565b80156118b95780601f1061188e576101008083540402835291602001916118b9565b820191906000526020600020905b81548152906001019060200180831161189c57829003601f168201915b5050505050905090565b6118cb6122fe565b73ffffffffffffffffffffffffffffffffffffffff166118e96117fe565b73ffffffffffffffffffffffffffffffffffffffff161461193f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193690613fea565b60405180910390fd5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c79061422b565b60405180910390fd5b6119da82826132cb565b5050565b6000601b54905090565b600b5481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a1c6122fe565b73ffffffffffffffffffffffffffffffffffffffff16611a3a6117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8790613fea565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611af36122fe565b73ffffffffffffffffffffffffffffffffffffffff16611b116117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5e90613fea565b60405180910390fd5b806006819055506064600654600a54611b8091906140ff565b611b8a9190614188565b60148190555050565b6000611ba7611ba06122fe565b84846124d1565b6001905092915050565b611bb96122fe565b73ffffffffffffffffffffffffffffffffffffffff16611bd76117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2490613fea565b60405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60106020528060005260406000206000915054906101000a900460ff1681565b6000601454905090565b611cba6122fe565b73ffffffffffffffffffffffffffffffffffffffff16611cd86117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2590613fea565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d7a6122fe565b73ffffffffffffffffffffffffffffffffffffffff16611d986117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de590613fea565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611ea76122fe565b73ffffffffffffffffffffffffffffffffffffffff16611ec56117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1290613fea565b60405180910390fd5b806007819055506103e8600754600a54611f3591906140ff565b611f3f9190614188565b600b8190555050565b6000601d60009054906101000a900460ff16905090565b611f676122fe565b73ffffffffffffffffffffffffffffffffffffffff16611f856117fe565b73ffffffffffffffffffffffffffffffffffffffff1614611fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd290613fea565b60405180910390fd5b8060098190555050565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000602354905090565b6000601354905090565b6120886122fe565b73ffffffffffffffffffffffffffffffffffffffff166120a66117fe565b73ffffffffffffffffffffffffffffffffffffffff16146120fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f390613fea565b60405180910390fd5b80601b8190555050565b61210e6122fe565b73ffffffffffffffffffffffffffffffffffffffff1661212c6117fe565b73ffffffffffffffffffffffffffffffffffffffff1614612182576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217990613fea565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156121f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e9906142bd565b60405180910390fd5b6121fb81613207565b50565b6122066122fe565b73ffffffffffffffffffffffffffffffffffffffff166122246117fe565b73ffffffffffffffffffffffffffffffffffffffff161461227a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227190613fea565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016122b592919061433c565b6020604051808303816000875af11580156122d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f8919061437a565b50505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236d90614419565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123dd906144ab565b60405180910390fd5b80600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124c49190613c79565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612541576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125389061453d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a8906145cf565b60405180910390fd5b600081116125f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125eb90614661565b60405180910390fd5b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561267b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612672906146f3565b60405180910390fd5b60001515601d60009054906101000a900460ff161515141561277857601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127385750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276e9061475f565b60405180910390fd5b5b600860009054906101000a900460ff1615612b65576127956117fe565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561280357506127d36117fe565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561283c5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612876575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612b6457601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561291e5750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129c557601454821115612968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295f906147f1565b60405180910390fd5b601354612974846114e0565b8361297f9190614811565b11156129c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b7906148b3565b60405180910390fd5b612b63565b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a685750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ab757601454821115612ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa990614945565b60405180910390fd5b612b62565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b6157601354612b14846114e0565b83612b1f9190614811565b1115612b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b57906148b3565b60405180910390fd5b5b5b5b5b5b6000612b70306114e0565b9050600b548110158015612b915750602260009054906101000a900460ff16155b8015612beb5750602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612c035750602260019054906101000a900460ff165b15612c2157600b548110612c2057600b549050612c1f8161336c565b5b5b600060019050600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612cc85750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612cda576000600481905550600090505b6000808215612fd65760011515601560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480612d92575060011515601560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc9906149b1565b60405180910390fd5b601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e795750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b15612ed5576000600481905550606460205487612e9691906140ff565b612ea09190614188565b91506064601e5487612eb291906140ff565b612ebc9190614188565b90508082612eca9190614811565b600481905550612fd5565b601060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f7c5750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b15612fd45760006004819055506064601b5487612f9991906140ff565b612fa39190614188565b9150606460195487612fb591906140ff565b612fbf9190614188565b90508082612fcd9190614811565b6004819055505b5b5b8585612fe291906140cb565b600c60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080828761303291906140cb565b61303c91906140cb565b600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461308a9190614811565b925050819055506000811461318b57600454600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130ea9190614811565b9250508190555080602460008282546131039190614811565b92505081905550816023600082825461311c9190614811565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516131829190613c79565b60405180910390a35b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454896131e891906140cb565b6040516131f59190613c79565b60405180910390a35050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001602260006101000a81548160ff021916908315150217905550613392602454613402565b61339d60235461348d565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f01904816040516133cc9190613c79565b60405180910390a1600060238190555060006024819055506000602260006101000a81548160ff02191690831515021790555050565b60006002826134119190614188565b90506000818361342191906140cb565b90506000479050613431836136f2565b6000814761343f91906140cb565b905061344b8382613935565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161347e939291906149d1565b60405180910390a15050505050565b6000600267ffffffffffffffff8111156134aa576134a9614a08565b5b6040519080825280602002602001820160405280156134d85781602001602082028036833780820191505090505b50905030816000815181106134f0576134ef614a37565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135bb9190614a7b565b816001815181106135cf576135ce614a37565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061363630602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612306565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016136bc959493929190614ba1565b600060405180830381600087803b1580156136d657600080fd5b505af11580156136ea573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff81111561370f5761370e614a08565b5b60405190808252806020026020018201604052801561373d5781602001602082028036833780820191505090505b509050308160008151811061375557613754614a37565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138209190614a7b565b8160018151811061383457613833614a37565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061389b30602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612306565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016138ff959493929190614bfb565b600060405180830381600087803b15801561391957600080fd5b505af115801561392d573d6000803e3d6000fd5b505050505050565b61396230602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612306565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807f000000000000000000000000000000000000000000000000000000000000dead426040518863ffffffff1660e01b81526004016139e996959493929190614c55565b60606040518083038185885af1158015613a07573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613a2c9190614ccb565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613a6d578082015181840152602081019050613a52565b83811115613a7c576000848401525b50505050565b6000601f19601f8301169050919050565b6000613a9e82613a33565b613aa88185613a3e565b9350613ab8818560208601613a4f565b613ac181613a82565b840191505092915050565b60006020820190508181036000830152613ae68184613a93565b905092915050565b600080fd5b6000819050919050565b613b0681613af3565b8114613b1157600080fd5b50565b600081359050613b2381613afd565b92915050565b600060208284031215613b3f57613b3e613aee565b5b6000613b4d84828501613b14565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613b8182613b56565b9050919050565b613b9181613b76565b8114613b9c57600080fd5b50565b600081359050613bae81613b88565b92915050565b60008060408385031215613bcb57613bca613aee565b5b6000613bd985828601613b9f565b9250506020613bea85828601613b14565b9150509250929050565b60008115159050919050565b613c0981613bf4565b82525050565b6000602082019050613c246000830184613c00565b92915050565b60008060408385031215613c4157613c40613aee565b5b6000613c4f85828601613b9f565b9250506020613c6085828601613b9f565b9150509250929050565b613c7381613af3565b82525050565b6000602082019050613c8e6000830184613c6a565b92915050565b600080600060608486031215613cad57613cac613aee565b5b6000613cbb86828701613b9f565b9350506020613ccc86828701613b9f565b9250506040613cdd86828701613b14565b9150509250925092565b613cf081613b76565b82525050565b6000602082019050613d0b6000830184613ce7565b92915050565b613d1a81613bf4565b8114613d2557600080fd5b50565b600081359050613d3781613d11565b92915050565b600060208284031215613d5357613d52613aee565b5b6000613d6184828501613d28565b91505092915050565b600060208284031215613d8057613d7f613aee565b5b6000613d8e84828501613b9f565b91505092915050565b6000613da282613b56565b9050919050565b613db281613d97565b8114613dbd57600080fd5b50565b600081359050613dcf81613da9565b92915050565b600060208284031215613deb57613dea613aee565b5b6000613df984828501613dc0565b91505092915050565b60008060408385031215613e1957613e18613aee565b5b6000613e2785828601613b9f565b9250506020613e3885828601613d28565b9150509250929050565b613e4b81613d97565b82525050565b6000602082019050613e666000830184613e42565b92915050565b60008060408385031215613e8357613e82613aee565b5b6000613e9185828601613dc0565b9250506020613ea285828601613d28565b9150509250929050565b6000613eb782613b76565b9050919050565b613ec781613eac565b8114613ed257600080fd5b50565b600081359050613ee481613ebe565b92915050565b600080600060608486031215613f0357613f02613aee565b5b6000613f1186828701613ed5565b9350506020613f2286828701613dc0565b9250506040613f3386828701613b14565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613f8457607f821691505b60208210811415613f9857613f97613f3d565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613fd4602083613a3e565b9150613fdf82613f9e565b602082019050919050565b6000602082019050818103600083015261400381613fc7565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614066602883613a3e565b91506140718261400a565b604082019050919050565b6000602082019050818103600083015261409581614059565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006140d682613af3565b91506140e183613af3565b9250828210156140f4576140f361409c565b5b828203905092915050565b600061410a82613af3565b915061411583613af3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561414e5761414d61409c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061419382613af3565b915061419e83613af3565b9250826141ae576141ad614159565b5b828204905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614215603983613a3e565b9150614220826141b9565b604082019050919050565b6000602082019050818103600083015261424481614208565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006142a7602683613a3e565b91506142b28261424b565b604082019050919050565b600060208201905081810360008301526142d68161429a565b9050919050565b6000819050919050565b60006143026142fd6142f884613b56565b6142dd565b613b56565b9050919050565b6000614314826142e7565b9050919050565b600061432682614309565b9050919050565b6143368161431b565b82525050565b6000604082019050614351600083018561432d565b61435e6020830184613c6a565b9392505050565b60008151905061437481613d11565b92915050565b6000602082840312156143905761438f613aee565b5b600061439e84828501614365565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614403602483613a3e565b915061440e826143a7565b604082019050919050565b60006020820190508181036000830152614432816143f6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614495602283613a3e565b91506144a082614439565b604082019050919050565b600060208201905081810360008301526144c481614488565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614527602583613a3e565b9150614532826144cb565b604082019050919050565b600060208201905081810360008301526145568161451a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006145b9602383613a3e565b91506145c48261455d565b604082019050919050565b600060208201905081810360008301526145e8816145ac565b9050919050565b7f45524332303a207472616e73666572656420616d6f756e74206d75737420626560008201527f2067726561746572207468616e207a65726f0000000000000000000000000000602082015250565b600061464b603283613a3e565b9150614656826145ef565b604082019050919050565b6000602082019050818103600083015261467a8161463e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006146dd602683613a3e565b91506146e882614681565b604082019050919050565b6000602082019050818103600083015261470c816146d0565b9050919050565b7f43616e742074726164652c2074726164652069732064697361626c6564000000600082015250565b6000614749601d83613a3e565b915061475482614713565b602082019050919050565b600060208201905081810360008301526147788161473c565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006147db603583613a3e565b91506147e68261477f565b604082019050919050565b6000602082019050818103600083015261480a816147ce565b9050919050565b600061481c82613af3565b915061482783613af3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561485c5761485b61409c565b5b828201905092915050565b7f556e61626c6520746f20657863656564204d61782057616c6c65740000000000600082015250565b600061489d601b83613a3e565b91506148a882614867565b602082019050919050565b600060208201905081810360008301526148cc81614890565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061492f603683613a3e565b915061493a826148d3565b604082019050919050565b6000602082019050818103600083015261495e81614922565b9050919050565b7f4e6f20626f747320616c6c6f77656420746f2074726164650000000000000000600082015250565b600061499b601883613a3e565b91506149a682614965565b602082019050919050565b600060208201905081810360008301526149ca8161498e565b9050919050565b60006060820190506149e66000830186613c6a565b6149f36020830185613c6a565b614a006040830184613c6a565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614a7581613b88565b92915050565b600060208284031215614a9157614a90613aee565b5b6000614a9f84828501614a66565b91505092915050565b6000819050919050565b6000614acd614ac8614ac384614aa8565b6142dd565b613af3565b9050919050565b614add81614ab2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614b1881613b76565b82525050565b6000614b2a8383614b0f565b60208301905092915050565b6000602082019050919050565b6000614b4e82614ae3565b614b588185614aee565b9350614b6383614aff565b8060005b83811015614b94578151614b7b8882614b1e565b9750614b8683614b36565b925050600181019050614b67565b5085935050505092915050565b600060a082019050614bb66000830188613c6a565b614bc36020830187614ad4565b8181036040830152614bd58186614b43565b9050614be4606083018561432d565b614bf16080830184613c6a565b9695505050505050565b600060a082019050614c106000830188613c6a565b614c1d6020830187614ad4565b8181036040830152614c2f8186614b43565b9050614c3e6060830185613ce7565b614c4b6080830184613c6a565b9695505050505050565b600060c082019050614c6a6000830189613ce7565b614c776020830188613c6a565b614c846040830187614ad4565b614c916060830186614ad4565b614c9e6080830185613ce7565b614cab60a0830184613c6a565b979650505050505050565b600081519050614cc581613afd565b92915050565b600080600060608486031215614ce457614ce3613aee565b5b6000614cf286828701614cb6565b9350506020614d0386828701614cb6565b9250506040614d1486828701614cb6565b915050925092509256fea2646970667358221220aa088b9559461b93a918ec93337ef3c762890904ffaba2c7d14d10ed7c6fe04e64736f6c634300080b0033

Deployed Bytecode Sourcemap

5479:15819:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10039:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20116:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9686:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18834:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9096:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7217:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11538:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10579:388;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7299:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17032:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9949:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21190:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7765:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18588:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5816:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7252:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11111:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11428:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16846:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8988:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10390:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21087:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9213:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4844:94;;;;;;;;;;;;;:::i;:::-;;9860:81;;;;;;;;;;;;;:::i;:::-;;19268:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20478:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8785:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20359:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4193:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11324:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10121:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19672:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11213:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5969:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6384:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10975:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10219:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9342:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18710:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6298:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20709:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19419:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16053:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11645:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20804:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20984:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19148:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9529:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8877:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20606:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20233:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5093:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16595:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10039:76;10078:13;10105:5;10098:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10039:76;:::o;20116:111::-;4424:12;:10;:12::i;:::-;4413:23;;:7;:5;:7::i;:::-;:23;;;4405:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20210:9:::1;20198;:21;;;;20116:111:::0;:::o;9686:168::-;9763:4;9783:37;9792:12;:10;:12::i;:::-;9805:7;9813:6;9783:8;:37::i;:::-;9842:4;9835:11;;9686:168;;;;:::o;18834:302::-;4424:12;:10;:12::i;:::-;4413:23;;:7;:5;:7::i;:::-;:23;;;4405:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18977:4:::1;18940:17;:34;18966:6;18940:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;19021:4;18992:17;:26;19010:7;18992:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;19072:4;19036:16;:33;19061:6;19036:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;19115:4;19087:16;:25;19104:7;19087:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;18834:302:::0;;:::o;9096:106::-;9151:7;9181:12;;9174:19;;9096:106;:::o;7217:28::-;;;;;;;;;;;;;:::o;11538:101::-;11589:7;11615:16;;11608:23;;11538:101;:::o;10579:388::-;10711:4;10745:11;:19;10757:6;10745:19;;;;;;;;;;;;;;;:33;10765:12;:10;:12::i;:::-;10745:33;;;;;;;;;;;;;;;;10735:6;:43;;10727:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;10828:36;10838:6;10846:9;10857:6;10828:9;:36::i;:::-;10869:74;10878:6;10886:12;:10;:12::i;:::-;10936:6;10900:11;:19;10912:6;10900:19;;;;;;;;;;;;;;;:33;10920:12;:10;:12::i;:::-;10900:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;10869:8;:74::i;:::-;10955:4;10948:11;;10579:388;;;;;:::o;7299:81::-;;;:::o;17032:90::-;4424:12;:10;:12::i;:::-;4413:23;;:7;:5;:7::i;:::-;:23;;;4405:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17108:6:::1;17093:12;;:21;;;;;;;;;;;;;;;;;;17032:90:::0;:::o;9949:84::-;9990:7;10016:9;;;;;;;;;;;10009:16;;;;9949:84;:::o;21190:105::-;21241:7;21267:20;;21260:27;;21190:105;:::o;7765:28::-;;;;;;;;;;;;;:::o;18588:114::-;4424:12;:10;:12::i;:::-;4413:23;;:7;:5;:7::i;:::-;:23;;;4405:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18690:4:::1;18659:17;:28;18677:9;18659:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;18588:114:::0;:::o;5816:33::-;;;;;;;;;;;;;:::o;7252:40::-;;;;;;;;;;;;;:::o;11111:96::-;11160:7;11190:9;;11183:16;;11111:96;:::o;11428:98::-;11478:7;11508:10;;11501:17;;11428:98;:::o;16846:178::-;4424:12;:10;:12::i;:::-;4413:23;;:7;:5;:7::i;:::-;:23;;;4405:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16922:18:::1;16943:21;16922:42;;16983:11;16975:29;;:41;17005:10;16975:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16911:113;16846:178:::0;:::o;8988:99::-;9039:7;9069:9;;9062:16;;8988:99;:::o;10390:175::-;4424:12;:10;:12::i;:::-;4413:23;;:7;:5;:7::i;:::-;:23;;;4405:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10486:6:::1;10466:17;:26;;;;10552:3;10534:17;;10521:12;;:30;;;;:::i;:::-;:34;;;;:::i;:::-;10503:15;:52;;;;10390:175:::0;:::o;21087:97::-;21138:7;21164:12;;21157:19;;21087:97;:::o;9213:118::-;9279:7;9305:9;:18;9315:7;9305:18;;;;;;;;;;;;;;;;9298:25;;9213:118;;;:::o;4844:94::-;4424:12;:10;:12::i;:::-;4413:23;;:7;:5;:7::i;:::-;:23;;;4405:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4909:21:::1;4927:1;4909:9;:21::i;:::-;4844:94::o:0;9860:81::-;4424:12;:10;:12::i;:::-;4413:23;;:7;:5;:7::i;:::-;:23;;;4405:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9928:5:::1;9911:14;;:22;;;;;;;;;;;;;;;;;;9860:81::o:0;19268:113::-;4424:12;:10;:12::i;:::-;4413:23;;:7;:5;:7::i;:::-;:23;;;4405:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19365:8:::1;19341:21;;:32;;;;;;;;;;;;;;;;;;19268:113:::0;:::o;20478:112::-;4424:12;:10;:12::i;:::-;4413:23;;:7;:5;:7::i;:::-;:23;;;4405:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20573:9:::1;20561:10;:21;;;;20478:112:::0;:::o;8785:86::-;8826:7;8856;:5;:7::i;:::-;8849:14;;8785:86;:::o;20359:113::-;4424:12;:10;:12::i;:::-;4413:23;;:7;:5;:7::i;:::-;:23;;;4405:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20455:9:::1;20443:10;:21;;;;20359:113:::0;:::o;4193:87::-;4239:7;4266:6;;;;;;;;;;;4259:13;;4193:87;:::o;11324:98::-;11374:7;11404:10;;11397:17;;11324:98;:::o;10121:88::-;10162:13;10194:7;10187:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10121:88;:::o;19672:242::-;4424:12;:10;:12::i;:::-;4413:23;;:7;:5;:7::i;:::-;:23;;;4405:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19779:13:::1;;;;;;;;;;;19771:21;;:4;:21;;;;19763:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;19865:41;19894:4;19900:5;19865:28;:41::i;:::-;19672:242:::0;;:::o;11213:96::-;11262:7;11292:9;;11285:16;;11213:96;:::o;5969:71::-;;;;:::o;6384:93::-;;;;;;;;;;;;;:::o;10975:130::-;4424:12;:10;:12::i;:::-;4413:23;;:7;:5;:7::i;:::-;:23;;;4405:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11092:5:::1;11066:10;:23;11077:11;11066:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;10975:130:::0;;:::o;10219:164::-;4424:12;:10;:12::i;:::-;4413:23;;:7;:5;:7::i;:::-;:23;;;4405:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10307:6:::1;10291:13;:22;;;;10365:3;10351:13;;10338:12;;:26;;;;:::i;:::-;:30;;;;:::i;:::-;10324:11;:44;;;;10219:164:::0;:::o;9342:176::-;9422:4;9442:40;9452:12;:10;:12::i;:::-;9465:9;9475:6;9442:9;:40::i;:::-;9504:4;9497:11;;9342:176;;;;:::o;18710:116::-;4424:12;:10;:12::i;:::-;4413:23;;:7;:5;:7::i;:::-;:23;;;4405:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18813:5:::1;18783:17;:27;18801:8;18783:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;18710:116:::0;:::o;6298:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;20709:89::-;20753:7;20779:11;;20772:18;;20709:89;:::o;19419:118::-;4424:12;:10;:12::i;:::-;4413:23;;:7;:5;:7::i;:::-;:23;;;4405:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19518:10:::1;19491:16;;:38;;;;;;;;;;;;;;;;;;19419:118:::0;:::o;16053:123::-;4424:12;:10;:12::i;:::-;4413:23;;:7;:5;:7::i;:::-;:23;;;4405:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16157:4:::1;16125:17;:29;16143:10;16125:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;16053:123:::0;:::o;11645:118::-;11702:4;11729:17;:26;11747:7;11729:26;;;;;;;;;;;;;;;;;;;;;;;;;11722:33;;11645:118;;;:::o;20804:174::-;4424:12;:10;:12::i;:::-;4413:23;;:7;:5;:7::i;:::-;:23;;;4405:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20890:6:::1;20875:12;:21;;;;20956:4;20943:12;;20930;;:25;;;;:::i;:::-;:30;;;;:::i;:::-;20907:20;:53;;;;20804:174:::0;:::o;20984:97::-;21035:4;21058:12;;;;;;;;;;;21051:19;;20984:97;:::o;19148:112::-;4424:12;:10;:12::i;:::-;4413:23;;:7;:5;:7::i;:::-;:23;;;4405:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19238:12:::1;19219:16;:31;;;;19148:112:::0;:::o;9529:148::-;9612:7;9642:11;:18;9654:5;9642:18;;;;;;;;;;;;;;;:27;9661:7;9642:27;;;;;;;;;;;;;;;;9635:34;;9529:148;;;;:::o;8877:99::-;8928:7;8958:9;;8951:16;;8877:99;:::o;20606:97::-;20654:7;20680:15;;20673:22;;20606:97;:::o;20233:111::-;4424:12;:10;:12::i;:::-;4413:23;;:7;:5;:7::i;:::-;:23;;;4405:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20327:9:::1;20316;:20;;;;20233:111:::0;:::o;5093:192::-;4424:12;:10;:12::i;:::-;4413:23;;:7;:5;:7::i;:::-;:23;;;4405:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5202:1:::1;5182:22;;:8;:22;;;;5174:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5258:19;5268:8;5258:9;:19::i;:::-;5093:192:::0;:::o;16595:243::-;4424:12;:10;:12::i;:::-;4413:23;;:7;:5;:7::i;:::-;:23;;;4405:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16788:12:::1;:21;;;16810:11;16823:6;16788:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16595:243:::0;;;:::o;153:98::-;206:7;233:10;226:17;;153:98;:::o;18220:322::-;18329:1;18312:19;;:5;:19;;;;18304:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18404:1;18385:21;;:7;:21;;;;18377:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18482:6;18452:11;:18;18464:5;18452:18;;;;;;;;;;;;;;;:27;18471:7;18452:27;;;;;;;;;;;;;;;:36;;;;18514:7;18498:32;;18507:5;18498:32;;;18523:6;18498:32;;;;;;:::i;:::-;;;;;;;;18220:322;;;:::o;11771:4007::-;11885:1;11869:18;;:4;:18;;;;11861:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11956:1;11942:16;;:2;:16;;;;11934:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12026:1;12017:6;:10;12009:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12092:21;12116:9;:15;12126:4;12116:15;;;;;;;;;;;;;;;;12092:39;;12167:6;12150:13;:23;;12142:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12246:5;12230:21;;:12;;;;;;;;;;;:21;;;12227:141;;;12275:17;:21;12293:2;12275:21;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;12300:17;:23;12318:4;12300:23;;;;;;;;;;;;;;;;;;;;;;;;;12275:48;12267:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;12227:141;12413:14;;;;;;;;;;;12410:1075;;;12473:7;:5;:7::i;:::-;12465:15;;:4;:15;;;;:49;;;;;12507:7;:5;:7::i;:::-;12501:13;;:2;:13;;;;12465:49;:86;;;;;12549:1;12535:16;;:2;:16;;;;12465:86;:128;;;;;12586:6;12572:21;;:2;:21;;;;12465:128;12443:1031;;;12679:25;:31;12705:4;12679:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;12715:31;:35;12747:2;12715:35;;;;;;;;;;;;;;;;;;;;;;;;;12714:36;12679:71;12675:784;;;12793:11;;12783:6;:21;;12775:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;12919:15;;12902:13;12912:2;12902:9;:13::i;:::-;12893:6;:22;;;;:::i;:::-;:41;;12885:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;12675:784;;;13067:25;:29;13093:2;13067:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;13101:31;:37;13133:4;13101:37;;;;;;;;;;;;;;;;;;;;;;;;;13100:38;13067:71;13063:396;;;13181:11;;13171:6;:21;;13163:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;13063:396;;;13298:31;:35;13330:2;13298:35;;;;;;;;;;;;;;;;;;;;;;;;;13294:165;;13392:15;;13375:13;13385:2;13375:9;:13::i;:::-;13366:6;:22;;;;:::i;:::-;:41;;13358:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;13294:165;13063:396;12675:784;12443:1031;12410:1075;13496:25;13524:24;13542:4;13524:9;:24::i;:::-;13496:52;;13584:20;;13564:17;:40;;:66;;;;;13614:16;;;;;;;;;;;13613:17;13564:66;:96;;;;;13647:13;;;;;;;;;;;13639:21;;:4;:21;;;;13564:96;:126;;;;;13669:21;;;;;;;;;;;13564:126;13561:352;;;13734:20;;13713:17;:41;13710:188;;13799:20;;13779:40;;13842:36;13860:17;13842;:36::i;:::-;13710:188;13561:352;13929:13;13945:4;13929:20;;13995:17;:23;14013:4;13995:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;14022:17;:21;14040:2;14022:21;;;;;;;;;;;;;;;;;;;;;;;;;13995:48;13992:159;;;14080:1;14064:13;:17;;;;14111:5;14100:16;;13992:159;14165:17;14208;14286:8;14283:1023;;;14383:4;14363:24;;:10;:16;14374:4;14363:16;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;:46;;;;14405:4;14389:20;;:10;:14;14400:2;14389:14;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;14363:46;14360:127;;;14433:34;;;;;;;;;;:::i;:::-;;;;;;;;14360:127;14541:25;:29;14567:2;14541:29;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;;14588:7;;;;;;;;;;;14574:22;;:2;:22;;;;14541:55;14537:734;;;14641:1;14625:13;:17;;;;14701:3;14690:10;;14681:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;14669:35;;14763:3;14752:10;;14743:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;14731:35;;14847:9;14835;:21;;;;:::i;:::-;14819:13;:37;;;;14537:734;;;14931:25;:31;14957:4;14931:31;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;14982:7;;;;;;;;;;;14966:24;;:4;:24;;;;14931:59;14928:343;;;15053:1;15037:13;:17;;;;15108:3;15098:9;;15089:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;15077:34;;15165:3;15155:9;;15146:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;15134:34;;15241:9;15229;:21;;;;:::i;:::-;15213:13;:37;;;;14928:343;14537:734;14283:1023;15356:6;15340:13;:22;;;;:::i;:::-;15322:9;:15;15332:4;15322:15;;;;;;;;;;;;;;;:40;;;;15415:9;15403;15394:6;:18;;;;:::i;:::-;:30;;;;:::i;:::-;15377:9;:13;15387:2;15377:13;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;15455:1;15442:9;:14;15439:249;;15492:13;;15464:9;:24;15482:4;15464:24;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;15563:9;15550;;:22;;;;;;;:::i;:::-;;;;;;;;15600:9;15587;;:22;;;;;;;:::i;:::-;;;;;;;;15643:4;15620:44;;15629:4;15620:44;;;15650:13;;15620:44;;;;;;:::i;:::-;;;;;;;;15439:249;15722:2;15707:39;;15716:4;15707:39;;;15732:13;;15725:6;:20;;;;:::i;:::-;15707:39;;;;;;:::i;:::-;;;;;;;;11840:3938;;;;;11771:4007;;;:::o;5293:173::-;5349:16;5368:6;;;;;;;;;;;5349:25;;5394:8;5385:6;;:17;;;;;;;;;;;;;;;;;;5449:8;5418:40;;5439:8;5418:40;;;;;;;;;;;;5338:128;5293:173;:::o;19920:188::-;20037:5;20003:25;:31;20029:4;20003:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20094:5;20060:40;;20088:4;20060:40;;;;;;;;;;;;19920:188;;:::o;15784:262::-;7872:4;7853:16;;:23;;;;;;;;;;;;;;;;;;15864:25:::1;15879:9;;15864:14;:25::i;:::-;15900:30;15920:9;;15900:19;:30::i;:::-;15946:44;15976:13;15946:44;;;;;;:::i;:::-;;;;;;;;16013:1;16001:9;:13;;;;16037:1;16025:9;:13;;;;7906:5:::0;7887:16;;:24;;;;;;;;;;;;;;;;;;15784:262;:::o;17130:388::-;17192:12;17225:1;17207:15;:19;;;;:::i;:::-;17192:34;;17231:17;17269:4;17251:15;:22;;;;:::i;:::-;17231:42;;17278:22;17303:21;17278:46;;17331:22;17348:4;17331:16;:22::i;:::-;17358:18;17404:14;17379:21;:40;;;;:::i;:::-;17358:61;;17427:35;17440:9;17451:10;17427:12;:35::i;:::-;17472:41;17487:4;17492:10;17503:9;17472:41;;;;;;;;:::i;:::-;;;;;;;;17187:331;;;;17130:388;:::o;16182:399::-;16245:21;16283:1;16269:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16245:40;;16308:4;16290;16295:1;16290:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;16328:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16318:4;16323:1;16318:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;16347:49;16364:4;16379:7;;;;;;;;;;;16389:6;16347:8;:49::i;:::-;16407:7;;;;;;;;;;;:58;;;16471:6;16483:1;16519:4;16529:16;;;;;;;;;;;16551:15;16407:164;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16234:347;16182:399;:::o;17526:397::-;17585:21;17623:1;17609:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17585:40;;17648:4;17630;17635:1;17630:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17668:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17658:4;17663:1;17658:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;17687:54;17704:4;17719:7;;;;;;;;;;;17729:11;17687:8;:54::i;:::-;17752:7;;;;;;;;;;;:58;;;17816:11;17833:1;17869:4;17887;17898:15;17752:166;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17580:343;17526:397;:::o;17935:277::-;18008:54;18025:4;18040:7;;;;;;;;;;;18050:11;18008:8;:54::i;:::-;18069:7;;;;;;;;;;;:23;;;18099:9;18123:4;18134:11;18151:1;18158;18165:11;18187:15;18069:138;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17935:277;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:77;1761:7;1790:5;1779:16;;1724:77;;;:::o;1807:122::-;1880:24;1898:5;1880:24;:::i;:::-;1873:5;1870:35;1860:63;;1919:1;1916;1909:12;1860:63;1807:122;:::o;1935:139::-;1981:5;2019:6;2006:20;1997:29;;2035:33;2062:5;2035:33;:::i;:::-;1935:139;;;;:::o;2080:329::-;2139:6;2188:2;2176:9;2167:7;2163:23;2159:32;2156:119;;;2194:79;;:::i;:::-;2156:119;2314:1;2339:53;2384:7;2375:6;2364:9;2360:22;2339:53;:::i;:::-;2329:63;;2285:117;2080:329;;;;:::o;2415:126::-;2452:7;2492:42;2485:5;2481:54;2470:65;;2415:126;;;:::o;2547:96::-;2584:7;2613:24;2631:5;2613:24;:::i;:::-;2602:35;;2547:96;;;:::o;2649:122::-;2722:24;2740:5;2722:24;:::i;:::-;2715:5;2712:35;2702:63;;2761:1;2758;2751:12;2702:63;2649:122;:::o;2777:139::-;2823:5;2861:6;2848:20;2839:29;;2877:33;2904:5;2877:33;:::i;:::-;2777:139;;;;:::o;2922:474::-;2990:6;2998;3047:2;3035:9;3026:7;3022:23;3018:32;3015:119;;;3053:79;;:::i;:::-;3015:119;3173:1;3198:53;3243:7;3234:6;3223:9;3219:22;3198:53;:::i;:::-;3188:63;;3144:117;3300:2;3326:53;3371:7;3362:6;3351:9;3347:22;3326:53;:::i;:::-;3316:63;;3271:118;2922:474;;;;;:::o;3402:90::-;3436:7;3479:5;3472:13;3465:21;3454:32;;3402:90;;;:::o;3498:109::-;3579:21;3594:5;3579:21;:::i;:::-;3574:3;3567:34;3498:109;;:::o;3613:210::-;3700:4;3738:2;3727:9;3723:18;3715:26;;3751:65;3813:1;3802:9;3798:17;3789:6;3751:65;:::i;:::-;3613:210;;;;:::o;3829:474::-;3897:6;3905;3954:2;3942:9;3933:7;3929:23;3925:32;3922:119;;;3960:79;;:::i;:::-;3922:119;4080:1;4105:53;4150:7;4141:6;4130:9;4126:22;4105:53;:::i;:::-;4095:63;;4051:117;4207:2;4233:53;4278:7;4269:6;4258:9;4254:22;4233:53;:::i;:::-;4223:63;;4178:118;3829:474;;;;;:::o;4309:118::-;4396:24;4414:5;4396:24;:::i;:::-;4391:3;4384:37;4309:118;;:::o;4433:222::-;4526:4;4564:2;4553:9;4549:18;4541:26;;4577:71;4645:1;4634:9;4630:17;4621:6;4577:71;:::i;:::-;4433:222;;;;:::o;4661:619::-;4738:6;4746;4754;4803:2;4791:9;4782:7;4778:23;4774:32;4771:119;;;4809:79;;:::i;:::-;4771:119;4929:1;4954:53;4999:7;4990:6;4979:9;4975:22;4954:53;:::i;:::-;4944:63;;4900:117;5056:2;5082:53;5127:7;5118:6;5107:9;5103:22;5082:53;:::i;:::-;5072:63;;5027:118;5184:2;5210:53;5255:7;5246:6;5235:9;5231:22;5210:53;:::i;:::-;5200:63;;5155:118;4661:619;;;;;:::o;5286:118::-;5373:24;5391:5;5373:24;:::i;:::-;5368:3;5361:37;5286:118;;:::o;5410:222::-;5503:4;5541:2;5530:9;5526:18;5518:26;;5554:71;5622:1;5611:9;5607:17;5598:6;5554:71;:::i;:::-;5410:222;;;;:::o;5638:116::-;5708:21;5723:5;5708:21;:::i;:::-;5701:5;5698:32;5688:60;;5744:1;5741;5734:12;5688:60;5638:116;:::o;5760:133::-;5803:5;5841:6;5828:20;5819:29;;5857:30;5881:5;5857:30;:::i;:::-;5760:133;;;;:::o;5899:323::-;5955:6;6004:2;5992:9;5983:7;5979:23;5975:32;5972:119;;;6010:79;;:::i;:::-;5972:119;6130:1;6155:50;6197:7;6188:6;6177:9;6173:22;6155:50;:::i;:::-;6145:60;;6101:114;5899:323;;;;:::o;6228:329::-;6287:6;6336:2;6324:9;6315:7;6311:23;6307:32;6304:119;;;6342:79;;:::i;:::-;6304:119;6462:1;6487:53;6532:7;6523:6;6512:9;6508:22;6487:53;:::i;:::-;6477:63;;6433:117;6228:329;;;;:::o;6563:104::-;6608:7;6637:24;6655:5;6637:24;:::i;:::-;6626:35;;6563:104;;;:::o;6673:138::-;6754:32;6780:5;6754:32;:::i;:::-;6747:5;6744:43;6734:71;;6801:1;6798;6791:12;6734:71;6673:138;:::o;6817:155::-;6871:5;6909:6;6896:20;6887:29;;6925:41;6960:5;6925:41;:::i;:::-;6817:155;;;;:::o;6978:345::-;7045:6;7094:2;7082:9;7073:7;7069:23;7065:32;7062:119;;;7100:79;;:::i;:::-;7062:119;7220:1;7245:61;7298:7;7289:6;7278:9;7274:22;7245:61;:::i;:::-;7235:71;;7191:125;6978:345;;;;:::o;7329:468::-;7394:6;7402;7451:2;7439:9;7430:7;7426:23;7422:32;7419:119;;;7457:79;;:::i;:::-;7419:119;7577:1;7602:53;7647:7;7638:6;7627:9;7623:22;7602:53;:::i;:::-;7592:63;;7548:117;7704:2;7730:50;7772:7;7763:6;7752:9;7748:22;7730:50;:::i;:::-;7720:60;;7675:115;7329:468;;;;;:::o;7803:142::-;7906:32;7932:5;7906:32;:::i;:::-;7901:3;7894:45;7803:142;;:::o;7951:254::-;8060:4;8098:2;8087:9;8083:18;8075:26;;8111:87;8195:1;8184:9;8180:17;8171:6;8111:87;:::i;:::-;7951:254;;;;:::o;8211:484::-;8284:6;8292;8341:2;8329:9;8320:7;8316:23;8312:32;8309:119;;;8347:79;;:::i;:::-;8309:119;8467:1;8492:61;8545:7;8536:6;8525:9;8521:22;8492:61;:::i;:::-;8482:71;;8438:125;8602:2;8628:50;8670:7;8661:6;8650:9;8646:22;8628:50;:::i;:::-;8618:60;;8573:115;8211:484;;;;;:::o;8701:109::-;8751:7;8780:24;8798:5;8780:24;:::i;:::-;8769:35;;8701:109;;;:::o;8816:148::-;8902:37;8933:5;8902:37;:::i;:::-;8895:5;8892:48;8882:76;;8954:1;8951;8944:12;8882:76;8816:148;:::o;8970:165::-;9029:5;9067:6;9054:20;9045:29;;9083:46;9123:5;9083:46;:::i;:::-;8970:165;;;;:::o;9141:661::-;9239:6;9247;9255;9304:2;9292:9;9283:7;9279:23;9275:32;9272:119;;;9310:79;;:::i;:::-;9272:119;9430:1;9455:66;9513:7;9504:6;9493:9;9489:22;9455:66;:::i;:::-;9445:76;;9401:130;9570:2;9596:61;9649:7;9640:6;9629:9;9625:22;9596:61;:::i;:::-;9586:71;;9541:126;9706:2;9732:53;9777:7;9768:6;9757:9;9753:22;9732:53;:::i;:::-;9722:63;;9677:118;9141:661;;;;;:::o;9808:180::-;9856:77;9853:1;9846:88;9953:4;9950:1;9943:15;9977:4;9974:1;9967:15;9994:320;10038:6;10075:1;10069:4;10065:12;10055:22;;10122:1;10116:4;10112:12;10143:18;10133:81;;10199:4;10191:6;10187:17;10177:27;;10133:81;10261:2;10253:6;10250:14;10230:18;10227:38;10224:84;;;10280:18;;:::i;:::-;10224:84;10045:269;9994:320;;;:::o;10320:182::-;10460:34;10456:1;10448:6;10444:14;10437:58;10320:182;:::o;10508:366::-;10650:3;10671:67;10735:2;10730:3;10671:67;:::i;:::-;10664:74;;10747:93;10836:3;10747:93;:::i;:::-;10865:2;10860:3;10856:12;10849:19;;10508:366;;;:::o;10880:419::-;11046:4;11084:2;11073:9;11069:18;11061:26;;11133:9;11127:4;11123:20;11119:1;11108:9;11104:17;11097:47;11161:131;11287:4;11161:131;:::i;:::-;11153:139;;10880:419;;;:::o;11305:227::-;11445:34;11441:1;11433:6;11429:14;11422:58;11514:10;11509:2;11501:6;11497:15;11490:35;11305:227;:::o;11538:366::-;11680:3;11701:67;11765:2;11760:3;11701:67;:::i;:::-;11694:74;;11777:93;11866:3;11777:93;:::i;:::-;11895:2;11890:3;11886:12;11879:19;;11538:366;;;:::o;11910:419::-;12076:4;12114:2;12103:9;12099:18;12091:26;;12163:9;12157:4;12153:20;12149:1;12138:9;12134:17;12127:47;12191:131;12317:4;12191:131;:::i;:::-;12183:139;;11910:419;;;:::o;12335:180::-;12383:77;12380:1;12373:88;12480:4;12477:1;12470:15;12504:4;12501:1;12494:15;12521:191;12561:4;12581:20;12599:1;12581:20;:::i;:::-;12576:25;;12615:20;12633:1;12615:20;:::i;:::-;12610:25;;12654:1;12651;12648:8;12645:34;;;12659:18;;:::i;:::-;12645:34;12704:1;12701;12697:9;12689:17;;12521:191;;;;:::o;12718:348::-;12758:7;12781:20;12799:1;12781:20;:::i;:::-;12776:25;;12815:20;12833:1;12815:20;:::i;:::-;12810:25;;13003:1;12935:66;12931:74;12928:1;12925:81;12920:1;12913:9;12906:17;12902:105;12899:131;;;13010:18;;:::i;:::-;12899:131;13058:1;13055;13051:9;13040:20;;12718:348;;;;:::o;13072:180::-;13120:77;13117:1;13110:88;13217:4;13214:1;13207:15;13241:4;13238:1;13231:15;13258:185;13298:1;13315:20;13333:1;13315:20;:::i;:::-;13310:25;;13349:20;13367:1;13349:20;:::i;:::-;13344:25;;13388:1;13378:35;;13393:18;;:::i;:::-;13378:35;13435:1;13432;13428:9;13423:14;;13258:185;;;;:::o;13449:244::-;13589:34;13585:1;13577:6;13573:14;13566:58;13658:27;13653:2;13645:6;13641:15;13634:52;13449:244;:::o;13699:366::-;13841:3;13862:67;13926:2;13921:3;13862:67;:::i;:::-;13855:74;;13938:93;14027:3;13938:93;:::i;:::-;14056:2;14051:3;14047:12;14040:19;;13699:366;;;:::o;14071:419::-;14237:4;14275:2;14264:9;14260:18;14252:26;;14324:9;14318:4;14314:20;14310:1;14299:9;14295:17;14288:47;14352:131;14478:4;14352:131;:::i;:::-;14344:139;;14071:419;;;:::o;14496:225::-;14636:34;14632:1;14624:6;14620:14;14613:58;14705:8;14700:2;14692:6;14688:15;14681:33;14496:225;:::o;14727:366::-;14869:3;14890:67;14954:2;14949:3;14890:67;:::i;:::-;14883:74;;14966:93;15055:3;14966:93;:::i;:::-;15084:2;15079:3;15075:12;15068:19;;14727:366;;;:::o;15099:419::-;15265:4;15303:2;15292:9;15288:18;15280:26;;15352:9;15346:4;15342:20;15338:1;15327:9;15323:17;15316:47;15380:131;15506:4;15380:131;:::i;:::-;15372:139;;15099:419;;;:::o;15524:60::-;15552:3;15573:5;15566:12;;15524:60;;;:::o;15590:142::-;15640:9;15673:53;15691:34;15700:24;15718:5;15700:24;:::i;:::-;15691:34;:::i;:::-;15673:53;:::i;:::-;15660:66;;15590:142;;;:::o;15738:126::-;15788:9;15821:37;15852:5;15821:37;:::i;:::-;15808:50;;15738:126;;;:::o;15870:134::-;15928:9;15961:37;15992:5;15961:37;:::i;:::-;15948:50;;15870:134;;;:::o;16010:147::-;16105:45;16144:5;16105:45;:::i;:::-;16100:3;16093:58;16010:147;;:::o;16163:348::-;16292:4;16330:2;16319:9;16315:18;16307:26;;16343:79;16419:1;16408:9;16404:17;16395:6;16343:79;:::i;:::-;16432:72;16500:2;16489:9;16485:18;16476:6;16432:72;:::i;:::-;16163:348;;;;;:::o;16517:137::-;16571:5;16602:6;16596:13;16587:22;;16618:30;16642:5;16618:30;:::i;:::-;16517:137;;;;:::o;16660:345::-;16727:6;16776:2;16764:9;16755:7;16751:23;16747:32;16744:119;;;16782:79;;:::i;:::-;16744:119;16902:1;16927:61;16980:7;16971:6;16960:9;16956:22;16927:61;:::i;:::-;16917:71;;16873:125;16660:345;;;;:::o;17011:223::-;17151:34;17147:1;17139:6;17135:14;17128:58;17220:6;17215:2;17207:6;17203:15;17196:31;17011:223;:::o;17240:366::-;17382:3;17403:67;17467:2;17462:3;17403:67;:::i;:::-;17396:74;;17479:93;17568:3;17479:93;:::i;:::-;17597:2;17592:3;17588:12;17581:19;;17240:366;;;:::o;17612:419::-;17778:4;17816:2;17805:9;17801:18;17793:26;;17865:9;17859:4;17855:20;17851:1;17840:9;17836:17;17829:47;17893:131;18019:4;17893:131;:::i;:::-;17885:139;;17612:419;;;:::o;18037:221::-;18177:34;18173:1;18165:6;18161:14;18154:58;18246:4;18241:2;18233:6;18229:15;18222:29;18037:221;:::o;18264:366::-;18406:3;18427:67;18491:2;18486:3;18427:67;:::i;:::-;18420:74;;18503:93;18592:3;18503:93;:::i;:::-;18621:2;18616:3;18612:12;18605:19;;18264:366;;;:::o;18636:419::-;18802:4;18840:2;18829:9;18825:18;18817:26;;18889:9;18883:4;18879:20;18875:1;18864:9;18860:17;18853:47;18917:131;19043:4;18917:131;:::i;:::-;18909:139;;18636:419;;;:::o;19061:224::-;19201:34;19197:1;19189:6;19185:14;19178:58;19270:7;19265:2;19257:6;19253:15;19246:32;19061:224;:::o;19291:366::-;19433:3;19454:67;19518:2;19513:3;19454:67;:::i;:::-;19447:74;;19530:93;19619:3;19530:93;:::i;:::-;19648:2;19643:3;19639:12;19632:19;;19291:366;;;:::o;19663:419::-;19829:4;19867:2;19856:9;19852:18;19844:26;;19916:9;19910:4;19906:20;19902:1;19891:9;19887:17;19880:47;19944:131;20070:4;19944:131;:::i;:::-;19936:139;;19663:419;;;:::o;20088:222::-;20228:34;20224:1;20216:6;20212:14;20205:58;20297:5;20292:2;20284:6;20280:15;20273:30;20088:222;:::o;20316:366::-;20458:3;20479:67;20543:2;20538:3;20479:67;:::i;:::-;20472:74;;20555:93;20644:3;20555:93;:::i;:::-;20673:2;20668:3;20664:12;20657:19;;20316:366;;;:::o;20688:419::-;20854:4;20892:2;20881:9;20877:18;20869:26;;20941:9;20935:4;20931:20;20927:1;20916:9;20912:17;20905:47;20969:131;21095:4;20969:131;:::i;:::-;20961:139;;20688:419;;;:::o;21113:237::-;21253:34;21249:1;21241:6;21237:14;21230:58;21322:20;21317:2;21309:6;21305:15;21298:45;21113:237;:::o;21356:366::-;21498:3;21519:67;21583:2;21578:3;21519:67;:::i;:::-;21512:74;;21595:93;21684:3;21595:93;:::i;:::-;21713:2;21708:3;21704:12;21697:19;;21356:366;;;:::o;21728:419::-;21894:4;21932:2;21921:9;21917:18;21909:26;;21981:9;21975:4;21971:20;21967:1;21956:9;21952:17;21945:47;22009:131;22135:4;22009:131;:::i;:::-;22001:139;;21728:419;;;:::o;22153:225::-;22293:34;22289:1;22281:6;22277:14;22270:58;22362:8;22357:2;22349:6;22345:15;22338:33;22153:225;:::o;22384:366::-;22526:3;22547:67;22611:2;22606:3;22547:67;:::i;:::-;22540:74;;22623:93;22712:3;22623:93;:::i;:::-;22741:2;22736:3;22732:12;22725:19;;22384:366;;;:::o;22756:419::-;22922:4;22960:2;22949:9;22945:18;22937:26;;23009:9;23003:4;22999:20;22995:1;22984:9;22980:17;22973:47;23037:131;23163:4;23037:131;:::i;:::-;23029:139;;22756:419;;;:::o;23181:179::-;23321:31;23317:1;23309:6;23305:14;23298:55;23181:179;:::o;23366:366::-;23508:3;23529:67;23593:2;23588:3;23529:67;:::i;:::-;23522:74;;23605:93;23694:3;23605:93;:::i;:::-;23723:2;23718:3;23714:12;23707:19;;23366:366;;;:::o;23738:419::-;23904:4;23942:2;23931:9;23927:18;23919:26;;23991:9;23985:4;23981:20;23977:1;23966:9;23962:17;23955:47;24019:131;24145:4;24019:131;:::i;:::-;24011:139;;23738:419;;;:::o;24163:240::-;24303:34;24299:1;24291:6;24287:14;24280:58;24372:23;24367:2;24359:6;24355:15;24348:48;24163:240;:::o;24409:366::-;24551:3;24572:67;24636:2;24631:3;24572:67;:::i;:::-;24565:74;;24648:93;24737:3;24648:93;:::i;:::-;24766:2;24761:3;24757:12;24750:19;;24409:366;;;:::o;24781:419::-;24947:4;24985:2;24974:9;24970:18;24962:26;;25034:9;25028:4;25024:20;25020:1;25009:9;25005:17;24998:47;25062:131;25188:4;25062:131;:::i;:::-;25054:139;;24781:419;;;:::o;25206:305::-;25246:3;25265:20;25283:1;25265:20;:::i;:::-;25260:25;;25299:20;25317:1;25299:20;:::i;:::-;25294:25;;25453:1;25385:66;25381:74;25378:1;25375:81;25372:107;;;25459:18;;:::i;:::-;25372:107;25503:1;25500;25496:9;25489:16;;25206:305;;;;:::o;25517:177::-;25657:29;25653:1;25645:6;25641:14;25634:53;25517:177;:::o;25700:366::-;25842:3;25863:67;25927:2;25922:3;25863:67;:::i;:::-;25856:74;;25939:93;26028:3;25939:93;:::i;:::-;26057:2;26052:3;26048:12;26041:19;;25700:366;;;:::o;26072:419::-;26238:4;26276:2;26265:9;26261:18;26253:26;;26325:9;26319:4;26315:20;26311:1;26300:9;26296:17;26289:47;26353:131;26479:4;26353:131;:::i;:::-;26345:139;;26072:419;;;:::o;26497:241::-;26637:34;26633:1;26625:6;26621:14;26614:58;26706:24;26701:2;26693:6;26689:15;26682:49;26497:241;:::o;26744:366::-;26886:3;26907:67;26971:2;26966:3;26907:67;:::i;:::-;26900:74;;26983:93;27072:3;26983:93;:::i;:::-;27101:2;27096:3;27092:12;27085:19;;26744:366;;;:::o;27116:419::-;27282:4;27320:2;27309:9;27305:18;27297:26;;27369:9;27363:4;27359:20;27355:1;27344:9;27340:17;27333:47;27397:131;27523:4;27397:131;:::i;:::-;27389:139;;27116:419;;;:::o;27541:174::-;27681:26;27677:1;27669:6;27665:14;27658:50;27541:174;:::o;27721:366::-;27863:3;27884:67;27948:2;27943:3;27884:67;:::i;:::-;27877:74;;27960:93;28049:3;27960:93;:::i;:::-;28078:2;28073:3;28069:12;28062:19;;27721:366;;;:::o;28093:419::-;28259:4;28297:2;28286:9;28282:18;28274:26;;28346:9;28340:4;28336:20;28332:1;28321:9;28317:17;28310:47;28374:131;28500:4;28374:131;:::i;:::-;28366:139;;28093:419;;;:::o;28518:442::-;28667:4;28705:2;28694:9;28690:18;28682:26;;28718:71;28786:1;28775:9;28771:17;28762:6;28718:71;:::i;:::-;28799:72;28867:2;28856:9;28852:18;28843:6;28799:72;:::i;:::-;28881;28949:2;28938:9;28934:18;28925:6;28881:72;:::i;:::-;28518:442;;;;;;:::o;28966:180::-;29014:77;29011:1;29004:88;29111:4;29108:1;29101:15;29135:4;29132:1;29125:15;29152:180;29200:77;29197:1;29190:88;29297:4;29294:1;29287:15;29321:4;29318:1;29311:15;29338:143;29395:5;29426:6;29420:13;29411:22;;29442:33;29469:5;29442:33;:::i;:::-;29338:143;;;;:::o;29487:351::-;29557:6;29606:2;29594:9;29585:7;29581:23;29577:32;29574:119;;;29612:79;;:::i;:::-;29574:119;29732:1;29757:64;29813:7;29804:6;29793:9;29789:22;29757:64;:::i;:::-;29747:74;;29703:128;29487:351;;;;:::o;29844:85::-;29889:7;29918:5;29907:16;;29844:85;;;:::o;29935:158::-;29993:9;30026:61;30044:42;30053:32;30079:5;30053:32;:::i;:::-;30044:42;:::i;:::-;30026:61;:::i;:::-;30013:74;;29935:158;;;:::o;30099:147::-;30194:45;30233:5;30194:45;:::i;:::-;30189:3;30182:58;30099:147;;:::o;30252:114::-;30319:6;30353:5;30347:12;30337:22;;30252:114;;;:::o;30372:184::-;30471:11;30505:6;30500:3;30493:19;30545:4;30540:3;30536:14;30521:29;;30372:184;;;;:::o;30562:132::-;30629:4;30652:3;30644:11;;30682:4;30677:3;30673:14;30665:22;;30562:132;;;:::o;30700:108::-;30777:24;30795:5;30777:24;:::i;:::-;30772:3;30765:37;30700:108;;:::o;30814:179::-;30883:10;30904:46;30946:3;30938:6;30904:46;:::i;:::-;30982:4;30977:3;30973:14;30959:28;;30814:179;;;;:::o;30999:113::-;31069:4;31101;31096:3;31092:14;31084:22;;30999:113;;;:::o;31148:732::-;31267:3;31296:54;31344:5;31296:54;:::i;:::-;31366:86;31445:6;31440:3;31366:86;:::i;:::-;31359:93;;31476:56;31526:5;31476:56;:::i;:::-;31555:7;31586:1;31571:284;31596:6;31593:1;31590:13;31571:284;;;31672:6;31666:13;31699:63;31758:3;31743:13;31699:63;:::i;:::-;31692:70;;31785:60;31838:6;31785:60;:::i;:::-;31775:70;;31631:224;31618:1;31615;31611:9;31606:14;;31571:284;;;31575:14;31871:3;31864:10;;31272:608;;;31148:732;;;;:::o;31886:847::-;32157:4;32195:3;32184:9;32180:19;32172:27;;32209:71;32277:1;32266:9;32262:17;32253:6;32209:71;:::i;:::-;32290:80;32366:2;32355:9;32351:18;32342:6;32290:80;:::i;:::-;32417:9;32411:4;32407:20;32402:2;32391:9;32387:18;32380:48;32445:108;32548:4;32539:6;32445:108;:::i;:::-;32437:116;;32563:80;32639:2;32628:9;32624:18;32615:6;32563:80;:::i;:::-;32653:73;32721:3;32710:9;32706:19;32697:6;32653:73;:::i;:::-;31886:847;;;;;;;;:::o;32739:831::-;33002:4;33040:3;33029:9;33025:19;33017:27;;33054:71;33122:1;33111:9;33107:17;33098:6;33054:71;:::i;:::-;33135:80;33211:2;33200:9;33196:18;33187:6;33135:80;:::i;:::-;33262:9;33256:4;33252:20;33247:2;33236:9;33232:18;33225:48;33290:108;33393:4;33384:6;33290:108;:::i;:::-;33282:116;;33408:72;33476:2;33465:9;33461:18;33452:6;33408:72;:::i;:::-;33490:73;33558:3;33547:9;33543:19;33534:6;33490:73;:::i;:::-;32739:831;;;;;;;;:::o;33576:807::-;33825:4;33863:3;33852:9;33848:19;33840:27;;33877:71;33945:1;33934:9;33930:17;33921:6;33877:71;:::i;:::-;33958:72;34026:2;34015:9;34011:18;34002:6;33958:72;:::i;:::-;34040:80;34116:2;34105:9;34101:18;34092:6;34040:80;:::i;:::-;34130;34206:2;34195:9;34191:18;34182:6;34130:80;:::i;:::-;34220:73;34288:3;34277:9;34273:19;34264:6;34220:73;:::i;:::-;34303;34371:3;34360:9;34356:19;34347:6;34303:73;:::i;:::-;33576:807;;;;;;;;;:::o;34389:143::-;34446:5;34477:6;34471:13;34462:22;;34493:33;34520:5;34493:33;:::i;:::-;34389:143;;;;:::o;34538:663::-;34626:6;34634;34642;34691:2;34679:9;34670:7;34666:23;34662:32;34659:119;;;34697:79;;:::i;:::-;34659:119;34817:1;34842:64;34898:7;34889:6;34878:9;34874:22;34842:64;:::i;:::-;34832:74;;34788:128;34955:2;34981:64;35037:7;35028:6;35017:9;35013:22;34981:64;:::i;:::-;34971:74;;34926:129;35094:2;35120:64;35176:7;35167:6;35156:9;35152:22;35120:64;:::i;:::-;35110:74;;35065:129;34538:663;;;;;:::o

Swarm Source

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