ETH Price: $3,386.95 (+1.72%)

Token

Ox Chain ()
 

Overview

Max Total Supply

1,000,000,000 Ox Chain

Holders

283

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
599,808.93433610964240345 Ox Chain

Value
$0.00
0x7a0945E2fE67442284e20f4Ba8890B95076E898E
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:
Ox

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-01
*/

/* 

www.oxchain.vip
https://t.me/Ox_Chain
https://twitter.com/OxchainETH

*/


//SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

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

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

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

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

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

interface IERC20Metadata is IERC20 {
    /**
     * @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) internal _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

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

        emit Transfer(sender, recipient, amount);
    }

    /** This function will be used to generate the total supply
     * while deploying the contract
     *
     * This function can never be called again after deploying contract
     */
    function _tokengeneration(address account, uint256 amount)
        internal
        virtual
    {
        _totalSupply = amount;
        _balances[account] = amount;
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

library Address {
    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

    function WETH() external pure returns (address);

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

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

 contract Ox is ERC20, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

    bool private _interlock = false;
    bool private providingLiquidity = true;
    bool public tradingEnabled = false;

    uint256 private maxThreshold = 10000000 * 10**18; // 1%
    uint256 private minThrehold = 100000 * 10**18; // 0.01%
    
    uint256 public MaxTxAmount = 10000000 * 10**18; // 1%
    uint256 public MaxWalletSize = 20000000 * 10**18; // 2%
    
    address public marketingWallet = 0x1Bf03b3cFB9F3bdB1aEDEf827c89561F7817f786;
    address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
    }

    Taxes private taxes = Taxes(21, 0);
    Taxes private sellTaxes = Taxes(35, 0);

    uint256 public BuyTaxes = taxes.marketing + taxes.liquidity;
    uint256 public SellTaxes = sellTaxes.marketing + sellTaxes.liquidity;

    mapping(address => bool) public exemptFee;
    mapping(address => bool) private isearlybuyer;

    event MaxTxUpdated(uint256 MaxWalletSize, uint256 MaxTxAmount);
    event BuyTaxesUpdated(uint256 marketing,  uint256 liquidity);
    event SellTaxesUpdated(uint256 marketing, uint256 liquidity);
   
    modifier lockTheSwap() {
        if (!_interlock) {
            _interlock = true;
            _;
            _interlock = false;
        }
    }

    constructor() ERC20("Ox Chain", "0x") {
        _tokengeneration(msg.sender, 1000000000 * 10**decimals());
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this),_router.WETH());
        router = _router;
        pair = _pair;
        
        exemptFee[msg.sender] = true;
        exemptFee[address(this)] = true;
        exemptFee[marketingWallet] = true;
        exemptFee[deadWallet] = true;
    }

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

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

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

        return true;
    }

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

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

        return true;
    }

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
         require(!isearlybuyer[sender] && !isearlybuyer[recipient],
            "You can't transfer tokens"
        );
      
       if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }
        
        if (sender == pair && recipient != address(router) && !exemptFee[recipient] ) {
                require(amount <= MaxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(recipient) + amount <= MaxWalletSize, "Exceeds the maxWalletSize.");
                
            }
        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        Taxes memory currentTaxes;

        //set fee to zero if fees in contract are handled or exempted
        if (_interlock || exemptFee[sender] || exemptFee[recipient])
            fee = 0;

            //calculate fee
        else if (recipient == pair) {
            feeswap = sellTaxes.liquidity + sellTaxes.marketing;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (recipient != pair) {
            feeswap = taxes.liquidity + taxes.marketing;
            feesum = feeswap;
            currentTaxes = taxes;
        } 

        fee = (amount * feesum) / 100;

        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (providingLiquidity && sender != pair)
            Liquify(feeswap, currentTaxes);

        //rest to recipient
        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {
            //send the fee to the contract
            if (feeswap > 0) {
                uint256 feeAmount = (amount * feeswap) / 100;
                super._transfer(sender, address(this), feeAmount);
            }
        }
  }

    function Liquify(uint256 feeswap, Taxes memory swapTaxes) private lockTheSwap {
        if (feeswap == 0) {
            return;
        }

        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= minThrehold) {
            if (contractBalance > maxThreshold) {
            }

            // Split the contract balance into halves
            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) / denominator;
            uint256 initialBalance = address(this).balance;

            swapTokensForETH(contractBalance);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity;

            if (ethToAddLiquidityWith > 0) {
                // Add liquidity to pancake
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }

            uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing;
            if (marketingAmt > 0) {
                payable(marketingWallet).sendValue(marketingAmt);
            }
        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(router), tokenAmount);

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

    function updateLiquidityProvide(bool state) external onlyOwner {
        providingLiquidity = state;
    }

   
    function UpdateTreshhold(uint256 max_amount, uint256 min_amount) external onlyOwner {
        require(max_amount <= 200000000, "must keep max Threshold at 1% or less" );
        require(min_amount >= 200000000, "min Threshold must be greater than or equal to 0.01%");
        maxThreshold = max_amount * 10**decimals();
        minThrehold = min_amount * 10**decimals();
    }
    
    function updateBuyFee( uint256 _marketing, uint256 _liquidity) external onlyOwner {
        taxes.marketing = _marketing;
        taxes.liquidity = _liquidity;
     emit BuyTaxesUpdated(_marketing, _liquidity);
    }

    function updateSellFee( uint256 _marketing, uint256 _liquidity) external onlyOwner {
        sellTaxes.marketing = _marketing;
        sellTaxes.liquidity = _liquidity;
    emit SellTaxesUpdated(_marketing, _liquidity);
    }
   
     function setMaxTxLimit(uint256 _maxWallet, uint256 _maxTx) external onlyOwner {
        MaxWalletSize = _maxWallet * 10**decimals(); 
        MaxTxAmount = _maxTx * 10**decimals();
    require (_maxWallet >= 20000000, "Cannot set MaxWallet amount lower then 0.1%");
    require (_maxTx >= 20000000, "Cannot set MaxTx amount lower then 0.1%");
    emit MaxTxUpdated(_maxWallet, _maxTx);
    }
    
    function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Cannot re-enable trading");
        tradingEnabled = true;
    }
   
    function setMarketingWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0), "Fee Address cannot be zero address");
        require(newWallet != address(this), "Fee Address cannot be CA");
        exemptFee[newWallet] = true;
        marketingWallet = newWallet;
    }

      function multiBlockSniper(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            isearlybuyer[accounts[i]] = state;
        }
    }

    function blockSniper(address account, bool state) external onlyOwner {
        isearlybuyer[account] = state;
    }
   
    function excludeFromFee(address _address) external onlyOwner {
        exemptFee[_address] = true;
    }

    function includeInFee(address _address) external onlyOwner {
        exemptFee[_address] = false;
    }

    function rescueEHT() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        payable(owner()).transfer(contractETHBalance);
    }

    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        require(tokenAdd != address(this), "Owner can't claim contract's balance of its own tokens");
        IERC20(tokenAdd).transfer(owner(), amount);
    }

    // fallbacks
    receive() external payable {}
}

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":false,"internalType":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"BuyTaxesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"MaxWalletSize","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"MaxTxAmount","type":"uint256"}],"name":"MaxTxUpdated","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":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"SellTaxesUpdated","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":[],"name":"BuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"max_amount","type":"uint256"},{"internalType":"uint256","name":"min_amount","type":"uint256"}],"name":"UpdateTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"blockSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","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":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"multiBlockSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueEHT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWallet","type":"uint256"},{"internalType":"uint256","name":"_maxTx","type":"uint256"}],"name":"setMaxTxLimit","outputs":[],"stateMutability":"nonpayable","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":"tradingEnabled","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":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"updateBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"updateSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600760146101000a81548160ff0219169083151502179055506001600760156101000a81548160ff0219169083151502179055506000600760166101000a81548160ff0219169083151502179055506a084595161401484a00000060085569152d02c7e14af68000006009556a084595161401484a000000600a556a108b2a2c28029094000000600b55731bf03b3cfb9f3bdb1aedef827c89561f7817f786600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280601581526020016000815250600d600082015181600001556020820151816001015550506040518060400160405280602381526020016000815250600f60008201518160000155602082015181600101555050600d60010154600d600001546200015b9190620007cf565b601155600f60010154600f60000154620001769190620007cf565b6012553480156200018657600080fd5b506040518060400160405280600881526020017f4f7820436861696e0000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f3078000000000000000000000000000000000000000000000000000000000000815250816003908162000204919062000a7a565b50806004908162000216919062000a7a565b505050620002396200022d6200060960201b60201c565b6200061160201b60201c565b62000279336200024e620006d760201b60201c565b600a6200025c919062000cc2565b633b9aca006200026d919062000d13565b620006e060201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000306919062000dc8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200036e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000394919062000dc8565b6040518363ffffffff1660e01b8152600401620003b392919062000e0b565b6020604051808303816000875af1158015620003d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f9919062000dc8565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160136000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016013600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000e66565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b80600281905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200078a919062000e49565b60405180910390a35050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007dc8262000796565b9150620007e98362000796565b9250828201905080821115620008045762000803620007a0565b5b92915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200088c57607f821691505b602082108103620008a257620008a162000844565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200090c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620008cd565b620009188683620008cd565b95508019841693508086168417925050509392505050565b6000819050919050565b60006200095b620009556200094f8462000796565b62000930565b62000796565b9050919050565b6000819050919050565b62000977836200093a565b6200098f620009868262000962565b848454620008da565b825550505050565b600090565b620009a662000997565b620009b38184846200096c565b505050565b5b81811015620009db57620009cf6000826200099c565b600181019050620009b9565b5050565b601f82111562000a2a57620009f481620008a8565b620009ff84620008bd565b8101602085101562000a0f578190505b62000a2762000a1e85620008bd565b830182620009b8565b50505b505050565b600082821c905092915050565b600062000a4f6000198460080262000a2f565b1980831691505092915050565b600062000a6a838362000a3c565b9150826002028217905092915050565b62000a85826200080a565b67ffffffffffffffff81111562000aa15762000aa062000815565b5b62000aad825462000873565b62000aba828285620009df565b600060209050601f83116001811462000af2576000841562000add578287015190505b62000ae9858262000a5c565b86555062000b59565b601f19841662000b0286620008a8565b60005b8281101562000b2c5784890151825560018201915060208501945060208101905062000b05565b8683101562000b4c578489015162000b48601f89168262000a3c565b8355505b6001600288020188555050505b505050505050565b60008160011c9050919050565b6000808291508390505b600185111562000bc05780860481111562000b985762000b97620007a0565b5b600185161562000ba85780820291505b808102905062000bb88562000b61565b945062000b78565b94509492505050565b60008262000bdb576001905062000cae565b8162000beb576000905062000cae565b816001811462000c04576002811462000c0f5762000c45565b600191505062000cae565b60ff84111562000c245762000c23620007a0565b5b8360020a91508482111562000c3e5762000c3d620007a0565b5b5062000cae565b5060208310610133831016604e8410600b841016171562000c7f5782820a90508381111562000c795762000c78620007a0565b5b62000cae565b62000c8e848484600162000b6e565b9250905081840481111562000ca85762000ca7620007a0565b5b81810290505b9392505050565b600060ff82169050919050565b600062000ccf8262000796565b915062000cdc8362000cb5565b925062000d0b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000bc9565b905092915050565b600062000d208262000796565b915062000d2d8362000796565b925082820262000d3d8162000796565b9150828204841483151762000d575762000d56620007a0565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d908262000d63565b9050919050565b62000da28162000d83565b811462000dae57600080fd5b50565b60008151905062000dc28162000d97565b92915050565b60006020828403121562000de15762000de062000d5e565b5b600062000df18482850162000db1565b91505092915050565b62000e058162000d83565b82525050565b600060408201905062000e22600083018562000dfa565b62000e31602083018462000dfa565b9392505050565b62000e438162000796565b82525050565b600060208201905062000e60600083018462000e38565b92915050565b6148b88062000e766000396000f3fe60806040526004361061021e5760003560e01c80638a8c523c11610123578063ad3026e4116100ab578063e0eb9cb31161006f578063e0eb9cb3146107ca578063ea2f0b37146107f5578063f2fde38b1461081e578063f887ea4014610847578063fc962edb1461087257610225565b8063ad3026e4146106d3578063beffc7d4146106fc578063c5d32bb214610725578063d256413e14610762578063dd62ed3e1461078d57610225565b8063a1e71b57116100f2578063a1e71b57146105ee578063a40f0ce714610617578063a457c2d71461062e578063a8aa1b311461066b578063a9059cbb1461069657610225565b80638a8c523c146105585780638cd4426d1461056f5780638da5cb5b1461059857806395d89b41146105c357610225565b8063437823ec116101a6578063610e34b911610175578063610e34b91461048557806370a08231146104ae578063715018a6146104eb57806375f0a8741461050257806385141a771461052d57610225565b8063437823ec146103df5780634ada218b146104085780635ae34339146104335780635d098b381461045c57610225565b80631d5dace3116101ed5780631d5dace3146102e657806323b872dd1461030f57806329b8cff31461034c578063313ce5671461037757806339509351146103a257610225565b806306fdde031461022a578063095ea7b3146102555780631340538f1461029257806318160ddd146102bb57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f61089d565b60405161024c9190612fba565b60405180910390f35b34801561026157600080fd5b5061027c60048036038101906102779190613084565b61092f565b60405161028991906130df565b60405180910390f35b34801561029e57600080fd5b506102b960048036038101906102b49190613126565b61094d565b005b3480156102c757600080fd5b506102d06109e6565b6040516102dd9190613162565b60405180910390f35b3480156102f257600080fd5b5061030d6004803603810190610308919061317d565b6109f0565b005b34801561031b57600080fd5b50610336600480360381019061033191906131bd565b610b48565b60405161034391906130df565b60405180910390f35b34801561035857600080fd5b50610361610c49565b60405161036e9190613162565b60405180910390f35b34801561038357600080fd5b5061038c610c4f565b604051610399919061322c565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190613084565b610c58565b6040516103d691906130df565b60405180910390f35b3480156103eb57600080fd5b5061040660048036038101906104019190613247565b610d04565b005b34801561041457600080fd5b5061041d610ddb565b60405161042a91906130df565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190613274565b610dee565b005b34801561046857600080fd5b50610483600480360381019061047e9190613247565b610ec5565b005b34801561049157600080fd5b506104ac60048036038101906104a7919061317d565b6110ba565b005b3480156104ba57600080fd5b506104d560048036038101906104d09190613247565b611187565b6040516104e29190613162565b60405180910390f35b3480156104f757600080fd5b506105006111cf565b005b34801561050e57600080fd5b50610517611257565b60405161052491906132c3565b60405180910390f35b34801561053957600080fd5b5061054261127d565b60405161054f91906132c3565b60405180910390f35b34801561056457600080fd5b5061056d611283565b005b34801561057b57600080fd5b5061059660048036038101906105919190613084565b61136c565b005b3480156105a457600080fd5b506105ad6114e0565b6040516105ba91906132c3565b60405180910390f35b3480156105cf57600080fd5b506105d861150a565b6040516105e59190612fba565b60405180910390f35b3480156105fa57600080fd5b5061061560048036038101906106109190613426565b61159c565b005b34801561062357600080fd5b5061062c6116ad565b005b34801561063a57600080fd5b5061065560048036038101906106509190613084565b61177f565b60405161066291906130df565b60405180910390f35b34801561067757600080fd5b50610680611873565b60405161068d91906132c3565b60405180910390f35b3480156106a257600080fd5b506106bd60048036038101906106b89190613084565b611899565b6040516106ca91906130df565b60405180910390f35b3480156106df57600080fd5b506106fa60048036038101906106f5919061317d565b6118b0565b005b34801561070857600080fd5b50610723600480360381019061071e919061317d565b611a41565b005b34801561073157600080fd5b5061074c60048036038101906107479190613247565b611b0e565b60405161075991906130df565b60405180910390f35b34801561076e57600080fd5b50610777611b2e565b6040516107849190613162565b60405180910390f35b34801561079957600080fd5b506107b460048036038101906107af9190613482565b611b34565b6040516107c19190613162565b60405180910390f35b3480156107d657600080fd5b506107df611bbb565b6040516107ec9190613162565b60405180910390f35b34801561080157600080fd5b5061081c60048036038101906108179190613247565b611bc1565b005b34801561082a57600080fd5b5061084560048036038101906108409190613247565b611c98565b005b34801561085357600080fd5b5061085c611d8f565b6040516108699190613521565b60405180910390f35b34801561087e57600080fd5b50610887611db5565b6040516108949190613162565b60405180910390f35b6060600380546108ac9061356b565b80601f01602080910402602001604051908101604052809291908181526020018280546108d89061356b565b80156109255780601f106108fa57610100808354040283529160200191610925565b820191906000526020600020905b81548152906001019060200180831161090857829003601f168201915b5050505050905090565b600061094361093c611dbb565b8484611dc3565b6001905092915050565b610955611dbb565b73ffffffffffffffffffffffffffffffffffffffff166109736114e0565b73ffffffffffffffffffffffffffffffffffffffff16146109c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c0906135e8565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b6000600254905090565b6109f8611dbb565b73ffffffffffffffffffffffffffffffffffffffff16610a166114e0565b73ffffffffffffffffffffffffffffffffffffffff1614610a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a63906135e8565b60405180910390fd5b630bebc200821115610ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaa9061367a565b60405180910390fd5b630bebc200811015610afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af19061370c565b60405180910390fd5b610b02610c4f565b600a610b0e919061388e565b82610b1991906138d9565b600881905550610b27610c4f565b600a610b33919061388e565b81610b3e91906138d9565b6009819055505050565b6000610b55848484611f8c565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ba0611dbb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c179061398d565b60405180910390fd5b610c3d85610c2c611dbb565b8584610c3891906139ad565b611dc3565b60019150509392505050565b600b5481565b60006012905090565b6000610cfa610c65611dbb565b848460016000610c73611dbb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cf591906139e1565b611dc3565b6001905092915050565b610d0c611dbb565b73ffffffffffffffffffffffffffffffffffffffff16610d2a6114e0565b73ffffffffffffffffffffffffffffffffffffffff1614610d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d77906135e8565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600760169054906101000a900460ff1681565b610df6611dbb565b73ffffffffffffffffffffffffffffffffffffffff16610e146114e0565b73ffffffffffffffffffffffffffffffffffffffff1614610e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e61906135e8565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610ecd611dbb565b73ffffffffffffffffffffffffffffffffffffffff16610eeb6114e0565b73ffffffffffffffffffffffffffffffffffffffff1614610f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f38906135e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa790613a87565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361101e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101590613af3565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6110c2611dbb565b73ffffffffffffffffffffffffffffffffffffffff166110e06114e0565b73ffffffffffffffffffffffffffffffffffffffff1614611136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112d906135e8565b60405180910390fd5b81600d6000018190555080600d600101819055507fa2b219a42aa557965901397e42601390282bb6828cabbd7675dca50ba6aa62ca828260405161117b929190613b13565b60405180910390a15050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111d7611dbb565b73ffffffffffffffffffffffffffffffffffffffff166111f56114e0565b73ffffffffffffffffffffffffffffffffffffffff161461124b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611242906135e8565b60405180910390fd5b611255600061263f565b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61dead81565b61128b611dbb565b73ffffffffffffffffffffffffffffffffffffffff166112a96114e0565b73ffffffffffffffffffffffffffffffffffffffff16146112ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f6906135e8565b60405180910390fd5b600760169054906101000a900460ff161561134f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134690613b88565b60405180910390fd5b6001600760166101000a81548160ff021916908315150217905550565b611374611dbb565b73ffffffffffffffffffffffffffffffffffffffff166113926114e0565b73ffffffffffffffffffffffffffffffffffffffff16146113e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113df906135e8565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d90613c1a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61147a6114e0565b836040518363ffffffff1660e01b8152600401611498929190613c3a565b6020604051808303816000875af11580156114b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114db9190613c78565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546115199061356b565b80601f01602080910402602001604051908101604052809291908181526020018280546115459061356b565b80156115925780601f1061156757610100808354040283529160200191611592565b820191906000526020600020905b81548152906001019060200180831161157557829003601f168201915b5050505050905090565b6115a4611dbb565b73ffffffffffffffffffffffffffffffffffffffff166115c26114e0565b73ffffffffffffffffffffffffffffffffffffffff1614611618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160f906135e8565b60405180910390fd5b60005b82518110156116a857816014600085848151811061163c5761163b613ca5565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806116a090613cd4565b91505061161b565b505050565b6116b5611dbb565b73ffffffffffffffffffffffffffffffffffffffff166116d36114e0565b73ffffffffffffffffffffffffffffffffffffffff1614611729576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611720906135e8565b60405180910390fd5b60004790506117366114e0565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561177b573d6000803e3d6000fd5b5050565b6000806001600061178e611dbb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561184b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184290613d8e565b60405180910390fd5b611868611856611dbb565b85858461186391906139ad565b611dc3565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006118a6338484611f8c565b6001905092915050565b6118b8611dbb565b73ffffffffffffffffffffffffffffffffffffffff166118d66114e0565b73ffffffffffffffffffffffffffffffffffffffff161461192c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611923906135e8565b60405180910390fd5b611934610c4f565b600a611940919061388e565b8261194b91906138d9565b600b81905550611959610c4f565b600a611965919061388e565b8161197091906138d9565b600a819055506301312d008210156119bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b490613e20565b60405180910390fd5b6301312d00811015611a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fb90613eb2565b60405180910390fd5b7f202f4712f0dae21d708451caa16ed4b41cb5c9974ab3d34d1f1dc4dfc5a222db8282604051611a35929190613b13565b60405180910390a15050565b611a49611dbb565b73ffffffffffffffffffffffffffffffffffffffff16611a676114e0565b73ffffffffffffffffffffffffffffffffffffffff1614611abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab4906135e8565b60405180910390fd5b81600f6000018190555080600f600101819055507f7873124e0d91bc71776e2961704366640b879893d05157d7bfa606dd9e58227d8282604051611b02929190613b13565b60405180910390a15050565b60136020528060005260406000206000915054906101000a900460ff1681565b600a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60115481565b611bc9611dbb565b73ffffffffffffffffffffffffffffffffffffffff16611be76114e0565b73ffffffffffffffffffffffffffffffffffffffff1614611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c34906135e8565b60405180910390fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611ca0611dbb565b73ffffffffffffffffffffffffffffffffffffffff16611cbe6114e0565b73ffffffffffffffffffffffffffffffffffffffff1614611d14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0b906135e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7a90613f44565b60405180910390fd5b611d8c8161263f565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2990613fd6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9890614068565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f7f9190613162565b60405180910390a3505050565b60008111611fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc6906140fa565b60405180910390fd5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120735750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6120b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a990614166565b60405180910390fd5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121565750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121ab57600760169054906101000a900460ff166121aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a1906141d2565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156122565750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122ac5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561234f57600a548111156122f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ed9061423e565b60405180910390fd5b600b548161230384611187565b61230d91906139e1565b111561234e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612345906142aa565b60405180910390fd5b5b600080600061235c612f10565b600760149054906101000a900460ff16806123c05750601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806124145750601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124225760009150612550565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036124ba57600f60000154600f6001015461248d91906139e1565b9350839250600f60405180604001604052908160008201548152602001600182015481525050905061254f565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461254e57600d60000154600d6001015461252591906139e1565b9350839250600d6040518060400160405290816000820154815260200160018201548152505090505b5b5b6064838661255e91906138d9565b61256891906142f9565b9150600760159054906101000a900460ff1680156125d45750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b156125e4576125e38482612705565b5b6125fa878784886125f591906139ad565b612887565b60008211156126365760008411156126355760006064858761261c91906138d9565b61262691906142f9565b9050612633883083612887565b505b5b50505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612883576001600760146101000a81548160ff021916908315150217905550600082031561286757600061274830611187565b9050600954811061286557600060028461276291906138d9565b905060008184602001518461277791906138d9565b61278191906142f9565b9050600047905061279184612af9565b6000814761279f91906139ad565b905060008660200151856127b391906139ad565b826127be91906142f9565b905060008760200151826127d291906138d9565b905060008111156127e8576127e78582612d3c565b5b600088600001516002846127fc91906138d9565b61280691906138d9565b9050600081111561285d5761285c81600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612e1c90919063ffffffff16565b5b505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ed9061439c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295c9061442e565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156129eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e2906144c0565b60405180910390fd5b81816129f791906139ad565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a8791906139e1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612aeb9190613162565b60405180910390a350505050565b6000600267ffffffffffffffff811115612b1657612b156132e3565b5b604051908082528060200260200182016040528015612b445781602001602082028036833780820191505090505b5090503081600081518110612b5c57612b5b613ca5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2791906144f5565b81600181518110612c3b57612c3a613ca5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ca230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611dc3565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d0695949392919061461b565b600060405180830381600087803b158015612d2057600080fd5b505af1158015612d34573d6000803e3d6000fd5b505050505050565b612d6930600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611dc3565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612dd296959493929190614675565b60606040518083038185885af1158015612df0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e1591906146eb565b5050505050565b80471015612e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e569061478a565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612e85906147db565b60006040518083038185875af1925050503d8060008114612ec2576040519150601f19603f3d011682016040523d82523d6000602084013e612ec7565b606091505b5050905080612f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0290614862565b60405180910390fd5b505050565b604051806040016040528060008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f64578082015181840152602081019050612f49565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f8c82612f2a565b612f968185612f35565b9350612fa6818560208601612f46565b612faf81612f70565b840191505092915050565b60006020820190508181036000830152612fd48184612f81565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061301b82612ff0565b9050919050565b61302b81613010565b811461303657600080fd5b50565b60008135905061304881613022565b92915050565b6000819050919050565b6130618161304e565b811461306c57600080fd5b50565b60008135905061307e81613058565b92915050565b6000806040838503121561309b5761309a612fe6565b5b60006130a985828601613039565b92505060206130ba8582860161306f565b9150509250929050565b60008115159050919050565b6130d9816130c4565b82525050565b60006020820190506130f460008301846130d0565b92915050565b613103816130c4565b811461310e57600080fd5b50565b600081359050613120816130fa565b92915050565b60006020828403121561313c5761313b612fe6565b5b600061314a84828501613111565b91505092915050565b61315c8161304e565b82525050565b60006020820190506131776000830184613153565b92915050565b6000806040838503121561319457613193612fe6565b5b60006131a28582860161306f565b92505060206131b38582860161306f565b9150509250929050565b6000806000606084860312156131d6576131d5612fe6565b5b60006131e486828701613039565b93505060206131f586828701613039565b92505060406132068682870161306f565b9150509250925092565b600060ff82169050919050565b61322681613210565b82525050565b6000602082019050613241600083018461321d565b92915050565b60006020828403121561325d5761325c612fe6565b5b600061326b84828501613039565b91505092915050565b6000806040838503121561328b5761328a612fe6565b5b600061329985828601613039565b92505060206132aa85828601613111565b9150509250929050565b6132bd81613010565b82525050565b60006020820190506132d860008301846132b4565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61331b82612f70565b810181811067ffffffffffffffff8211171561333a576133396132e3565b5b80604052505050565b600061334d612fdc565b90506133598282613312565b919050565b600067ffffffffffffffff821115613379576133786132e3565b5b602082029050602081019050919050565b600080fd5b60006133a261339d8461335e565b613343565b905080838252602082019050602084028301858111156133c5576133c461338a565b5b835b818110156133ee57806133da8882613039565b8452602084019350506020810190506133c7565b5050509392505050565b600082601f83011261340d5761340c6132de565b5b813561341d84826020860161338f565b91505092915050565b6000806040838503121561343d5761343c612fe6565b5b600083013567ffffffffffffffff81111561345b5761345a612feb565b5b613467858286016133f8565b925050602061347885828601613111565b9150509250929050565b6000806040838503121561349957613498612fe6565b5b60006134a785828601613039565b92505060206134b885828601613039565b9150509250929050565b6000819050919050565b60006134e76134e26134dd84612ff0565b6134c2565b612ff0565b9050919050565b60006134f9826134cc565b9050919050565b600061350b826134ee565b9050919050565b61351b81613500565b82525050565b60006020820190506135366000830184613512565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061358357607f821691505b6020821081036135965761359561353c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135d2602083612f35565b91506135dd8261359c565b602082019050919050565b60006020820190508181036000830152613601816135c5565b9050919050565b7f6d757374206b656570206d6178205468726573686f6c64206174203125206f7260008201527f206c657373000000000000000000000000000000000000000000000000000000602082015250565b6000613664602583612f35565b915061366f82613608565b604082019050919050565b6000602082019050818103600083015261369381613657565b9050919050565b7f6d696e205468726573686f6c64206d757374206265206772656174657220746860008201527f616e206f7220657175616c20746f20302e303125000000000000000000000000602082015250565b60006136f6603483612f35565b91506137018261369a565b604082019050919050565b60006020820190508181036000830152613725816136e9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156137b25780860481111561378e5761378d61372c565b5b600185161561379d5780820291505b80810290506137ab8561375b565b9450613772565b94509492505050565b6000826137cb5760019050613887565b816137d95760009050613887565b81600181146137ef57600281146137f957613828565b6001915050613887565b60ff84111561380b5761380a61372c565b5b8360020a9150848211156138225761382161372c565b5b50613887565b5060208310610133831016604e8410600b841016171561385d5782820a9050838111156138585761385761372c565b5b613887565b61386a8484846001613768565b925090508184048111156138815761388061372c565b5b81810290505b9392505050565b60006138998261304e565b91506138a483613210565b92506138d17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846137bb565b905092915050565b60006138e48261304e565b91506138ef8361304e565b92508282026138fd8161304e565b915082820484148315176139145761391361372c565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613977602883612f35565b91506139828261391b565b604082019050919050565b600060208201905081810360008301526139a68161396a565b9050919050565b60006139b88261304e565b91506139c38361304e565b92508282039050818111156139db576139da61372c565b5b92915050565b60006139ec8261304e565b91506139f78361304e565b9250828201905080821115613a0f57613a0e61372c565b5b92915050565b7f46656520416464726573732063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a71602283612f35565b9150613a7c82613a15565b604082019050919050565b60006020820190508181036000830152613aa081613a64565b9050919050565b7f46656520416464726573732063616e6e6f742062652043410000000000000000600082015250565b6000613add601883612f35565b9150613ae882613aa7565b602082019050919050565b60006020820190508181036000830152613b0c81613ad0565b9050919050565b6000604082019050613b286000830185613153565b613b356020830184613153565b9392505050565b7f43616e6e6f742072652d656e61626c652074726164696e670000000000000000600082015250565b6000613b72601883612f35565b9150613b7d82613b3c565b602082019050919050565b60006020820190508181036000830152613ba181613b65565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c60008201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b6000613c04603683612f35565b9150613c0f82613ba8565b604082019050919050565b60006020820190508181036000830152613c3381613bf7565b9050919050565b6000604082019050613c4f60008301856132b4565b613c5c6020830184613153565b9392505050565b600081519050613c72816130fa565b92915050565b600060208284031215613c8e57613c8d612fe6565b5b6000613c9c84828501613c63565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613cdf8261304e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d1157613d1061372c565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613d78602583612f35565b9150613d8382613d1c565b604082019050919050565b60006020820190508181036000830152613da781613d6b565b9050919050565b7f43616e6e6f7420736574204d617857616c6c657420616d6f756e74206c6f776560008201527f72207468656e20302e3125000000000000000000000000000000000000000000602082015250565b6000613e0a602b83612f35565b9150613e1582613dae565b604082019050919050565b60006020820190508181036000830152613e3981613dfd565b9050919050565b7f43616e6e6f7420736574204d6178547820616d6f756e74206c6f77657220746860008201527f656e20302e312500000000000000000000000000000000000000000000000000602082015250565b6000613e9c602783612f35565b9150613ea782613e40565b604082019050919050565b60006020820190508181036000830152613ecb81613e8f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613f2e602683612f35565b9150613f3982613ed2565b604082019050919050565b60006020820190508181036000830152613f5d81613f21565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613fc0602483612f35565b9150613fcb82613f64565b604082019050919050565b60006020820190508181036000830152613fef81613fb3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614052602283612f35565b915061405d82613ff6565b604082019050919050565b6000602082019050818103600083015261408181614045565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006140e4602983612f35565b91506140ef82614088565b604082019050919050565b60006020820190508181036000830152614113816140d7565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b6000614150601983612f35565b915061415b8261411a565b602082019050919050565b6000602082019050818103600083015261417f81614143565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b60006141bc601383612f35565b91506141c782614186565b602082019050919050565b600060208201905081810360008301526141eb816141af565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000614228601983612f35565b9150614233826141f2565b602082019050919050565b600060208201905081810360008301526142578161421b565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000614294601a83612f35565b915061429f8261425e565b602082019050919050565b600060208201905081810360008301526142c381614287565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006143048261304e565b915061430f8361304e565b92508261431f5761431e6142ca565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614386602583612f35565b91506143918261432a565b604082019050919050565b600060208201905081810360008301526143b581614379565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614418602383612f35565b9150614423826143bc565b604082019050919050565b600060208201905081810360008301526144478161440b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006144aa602683612f35565b91506144b58261444e565b604082019050919050565b600060208201905081810360008301526144d98161449d565b9050919050565b6000815190506144ef81613022565b92915050565b60006020828403121561450b5761450a612fe6565b5b6000614519848285016144e0565b91505092915050565b6000819050919050565b600061454761454261453d84614522565b6134c2565b61304e565b9050919050565b6145578161452c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61459281613010565b82525050565b60006145a48383614589565b60208301905092915050565b6000602082019050919050565b60006145c88261455d565b6145d28185614568565b93506145dd83614579565b8060005b8381101561460e5781516145f58882614598565b9750614600836145b0565b9250506001810190506145e1565b5085935050505092915050565b600060a0820190506146306000830188613153565b61463d602083018761454e565b818103604083015261464f81866145bd565b905061465e60608301856132b4565b61466b6080830184613153565b9695505050505050565b600060c08201905061468a60008301896132b4565b6146976020830188613153565b6146a4604083018761454e565b6146b1606083018661454e565b6146be60808301856132b4565b6146cb60a0830184613153565b979650505050505050565b6000815190506146e581613058565b92915050565b60008060006060848603121561470457614703612fe6565b5b6000614712868287016146d6565b9350506020614723868287016146d6565b9250506040614734868287016146d6565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614774601d83612f35565b915061477f8261473e565b602082019050919050565b600060208201905081810360008301526147a381614767565b9050919050565b600081905092915050565b50565b60006147c56000836147aa565b91506147d0826147b5565b600082019050919050565b60006147e6826147b8565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b600061484c603a83612f35565b9150614857826147f0565b604082019050919050565b6000602082019050818103600083015261487b8161483f565b905091905056fea26469706673582212201412c28bdaf1a727689e3ac2bfec40e3569853dfa0bb91c35328962d6680bfee64736f6c63430008130033

Deployed Bytecode

0x60806040526004361061021e5760003560e01c80638a8c523c11610123578063ad3026e4116100ab578063e0eb9cb31161006f578063e0eb9cb3146107ca578063ea2f0b37146107f5578063f2fde38b1461081e578063f887ea4014610847578063fc962edb1461087257610225565b8063ad3026e4146106d3578063beffc7d4146106fc578063c5d32bb214610725578063d256413e14610762578063dd62ed3e1461078d57610225565b8063a1e71b57116100f2578063a1e71b57146105ee578063a40f0ce714610617578063a457c2d71461062e578063a8aa1b311461066b578063a9059cbb1461069657610225565b80638a8c523c146105585780638cd4426d1461056f5780638da5cb5b1461059857806395d89b41146105c357610225565b8063437823ec116101a6578063610e34b911610175578063610e34b91461048557806370a08231146104ae578063715018a6146104eb57806375f0a8741461050257806385141a771461052d57610225565b8063437823ec146103df5780634ada218b146104085780635ae34339146104335780635d098b381461045c57610225565b80631d5dace3116101ed5780631d5dace3146102e657806323b872dd1461030f57806329b8cff31461034c578063313ce5671461037757806339509351146103a257610225565b806306fdde031461022a578063095ea7b3146102555780631340538f1461029257806318160ddd146102bb57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f61089d565b60405161024c9190612fba565b60405180910390f35b34801561026157600080fd5b5061027c60048036038101906102779190613084565b61092f565b60405161028991906130df565b60405180910390f35b34801561029e57600080fd5b506102b960048036038101906102b49190613126565b61094d565b005b3480156102c757600080fd5b506102d06109e6565b6040516102dd9190613162565b60405180910390f35b3480156102f257600080fd5b5061030d6004803603810190610308919061317d565b6109f0565b005b34801561031b57600080fd5b50610336600480360381019061033191906131bd565b610b48565b60405161034391906130df565b60405180910390f35b34801561035857600080fd5b50610361610c49565b60405161036e9190613162565b60405180910390f35b34801561038357600080fd5b5061038c610c4f565b604051610399919061322c565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190613084565b610c58565b6040516103d691906130df565b60405180910390f35b3480156103eb57600080fd5b5061040660048036038101906104019190613247565b610d04565b005b34801561041457600080fd5b5061041d610ddb565b60405161042a91906130df565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190613274565b610dee565b005b34801561046857600080fd5b50610483600480360381019061047e9190613247565b610ec5565b005b34801561049157600080fd5b506104ac60048036038101906104a7919061317d565b6110ba565b005b3480156104ba57600080fd5b506104d560048036038101906104d09190613247565b611187565b6040516104e29190613162565b60405180910390f35b3480156104f757600080fd5b506105006111cf565b005b34801561050e57600080fd5b50610517611257565b60405161052491906132c3565b60405180910390f35b34801561053957600080fd5b5061054261127d565b60405161054f91906132c3565b60405180910390f35b34801561056457600080fd5b5061056d611283565b005b34801561057b57600080fd5b5061059660048036038101906105919190613084565b61136c565b005b3480156105a457600080fd5b506105ad6114e0565b6040516105ba91906132c3565b60405180910390f35b3480156105cf57600080fd5b506105d861150a565b6040516105e59190612fba565b60405180910390f35b3480156105fa57600080fd5b5061061560048036038101906106109190613426565b61159c565b005b34801561062357600080fd5b5061062c6116ad565b005b34801561063a57600080fd5b5061065560048036038101906106509190613084565b61177f565b60405161066291906130df565b60405180910390f35b34801561067757600080fd5b50610680611873565b60405161068d91906132c3565b60405180910390f35b3480156106a257600080fd5b506106bd60048036038101906106b89190613084565b611899565b6040516106ca91906130df565b60405180910390f35b3480156106df57600080fd5b506106fa60048036038101906106f5919061317d565b6118b0565b005b34801561070857600080fd5b50610723600480360381019061071e919061317d565b611a41565b005b34801561073157600080fd5b5061074c60048036038101906107479190613247565b611b0e565b60405161075991906130df565b60405180910390f35b34801561076e57600080fd5b50610777611b2e565b6040516107849190613162565b60405180910390f35b34801561079957600080fd5b506107b460048036038101906107af9190613482565b611b34565b6040516107c19190613162565b60405180910390f35b3480156107d657600080fd5b506107df611bbb565b6040516107ec9190613162565b60405180910390f35b34801561080157600080fd5b5061081c60048036038101906108179190613247565b611bc1565b005b34801561082a57600080fd5b5061084560048036038101906108409190613247565b611c98565b005b34801561085357600080fd5b5061085c611d8f565b6040516108699190613521565b60405180910390f35b34801561087e57600080fd5b50610887611db5565b6040516108949190613162565b60405180910390f35b6060600380546108ac9061356b565b80601f01602080910402602001604051908101604052809291908181526020018280546108d89061356b565b80156109255780601f106108fa57610100808354040283529160200191610925565b820191906000526020600020905b81548152906001019060200180831161090857829003601f168201915b5050505050905090565b600061094361093c611dbb565b8484611dc3565b6001905092915050565b610955611dbb565b73ffffffffffffffffffffffffffffffffffffffff166109736114e0565b73ffffffffffffffffffffffffffffffffffffffff16146109c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c0906135e8565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b6000600254905090565b6109f8611dbb565b73ffffffffffffffffffffffffffffffffffffffff16610a166114e0565b73ffffffffffffffffffffffffffffffffffffffff1614610a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a63906135e8565b60405180910390fd5b630bebc200821115610ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaa9061367a565b60405180910390fd5b630bebc200811015610afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af19061370c565b60405180910390fd5b610b02610c4f565b600a610b0e919061388e565b82610b1991906138d9565b600881905550610b27610c4f565b600a610b33919061388e565b81610b3e91906138d9565b6009819055505050565b6000610b55848484611f8c565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ba0611dbb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c179061398d565b60405180910390fd5b610c3d85610c2c611dbb565b8584610c3891906139ad565b611dc3565b60019150509392505050565b600b5481565b60006012905090565b6000610cfa610c65611dbb565b848460016000610c73611dbb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cf591906139e1565b611dc3565b6001905092915050565b610d0c611dbb565b73ffffffffffffffffffffffffffffffffffffffff16610d2a6114e0565b73ffffffffffffffffffffffffffffffffffffffff1614610d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d77906135e8565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600760169054906101000a900460ff1681565b610df6611dbb565b73ffffffffffffffffffffffffffffffffffffffff16610e146114e0565b73ffffffffffffffffffffffffffffffffffffffff1614610e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e61906135e8565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610ecd611dbb565b73ffffffffffffffffffffffffffffffffffffffff16610eeb6114e0565b73ffffffffffffffffffffffffffffffffffffffff1614610f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f38906135e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa790613a87565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361101e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101590613af3565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6110c2611dbb565b73ffffffffffffffffffffffffffffffffffffffff166110e06114e0565b73ffffffffffffffffffffffffffffffffffffffff1614611136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112d906135e8565b60405180910390fd5b81600d6000018190555080600d600101819055507fa2b219a42aa557965901397e42601390282bb6828cabbd7675dca50ba6aa62ca828260405161117b929190613b13565b60405180910390a15050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111d7611dbb565b73ffffffffffffffffffffffffffffffffffffffff166111f56114e0565b73ffffffffffffffffffffffffffffffffffffffff161461124b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611242906135e8565b60405180910390fd5b611255600061263f565b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61dead81565b61128b611dbb565b73ffffffffffffffffffffffffffffffffffffffff166112a96114e0565b73ffffffffffffffffffffffffffffffffffffffff16146112ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f6906135e8565b60405180910390fd5b600760169054906101000a900460ff161561134f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134690613b88565b60405180910390fd5b6001600760166101000a81548160ff021916908315150217905550565b611374611dbb565b73ffffffffffffffffffffffffffffffffffffffff166113926114e0565b73ffffffffffffffffffffffffffffffffffffffff16146113e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113df906135e8565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d90613c1a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61147a6114e0565b836040518363ffffffff1660e01b8152600401611498929190613c3a565b6020604051808303816000875af11580156114b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114db9190613c78565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546115199061356b565b80601f01602080910402602001604051908101604052809291908181526020018280546115459061356b565b80156115925780601f1061156757610100808354040283529160200191611592565b820191906000526020600020905b81548152906001019060200180831161157557829003601f168201915b5050505050905090565b6115a4611dbb565b73ffffffffffffffffffffffffffffffffffffffff166115c26114e0565b73ffffffffffffffffffffffffffffffffffffffff1614611618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160f906135e8565b60405180910390fd5b60005b82518110156116a857816014600085848151811061163c5761163b613ca5565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806116a090613cd4565b91505061161b565b505050565b6116b5611dbb565b73ffffffffffffffffffffffffffffffffffffffff166116d36114e0565b73ffffffffffffffffffffffffffffffffffffffff1614611729576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611720906135e8565b60405180910390fd5b60004790506117366114e0565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561177b573d6000803e3d6000fd5b5050565b6000806001600061178e611dbb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561184b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184290613d8e565b60405180910390fd5b611868611856611dbb565b85858461186391906139ad565b611dc3565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006118a6338484611f8c565b6001905092915050565b6118b8611dbb565b73ffffffffffffffffffffffffffffffffffffffff166118d66114e0565b73ffffffffffffffffffffffffffffffffffffffff161461192c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611923906135e8565b60405180910390fd5b611934610c4f565b600a611940919061388e565b8261194b91906138d9565b600b81905550611959610c4f565b600a611965919061388e565b8161197091906138d9565b600a819055506301312d008210156119bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b490613e20565b60405180910390fd5b6301312d00811015611a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fb90613eb2565b60405180910390fd5b7f202f4712f0dae21d708451caa16ed4b41cb5c9974ab3d34d1f1dc4dfc5a222db8282604051611a35929190613b13565b60405180910390a15050565b611a49611dbb565b73ffffffffffffffffffffffffffffffffffffffff16611a676114e0565b73ffffffffffffffffffffffffffffffffffffffff1614611abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab4906135e8565b60405180910390fd5b81600f6000018190555080600f600101819055507f7873124e0d91bc71776e2961704366640b879893d05157d7bfa606dd9e58227d8282604051611b02929190613b13565b60405180910390a15050565b60136020528060005260406000206000915054906101000a900460ff1681565b600a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60115481565b611bc9611dbb565b73ffffffffffffffffffffffffffffffffffffffff16611be76114e0565b73ffffffffffffffffffffffffffffffffffffffff1614611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c34906135e8565b60405180910390fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611ca0611dbb565b73ffffffffffffffffffffffffffffffffffffffff16611cbe6114e0565b73ffffffffffffffffffffffffffffffffffffffff1614611d14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0b906135e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7a90613f44565b60405180910390fd5b611d8c8161263f565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2990613fd6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9890614068565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f7f9190613162565b60405180910390a3505050565b60008111611fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc6906140fa565b60405180910390fd5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120735750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6120b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a990614166565b60405180910390fd5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121565750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121ab57600760169054906101000a900460ff166121aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a1906141d2565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156122565750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122ac5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561234f57600a548111156122f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ed9061423e565b60405180910390fd5b600b548161230384611187565b61230d91906139e1565b111561234e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612345906142aa565b60405180910390fd5b5b600080600061235c612f10565b600760149054906101000a900460ff16806123c05750601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806124145750601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124225760009150612550565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036124ba57600f60000154600f6001015461248d91906139e1565b9350839250600f60405180604001604052908160008201548152602001600182015481525050905061254f565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461254e57600d60000154600d6001015461252591906139e1565b9350839250600d6040518060400160405290816000820154815260200160018201548152505090505b5b5b6064838661255e91906138d9565b61256891906142f9565b9150600760159054906101000a900460ff1680156125d45750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b156125e4576125e38482612705565b5b6125fa878784886125f591906139ad565b612887565b60008211156126365760008411156126355760006064858761261c91906138d9565b61262691906142f9565b9050612633883083612887565b505b5b50505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612883576001600760146101000a81548160ff021916908315150217905550600082031561286757600061274830611187565b9050600954811061286557600060028461276291906138d9565b905060008184602001518461277791906138d9565b61278191906142f9565b9050600047905061279184612af9565b6000814761279f91906139ad565b905060008660200151856127b391906139ad565b826127be91906142f9565b905060008760200151826127d291906138d9565b905060008111156127e8576127e78582612d3c565b5b600088600001516002846127fc91906138d9565b61280691906138d9565b9050600081111561285d5761285c81600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612e1c90919063ffffffff16565b5b505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ed9061439c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295c9061442e565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156129eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e2906144c0565b60405180910390fd5b81816129f791906139ad565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a8791906139e1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612aeb9190613162565b60405180910390a350505050565b6000600267ffffffffffffffff811115612b1657612b156132e3565b5b604051908082528060200260200182016040528015612b445781602001602082028036833780820191505090505b5090503081600081518110612b5c57612b5b613ca5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2791906144f5565b81600181518110612c3b57612c3a613ca5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ca230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611dc3565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d0695949392919061461b565b600060405180830381600087803b158015612d2057600080fd5b505af1158015612d34573d6000803e3d6000fd5b505050505050565b612d6930600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611dc3565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612dd296959493929190614675565b60606040518083038185885af1158015612df0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e1591906146eb565b5050505050565b80471015612e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e569061478a565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612e85906147db565b60006040518083038185875af1925050503d8060008114612ec2576040519150601f19603f3d011682016040523d82523d6000602084013e612ec7565b606091505b5050905080612f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0290614862565b60405180910390fd5b505050565b604051806040016040528060008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f64578082015181840152602081019050612f49565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f8c82612f2a565b612f968185612f35565b9350612fa6818560208601612f46565b612faf81612f70565b840191505092915050565b60006020820190508181036000830152612fd48184612f81565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061301b82612ff0565b9050919050565b61302b81613010565b811461303657600080fd5b50565b60008135905061304881613022565b92915050565b6000819050919050565b6130618161304e565b811461306c57600080fd5b50565b60008135905061307e81613058565b92915050565b6000806040838503121561309b5761309a612fe6565b5b60006130a985828601613039565b92505060206130ba8582860161306f565b9150509250929050565b60008115159050919050565b6130d9816130c4565b82525050565b60006020820190506130f460008301846130d0565b92915050565b613103816130c4565b811461310e57600080fd5b50565b600081359050613120816130fa565b92915050565b60006020828403121561313c5761313b612fe6565b5b600061314a84828501613111565b91505092915050565b61315c8161304e565b82525050565b60006020820190506131776000830184613153565b92915050565b6000806040838503121561319457613193612fe6565b5b60006131a28582860161306f565b92505060206131b38582860161306f565b9150509250929050565b6000806000606084860312156131d6576131d5612fe6565b5b60006131e486828701613039565b93505060206131f586828701613039565b92505060406132068682870161306f565b9150509250925092565b600060ff82169050919050565b61322681613210565b82525050565b6000602082019050613241600083018461321d565b92915050565b60006020828403121561325d5761325c612fe6565b5b600061326b84828501613039565b91505092915050565b6000806040838503121561328b5761328a612fe6565b5b600061329985828601613039565b92505060206132aa85828601613111565b9150509250929050565b6132bd81613010565b82525050565b60006020820190506132d860008301846132b4565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61331b82612f70565b810181811067ffffffffffffffff8211171561333a576133396132e3565b5b80604052505050565b600061334d612fdc565b90506133598282613312565b919050565b600067ffffffffffffffff821115613379576133786132e3565b5b602082029050602081019050919050565b600080fd5b60006133a261339d8461335e565b613343565b905080838252602082019050602084028301858111156133c5576133c461338a565b5b835b818110156133ee57806133da8882613039565b8452602084019350506020810190506133c7565b5050509392505050565b600082601f83011261340d5761340c6132de565b5b813561341d84826020860161338f565b91505092915050565b6000806040838503121561343d5761343c612fe6565b5b600083013567ffffffffffffffff81111561345b5761345a612feb565b5b613467858286016133f8565b925050602061347885828601613111565b9150509250929050565b6000806040838503121561349957613498612fe6565b5b60006134a785828601613039565b92505060206134b885828601613039565b9150509250929050565b6000819050919050565b60006134e76134e26134dd84612ff0565b6134c2565b612ff0565b9050919050565b60006134f9826134cc565b9050919050565b600061350b826134ee565b9050919050565b61351b81613500565b82525050565b60006020820190506135366000830184613512565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061358357607f821691505b6020821081036135965761359561353c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135d2602083612f35565b91506135dd8261359c565b602082019050919050565b60006020820190508181036000830152613601816135c5565b9050919050565b7f6d757374206b656570206d6178205468726573686f6c64206174203125206f7260008201527f206c657373000000000000000000000000000000000000000000000000000000602082015250565b6000613664602583612f35565b915061366f82613608565b604082019050919050565b6000602082019050818103600083015261369381613657565b9050919050565b7f6d696e205468726573686f6c64206d757374206265206772656174657220746860008201527f616e206f7220657175616c20746f20302e303125000000000000000000000000602082015250565b60006136f6603483612f35565b91506137018261369a565b604082019050919050565b60006020820190508181036000830152613725816136e9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156137b25780860481111561378e5761378d61372c565b5b600185161561379d5780820291505b80810290506137ab8561375b565b9450613772565b94509492505050565b6000826137cb5760019050613887565b816137d95760009050613887565b81600181146137ef57600281146137f957613828565b6001915050613887565b60ff84111561380b5761380a61372c565b5b8360020a9150848211156138225761382161372c565b5b50613887565b5060208310610133831016604e8410600b841016171561385d5782820a9050838111156138585761385761372c565b5b613887565b61386a8484846001613768565b925090508184048111156138815761388061372c565b5b81810290505b9392505050565b60006138998261304e565b91506138a483613210565b92506138d17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846137bb565b905092915050565b60006138e48261304e565b91506138ef8361304e565b92508282026138fd8161304e565b915082820484148315176139145761391361372c565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613977602883612f35565b91506139828261391b565b604082019050919050565b600060208201905081810360008301526139a68161396a565b9050919050565b60006139b88261304e565b91506139c38361304e565b92508282039050818111156139db576139da61372c565b5b92915050565b60006139ec8261304e565b91506139f78361304e565b9250828201905080821115613a0f57613a0e61372c565b5b92915050565b7f46656520416464726573732063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a71602283612f35565b9150613a7c82613a15565b604082019050919050565b60006020820190508181036000830152613aa081613a64565b9050919050565b7f46656520416464726573732063616e6e6f742062652043410000000000000000600082015250565b6000613add601883612f35565b9150613ae882613aa7565b602082019050919050565b60006020820190508181036000830152613b0c81613ad0565b9050919050565b6000604082019050613b286000830185613153565b613b356020830184613153565b9392505050565b7f43616e6e6f742072652d656e61626c652074726164696e670000000000000000600082015250565b6000613b72601883612f35565b9150613b7d82613b3c565b602082019050919050565b60006020820190508181036000830152613ba181613b65565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c60008201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b6000613c04603683612f35565b9150613c0f82613ba8565b604082019050919050565b60006020820190508181036000830152613c3381613bf7565b9050919050565b6000604082019050613c4f60008301856132b4565b613c5c6020830184613153565b9392505050565b600081519050613c72816130fa565b92915050565b600060208284031215613c8e57613c8d612fe6565b5b6000613c9c84828501613c63565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613cdf8261304e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d1157613d1061372c565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613d78602583612f35565b9150613d8382613d1c565b604082019050919050565b60006020820190508181036000830152613da781613d6b565b9050919050565b7f43616e6e6f7420736574204d617857616c6c657420616d6f756e74206c6f776560008201527f72207468656e20302e3125000000000000000000000000000000000000000000602082015250565b6000613e0a602b83612f35565b9150613e1582613dae565b604082019050919050565b60006020820190508181036000830152613e3981613dfd565b9050919050565b7f43616e6e6f7420736574204d6178547820616d6f756e74206c6f77657220746860008201527f656e20302e312500000000000000000000000000000000000000000000000000602082015250565b6000613e9c602783612f35565b9150613ea782613e40565b604082019050919050565b60006020820190508181036000830152613ecb81613e8f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613f2e602683612f35565b9150613f3982613ed2565b604082019050919050565b60006020820190508181036000830152613f5d81613f21565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613fc0602483612f35565b9150613fcb82613f64565b604082019050919050565b60006020820190508181036000830152613fef81613fb3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614052602283612f35565b915061405d82613ff6565b604082019050919050565b6000602082019050818103600083015261408181614045565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006140e4602983612f35565b91506140ef82614088565b604082019050919050565b60006020820190508181036000830152614113816140d7565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b6000614150601983612f35565b915061415b8261411a565b602082019050919050565b6000602082019050818103600083015261417f81614143565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b60006141bc601383612f35565b91506141c782614186565b602082019050919050565b600060208201905081810360008301526141eb816141af565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000614228601983612f35565b9150614233826141f2565b602082019050919050565b600060208201905081810360008301526142578161421b565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000614294601a83612f35565b915061429f8261425e565b602082019050919050565b600060208201905081810360008301526142c381614287565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006143048261304e565b915061430f8361304e565b92508261431f5761431e6142ca565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614386602583612f35565b91506143918261432a565b604082019050919050565b600060208201905081810360008301526143b581614379565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614418602383612f35565b9150614423826143bc565b604082019050919050565b600060208201905081810360008301526144478161440b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006144aa602683612f35565b91506144b58261444e565b604082019050919050565b600060208201905081810360008301526144d98161449d565b9050919050565b6000815190506144ef81613022565b92915050565b60006020828403121561450b5761450a612fe6565b5b6000614519848285016144e0565b91505092915050565b6000819050919050565b600061454761454261453d84614522565b6134c2565b61304e565b9050919050565b6145578161452c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61459281613010565b82525050565b60006145a48383614589565b60208301905092915050565b6000602082019050919050565b60006145c88261455d565b6145d28185614568565b93506145dd83614579565b8060005b8381101561460e5781516145f58882614598565b9750614600836145b0565b9250506001810190506145e1565b5085935050505092915050565b600060a0820190506146306000830188613153565b61463d602083018761454e565b818103604083015261464f81866145bd565b905061465e60608301856132b4565b61466b6080830184613153565b9695505050505050565b600060c08201905061468a60008301896132b4565b6146976020830188613153565b6146a4604083018761454e565b6146b1606083018661454e565b6146be60808301856132b4565b6146cb60a0830184613153565b979650505050505050565b6000815190506146e581613058565b92915050565b60008060006060848603121561470457614703612fe6565b5b6000614712868287016146d6565b9350506020614723868287016146d6565b9250506040614734868287016146d6565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614774601d83612f35565b915061477f8261473e565b602082019050919050565b600060208201905081810360008301526147a381614767565b9050919050565b600081905092915050565b50565b60006147c56000836147aa565b91506147d0826147b5565b600082019050919050565b60006147e6826147b8565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b600061484c603a83612f35565b9150614857826147f0565b604082019050919050565b6000602082019050818103600083015261487b8161483f565b905091905056fea26469706673582212201412c28bdaf1a727689e3ac2bfec40e3569853dfa0bb91c35328962d6680bfee64736f6c63430008130033

Deployed Bytecode Sourcemap

12342:10696:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2541:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14333:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20133:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3661;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20254:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14534:485;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12790:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3503:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15027:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22342:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12560:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22214:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21683:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20647:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3832:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10949:94;;;;;;;;;;;;;:::i;:::-;;12857:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12939:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21525:147;;;;;;;;;;;;;:::i;:::-;;22742:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10726:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2760:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21998:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22569:165;;;;;;;;;;;;;:::i;:::-;;15333:409;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12449:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15750:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21116:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20875:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13343:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12731:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4501:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13200:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22456:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11051:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12421:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13266:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2541:100;2595:13;2628:5;2621:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2541:100;:::o;14333:193::-;14435:4;14457:39;14466:12;:10;:12::i;:::-;14480:7;14489:6;14457:8;:39::i;:::-;14514:4;14507:11;;14333:193;;;;:::o;20133:108::-;10872:12;:10;:12::i;:::-;10861:23;;:7;:5;:7::i;:::-;:23;;;10853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20228:5:::1;20207:18;;:26;;;;;;;;;;;;;;;;;;20133:108:::0;:::o;3661:::-;3722:7;3749:12;;3742:19;;3661:108;:::o;20254:381::-;10872:12;:10;:12::i;:::-;10861:23;;:7;:5;:7::i;:::-;:23;;;10853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20371:9:::1;20357:10;:23;;20349:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;20456:9;20442:10;:23;;20434:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;20565:10;:8;:10::i;:::-;20561:2;:14;;;;:::i;:::-;20548:10;:27;;;;:::i;:::-;20533:12;:42;;;;20617:10;:8;:10::i;:::-;20613:2;:14;;;;:::i;:::-;20600:10;:27;;;;:::i;:::-;20586:11;:41;;;;20254:381:::0;;:::o;14534:485::-;14666:4;14683:36;14693:6;14701:9;14712:6;14683:9;:36::i;:::-;14732:24;14759:11;:19;14771:6;14759:19;;;;;;;;;;;;;;;:33;14779:12;:10;:12::i;:::-;14759:33;;;;;;;;;;;;;;;;14732:60;;14845:6;14825:16;:26;;14803:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;14930:57;14939:6;14947:12;:10;:12::i;:::-;14980:6;14961:16;:25;;;;:::i;:::-;14930:8;:57::i;:::-;15007:4;15000:11;;;14534:485;;;;;:::o;12790:48::-;;;;:::o;3503:93::-;3561:5;3586:2;3579:9;;3503:93;:::o;15027:298::-;15143:4;15165:130;15188:12;:10;:12::i;:::-;15215:7;15274:10;15237:11;:25;15249:12;:10;:12::i;:::-;15237:25;;;;;;;;;;;;;;;:34;15263:7;15237:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;15165:8;:130::i;:::-;15313:4;15306:11;;15027:298;;;;:::o;22342:106::-;10872:12;:10;:12::i;:::-;10861:23;;:7;:5;:7::i;:::-;:23;;;10853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22436:4:::1;22414:9;:19;22424:8;22414:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;22342:106:::0;:::o;12560:34::-;;;;;;;;;;;;;:::o;22214:117::-;10872:12;:10;:12::i;:::-;10861:23;;:7;:5;:7::i;:::-;:23;;;10853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22318:5:::1;22294:12;:21;22307:7;22294:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;22214:117:::0;;:::o;21683:305::-;10872:12;:10;:12::i;:::-;10861:23;;:7;:5;:7::i;:::-;:23;;;10853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21789:1:::1;21768:23;;:9;:23;;::::0;21760:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21870:4;21849:26;;:9;:26;;::::0;21841:63:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21938:4;21915:9;:20;21925:9;21915:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;21971:9;21953:15;;:27;;;;;;;;;;;;;;;;;;21683:305:::0;:::o;20647:220::-;10872:12;:10;:12::i;:::-;10861:23;;:7;:5;:7::i;:::-;:23;;;10853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20758:10:::1;20740:5;:15;;:28;;;;20797:10;20779:5;:15;;:28;;;;20820:39;20836:10;20848;20820:39;;;;;;;:::i;:::-;;;;;;;;20647:220:::0;;:::o;3832:177::-;3951:7;3983:9;:18;3993:7;3983:18;;;;;;;;;;;;;;;;3976:25;;3832:177;;;:::o;10949:94::-;10872:12;:10;:12::i;:::-;10861:23;;:7;:5;:7::i;:::-;:23;;;10853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11014:21:::1;11032:1;11014:9;:21::i;:::-;10949:94::o:0;12857:75::-;;;;;;;;;;;;;:::o;12939:79::-;12976:42;12939:79;:::o;21525:147::-;10872:12;:10;:12::i;:::-;10861:23;;:7;:5;:7::i;:::-;:23;;;10853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21589:14:::1;;;;;;;;;;;21588:15;21580:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;21660:4;21643:14;;:21;;;;;;;;;;;;;;;;;;21525:147::o:0;22742:238::-;10872:12;:10;:12::i;:::-;10861:23;;:7;:5;:7::i;:::-;:23;;;10853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22855:4:::1;22835:25;;:8;:25;;::::0;22827:92:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22937:8;22930:25;;;22956:7;:5;:7::i;:::-;22965:6;22930:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22742:238:::0;;:::o;10726:87::-;10772:7;10799:6;;;;;;;;;;;10792:13;;10726:87;:::o;2760:104::-;2816:13;2849:7;2842:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2760:104;:::o;21998:208::-;10872:12;:10;:12::i;:::-;10861:23;;:7;:5;:7::i;:::-;:23;;;10853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22098:9:::1;22093:106;22117:8;:15;22113:1;:19;22093:106;;;22182:5;22154:12;:25;22167:8;22176:1;22167:11;;;;;;;;:::i;:::-;;;;;;;;22154:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;22134:3;;;;;:::i;:::-;;;;22093:106;;;;21998:208:::0;;:::o;22569:165::-;10872:12;:10;:12::i;:::-;10861:23;;:7;:5;:7::i;:::-;:23;;;10853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22620:26:::1;22649:21;22620:50;;22689:7;:5;:7::i;:::-;22681:25;;:45;22707:18;22681:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22609:125;22569:165::o:0;15333:409::-;15454:4;15476:24;15503:11;:25;15515:12;:10;:12::i;:::-;15503:25;;;;;;;;;;;;;;;:34;15529:7;15503:34;;;;;;;;;;;;;;;;15476:61;;15576:15;15556:16;:35;;15548:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;15643:67;15652:12;:10;:12::i;:::-;15666:7;15694:15;15675:16;:34;;;;:::i;:::-;15643:8;:67::i;:::-;15730:4;15723:11;;;15333:409;;;;:::o;12449:19::-;;;;;;;;;;;;;:::o;15750:197::-;15855:4;15877:40;15887:10;15899:9;15910:6;15877:9;:40::i;:::-;15935:4;15928:11;;15750:197;;;;:::o;21116:397::-;10872:12;:10;:12::i;:::-;10861:23;;:7;:5;:7::i;:::-;:23;;;10853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21238:10:::1;:8;:10::i;:::-;21234:2;:14;;;;:::i;:::-;21221:10;:27;;;;:::i;:::-;21205:13;:43;;;;21287:10;:8;:10::i;:::-;21283:2;:14;;;;:::i;:::-;21274:6;:23;;;;:::i;:::-;21260:11;:37;;;;21327:8;21313:10;:22;;21304:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;21409:8;21399:6;:18;;21390:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21473:32;21486:10;21498:6;21473:32;;;;;;;:::i;:::-;;;;;;;;21116:397:::0;;:::o;20875:229::-;10872:12;:10;:12::i;:::-;10861:23;;:7;:5;:7::i;:::-;:23;;;10853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20991:10:::1;20969:9;:19;;:32;;;;21034:10;21012:9;:19;;:32;;;;21056:40;21073:10;21085;21056:40;;;;;;;:::i;:::-;;;;;;;;20875:229:::0;;:::o;13343:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;12731:46::-;;;;:::o;4501:201::-;4635:7;4667:11;:18;4679:5;4667:18;;;;;;;;;;;;;;;:27;4686:7;4667:27;;;;;;;;;;;;;;;;4660:34;;4501:201;;;;:::o;13200:59::-;;;;:::o;22456:105::-;10872:12;:10;:12::i;:::-;10861:23;;:7;:5;:7::i;:::-;:23;;;10853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22548:5:::1;22526:9;:19;22536:8;22526:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;22456:105:::0;:::o;11051:229::-;10872:12;:10;:12::i;:::-;10861:23;;:7;:5;:7::i;:::-;:23;;;10853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11174:1:::1;11154:22;;:8;:22;;::::0;11132:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11253:19;11263:8;11253:9;:19::i;:::-;11051:229:::0;:::o;12421:21::-;;;;;;;;;;;;;:::o;13266:68::-;;;;:::o;184:98::-;237:7;264:10;257:17;;184:98;:::o;9662:380::-;9815:1;9798:19;;:5;:19;;;9790:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9896:1;9877:21;;:7;:21;;;9869:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9980:6;9950:11;:18;9962:5;9950:18;;;;;;;;;;;;;;;:27;9969:7;9950:27;;;;;;;;;;;;;;;:36;;;;10018:7;10002:32;;10011:5;10002:32;;;10027:6;10002:32;;;;;;:::i;:::-;;;;;;;;9662:380;;;:::o;15955:1985::-;16071:1;16062:6;:10;16054:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16139:12;:20;16152:6;16139:20;;;;;;;;;;;;;;;;;;;;;;;;;16138:21;:49;;;;;16164:12;:23;16177:9;16164:23;;;;;;;;;;;;;;;;;;;;;;;;;16163:24;16138:49;16130:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;16263:9;:17;16273:6;16263:17;;;;;;;;;;;;;;;;;;;;;;;;;16262:18;:43;;;;;16285:9;:20;16295:9;16285:20;;;;;;;;;;;;;;;;;;;;;;;;;16284:21;16262:43;16258:122;;;16330:14;;;;;;;;;;;16322:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;16258:122;16414:4;;;;;;;;;;;16404:14;;:6;:14;;;:46;;;;;16443:6;;;;;;;;;;;16422:28;;:9;:28;;;;16404:46;:71;;;;;16455:9;:20;16465:9;16455:20;;;;;;;;;;;;;;;;;;;;;;;;;16454:21;16404:71;16400:294;;;16515:11;;16505:6;:21;;16497:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;16616:13;;16606:6;16583:20;16593:9;16583;:20::i;:::-;:29;;;;:::i;:::-;:46;;16575:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;16400:294;16704:15;16730:14;16755:11;16777:25;;:::i;:::-;16890:10;;;;;;;;;;;:31;;;;16904:9;:17;16914:6;16904:17;;;;;;;;;;;;;;;;;;;;;;;;;16890:31;:55;;;;16925:9;:20;16935:9;16925:20;;;;;;;;;;;;;;;;;;;;;;;;;16890:55;16886:464;;;16966:1;16960:7;;16886:464;;;17031:4;;;;;;;;;;;17018:17;;:9;:17;;;17014:336;;17084:9;:19;;;17062:9;:19;;;:41;;;;:::i;:::-;17052:51;;17127:7;17118:16;;17164:9;17149:24;;;;;;;;;;;;;;;;;;;;;;;;;;;17014:336;;;17208:4;;;;;;;;;;;17195:17;;:9;:17;;;17191:159;;17257:5;:15;;;17239:5;:15;;;:33;;;;:::i;:::-;17229:43;;17296:7;17287:16;;17333:5;17318:20;;;;;;;;;;;;;;;;;;;;;;;;;;;17191:159;17014:336;16886:464;17389:3;17379:6;17370;:15;;;;:::i;:::-;17369:23;;;;:::i;:::-;17363:29;;17506:18;;;;;;;;;;;:36;;;;;17538:4;;;;;;;;;;;17528:14;;:6;:14;;;;17506:36;17502:85;;;17557:30;17565:7;17574:12;17557:7;:30::i;:::-;17502:85;17629:48;17645:6;17653:9;17673:3;17664:6;:12;;;;:::i;:::-;17629:15;:48::i;:::-;17698:1;17692:3;:7;17688:247;;;17774:1;17764:7;:11;17760:164;;;17796:17;17837:3;17826:7;17817:6;:16;;;;:::i;:::-;17816:24;;;;:::i;:::-;17796:44;;17859:49;17875:6;17891:4;17898:9;17859:15;:49::i;:::-;17777:147;17760:164;17688:247;16043:1897;;;;15955:1985;;;:::o;11288:173::-;11344:16;11363:6;;;;;;;;;;;11344:25;;11389:8;11380:6;;:17;;;;;;;;;;;;;;;;;;11444:8;11413:40;;11434:8;11413:40;;;;;;;;;;;;11333:128;11288:173;:::o;17948:1282::-;13692:10;;;;;;;;;;;13687:110;;13732:4;13719:10;;:17;;;;;;;;;;;;;;;;;;18052:1:::1;18041:7;:12:::0;18037:51;18070:7:::1;18037:51;18100:23;18126:24;18144:4;18126:9;:24::i;:::-;18100:50;;18184:11;;18165:15;:30;18161:1062;;18335:19;18367:1;18357:7;:11;;;;:::i;:::-;18335:33;;18383:32;18460:11;18437:9;:19;;;18419:15;:37;;;;:::i;:::-;18418:53;;;;:::i;:::-;18383:88;;18486:22;18511:21;18486:46;;18549:33;18566:15;18549:16;:33::i;:::-;18599:20;18646:14;18622:21;:38;;;;:::i;:::-;18599:61;;18675:19;18727:9;:19;;;18713:11;:33;;;;:::i;:::-;18697:12;:50;;;;:::i;:::-;18675:72;;18762:29;18808:9;:19;;;18794:11;:33;;;;:::i;:::-;18762:65;;18872:1;18848:21;:25;18844:172;;;18939:61;18952:24;18978:21;18939:12;:61::i;:::-;18844:172;19032:20;19073:9;:19;;;19069:1;19055:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;19032:60;;19126:1;19111:12;:16;19107:105;;;19148:48;19183:12;19156:15;;;;;;;;;;;19148:34;;;;:48;;;;:::i;:::-;19107:105;18197:1026;;;;;;;18161:1062;18026:1204;13751:1;13780:5:::0;13767:10;;:18;;;;;;;;;;;;;;;;;;13687:110;17948:1282;;:::o;8179:615::-;8337:1;8319:20;;:6;:20;;;8311:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8421:1;8400:23;;:9;:23;;;8392:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8476:21;8500:9;:17;8510:6;8500:17;;;;;;;;;;;;;;;;8476:41;;8567:6;8550:13;:23;;8528:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;8686:6;8670:13;:22;;;;:::i;:::-;8650:9;:17;8660:6;8650:17;;;;;;;;;;;;;;;:42;;;;8727:6;8703:9;:20;8713:9;8703:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8768:9;8751:35;;8760:6;8751:35;;;8779:6;8751:35;;;;;;:::i;:::-;;;;;;;;8300:494;8179:615;;;:::o;19238:448::-;19304:21;19342:1;19328:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19304:40;;19373:4;19355;19360:1;19355:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19399:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19389:4;19394:1;19389:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19425:53;19442:4;19457:6;;;;;;;;;;;19466:11;19425:8;:53::i;:::-;19491:6;;;;;;;;;;;:57;;;19563:11;19589:1;19605:4;19632;19652:15;19491:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19293:393;19238:448;:::o;19694:431::-;19775:53;19792:4;19807:6;;;;;;;;;;;19816:11;19775:8;:53::i;:::-;19871:6;;;;;;;;;;;:22;;;19901:9;19934:4;19954:11;19980:1;20023;12976:42;20091:15;19871:246;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19694:431;;:::o;10072:391::-;10201:6;10176:21;:31;;10154:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;10278:12;10296:9;:14;;10318:6;10296:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10277:52;;;10362:7;10340:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;10143:320;10072:391;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::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;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:323::-;3763:6;3812:2;3800:9;3791:7;3787:23;3783:32;3780:119;;;3818:79;;:::i;:::-;3780:119;3938:1;3963:50;4005:7;3996:6;3985:9;3981:22;3963:50;:::i;:::-;3953:60;;3909:114;3707:323;;;;:::o;4036:118::-;4123:24;4141:5;4123:24;:::i;:::-;4118:3;4111:37;4036:118;;:::o;4160:222::-;4253:4;4291:2;4280:9;4276:18;4268:26;;4304:71;4372:1;4361:9;4357:17;4348:6;4304:71;:::i;:::-;4160:222;;;;:::o;4388:474::-;4456:6;4464;4513:2;4501:9;4492:7;4488:23;4484:32;4481:119;;;4519:79;;:::i;:::-;4481:119;4639:1;4664:53;4709:7;4700:6;4689:9;4685:22;4664:53;:::i;:::-;4654:63;;4610:117;4766:2;4792:53;4837:7;4828:6;4817:9;4813:22;4792:53;:::i;:::-;4782:63;;4737:118;4388:474;;;;;:::o;4868:619::-;4945:6;4953;4961;5010:2;4998:9;4989:7;4985:23;4981:32;4978:119;;;5016:79;;:::i;:::-;4978:119;5136:1;5161:53;5206:7;5197:6;5186:9;5182:22;5161:53;:::i;:::-;5151:63;;5107:117;5263:2;5289:53;5334:7;5325:6;5314:9;5310:22;5289:53;:::i;:::-;5279:63;;5234:118;5391:2;5417:53;5462:7;5453:6;5442:9;5438:22;5417:53;:::i;:::-;5407:63;;5362:118;4868:619;;;;;:::o;5493:86::-;5528:7;5568:4;5561:5;5557:16;5546:27;;5493:86;;;:::o;5585:112::-;5668:22;5684:5;5668:22;:::i;:::-;5663:3;5656:35;5585:112;;:::o;5703:214::-;5792:4;5830:2;5819:9;5815:18;5807:26;;5843:67;5907:1;5896:9;5892:17;5883:6;5843:67;:::i;:::-;5703:214;;;;:::o;5923:329::-;5982:6;6031:2;6019:9;6010:7;6006:23;6002:32;5999:119;;;6037:79;;:::i;:::-;5999:119;6157:1;6182:53;6227:7;6218:6;6207:9;6203:22;6182:53;:::i;:::-;6172:63;;6128:117;5923:329;;;;:::o;6258:468::-;6323:6;6331;6380:2;6368:9;6359:7;6355:23;6351:32;6348:119;;;6386:79;;:::i;:::-;6348:119;6506:1;6531:53;6576:7;6567:6;6556:9;6552:22;6531:53;:::i;:::-;6521:63;;6477:117;6633:2;6659:50;6701:7;6692:6;6681:9;6677:22;6659:50;:::i;:::-;6649:60;;6604:115;6258:468;;;;;:::o;6732:118::-;6819:24;6837:5;6819:24;:::i;:::-;6814:3;6807:37;6732:118;;:::o;6856:222::-;6949:4;6987:2;6976:9;6972:18;6964:26;;7000:71;7068:1;7057:9;7053:17;7044:6;7000:71;:::i;:::-;6856:222;;;;:::o;7084:117::-;7193:1;7190;7183:12;7207:180;7255:77;7252:1;7245:88;7352:4;7349:1;7342:15;7376:4;7373:1;7366:15;7393:281;7476:27;7498:4;7476:27;:::i;:::-;7468:6;7464:40;7606:6;7594:10;7591:22;7570:18;7558:10;7555:34;7552:62;7549:88;;;7617:18;;:::i;:::-;7549:88;7657:10;7653:2;7646:22;7436:238;7393:281;;:::o;7680:129::-;7714:6;7741:20;;:::i;:::-;7731:30;;7770:33;7798:4;7790:6;7770:33;:::i;:::-;7680:129;;;:::o;7815:311::-;7892:4;7982:18;7974:6;7971:30;7968:56;;;8004:18;;:::i;:::-;7968:56;8054:4;8046:6;8042:17;8034:25;;8114:4;8108;8104:15;8096:23;;7815:311;;;:::o;8132:117::-;8241:1;8238;8231:12;8272:710;8368:5;8393:81;8409:64;8466:6;8409:64;:::i;:::-;8393:81;:::i;:::-;8384:90;;8494:5;8523:6;8516:5;8509:21;8557:4;8550:5;8546:16;8539:23;;8610:4;8602:6;8598:17;8590:6;8586:30;8639:3;8631:6;8628:15;8625:122;;;8658:79;;:::i;:::-;8625:122;8773:6;8756:220;8790:6;8785:3;8782:15;8756:220;;;8865:3;8894:37;8927:3;8915:10;8894:37;:::i;:::-;8889:3;8882:50;8961:4;8956:3;8952:14;8945:21;;8832:144;8816:4;8811:3;8807:14;8800:21;;8756:220;;;8760:21;8374:608;;8272:710;;;;;:::o;9005:370::-;9076:5;9125:3;9118:4;9110:6;9106:17;9102:27;9092:122;;9133:79;;:::i;:::-;9092:122;9250:6;9237:20;9275:94;9365:3;9357:6;9350:4;9342:6;9338:17;9275:94;:::i;:::-;9266:103;;9082:293;9005:370;;;;:::o;9381:678::-;9471:6;9479;9528:2;9516:9;9507:7;9503:23;9499:32;9496:119;;;9534:79;;:::i;:::-;9496:119;9682:1;9671:9;9667:17;9654:31;9712:18;9704:6;9701:30;9698:117;;;9734:79;;:::i;:::-;9698:117;9839:78;9909:7;9900:6;9889:9;9885:22;9839:78;:::i;:::-;9829:88;;9625:302;9966:2;9992:50;10034:7;10025:6;10014:9;10010:22;9992:50;:::i;:::-;9982:60;;9937:115;9381:678;;;;;:::o;10065:474::-;10133:6;10141;10190:2;10178:9;10169:7;10165:23;10161:32;10158:119;;;10196:79;;:::i;:::-;10158:119;10316:1;10341:53;10386:7;10377:6;10366:9;10362:22;10341:53;:::i;:::-;10331:63;;10287:117;10443:2;10469:53;10514:7;10505:6;10494:9;10490:22;10469:53;:::i;:::-;10459:63;;10414:118;10065:474;;;;;:::o;10545:60::-;10573:3;10594:5;10587:12;;10545:60;;;:::o;10611:142::-;10661:9;10694:53;10712:34;10721:24;10739:5;10721:24;:::i;:::-;10712:34;:::i;:::-;10694:53;:::i;:::-;10681:66;;10611:142;;;:::o;10759:126::-;10809:9;10842:37;10873:5;10842:37;:::i;:::-;10829:50;;10759:126;;;:::o;10891:141::-;10956:9;10989:37;11020:5;10989:37;:::i;:::-;10976:50;;10891:141;;;:::o;11038:161::-;11140:52;11186:5;11140:52;:::i;:::-;11135:3;11128:65;11038:161;;:::o;11205:252::-;11313:4;11351:2;11340:9;11336:18;11328:26;;11364:86;11447:1;11436:9;11432:17;11423:6;11364:86;:::i;:::-;11205:252;;;;:::o;11463:180::-;11511:77;11508:1;11501:88;11608:4;11605:1;11598:15;11632:4;11629:1;11622:15;11649:320;11693:6;11730:1;11724:4;11720:12;11710:22;;11777:1;11771:4;11767:12;11798:18;11788:81;;11854:4;11846:6;11842:17;11832:27;;11788:81;11916:2;11908:6;11905:14;11885:18;11882:38;11879:84;;11935:18;;:::i;:::-;11879:84;11700:269;11649:320;;;:::o;11975:182::-;12115:34;12111:1;12103:6;12099:14;12092:58;11975:182;:::o;12163:366::-;12305:3;12326:67;12390:2;12385:3;12326:67;:::i;:::-;12319:74;;12402:93;12491:3;12402:93;:::i;:::-;12520:2;12515:3;12511:12;12504:19;;12163:366;;;:::o;12535:419::-;12701:4;12739:2;12728:9;12724:18;12716:26;;12788:9;12782:4;12778:20;12774:1;12763:9;12759:17;12752:47;12816:131;12942:4;12816:131;:::i;:::-;12808:139;;12535:419;;;:::o;12960:224::-;13100:34;13096:1;13088:6;13084:14;13077:58;13169:7;13164:2;13156:6;13152:15;13145:32;12960:224;:::o;13190:366::-;13332:3;13353:67;13417:2;13412:3;13353:67;:::i;:::-;13346:74;;13429:93;13518:3;13429:93;:::i;:::-;13547:2;13542:3;13538:12;13531:19;;13190:366;;;:::o;13562:419::-;13728:4;13766:2;13755:9;13751:18;13743:26;;13815:9;13809:4;13805:20;13801:1;13790:9;13786:17;13779:47;13843:131;13969:4;13843:131;:::i;:::-;13835:139;;13562:419;;;:::o;13987:239::-;14127:34;14123:1;14115:6;14111:14;14104:58;14196:22;14191:2;14183:6;14179:15;14172:47;13987:239;:::o;14232:366::-;14374:3;14395:67;14459:2;14454:3;14395:67;:::i;:::-;14388:74;;14471:93;14560:3;14471:93;:::i;:::-;14589:2;14584:3;14580:12;14573:19;;14232:366;;;:::o;14604:419::-;14770:4;14808:2;14797:9;14793:18;14785:26;;14857:9;14851:4;14847:20;14843:1;14832:9;14828:17;14821:47;14885:131;15011:4;14885:131;:::i;:::-;14877:139;;14604:419;;;:::o;15029:180::-;15077:77;15074:1;15067:88;15174:4;15171:1;15164:15;15198:4;15195:1;15188:15;15215:102;15257:8;15304:5;15301:1;15297:13;15276:34;;15215:102;;;:::o;15323:848::-;15384:5;15391:4;15415:6;15406:15;;15439:5;15430:14;;15453:712;15474:1;15464:8;15461:15;15453:712;;;15569:4;15564:3;15560:14;15554:4;15551:24;15548:50;;;15578:18;;:::i;:::-;15548:50;15628:1;15618:8;15614:16;15611:451;;;16043:4;16036:5;16032:16;16023:25;;15611:451;16093:4;16087;16083:15;16075:23;;16123:32;16146:8;16123:32;:::i;:::-;16111:44;;15453:712;;;15323:848;;;;;;;:::o;16177:1073::-;16231:5;16422:8;16412:40;;16443:1;16434:10;;16445:5;;16412:40;16471:4;16461:36;;16488:1;16479:10;;16490:5;;16461:36;16557:4;16605:1;16600:27;;;;16641:1;16636:191;;;;16550:277;;16600:27;16618:1;16609:10;;16620:5;;;16636:191;16681:3;16671:8;16668:17;16665:43;;;16688:18;;:::i;:::-;16665:43;16737:8;16734:1;16730:16;16721:25;;16772:3;16765:5;16762:14;16759:40;;;16779:18;;:::i;:::-;16759:40;16812:5;;;16550:277;;16936:2;16926:8;16923:16;16917:3;16911:4;16908:13;16904:36;16886:2;16876:8;16873:16;16868:2;16862:4;16859:12;16855:35;16839:111;16836:246;;;16992:8;16986:4;16982:19;16973:28;;17027:3;17020:5;17017:14;17014:40;;;17034:18;;:::i;:::-;17014:40;17067:5;;16836:246;17107:42;17145:3;17135:8;17129:4;17126:1;17107:42;:::i;:::-;17092:57;;;;17181:4;17176:3;17172:14;17165:5;17162:25;17159:51;;;17190:18;;:::i;:::-;17159:51;17239:4;17232:5;17228:16;17219:25;;16177:1073;;;;;;:::o;17256:281::-;17314:5;17338:23;17356:4;17338:23;:::i;:::-;17330:31;;17382:25;17398:8;17382:25;:::i;:::-;17370:37;;17426:104;17463:66;17453:8;17447:4;17426:104;:::i;:::-;17417:113;;17256:281;;;;:::o;17543:410::-;17583:7;17606:20;17624:1;17606:20;:::i;:::-;17601:25;;17640:20;17658:1;17640:20;:::i;:::-;17635:25;;17695:1;17692;17688:9;17717:30;17735:11;17717:30;:::i;:::-;17706:41;;17896:1;17887:7;17883:15;17880:1;17877:22;17857:1;17850:9;17830:83;17807:139;;17926:18;;:::i;:::-;17807:139;17591:362;17543:410;;;;:::o;17959:227::-;18099:34;18095:1;18087:6;18083:14;18076:58;18168:10;18163:2;18155:6;18151:15;18144:35;17959:227;:::o;18192:366::-;18334:3;18355:67;18419:2;18414:3;18355:67;:::i;:::-;18348:74;;18431:93;18520:3;18431:93;:::i;:::-;18549:2;18544:3;18540:12;18533:19;;18192:366;;;:::o;18564:419::-;18730:4;18768:2;18757:9;18753:18;18745:26;;18817:9;18811:4;18807:20;18803:1;18792:9;18788:17;18781:47;18845:131;18971:4;18845:131;:::i;:::-;18837:139;;18564:419;;;:::o;18989:194::-;19029:4;19049:20;19067:1;19049:20;:::i;:::-;19044:25;;19083:20;19101:1;19083:20;:::i;:::-;19078:25;;19127:1;19124;19120:9;19112:17;;19151:1;19145:4;19142:11;19139:37;;;19156:18;;:::i;:::-;19139:37;18989:194;;;;:::o;19189:191::-;19229:3;19248:20;19266:1;19248:20;:::i;:::-;19243:25;;19282:20;19300:1;19282:20;:::i;:::-;19277:25;;19325:1;19322;19318:9;19311:16;;19346:3;19343:1;19340:10;19337:36;;;19353:18;;:::i;:::-;19337:36;19189:191;;;;:::o;19386:221::-;19526:34;19522:1;19514:6;19510:14;19503:58;19595:4;19590:2;19582:6;19578:15;19571:29;19386:221;:::o;19613:366::-;19755:3;19776:67;19840:2;19835:3;19776:67;:::i;:::-;19769:74;;19852:93;19941:3;19852:93;:::i;:::-;19970:2;19965:3;19961:12;19954:19;;19613:366;;;:::o;19985:419::-;20151:4;20189:2;20178:9;20174:18;20166:26;;20238:9;20232:4;20228:20;20224:1;20213:9;20209:17;20202:47;20266:131;20392:4;20266:131;:::i;:::-;20258:139;;19985:419;;;:::o;20410:174::-;20550:26;20546:1;20538:6;20534:14;20527:50;20410:174;:::o;20590:366::-;20732:3;20753:67;20817:2;20812:3;20753:67;:::i;:::-;20746:74;;20829:93;20918:3;20829:93;:::i;:::-;20947:2;20942:3;20938:12;20931:19;;20590:366;;;:::o;20962:419::-;21128:4;21166:2;21155:9;21151:18;21143:26;;21215:9;21209:4;21205:20;21201:1;21190:9;21186:17;21179:47;21243:131;21369:4;21243:131;:::i;:::-;21235:139;;20962:419;;;:::o;21387:332::-;21508:4;21546:2;21535:9;21531:18;21523:26;;21559:71;21627:1;21616:9;21612:17;21603:6;21559:71;:::i;:::-;21640:72;21708:2;21697:9;21693:18;21684:6;21640:72;:::i;:::-;21387:332;;;;;:::o;21725:174::-;21865:26;21861:1;21853:6;21849:14;21842:50;21725:174;:::o;21905:366::-;22047:3;22068:67;22132:2;22127:3;22068:67;:::i;:::-;22061:74;;22144:93;22233:3;22144:93;:::i;:::-;22262:2;22257:3;22253:12;22246:19;;21905:366;;;:::o;22277:419::-;22443:4;22481:2;22470:9;22466:18;22458:26;;22530:9;22524:4;22520:20;22516:1;22505:9;22501:17;22494:47;22558:131;22684:4;22558:131;:::i;:::-;22550:139;;22277:419;;;:::o;22702:241::-;22842:34;22838:1;22830:6;22826:14;22819:58;22911:24;22906:2;22898:6;22894:15;22887:49;22702:241;:::o;22949:366::-;23091:3;23112:67;23176:2;23171:3;23112:67;:::i;:::-;23105:74;;23188:93;23277:3;23188:93;:::i;:::-;23306:2;23301:3;23297:12;23290:19;;22949:366;;;:::o;23321:419::-;23487:4;23525:2;23514:9;23510:18;23502:26;;23574:9;23568:4;23564:20;23560:1;23549:9;23545:17;23538:47;23602:131;23728:4;23602:131;:::i;:::-;23594:139;;23321:419;;;:::o;23746:332::-;23867:4;23905:2;23894:9;23890:18;23882:26;;23918:71;23986:1;23975:9;23971:17;23962:6;23918:71;:::i;:::-;23999:72;24067:2;24056:9;24052:18;24043:6;23999:72;:::i;:::-;23746:332;;;;;:::o;24084:137::-;24138:5;24169:6;24163:13;24154:22;;24185:30;24209:5;24185:30;:::i;:::-;24084:137;;;;:::o;24227:345::-;24294:6;24343:2;24331:9;24322:7;24318:23;24314:32;24311:119;;;24349:79;;:::i;:::-;24311:119;24469:1;24494:61;24547:7;24538:6;24527:9;24523:22;24494:61;:::i;:::-;24484:71;;24440:125;24227:345;;;;:::o;24578:180::-;24626:77;24623:1;24616:88;24723:4;24720:1;24713:15;24747:4;24744:1;24737:15;24764:233;24803:3;24826:24;24844:5;24826:24;:::i;:::-;24817:33;;24872:66;24865:5;24862:77;24859:103;;24942:18;;:::i;:::-;24859:103;24989:1;24982:5;24978:13;24971:20;;24764:233;;;:::o;25003:224::-;25143:34;25139:1;25131:6;25127:14;25120:58;25212:7;25207:2;25199:6;25195:15;25188:32;25003:224;:::o;25233:366::-;25375:3;25396:67;25460:2;25455:3;25396:67;:::i;:::-;25389:74;;25472:93;25561:3;25472:93;:::i;:::-;25590:2;25585:3;25581:12;25574:19;;25233:366;;;:::o;25605:419::-;25771:4;25809:2;25798:9;25794:18;25786:26;;25858:9;25852:4;25848:20;25844:1;25833:9;25829:17;25822:47;25886:131;26012:4;25886:131;:::i;:::-;25878:139;;25605:419;;;:::o;26030:230::-;26170:34;26166:1;26158:6;26154:14;26147:58;26239:13;26234:2;26226:6;26222:15;26215:38;26030:230;:::o;26266:366::-;26408:3;26429:67;26493:2;26488:3;26429:67;:::i;:::-;26422:74;;26505:93;26594:3;26505:93;:::i;:::-;26623:2;26618:3;26614:12;26607:19;;26266:366;;;:::o;26638:419::-;26804:4;26842:2;26831:9;26827:18;26819:26;;26891:9;26885:4;26881:20;26877:1;26866:9;26862:17;26855:47;26919:131;27045:4;26919:131;:::i;:::-;26911:139;;26638:419;;;:::o;27063:226::-;27203:34;27199:1;27191:6;27187:14;27180:58;27272:9;27267:2;27259:6;27255:15;27248:34;27063:226;:::o;27295:366::-;27437:3;27458:67;27522:2;27517:3;27458:67;:::i;:::-;27451:74;;27534:93;27623:3;27534:93;:::i;:::-;27652:2;27647:3;27643:12;27636:19;;27295:366;;;:::o;27667:419::-;27833:4;27871:2;27860:9;27856:18;27848:26;;27920:9;27914:4;27910:20;27906:1;27895:9;27891:17;27884:47;27948:131;28074:4;27948:131;:::i;:::-;27940:139;;27667:419;;;:::o;28092:225::-;28232:34;28228:1;28220:6;28216:14;28209:58;28301:8;28296:2;28288:6;28284:15;28277:33;28092:225;:::o;28323:366::-;28465:3;28486:67;28550:2;28545:3;28486:67;:::i;:::-;28479:74;;28562:93;28651:3;28562:93;:::i;:::-;28680:2;28675:3;28671:12;28664:19;;28323:366;;;:::o;28695:419::-;28861:4;28899:2;28888:9;28884:18;28876:26;;28948:9;28942:4;28938:20;28934:1;28923:9;28919:17;28912:47;28976:131;29102:4;28976:131;:::i;:::-;28968:139;;28695:419;;;:::o;29120:223::-;29260:34;29256:1;29248:6;29244:14;29237:58;29329:6;29324:2;29316:6;29312:15;29305:31;29120:223;:::o;29349:366::-;29491:3;29512:67;29576:2;29571:3;29512:67;:::i;:::-;29505:74;;29588:93;29677:3;29588:93;:::i;:::-;29706:2;29701:3;29697:12;29690:19;;29349:366;;;:::o;29721:419::-;29887:4;29925:2;29914:9;29910:18;29902:26;;29974:9;29968:4;29964:20;29960:1;29949:9;29945:17;29938:47;30002:131;30128:4;30002:131;:::i;:::-;29994:139;;29721:419;;;:::o;30146:221::-;30286:34;30282:1;30274:6;30270:14;30263:58;30355:4;30350:2;30342:6;30338:15;30331:29;30146:221;:::o;30373:366::-;30515:3;30536:67;30600:2;30595:3;30536:67;:::i;:::-;30529:74;;30612:93;30701:3;30612:93;:::i;:::-;30730:2;30725:3;30721:12;30714:19;;30373:366;;;:::o;30745:419::-;30911:4;30949:2;30938:9;30934:18;30926:26;;30998:9;30992:4;30988:20;30984:1;30973:9;30969:17;30962:47;31026:131;31152:4;31026:131;:::i;:::-;31018:139;;30745:419;;;:::o;31170:228::-;31310:34;31306:1;31298:6;31294:14;31287:58;31379:11;31374:2;31366:6;31362:15;31355:36;31170:228;:::o;31404:366::-;31546:3;31567:67;31631:2;31626:3;31567:67;:::i;:::-;31560:74;;31643:93;31732:3;31643:93;:::i;:::-;31761:2;31756:3;31752:12;31745:19;;31404:366;;;:::o;31776:419::-;31942:4;31980:2;31969:9;31965:18;31957:26;;32029:9;32023:4;32019:20;32015:1;32004:9;32000:17;31993:47;32057:131;32183:4;32057:131;:::i;:::-;32049:139;;31776:419;;;:::o;32201:175::-;32341:27;32337:1;32329:6;32325:14;32318:51;32201:175;:::o;32382:366::-;32524:3;32545:67;32609:2;32604:3;32545:67;:::i;:::-;32538:74;;32621:93;32710:3;32621:93;:::i;:::-;32739:2;32734:3;32730:12;32723:19;;32382:366;;;:::o;32754:419::-;32920:4;32958:2;32947:9;32943:18;32935:26;;33007:9;33001:4;32997:20;32993:1;32982:9;32978:17;32971:47;33035:131;33161:4;33035:131;:::i;:::-;33027:139;;32754:419;;;:::o;33179:169::-;33319:21;33315:1;33307:6;33303:14;33296:45;33179:169;:::o;33354:366::-;33496:3;33517:67;33581:2;33576:3;33517:67;:::i;:::-;33510:74;;33593:93;33682:3;33593:93;:::i;:::-;33711:2;33706:3;33702:12;33695:19;;33354:366;;;:::o;33726:419::-;33892:4;33930:2;33919:9;33915:18;33907:26;;33979:9;33973:4;33969:20;33965:1;33954:9;33950:17;33943:47;34007:131;34133:4;34007:131;:::i;:::-;33999:139;;33726:419;;;:::o;34151:175::-;34291:27;34287:1;34279:6;34275:14;34268:51;34151:175;:::o;34332:366::-;34474:3;34495:67;34559:2;34554:3;34495:67;:::i;:::-;34488:74;;34571:93;34660:3;34571:93;:::i;:::-;34689:2;34684:3;34680:12;34673:19;;34332:366;;;:::o;34704:419::-;34870:4;34908:2;34897:9;34893:18;34885:26;;34957:9;34951:4;34947:20;34943:1;34932:9;34928:17;34921:47;34985:131;35111:4;34985:131;:::i;:::-;34977:139;;34704:419;;;:::o;35129:176::-;35269:28;35265:1;35257:6;35253:14;35246:52;35129:176;:::o;35311:366::-;35453:3;35474:67;35538:2;35533:3;35474:67;:::i;:::-;35467:74;;35550:93;35639:3;35550:93;:::i;:::-;35668:2;35663:3;35659:12;35652:19;;35311:366;;;:::o;35683:419::-;35849:4;35887:2;35876:9;35872:18;35864:26;;35936:9;35930:4;35926:20;35922:1;35911:9;35907:17;35900:47;35964:131;36090:4;35964:131;:::i;:::-;35956:139;;35683:419;;;:::o;36108:180::-;36156:77;36153:1;36146:88;36253:4;36250:1;36243:15;36277:4;36274:1;36267:15;36294:185;36334:1;36351:20;36369:1;36351:20;:::i;:::-;36346:25;;36385:20;36403:1;36385:20;:::i;:::-;36380:25;;36424:1;36414:35;;36429:18;;:::i;:::-;36414:35;36471:1;36468;36464:9;36459:14;;36294:185;;;;:::o;36485:224::-;36625:34;36621:1;36613:6;36609:14;36602:58;36694:7;36689:2;36681:6;36677:15;36670:32;36485:224;:::o;36715:366::-;36857:3;36878:67;36942:2;36937:3;36878:67;:::i;:::-;36871:74;;36954:93;37043:3;36954:93;:::i;:::-;37072:2;37067:3;37063:12;37056:19;;36715:366;;;:::o;37087:419::-;37253:4;37291:2;37280:9;37276:18;37268:26;;37340:9;37334:4;37330:20;37326:1;37315:9;37311:17;37304:47;37368:131;37494:4;37368:131;:::i;:::-;37360:139;;37087:419;;;:::o;37512:222::-;37652:34;37648:1;37640:6;37636:14;37629:58;37721:5;37716:2;37708:6;37704:15;37697:30;37512:222;:::o;37740:366::-;37882:3;37903:67;37967:2;37962:3;37903:67;:::i;:::-;37896:74;;37979:93;38068:3;37979:93;:::i;:::-;38097:2;38092:3;38088:12;38081:19;;37740:366;;;:::o;38112:419::-;38278:4;38316:2;38305:9;38301:18;38293:26;;38365:9;38359:4;38355:20;38351:1;38340:9;38336:17;38329:47;38393:131;38519:4;38393:131;:::i;:::-;38385:139;;38112:419;;;:::o;38537:225::-;38677:34;38673:1;38665:6;38661:14;38654:58;38746:8;38741:2;38733:6;38729:15;38722:33;38537:225;:::o;38768:366::-;38910:3;38931:67;38995:2;38990:3;38931:67;:::i;:::-;38924:74;;39007:93;39096:3;39007:93;:::i;:::-;39125:2;39120:3;39116:12;39109:19;;38768:366;;;:::o;39140:419::-;39306:4;39344:2;39333:9;39329:18;39321:26;;39393:9;39387:4;39383:20;39379:1;39368:9;39364:17;39357:47;39421:131;39547:4;39421:131;:::i;:::-;39413:139;;39140:419;;;:::o;39565:143::-;39622:5;39653:6;39647:13;39638:22;;39669:33;39696:5;39669:33;:::i;:::-;39565:143;;;;:::o;39714:351::-;39784:6;39833:2;39821:9;39812:7;39808:23;39804:32;39801:119;;;39839:79;;:::i;:::-;39801:119;39959:1;39984:64;40040:7;40031:6;40020:9;40016:22;39984:64;:::i;:::-;39974:74;;39930:128;39714:351;;;;:::o;40071:85::-;40116:7;40145:5;40134:16;;40071:85;;;:::o;40162:158::-;40220:9;40253:61;40271:42;40280:32;40306:5;40280:32;:::i;:::-;40271:42;:::i;:::-;40253:61;:::i;:::-;40240:74;;40162:158;;;:::o;40326:147::-;40421:45;40460:5;40421:45;:::i;:::-;40416:3;40409:58;40326:147;;:::o;40479:114::-;40546:6;40580:5;40574:12;40564:22;;40479:114;;;:::o;40599:184::-;40698:11;40732:6;40727:3;40720:19;40772:4;40767:3;40763:14;40748:29;;40599:184;;;;:::o;40789:132::-;40856:4;40879:3;40871:11;;40909:4;40904:3;40900:14;40892:22;;40789:132;;;:::o;40927:108::-;41004:24;41022:5;41004:24;:::i;:::-;40999:3;40992:37;40927:108;;:::o;41041:179::-;41110:10;41131:46;41173:3;41165:6;41131:46;:::i;:::-;41209:4;41204:3;41200:14;41186:28;;41041:179;;;;:::o;41226:113::-;41296:4;41328;41323:3;41319:14;41311:22;;41226:113;;;:::o;41375:732::-;41494:3;41523:54;41571:5;41523:54;:::i;:::-;41593:86;41672:6;41667:3;41593:86;:::i;:::-;41586:93;;41703:56;41753:5;41703:56;:::i;:::-;41782:7;41813:1;41798:284;41823:6;41820:1;41817:13;41798:284;;;41899:6;41893:13;41926:63;41985:3;41970:13;41926:63;:::i;:::-;41919:70;;42012:60;42065:6;42012:60;:::i;:::-;42002:70;;41858:224;41845:1;41842;41838:9;41833:14;;41798:284;;;41802:14;42098:3;42091:10;;41499:608;;;41375:732;;;;:::o;42113:831::-;42376:4;42414:3;42403:9;42399:19;42391:27;;42428:71;42496:1;42485:9;42481:17;42472:6;42428:71;:::i;:::-;42509:80;42585:2;42574:9;42570:18;42561:6;42509:80;:::i;:::-;42636:9;42630:4;42626:20;42621:2;42610:9;42606:18;42599:48;42664:108;42767:4;42758:6;42664:108;:::i;:::-;42656:116;;42782:72;42850:2;42839:9;42835:18;42826:6;42782:72;:::i;:::-;42864:73;42932:3;42921:9;42917:19;42908:6;42864:73;:::i;:::-;42113:831;;;;;;;;:::o;42950:807::-;43199:4;43237:3;43226:9;43222:19;43214:27;;43251:71;43319:1;43308:9;43304:17;43295:6;43251:71;:::i;:::-;43332:72;43400:2;43389:9;43385:18;43376:6;43332:72;:::i;:::-;43414:80;43490:2;43479:9;43475:18;43466:6;43414:80;:::i;:::-;43504;43580:2;43569:9;43565:18;43556:6;43504:80;:::i;:::-;43594:73;43662:3;43651:9;43647:19;43638:6;43594:73;:::i;:::-;43677;43745:3;43734:9;43730:19;43721:6;43677:73;:::i;:::-;42950:807;;;;;;;;;:::o;43763:143::-;43820:5;43851:6;43845:13;43836:22;;43867:33;43894:5;43867:33;:::i;:::-;43763:143;;;;:::o;43912:663::-;44000:6;44008;44016;44065:2;44053:9;44044:7;44040:23;44036:32;44033:119;;;44071:79;;:::i;:::-;44033:119;44191:1;44216:64;44272:7;44263:6;44252:9;44248:22;44216:64;:::i;:::-;44206:74;;44162:128;44329:2;44355:64;44411:7;44402:6;44391:9;44387:22;44355:64;:::i;:::-;44345:74;;44300:129;44468:2;44494:64;44550:7;44541:6;44530:9;44526:22;44494:64;:::i;:::-;44484:74;;44439:129;43912:663;;;;;:::o;44581:179::-;44721:31;44717:1;44709:6;44705:14;44698:55;44581:179;:::o;44766:366::-;44908:3;44929:67;44993:2;44988:3;44929:67;:::i;:::-;44922:74;;45005:93;45094:3;45005:93;:::i;:::-;45123:2;45118:3;45114:12;45107:19;;44766:366;;;:::o;45138:419::-;45304:4;45342:2;45331:9;45327:18;45319:26;;45391:9;45385:4;45381:20;45377:1;45366:9;45362:17;45355:47;45419:131;45545:4;45419:131;:::i;:::-;45411:139;;45138:419;;;:::o;45563:147::-;45664:11;45701:3;45686:18;;45563:147;;;;:::o;45716:114::-;;:::o;45836:398::-;45995:3;46016:83;46097:1;46092:3;46016:83;:::i;:::-;46009:90;;46108:93;46197:3;46108:93;:::i;:::-;46226:1;46221:3;46217:11;46210:18;;45836:398;;;:::o;46240:379::-;46424:3;46446:147;46589:3;46446:147;:::i;:::-;46439:154;;46610:3;46603:10;;46240:379;;;:::o;46625:245::-;46765:34;46761:1;46753:6;46749:14;46742:58;46834:28;46829:2;46821:6;46817:15;46810:53;46625:245;:::o;46876:366::-;47018:3;47039:67;47103:2;47098:3;47039:67;:::i;:::-;47032:74;;47115:93;47204:3;47115:93;:::i;:::-;47233:2;47228:3;47224:12;47217:19;;46876:366;;;:::o;47248:419::-;47414:4;47452:2;47441:9;47437:18;47429:26;;47501:9;47495:4;47491:20;47487:1;47476:9;47472:17;47465:47;47529:131;47655:4;47529:131;:::i;:::-;47521:139;;47248:419;;;:::o

Swarm Source

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