ETH Price: $2,520.63 (-0.15%)

Token

BarbielovePepe ($PEPIE)
 

Overview

Max Total Supply

1,000,000,000 $PEPIE

Holders

11

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
Barbielove

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-04
*/

// SPDX-License-Identifier: MIT

pragma solidity >=0.8.10 >=0.8.0 <0.9.0;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;
    address private creator;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

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

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

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @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 Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function tryMul(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            // 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 (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

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

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

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

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

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

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

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

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

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

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


interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(
        address tokenA,
        address tokenB
    ) external view returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(
        address to
    ) external returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract Barbielove is ERC20, Ownable {
    event SwapBackSuccess(
        uint256 tokenAmount,
        uint256 ethAmountReceived,
        bool success
    );
    bool private swapping;
    address public marketingWallet =
        address(0x65FB762cA8B2DDe9F3a4A5c8f39E4AC08877602b);

    address public devWallet =
        address(0x65FB762cA8B2DDe9F3a4A5c8f39E4AC08877602b);

    uint256 _totalSupply = 1_000_000_000  * 1e18;
    uint256 public maxTransactionAmount = (_totalSupply * 10) / 1000; 
    uint256 public swapTokensAtAmount = (_totalSupply * 10) / 10000;
    uint256 public maxWallet = (_totalSupply * 10) / 1000; 

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyFees = 30;
    uint256 public sellFees = 30;

    uint256 public marketingAmount = 70; 
    uint256 public devAmount = 30; 

    using SafeMath for uint256;

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

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

    constructor() ERC20("BarbielovePepe", "$PEPIE") {
        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(marketingWallet, true);
        excludeFromFees(devWallet, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(marketingWallet, true);
        excludeFromMaxTransaction(devWallet, true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        _mint(address(this), _totalSupply);
    }

    receive() external payable {}

    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

     function pauseTrading() external onlyOwner {
        tradingActive = false;
        swapEnabled = false;
    }

    function withdrawOtherTokens(IERC20 _token) external onlyOwner {
        uint256 contractBalance = _token.balanceOf(address(this));
        require(contractBalance > 0, "No tokens to withdraw");

        require(_token.transfer(owner(), contractBalance), "Token transfer failed");
    }

      function withdrawEther() external onlyOwner {
        uint256 contractBalance = address(this).balance;
        require(contractBalance > 0, "No Ether to withdraw");
        
        payable(owner()).transfer(contractBalance);
    }

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        sellFees = 5;
        buyFees = 5;
        return true;
    }

     function changeFees(uint256 buy, uint256 sell) external onlyOwner {
        sellFees = sell;
        buyFees = buy;
    }
    
    function excludeFromMaxTransaction(
        address addressToExclude,
        bool isExcluded
    ) public onlyOwner {
        _isExcludedMaxTransactionAmount[addressToExclude] = isExcluded;
    }

    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

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

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

    function addLiquidity() external payable onlyOwner {
        // approve token transfer to cover all possible scenarios
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        uniswapV2Router = _uniswapV2Router;
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        _approve(address(this), address(uniswapV2Router), totalSupply());
        // add the liquidity
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this), //token address
            totalSupply(), // liquidity amount
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(), // LP tokens are sent to the owner
            block.timestamp
        );
    }

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

    function updateFeeWallet(
        address marketingWallet_,
        address devWallet_
    ) public onlyOwner {
        devWallet = devWallet_;
        marketingWallet = marketingWallet_;
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not enabled yet."
                    );
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        if (
            swapEnabled && //if this is true
            !swapping && //if this is false
            !automatedMarketMakerPairs[from] && //if this is false
            !_isExcludedFromFees[from] && //if this is false
            !_isExcludedFromFees[to] //if this is false
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellFees > 0) {
                fees = amount.mul(sellFees).div(100);
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyFees > 0) {
                fees = amount.mul(buyFees).div(100);
            }

            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 swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        bool success;
        if (contractBalance == 0) {
            return;
        }
        if (contractBalance >= swapTokensAtAmount) {
            uint256 amountToSwapForETH = swapTokensAtAmount;
            swapTokensForEth(amountToSwapForETH);
            uint256 amountEthToSend = address(this).balance;
            uint256 amountToMarketing = amountEthToSend
                .mul(marketingAmount)
                .div(100);
            uint256 amountToDev = amountEthToSend.sub(amountToMarketing);
            (success, ) = address(marketingWallet).call{
                value: amountToMarketing
            }("");
            (success, ) = address(devWallet).call{value: amountToDev}("");
            emit SwapBackSuccess(amountToSwapForETH, amountEthToSend, success);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmountReceived","type":"uint256"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"}],"name":"SwapBackSuccess","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"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","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":"devAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"addressToExclude","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"pauseTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":[{"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":"address","name":"marketingWallet_","type":"address"},{"internalType":"address","name":"devWallet_","type":"address"}],"name":"updateFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"}],"name":"withdrawOtherTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040527365fb762ca8b2dde9f3a4a5c8f39e4ac08877602b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507365fb762ca8b2dde9f3a4a5c8f39e4ac08877602b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506b033b2e3c9fd0803ce80000006009556103e8600a600954620000d2919062000855565b620000de9190620008cf565b600a55612710600a600954620000f5919062000855565b620001019190620008cf565b600b556103e8600a60095462000118919062000855565b620001249190620008cf565b600c556001600d60006101000a81548160ff0219169083151502179055506000600d60016101000a81548160ff0219169083151502179055506000600d60026101000a81548160ff021916908315150217905550601e600e55601e600f556046601055601e6011553480156200019957600080fd5b506040518060400160405280600e81526020017f4261726269656c6f7665506570650000000000000000000000000000000000008152506040518060400160405280600681526020017f2450455049450000000000000000000000000000000000000000000000000000815250816003908162000217919062000b77565b50806004908162000229919062000b77565b5050506200024c62000240620003ce60201b60201c565b620003d660201b60201c565b6200026e620002606200049c60201b60201c565b6001620004c660201b60201c565b620002a3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620004c660201b60201c565b620002d8600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620004c660201b60201c565b620002eb306001620004c660201b60201c565b6200030061dead6001620004c660201b60201c565b62000322620003146200049c60201b60201c565b6001620005b060201b60201c565b62000357600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620005b060201b60201c565b6200038c600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620005b060201b60201c565b6200039f306001620005b060201b60201c565b620003b461dead6001620005b060201b60201c565b620003c8306009546200069a60201b60201c565b62000dbc565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620004d6620003ce60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620004fc6200049c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000555576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200054c9062000cbf565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b620005c0620003ce60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005e66200049c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200063f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006369062000cbf565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200070c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007039062000d31565b60405180910390fd5b62000720600083836200081260201b60201c565b806002600082825462000734919062000d53565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200078b919062000d53565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620007f2919062000d9f565b60405180910390a36200080e600083836200081760201b60201c565b5050565b505050565b505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000862826200081c565b91506200086f836200081c565b92508282026200087f816200081c565b9150828204841483151762000899576200089862000826565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008dc826200081c565b9150620008e9836200081c565b925082620008fc57620008fb620008a0565b5b828204905092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200098957607f821691505b6020821081036200099f576200099e62000941565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a097fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620009ca565b62000a158683620009ca565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000a5862000a5262000a4c846200081c565b62000a2d565b6200081c565b9050919050565b6000819050919050565b62000a748362000a37565b62000a8c62000a838262000a5f565b848454620009d7565b825550505050565b600090565b62000aa362000a94565b62000ab081848462000a69565b505050565b5b8181101562000ad85762000acc60008262000a99565b60018101905062000ab6565b5050565b601f82111562000b275762000af181620009a5565b62000afc84620009ba565b8101602085101562000b0c578190505b62000b2462000b1b85620009ba565b83018262000ab5565b50505b505050565b600082821c905092915050565b600062000b4c6000198460080262000b2c565b1980831691505092915050565b600062000b67838362000b39565b9150826002028217905092915050565b62000b828262000907565b67ffffffffffffffff81111562000b9e5762000b9d62000912565b5b62000baa825462000970565b62000bb782828562000adc565b600060209050601f83116001811462000bef576000841562000bda578287015190505b62000be6858262000b59565b86555062000c56565b601f19841662000bff86620009a5565b60005b8281101562000c295784890151825560018201915060208501945060208101905062000c02565b8683101562000c49578489015162000c45601f89168262000b39565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000ca760208362000c5e565b915062000cb48262000c6f565b602082019050919050565b6000602082019050818103600083015262000cda8162000c98565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000d19601f8362000c5e565b915062000d268262000ce1565b602082019050919050565b6000602082019050818103600083015262000d4c8162000d0a565b9050919050565b600062000d60826200081c565b915062000d6d836200081c565b925082820190508082111562000d885762000d8762000826565b5b92915050565b62000d99816200081c565b82525050565b600060208201905062000db6600083018462000d8e565b92915050565b61477f8062000dcc6000396000f3fe60806040526004361061026b5760003560e01c80637571336a11610144578063b62496f5116100b6578063e0f3ccf51161007a578063e0f3ccf51461092f578063e2f456051461095a578063e4748b9e14610985578063e8078d94146109b0578063f2fde38b146109ba578063f8b45b05146109e357610272565b8063b62496f514610836578063bbc0c74214610873578063c02466681461089e578063c8c8ebe4146108c7578063dd62ed3e146108f257610272565b8063924de9b711610108578063924de9b71461071657806395d89b411461073f5780639a7a23d61461076a578063a1190a3614610793578063a457c2d7146107bc578063a9059cbb146107f957610272565b80637571336a1461065557806375f0a8741461067e5780638a8c523c146106a95780638da5cb5b146106c05780638ea5220f146106eb57610272565b8063313ce567116101dd5780634fbee193116101a15780634fbee193146105575780636ddd17131461059457806370a08231146105bf578063715018a6146105fc5780637362377b14610613578063751039fc1461062a57610272565b8063313ce5671461046e578063360bfd541461049957806339509351146104c457806349bd5a5e146105015780634a62bb651461052c57610272565b806318160ddd1161022f57806318160ddd1461035e57806321ecff5b1461038957806323b872dd146103b257806325d92ee2146103ef57806327c8f835146104185780632b3459641461044357610272565b806306fdde0314610277578063095ea7b3146102a25780631031e36e146102df57806310d5de53146102f65780631694505e1461033357610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610a0e565b604051610299919061341c565b60405180910390f35b3480156102ae57600080fd5b506102c960048036038101906102c491906134d7565b610aa0565b6040516102d69190613532565b60405180910390f35b3480156102eb57600080fd5b506102f4610abe565b005b34801561030257600080fd5b5061031d6004803603810190610318919061354d565b610b72565b60405161032a9190613532565b60405180910390f35b34801561033f57600080fd5b50610348610b92565b60405161035591906135d9565b60405180910390f35b34801561036a57600080fd5b50610373610bb8565b6040516103809190613603565b60405180910390f35b34801561039557600080fd5b506103b060048036038101906103ab919061361e565b610bc2565b005b3480156103be57600080fd5b506103d960048036038101906103d4919061365e565b610c50565b6040516103e69190613532565b60405180910390f35b3480156103fb57600080fd5b50610416600480360381019061041191906136b1565b610d48565b005b34801561042457600080fd5b5061042d610e4a565b60405161043a9190613700565b60405180910390f35b34801561044f57600080fd5b50610458610e50565b6040516104659190613603565b60405180910390f35b34801561047a57600080fd5b50610483610e56565b6040516104909190613737565b60405180910390f35b3480156104a557600080fd5b506104ae610e5f565b6040516104bb9190613603565b60405180910390f35b3480156104d057600080fd5b506104eb60048036038101906104e691906134d7565b610e65565b6040516104f89190613532565b60405180910390f35b34801561050d57600080fd5b50610516610f11565b6040516105239190613700565b60405180910390f35b34801561053857600080fd5b50610541610f37565b60405161054e9190613532565b60405180910390f35b34801561056357600080fd5b5061057e6004803603810190610579919061354d565b610f4a565b60405161058b9190613532565b60405180910390f35b3480156105a057600080fd5b506105a9610fa0565b6040516105b69190613532565b60405180910390f35b3480156105cb57600080fd5b506105e660048036038101906105e1919061354d565b610fb3565b6040516105f39190613603565b60405180910390f35b34801561060857600080fd5b50610611610ffb565b005b34801561061f57600080fd5b50610628611083565b005b34801561063657600080fd5b5061063f611198565b60405161064c9190613532565b60405180910390f35b34801561066157600080fd5b5061067c6004803603810190610677919061377e565b611248565b005b34801561068a57600080fd5b5061069361131f565b6040516106a09190613700565b60405180910390f35b3480156106b557600080fd5b506106be611345565b005b3480156106cc57600080fd5b506106d56113f9565b6040516106e29190613700565b60405180910390f35b3480156106f757600080fd5b50610700611423565b60405161070d9190613700565b60405180910390f35b34801561072257600080fd5b5061073d600480360381019061073891906137be565b611449565b005b34801561074b57600080fd5b506107546114e2565b604051610761919061341c565b60405180910390f35b34801561077657600080fd5b50610791600480360381019061078c919061377e565b611574565b005b34801561079f57600080fd5b506107ba60048036038101906107b59190613829565b61168e565b005b3480156107c857600080fd5b506107e360048036038101906107de91906134d7565b611893565b6040516107f09190613532565b60405180910390f35b34801561080557600080fd5b50610820600480360381019061081b91906134d7565b61197e565b60405161082d9190613532565b60405180910390f35b34801561084257600080fd5b5061085d6004803603810190610858919061354d565b61199c565b60405161086a9190613532565b60405180910390f35b34801561087f57600080fd5b506108886119bc565b6040516108959190613532565b60405180910390f35b3480156108aa57600080fd5b506108c560048036038101906108c0919061377e565b6119cf565b005b3480156108d357600080fd5b506108dc611aa6565b6040516108e99190613603565b60405180910390f35b3480156108fe57600080fd5b50610919600480360381019061091491906136b1565b611aac565b6040516109269190613603565b60405180910390f35b34801561093b57600080fd5b50610944611b33565b6040516109519190613603565b60405180910390f35b34801561096657600080fd5b5061096f611b39565b60405161097c9190613603565b60405180910390f35b34801561099157600080fd5b5061099a611b3f565b6040516109a79190613603565b60405180910390f35b6109b8611b45565b005b3480156109c657600080fd5b506109e160048036038101906109dc919061354d565b611f0c565b005b3480156109ef57600080fd5b506109f8612003565b604051610a059190613603565b60405180910390f35b606060038054610a1d90613885565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4990613885565b8015610a965780601f10610a6b57610100808354040283529160200191610a96565b820191906000526020600020905b815481529060010190602001808311610a7957829003601f168201915b5050505050905090565b6000610ab4610aad612009565b8484612011565b6001905092915050565b610ac6612009565b73ffffffffffffffffffffffffffffffffffffffff16610ae46113f9565b73ffffffffffffffffffffffffffffffffffffffff1614610b3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3190613902565b60405180910390fd5b6000600d60016101000a81548160ff0219169083151502179055506000600d60026101000a81548160ff021916908315150217905550565b60156020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b610bca612009565b73ffffffffffffffffffffffffffffffffffffffff16610be86113f9565b73ffffffffffffffffffffffffffffffffffffffff1614610c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3590613902565b60405180910390fd5b80600f8190555081600e819055505050565b6000610c5d8484846121da565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ca8612009565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1f90613994565b60405180910390fd5b610d3c85610d34612009565b858403612011565b60019150509392505050565b610d50612009565b73ffffffffffffffffffffffffffffffffffffffff16610d6e6113f9565b73ffffffffffffffffffffffffffffffffffffffff1614610dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbb90613902565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61dead81565b60115481565b60006012905090565b60105481565b6000610f07610e72612009565b848460016000610e80612009565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f0291906139e3565b612011565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900460ff1681565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611003612009565b73ffffffffffffffffffffffffffffffffffffffff166110216113f9565b73ffffffffffffffffffffffffffffffffffffffff1614611077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106e90613902565b60405180910390fd5b6110816000612b7e565b565b61108b612009565b73ffffffffffffffffffffffffffffffffffffffff166110a96113f9565b73ffffffffffffffffffffffffffffffffffffffff16146110ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f690613902565b60405180910390fd5b600047905060008111611147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113e90613a63565b60405180910390fd5b61114f6113f9565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611194573d6000803e3d6000fd5b5050565b60006111a2612009565b73ffffffffffffffffffffffffffffffffffffffff166111c06113f9565b73ffffffffffffffffffffffffffffffffffffffff1614611216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120d90613902565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506005600f819055506005600e819055506001905090565b611250612009565b73ffffffffffffffffffffffffffffffffffffffff1661126e6113f9565b73ffffffffffffffffffffffffffffffffffffffff16146112c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bb90613902565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61134d612009565b73ffffffffffffffffffffffffffffffffffffffff1661136b6113f9565b73ffffffffffffffffffffffffffffffffffffffff16146113c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b890613902565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611451612009565b73ffffffffffffffffffffffffffffffffffffffff1661146f6113f9565b73ffffffffffffffffffffffffffffffffffffffff16146114c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bc90613902565b60405180910390fd5b80600d60026101000a81548160ff02191690831515021790555050565b6060600480546114f190613885565b80601f016020809104026020016040519081016040528092919081815260200182805461151d90613885565b801561156a5780601f1061153f5761010080835404028352916020019161156a565b820191906000526020600020905b81548152906001019060200180831161154d57829003601f168201915b5050505050905090565b61157c612009565b73ffffffffffffffffffffffffffffffffffffffff1661159a6113f9565b73ffffffffffffffffffffffffffffffffffffffff16146115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e790613902565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611680576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167790613af5565b60405180910390fd5b61168a8282612c44565b5050565b611696612009565b73ffffffffffffffffffffffffffffffffffffffff166116b46113f9565b73ffffffffffffffffffffffffffffffffffffffff161461170a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170190613902565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117459190613700565b602060405180830381865afa158015611762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117869190613b2a565b9050600081116117cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c290613ba3565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6117ef6113f9565b836040518363ffffffff1660e01b815260040161180d929190613bc3565b6020604051808303816000875af115801561182c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118509190613c01565b61188f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188690613c7a565b60405180910390fd5b5050565b600080600160006118a2612009565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561195f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195690613d0c565b60405180910390fd5b61197361196a612009565b85858403612011565b600191505092915050565b600061199261198b612009565b84846121da565b6001905092915050565b60166020528060005260406000206000915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b6119d7612009565b73ffffffffffffffffffffffffffffffffffffffff166119f56113f9565b73ffffffffffffffffffffffffffffffffffffffff1614611a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4290613902565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f5481565b600b5481565b600e5481565b611b4d612009565b73ffffffffffffffffffffffffffffffffffffffff16611b6b6113f9565b73ffffffffffffffffffffffffffffffffffffffff1614611bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb890613902565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c26816001611248565b611c5a30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c55610bb8565b612011565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ca5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc99190613d41565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d549190613d41565b6040518363ffffffff1660e01b8152600401611d71929190613d6e565b6020604051808303816000875af1158015611d90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db49190613d41565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611e21601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611248565b611e4e601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612c44565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430611e96610bb8565b600080611ea16113f9565b426040518863ffffffff1660e01b8152600401611ec396959493929190613dd2565b60606040518083038185885af1158015611ee1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f069190613e33565b50505050565b611f14612009565b73ffffffffffffffffffffffffffffffffffffffff16611f326113f9565b73ffffffffffffffffffffffffffffffffffffffff1614611f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7f90613902565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ff7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fee90613ef8565b60405180910390fd5b61200081612b7e565b50565b600c5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207790613f8a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e69061401c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121cd9190613603565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612249576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612240906140ae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122af90614140565b60405180910390fd5b600081116122fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f2906141d2565b60405180910390fd5b600d60009054906101000a900460ff16156127f6576123186113f9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561238657506123566113f9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123bf5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123f9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124125750600660149054906101000a900460ff16155b156127f557600d60019054906101000a900460ff1661250c57601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124cc5750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61250b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125029061423e565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125af5750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561265657600a548111156125f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f0906142d0565b60405180910390fd5b600c5461260583610fb3565b8261261091906139e3565b1115612651576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126489061433c565b60405180910390fd5b6127f4565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156126f95750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561274857600a54811115612743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273a906143ce565b60405180910390fd5b6127f3565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166127f257600c546127a583610fb3565b826127b091906139e3565b11156127f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e89061433c565b60405180910390fd5b5b5b5b5b5b600d60029054906101000a900460ff16801561281f5750600660149054906101000a900460ff16155b80156128755750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156128cb5750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156129215750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612965576001600660146101000a81548160ff021916908315150217905550612949612c9f565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a1b5750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a2557600090505b60008115612b6c57601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a8857506000600f54115b15612abc57612ab56064612aa7600f5486612e7e90919063ffffffff16565b612e9490919063ffffffff16565b9050612b48565b601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b1757506000600e54115b15612b4757612b446064612b36600e5486612e7e90919063ffffffff16565b612e9490919063ffffffff16565b90505b5b6000811115612b5d57612b5c853083612eaa565b5b8083612b6991906143ee565b92505b612b77858585612eaa565b5050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000612caa30610fb3565b90506000808203612cbc575050612e7c565b600b548210612e79576000600b549050612cd581613129565b60004790506000612d046064612cf660105485612e7e90919063ffffffff16565b612e9490919063ffffffff16565b90506000612d1b828461336c90919063ffffffff16565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612d6390614453565b60006040518083038185875af1925050503d8060008114612da0576040519150601f19603f3d011682016040523d82523d6000602084013e612da5565b606091505b505080955050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051612df190614453565b60006040518083038185875af1925050503d8060008114612e2e576040519150601f19603f3d011682016040523d82523d6000602084013e612e33565b606091505b5050809550507fe9f689eb4d290dd3a40869ea626055ee4a55d40f20286208d04ef55f39254cff848487604051612e6c93929190614468565b60405180910390a1505050505b50505b565b60008183612e8c919061449f565b905092915050565b60008183612ea29190614510565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f10906140ae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7f90614140565b60405180910390fd5b612f93838383613382565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613019576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613010906145b3565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130ac91906139e3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131109190613603565b60405180910390a3613123848484613387565b50505050565b6000600267ffffffffffffffff811115613146576131456145d3565b5b6040519080825280602002602001820160405280156131745781602001602082028036833780820191505090505b509050308160008151811061318c5761318b614602565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613233573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132579190613d41565b8160018151811061326b5761326a614602565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506132d230601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612011565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016133369594939291906146ef565b600060405180830381600087803b15801561335057600080fd5b505af1158015613364573d6000803e3d6000fd5b505050505050565b6000818361337a91906143ee565b905092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156133c65780820151818401526020810190506133ab565b60008484015250505050565b6000601f19601f8301169050919050565b60006133ee8261338c565b6133f88185613397565b93506134088185602086016133a8565b613411816133d2565b840191505092915050565b6000602082019050818103600083015261343681846133e3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061346e82613443565b9050919050565b61347e81613463565b811461348957600080fd5b50565b60008135905061349b81613475565b92915050565b6000819050919050565b6134b4816134a1565b81146134bf57600080fd5b50565b6000813590506134d1816134ab565b92915050565b600080604083850312156134ee576134ed61343e565b5b60006134fc8582860161348c565b925050602061350d858286016134c2565b9150509250929050565b60008115159050919050565b61352c81613517565b82525050565b60006020820190506135476000830184613523565b92915050565b6000602082840312156135635761356261343e565b5b60006135718482850161348c565b91505092915050565b6000819050919050565b600061359f61359a61359584613443565b61357a565b613443565b9050919050565b60006135b182613584565b9050919050565b60006135c3826135a6565b9050919050565b6135d3816135b8565b82525050565b60006020820190506135ee60008301846135ca565b92915050565b6135fd816134a1565b82525050565b600060208201905061361860008301846135f4565b92915050565b600080604083850312156136355761363461343e565b5b6000613643858286016134c2565b9250506020613654858286016134c2565b9150509250929050565b6000806000606084860312156136775761367661343e565b5b60006136858682870161348c565b93505060206136968682870161348c565b92505060406136a7868287016134c2565b9150509250925092565b600080604083850312156136c8576136c761343e565b5b60006136d68582860161348c565b92505060206136e78582860161348c565b9150509250929050565b6136fa81613463565b82525050565b600060208201905061371560008301846136f1565b92915050565b600060ff82169050919050565b6137318161371b565b82525050565b600060208201905061374c6000830184613728565b92915050565b61375b81613517565b811461376657600080fd5b50565b60008135905061377881613752565b92915050565b600080604083850312156137955761379461343e565b5b60006137a38582860161348c565b92505060206137b485828601613769565b9150509250929050565b6000602082840312156137d4576137d361343e565b5b60006137e284828501613769565b91505092915050565b60006137f682613463565b9050919050565b613806816137eb565b811461381157600080fd5b50565b600081359050613823816137fd565b92915050565b60006020828403121561383f5761383e61343e565b5b600061384d84828501613814565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061389d57607f821691505b6020821081036138b0576138af613856565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138ec602083613397565b91506138f7826138b6565b602082019050919050565b6000602082019050818103600083015261391b816138df565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061397e602883613397565b915061398982613922565b604082019050919050565b600060208201905081810360008301526139ad81613971565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006139ee826134a1565b91506139f9836134a1565b9250828201905080821115613a1157613a106139b4565b5b92915050565b7f4e6f20457468657220746f207769746864726177000000000000000000000000600082015250565b6000613a4d601483613397565b9150613a5882613a17565b602082019050919050565b60006020820190508181036000830152613a7c81613a40565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613adf603983613397565b9150613aea82613a83565b604082019050919050565b60006020820190508181036000830152613b0e81613ad2565b9050919050565b600081519050613b24816134ab565b92915050565b600060208284031215613b4057613b3f61343e565b5b6000613b4e84828501613b15565b91505092915050565b7f4e6f20746f6b656e7320746f2077697468647261770000000000000000000000600082015250565b6000613b8d601583613397565b9150613b9882613b57565b602082019050919050565b60006020820190508181036000830152613bbc81613b80565b9050919050565b6000604082019050613bd860008301856136f1565b613be560208301846135f4565b9392505050565b600081519050613bfb81613752565b92915050565b600060208284031215613c1757613c1661343e565b5b6000613c2584828501613bec565b91505092915050565b7f546f6b656e207472616e73666572206661696c65640000000000000000000000600082015250565b6000613c64601583613397565b9150613c6f82613c2e565b602082019050919050565b60006020820190508181036000830152613c9381613c57565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613cf6602583613397565b9150613d0182613c9a565b604082019050919050565b60006020820190508181036000830152613d2581613ce9565b9050919050565b600081519050613d3b81613475565b92915050565b600060208284031215613d5757613d5661343e565b5b6000613d6584828501613d2c565b91505092915050565b6000604082019050613d8360008301856136f1565b613d9060208301846136f1565b9392505050565b6000819050919050565b6000613dbc613db7613db284613d97565b61357a565b6134a1565b9050919050565b613dcc81613da1565b82525050565b600060c082019050613de760008301896136f1565b613df460208301886135f4565b613e016040830187613dc3565b613e0e6060830186613dc3565b613e1b60808301856136f1565b613e2860a08301846135f4565b979650505050505050565b600080600060608486031215613e4c57613e4b61343e565b5b6000613e5a86828701613b15565b9350506020613e6b86828701613b15565b9250506040613e7c86828701613b15565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ee2602683613397565b9150613eed82613e86565b604082019050919050565b60006020820190508181036000830152613f1181613ed5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f74602483613397565b9150613f7f82613f18565b604082019050919050565b60006020820190508181036000830152613fa381613f67565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614006602283613397565b915061401182613faa565b604082019050919050565b6000602082019050818103600083015261403581613ff9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614098602583613397565b91506140a38261403c565b604082019050919050565b600060208201905081810360008301526140c78161408b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061412a602383613397565b9150614135826140ce565b604082019050919050565b600060208201905081810360008301526141598161411d565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006141bc602983613397565b91506141c782614160565b604082019050919050565b600060208201905081810360008301526141eb816141af565b9050919050565b7f54726164696e67206973206e6f7420656e61626c6564207965742e0000000000600082015250565b6000614228601b83613397565b9150614233826141f2565b602082019050919050565b600060208201905081810360008301526142578161421b565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006142ba603583613397565b91506142c58261425e565b604082019050919050565b600060208201905081810360008301526142e9816142ad565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614326601383613397565b9150614331826142f0565b602082019050919050565b6000602082019050818103600083015261435581614319565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006143b8603683613397565b91506143c38261435c565b604082019050919050565b600060208201905081810360008301526143e7816143ab565b9050919050565b60006143f9826134a1565b9150614404836134a1565b925082820390508181111561441c5761441b6139b4565b5b92915050565b600081905092915050565b50565b600061443d600083614422565b91506144488261442d565b600082019050919050565b600061445e82614430565b9150819050919050565b600060608201905061447d60008301866135f4565b61448a60208301856135f4565b6144976040830184613523565b949350505050565b60006144aa826134a1565b91506144b5836134a1565b92508282026144c3816134a1565b915082820484148315176144da576144d96139b4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061451b826134a1565b9150614526836134a1565b925082614536576145356144e1565b5b828204905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061459d602683613397565b91506145a882614541565b604082019050919050565b600060208201905081810360008301526145cc81614590565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61466681613463565b82525050565b6000614678838361465d565b60208301905092915050565b6000602082019050919050565b600061469c82614631565b6146a6818561463c565b93506146b18361464d565b8060005b838110156146e25781516146c9888261466c565b97506146d483614684565b9250506001810190506146b5565b5085935050505092915050565b600060a08201905061470460008301886135f4565b6147116020830187613dc3565b81810360408301526147238186614691565b905061473260608301856136f1565b61473f60808301846135f4565b969550505050505056fea2646970667358221220dd5a26b86c0c2c9a676a61b094cba9e672c7e40359d694e152911a39b8eef0e764736f6c63430008120033

Deployed Bytecode

0x60806040526004361061026b5760003560e01c80637571336a11610144578063b62496f5116100b6578063e0f3ccf51161007a578063e0f3ccf51461092f578063e2f456051461095a578063e4748b9e14610985578063e8078d94146109b0578063f2fde38b146109ba578063f8b45b05146109e357610272565b8063b62496f514610836578063bbc0c74214610873578063c02466681461089e578063c8c8ebe4146108c7578063dd62ed3e146108f257610272565b8063924de9b711610108578063924de9b71461071657806395d89b411461073f5780639a7a23d61461076a578063a1190a3614610793578063a457c2d7146107bc578063a9059cbb146107f957610272565b80637571336a1461065557806375f0a8741461067e5780638a8c523c146106a95780638da5cb5b146106c05780638ea5220f146106eb57610272565b8063313ce567116101dd5780634fbee193116101a15780634fbee193146105575780636ddd17131461059457806370a08231146105bf578063715018a6146105fc5780637362377b14610613578063751039fc1461062a57610272565b8063313ce5671461046e578063360bfd541461049957806339509351146104c457806349bd5a5e146105015780634a62bb651461052c57610272565b806318160ddd1161022f57806318160ddd1461035e57806321ecff5b1461038957806323b872dd146103b257806325d92ee2146103ef57806327c8f835146104185780632b3459641461044357610272565b806306fdde0314610277578063095ea7b3146102a25780631031e36e146102df57806310d5de53146102f65780631694505e1461033357610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610a0e565b604051610299919061341c565b60405180910390f35b3480156102ae57600080fd5b506102c960048036038101906102c491906134d7565b610aa0565b6040516102d69190613532565b60405180910390f35b3480156102eb57600080fd5b506102f4610abe565b005b34801561030257600080fd5b5061031d6004803603810190610318919061354d565b610b72565b60405161032a9190613532565b60405180910390f35b34801561033f57600080fd5b50610348610b92565b60405161035591906135d9565b60405180910390f35b34801561036a57600080fd5b50610373610bb8565b6040516103809190613603565b60405180910390f35b34801561039557600080fd5b506103b060048036038101906103ab919061361e565b610bc2565b005b3480156103be57600080fd5b506103d960048036038101906103d4919061365e565b610c50565b6040516103e69190613532565b60405180910390f35b3480156103fb57600080fd5b50610416600480360381019061041191906136b1565b610d48565b005b34801561042457600080fd5b5061042d610e4a565b60405161043a9190613700565b60405180910390f35b34801561044f57600080fd5b50610458610e50565b6040516104659190613603565b60405180910390f35b34801561047a57600080fd5b50610483610e56565b6040516104909190613737565b60405180910390f35b3480156104a557600080fd5b506104ae610e5f565b6040516104bb9190613603565b60405180910390f35b3480156104d057600080fd5b506104eb60048036038101906104e691906134d7565b610e65565b6040516104f89190613532565b60405180910390f35b34801561050d57600080fd5b50610516610f11565b6040516105239190613700565b60405180910390f35b34801561053857600080fd5b50610541610f37565b60405161054e9190613532565b60405180910390f35b34801561056357600080fd5b5061057e6004803603810190610579919061354d565b610f4a565b60405161058b9190613532565b60405180910390f35b3480156105a057600080fd5b506105a9610fa0565b6040516105b69190613532565b60405180910390f35b3480156105cb57600080fd5b506105e660048036038101906105e1919061354d565b610fb3565b6040516105f39190613603565b60405180910390f35b34801561060857600080fd5b50610611610ffb565b005b34801561061f57600080fd5b50610628611083565b005b34801561063657600080fd5b5061063f611198565b60405161064c9190613532565b60405180910390f35b34801561066157600080fd5b5061067c6004803603810190610677919061377e565b611248565b005b34801561068a57600080fd5b5061069361131f565b6040516106a09190613700565b60405180910390f35b3480156106b557600080fd5b506106be611345565b005b3480156106cc57600080fd5b506106d56113f9565b6040516106e29190613700565b60405180910390f35b3480156106f757600080fd5b50610700611423565b60405161070d9190613700565b60405180910390f35b34801561072257600080fd5b5061073d600480360381019061073891906137be565b611449565b005b34801561074b57600080fd5b506107546114e2565b604051610761919061341c565b60405180910390f35b34801561077657600080fd5b50610791600480360381019061078c919061377e565b611574565b005b34801561079f57600080fd5b506107ba60048036038101906107b59190613829565b61168e565b005b3480156107c857600080fd5b506107e360048036038101906107de91906134d7565b611893565b6040516107f09190613532565b60405180910390f35b34801561080557600080fd5b50610820600480360381019061081b91906134d7565b61197e565b60405161082d9190613532565b60405180910390f35b34801561084257600080fd5b5061085d6004803603810190610858919061354d565b61199c565b60405161086a9190613532565b60405180910390f35b34801561087f57600080fd5b506108886119bc565b6040516108959190613532565b60405180910390f35b3480156108aa57600080fd5b506108c560048036038101906108c0919061377e565b6119cf565b005b3480156108d357600080fd5b506108dc611aa6565b6040516108e99190613603565b60405180910390f35b3480156108fe57600080fd5b50610919600480360381019061091491906136b1565b611aac565b6040516109269190613603565b60405180910390f35b34801561093b57600080fd5b50610944611b33565b6040516109519190613603565b60405180910390f35b34801561096657600080fd5b5061096f611b39565b60405161097c9190613603565b60405180910390f35b34801561099157600080fd5b5061099a611b3f565b6040516109a79190613603565b60405180910390f35b6109b8611b45565b005b3480156109c657600080fd5b506109e160048036038101906109dc919061354d565b611f0c565b005b3480156109ef57600080fd5b506109f8612003565b604051610a059190613603565b60405180910390f35b606060038054610a1d90613885565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4990613885565b8015610a965780601f10610a6b57610100808354040283529160200191610a96565b820191906000526020600020905b815481529060010190602001808311610a7957829003601f168201915b5050505050905090565b6000610ab4610aad612009565b8484612011565b6001905092915050565b610ac6612009565b73ffffffffffffffffffffffffffffffffffffffff16610ae46113f9565b73ffffffffffffffffffffffffffffffffffffffff1614610b3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3190613902565b60405180910390fd5b6000600d60016101000a81548160ff0219169083151502179055506000600d60026101000a81548160ff021916908315150217905550565b60156020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b610bca612009565b73ffffffffffffffffffffffffffffffffffffffff16610be86113f9565b73ffffffffffffffffffffffffffffffffffffffff1614610c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3590613902565b60405180910390fd5b80600f8190555081600e819055505050565b6000610c5d8484846121da565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ca8612009565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1f90613994565b60405180910390fd5b610d3c85610d34612009565b858403612011565b60019150509392505050565b610d50612009565b73ffffffffffffffffffffffffffffffffffffffff16610d6e6113f9565b73ffffffffffffffffffffffffffffffffffffffff1614610dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbb90613902565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61dead81565b60115481565b60006012905090565b60105481565b6000610f07610e72612009565b848460016000610e80612009565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f0291906139e3565b612011565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900460ff1681565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611003612009565b73ffffffffffffffffffffffffffffffffffffffff166110216113f9565b73ffffffffffffffffffffffffffffffffffffffff1614611077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106e90613902565b60405180910390fd5b6110816000612b7e565b565b61108b612009565b73ffffffffffffffffffffffffffffffffffffffff166110a96113f9565b73ffffffffffffffffffffffffffffffffffffffff16146110ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f690613902565b60405180910390fd5b600047905060008111611147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113e90613a63565b60405180910390fd5b61114f6113f9565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611194573d6000803e3d6000fd5b5050565b60006111a2612009565b73ffffffffffffffffffffffffffffffffffffffff166111c06113f9565b73ffffffffffffffffffffffffffffffffffffffff1614611216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120d90613902565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506005600f819055506005600e819055506001905090565b611250612009565b73ffffffffffffffffffffffffffffffffffffffff1661126e6113f9565b73ffffffffffffffffffffffffffffffffffffffff16146112c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bb90613902565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61134d612009565b73ffffffffffffffffffffffffffffffffffffffff1661136b6113f9565b73ffffffffffffffffffffffffffffffffffffffff16146113c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b890613902565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611451612009565b73ffffffffffffffffffffffffffffffffffffffff1661146f6113f9565b73ffffffffffffffffffffffffffffffffffffffff16146114c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bc90613902565b60405180910390fd5b80600d60026101000a81548160ff02191690831515021790555050565b6060600480546114f190613885565b80601f016020809104026020016040519081016040528092919081815260200182805461151d90613885565b801561156a5780601f1061153f5761010080835404028352916020019161156a565b820191906000526020600020905b81548152906001019060200180831161154d57829003601f168201915b5050505050905090565b61157c612009565b73ffffffffffffffffffffffffffffffffffffffff1661159a6113f9565b73ffffffffffffffffffffffffffffffffffffffff16146115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e790613902565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611680576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167790613af5565b60405180910390fd5b61168a8282612c44565b5050565b611696612009565b73ffffffffffffffffffffffffffffffffffffffff166116b46113f9565b73ffffffffffffffffffffffffffffffffffffffff161461170a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170190613902565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117459190613700565b602060405180830381865afa158015611762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117869190613b2a565b9050600081116117cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c290613ba3565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6117ef6113f9565b836040518363ffffffff1660e01b815260040161180d929190613bc3565b6020604051808303816000875af115801561182c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118509190613c01565b61188f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188690613c7a565b60405180910390fd5b5050565b600080600160006118a2612009565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561195f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195690613d0c565b60405180910390fd5b61197361196a612009565b85858403612011565b600191505092915050565b600061199261198b612009565b84846121da565b6001905092915050565b60166020528060005260406000206000915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b6119d7612009565b73ffffffffffffffffffffffffffffffffffffffff166119f56113f9565b73ffffffffffffffffffffffffffffffffffffffff1614611a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4290613902565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f5481565b600b5481565b600e5481565b611b4d612009565b73ffffffffffffffffffffffffffffffffffffffff16611b6b6113f9565b73ffffffffffffffffffffffffffffffffffffffff1614611bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb890613902565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c26816001611248565b611c5a30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c55610bb8565b612011565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ca5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc99190613d41565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d549190613d41565b6040518363ffffffff1660e01b8152600401611d71929190613d6e565b6020604051808303816000875af1158015611d90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db49190613d41565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611e21601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611248565b611e4e601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612c44565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430611e96610bb8565b600080611ea16113f9565b426040518863ffffffff1660e01b8152600401611ec396959493929190613dd2565b60606040518083038185885af1158015611ee1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f069190613e33565b50505050565b611f14612009565b73ffffffffffffffffffffffffffffffffffffffff16611f326113f9565b73ffffffffffffffffffffffffffffffffffffffff1614611f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7f90613902565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ff7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fee90613ef8565b60405180910390fd5b61200081612b7e565b50565b600c5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207790613f8a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e69061401c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121cd9190613603565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612249576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612240906140ae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122af90614140565b60405180910390fd5b600081116122fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f2906141d2565b60405180910390fd5b600d60009054906101000a900460ff16156127f6576123186113f9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561238657506123566113f9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123bf5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123f9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124125750600660149054906101000a900460ff16155b156127f557600d60019054906101000a900460ff1661250c57601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124cc5750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61250b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125029061423e565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125af5750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561265657600a548111156125f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f0906142d0565b60405180910390fd5b600c5461260583610fb3565b8261261091906139e3565b1115612651576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126489061433c565b60405180910390fd5b6127f4565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156126f95750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561274857600a54811115612743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273a906143ce565b60405180910390fd5b6127f3565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166127f257600c546127a583610fb3565b826127b091906139e3565b11156127f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e89061433c565b60405180910390fd5b5b5b5b5b5b600d60029054906101000a900460ff16801561281f5750600660149054906101000a900460ff16155b80156128755750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156128cb5750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156129215750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612965576001600660146101000a81548160ff021916908315150217905550612949612c9f565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a1b5750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a2557600090505b60008115612b6c57601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a8857506000600f54115b15612abc57612ab56064612aa7600f5486612e7e90919063ffffffff16565b612e9490919063ffffffff16565b9050612b48565b601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b1757506000600e54115b15612b4757612b446064612b36600e5486612e7e90919063ffffffff16565b612e9490919063ffffffff16565b90505b5b6000811115612b5d57612b5c853083612eaa565b5b8083612b6991906143ee565b92505b612b77858585612eaa565b5050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000612caa30610fb3565b90506000808203612cbc575050612e7c565b600b548210612e79576000600b549050612cd581613129565b60004790506000612d046064612cf660105485612e7e90919063ffffffff16565b612e9490919063ffffffff16565b90506000612d1b828461336c90919063ffffffff16565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612d6390614453565b60006040518083038185875af1925050503d8060008114612da0576040519150601f19603f3d011682016040523d82523d6000602084013e612da5565b606091505b505080955050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051612df190614453565b60006040518083038185875af1925050503d8060008114612e2e576040519150601f19603f3d011682016040523d82523d6000602084013e612e33565b606091505b5050809550507fe9f689eb4d290dd3a40869ea626055ee4a55d40f20286208d04ef55f39254cff848487604051612e6c93929190614468565b60405180910390a1505050505b50505b565b60008183612e8c919061449f565b905092915050565b60008183612ea29190614510565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f10906140ae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7f90614140565b60405180910390fd5b612f93838383613382565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613019576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613010906145b3565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130ac91906139e3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131109190613603565b60405180910390a3613123848484613387565b50505050565b6000600267ffffffffffffffff811115613146576131456145d3565b5b6040519080825280602002602001820160405280156131745781602001602082028036833780820191505090505b509050308160008151811061318c5761318b614602565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613233573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132579190613d41565b8160018151811061326b5761326a614602565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506132d230601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612011565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016133369594939291906146ef565b600060405180830381600087803b15801561335057600080fd5b505af1158015613364573d6000803e3d6000fd5b505050505050565b6000818361337a91906143ee565b905092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156133c65780820151818401526020810190506133ab565b60008484015250505050565b6000601f19601f8301169050919050565b60006133ee8261338c565b6133f88185613397565b93506134088185602086016133a8565b613411816133d2565b840191505092915050565b6000602082019050818103600083015261343681846133e3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061346e82613443565b9050919050565b61347e81613463565b811461348957600080fd5b50565b60008135905061349b81613475565b92915050565b6000819050919050565b6134b4816134a1565b81146134bf57600080fd5b50565b6000813590506134d1816134ab565b92915050565b600080604083850312156134ee576134ed61343e565b5b60006134fc8582860161348c565b925050602061350d858286016134c2565b9150509250929050565b60008115159050919050565b61352c81613517565b82525050565b60006020820190506135476000830184613523565b92915050565b6000602082840312156135635761356261343e565b5b60006135718482850161348c565b91505092915050565b6000819050919050565b600061359f61359a61359584613443565b61357a565b613443565b9050919050565b60006135b182613584565b9050919050565b60006135c3826135a6565b9050919050565b6135d3816135b8565b82525050565b60006020820190506135ee60008301846135ca565b92915050565b6135fd816134a1565b82525050565b600060208201905061361860008301846135f4565b92915050565b600080604083850312156136355761363461343e565b5b6000613643858286016134c2565b9250506020613654858286016134c2565b9150509250929050565b6000806000606084860312156136775761367661343e565b5b60006136858682870161348c565b93505060206136968682870161348c565b92505060406136a7868287016134c2565b9150509250925092565b600080604083850312156136c8576136c761343e565b5b60006136d68582860161348c565b92505060206136e78582860161348c565b9150509250929050565b6136fa81613463565b82525050565b600060208201905061371560008301846136f1565b92915050565b600060ff82169050919050565b6137318161371b565b82525050565b600060208201905061374c6000830184613728565b92915050565b61375b81613517565b811461376657600080fd5b50565b60008135905061377881613752565b92915050565b600080604083850312156137955761379461343e565b5b60006137a38582860161348c565b92505060206137b485828601613769565b9150509250929050565b6000602082840312156137d4576137d361343e565b5b60006137e284828501613769565b91505092915050565b60006137f682613463565b9050919050565b613806816137eb565b811461381157600080fd5b50565b600081359050613823816137fd565b92915050565b60006020828403121561383f5761383e61343e565b5b600061384d84828501613814565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061389d57607f821691505b6020821081036138b0576138af613856565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138ec602083613397565b91506138f7826138b6565b602082019050919050565b6000602082019050818103600083015261391b816138df565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061397e602883613397565b915061398982613922565b604082019050919050565b600060208201905081810360008301526139ad81613971565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006139ee826134a1565b91506139f9836134a1565b9250828201905080821115613a1157613a106139b4565b5b92915050565b7f4e6f20457468657220746f207769746864726177000000000000000000000000600082015250565b6000613a4d601483613397565b9150613a5882613a17565b602082019050919050565b60006020820190508181036000830152613a7c81613a40565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613adf603983613397565b9150613aea82613a83565b604082019050919050565b60006020820190508181036000830152613b0e81613ad2565b9050919050565b600081519050613b24816134ab565b92915050565b600060208284031215613b4057613b3f61343e565b5b6000613b4e84828501613b15565b91505092915050565b7f4e6f20746f6b656e7320746f2077697468647261770000000000000000000000600082015250565b6000613b8d601583613397565b9150613b9882613b57565b602082019050919050565b60006020820190508181036000830152613bbc81613b80565b9050919050565b6000604082019050613bd860008301856136f1565b613be560208301846135f4565b9392505050565b600081519050613bfb81613752565b92915050565b600060208284031215613c1757613c1661343e565b5b6000613c2584828501613bec565b91505092915050565b7f546f6b656e207472616e73666572206661696c65640000000000000000000000600082015250565b6000613c64601583613397565b9150613c6f82613c2e565b602082019050919050565b60006020820190508181036000830152613c9381613c57565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613cf6602583613397565b9150613d0182613c9a565b604082019050919050565b60006020820190508181036000830152613d2581613ce9565b9050919050565b600081519050613d3b81613475565b92915050565b600060208284031215613d5757613d5661343e565b5b6000613d6584828501613d2c565b91505092915050565b6000604082019050613d8360008301856136f1565b613d9060208301846136f1565b9392505050565b6000819050919050565b6000613dbc613db7613db284613d97565b61357a565b6134a1565b9050919050565b613dcc81613da1565b82525050565b600060c082019050613de760008301896136f1565b613df460208301886135f4565b613e016040830187613dc3565b613e0e6060830186613dc3565b613e1b60808301856136f1565b613e2860a08301846135f4565b979650505050505050565b600080600060608486031215613e4c57613e4b61343e565b5b6000613e5a86828701613b15565b9350506020613e6b86828701613b15565b9250506040613e7c86828701613b15565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ee2602683613397565b9150613eed82613e86565b604082019050919050565b60006020820190508181036000830152613f1181613ed5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f74602483613397565b9150613f7f82613f18565b604082019050919050565b60006020820190508181036000830152613fa381613f67565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614006602283613397565b915061401182613faa565b604082019050919050565b6000602082019050818103600083015261403581613ff9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614098602583613397565b91506140a38261403c565b604082019050919050565b600060208201905081810360008301526140c78161408b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061412a602383613397565b9150614135826140ce565b604082019050919050565b600060208201905081810360008301526141598161411d565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006141bc602983613397565b91506141c782614160565b604082019050919050565b600060208201905081810360008301526141eb816141af565b9050919050565b7f54726164696e67206973206e6f7420656e61626c6564207965742e0000000000600082015250565b6000614228601b83613397565b9150614233826141f2565b602082019050919050565b600060208201905081810360008301526142578161421b565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006142ba603583613397565b91506142c58261425e565b604082019050919050565b600060208201905081810360008301526142e9816142ad565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614326601383613397565b9150614331826142f0565b602082019050919050565b6000602082019050818103600083015261435581614319565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006143b8603683613397565b91506143c38261435c565b604082019050919050565b600060208201905081810360008301526143e7816143ab565b9050919050565b60006143f9826134a1565b9150614404836134a1565b925082820390508181111561441c5761441b6139b4565b5b92915050565b600081905092915050565b50565b600061443d600083614422565b91506144488261442d565b600082019050919050565b600061445e82614430565b9150819050919050565b600060608201905061447d60008301866135f4565b61448a60208301856135f4565b6144976040830184613523565b949350505050565b60006144aa826134a1565b91506144b5836134a1565b92508282026144c3816134a1565b915082820484148315176144da576144d96139b4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061451b826134a1565b9150614526836134a1565b925082614536576145356144e1565b5b828204905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061459d602683613397565b91506145a882614541565b604082019050919050565b600060208201905081810360008301526145cc81614590565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61466681613463565b82525050565b6000614678838361465d565b60208301905092915050565b6000602082019050919050565b600061469c82614631565b6146a6818561463c565b93506146b18361464d565b8060005b838110156146e25781516146c9888261466c565b97506146d483614684565b9250506001810190506146b5565b5085935050505092915050565b600060a08201905061470460008301886135f4565b6147116020830187613dc3565b81810360408301526147238186614691565b905061473260608301856136f1565b61473f60808301846135f4565b969550505050505056fea2646970667358221220dd5a26b86c0c2c9a676a61b094cba9e672c7e40359d694e152911a39b8eef0e764736f6c63430008120033

Deployed Bytecode Sourcemap

18112:10370:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4694:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6296:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20309:113;;;;;;;;;;;;;:::i;:::-;;19328:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19071:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5183:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21150:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6498:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23293:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19154:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18997:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5025:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18954:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7035:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19119:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18763:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23500:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18843:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5354:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1442:103;;;;;;;;;;;;;:::i;:::-;;20731:236;;;;;;;;;;;;;:::i;:::-;;20975:166;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21286:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18309:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20188:112;;;;;;;;;;;;;:::i;:::-;;791:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18411;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21495:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4913:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21743:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20430:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7333:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5710:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19398:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18803:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21603:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18558:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5973:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18917:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18630:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18883:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22055:1092;;;:::i;:::-;;1700:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18700:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4694:100;4748:13;4781:5;4774:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4694:100;:::o;6296:194::-;6404:4;6421:39;6430:12;:10;:12::i;:::-;6444:7;6453:6;6421:8;:39::i;:::-;6478:4;6471:11;;6296:194;;;;:::o;20309:113::-;1022:12;:10;:12::i;:::-;1011:23;;:7;:5;:7::i;:::-;:23;;;1003:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20379:5:::1;20363:13;;:21;;;;;;;;;;;;;;;;;;20409:5;20395:11;;:19;;;;;;;;;;;;;;;;;;20309:113::o:0;19328:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;19071:41::-;;;;;;;;;;;;;:::o;5183:108::-;5244:7;5271:12;;5264:19;;5183:108;:::o;21150:124::-;1022:12;:10;:12::i;:::-;1011:23;;:7;:5;:7::i;:::-;:23;;;1003:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21238:4:::1;21227:8;:15;;;;21263:3;21253:7;:13;;;;21150:124:::0;;:::o;6498:529::-;6638:4;6655:36;6665:6;6673:9;6684:6;6655:9;:36::i;:::-;6704:24;6731:11;:19;6743:6;6731:19;;;;;;;;;;;;;;;:33;6751:12;:10;:12::i;:::-;6731:33;;;;;;;;;;;;;;;;6704:60;;6817:6;6797:16;:26;;6775:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;6927:57;6936:6;6944:12;:10;:12::i;:::-;6977:6;6958:16;:25;6927:8;:57::i;:::-;7015:4;7008:11;;;6498:529;;;;;:::o;23293:199::-;1022:12;:10;:12::i;:::-;1011:23;;:7;:5;:7::i;:::-;:23;;;1003:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23429:10:::1;23417:9;;:22;;;;;;;;;;;;;;;;;;23468:16;23450:15;;:34;;;;;;;;;;;;;;;;;;23293:199:::0;;:::o;19154:53::-;19200:6;19154:53;:::o;18997:29::-;;;;:::o;5025:93::-;5083:5;5108:2;5101:9;;5025:93;:::o;18954:35::-;;;;:::o;7035:290::-;7148:4;7165:130;7188:12;:10;:12::i;:::-;7215:7;7274:10;7237:11;:25;7249:12;:10;:12::i;:::-;7237:25;;;;;;;;;;;;;;;:34;7263:7;7237:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;7165:8;:130::i;:::-;7313:4;7306:11;;7035:290;;;;:::o;19119:28::-;;;;;;;;;;;;;:::o;18763:33::-;;;;;;;;;;;;;:::o;23500:126::-;23566:4;23590:19;:28;23610:7;23590:28;;;;;;;;;;;;;;;;;;;;;;;;;23583:35;;23500:126;;;:::o;18843:31::-;;;;;;;;;;;;;:::o;5354:143::-;5444:7;5471:9;:18;5481:7;5471:18;;;;;;;;;;;;;;;;5464:25;;5354:143;;;:::o;1442:103::-;1022:12;:10;:12::i;:::-;1011:23;;:7;:5;:7::i;:::-;:23;;;1003:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1507:30:::1;1534:1;1507:18;:30::i;:::-;1442:103::o:0;20731:236::-;1022:12;:10;:12::i;:::-;1011:23;;:7;:5;:7::i;:::-;:23;;;1003:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20786:23:::1;20812:21;20786:47;;20870:1;20852:15;:19;20844:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;20925:7;:5;:7::i;:::-;20917:25;;:42;20943:15;20917:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;20775:192;20731:236::o:0;20975:166::-;21027:4;1022:12;:10;:12::i;:::-;1011:23;;:7;:5;:7::i;:::-;:23;;;1003:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21061:5:::1;21044:14;;:22;;;;;;;;;;;;;;;;;;21088:1;21077:8;:12;;;;21110:1;21100:7;:11;;;;21129:4;21122:11;;20975:166:::0;:::o;21286:201::-;1022:12;:10;:12::i;:::-;1011:23;;:7;:5;:7::i;:::-;:23;;;1003:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21469:10:::1;21417:31;:49;21449:16;21417:49;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;21286:201:::0;;:::o;18309:93::-;;;;;;;;;;;;;:::o;20188:112::-;1022:12;:10;:12::i;:::-;1011:23;;:7;:5;:7::i;:::-;:23;;;1003:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20259:4:::1;20243:13;;:20;;;;;;;;;;;;;;;;;;20288:4;20274:11;;:18;;;;;;;;;;;;;;;;;;20188:112::o:0;791:87::-;837:7;864:6;;;;;;;;;;;857:13;;791:87;:::o;18411:::-;;;;;;;;;;;;;:::o;21495:100::-;1022:12;:10;:12::i;:::-;1011:23;;:7;:5;:7::i;:::-;:23;;;1003:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21580:7:::1;21566:11;;:21;;;;;;;;;;;;;;;;;;21495:100:::0;:::o;4913:104::-;4969:13;5002:7;4995:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4913:104;:::o;21743:304::-;1022:12;:10;:12::i;:::-;1011:23;;:7;:5;:7::i;:::-;:23;;;1003:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21889:13:::1;;;;;;;;;;;21881:21;;:4;:21;;::::0;21859:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21998:41;22027:4;22033:5;21998:28;:41::i;:::-;21743:304:::0;;:::o;20430:291::-;1022:12;:10;:12::i;:::-;1011:23;;:7;:5;:7::i;:::-;:23;;;1003:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20504:23:::1;20530:6;:16;;;20555:4;20530:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20504:57;;20598:1;20580:15;:19;20572:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;20646:6;:15;;;20662:7;:5;:7::i;:::-;20671:15;20646:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20638:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;20493:228;20430:291:::0;:::o;7333:475::-;7451:4;7468:24;7495:11;:25;7507:12;:10;:12::i;:::-;7495:25;;;;;;;;;;;;;;;:34;7521:7;7495:34;;;;;;;;;;;;;;;;7468:61;;7582:15;7562:16;:35;;7540:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;7698:67;7707:12;:10;:12::i;:::-;7721:7;7749:15;7730:16;:34;7698:8;:67::i;:::-;7796:4;7789:11;;;7333:475;;;;:::o;5710:200::-;5821:4;5838:42;5848:12;:10;:12::i;:::-;5862:9;5873:6;5838:9;:42::i;:::-;5898:4;5891:11;;5710:200;;;;:::o;19398:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;18803:33::-;;;;;;;;;;;;;:::o;21603:132::-;1022:12;:10;:12::i;:::-;1011:23;;:7;:5;:7::i;:::-;:23;;;1003:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21719:8:::1;21688:19;:28;21708:7;21688:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21603:132:::0;;:::o;18558:64::-;;;;:::o;5973:176::-;6087:7;6114:11;:18;6126:5;6114:18;;;;;;;;;;;;;;;:27;6133:7;6114:27;;;;;;;;;;;;;;;;6107:34;;5973:176;;;;:::o;18917:28::-;;;;:::o;18630:63::-;;;;:::o;18883:27::-;;;;:::o;22055:1092::-;1022:12;:10;:12::i;:::-;1011:23;;:7;:5;:7::i;:::-;:23;;;1003:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22184:35:::1;22255:42;22184:124;;22339:16;22321:15;;:34;;;;;;;;;;;;;;;;;;22366:58;22400:16;22419:4;22366:25;:58::i;:::-;22435:64;22452:4;22467:15;;;;;;;;;;;22485:13;:11;:13::i;:::-;22435:8;:64::i;:::-;22574:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22556:70;;;22635:4;22642:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22556:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22540:13;;:126;;;;;;;;;;;;;;;;;;22677:55;22711:13;;;;;;;;;;;22727:4;22677:25;:55::i;:::-;22743:58;22780:13;;;;;;;;;;;22796:4;22743:28;:58::i;:::-;22814:15;;;;;;;;;;;:31;;;22853:9;22886:4;22922:13;:11;:13::i;:::-;22970:1;23013::::0;23056:7:::1;:5;:7::i;:::-;23113:15;22814:325;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22106:1041;22055:1092::o:0;1700:238::-;1022:12;:10;:12::i;:::-;1011:23;;:7;:5;:7::i;:::-;:23;;;1003:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1823:1:::1;1803:22;;:8;:22;;::::0;1781:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1902:28;1921:8;1902:18;:28::i;:::-;1700:238:::0;:::o;18700:53::-;;;;:::o;112:98::-;165:7;192:10;185:17;;112:98;:::o;9600:380::-;9753:1;9736:19;;:5;:19;;;9728:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9834:1;9815:21;;:7;:21;;;9807:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9918:6;9888:11;:18;9900:5;9888:18;;;;;;;;;;;;;;;:27;9907:7;9888:27;;;;;;;;;;;;;;;:36;;;;9956:7;9940:32;;9949:5;9940:32;;;9965:6;9940:32;;;;;;:::i;:::-;;;;;;;;9600:380;;;:::o;23634:3339::-;23782:1;23766:18;;:4;:18;;;23758:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23859:1;23845:16;;:2;:16;;;23837:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23929:1;23920:6;:10;23912:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23991:14;;;;;;;;;;;23987:1699;;;24052:7;:5;:7::i;:::-;24044:15;;:4;:15;;;;:49;;;;;24086:7;:5;:7::i;:::-;24080:13;;:2;:13;;;;24044:49;:86;;;;;24128:1;24114:16;;:2;:16;;;;24044:86;:128;;;;;24165:6;24151:21;;:2;:21;;;;24044:128;:158;;;;;24194:8;;;;;;;;;;;24193:9;24044:158;24022:1653;;;24242:13;;;;;;;;;;;24237:228;;24314:19;:25;24334:4;24314:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;24343:19;:23;24363:2;24343:23;;;;;;;;;;;;;;;;;;;;;;;;;24314:52;24280:165;;;;;;;;;;;;:::i;:::-;;;;;;;;;24237:228;24539:25;:31;24565:4;24539:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;24596:31;:35;24628:2;24596:35;;;;;;;;;;;;;;;;;;;;;;;;;24595:36;24539:92;24513:1147;;;24718:20;;24708:6;:30;;24674:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;24926:9;;24909:13;24919:2;24909:9;:13::i;:::-;24900:6;:22;;;;:::i;:::-;:35;;24866:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;24513:1147;;;25104:25;:29;25130:2;25104:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;25159:31;:37;25191:4;25159:37;;;;;;;;;;;;;;;;;;;;;;;;;25158:38;25104:92;25078:582;;;25283:20;;25273:6;:30;;25239:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;25078:582;;;25440:31;:35;25472:2;25440:35;;;;;;;;;;;;;;;;;;;;;;;;;25435:225;;25560:9;;25543:13;25553:2;25543:9;:13::i;:::-;25534:6;:22;;;;:::i;:::-;:35;;25500:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;25435:225;25078:582;24513:1147;24022:1653;23987:1699;25716:11;;;;;;;;;;;:55;;;;;25763:8;;;;;;;;;;;25762:9;25716:55;:123;;;;;25808:25;:31;25834:4;25808:31;;;;;;;;;;;;;;;;;;;;;;;;;25807:32;25716:123;:185;;;;;25876:19;:25;25896:4;25876:25;;;;;;;;;;;;;;;;;;;;;;;;;25875:26;25716:185;:245;;;;;25938:19;:23;25958:2;25938:23;;;;;;;;;;;;;;;;;;;;;;;;;25937:24;25716:245;25698:392;;;26018:4;26007:8;;:15;;;;;;;;;;;;;;;;;;26037:10;:8;:10::i;:::-;26073:5;26062:8;;:16;;;;;;;;;;;;;;;;;;25698:392;26102:12;26118:8;;;;;;;;;;;26117:9;26102:24;;26228:19;:25;26248:4;26228:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;26257:19;:23;26277:2;26257:23;;;;;;;;;;;;;;;;;;;;;;;;;26228:52;26224:100;;;26307:5;26297:15;;26224:100;26336:12;26441:7;26437:485;;;26493:25;:29;26519:2;26493:29;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;26537:1;26526:8;;:12;26493:45;26489:286;;;26566:29;26591:3;26566:20;26577:8;;26566:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;26559:36;;26489:286;;;26657:25;:31;26683:4;26657:31;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;26702:1;26692:7;;:11;26657:46;26653:122;;;26731:28;26755:3;26731:19;26742:7;;26731:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;26724:35;;26653:122;26489:286;26802:1;26795:4;:8;26791:91;;;26824:42;26840:4;26854;26861;26824:15;:42::i;:::-;26791:91;26906:4;26896:14;;;;;:::i;:::-;;;26437:485;26932:33;26948:4;26954:2;26958:6;26932:15;:33::i;:::-;23747:3226;;23634:3339;;;:::o;2098:191::-;2172:16;2191:6;;;;;;;;;;;2172:25;;2217:8;2208:6;;:17;;;;;;;;;;;;;;;;;;2272:8;2241:40;;2262:8;2241:40;;;;;;;;;;;;2161:128;2098:191;:::o;23155:130::-;23272:5;23238:25;:31;23264:4;23238:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23155:130;;:::o;27574:905::-;27613:23;27639:24;27657:4;27639:9;:24::i;:::-;27613:50;;27674:12;27720:1;27701:15;:20;27697:59;;27738:7;;;;27697:59;27789:18;;27770:15;:37;27766:706;;27824:26;27853:18;;27824:47;;27886:36;27903:18;27886:16;:36::i;:::-;27937:23;27963:21;27937:47;;27999:25;28027:81;28104:3;28027:54;28065:15;;28027;:37;;:54;;;;:::i;:::-;:76;;:81;;;;:::i;:::-;27999:109;;28123:19;28145:38;28165:17;28145:15;:19;;:38;;;;:::i;:::-;28123:60;;28220:15;;;;;;;;;;;28212:29;;28267:17;28212:91;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28198:105;;;;;28340:9;;;;;;;;;;;28332:23;;28363:11;28332:47;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28318:61;;;;;28399;28415:18;28435:15;28452:7;28399:61;;;;;;;;:::i;:::-;;;;;;;;27809:663;;;;27766:706;27602:877;;27574:905;:::o;11962:98::-;12020:7;12051:1;12047;:5;;;;:::i;:::-;12040:12;;11962:98;;;;:::o;12068:::-;12126:7;12157:1;12153;:5;;;;:::i;:::-;12146:12;;12068:98;;;;:::o;7816:770::-;7974:1;7956:20;;:6;:20;;;7948:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8058:1;8037:23;;:9;:23;;;8029:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8113:47;8134:6;8142:9;8153:6;8113:20;:47::i;:::-;8173:21;8197:9;:17;8207:6;8197:17;;;;;;;;;;;;;;;;8173:41;;8264:6;8247:13;:23;;8225:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;8408:6;8392:13;:22;8372:9;:17;8382:6;8372:17;;;;;;;;;;;;;;;:42;;;;8460:6;8436:9;:20;8446:9;8436:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8501:9;8484:35;;8493:6;8484:35;;;8512:6;8484:35;;;;;;:::i;:::-;;;;;;;;8532:46;8552:6;8560:9;8571:6;8532:19;:46::i;:::-;7937:649;7816:770;;;:::o;26981:585::-;27107:21;27145:1;27131:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27107:40;;27176:4;27158;27163:1;27158:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27202:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27192:4;27197:1;27192:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27235:62;27252:4;27267:15;;;;;;;;;;;27285:11;27235:8;:62::i;:::-;27334:15;;;;;;;;;;;:66;;;27415:11;27441:1;27485:4;27512;27532:15;27334:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27036:530;26981:585;:::o;11856:98::-;11914:7;11945:1;11941;:5;;;;:::i;:::-;11934:12;;11856:98;;;;:::o;9988:125::-;;;;:::o;10121:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:474::-;5179:6;5187;5236:2;5224:9;5215:7;5211:23;5207:32;5204:119;;;5242:79;;:::i;:::-;5204:119;5362:1;5387:53;5432:7;5423:6;5412:9;5408:22;5387:53;:::i;:::-;5377:63;;5333:117;5489:2;5515:53;5560:7;5551:6;5540:9;5536:22;5515:53;:::i;:::-;5505:63;;5460:118;5111:474;;;;;:::o;5591:619::-;5668:6;5676;5684;5733:2;5721:9;5712:7;5708:23;5704:32;5701:119;;;5739:79;;:::i;:::-;5701:119;5859:1;5884:53;5929:7;5920:6;5909:9;5905:22;5884:53;:::i;:::-;5874:63;;5830:117;5986:2;6012:53;6057:7;6048:6;6037:9;6033:22;6012:53;:::i;:::-;6002:63;;5957:118;6114:2;6140:53;6185:7;6176:6;6165:9;6161:22;6140:53;:::i;:::-;6130:63;;6085:118;5591:619;;;;;:::o;6216:474::-;6284:6;6292;6341:2;6329:9;6320:7;6316:23;6312:32;6309:119;;;6347:79;;:::i;:::-;6309:119;6467:1;6492:53;6537:7;6528:6;6517:9;6513:22;6492:53;:::i;:::-;6482:63;;6438:117;6594:2;6620:53;6665:7;6656:6;6645:9;6641:22;6620:53;:::i;:::-;6610:63;;6565:118;6216:474;;;;;:::o;6696:118::-;6783:24;6801:5;6783:24;:::i;:::-;6778:3;6771:37;6696:118;;:::o;6820:222::-;6913:4;6951:2;6940:9;6936:18;6928:26;;6964:71;7032:1;7021:9;7017:17;7008:6;6964:71;:::i;:::-;6820:222;;;;:::o;7048:86::-;7083:7;7123:4;7116:5;7112:16;7101:27;;7048:86;;;:::o;7140:112::-;7223:22;7239:5;7223:22;:::i;:::-;7218:3;7211:35;7140:112;;:::o;7258:214::-;7347:4;7385:2;7374:9;7370:18;7362:26;;7398:67;7462:1;7451:9;7447:17;7438:6;7398:67;:::i;:::-;7258:214;;;;:::o;7478:116::-;7548:21;7563:5;7548:21;:::i;:::-;7541:5;7538:32;7528:60;;7584:1;7581;7574:12;7528:60;7478:116;:::o;7600:133::-;7643:5;7681:6;7668:20;7659:29;;7697:30;7721:5;7697:30;:::i;:::-;7600:133;;;;:::o;7739:468::-;7804:6;7812;7861:2;7849:9;7840:7;7836:23;7832:32;7829:119;;;7867:79;;:::i;:::-;7829:119;7987:1;8012:53;8057:7;8048:6;8037:9;8033:22;8012:53;:::i;:::-;8002:63;;7958:117;8114:2;8140:50;8182:7;8173:6;8162:9;8158:22;8140:50;:::i;:::-;8130:60;;8085:115;7739:468;;;;;:::o;8213:323::-;8269:6;8318:2;8306:9;8297:7;8293:23;8289:32;8286:119;;;8324:79;;:::i;:::-;8286:119;8444:1;8469:50;8511:7;8502:6;8491:9;8487:22;8469:50;:::i;:::-;8459:60;;8415:114;8213:323;;;;:::o;8542:110::-;8593:7;8622:24;8640:5;8622:24;:::i;:::-;8611:35;;8542:110;;;:::o;8658:150::-;8745:38;8777:5;8745:38;:::i;:::-;8738:5;8735:49;8725:77;;8798:1;8795;8788:12;8725:77;8658:150;:::o;8814:167::-;8874:5;8912:6;8899:20;8890:29;;8928:47;8969:5;8928:47;:::i;:::-;8814:167;;;;:::o;8987:357::-;9060:6;9109:2;9097:9;9088:7;9084:23;9080:32;9077:119;;;9115:79;;:::i;:::-;9077:119;9235:1;9260:67;9319:7;9310:6;9299:9;9295:22;9260:67;:::i;:::-;9250:77;;9206:131;8987:357;;;;:::o;9350:180::-;9398:77;9395:1;9388:88;9495:4;9492:1;9485:15;9519:4;9516:1;9509:15;9536:320;9580:6;9617:1;9611:4;9607:12;9597:22;;9664:1;9658:4;9654:12;9685:18;9675:81;;9741:4;9733:6;9729:17;9719:27;;9675:81;9803:2;9795:6;9792:14;9772:18;9769:38;9766:84;;9822:18;;:::i;:::-;9766:84;9587:269;9536:320;;;:::o;9862:182::-;10002:34;9998:1;9990:6;9986:14;9979:58;9862:182;:::o;10050:366::-;10192:3;10213:67;10277:2;10272:3;10213:67;:::i;:::-;10206:74;;10289:93;10378:3;10289:93;:::i;:::-;10407:2;10402:3;10398:12;10391:19;;10050:366;;;:::o;10422:419::-;10588:4;10626:2;10615:9;10611:18;10603:26;;10675:9;10669:4;10665:20;10661:1;10650:9;10646:17;10639:47;10703:131;10829:4;10703:131;:::i;:::-;10695:139;;10422:419;;;:::o;10847:227::-;10987:34;10983:1;10975:6;10971:14;10964:58;11056:10;11051:2;11043:6;11039:15;11032:35;10847:227;:::o;11080:366::-;11222:3;11243:67;11307:2;11302:3;11243:67;:::i;:::-;11236:74;;11319:93;11408:3;11319:93;:::i;:::-;11437:2;11432:3;11428:12;11421:19;;11080:366;;;:::o;11452:419::-;11618:4;11656:2;11645:9;11641:18;11633:26;;11705:9;11699:4;11695:20;11691:1;11680:9;11676:17;11669:47;11733:131;11859:4;11733:131;:::i;:::-;11725:139;;11452:419;;;:::o;11877:180::-;11925:77;11922:1;11915:88;12022:4;12019:1;12012:15;12046:4;12043:1;12036:15;12063:191;12103:3;12122:20;12140:1;12122:20;:::i;:::-;12117:25;;12156:20;12174:1;12156:20;:::i;:::-;12151:25;;12199:1;12196;12192:9;12185:16;;12220:3;12217:1;12214:10;12211:36;;;12227:18;;:::i;:::-;12211:36;12063:191;;;;:::o;12260:170::-;12400:22;12396:1;12388:6;12384:14;12377:46;12260:170;:::o;12436:366::-;12578:3;12599:67;12663:2;12658:3;12599:67;:::i;:::-;12592:74;;12675:93;12764:3;12675:93;:::i;:::-;12793:2;12788:3;12784:12;12777:19;;12436:366;;;:::o;12808:419::-;12974:4;13012:2;13001:9;12997:18;12989:26;;13061:9;13055:4;13051:20;13047:1;13036:9;13032:17;13025:47;13089:131;13215:4;13089:131;:::i;:::-;13081:139;;12808:419;;;:::o;13233:244::-;13373:34;13369:1;13361:6;13357:14;13350:58;13442:27;13437:2;13429:6;13425:15;13418:52;13233:244;:::o;13483:366::-;13625:3;13646:67;13710:2;13705:3;13646:67;:::i;:::-;13639:74;;13722:93;13811:3;13722:93;:::i;:::-;13840:2;13835:3;13831:12;13824:19;;13483:366;;;:::o;13855:419::-;14021:4;14059:2;14048:9;14044:18;14036:26;;14108:9;14102:4;14098:20;14094:1;14083:9;14079:17;14072:47;14136:131;14262:4;14136:131;:::i;:::-;14128:139;;13855:419;;;:::o;14280:143::-;14337:5;14368:6;14362:13;14353:22;;14384:33;14411:5;14384:33;:::i;:::-;14280:143;;;;:::o;14429:351::-;14499:6;14548:2;14536:9;14527:7;14523:23;14519:32;14516:119;;;14554:79;;:::i;:::-;14516:119;14674:1;14699:64;14755:7;14746:6;14735:9;14731:22;14699:64;:::i;:::-;14689:74;;14645:128;14429:351;;;;:::o;14786:171::-;14926:23;14922:1;14914:6;14910:14;14903:47;14786:171;:::o;14963:366::-;15105:3;15126:67;15190:2;15185:3;15126:67;:::i;:::-;15119:74;;15202:93;15291:3;15202:93;:::i;:::-;15320:2;15315:3;15311:12;15304:19;;14963:366;;;:::o;15335:419::-;15501:4;15539:2;15528:9;15524:18;15516:26;;15588:9;15582:4;15578:20;15574:1;15563:9;15559:17;15552:47;15616:131;15742:4;15616:131;:::i;:::-;15608:139;;15335:419;;;:::o;15760:332::-;15881:4;15919:2;15908:9;15904:18;15896:26;;15932:71;16000:1;15989:9;15985:17;15976:6;15932:71;:::i;:::-;16013:72;16081:2;16070:9;16066:18;16057:6;16013:72;:::i;:::-;15760:332;;;;;:::o;16098:137::-;16152:5;16183:6;16177:13;16168:22;;16199:30;16223:5;16199:30;:::i;:::-;16098:137;;;;:::o;16241:345::-;16308:6;16357:2;16345:9;16336:7;16332:23;16328:32;16325:119;;;16363:79;;:::i;:::-;16325:119;16483:1;16508:61;16561:7;16552:6;16541:9;16537:22;16508:61;:::i;:::-;16498:71;;16454:125;16241:345;;;;:::o;16592:171::-;16732:23;16728:1;16720:6;16716:14;16709:47;16592:171;:::o;16769:366::-;16911:3;16932:67;16996:2;16991:3;16932:67;:::i;:::-;16925:74;;17008:93;17097:3;17008:93;:::i;:::-;17126:2;17121:3;17117:12;17110:19;;16769:366;;;:::o;17141:419::-;17307:4;17345:2;17334:9;17330:18;17322:26;;17394:9;17388:4;17384:20;17380:1;17369:9;17365:17;17358:47;17422:131;17548:4;17422:131;:::i;:::-;17414:139;;17141:419;;;:::o;17566:224::-;17706:34;17702:1;17694:6;17690:14;17683:58;17775:7;17770:2;17762:6;17758:15;17751:32;17566:224;:::o;17796:366::-;17938:3;17959:67;18023:2;18018:3;17959:67;:::i;:::-;17952:74;;18035:93;18124:3;18035:93;:::i;:::-;18153:2;18148:3;18144:12;18137:19;;17796:366;;;:::o;18168:419::-;18334:4;18372:2;18361:9;18357:18;18349:26;;18421:9;18415:4;18411:20;18407:1;18396:9;18392:17;18385:47;18449:131;18575:4;18449:131;:::i;:::-;18441:139;;18168:419;;;:::o;18593:143::-;18650:5;18681:6;18675:13;18666:22;;18697:33;18724:5;18697:33;:::i;:::-;18593:143;;;;:::o;18742:351::-;18812:6;18861:2;18849:9;18840:7;18836:23;18832:32;18829:119;;;18867:79;;:::i;:::-;18829:119;18987:1;19012:64;19068:7;19059:6;19048:9;19044:22;19012:64;:::i;:::-;19002:74;;18958:128;18742:351;;;;:::o;19099:332::-;19220:4;19258:2;19247:9;19243:18;19235:26;;19271:71;19339:1;19328:9;19324:17;19315:6;19271:71;:::i;:::-;19352:72;19420:2;19409:9;19405:18;19396:6;19352:72;:::i;:::-;19099:332;;;;;:::o;19437:85::-;19482:7;19511:5;19500:16;;19437:85;;;:::o;19528:158::-;19586:9;19619:61;19637:42;19646:32;19672:5;19646:32;:::i;:::-;19637:42;:::i;:::-;19619:61;:::i;:::-;19606:74;;19528:158;;;:::o;19692:147::-;19787:45;19826:5;19787:45;:::i;:::-;19782:3;19775:58;19692:147;;:::o;19845:807::-;20094:4;20132:3;20121:9;20117:19;20109:27;;20146:71;20214:1;20203:9;20199:17;20190:6;20146:71;:::i;:::-;20227:72;20295:2;20284:9;20280:18;20271:6;20227:72;:::i;:::-;20309:80;20385:2;20374:9;20370:18;20361:6;20309:80;:::i;:::-;20399;20475:2;20464:9;20460:18;20451:6;20399:80;:::i;:::-;20489:73;20557:3;20546:9;20542:19;20533:6;20489:73;:::i;:::-;20572;20640:3;20629:9;20625:19;20616:6;20572:73;:::i;:::-;19845:807;;;;;;;;;:::o;20658:663::-;20746:6;20754;20762;20811:2;20799:9;20790:7;20786:23;20782:32;20779:119;;;20817:79;;:::i;:::-;20779:119;20937:1;20962:64;21018:7;21009:6;20998:9;20994:22;20962:64;:::i;:::-;20952:74;;20908:128;21075:2;21101:64;21157:7;21148:6;21137:9;21133:22;21101:64;:::i;:::-;21091:74;;21046:129;21214:2;21240:64;21296:7;21287:6;21276:9;21272:22;21240:64;:::i;:::-;21230:74;;21185:129;20658:663;;;;;:::o;21327:225::-;21467:34;21463:1;21455:6;21451:14;21444:58;21536:8;21531:2;21523:6;21519:15;21512:33;21327:225;:::o;21558:366::-;21700:3;21721:67;21785:2;21780:3;21721:67;:::i;:::-;21714:74;;21797:93;21886:3;21797:93;:::i;:::-;21915:2;21910:3;21906:12;21899:19;;21558:366;;;:::o;21930:419::-;22096:4;22134:2;22123:9;22119:18;22111:26;;22183:9;22177:4;22173:20;22169:1;22158:9;22154:17;22147:47;22211:131;22337:4;22211:131;:::i;:::-;22203:139;;21930:419;;;:::o;22355:223::-;22495:34;22491:1;22483:6;22479:14;22472:58;22564:6;22559:2;22551:6;22547:15;22540:31;22355:223;:::o;22584:366::-;22726:3;22747:67;22811:2;22806:3;22747:67;:::i;:::-;22740:74;;22823:93;22912:3;22823:93;:::i;:::-;22941:2;22936:3;22932:12;22925:19;;22584:366;;;:::o;22956:419::-;23122:4;23160:2;23149:9;23145:18;23137:26;;23209:9;23203:4;23199:20;23195:1;23184:9;23180:17;23173:47;23237:131;23363:4;23237:131;:::i;:::-;23229:139;;22956:419;;;:::o;23381:221::-;23521:34;23517:1;23509:6;23505:14;23498:58;23590:4;23585:2;23577:6;23573:15;23566:29;23381:221;:::o;23608:366::-;23750:3;23771:67;23835:2;23830:3;23771:67;:::i;:::-;23764:74;;23847:93;23936:3;23847:93;:::i;:::-;23965:2;23960:3;23956:12;23949:19;;23608:366;;;:::o;23980:419::-;24146:4;24184:2;24173:9;24169:18;24161:26;;24233:9;24227:4;24223:20;24219:1;24208:9;24204:17;24197:47;24261:131;24387:4;24261:131;:::i;:::-;24253:139;;23980:419;;;:::o;24405:224::-;24545:34;24541:1;24533:6;24529:14;24522:58;24614:7;24609:2;24601:6;24597:15;24590:32;24405:224;:::o;24635:366::-;24777:3;24798:67;24862:2;24857:3;24798:67;:::i;:::-;24791:74;;24874:93;24963:3;24874:93;:::i;:::-;24992:2;24987:3;24983:12;24976:19;;24635:366;;;:::o;25007:419::-;25173:4;25211:2;25200:9;25196:18;25188:26;;25260:9;25254:4;25250:20;25246:1;25235:9;25231:17;25224:47;25288:131;25414:4;25288:131;:::i;:::-;25280:139;;25007:419;;;:::o;25432:222::-;25572:34;25568:1;25560:6;25556:14;25549:58;25641:5;25636:2;25628:6;25624:15;25617:30;25432:222;:::o;25660:366::-;25802:3;25823:67;25887:2;25882:3;25823:67;:::i;:::-;25816:74;;25899:93;25988:3;25899:93;:::i;:::-;26017:2;26012:3;26008:12;26001:19;;25660:366;;;:::o;26032:419::-;26198:4;26236:2;26225:9;26221:18;26213:26;;26285:9;26279:4;26275:20;26271:1;26260:9;26256:17;26249:47;26313:131;26439:4;26313:131;:::i;:::-;26305:139;;26032:419;;;:::o;26457:228::-;26597:34;26593:1;26585:6;26581:14;26574:58;26666:11;26661:2;26653:6;26649:15;26642:36;26457:228;:::o;26691:366::-;26833:3;26854:67;26918:2;26913:3;26854:67;:::i;:::-;26847:74;;26930:93;27019:3;26930:93;:::i;:::-;27048:2;27043:3;27039:12;27032:19;;26691:366;;;:::o;27063:419::-;27229:4;27267:2;27256:9;27252:18;27244:26;;27316:9;27310:4;27306:20;27302:1;27291:9;27287:17;27280:47;27344:131;27470:4;27344:131;:::i;:::-;27336:139;;27063:419;;;:::o;27488:177::-;27628:29;27624:1;27616:6;27612:14;27605:53;27488:177;:::o;27671:366::-;27813:3;27834:67;27898:2;27893:3;27834:67;:::i;:::-;27827:74;;27910:93;27999:3;27910:93;:::i;:::-;28028:2;28023:3;28019:12;28012:19;;27671:366;;;:::o;28043:419::-;28209:4;28247:2;28236:9;28232:18;28224:26;;28296:9;28290:4;28286:20;28282:1;28271:9;28267:17;28260:47;28324:131;28450:4;28324:131;:::i;:::-;28316:139;;28043:419;;;:::o;28468:240::-;28608:34;28604:1;28596:6;28592:14;28585:58;28677:23;28672:2;28664:6;28660:15;28653:48;28468:240;:::o;28714:366::-;28856:3;28877:67;28941:2;28936:3;28877:67;:::i;:::-;28870:74;;28953:93;29042:3;28953:93;:::i;:::-;29071:2;29066:3;29062:12;29055:19;;28714:366;;;:::o;29086:419::-;29252:4;29290:2;29279:9;29275:18;29267:26;;29339:9;29333:4;29329:20;29325:1;29314:9;29310:17;29303:47;29367:131;29493:4;29367:131;:::i;:::-;29359:139;;29086:419;;;:::o;29511:169::-;29651:21;29647:1;29639:6;29635:14;29628:45;29511:169;:::o;29686:366::-;29828:3;29849:67;29913:2;29908:3;29849:67;:::i;:::-;29842:74;;29925:93;30014:3;29925:93;:::i;:::-;30043:2;30038:3;30034:12;30027:19;;29686:366;;;:::o;30058:419::-;30224:4;30262:2;30251:9;30247:18;30239:26;;30311:9;30305:4;30301:20;30297:1;30286:9;30282:17;30275:47;30339:131;30465:4;30339:131;:::i;:::-;30331:139;;30058:419;;;:::o;30483:241::-;30623:34;30619:1;30611:6;30607:14;30600:58;30692:24;30687:2;30679:6;30675:15;30668:49;30483:241;:::o;30730:366::-;30872:3;30893:67;30957:2;30952:3;30893:67;:::i;:::-;30886:74;;30969:93;31058:3;30969:93;:::i;:::-;31087:2;31082:3;31078:12;31071:19;;30730:366;;;:::o;31102:419::-;31268:4;31306:2;31295:9;31291:18;31283:26;;31355:9;31349:4;31345:20;31341:1;31330:9;31326:17;31319:47;31383:131;31509:4;31383:131;:::i;:::-;31375:139;;31102:419;;;:::o;31527:194::-;31567:4;31587:20;31605:1;31587:20;:::i;:::-;31582:25;;31621:20;31639:1;31621:20;:::i;:::-;31616:25;;31665:1;31662;31658:9;31650:17;;31689:1;31683:4;31680:11;31677:37;;;31694:18;;:::i;:::-;31677:37;31527:194;;;;:::o;31727:147::-;31828:11;31865:3;31850:18;;31727:147;;;;:::o;31880:114::-;;:::o;32000:398::-;32159:3;32180:83;32261:1;32256:3;32180:83;:::i;:::-;32173:90;;32272:93;32361:3;32272:93;:::i;:::-;32390:1;32385:3;32381:11;32374:18;;32000:398;;;:::o;32404:379::-;32588:3;32610:147;32753:3;32610:147;:::i;:::-;32603:154;;32774:3;32767:10;;32404:379;;;:::o;32789:430::-;32932:4;32970:2;32959:9;32955:18;32947:26;;32983:71;33051:1;33040:9;33036:17;33027:6;32983:71;:::i;:::-;33064:72;33132:2;33121:9;33117:18;33108:6;33064:72;:::i;:::-;33146:66;33208:2;33197:9;33193:18;33184:6;33146:66;:::i;:::-;32789:430;;;;;;:::o;33225:410::-;33265:7;33288:20;33306:1;33288:20;:::i;:::-;33283:25;;33322:20;33340:1;33322:20;:::i;:::-;33317:25;;33377:1;33374;33370:9;33399:30;33417:11;33399:30;:::i;:::-;33388:41;;33578:1;33569:7;33565:15;33562:1;33559:22;33539:1;33532:9;33512:83;33489:139;;33608:18;;:::i;:::-;33489:139;33273:362;33225:410;;;;:::o;33641:180::-;33689:77;33686:1;33679:88;33786:4;33783:1;33776:15;33810:4;33807:1;33800:15;33827:185;33867:1;33884:20;33902:1;33884:20;:::i;:::-;33879:25;;33918:20;33936:1;33918:20;:::i;:::-;33913:25;;33957:1;33947:35;;33962:18;;:::i;:::-;33947:35;34004:1;34001;33997:9;33992:14;;33827:185;;;;:::o;34018:225::-;34158:34;34154:1;34146:6;34142:14;34135:58;34227:8;34222:2;34214:6;34210:15;34203:33;34018:225;:::o;34249:366::-;34391:3;34412:67;34476:2;34471:3;34412:67;:::i;:::-;34405:74;;34488:93;34577:3;34488:93;:::i;:::-;34606:2;34601:3;34597:12;34590:19;;34249:366;;;:::o;34621:419::-;34787:4;34825:2;34814:9;34810:18;34802:26;;34874:9;34868:4;34864:20;34860:1;34849:9;34845:17;34838:47;34902:131;35028:4;34902:131;:::i;:::-;34894:139;;34621:419;;;:::o;35046:180::-;35094:77;35091:1;35084:88;35191:4;35188:1;35181:15;35215:4;35212:1;35205:15;35232:180;35280:77;35277:1;35270:88;35377:4;35374:1;35367:15;35401:4;35398:1;35391:15;35418:114;35485:6;35519:5;35513:12;35503:22;;35418:114;;;:::o;35538:184::-;35637:11;35671:6;35666:3;35659:19;35711:4;35706:3;35702:14;35687:29;;35538:184;;;;:::o;35728:132::-;35795:4;35818:3;35810:11;;35848:4;35843:3;35839:14;35831:22;;35728:132;;;:::o;35866:108::-;35943:24;35961:5;35943:24;:::i;:::-;35938:3;35931:37;35866:108;;:::o;35980:179::-;36049:10;36070:46;36112:3;36104:6;36070:46;:::i;:::-;36148:4;36143:3;36139:14;36125:28;;35980:179;;;;:::o;36165:113::-;36235:4;36267;36262:3;36258:14;36250:22;;36165:113;;;:::o;36314:732::-;36433:3;36462:54;36510:5;36462:54;:::i;:::-;36532:86;36611:6;36606:3;36532:86;:::i;:::-;36525:93;;36642:56;36692:5;36642:56;:::i;:::-;36721:7;36752:1;36737:284;36762:6;36759:1;36756:13;36737:284;;;36838:6;36832:13;36865:63;36924:3;36909:13;36865:63;:::i;:::-;36858:70;;36951:60;37004:6;36951:60;:::i;:::-;36941:70;;36797:224;36784:1;36781;36777:9;36772:14;;36737:284;;;36741:14;37037:3;37030:10;;36438:608;;;36314:732;;;;:::o;37052:831::-;37315:4;37353:3;37342:9;37338:19;37330:27;;37367:71;37435:1;37424:9;37420:17;37411:6;37367:71;:::i;:::-;37448:80;37524:2;37513:9;37509:18;37500:6;37448:80;:::i;:::-;37575:9;37569:4;37565:20;37560:2;37549:9;37545:18;37538:48;37603:108;37706:4;37697:6;37603:108;:::i;:::-;37595:116;;37721:72;37789:2;37778:9;37774:18;37765:6;37721:72;:::i;:::-;37803:73;37871:3;37860:9;37856:19;37847:6;37803:73;:::i;:::-;37052:831;;;;;;;;:::o

Swarm Source

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