ETH Price: $3,439.89 (-1.18%)
Gas: 10 Gwei

Token

Shadowcats (SHADOWCATS)
 

Overview

Max Total Supply

1,000,000 SHADOWCATS

Holders

463

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
398.549775763458745077 SHADOWCATS

Value
$0.00
0xedc65569ddf1d30a93e911485453d3d6ec9694b3
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:
shadowcats

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-16
*/

// SPDX-License-Identifier: MIT



pragma solidity 0.8.11;

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

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

    function factory() external view returns (address);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}


contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

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

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}
library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

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

    function sub(uint256 a,uint256 b,string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(uint256 a,uint256 b,string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn, 
        uint amountOutMin, 
        address[] calldata path, 
        address to, 
        uint deadline
    ) external;
}

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

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    mapping (address => bool) public isBot;
    bool private _swapping;
    uint256 private _launchTime;

    address private devWallet;
    
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
        
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    
    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;
    
    uint256 public buyTotalFees;
    uint256 public buyDevFee;
 
    uint256 public sellTotalFees;
    uint256 public sellDevFee;
 
    uint256 public tokensForDev;
    
    /******************/

    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;

    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity);
    
    event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
 
    event devWalletUpdated(address indexed newWallet, address indexed oldWallet);

    constructor() ERC20("Shadowcats", "SHADOWCATS") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);



        uint256 _buyDevFee = 5;
 
        uint256 _sellDevFee = 25;
        
        uint256 totalSupply = 1 * 1e6 * 1e18;
        
        maxTransactionAmount = totalSupply * 1 / 100; // 1% maxTransactionAmountTxn
        maxWallet = totalSupply * 2 / 100; // 1% maxWallet
        swapTokensAtAmount = totalSupply * 5 / 10000; // 0.05% swap wallet

        // Set Fees
        buyDevFee = _buyDevFee;
        buyTotalFees =  buyDevFee;

        sellDevFee = _sellDevFee;
        sellTotalFees = sellDevFee;

        // Set Fee Wallet
        devWallet = address(owner()); // set as dev wallet


        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

        receive() external payable {
 
    }
 

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        _launchTime = block.timestamp.add(2);
    }
   
    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }
    
    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool) {
        transferDelayEnabled = false;
        return true;
    }
    
     // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) {
  	    require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
  	    require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply.");
  	    swapTokensAtAmount = newAmount;
  	    return true;
  	}
    
    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000) / 1e18, "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * 1e18;
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%");
        maxWallet = newNum * 1e18;
    }
    
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }
    
    function updateBuyFees(uint256 _devFee) external onlyOwner {
        buyDevFee = _devFee;
        buyTotalFees = buyDevFee;
        require(buyTotalFees <= 10, "Must keep fees at 10% or less");
    }
 
    function updateSellFees(uint256 _devFee) external onlyOwner {
        sellDevFee = _devFee;
        sellTotalFees = sellDevFee;
        require(sellTotalFees <= 25, "Must keep fees at 15% or less");
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
    }

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
    }

    // Variable Block - once enabled, can never be turned off 
    function enableTrading(uint256 Bblock) external onlyOwner {
        tradingActive = true;
        _launchTime = block.timestamp.add(Bblock);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
    }
    

    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }
 

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    
    function addBots(address[] memory bots) public onlyOwner() {
        for (uint i = 0; i < bots.length; i++) {
            if (bots[i] != uniswapV2Pair && bots[i] != address(uniswapV2Router)) {
                isBot[bots[i]] = true;
            }
        }
    }
    
    function removeBots(address[] memory bots) public onlyOwner() {
        for (uint i = 0; i < bots.length; i++) {
            isBot[bots[i]] = false;
        }
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!isBot[from], "Your address has been marked as a bot/sniper, you are unable to transfer or swap.");
        
         if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        
        if (block.timestamp < _launchTime) isBot[to] = true;
        
        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !_swapping
            ) {
                if (!tradingActive) {
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }
                 
                // On buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                
                // On sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if (!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }
        
		uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            !_swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            _swapping = true;
            swapBack();
            _swapping = false;
        }

        bool takeFee = !_swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) takeFee = false;
        
        
        uint256 fees = 0;
        // Only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // On sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForDev += fees * sellDevFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForDev += fees * buyDevFee / buyTotalFees;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }
        	
        	amount -= fees;
        }

        super._transfer(from, to, amount);
    }

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

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
    
    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForDev;
        bool success;
 
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
 
        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }
 
 
        _swapTokensForEth(totalTokensToSwap); 
 
        uint256 ethBalance = address(this).balance;
 
 
        tokensForDev = 0;
 
        (success,) = address(devWallet).call{value: ethBalance}("");
 

    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"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":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots","type":"address[]"}],"name":"addBots","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":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Bblock","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","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":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots","type":"address[]"}],"name":"removeBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","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":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600d60006101000a81548160ff0219169083151502179055506000600d60016101000a81548160ff0219169083151502179055506001600f60006101000a81548160ff0219169083151502179055503480156200006257600080fd5b506040518060400160405280600a81526020017f536861646f7763617473000000000000000000000000000000000000000000008152506040518060400160405280600a81526020017f534841444f5743415453000000000000000000000000000000000000000000008152508160039080519060200190620000e792919062000994565b5080600490805190602001906200010092919062000994565b5050506200012362000117620004ea60201b60201c565b620004f260201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200014f816001620005b860201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f5919062000aae565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000283919062000aae565b6040518363ffffffff1660e01b8152600401620002a292919062000af1565b6020604051808303816000875af1158015620002c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e8919062000aae565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200033060a0516001620005b860201b60201c565b6200034560a0516001620006a260201b60201c565b600060059050600060199050600069d3c21bcecceda10000009050606460018262000371919062000b57565b6200037d919062000be7565b600a81905550606460028262000394919062000b57565b620003a0919062000be7565b600c81905550612710600582620003b8919062000b57565b620003c4919062000be7565b600b819055508260118190555060115460108190555081601381905550601354601281905550620003fa620006fd60201b60201c565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200045c6200044e620006fd60201b60201c565b60016200072760201b60201c565b6200046f3060016200072760201b60201c565b6200048461dead60016200072760201b60201c565b620004a662000498620006fd60201b60201c565b6001620005b860201b60201c565b620004b9306001620005b860201b60201c565b620004ce61dead6001620005b860201b60201c565b620004e033826200081160201b60201c565b5050505062000e04565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005c8620004ea60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005ee620006fd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000647576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200063e9062000c80565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000737620004ea60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200075d620006fd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007b6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007ad9062000c80565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000884576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200087b9062000cf2565b60405180910390fd5b62000898600083836200098a60201b60201c565b8060026000828254620008ac919062000d14565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000903919062000d14565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200096a919062000d82565b60405180910390a362000986600083836200098f60201b60201c565b5050565b505050565b505050565b828054620009a29062000dce565b90600052602060002090601f016020900481019282620009c6576000855562000a12565b82601f10620009e157805160ff191683800117855562000a12565b8280016001018555821562000a12579182015b8281111562000a11578251825591602001919060010190620009f4565b5b50905062000a21919062000a25565b5090565b5b8082111562000a4057600081600090555060010162000a26565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a768262000a49565b9050919050565b62000a888162000a69565b811462000a9457600080fd5b50565b60008151905062000aa88162000a7d565b92915050565b60006020828403121562000ac75762000ac662000a44565b5b600062000ad78482850162000a97565b91505092915050565b62000aeb8162000a69565b82525050565b600060408201905062000b08600083018562000ae0565b62000b17602083018462000ae0565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b648262000b1e565b915062000b718362000b1e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000bad5762000bac62000b28565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000bf48262000b1e565b915062000c018362000b1e565b92508262000c145762000c1362000bb8565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000c6860208362000c1f565b915062000c758262000c30565b602082019050919050565b6000602082019050818103600083015262000c9b8162000c59565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000cda601f8362000c1f565b915062000ce78262000ca2565b602082019050919050565b6000602082019050818103600083015262000d0d8162000ccb565b9050919050565b600062000d218262000b1e565b915062000d2e8362000b1e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d665762000d6562000b28565b5b828201905092915050565b62000d7c8162000b1e565b82525050565b600060208201905062000d99600083018462000d71565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000de757607f821691505b6020821081141562000dfe5762000dfd62000d9f565b5b50919050565b60805160a051614d9962000e626000396000818161101e0152818161177c01528181611d43015261282d015260008181610bb101528181611db4015281816127d5015281816135bc0152818161369d01526136c40152614d996000f3fe6080604052600436106102815760003560e01c80638da5cb5b1161014f578063c18bc195116100c1578063dd62ed3e1161007a578063dd62ed3e146109cf578063e2f4560514610a0c578063e884f26014610a37578063eba4c33314610a62578063f2fde38b14610a8b578063f8b45b0514610ab457610288565b8063c18bc195146108bf578063c876d0b9146108e8578063c8c8ebe414610913578063d257b34f1461093e578063d34628cc1461097b578063d85ba063146109a457610288565b8063a0d82dc511610113578063a0d82dc514610789578063a457c2d7146107b4578063a9059cbb146107f1578063b62496f51461082e578063bbc0c7421461086b578063c02466681461089657610288565b80638da5cb5b146106b457806395d89b41146106df5780639a7a23d61461070a5780639c3b4fdc146107335780639fccce321461075e57610288565b806349bd5a5e116101f3578063715018a6116101ac578063715018a6146105e057806371fc4688146105f7578063751039fc146106205780637571336a1461064b57806382aa7c68146106745780638a8c523c1461069d57610288565b806349bd5a5e146104bc5780634a62bb65146104e75780634fbee193146105125780636a486a8e1461054f5780636c3bbfd71461057a57806370a08231146105a357610288565b80631816467f116102455780631816467f14610388578063203e727e146103b157806323b872dd146103da578063313ce5671461041757806339509351146104425780633bbac5791461047f57610288565b806306fdde031461028d578063095ea7b3146102b857806310d5de53146102f55780631694505e1461033257806318160ddd1461035d57610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a2610adf565b6040516102af91906137f3565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da91906138bd565b610b71565b6040516102ec9190613918565b60405180910390f35b34801561030157600080fd5b5061031c60048036038101906103179190613933565b610b8f565b6040516103299190613918565b60405180910390f35b34801561033e57600080fd5b50610347610baf565b60405161035491906139bf565b60405180910390f35b34801561036957600080fd5b50610372610bd3565b60405161037f91906139e9565b60405180910390f35b34801561039457600080fd5b506103af60048036038101906103aa9190613933565b610bdd565b005b3480156103bd57600080fd5b506103d860048036038101906103d39190613a04565b610d19565b005b3480156103e657600080fd5b5061040160048036038101906103fc9190613a31565b610e28565b60405161040e9190613918565b60405180910390f35b34801561042357600080fd5b5061042c610f47565b6040516104399190613aa0565b60405180910390f35b34801561044e57600080fd5b50610469600480360381019061046491906138bd565b610f50565b6040516104769190613918565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a19190613933565b610ffc565b6040516104b39190613918565b60405180910390f35b3480156104c857600080fd5b506104d161101c565b6040516104de9190613aca565b60405180910390f35b3480156104f357600080fd5b506104fc611040565b6040516105099190613918565b60405180910390f35b34801561051e57600080fd5b5061053960048036038101906105349190613933565b611053565b6040516105469190613918565b60405180910390f35b34801561055b57600080fd5b506105646110a9565b60405161057191906139e9565b60405180910390f35b34801561058657600080fd5b506105a1600480360381019061059c9190613c2d565b6110af565b005b3480156105af57600080fd5b506105ca60048036038101906105c59190613933565b6111c0565b6040516105d791906139e9565b60405180910390f35b3480156105ec57600080fd5b506105f5611208565b005b34801561060357600080fd5b5061061e60048036038101906106199190613a04565b611290565b005b34801561062c57600080fd5b50610635611365565b6040516106429190613918565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d9190613ca2565b611405565b005b34801561068057600080fd5b5061069b60048036038101906106969190613a04565b6114dc565b005b3480156106a957600080fd5b506106b261158f565b005b3480156106c057600080fd5b506106c9611642565b6040516106d69190613aca565b60405180910390f35b3480156106eb57600080fd5b506106f461166c565b60405161070191906137f3565b60405180910390f35b34801561071657600080fd5b50610731600480360381019061072c9190613ca2565b6116fe565b005b34801561073f57600080fd5b50610748611817565b60405161075591906139e9565b60405180910390f35b34801561076a57600080fd5b5061077361181d565b60405161078091906139e9565b60405180910390f35b34801561079557600080fd5b5061079e611823565b6040516107ab91906139e9565b60405180910390f35b3480156107c057600080fd5b506107db60048036038101906107d691906138bd565b611829565b6040516107e89190613918565b60405180910390f35b3480156107fd57600080fd5b50610818600480360381019061081391906138bd565b611914565b6040516108259190613918565b60405180910390f35b34801561083a57600080fd5b5061085560048036038101906108509190613933565b611932565b6040516108629190613918565b60405180910390f35b34801561087757600080fd5b50610880611952565b60405161088d9190613918565b60405180910390f35b3480156108a257600080fd5b506108bd60048036038101906108b89190613ca2565b611965565b005b3480156108cb57600080fd5b506108e660048036038101906108e19190613a04565b611a3c565b005b3480156108f457600080fd5b506108fd611b4b565b60405161090a9190613918565b60405180910390f35b34801561091f57600080fd5b50610928611b5e565b60405161093591906139e9565b60405180910390f35b34801561094a57600080fd5b5061096560048036038101906109609190613a04565b611b64565b6040516109729190613918565b60405180910390f35b34801561098757600080fd5b506109a2600480360381019061099d9190613c2d565b611cb9565b005b3480156109b057600080fd5b506109b9611eac565b6040516109c691906139e9565b60405180910390f35b3480156109db57600080fd5b506109f660048036038101906109f19190613ce2565b611eb2565b604051610a0391906139e9565b60405180910390f35b348015610a1857600080fd5b50610a21611f39565b604051610a2e91906139e9565b60405180910390f35b348015610a4357600080fd5b50610a4c611f3f565b604051610a599190613918565b60405180910390f35b348015610a6e57600080fd5b50610a896004803603810190610a849190613a04565b611fdf565b005b348015610a9757600080fd5b50610ab26004803603810190610aad9190613933565b6120b4565b005b348015610ac057600080fd5b50610ac96121ac565b604051610ad691906139e9565b60405180910390f35b606060038054610aee90613d51565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1a90613d51565b8015610b675780601f10610b3c57610100808354040283529160200191610b67565b820191906000526020600020905b815481529060010190602001808311610b4a57829003601f168201915b5050505050905090565b6000610b85610b7e6121b2565b84846121ba565b6001905092915050565b60166020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610be56121b2565b73ffffffffffffffffffffffffffffffffffffffff16610c03611642565b73ffffffffffffffffffffffffffffffffffffffff1614610c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5090613dcf565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610d216121b2565b73ffffffffffffffffffffffffffffffffffffffff16610d3f611642565b73ffffffffffffffffffffffffffffffffffffffff1614610d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8c90613dcf565b60405180910390fd5b670de0b6b3a76400006103e86001610dab610bd3565b610db59190613e1e565b610dbf9190613ea7565b610dc99190613ea7565b811015610e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0290613f4a565b60405180910390fd5b670de0b6b3a764000081610e1f9190613e1e565b600a8190555050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e746121b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f305782811015610f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1290613fdc565b60405180910390fd5b610f2f85610f276121b2565b8584036121ba565b5b610f3b858585612385565b60019150509392505050565b60006012905090565b6000610ff2610f5d6121b2565b848460016000610f6b6121b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fed9190613ffc565b6121ba565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600d60009054906101000a900460ff1681565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60125481565b6110b76121b2565b73ffffffffffffffffffffffffffffffffffffffff166110d5611642565b73ffffffffffffffffffffffffffffffffffffffff161461112b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112290613dcf565b60405180910390fd5b60005b81518110156111bc576000600660008484815181106111505761114f614052565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111b490614081565b91505061112e565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112106121b2565b73ffffffffffffffffffffffffffffffffffffffff1661122e611642565b73ffffffffffffffffffffffffffffffffffffffff1614611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b90613dcf565b60405180910390fd5b61128e600061302b565b565b6112986121b2565b73ffffffffffffffffffffffffffffffffffffffff166112b6611642565b73ffffffffffffffffffffffffffffffffffffffff161461130c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130390613dcf565b60405180910390fd5b80601181905550601154601081905550600a6010541115611362576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135990614116565b60405180910390fd5b50565b600061136f6121b2565b73ffffffffffffffffffffffffffffffffffffffff1661138d611642565b73ffffffffffffffffffffffffffffffffffffffff16146113e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113da90613dcf565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b61140d6121b2565b73ffffffffffffffffffffffffffffffffffffffff1661142b611642565b73ffffffffffffffffffffffffffffffffffffffff1614611481576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147890613dcf565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6114e46121b2565b73ffffffffffffffffffffffffffffffffffffffff16611502611642565b73ffffffffffffffffffffffffffffffffffffffff1614611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f90613dcf565b60405180910390fd5b6001600d60016101000a81548160ff02191690831515021790555061158681426130f190919063ffffffff16565b60088190555050565b6115976121b2565b73ffffffffffffffffffffffffffffffffffffffff166115b5611642565b73ffffffffffffffffffffffffffffffffffffffff161461160b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160290613dcf565b60405180910390fd5b6001600d60016101000a81548160ff02191690831515021790555061163a6002426130f190919063ffffffff16565b600881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461167b90613d51565b80601f01602080910402602001604051908101604052809291908181526020018280546116a790613d51565b80156116f45780601f106116c9576101008083540402835291602001916116f4565b820191906000526020600020905b8154815290600101906020018083116116d757829003601f168201915b5050505050905090565b6117066121b2565b73ffffffffffffffffffffffffffffffffffffffff16611724611642565b73ffffffffffffffffffffffffffffffffffffffff161461177a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177190613dcf565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611809576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611800906141a8565b60405180910390fd5b6118138282613107565b5050565b60115481565b60145481565b60135481565b600080600160006118386121b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156118f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ec9061423a565b60405180910390fd5b6119096119006121b2565b858584036121ba565b600191505092915050565b60006119286119216121b2565b8484612385565b6001905092915050565b60176020528060005260406000206000915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b61196d6121b2565b73ffffffffffffffffffffffffffffffffffffffff1661198b611642565b73ffffffffffffffffffffffffffffffffffffffff16146119e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d890613dcf565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611a446121b2565b73ffffffffffffffffffffffffffffffffffffffff16611a62611642565b73ffffffffffffffffffffffffffffffffffffffff1614611ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aaf90613dcf565b60405180910390fd5b670de0b6b3a76400006103e86005611ace610bd3565b611ad89190613e1e565b611ae29190613ea7565b611aec9190613ea7565b811015611b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b25906142cc565b60405180910390fd5b670de0b6b3a764000081611b429190613e1e565b600c8190555050565b600f60009054906101000a900460ff1681565b600a5481565b6000611b6e6121b2565b73ffffffffffffffffffffffffffffffffffffffff16611b8c611642565b73ffffffffffffffffffffffffffffffffffffffff1614611be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd990613dcf565b60405180910390fd5b620186a06001611bf0610bd3565b611bfa9190613e1e565b611c049190613ea7565b821015611c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3d9061435e565b60405180910390fd5b6103e86005611c53610bd3565b611c5d9190613e1e565b611c679190613ea7565b821115611ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca0906143f0565b60405180910390fd5b81600b8190555060019050919050565b611cc16121b2565b73ffffffffffffffffffffffffffffffffffffffff16611cdf611642565b73ffffffffffffffffffffffffffffffffffffffff1614611d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2c90613dcf565b60405180910390fd5b60005b8151811015611ea8577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16828281518110611d8b57611d8a614052565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614158015611e1d57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16828281518110611dfc57611dfb614052565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b15611e9557600160066000848481518110611e3b57611e3a614052565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8080611ea090614081565b915050611d38565b5050565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b6000611f496121b2565b73ffffffffffffffffffffffffffffffffffffffff16611f67611642565b73ffffffffffffffffffffffffffffffffffffffff1614611fbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb490613dcf565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b611fe76121b2565b73ffffffffffffffffffffffffffffffffffffffff16612005611642565b73ffffffffffffffffffffffffffffffffffffffff161461205b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205290613dcf565b60405180910390fd5b80601381905550601354601281905550601960125411156120b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a89061445c565b60405180910390fd5b50565b6120bc6121b2565b73ffffffffffffffffffffffffffffffffffffffff166120da611642565b73ffffffffffffffffffffffffffffffffffffffff1614612130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212790613dcf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156121a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612197906144ee565b60405180910390fd5b6121a98161302b565b50565b600c5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561222a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222190614580565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561229a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229190614612565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161237891906139e9565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ec906146a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245c90614736565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156124f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e9906147ee565b60405180910390fd5b600081141561250c5761250783836000613162565b613026565b60085442101561256f576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600d60009054906101000a900460ff1615612c325761258c611642565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125fa57506125ca611642565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126335750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561266d575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126865750600760009054906101000a900460ff16155b15612c3157600d60019054906101000a900460ff1661278057601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127405750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61277f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127769061485a565b60405180910390fd5b5b600f60009054906101000a900460ff16156129485761279d611642565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561282457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561287c57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156129475743600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f990614912565b60405180910390fd5b43600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156129eb5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a9257600a54811115612a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2c906149a4565b60405180910390fd5b600c54612a41836111c0565b82612a4c9190613ffc565b1115612a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8490614a10565b60405180910390fd5b612c30565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b355750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b8457600a54811115612b7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7690614aa2565b60405180910390fd5b612c2f565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c2e57600c54612be1836111c0565b82612bec9190613ffc565b1115612c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2490614a10565b60405180910390fd5b5b5b5b5b5b6000612c3d306111c0565b90506000600b548210159050808015612c635750600760009054906101000a900460ff16155b8015612cb95750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d0f5750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d655750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612da9576001600760006101000a81548160ff021916908315150217905550612d8d6133e3565b6000600760006101000a81548160ff0219169083151502179055505b6000600760009054906101000a900460ff16159050601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e5f5750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e6957600090505b6000811561301657601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ecc57506000601254115b15612f3357612ef96064612eeb601254886134e790919063ffffffff16565b6134fd90919063ffffffff16565b905060125460135482612f0c9190613e1e565b612f169190613ea7565b60146000828254612f279190613ffc565b92505081905550612ff2565b601760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f8e57506000601054115b15612ff157612fbb6064612fad601054886134e790919063ffffffff16565b6134fd90919063ffffffff16565b905060105460115482612fce9190613e1e565b612fd89190613ea7565b60146000828254612fe99190613ffc565b925050819055505b5b600081111561300757613006873083613162565b5b80856130139190614ac2565b94505b613021878787613162565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081836130ff9190613ffc565b905092915050565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156131d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c9906146a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161323990614736565b60405180910390fd5b61324d838383613513565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156132d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ca90614b68565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133669190613ffc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133ca91906139e9565b60405180910390a36133dd848484613518565b50505050565b60006133ee306111c0565b9050600060145490506000808314806134075750600082145b15613414575050506134e5565b6014600b546134239190613e1e565b83111561343c576014600b546134399190613e1e565b92505b6134458261351d565b60004790506000601481905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161349890614bb9565b60006040518083038185875af1925050503d80600081146134d5576040519150601f19603f3d011682016040523d82523d6000602084013e6134da565b606091505b505080925050505050505b565b600081836134f59190613e1e565b905092915050565b6000818361350b9190613ea7565b905092915050565b505050565b505050565b6000600267ffffffffffffffff81111561353a57613539613aea565b5b6040519080825280602002602001820160405280156135685781602001602082028036833780820191505090505b50905030816000815181106135805761357f614052565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613625573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136499190614be3565b8160018151811061365d5761365c614052565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506136c2307f0000000000000000000000000000000000000000000000000000000000000000846121ba565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613724959493929190614d09565b600060405180830381600087803b15801561373e57600080fd5b505af1158015613752573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613794578082015181840152602081019050613779565b838111156137a3576000848401525b50505050565b6000601f19601f8301169050919050565b60006137c58261375a565b6137cf8185613765565b93506137df818560208601613776565b6137e8816137a9565b840191505092915050565b6000602082019050818103600083015261380d81846137ba565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061385482613829565b9050919050565b61386481613849565b811461386f57600080fd5b50565b6000813590506138818161385b565b92915050565b6000819050919050565b61389a81613887565b81146138a557600080fd5b50565b6000813590506138b781613891565b92915050565b600080604083850312156138d4576138d361381f565b5b60006138e285828601613872565b92505060206138f3858286016138a8565b9150509250929050565b60008115159050919050565b613912816138fd565b82525050565b600060208201905061392d6000830184613909565b92915050565b6000602082840312156139495761394861381f565b5b600061395784828501613872565b91505092915050565b6000819050919050565b600061398561398061397b84613829565b613960565b613829565b9050919050565b60006139978261396a565b9050919050565b60006139a98261398c565b9050919050565b6139b98161399e565b82525050565b60006020820190506139d460008301846139b0565b92915050565b6139e381613887565b82525050565b60006020820190506139fe60008301846139da565b92915050565b600060208284031215613a1a57613a1961381f565b5b6000613a28848285016138a8565b91505092915050565b600080600060608486031215613a4a57613a4961381f565b5b6000613a5886828701613872565b9350506020613a6986828701613872565b9250506040613a7a868287016138a8565b9150509250925092565b600060ff82169050919050565b613a9a81613a84565b82525050565b6000602082019050613ab56000830184613a91565b92915050565b613ac481613849565b82525050565b6000602082019050613adf6000830184613abb565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613b22826137a9565b810181811067ffffffffffffffff82111715613b4157613b40613aea565b5b80604052505050565b6000613b54613815565b9050613b608282613b19565b919050565b600067ffffffffffffffff821115613b8057613b7f613aea565b5b602082029050602081019050919050565b600080fd5b6000613ba9613ba484613b65565b613b4a565b90508083825260208201905060208402830185811115613bcc57613bcb613b91565b5b835b81811015613bf55780613be18882613872565b845260208401935050602081019050613bce565b5050509392505050565b600082601f830112613c1457613c13613ae5565b5b8135613c24848260208601613b96565b91505092915050565b600060208284031215613c4357613c4261381f565b5b600082013567ffffffffffffffff811115613c6157613c60613824565b5b613c6d84828501613bff565b91505092915050565b613c7f816138fd565b8114613c8a57600080fd5b50565b600081359050613c9c81613c76565b92915050565b60008060408385031215613cb957613cb861381f565b5b6000613cc785828601613872565b9250506020613cd885828601613c8d565b9150509250929050565b60008060408385031215613cf957613cf861381f565b5b6000613d0785828601613872565b9250506020613d1885828601613872565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613d6957607f821691505b60208210811415613d7d57613d7c613d22565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613db9602083613765565b9150613dc482613d83565b602082019050919050565b60006020820190508181036000830152613de881613dac565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613e2982613887565b9150613e3483613887565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e6d57613e6c613def565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613eb282613887565b9150613ebd83613887565b925082613ecd57613ecc613e78565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000613f34602f83613765565b9150613f3f82613ed8565b604082019050919050565b60006020820190508181036000830152613f6381613f27565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613fc6602883613765565b9150613fd182613f6a565b604082019050919050565b60006020820190508181036000830152613ff581613fb9565b9050919050565b600061400782613887565b915061401283613887565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561404757614046613def565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061408c82613887565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156140bf576140be613def565b5b600182019050919050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b6000614100601d83613765565b915061410b826140ca565b602082019050919050565b6000602082019050818103600083015261412f816140f3565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614192603983613765565b915061419d82614136565b604082019050919050565b600060208201905081810360008301526141c181614185565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614224602583613765565b915061422f826141c8565b604082019050919050565b6000602082019050818103600083015261425381614217565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006142b6602483613765565b91506142c18261425a565b604082019050919050565b600060208201905081810360008301526142e5816142a9565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614348603583613765565b9150614353826142ec565b604082019050919050565b600060208201905081810360008301526143778161433b565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006143da603483613765565b91506143e58261437e565b604082019050919050565b60006020820190508181036000830152614409816143cd565b9050919050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000614446601d83613765565b915061445182614410565b602082019050919050565b6000602082019050818103600083015261447581614439565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006144d8602683613765565b91506144e38261447c565b604082019050919050565b60006020820190508181036000830152614507816144cb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061456a602483613765565b91506145758261450e565b604082019050919050565b600060208201905081810360008301526145998161455d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006145fc602283613765565b9150614607826145a0565b604082019050919050565b6000602082019050818103600083015261462b816145ef565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061468e602583613765565b915061469982614632565b604082019050919050565b600060208201905081810360008301526146bd81614681565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614720602383613765565b915061472b826146c4565b604082019050919050565b6000602082019050818103600083015261474f81614713565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120626f742f736e697065722c20796f752061726520756e61626c6520746f2060208201527f7472616e73666572206f7220737761702e000000000000000000000000000000604082015250565b60006147d8605183613765565b91506147e382614756565b606082019050919050565b60006020820190508181036000830152614807816147cb565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614844601683613765565b915061484f8261480e565b602082019050919050565b6000602082019050818103600083015261487381614837565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006148fc604983613765565b91506149078261487a565b606082019050919050565b6000602082019050818103600083015261492b816148ef565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061498e603583613765565b915061499982614932565b604082019050919050565b600060208201905081810360008301526149bd81614981565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006149fa601383613765565b9150614a05826149c4565b602082019050919050565b60006020820190508181036000830152614a29816149ed565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614a8c603683613765565b9150614a9782614a30565b604082019050919050565b60006020820190508181036000830152614abb81614a7f565b9050919050565b6000614acd82613887565b9150614ad883613887565b925082821015614aeb57614aea613def565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614b52602683613765565b9150614b5d82614af6565b604082019050919050565b60006020820190508181036000830152614b8181614b45565b9050919050565b600081905092915050565b50565b6000614ba3600083614b88565b9150614bae82614b93565b600082019050919050565b6000614bc482614b96565b9150819050919050565b600081519050614bdd8161385b565b92915050565b600060208284031215614bf957614bf861381f565b5b6000614c0784828501614bce565b91505092915050565b6000819050919050565b6000614c35614c30614c2b84614c10565b613960565b613887565b9050919050565b614c4581614c1a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614c8081613849565b82525050565b6000614c928383614c77565b60208301905092915050565b6000602082019050919050565b6000614cb682614c4b565b614cc08185614c56565b9350614ccb83614c67565b8060005b83811015614cfc578151614ce38882614c86565b9750614cee83614c9e565b925050600181019050614ccf565b5085935050505092915050565b600060a082019050614d1e60008301886139da565b614d2b6020830187614c3c565b8181036040830152614d3d8186614cab565b9050614d4c6060830185613abb565b614d5960808301846139da565b969550505050505056fea26469706673582212200df1f282bf9ac37e3a69fac33fbcd602d7506b4a36044ec71e0c1626fcd7e8ab64736f6c634300080b0033

Deployed Bytecode

0x6080604052600436106102815760003560e01c80638da5cb5b1161014f578063c18bc195116100c1578063dd62ed3e1161007a578063dd62ed3e146109cf578063e2f4560514610a0c578063e884f26014610a37578063eba4c33314610a62578063f2fde38b14610a8b578063f8b45b0514610ab457610288565b8063c18bc195146108bf578063c876d0b9146108e8578063c8c8ebe414610913578063d257b34f1461093e578063d34628cc1461097b578063d85ba063146109a457610288565b8063a0d82dc511610113578063a0d82dc514610789578063a457c2d7146107b4578063a9059cbb146107f1578063b62496f51461082e578063bbc0c7421461086b578063c02466681461089657610288565b80638da5cb5b146106b457806395d89b41146106df5780639a7a23d61461070a5780639c3b4fdc146107335780639fccce321461075e57610288565b806349bd5a5e116101f3578063715018a6116101ac578063715018a6146105e057806371fc4688146105f7578063751039fc146106205780637571336a1461064b57806382aa7c68146106745780638a8c523c1461069d57610288565b806349bd5a5e146104bc5780634a62bb65146104e75780634fbee193146105125780636a486a8e1461054f5780636c3bbfd71461057a57806370a08231146105a357610288565b80631816467f116102455780631816467f14610388578063203e727e146103b157806323b872dd146103da578063313ce5671461041757806339509351146104425780633bbac5791461047f57610288565b806306fdde031461028d578063095ea7b3146102b857806310d5de53146102f55780631694505e1461033257806318160ddd1461035d57610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a2610adf565b6040516102af91906137f3565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da91906138bd565b610b71565b6040516102ec9190613918565b60405180910390f35b34801561030157600080fd5b5061031c60048036038101906103179190613933565b610b8f565b6040516103299190613918565b60405180910390f35b34801561033e57600080fd5b50610347610baf565b60405161035491906139bf565b60405180910390f35b34801561036957600080fd5b50610372610bd3565b60405161037f91906139e9565b60405180910390f35b34801561039457600080fd5b506103af60048036038101906103aa9190613933565b610bdd565b005b3480156103bd57600080fd5b506103d860048036038101906103d39190613a04565b610d19565b005b3480156103e657600080fd5b5061040160048036038101906103fc9190613a31565b610e28565b60405161040e9190613918565b60405180910390f35b34801561042357600080fd5b5061042c610f47565b6040516104399190613aa0565b60405180910390f35b34801561044e57600080fd5b50610469600480360381019061046491906138bd565b610f50565b6040516104769190613918565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a19190613933565b610ffc565b6040516104b39190613918565b60405180910390f35b3480156104c857600080fd5b506104d161101c565b6040516104de9190613aca565b60405180910390f35b3480156104f357600080fd5b506104fc611040565b6040516105099190613918565b60405180910390f35b34801561051e57600080fd5b5061053960048036038101906105349190613933565b611053565b6040516105469190613918565b60405180910390f35b34801561055b57600080fd5b506105646110a9565b60405161057191906139e9565b60405180910390f35b34801561058657600080fd5b506105a1600480360381019061059c9190613c2d565b6110af565b005b3480156105af57600080fd5b506105ca60048036038101906105c59190613933565b6111c0565b6040516105d791906139e9565b60405180910390f35b3480156105ec57600080fd5b506105f5611208565b005b34801561060357600080fd5b5061061e60048036038101906106199190613a04565b611290565b005b34801561062c57600080fd5b50610635611365565b6040516106429190613918565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d9190613ca2565b611405565b005b34801561068057600080fd5b5061069b60048036038101906106969190613a04565b6114dc565b005b3480156106a957600080fd5b506106b261158f565b005b3480156106c057600080fd5b506106c9611642565b6040516106d69190613aca565b60405180910390f35b3480156106eb57600080fd5b506106f461166c565b60405161070191906137f3565b60405180910390f35b34801561071657600080fd5b50610731600480360381019061072c9190613ca2565b6116fe565b005b34801561073f57600080fd5b50610748611817565b60405161075591906139e9565b60405180910390f35b34801561076a57600080fd5b5061077361181d565b60405161078091906139e9565b60405180910390f35b34801561079557600080fd5b5061079e611823565b6040516107ab91906139e9565b60405180910390f35b3480156107c057600080fd5b506107db60048036038101906107d691906138bd565b611829565b6040516107e89190613918565b60405180910390f35b3480156107fd57600080fd5b50610818600480360381019061081391906138bd565b611914565b6040516108259190613918565b60405180910390f35b34801561083a57600080fd5b5061085560048036038101906108509190613933565b611932565b6040516108629190613918565b60405180910390f35b34801561087757600080fd5b50610880611952565b60405161088d9190613918565b60405180910390f35b3480156108a257600080fd5b506108bd60048036038101906108b89190613ca2565b611965565b005b3480156108cb57600080fd5b506108e660048036038101906108e19190613a04565b611a3c565b005b3480156108f457600080fd5b506108fd611b4b565b60405161090a9190613918565b60405180910390f35b34801561091f57600080fd5b50610928611b5e565b60405161093591906139e9565b60405180910390f35b34801561094a57600080fd5b5061096560048036038101906109609190613a04565b611b64565b6040516109729190613918565b60405180910390f35b34801561098757600080fd5b506109a2600480360381019061099d9190613c2d565b611cb9565b005b3480156109b057600080fd5b506109b9611eac565b6040516109c691906139e9565b60405180910390f35b3480156109db57600080fd5b506109f660048036038101906109f19190613ce2565b611eb2565b604051610a0391906139e9565b60405180910390f35b348015610a1857600080fd5b50610a21611f39565b604051610a2e91906139e9565b60405180910390f35b348015610a4357600080fd5b50610a4c611f3f565b604051610a599190613918565b60405180910390f35b348015610a6e57600080fd5b50610a896004803603810190610a849190613a04565b611fdf565b005b348015610a9757600080fd5b50610ab26004803603810190610aad9190613933565b6120b4565b005b348015610ac057600080fd5b50610ac96121ac565b604051610ad691906139e9565b60405180910390f35b606060038054610aee90613d51565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1a90613d51565b8015610b675780601f10610b3c57610100808354040283529160200191610b67565b820191906000526020600020905b815481529060010190602001808311610b4a57829003601f168201915b5050505050905090565b6000610b85610b7e6121b2565b84846121ba565b6001905092915050565b60166020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610be56121b2565b73ffffffffffffffffffffffffffffffffffffffff16610c03611642565b73ffffffffffffffffffffffffffffffffffffffff1614610c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5090613dcf565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610d216121b2565b73ffffffffffffffffffffffffffffffffffffffff16610d3f611642565b73ffffffffffffffffffffffffffffffffffffffff1614610d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8c90613dcf565b60405180910390fd5b670de0b6b3a76400006103e86001610dab610bd3565b610db59190613e1e565b610dbf9190613ea7565b610dc99190613ea7565b811015610e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0290613f4a565b60405180910390fd5b670de0b6b3a764000081610e1f9190613e1e565b600a8190555050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e746121b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f305782811015610f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1290613fdc565b60405180910390fd5b610f2f85610f276121b2565b8584036121ba565b5b610f3b858585612385565b60019150509392505050565b60006012905090565b6000610ff2610f5d6121b2565b848460016000610f6b6121b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fed9190613ffc565b6121ba565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000000a361804715edcfc61bce38bead4b5e4a49ec92181565b600d60009054906101000a900460ff1681565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60125481565b6110b76121b2565b73ffffffffffffffffffffffffffffffffffffffff166110d5611642565b73ffffffffffffffffffffffffffffffffffffffff161461112b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112290613dcf565b60405180910390fd5b60005b81518110156111bc576000600660008484815181106111505761114f614052565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111b490614081565b91505061112e565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112106121b2565b73ffffffffffffffffffffffffffffffffffffffff1661122e611642565b73ffffffffffffffffffffffffffffffffffffffff1614611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b90613dcf565b60405180910390fd5b61128e600061302b565b565b6112986121b2565b73ffffffffffffffffffffffffffffffffffffffff166112b6611642565b73ffffffffffffffffffffffffffffffffffffffff161461130c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130390613dcf565b60405180910390fd5b80601181905550601154601081905550600a6010541115611362576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135990614116565b60405180910390fd5b50565b600061136f6121b2565b73ffffffffffffffffffffffffffffffffffffffff1661138d611642565b73ffffffffffffffffffffffffffffffffffffffff16146113e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113da90613dcf565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b61140d6121b2565b73ffffffffffffffffffffffffffffffffffffffff1661142b611642565b73ffffffffffffffffffffffffffffffffffffffff1614611481576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147890613dcf565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6114e46121b2565b73ffffffffffffffffffffffffffffffffffffffff16611502611642565b73ffffffffffffffffffffffffffffffffffffffff1614611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f90613dcf565b60405180910390fd5b6001600d60016101000a81548160ff02191690831515021790555061158681426130f190919063ffffffff16565b60088190555050565b6115976121b2565b73ffffffffffffffffffffffffffffffffffffffff166115b5611642565b73ffffffffffffffffffffffffffffffffffffffff161461160b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160290613dcf565b60405180910390fd5b6001600d60016101000a81548160ff02191690831515021790555061163a6002426130f190919063ffffffff16565b600881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461167b90613d51565b80601f01602080910402602001604051908101604052809291908181526020018280546116a790613d51565b80156116f45780601f106116c9576101008083540402835291602001916116f4565b820191906000526020600020905b8154815290600101906020018083116116d757829003601f168201915b5050505050905090565b6117066121b2565b73ffffffffffffffffffffffffffffffffffffffff16611724611642565b73ffffffffffffffffffffffffffffffffffffffff161461177a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177190613dcf565b60405180910390fd5b7f0000000000000000000000000a361804715edcfc61bce38bead4b5e4a49ec92173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611809576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611800906141a8565b60405180910390fd5b6118138282613107565b5050565b60115481565b60145481565b60135481565b600080600160006118386121b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156118f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ec9061423a565b60405180910390fd5b6119096119006121b2565b858584036121ba565b600191505092915050565b60006119286119216121b2565b8484612385565b6001905092915050565b60176020528060005260406000206000915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b61196d6121b2565b73ffffffffffffffffffffffffffffffffffffffff1661198b611642565b73ffffffffffffffffffffffffffffffffffffffff16146119e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d890613dcf565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611a446121b2565b73ffffffffffffffffffffffffffffffffffffffff16611a62611642565b73ffffffffffffffffffffffffffffffffffffffff1614611ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aaf90613dcf565b60405180910390fd5b670de0b6b3a76400006103e86005611ace610bd3565b611ad89190613e1e565b611ae29190613ea7565b611aec9190613ea7565b811015611b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b25906142cc565b60405180910390fd5b670de0b6b3a764000081611b429190613e1e565b600c8190555050565b600f60009054906101000a900460ff1681565b600a5481565b6000611b6e6121b2565b73ffffffffffffffffffffffffffffffffffffffff16611b8c611642565b73ffffffffffffffffffffffffffffffffffffffff1614611be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd990613dcf565b60405180910390fd5b620186a06001611bf0610bd3565b611bfa9190613e1e565b611c049190613ea7565b821015611c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3d9061435e565b60405180910390fd5b6103e86005611c53610bd3565b611c5d9190613e1e565b611c679190613ea7565b821115611ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca0906143f0565b60405180910390fd5b81600b8190555060019050919050565b611cc16121b2565b73ffffffffffffffffffffffffffffffffffffffff16611cdf611642565b73ffffffffffffffffffffffffffffffffffffffff1614611d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2c90613dcf565b60405180910390fd5b60005b8151811015611ea8577f0000000000000000000000000a361804715edcfc61bce38bead4b5e4a49ec92173ffffffffffffffffffffffffffffffffffffffff16828281518110611d8b57611d8a614052565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614158015611e1d57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16828281518110611dfc57611dfb614052565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b15611e9557600160066000848481518110611e3b57611e3a614052565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8080611ea090614081565b915050611d38565b5050565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b6000611f496121b2565b73ffffffffffffffffffffffffffffffffffffffff16611f67611642565b73ffffffffffffffffffffffffffffffffffffffff1614611fbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb490613dcf565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b611fe76121b2565b73ffffffffffffffffffffffffffffffffffffffff16612005611642565b73ffffffffffffffffffffffffffffffffffffffff161461205b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205290613dcf565b60405180910390fd5b80601381905550601354601281905550601960125411156120b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a89061445c565b60405180910390fd5b50565b6120bc6121b2565b73ffffffffffffffffffffffffffffffffffffffff166120da611642565b73ffffffffffffffffffffffffffffffffffffffff1614612130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212790613dcf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156121a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612197906144ee565b60405180910390fd5b6121a98161302b565b50565b600c5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561222a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222190614580565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561229a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229190614612565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161237891906139e9565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ec906146a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245c90614736565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156124f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e9906147ee565b60405180910390fd5b600081141561250c5761250783836000613162565b613026565b60085442101561256f576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600d60009054906101000a900460ff1615612c325761258c611642565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125fa57506125ca611642565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126335750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561266d575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126865750600760009054906101000a900460ff16155b15612c3157600d60019054906101000a900460ff1661278057601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127405750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61277f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127769061485a565b60405180910390fd5b5b600f60009054906101000a900460ff16156129485761279d611642565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561282457507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561287c57507f0000000000000000000000000a361804715edcfc61bce38bead4b5e4a49ec92173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156129475743600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f990614912565b60405180910390fd5b43600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156129eb5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a9257600a54811115612a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2c906149a4565b60405180910390fd5b600c54612a41836111c0565b82612a4c9190613ffc565b1115612a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8490614a10565b60405180910390fd5b612c30565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b355750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b8457600a54811115612b7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7690614aa2565b60405180910390fd5b612c2f565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c2e57600c54612be1836111c0565b82612bec9190613ffc565b1115612c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2490614a10565b60405180910390fd5b5b5b5b5b5b6000612c3d306111c0565b90506000600b548210159050808015612c635750600760009054906101000a900460ff16155b8015612cb95750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d0f5750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d655750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612da9576001600760006101000a81548160ff021916908315150217905550612d8d6133e3565b6000600760006101000a81548160ff0219169083151502179055505b6000600760009054906101000a900460ff16159050601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e5f5750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e6957600090505b6000811561301657601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ecc57506000601254115b15612f3357612ef96064612eeb601254886134e790919063ffffffff16565b6134fd90919063ffffffff16565b905060125460135482612f0c9190613e1e565b612f169190613ea7565b60146000828254612f279190613ffc565b92505081905550612ff2565b601760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f8e57506000601054115b15612ff157612fbb6064612fad601054886134e790919063ffffffff16565b6134fd90919063ffffffff16565b905060105460115482612fce9190613e1e565b612fd89190613ea7565b60146000828254612fe99190613ffc565b925050819055505b5b600081111561300757613006873083613162565b5b80856130139190614ac2565b94505b613021878787613162565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081836130ff9190613ffc565b905092915050565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156131d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c9906146a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161323990614736565b60405180910390fd5b61324d838383613513565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156132d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ca90614b68565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133669190613ffc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133ca91906139e9565b60405180910390a36133dd848484613518565b50505050565b60006133ee306111c0565b9050600060145490506000808314806134075750600082145b15613414575050506134e5565b6014600b546134239190613e1e565b83111561343c576014600b546134399190613e1e565b92505b6134458261351d565b60004790506000601481905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161349890614bb9565b60006040518083038185875af1925050503d80600081146134d5576040519150601f19603f3d011682016040523d82523d6000602084013e6134da565b606091505b505080925050505050505b565b600081836134f59190613e1e565b905092915050565b6000818361350b9190613ea7565b905092915050565b505050565b505050565b6000600267ffffffffffffffff81111561353a57613539613aea565b5b6040519080825280602002602001820160405280156135685781602001602082028036833780820191505090505b50905030816000815181106135805761357f614052565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613625573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136499190614be3565b8160018151811061365d5761365c614052565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506136c2307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846121ba565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613724959493929190614d09565b600060405180830381600087803b15801561373e57600080fd5b505af1158015613752573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613794578082015181840152602081019050613779565b838111156137a3576000848401525b50505050565b6000601f19601f8301169050919050565b60006137c58261375a565b6137cf8185613765565b93506137df818560208601613776565b6137e8816137a9565b840191505092915050565b6000602082019050818103600083015261380d81846137ba565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061385482613829565b9050919050565b61386481613849565b811461386f57600080fd5b50565b6000813590506138818161385b565b92915050565b6000819050919050565b61389a81613887565b81146138a557600080fd5b50565b6000813590506138b781613891565b92915050565b600080604083850312156138d4576138d361381f565b5b60006138e285828601613872565b92505060206138f3858286016138a8565b9150509250929050565b60008115159050919050565b613912816138fd565b82525050565b600060208201905061392d6000830184613909565b92915050565b6000602082840312156139495761394861381f565b5b600061395784828501613872565b91505092915050565b6000819050919050565b600061398561398061397b84613829565b613960565b613829565b9050919050565b60006139978261396a565b9050919050565b60006139a98261398c565b9050919050565b6139b98161399e565b82525050565b60006020820190506139d460008301846139b0565b92915050565b6139e381613887565b82525050565b60006020820190506139fe60008301846139da565b92915050565b600060208284031215613a1a57613a1961381f565b5b6000613a28848285016138a8565b91505092915050565b600080600060608486031215613a4a57613a4961381f565b5b6000613a5886828701613872565b9350506020613a6986828701613872565b9250506040613a7a868287016138a8565b9150509250925092565b600060ff82169050919050565b613a9a81613a84565b82525050565b6000602082019050613ab56000830184613a91565b92915050565b613ac481613849565b82525050565b6000602082019050613adf6000830184613abb565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613b22826137a9565b810181811067ffffffffffffffff82111715613b4157613b40613aea565b5b80604052505050565b6000613b54613815565b9050613b608282613b19565b919050565b600067ffffffffffffffff821115613b8057613b7f613aea565b5b602082029050602081019050919050565b600080fd5b6000613ba9613ba484613b65565b613b4a565b90508083825260208201905060208402830185811115613bcc57613bcb613b91565b5b835b81811015613bf55780613be18882613872565b845260208401935050602081019050613bce565b5050509392505050565b600082601f830112613c1457613c13613ae5565b5b8135613c24848260208601613b96565b91505092915050565b600060208284031215613c4357613c4261381f565b5b600082013567ffffffffffffffff811115613c6157613c60613824565b5b613c6d84828501613bff565b91505092915050565b613c7f816138fd565b8114613c8a57600080fd5b50565b600081359050613c9c81613c76565b92915050565b60008060408385031215613cb957613cb861381f565b5b6000613cc785828601613872565b9250506020613cd885828601613c8d565b9150509250929050565b60008060408385031215613cf957613cf861381f565b5b6000613d0785828601613872565b9250506020613d1885828601613872565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613d6957607f821691505b60208210811415613d7d57613d7c613d22565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613db9602083613765565b9150613dc482613d83565b602082019050919050565b60006020820190508181036000830152613de881613dac565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613e2982613887565b9150613e3483613887565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e6d57613e6c613def565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613eb282613887565b9150613ebd83613887565b925082613ecd57613ecc613e78565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000613f34602f83613765565b9150613f3f82613ed8565b604082019050919050565b60006020820190508181036000830152613f6381613f27565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613fc6602883613765565b9150613fd182613f6a565b604082019050919050565b60006020820190508181036000830152613ff581613fb9565b9050919050565b600061400782613887565b915061401283613887565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561404757614046613def565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061408c82613887565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156140bf576140be613def565b5b600182019050919050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b6000614100601d83613765565b915061410b826140ca565b602082019050919050565b6000602082019050818103600083015261412f816140f3565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614192603983613765565b915061419d82614136565b604082019050919050565b600060208201905081810360008301526141c181614185565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614224602583613765565b915061422f826141c8565b604082019050919050565b6000602082019050818103600083015261425381614217565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006142b6602483613765565b91506142c18261425a565b604082019050919050565b600060208201905081810360008301526142e5816142a9565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614348603583613765565b9150614353826142ec565b604082019050919050565b600060208201905081810360008301526143778161433b565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006143da603483613765565b91506143e58261437e565b604082019050919050565b60006020820190508181036000830152614409816143cd565b9050919050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000614446601d83613765565b915061445182614410565b602082019050919050565b6000602082019050818103600083015261447581614439565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006144d8602683613765565b91506144e38261447c565b604082019050919050565b60006020820190508181036000830152614507816144cb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061456a602483613765565b91506145758261450e565b604082019050919050565b600060208201905081810360008301526145998161455d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006145fc602283613765565b9150614607826145a0565b604082019050919050565b6000602082019050818103600083015261462b816145ef565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061468e602583613765565b915061469982614632565b604082019050919050565b600060208201905081810360008301526146bd81614681565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614720602383613765565b915061472b826146c4565b604082019050919050565b6000602082019050818103600083015261474f81614713565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120626f742f736e697065722c20796f752061726520756e61626c6520746f2060208201527f7472616e73666572206f7220737761702e000000000000000000000000000000604082015250565b60006147d8605183613765565b91506147e382614756565b606082019050919050565b60006020820190508181036000830152614807816147cb565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614844601683613765565b915061484f8261480e565b602082019050919050565b6000602082019050818103600083015261487381614837565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006148fc604983613765565b91506149078261487a565b606082019050919050565b6000602082019050818103600083015261492b816148ef565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061498e603583613765565b915061499982614932565b604082019050919050565b600060208201905081810360008301526149bd81614981565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006149fa601383613765565b9150614a05826149c4565b602082019050919050565b60006020820190508181036000830152614a29816149ed565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614a8c603683613765565b9150614a9782614a30565b604082019050919050565b60006020820190508181036000830152614abb81614a7f565b9050919050565b6000614acd82613887565b9150614ad883613887565b925082821015614aeb57614aea613def565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614b52602683613765565b9150614b5d82614af6565b604082019050919050565b60006020820190508181036000830152614b8181614b45565b9050919050565b600081905092915050565b50565b6000614ba3600083614b88565b9150614bae82614b93565b600082019050919050565b6000614bc482614b96565b9150819050919050565b600081519050614bdd8161385b565b92915050565b600060208284031215614bf957614bf861381f565b5b6000614c0784828501614bce565b91505092915050565b6000819050919050565b6000614c35614c30614c2b84614c10565b613960565b613887565b9050919050565b614c4581614c1a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614c8081613849565b82525050565b6000614c928383614c77565b60208301905092915050565b6000602082019050919050565b6000614cb682614c4b565b614cc08185614c56565b9350614ccb83614c67565b8060005b83811015614cfc578151614ce38882614c86565b9750614cee83614c9e565b925050600181019050614ccf565b5085935050505092915050565b600060a082019050614d1e60008301886139da565b614d2b6020830187614c3c565b8181036040830152614d3d8186614cab565b9050614d4c6060830185613abb565b614d5960808301846139da565b969550505050505056fea26469706673582212200df1f282bf9ac37e3a69fac33fbcd602d7506b4a36044ec71e0c1626fcd7e8ab64736f6c634300080b0033

Deployed Bytecode Sourcemap

11701:12712:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3005:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3919:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12792:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11781:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3326:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18019:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16215:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4096:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3225:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4677:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11886:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11839;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12157:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18187:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12541:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18603:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3442:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10484:103;;;;;;;;;;;;;:::i;:::-;;16834:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15425:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16678:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17718:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15240:130;;;;;;;;;;;;;:::i;:::-;;10261:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3113:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17402:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12507:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12611:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12576:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4900:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3577:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13014:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12197:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17262:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16455:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12421:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12034:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15821:382;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18324:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12473:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3760:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12076:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15611:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17046:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10595:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12116:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3005:100;3059:13;3092:5;3085:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3005:100;:::o;3919:169::-;4002:4;4019:39;4028:12;:10;:12::i;:::-;4042:7;4051:6;4019:8;:39::i;:::-;4076:4;4069:11;;3919:169;;;;:::o;12792:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;11781:51::-;;;:::o;3326:108::-;3387:7;3414:12;;3407:19;;3326:108;:::o;18019:157::-;10407:12;:10;:12::i;:::-;10396:23;;:7;:5;:7::i;:::-;:23;;;10388:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18126:9:::1;;;;;;;;;;;18098:38;;18115:9;18098:38;;;;;;;;;;;;18159:9;18147;;:21;;;;;;;;;;;;;;;;;;18019:157:::0;:::o;16215:232::-;10407:12;:10;:12::i;:::-;10396:23;;:7;:5;:7::i;:::-;:23;;;10388:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16336:4:::1;16328;16324:1;16308:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;16307:33;;;;:::i;:::-;16297:6;:43;;16289:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;16435:4;16426:6;:13;;;;:::i;:::-;16403:20;:36;;;;16215:232:::0;:::o;4096:573::-;4236:4;4253:24;4280:11;:19;4292:6;4280:19;;;;;;;;;;;;;;;:33;4300:12;:10;:12::i;:::-;4280:33;;;;;;;;;;;;;;;;4253:60;;4348:17;4328:16;:37;4324:265;;4410:6;4390:16;:26;;4382:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4505:57;4514:6;4522:12;:10;:12::i;:::-;4555:6;4536:16;:25;4505:8;:57::i;:::-;4324:265;4601:36;4611:6;4619:9;4630:6;4601:9;:36::i;:::-;4657:4;4650:11;;;4096:573;;;;;:::o;3225:93::-;3283:5;3308:2;3301:9;;3225:93;:::o;4677:215::-;4765:4;4782:80;4791:12;:10;:12::i;:::-;4805:7;4851:10;4814:11;:25;4826:12;:10;:12::i;:::-;4814:25;;;;;;;;;;;;;;;:34;4840:7;4814:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4782:8;:80::i;:::-;4880:4;4873:11;;4677:215;;;;:::o;11886:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;11839:::-;;;:::o;12157:33::-;;;;;;;;;;;;;:::o;18187:125::-;18252:4;18276:19;:28;18296:7;18276:28;;;;;;;;;;;;;;;;;;;;;;;;;18269:35;;18187:125;;;:::o;12541:28::-;;;;:::o;18603:168::-;10407:12;:10;:12::i;:::-;10396:23;;:7;:5;:7::i;:::-;:23;;;10388:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18681:6:::1;18676:88;18697:4;:11;18693:1;:15;18676:88;;;18747:5;18730;:14;18736:4;18741:1;18736:7;;;;;;;;:::i;:::-;;;;;;;;18730:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;18710:3;;;;;:::i;:::-;;;;18676:88;;;;18603:168:::0;:::o;3442:127::-;3516:7;3543:9;:18;3553:7;3543:18;;;;;;;;;;;;;;;;3536:25;;3442:127;;;:::o;10484:103::-;10407:12;:10;:12::i;:::-;10396:23;;:7;:5;:7::i;:::-;:23;;;10388:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10549:30:::1;10576:1;10549:18;:30::i;:::-;10484:103::o:0;16834:203::-;10407:12;:10;:12::i;:::-;10396:23;;:7;:5;:7::i;:::-;:23;;;10388:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16916:7:::1;16904:9;:19;;;;16949:9;;16934:12;:24;;;;16993:2;16977:12;;:18;;16969:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;16834:203:::0;:::o;15425:121::-;15477:4;10407:12;:10;:12::i;:::-;10396:23;;:7;:5;:7::i;:::-;:23;;;10388:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15511:5:::1;15494:14;;:22;;;;;;;;;;;;;;;;;;15534:4;15527:11;;15425:121:::0;:::o;16678:144::-;10407:12;:10;:12::i;:::-;10396:23;;:7;:5;:7::i;:::-;:23;;;10388:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16810:4:::1;16768:31;:39;16800:6;16768:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;16678:144:::0;;:::o;17718:149::-;10407:12;:10;:12::i;:::-;10396:23;;:7;:5;:7::i;:::-;:23;;;10388:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17803:4:::1;17787:13;;:20;;;;;;;;;;;;;;;;;;17832:27;17852:6;17832:15;:19;;:27;;;;:::i;:::-;17818:11;:41;;;;17718:149:::0;:::o;15240:130::-;10407:12;:10;:12::i;:::-;10396:23;;:7;:5;:7::i;:::-;:23;;;10388:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15311:4:::1;15295:13;;:20;;;;;;;;;;;;;;;;;;15340:22;15360:1;15340:15;:19;;:22;;;;:::i;:::-;15326:11;:36;;;;15240:130::o:0;10261:87::-;10307:7;10334:6;;;;;;;;;;;10327:13;;10261:87;:::o;3113:104::-;3169:13;3202:7;3195:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3113:104;:::o;17402:244::-;10407:12;:10;:12::i;:::-;10396:23;;:7;:5;:7::i;:::-;:23;;;10388:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17509:13:::1;17501:21;;:4;:21;;;;17493:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;17597:41;17626:4;17632:5;17597:28;:41::i;:::-;17402:244:::0;;:::o;12507:24::-;;;;:::o;12611:27::-;;;;:::o;12576:25::-;;;;:::o;4900:413::-;4993:4;5010:24;5037:11;:25;5049:12;:10;:12::i;:::-;5037:25;;;;;;;;;;;;;;;:34;5063:7;5037:34;;;;;;;;;;;;;;;;5010:61;;5110:15;5090:16;:35;;5082:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5203:67;5212:12;:10;:12::i;:::-;5226:7;5254:15;5235:16;:34;5203:8;:67::i;:::-;5301:4;5294:11;;;4900:413;;;;:::o;3577:175::-;3663:4;3680:42;3690:12;:10;:12::i;:::-;3704:9;3715:6;3680:9;:42::i;:::-;3740:4;3733:11;;3577:175;;;;:::o;13014:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;12197:33::-;;;;;;;;;;;;;:::o;17262:132::-;10407:12;:10;:12::i;:::-;10396:23;;:7;:5;:7::i;:::-;:23;;;10388:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17378:8:::1;17347:19;:28;17367:7;17347:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17262:132:::0;;:::o;16455:211::-;10407:12;:10;:12::i;:::-;10396:23;;:7;:5;:7::i;:::-;:23;;;10388:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16577:4:::1;16571;16567:1;16551:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;16550:31;;;;:::i;:::-;16540:6;:41;;16532:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;16654:4;16645:6;:13;;;;:::i;:::-;16633:9;:25;;;;16455:211:::0;:::o;12421:39::-;;;;;;;;;;;;;:::o;12034:35::-;;;;:::o;15821:382::-;15902:4;10407:12;:10;:12::i;:::-;10396:23;;:7;:5;:7::i;:::-;:23;;;10388:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15959:6:::1;15955:1;15939:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;15926:9;:39;;15918:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;16074:4;16070:1;16054:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;16041:9;:37;;16033:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;16166:9;16145:18;:30;;;;16192:4;16185:11;;15821:382:::0;;;:::o;18324:267::-;10407:12;:10;:12::i;:::-;10396:23;;:7;:5;:7::i;:::-;:23;;;10388:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18399:6:::1;18394:190;18415:4;:11;18411:1;:15;18394:190;;;18463:13;18452:24;;:4;18457:1;18452:7;;;;;;;;:::i;:::-;;;;;;;;:24;;;;:63;;;;;18499:15;18480:35;;:4;18485:1;18480:7;;;;;;;;:::i;:::-;;;;;;;;:35;;;;18452:63;18448:125;;;18553:4;18536:5;:14;18542:4;18547:1;18542:7;;;;;;;;:::i;:::-;;;;;;;;18536:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;18448:125;18428:3;;;;;:::i;:::-;;;;18394:190;;;;18324:267:::0;:::o;12473:27::-;;;;:::o;3760:151::-;3849:7;3876:11;:18;3888:5;3876:18;;;;;;;;;;;;;;;:27;3895:7;3876:27;;;;;;;;;;;;;;;;3869:34;;3760:151;;;;:::o;12076:33::-;;;;:::o;15611:135::-;15671:4;10407:12;:10;:12::i;:::-;10396:23;;:7;:5;:7::i;:::-;:23;;;10388:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15711:5:::1;15688:20;;:28;;;;;;;;;;;;;;;;;;15734:4;15727:11;;15611:135:::0;:::o;17046:208::-;10407:12;:10;:12::i;:::-;10396:23;;:7;:5;:7::i;:::-;:23;;;10388:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17130:7:::1;17117:10;:20;;;;17164:10;;17148:13;:26;;;;17210:2;17193:13;;:19;;17185:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;17046:208:::0;:::o;10595:201::-;10407:12;:10;:12::i;:::-;10396:23;;:7;:5;:7::i;:::-;:23;;;10388:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10704:1:::1;10684:22;;:8;:22;;;;10676:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10760:28;10779:8;10760:18;:28::i;:::-;10595:201:::0;:::o;12116:24::-;;;;:::o;99:98::-;152:7;179:10;172:17;;99:98;:::o;7068:380::-;7221:1;7204:19;;:5;:19;;;;7196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7302:1;7283:21;;:7;:21;;;;7275:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7386:6;7356:11;:18;7368:5;7356:18;;;;;;;;;;;;;;;:27;7375:7;7356:27;;;;;;;;;;;;;;;:36;;;;7424:7;7408:32;;7417:5;7408:32;;;7433:6;7408:32;;;;;;:::i;:::-;;;;;;;;7068:380;;;:::o;18779:3910::-;18927:1;18911:18;;:4;:18;;;;18903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19004:1;18990:16;;:2;:16;;;;18982:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19066:5;:11;19072:4;19066:11;;;;;;;;;;;;;;;;;;;;;;;;;19065:12;19057:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;19199:1;19189:6;:11;19185:93;;;19217:28;19233:4;19239:2;19243:1;19217:15;:28::i;:::-;19260:7;;19185:93;19320:11;;19302:15;:29;19298:51;;;19345:4;19333:5;:9;19339:2;19333:9;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;19298:51;19374:14;;;;;;;;;;;19370:1834;;;19435:7;:5;:7::i;:::-;19427:15;;:4;:15;;;;:49;;;;;19469:7;:5;:7::i;:::-;19463:13;;:2;:13;;;;19427:49;:86;;;;;19511:1;19497:16;;:2;:16;;;;19427:86;:128;;;;;19548:6;19534:21;;:2;:21;;;;19427:128;:159;;;;;19577:9;;;;;;;;;;;19576:10;19427:159;19405:1788;;;19626:13;;;;;;;;;;;19621:150;;19672:19;:25;19692:4;19672:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19701:19;:23;19721:2;19701:23;;;;;;;;;;;;;;;;;;;;;;;;;19672:52;19664:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;19621:150;19929:20;;;;;;;;;;;19925:423;;;19983:7;:5;:7::i;:::-;19977:13;;:2;:13;;;;:47;;;;;20008:15;19994:30;;:2;:30;;;;19977:47;:79;;;;;20042:13;20028:28;;:2;:28;;;;19977:79;19973:356;;;20134:12;20092:28;:39;20121:9;20092:39;;;;;;;;;;;;;;;;:54;20084:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;20293:12;20251:28;:39;20280:9;20251:39;;;;;;;;;;;;;;;:54;;;;19973:356;19925:423;20416:25;:31;20442:4;20416:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;20452:31;:35;20484:2;20452:35;;;;;;;;;;;;;;;;;;;;;;;;;20451:36;20416:71;20412:766;;;20530:20;;20520:6;:30;;20512:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;20665:9;;20648:13;20658:2;20648:9;:13::i;:::-;20639:6;:22;;;;:::i;:::-;:35;;20631:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20412:766;;;20791:25;:29;20817:2;20791:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;20825:31;:37;20857:4;20825:37;;;;;;;;;;;;;;;;;;;;;;;;;20824:38;20791:71;20787:391;;;20905:20;;20895:6;:30;;20887:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;20787:391;;;21032:31;:35;21064:2;21032:35;;;;;;;;;;;;;;;;;;;;;;;;;21027:151;;21125:9;;21108:13;21118:2;21108:9;:13::i;:::-;21099:6;:22;;;;:::i;:::-;:35;;21091:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21027:151;20787:391;20412:766;19405:1788;19370:1834;21218:28;21249:24;21267:4;21249:9;:24::i;:::-;21218:55;;21284:12;21323:18;;21299:20;:42;;21284:57;;21372:7;:34;;;;;21397:9;;;;;;;;;;;21396:10;21372:34;:83;;;;;21424:25;:31;21450:4;21424:31;;;;;;;;;;;;;;;;;;;;;;;;;21423:32;21372:83;:126;;;;;21473:19;:25;21493:4;21473:25;;;;;;;;;;;;;;;;;;;;;;;;;21472:26;21372:126;:167;;;;;21516:19;:23;21536:2;21516:23;;;;;;;;;;;;;;;;;;;;;;;;;21515:24;21372:167;21354:297;;;21578:4;21566:9;;:16;;;;;;;;;;;;;;;;;;21597:10;:8;:10::i;:::-;21634:5;21622:9;;:17;;;;;;;;;;;;;;;;;;21354:297;21663:12;21679:9;;;;;;;;;;;21678:10;21663:25;;21790:19;:25;21810:4;21790:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21819:19;:23;21839:2;21819:23;;;;;;;;;;;;;;;;;;;;;;;;;21790:52;21786:73;;;21854:5;21844:15;;21786:73;21890:12;21995:7;21991:645;;;22047:25;:29;22073:2;22047:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;22096:1;22080:13;;:17;22047:50;22043:438;;;22124:34;22154:3;22124:25;22135:13;;22124:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;22117:41;;22213:13;;22200:10;;22193:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;22177:12;;:49;;;;;;;:::i;:::-;;;;;;;;22043:438;;;22287:25;:31;22313:4;22287:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;22337:1;22322:12;;:16;22287:51;22284:197;;;22366:33;22395:3;22366:24;22377:12;;22366:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;22359:40;;22453:12;;22441:9;;22434:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;22418:12;;:47;;;;;;;:::i;:::-;;;;;;;;22284:197;22043:438;22508:1;22501:4;:8;22497:91;;;22530:42;22546:4;22560;22567;22530:15;:42::i;:::-;22497:91;22620:4;22610:14;;;;;:::i;:::-;;;21991:645;22648:33;22664:4;22670:2;22674:6;22648:15;:33::i;:::-;18892:3797;;;;18779:3910;;;;:::o;10804:191::-;10878:16;10897:6;;;;;;;;;;;10878:25;;10923:8;10914:6;;:17;;;;;;;;;;;;;;;;;;10978:8;10947:40;;10968:8;10947:40;;;;;;;;;;;;10867:128;10804:191;:::o;8858:98::-;8916:7;8947:1;8943;:5;;;;:::i;:::-;8936:12;;8858:98;;;;:::o;17875:130::-;17992:5;17958:25;:31;17984:4;17958:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17875:130;;:::o;5321:733::-;5479:1;5461:20;;:6;:20;;;;5453:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5563:1;5542:23;;:9;:23;;;;5534:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5618:47;5639:6;5647:9;5658:6;5618:20;:47::i;:::-;5678:21;5702:9;:17;5712:6;5702:17;;;;;;;;;;;;;;;;5678:41;;5755:6;5738:13;:23;;5730:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5876:6;5860:13;:22;5840:9;:17;5850:6;5840:17;;;;;;;;;;;;;;;:42;;;;5928:6;5904:9;:20;5914:9;5904:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5969:9;5952:35;;5961:6;5952:35;;;5980:6;5952:35;;;;;;:::i;:::-;;;;;;;;6000:46;6020:6;6028:9;6039:6;6000:19;:46::i;:::-;5442:612;5321:733;;;:::o;23821:589::-;23860:23;23886:24;23904:4;23886:9;:24::i;:::-;23860:50;;23921:25;23949:12;;23921:40;;23972:12;24020:1;24001:15;:20;:46;;;;24046:1;24025:17;:22;24001:46;23998:60;;;24050:7;;;;;23998:60;24113:2;24092:18;;:23;;;;:::i;:::-;24074:15;:41;24071:111;;;24168:2;24147:18;;:23;;;;:::i;:::-;24129:41;;24071:111;24198:36;24216:17;24198;:36::i;:::-;24249:18;24270:21;24249:42;;24323:1;24308:12;:16;;;;24359:9;;;;;;;;;;;24351:23;;24382:10;24351:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24338:59;;;;;23849:561;;;;23821:589;:::o;9070:98::-;9128:7;9159:1;9155;:5;;;;:::i;:::-;9148:12;;9070:98;;;;:::o;9176:::-;9234:7;9265:1;9261;:5;;;;:::i;:::-;9254:12;;9176:98;;;;:::o;7456:125::-;;;;:::o;7589:124::-;;;;:::o;22697:590::-;22824:21;22862:1;22848:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22824:40;;22893:4;22875;22880:1;22875:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22919:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22909:4;22914:1;22909:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;22954:62;22971:4;22986:15;23004:11;22954:8;:62::i;:::-;23055:15;:66;;;23136:11;23162:1;23206:4;23233;23253:15;23055:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22753:534;22697:590;:::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;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:153::-;4252:9;4285:37;4316:5;4285:37;:::i;:::-;4272:50;;4175:153;;;:::o;4334:185::-;4448:64;4506:5;4448:64;:::i;:::-;4443:3;4436:77;4334:185;;:::o;4525:276::-;4645:4;4683:2;4672:9;4668:18;4660:26;;4696:98;4791:1;4780:9;4776:17;4767:6;4696:98;:::i;:::-;4525:276;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::o;5159:329::-;5218:6;5267:2;5255:9;5246:7;5242:23;5238:32;5235:119;;;5273:79;;:::i;:::-;5235:119;5393:1;5418:53;5463:7;5454:6;5443:9;5439:22;5418:53;:::i;:::-;5408:63;;5364:117;5159:329;;;;:::o;5494:619::-;5571:6;5579;5587;5636:2;5624:9;5615:7;5611:23;5607:32;5604:119;;;5642:79;;:::i;:::-;5604:119;5762:1;5787:53;5832:7;5823:6;5812:9;5808:22;5787:53;:::i;:::-;5777:63;;5733:117;5889:2;5915:53;5960:7;5951:6;5940:9;5936:22;5915:53;:::i;:::-;5905:63;;5860:118;6017:2;6043:53;6088:7;6079:6;6068:9;6064:22;6043:53;:::i;:::-;6033:63;;5988:118;5494:619;;;;;:::o;6119:86::-;6154:7;6194:4;6187:5;6183:16;6172:27;;6119:86;;;:::o;6211:112::-;6294:22;6310:5;6294:22;:::i;:::-;6289:3;6282:35;6211:112;;:::o;6329:214::-;6418:4;6456:2;6445:9;6441:18;6433:26;;6469:67;6533:1;6522:9;6518:17;6509:6;6469:67;:::i;:::-;6329:214;;;;:::o;6549:118::-;6636:24;6654:5;6636:24;:::i;:::-;6631:3;6624:37;6549:118;;:::o;6673:222::-;6766:4;6804:2;6793:9;6789:18;6781:26;;6817:71;6885:1;6874:9;6870:17;6861:6;6817:71;:::i;:::-;6673:222;;;;:::o;6901:117::-;7010:1;7007;7000:12;7024:180;7072:77;7069:1;7062:88;7169:4;7166:1;7159:15;7193:4;7190:1;7183:15;7210:281;7293:27;7315:4;7293:27;:::i;:::-;7285:6;7281:40;7423:6;7411:10;7408:22;7387:18;7375:10;7372:34;7369:62;7366:88;;;7434:18;;:::i;:::-;7366:88;7474:10;7470:2;7463:22;7253:238;7210:281;;:::o;7497:129::-;7531:6;7558:20;;:::i;:::-;7548:30;;7587:33;7615:4;7607:6;7587:33;:::i;:::-;7497:129;;;:::o;7632:311::-;7709:4;7799:18;7791:6;7788:30;7785:56;;;7821:18;;:::i;:::-;7785:56;7871:4;7863:6;7859:17;7851:25;;7931:4;7925;7921:15;7913:23;;7632:311;;;:::o;7949:117::-;8058:1;8055;8048:12;8089:710;8185:5;8210:81;8226:64;8283:6;8226:64;:::i;:::-;8210:81;:::i;:::-;8201:90;;8311:5;8340:6;8333:5;8326:21;8374:4;8367:5;8363:16;8356:23;;8427:4;8419:6;8415:17;8407:6;8403:30;8456:3;8448:6;8445:15;8442:122;;;8475:79;;:::i;:::-;8442:122;8590:6;8573:220;8607:6;8602:3;8599:15;8573:220;;;8682:3;8711:37;8744:3;8732:10;8711:37;:::i;:::-;8706:3;8699:50;8778:4;8773:3;8769:14;8762:21;;8649:144;8633:4;8628:3;8624:14;8617:21;;8573:220;;;8577:21;8191:608;;8089:710;;;;;:::o;8822:370::-;8893:5;8942:3;8935:4;8927:6;8923:17;8919:27;8909:122;;8950:79;;:::i;:::-;8909:122;9067:6;9054:20;9092:94;9182:3;9174:6;9167:4;9159:6;9155:17;9092:94;:::i;:::-;9083:103;;8899:293;8822:370;;;;:::o;9198:539::-;9282:6;9331:2;9319:9;9310:7;9306:23;9302:32;9299:119;;;9337:79;;:::i;:::-;9299:119;9485:1;9474:9;9470:17;9457:31;9515:18;9507:6;9504:30;9501:117;;;9537:79;;:::i;:::-;9501:117;9642:78;9712:7;9703:6;9692:9;9688:22;9642:78;:::i;:::-;9632:88;;9428:302;9198:539;;;;:::o;9743:116::-;9813:21;9828:5;9813:21;:::i;:::-;9806:5;9803:32;9793:60;;9849:1;9846;9839:12;9793:60;9743:116;:::o;9865:133::-;9908:5;9946:6;9933:20;9924:29;;9962:30;9986:5;9962:30;:::i;:::-;9865:133;;;;:::o;10004:468::-;10069:6;10077;10126:2;10114:9;10105:7;10101:23;10097:32;10094:119;;;10132:79;;:::i;:::-;10094:119;10252:1;10277:53;10322:7;10313:6;10302:9;10298:22;10277:53;:::i;:::-;10267:63;;10223:117;10379:2;10405:50;10447:7;10438:6;10427:9;10423:22;10405:50;:::i;:::-;10395:60;;10350:115;10004:468;;;;;:::o;10478:474::-;10546:6;10554;10603:2;10591:9;10582:7;10578:23;10574:32;10571:119;;;10609:79;;:::i;:::-;10571:119;10729:1;10754:53;10799:7;10790:6;10779:9;10775:22;10754:53;:::i;:::-;10744:63;;10700:117;10856:2;10882:53;10927:7;10918:6;10907:9;10903:22;10882:53;:::i;:::-;10872:63;;10827:118;10478:474;;;;;:::o;10958:180::-;11006:77;11003:1;10996:88;11103:4;11100:1;11093:15;11127:4;11124:1;11117:15;11144:320;11188:6;11225:1;11219:4;11215:12;11205:22;;11272:1;11266:4;11262:12;11293:18;11283:81;;11349:4;11341:6;11337:17;11327:27;;11283:81;11411:2;11403:6;11400:14;11380:18;11377:38;11374:84;;;11430:18;;:::i;:::-;11374:84;11195:269;11144:320;;;:::o;11470:182::-;11610:34;11606:1;11598:6;11594:14;11587:58;11470:182;:::o;11658:366::-;11800:3;11821:67;11885:2;11880:3;11821:67;:::i;:::-;11814:74;;11897:93;11986:3;11897:93;:::i;:::-;12015:2;12010:3;12006:12;11999:19;;11658:366;;;:::o;12030:419::-;12196:4;12234:2;12223:9;12219:18;12211:26;;12283:9;12277:4;12273:20;12269:1;12258:9;12254:17;12247:47;12311:131;12437:4;12311:131;:::i;:::-;12303:139;;12030:419;;;:::o;12455:180::-;12503:77;12500:1;12493:88;12600:4;12597:1;12590:15;12624:4;12621:1;12614:15;12641:348;12681:7;12704:20;12722:1;12704:20;:::i;:::-;12699:25;;12738:20;12756:1;12738:20;:::i;:::-;12733:25;;12926:1;12858:66;12854:74;12851:1;12848:81;12843:1;12836:9;12829:17;12825:105;12822:131;;;12933:18;;:::i;:::-;12822:131;12981:1;12978;12974:9;12963:20;;12641:348;;;;:::o;12995:180::-;13043:77;13040:1;13033:88;13140:4;13137:1;13130:15;13164:4;13161:1;13154:15;13181:185;13221:1;13238:20;13256:1;13238:20;:::i;:::-;13233:25;;13272:20;13290:1;13272:20;:::i;:::-;13267:25;;13311:1;13301:35;;13316:18;;:::i;:::-;13301:35;13358:1;13355;13351:9;13346:14;;13181:185;;;;:::o;13372:234::-;13512:34;13508:1;13500:6;13496:14;13489:58;13581:17;13576:2;13568:6;13564:15;13557:42;13372:234;:::o;13612:366::-;13754:3;13775:67;13839:2;13834:3;13775:67;:::i;:::-;13768:74;;13851:93;13940:3;13851:93;:::i;:::-;13969:2;13964:3;13960:12;13953:19;;13612:366;;;:::o;13984:419::-;14150:4;14188:2;14177:9;14173:18;14165:26;;14237:9;14231:4;14227:20;14223:1;14212:9;14208:17;14201:47;14265:131;14391:4;14265:131;:::i;:::-;14257:139;;13984:419;;;:::o;14409:227::-;14549:34;14545:1;14537:6;14533:14;14526:58;14618:10;14613:2;14605:6;14601:15;14594:35;14409:227;:::o;14642:366::-;14784:3;14805:67;14869:2;14864:3;14805:67;:::i;:::-;14798:74;;14881:93;14970:3;14881:93;:::i;:::-;14999:2;14994:3;14990:12;14983:19;;14642:366;;;:::o;15014:419::-;15180:4;15218:2;15207:9;15203:18;15195:26;;15267:9;15261:4;15257:20;15253:1;15242:9;15238:17;15231:47;15295:131;15421:4;15295:131;:::i;:::-;15287:139;;15014:419;;;:::o;15439:305::-;15479:3;15498:20;15516:1;15498:20;:::i;:::-;15493:25;;15532:20;15550:1;15532:20;:::i;:::-;15527:25;;15686:1;15618:66;15614:74;15611:1;15608:81;15605:107;;;15692:18;;:::i;:::-;15605:107;15736:1;15733;15729:9;15722:16;;15439:305;;;;:::o;15750:180::-;15798:77;15795:1;15788:88;15895:4;15892:1;15885:15;15919:4;15916:1;15909:15;15936:233;15975:3;15998:24;16016:5;15998:24;:::i;:::-;15989:33;;16044:66;16037:5;16034:77;16031:103;;;16114:18;;:::i;:::-;16031:103;16161:1;16154:5;16150:13;16143:20;;15936:233;;;:::o;16175:179::-;16315:31;16311:1;16303:6;16299:14;16292:55;16175:179;:::o;16360:366::-;16502:3;16523:67;16587:2;16582:3;16523:67;:::i;:::-;16516:74;;16599:93;16688:3;16599:93;:::i;:::-;16717:2;16712:3;16708:12;16701:19;;16360:366;;;:::o;16732:419::-;16898:4;16936:2;16925:9;16921:18;16913:26;;16985:9;16979:4;16975:20;16971:1;16960:9;16956:17;16949:47;17013:131;17139:4;17013:131;:::i;:::-;17005:139;;16732:419;;;:::o;17157:244::-;17297:34;17293:1;17285:6;17281:14;17274:58;17366:27;17361:2;17353:6;17349:15;17342:52;17157:244;:::o;17407:366::-;17549:3;17570:67;17634:2;17629:3;17570:67;:::i;:::-;17563:74;;17646:93;17735:3;17646:93;:::i;:::-;17764:2;17759:3;17755:12;17748:19;;17407:366;;;:::o;17779:419::-;17945:4;17983:2;17972:9;17968:18;17960:26;;18032:9;18026:4;18022:20;18018:1;18007:9;18003:17;17996:47;18060:131;18186:4;18060:131;:::i;:::-;18052:139;;17779:419;;;:::o;18204:224::-;18344:34;18340:1;18332:6;18328:14;18321:58;18413:7;18408:2;18400:6;18396:15;18389:32;18204:224;:::o;18434:366::-;18576:3;18597:67;18661:2;18656:3;18597:67;:::i;:::-;18590:74;;18673:93;18762:3;18673:93;:::i;:::-;18791:2;18786:3;18782:12;18775:19;;18434:366;;;:::o;18806:419::-;18972:4;19010:2;18999:9;18995:18;18987:26;;19059:9;19053:4;19049:20;19045:1;19034:9;19030:17;19023:47;19087:131;19213:4;19087:131;:::i;:::-;19079:139;;18806:419;;;:::o;19231:223::-;19371:34;19367:1;19359:6;19355:14;19348:58;19440:6;19435:2;19427:6;19423:15;19416:31;19231:223;:::o;19460:366::-;19602:3;19623:67;19687:2;19682:3;19623:67;:::i;:::-;19616:74;;19699:93;19788:3;19699:93;:::i;:::-;19817:2;19812:3;19808:12;19801:19;;19460:366;;;:::o;19832:419::-;19998:4;20036:2;20025:9;20021:18;20013:26;;20085:9;20079:4;20075:20;20071:1;20060:9;20056:17;20049:47;20113:131;20239:4;20113:131;:::i;:::-;20105:139;;19832:419;;;:::o;20257:240::-;20397:34;20393:1;20385:6;20381:14;20374:58;20466:23;20461:2;20453:6;20449:15;20442:48;20257:240;:::o;20503:366::-;20645:3;20666:67;20730:2;20725:3;20666:67;:::i;:::-;20659:74;;20742:93;20831:3;20742:93;:::i;:::-;20860:2;20855:3;20851:12;20844:19;;20503:366;;;:::o;20875:419::-;21041:4;21079:2;21068:9;21064:18;21056:26;;21128:9;21122:4;21118:20;21114:1;21103:9;21099:17;21092:47;21156:131;21282:4;21156:131;:::i;:::-;21148:139;;20875:419;;;:::o;21300:239::-;21440:34;21436:1;21428:6;21424:14;21417:58;21509:22;21504:2;21496:6;21492:15;21485:47;21300:239;:::o;21545:366::-;21687:3;21708:67;21772:2;21767:3;21708:67;:::i;:::-;21701:74;;21784:93;21873:3;21784:93;:::i;:::-;21902:2;21897:3;21893:12;21886:19;;21545:366;;;:::o;21917:419::-;22083:4;22121:2;22110:9;22106:18;22098:26;;22170:9;22164:4;22160:20;22156:1;22145:9;22141:17;22134:47;22198:131;22324:4;22198:131;:::i;:::-;22190:139;;21917:419;;;:::o;22342:179::-;22482:31;22478:1;22470:6;22466:14;22459:55;22342:179;:::o;22527:366::-;22669:3;22690:67;22754:2;22749:3;22690:67;:::i;:::-;22683:74;;22766:93;22855:3;22766:93;:::i;:::-;22884:2;22879:3;22875:12;22868:19;;22527:366;;;:::o;22899:419::-;23065:4;23103:2;23092:9;23088:18;23080:26;;23152:9;23146:4;23142:20;23138:1;23127:9;23123:17;23116:47;23180:131;23306:4;23180:131;:::i;:::-;23172:139;;22899:419;;;:::o;23324:225::-;23464:34;23460:1;23452:6;23448:14;23441:58;23533:8;23528:2;23520:6;23516:15;23509:33;23324:225;:::o;23555:366::-;23697:3;23718:67;23782:2;23777:3;23718:67;:::i;:::-;23711:74;;23794:93;23883:3;23794:93;:::i;:::-;23912:2;23907:3;23903:12;23896:19;;23555:366;;;:::o;23927:419::-;24093:4;24131:2;24120:9;24116:18;24108:26;;24180:9;24174:4;24170:20;24166:1;24155:9;24151:17;24144:47;24208:131;24334:4;24208:131;:::i;:::-;24200:139;;23927:419;;;:::o;24352:223::-;24492:34;24488:1;24480:6;24476:14;24469:58;24561:6;24556:2;24548:6;24544:15;24537:31;24352:223;:::o;24581:366::-;24723:3;24744:67;24808:2;24803:3;24744:67;:::i;:::-;24737:74;;24820:93;24909:3;24820:93;:::i;:::-;24938:2;24933:3;24929:12;24922:19;;24581:366;;;:::o;24953:419::-;25119:4;25157:2;25146:9;25142:18;25134:26;;25206:9;25200:4;25196:20;25192:1;25181:9;25177:17;25170:47;25234:131;25360:4;25234:131;:::i;:::-;25226:139;;24953:419;;;:::o;25378:221::-;25518:34;25514:1;25506:6;25502:14;25495:58;25587:4;25582:2;25574:6;25570:15;25563:29;25378:221;:::o;25605:366::-;25747:3;25768:67;25832:2;25827:3;25768:67;:::i;:::-;25761:74;;25844:93;25933:3;25844:93;:::i;:::-;25962:2;25957:3;25953:12;25946:19;;25605:366;;;:::o;25977:419::-;26143:4;26181:2;26170:9;26166:18;26158:26;;26230:9;26224:4;26220:20;26216:1;26205:9;26201:17;26194:47;26258:131;26384:4;26258:131;:::i;:::-;26250:139;;25977:419;;;:::o;26402:224::-;26542:34;26538:1;26530:6;26526:14;26519:58;26611:7;26606:2;26598:6;26594:15;26587:32;26402:224;:::o;26632:366::-;26774:3;26795:67;26859:2;26854:3;26795:67;:::i;:::-;26788:74;;26871:93;26960:3;26871:93;:::i;:::-;26989:2;26984:3;26980:12;26973:19;;26632:366;;;:::o;27004:419::-;27170:4;27208:2;27197:9;27193:18;27185:26;;27257:9;27251:4;27247:20;27243:1;27232:9;27228:17;27221:47;27285:131;27411:4;27285:131;:::i;:::-;27277:139;;27004:419;;;:::o;27429:222::-;27569:34;27565:1;27557:6;27553:14;27546:58;27638:5;27633:2;27625:6;27621:15;27614:30;27429:222;:::o;27657:366::-;27799:3;27820:67;27884:2;27879:3;27820:67;:::i;:::-;27813:74;;27896:93;27985:3;27896:93;:::i;:::-;28014:2;28009:3;28005:12;27998:19;;27657:366;;;:::o;28029:419::-;28195:4;28233:2;28222:9;28218:18;28210:26;;28282:9;28276:4;28272:20;28268:1;28257:9;28253:17;28246:47;28310:131;28436:4;28310:131;:::i;:::-;28302:139;;28029:419;;;:::o;28454:305::-;28594:34;28590:1;28582:6;28578:14;28571:58;28663:34;28658:2;28650:6;28646:15;28639:59;28732:19;28727:2;28719:6;28715:15;28708:44;28454:305;:::o;28765:366::-;28907:3;28928:67;28992:2;28987:3;28928:67;:::i;:::-;28921:74;;29004:93;29093:3;29004:93;:::i;:::-;29122:2;29117:3;29113:12;29106:19;;28765:366;;;:::o;29137:419::-;29303:4;29341:2;29330:9;29326:18;29318:26;;29390:9;29384:4;29380:20;29376:1;29365:9;29361:17;29354:47;29418:131;29544:4;29418:131;:::i;:::-;29410:139;;29137:419;;;:::o;29562:172::-;29702:24;29698:1;29690:6;29686:14;29679:48;29562:172;:::o;29740:366::-;29882:3;29903:67;29967:2;29962:3;29903:67;:::i;:::-;29896:74;;29979:93;30068:3;29979:93;:::i;:::-;30097:2;30092:3;30088:12;30081:19;;29740:366;;;:::o;30112:419::-;30278:4;30316:2;30305:9;30301:18;30293:26;;30365:9;30359:4;30355:20;30351:1;30340:9;30336:17;30329:47;30393:131;30519:4;30393:131;:::i;:::-;30385:139;;30112:419;;;:::o;30537:297::-;30677:34;30673:1;30665:6;30661:14;30654:58;30746:34;30741:2;30733:6;30729:15;30722:59;30815:11;30810:2;30802:6;30798:15;30791:36;30537:297;:::o;30840:366::-;30982:3;31003:67;31067:2;31062:3;31003:67;:::i;:::-;30996:74;;31079:93;31168:3;31079:93;:::i;:::-;31197:2;31192:3;31188:12;31181:19;;30840:366;;;:::o;31212:419::-;31378:4;31416:2;31405:9;31401:18;31393:26;;31465:9;31459:4;31455:20;31451:1;31440:9;31436:17;31429:47;31493:131;31619:4;31493:131;:::i;:::-;31485:139;;31212:419;;;:::o;31637:240::-;31777:34;31773:1;31765:6;31761:14;31754:58;31846:23;31841:2;31833:6;31829:15;31822:48;31637:240;:::o;31883:366::-;32025:3;32046:67;32110:2;32105:3;32046:67;:::i;:::-;32039:74;;32122:93;32211:3;32122:93;:::i;:::-;32240:2;32235:3;32231:12;32224:19;;31883:366;;;:::o;32255:419::-;32421:4;32459:2;32448:9;32444:18;32436:26;;32508:9;32502:4;32498:20;32494:1;32483:9;32479:17;32472:47;32536:131;32662:4;32536:131;:::i;:::-;32528:139;;32255:419;;;:::o;32680:169::-;32820:21;32816:1;32808:6;32804:14;32797:45;32680:169;:::o;32855:366::-;32997:3;33018:67;33082:2;33077:3;33018:67;:::i;:::-;33011:74;;33094:93;33183:3;33094:93;:::i;:::-;33212:2;33207:3;33203:12;33196:19;;32855:366;;;:::o;33227:419::-;33393:4;33431:2;33420:9;33416:18;33408:26;;33480:9;33474:4;33470:20;33466:1;33455:9;33451:17;33444:47;33508:131;33634:4;33508:131;:::i;:::-;33500:139;;33227:419;;;:::o;33652:241::-;33792:34;33788:1;33780:6;33776:14;33769:58;33861:24;33856:2;33848:6;33844:15;33837:49;33652:241;:::o;33899:366::-;34041:3;34062:67;34126:2;34121:3;34062:67;:::i;:::-;34055:74;;34138:93;34227:3;34138:93;:::i;:::-;34256:2;34251:3;34247:12;34240:19;;33899:366;;;:::o;34271:419::-;34437:4;34475:2;34464:9;34460:18;34452:26;;34524:9;34518:4;34514:20;34510:1;34499:9;34495:17;34488:47;34552:131;34678:4;34552:131;:::i;:::-;34544:139;;34271:419;;;:::o;34696:191::-;34736:4;34756:20;34774:1;34756:20;:::i;:::-;34751:25;;34790:20;34808:1;34790:20;:::i;:::-;34785:25;;34829:1;34826;34823:8;34820:34;;;34834:18;;:::i;:::-;34820:34;34879:1;34876;34872:9;34864:17;;34696:191;;;;:::o;34893:225::-;35033:34;35029:1;35021:6;35017:14;35010:58;35102:8;35097:2;35089:6;35085:15;35078:33;34893:225;:::o;35124:366::-;35266:3;35287:67;35351:2;35346:3;35287:67;:::i;:::-;35280:74;;35363:93;35452:3;35363:93;:::i;:::-;35481:2;35476:3;35472:12;35465:19;;35124:366;;;:::o;35496:419::-;35662:4;35700:2;35689:9;35685:18;35677:26;;35749:9;35743:4;35739:20;35735:1;35724:9;35720:17;35713:47;35777:131;35903:4;35777:131;:::i;:::-;35769:139;;35496:419;;;:::o;35921:147::-;36022:11;36059:3;36044:18;;35921:147;;;;:::o;36074:114::-;;:::o;36194:398::-;36353:3;36374:83;36455:1;36450:3;36374:83;:::i;:::-;36367:90;;36466:93;36555:3;36466:93;:::i;:::-;36584:1;36579:3;36575:11;36568:18;;36194:398;;;:::o;36598:379::-;36782:3;36804:147;36947:3;36804:147;:::i;:::-;36797:154;;36968:3;36961:10;;36598:379;;;:::o;36983:143::-;37040:5;37071:6;37065:13;37056:22;;37087:33;37114:5;37087:33;:::i;:::-;36983:143;;;;:::o;37132:351::-;37202:6;37251:2;37239:9;37230:7;37226:23;37222:32;37219:119;;;37257:79;;:::i;:::-;37219:119;37377:1;37402:64;37458:7;37449:6;37438:9;37434:22;37402:64;:::i;:::-;37392:74;;37348:128;37132:351;;;;:::o;37489:85::-;37534:7;37563:5;37552:16;;37489:85;;;:::o;37580:158::-;37638:9;37671:61;37689:42;37698:32;37724:5;37698:32;:::i;:::-;37689:42;:::i;:::-;37671:61;:::i;:::-;37658:74;;37580:158;;;:::o;37744:147::-;37839:45;37878:5;37839:45;:::i;:::-;37834:3;37827:58;37744:147;;:::o;37897:114::-;37964:6;37998:5;37992:12;37982:22;;37897:114;;;:::o;38017:184::-;38116:11;38150:6;38145:3;38138:19;38190:4;38185:3;38181:14;38166:29;;38017:184;;;;:::o;38207:132::-;38274:4;38297:3;38289:11;;38327:4;38322:3;38318:14;38310:22;;38207:132;;;:::o;38345:108::-;38422:24;38440:5;38422:24;:::i;:::-;38417:3;38410:37;38345:108;;:::o;38459:179::-;38528:10;38549:46;38591:3;38583:6;38549:46;:::i;:::-;38627:4;38622:3;38618:14;38604:28;;38459:179;;;;:::o;38644:113::-;38714:4;38746;38741:3;38737:14;38729:22;;38644:113;;;:::o;38793:732::-;38912:3;38941:54;38989:5;38941:54;:::i;:::-;39011:86;39090:6;39085:3;39011:86;:::i;:::-;39004:93;;39121:56;39171:5;39121:56;:::i;:::-;39200:7;39231:1;39216:284;39241:6;39238:1;39235:13;39216:284;;;39317:6;39311:13;39344:63;39403:3;39388:13;39344:63;:::i;:::-;39337:70;;39430:60;39483:6;39430:60;:::i;:::-;39420:70;;39276:224;39263:1;39260;39256:9;39251:14;;39216:284;;;39220:14;39516:3;39509:10;;38917:608;;;38793:732;;;;:::o;39531:831::-;39794:4;39832:3;39821:9;39817:19;39809:27;;39846:71;39914:1;39903:9;39899:17;39890:6;39846:71;:::i;:::-;39927:80;40003:2;39992:9;39988:18;39979:6;39927:80;:::i;:::-;40054:9;40048:4;40044:20;40039:2;40028:9;40024:18;40017:48;40082:108;40185:4;40176:6;40082:108;:::i;:::-;40074:116;;40200:72;40268:2;40257:9;40253:18;40244:6;40200:72;:::i;:::-;40282:73;40350:3;40339:9;40335:19;40326:6;40282:73;:::i;:::-;39531:831;;;;;;;;:::o

Swarm Source

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