ETH Price: $2,296.75 (+0.38%)

Token

Anonarchy (Anon2.0)
 

Overview

Max Total Supply

1,000,000,000,000 Anon2.0

Holders

58

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
4,851,000,000 Anon2.0

Value
$0.00
0x88565bDE2D55eA0460ACd250f05818acC9B91E99
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:
Anonarchy

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-04
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.17;

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

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


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
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);
}



/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

    /**
     * @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");
        unchecked {
            _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");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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


interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

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

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SignedSafeMath` is no longer needed starting with Solidity 0.8. The compiler
 * now has built in overflow checking.
 */
library SignedSafeMath {
    /**
     * @dev Returns the multiplication of two signed integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(int256 a, int256 b) internal pure returns (int256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two signed integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(int256 a, int256 b) internal pure returns (int256) {
        return a / b;
    }

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

    /**
     * @dev Returns the addition of two signed integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(int256 a, int256 b) internal pure returns (int256) {
        return a + b;
    }
}

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

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

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

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

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

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

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

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

/**
 * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow
 * checks.
 *
 * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can
 * easily result in undesired exploitation or bugs, since developers usually
 * assume that overflows raise errors. `SafeCast` restores this intuition by
 * reverting the transaction when such an operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 *
 * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing
 * all math on `uint256` and `int256` and then downcasting.
 */
library SafeCast {
    /**
     * @dev Returns the downcasted uint224 from uint256, reverting on
     * overflow (when the input is greater than largest uint224).
     *
     * Counterpart to Solidity's `uint224` operator.
     *
     * Requirements:
     *
     * - input must fit into 224 bits
     */
    function toUint224(uint256 value) internal pure returns (uint224) {
        require(value <= type(uint224).max, "SafeCast: value doesn't fit in 224 bits");
        return uint224(value);
    }

    /**
     * @dev Returns the downcasted uint128 from uint256, reverting on
     * overflow (when the input is greater than largest uint128).
     *
     * Counterpart to Solidity's `uint128` operator.
     *
     * Requirements:
     *
     * - input must fit into 128 bits
     */
    function toUint128(uint256 value) internal pure returns (uint128) {
        require(value <= type(uint128).max, "SafeCast: value doesn't fit in 128 bits");
        return uint128(value);
    }

    /**
     * @dev Returns the downcasted uint96 from uint256, reverting on
     * overflow (when the input is greater than largest uint96).
     *
     * Counterpart to Solidity's `uint96` operator.
     *
     * Requirements:
     *
     * - input must fit into 96 bits
     */
    function toUint96(uint256 value) internal pure returns (uint96) {
        require(value <= type(uint96).max, "SafeCast: value doesn't fit in 96 bits");
        return uint96(value);
    }

    /**
     * @dev Returns the downcasted uint64 from uint256, reverting on
     * overflow (when the input is greater than largest uint64).
     *
     * Counterpart to Solidity's `uint64` operator.
     *
     * Requirements:
     *
     * - input must fit into 64 bits
     */
    function toUint64(uint256 value) internal pure returns (uint64) {
        require(value <= type(uint64).max, "SafeCast: value doesn't fit in 64 bits");
        return uint64(value);
    }

    /**
     * @dev Returns the downcasted uint32 from uint256, reverting on
     * overflow (when the input is greater than largest uint32).
     *
     * Counterpart to Solidity's `uint32` operator.
     *
     * Requirements:
     *
     * - input must fit into 32 bits
     */
    function toUint32(uint256 value) internal pure returns (uint32) {
        require(value <= type(uint32).max, "SafeCast: value doesn't fit in 32 bits");
        return uint32(value);
    }

    /**
     * @dev Returns the downcasted uint16 from uint256, reverting on
     * overflow (when the input is greater than largest uint16).
     *
     * Counterpart to Solidity's `uint16` operator.
     *
     * Requirements:
     *
     * - input must fit into 16 bits
     */
    function toUint16(uint256 value) internal pure returns (uint16) {
        require(value <= type(uint16).max, "SafeCast: value doesn't fit in 16 bits");
        return uint16(value);
    }

    /**
     * @dev Returns the downcasted uint8 from uint256, reverting on
     * overflow (when the input is greater than largest uint8).
     *
     * Counterpart to Solidity's `uint8` operator.
     *
     * Requirements:
     *
     * - input must fit into 8 bits.
     */
    function toUint8(uint256 value) internal pure returns (uint8) {
        require(value <= type(uint8).max, "SafeCast: value doesn't fit in 8 bits");
        return uint8(value);
    }

    /**
     * @dev Converts a signed int256 into an unsigned uint256.
     *
     * Requirements:
     *
     * - input must be greater than or equal to 0.
     */
    function toUint256(int256 value) internal pure returns (uint256) {
        require(value >= 0, "SafeCast: value must be positive");
        return uint256(value);
    }

    /**
     * @dev Returns the downcasted int128 from int256, reverting on
     * overflow (when the input is less than smallest int128 or
     * greater than largest int128).
     *
     * Counterpart to Solidity's `int128` operator.
     *
     * Requirements:
     *
     * - input must fit into 128 bits
     *
     * _Available since v3.1._
     */
    function toInt128(int256 value) internal pure returns (int128) {
        require(value >= type(int128).min && value <= type(int128).max, "SafeCast: value doesn't fit in 128 bits");
        return int128(value);
    }

    /**
     * @dev Returns the downcasted int64 from int256, reverting on
     * overflow (when the input is less than smallest int64 or
     * greater than largest int64).
     *
     * Counterpart to Solidity's `int64` operator.
     *
     * Requirements:
     *
     * - input must fit into 64 bits
     *
     * _Available since v3.1._
     */
    function toInt64(int256 value) internal pure returns (int64) {
        require(value >= type(int64).min && value <= type(int64).max, "SafeCast: value doesn't fit in 64 bits");
        return int64(value);
    }

    /**
     * @dev Returns the downcasted int32 from int256, reverting on
     * overflow (when the input is less than smallest int32 or
     * greater than largest int32).
     *
     * Counterpart to Solidity's `int32` operator.
     *
     * Requirements:
     *
     * - input must fit into 32 bits
     *
     * _Available since v3.1._
     */
    function toInt32(int256 value) internal pure returns (int32) {
        require(value >= type(int32).min && value <= type(int32).max, "SafeCast: value doesn't fit in 32 bits");
        return int32(value);
    }

    /**
     * @dev Returns the downcasted int16 from int256, reverting on
     * overflow (when the input is less than smallest int16 or
     * greater than largest int16).
     *
     * Counterpart to Solidity's `int16` operator.
     *
     * Requirements:
     *
     * - input must fit into 16 bits
     *
     * _Available since v3.1._
     */
    function toInt16(int256 value) internal pure returns (int16) {
        require(value >= type(int16).min && value <= type(int16).max, "SafeCast: value doesn't fit in 16 bits");
        return int16(value);
    }

    /**
     * @dev Returns the downcasted int8 from int256, reverting on
     * overflow (when the input is less than smallest int8 or
     * greater than largest int8).
     *
     * Counterpart to Solidity's `int8` operator.
     *
     * Requirements:
     *
     * - input must fit into 8 bits.
     *
     * _Available since v3.1._
     */
    function toInt8(int256 value) internal pure returns (int8) {
        require(value >= type(int8).min && value <= type(int8).max, "SafeCast: value doesn't fit in 8 bits");
        return int8(value);
    }

    /**
     * @dev Converts an unsigned uint256 into a signed int256.
     *
     * Requirements:
     *
     * - input must be less than or equal to maxInt256.
     */
    function toInt256(uint256 value) internal pure returns (int256) {
        // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive
        require(value <= uint256(type(int256).max), "SafeCast: value doesn't fit in an int256");
        return int256(value);
    }
}


contract LockToken is Ownable {
    bool public isOpen = false;
    mapping(address => bool) private _whiteList;
    modifier open(address from, address to) {
        require(isOpen || _whiteList[from] || _whiteList[to], "Not Open");
        _;
    }

    constructor() {
        _whiteList[msg.sender] = true;
        _whiteList[address(this)] = true;
    }

    function openTrade() external onlyOwner {
        isOpen = true;
    }

    function includeToWhiteList(address[] memory _users) external onlyOwner {
        for(uint8 i = 0; i < _users.length; i++) {
            _whiteList[_users[i]] = true;
        }
    }
}


contract Anonarchy is ERC20, Ownable, LockToken {

    using SafeMath for uint256;

    IUniswapV2Router02 public uniswapV2Router;
    address public immutable uniswapV2Pair;

    uint256 public maxTransactionAmount = 5000000000 * (10**18);
    uint256 public swapTokensAtAmount = 100000000 * (10**18);
    uint256 public maxWalletToken = 5000000000 * (10**18);
   
    uint256 public liquidityFee = 1; // on buy and sell 
    uint256 public marketingFee = 1; // only on sell
    uint256 public teamFee = 1; // only on buy
    uint256 public burnFee = 1; // only on sell

    uint256 public marketingTokens;
    uint256 public liquidityTokens;
    uint256 public teamTokens;
 
    address payable private marketingWallet = payable(0x49790b63e0F87Bf006425280618eE90090377125);
    address payable private teamWallet = payable(0x4B7221638Fbc05353F5596968982E6321D54F404);
    address public deadWallet = 0x000000000000000000000000000000000000dEaD;

    bool private inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
  
    // exlcude from fees
    mapping (address => bool) private _isExcludedFromFees;
    
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapEthForTokens(uint256 amountIn, address[] path);
    event SwapAndLiquify(uint256 tokensIntoLiqudity, uint256 ethReceived);
    event MaxWalletAmountUpdated(uint256 prevValue, uint256 newValue);

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    constructor() ERC20("Anonarchy", "Anon2.0") {
    	IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
         // Create a uniswap pair for this new token
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;


        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(marketingWallet, true);
        excludeFromFees(teamWallet, true);
        excludeFromFees(address(this), true);
        
        /*
            internal function  that is only called here,
            and CANNOT be called ever again
        */
        _createTokens(owner(), 1000000000000 * (10**18));
    }

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

        if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if(!_isExcludedFromFees[from] && !_isExcludedFromFees[to]){
            require(amount <= maxTransactionAmount, "amount exceeds the maxSellTransactionAmount.");
        }

        if (from==uniswapV2Pair && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            uint256 contractBalanceRecepient = balanceOf(to);
            require(contractBalanceRecepient + amount <= maxWalletToken, "Exceeds maximum wallet token amount.");
        }
    
       
        if(!inSwapAndLiquify && to==uniswapV2Pair && 
            swapAndLiquifyEnabled && 
            (marketingTokens >= swapTokensAtAmount ||
            liquidityTokens >= swapTokensAtAmount ||
            teamTokens >= swapTokensAtAmount))

            {
                swapAndLiquify();
        }
             

         // if any account belongs to _isExcludedFromFee account then remove the fee
        if(!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            uint256 marketingShare;
            uint256 liquidityShare;
            uint256 teamShare;
            uint256 burnShare;
            
            if(from==uniswapV2Pair) {
                
                if(teamFee > 0) {
                    teamShare = amount.mul(teamFee).div(100);
                    teamTokens += teamShare;
                    super._transfer(from, address(this), teamShare);
                }

                if(liquidityFee > 0) {
                    liquidityShare = amount.mul(liquidityFee).div(100);
                    liquidityTokens += liquidityShare;
                    super._transfer(from, address(this), liquidityShare);
                }

            }

            if(to==uniswapV2Pair) {
               
                if(marketingFee > 0) {
                    marketingShare = amount.mul(marketingFee).div(100);
                    marketingTokens += marketingShare;
                    super._transfer(from, address(this), marketingShare);
                }

                if(liquidityFee > 0) {
                    liquidityShare = amount.mul(liquidityFee).div(100);
                    liquidityTokens += liquidityShare;
                    super._transfer(from, address(this), liquidityShare);
                }

                if(burnFee > 0) {
                    burnShare = amount.mul(burnFee).div(100);
                    super._transfer(from, deadWallet, burnShare);
                }

            }

            amount = amount.sub(marketingShare.add(liquidityShare).add(teamShare).add(burnShare));

        }

        super._transfer(from, to, amount);

    }

    function swapAndLiquify() private lockTheSwap {

        if(liquidityTokens >= swapTokensAtAmount) {
            // split the contract balance into halves
            uint256 half = swapTokensAtAmount.div(2);
            uint256 otherHalf = swapTokensAtAmount.sub(half);

            // capture the contract's current ETH balance.
            // this is so that we can capture exactly the amount of ETH that the
            // swap creates, and not make the liquidity event include any ETH that
            // has been manually sent to the contract
            uint256 initialBalance = address(this).balance;

            // swap tokens for ETH
            swapTokensForEth(half, address(this));

            // how much ETH did we just swap into?
            uint256 newBalance = address(this).balance.sub(initialBalance);

            // add liquidity to uniswap
            addLiquidity(otherHalf, newBalance);
            emit SwapAndLiquify(half, newBalance, otherHalf);
            liquidityTokens -= swapTokensAtAmount;
        }

        if(marketingTokens >= swapTokensAtAmount) {
            swapTokensForEth(swapTokensAtAmount, marketingWallet);
            marketingTokens -= swapTokensAtAmount;
        }

        if(teamTokens >= swapTokensAtAmount) {
            swapTokensForEth(swapTokensAtAmount, teamWallet);
            teamTokens -= swapTokensAtAmount;
        }
          
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function swapTokensForEth(uint256 tokenAmount, address _to) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        if(allowance(address(this), address(uniswapV2Router)) < tokenAmount) {
          _approve(address(this), address(uniswapV2Router), ~uint256(0));
        }

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            _to,
            block.timestamp
        );
        
    }

    function updateBuyFee(uint256 _liqFee, uint256 _teamFee) public onlyOwner() {
        require(_liqFee.add(_teamFee) <= 5, "tax too high");
        liquidityFee = _liqFee;
        teamFee = _teamFee;
    }

    function updateSellFee(uint256 _liqFee, uint256 _markFee, uint256 _burnFee) public onlyOwner() {
        require(_liqFee.add(_markFee).add(_burnFee) <= 5, "tax too high");
        liquidityFee = _liqFee;
        marketingFee = _markFee;
        burnFee = _burnFee;
    }

   
    function updateWallets(address payable _markWallet, address payable _teamWallet) public onlyOwner {  
        marketingWallet = _markWallet;
        teamWallet = _teamWallet;
    }

    function setMaxTransactionAmount(uint256 _maxTxAmount) public onlyOwner {
        maxTransactionAmount = _maxTxAmount;
        require(maxTransactionAmount >= totalSupply().div(400), "value too low");
    }
    
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        require(_isExcludedFromFees[account] != excluded, "Account is already the value of 'excluded'");
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    function SetSwapTokensAtAmount(uint256 newLimit) external onlyOwner {
        swapTokensAtAmount = newLimit;
    }
    
    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    
    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setMaxWalletToken(uint256 _newValue) external onlyOwner {
        uint256 prevValue = maxWalletToken;
  	    maxWalletToken = _newValue;
        require(maxWalletToken >= totalSupply().div(400), "value too low");
        emit MaxWalletAmountUpdated(prevValue, _newValue);
  	}

    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":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"prevValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"MaxWalletAmountUpdated","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":"tokensIntoLiqudity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapEthForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"SetSwapTokensAtAmount","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":[],"name":"burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"includeToWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"setMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newValue","type":"uint256"}],"name":"setMaxWalletToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liqFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"}],"name":"updateBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liqFee","type":"uint256"},{"internalType":"uint256","name":"_markFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_markWallet","type":"address"},{"internalType":"address payable","name":"_teamWallet","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526000600560146101000a81548160ff0219169083151502179055506b1027e72f1f128130880000006008556a52b7d2dcc80cd2e40000006009556b1027e72f1f12813088000000600a556001600b556001600c556001600d556001600e557349790b63e0f87bf006425280618ee90090377125601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734b7221638fbc05353f5596968982e6321d54f404601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601460156101000a81548160ff0219169083151502179055503480156200017757600080fd5b506040518060400160405280600981526020017f416e6f6e617263687900000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f416e6f6e322e30000000000000000000000000000000000000000000000000008152508160039081620001f5919062000c69565b50806004908162000207919062000c69565b5050506200022a6200021e620005a660201b60201c565b620005ae60201b60201c565b6001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000341573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000367919062000dba565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f5919062000dba565b6040518363ffffffff1660e01b81526004016200041492919062000dfd565b6020604051808303816000875af115801562000434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045a919062000dba565b905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050620004f3620004e56200067460201b60201c565b60016200069e60201b60201c565b62000528601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200069e60201b60201c565b6200055d601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200069e60201b60201c565b620005703060016200069e60201b60201c565b6200059e620005846200067460201b60201c565b6c0c9f2c9cd04674edea400000006200086d60201b60201c565b505062001089565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620006ae620005a660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006d46200067460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200072d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007249062000e8b565b60405180910390fd5b801515601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503620007c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007b99062000f23565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000861919062000f62565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008d69062000fcf565b60405180910390fd5b620008f360008383620009e560201b60201c565b806002600082825462000907919062001020565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200095e919062001020565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009c591906200106c565b60405180910390a3620009e160008383620009ea60201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a7157607f821691505b60208210810362000a875762000a8662000a29565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000af17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ab2565b62000afd868362000ab2565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b4a62000b4462000b3e8462000b15565b62000b1f565b62000b15565b9050919050565b6000819050919050565b62000b668362000b29565b62000b7e62000b758262000b51565b84845462000abf565b825550505050565b600090565b62000b9562000b86565b62000ba281848462000b5b565b505050565b5b8181101562000bca5762000bbe60008262000b8b565b60018101905062000ba8565b5050565b601f82111562000c195762000be38162000a8d565b62000bee8462000aa2565b8101602085101562000bfe578190505b62000c1662000c0d8562000aa2565b83018262000ba7565b50505b505050565b600082821c905092915050565b600062000c3e6000198460080262000c1e565b1980831691505092915050565b600062000c59838362000c2b565b9150826002028217905092915050565b62000c7482620009ef565b67ffffffffffffffff81111562000c905762000c8f620009fa565b5b62000c9c825462000a58565b62000ca982828562000bce565b600060209050601f83116001811462000ce1576000841562000ccc578287015190505b62000cd8858262000c4b565b86555062000d48565b601f19841662000cf18662000a8d565b60005b8281101562000d1b5784890151825560018201915060208501945060208101905062000cf4565b8683101562000d3b578489015162000d37601f89168262000c2b565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d828262000d55565b9050919050565b62000d948162000d75565b811462000da057600080fd5b50565b60008151905062000db48162000d89565b92915050565b60006020828403121562000dd35762000dd262000d50565b5b600062000de38482850162000da3565b91505092915050565b62000df78162000d75565b82525050565b600060408201905062000e14600083018562000dec565b62000e23602083018462000dec565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000e7360208362000e2a565b915062000e808262000e3b565b602082019050919050565b6000602082019050818103600083015262000ea68162000e64565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b600062000f0b602a8362000e2a565b915062000f188262000ead565b604082019050919050565b6000602082019050818103600083015262000f3e8162000efc565b9050919050565b60008115159050919050565b62000f5c8162000f45565b82525050565b600060208201905062000f79600083018462000f51565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000fb7601f8362000e2a565b915062000fc48262000f7f565b602082019050919050565b6000602082019050818103600083015262000fea8162000fa8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200102d8262000b15565b91506200103a8362000b15565b925082820190508082111562001055576200105462000ff1565b5b92915050565b620010668162000b15565b82525050565b60006020820190506200108360008301846200105b565b92915050565b60805161417c620010c160003960008181610e7c01528181611f6f015281816120e401528181612237015261233f015261417c6000f3fe60806040526004361061023f5760003560e01c80638b27306d1161012e578063c49b9a80116100ab578063e6c75f711161006f578063e6c75f7114610898578063e8ba854f146108c3578063f2fde38b146108ec578063fb201b1d14610915578063fce589d81461092c57610246565b8063c49b9a80146107b1578063c8c8ebe4146107da578063d7c94efd14610805578063dd62ed3e14610830578063e2f456051461086d57610246565b8063a457c2d7116100f2578063a457c2d7146106ba578063a6d4ec32146106f7578063a9059cbb14610720578063c02466681461075d578063c3e3c7bc1461078657610246565b80638b27306d146105e55780638da5cb5b1461061057806391d55f411461063b57806395d89b411461066457806398118cb41461068f57610246565b806347535d7b116101bc578063610e34b911610180578063610e34b9146105125780636b67c4df1461053b57806370a0823114610566578063715018a6146105a357806385141a77146105ba57610246565b806347535d7b1461042957806349bd5a5e146104545780634a74bb021461047f5780634b8ce602146104aa5780634fbee193146104d557610246565b806318160ddd1161020357806318160ddd146103305780631e293c101461035b57806323b872dd14610384578063313ce567146103c157806339509351146103ec57610246565b806306fdde031461024b578063095ea7b31461027657806309e89af7146102b35780630b6bb6f5146102dc5780631694505e1461030557610246565b3661024657005b600080fd5b34801561025757600080fd5b50610260610957565b60405161026d9190612e34565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190612efe565b6109e9565b6040516102aa9190612f59565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190612f74565b610a07565b005b3480156102e857600080fd5b5061030360048036038101906102fe91906130e9565b610a8d565b005b34801561031157600080fd5b5061031a610ba4565b6040516103279190613191565b60405180910390f35b34801561033c57600080fd5b50610345610bca565b60405161035291906131bb565b60405180910390f35b34801561036757600080fd5b50610382600480360381019061037d9190612f74565b610bd4565b005b34801561039057600080fd5b506103ab60048036038101906103a691906131d6565b610cba565b6040516103b89190612f59565b60405180910390f35b3480156103cd57600080fd5b506103d6610db2565b6040516103e39190613245565b60405180910390f35b3480156103f857600080fd5b50610413600480360381019061040e9190612efe565b610dbb565b6040516104209190612f59565b60405180910390f35b34801561043557600080fd5b5061043e610e67565b60405161044b9190612f59565b60405180910390f35b34801561046057600080fd5b50610469610e7a565b604051610476919061326f565b60405180910390f35b34801561048b57600080fd5b50610494610e9e565b6040516104a19190612f59565b60405180910390f35b3480156104b657600080fd5b506104bf610eb1565b6040516104cc91906131bb565b60405180910390f35b3480156104e157600080fd5b506104fc60048036038101906104f7919061328a565b610eb7565b6040516105099190612f59565b60405180910390f35b34801561051e57600080fd5b50610539600480360381019061053491906132b7565b610f0d565b005b34801561054757600080fd5b50610550610ff1565b60405161055d91906131bb565b60405180910390f35b34801561057257600080fd5b5061058d6004803603810190610588919061328a565b610ff7565b60405161059a91906131bb565b60405180910390f35b3480156105af57600080fd5b506105b861103f565b005b3480156105c657600080fd5b506105cf6110c7565b6040516105dc919061326f565b60405180910390f35b3480156105f157600080fd5b506105fa6110ed565b60405161060791906131bb565b60405180910390f35b34801561061c57600080fd5b506106256110f3565b604051610632919061326f565b60405180910390f35b34801561064757600080fd5b50610662600480360381019061065d9190612f74565b61111d565b005b34801561067057600080fd5b50610679611244565b6040516106869190612e34565b60405180910390f35b34801561069b57600080fd5b506106a46112d6565b6040516106b191906131bb565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc9190612efe565b6112dc565b6040516106ee9190612f59565b60405180910390f35b34801561070357600080fd5b5061071e600480360381019061071991906132f7565b6113c7565b005b34801561072c57600080fd5b5061074760048036038101906107429190612efe565b6114c5565b6040516107549190612f59565b60405180910390f35b34801561076957600080fd5b50610784600480360381019061077f9190613376565b6114e3565b005b34801561079257600080fd5b5061079b61169a565b6040516107a891906131bb565b60405180910390f35b3480156107bd57600080fd5b506107d860048036038101906107d391906133b6565b6116a0565b005b3480156107e657600080fd5b506107ef611770565b6040516107fc91906131bb565b60405180910390f35b34801561081157600080fd5b5061081a611776565b60405161082791906131bb565b60405180910390f35b34801561083c57600080fd5b50610857600480360381019061085291906133e3565b61177c565b60405161086491906131bb565b60405180910390f35b34801561087957600080fd5b50610882611803565b60405161088f91906131bb565b60405180910390f35b3480156108a457600080fd5b506108ad611809565b6040516108ba91906131bb565b60405180910390f35b3480156108cf57600080fd5b506108ea60048036038101906108e59190613461565b61180f565b005b3480156108f857600080fd5b50610913600480360381019061090e919061328a565b611911565b005b34801561092157600080fd5b5061092a611a08565b005b34801561093857600080fd5b50610941611aa1565b60405161094e91906131bb565b60405180910390f35b606060038054610966906134d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610992906134d0565b80156109df5780601f106109b4576101008083540402835291602001916109df565b820191906000526020600020905b8154815290600101906020018083116109c257829003601f168201915b5050505050905090565b60006109fd6109f6611aa7565b8484611aaf565b6001905092915050565b610a0f611aa7565b73ffffffffffffffffffffffffffffffffffffffff16610a2d6110f3565b73ffffffffffffffffffffffffffffffffffffffff1614610a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7a9061354d565b60405180910390fd5b8060098190555050565b610a95611aa7565b73ffffffffffffffffffffffffffffffffffffffff16610ab36110f3565b73ffffffffffffffffffffffffffffffffffffffff1614610b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b009061354d565b60405180910390fd5b60005b81518160ff161015610ba057600160066000848460ff1681518110610b3457610b3361356d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610b98906135cb565b915050610b0c565b5050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b610bdc611aa7565b73ffffffffffffffffffffffffffffffffffffffff16610bfa6110f3565b73ffffffffffffffffffffffffffffffffffffffff1614610c50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c479061354d565b60405180910390fd5b80600881905550610c73610190610c65610bca565b611c7890919063ffffffff16565b6008541015610cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cae90613640565b60405180910390fd5b50565b6000610cc7848484611c8e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d12611aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d89906136d2565b60405180910390fd5b610da685610d9e611aa7565b858403611aaf565b60019150509392505050565b60006012905090565b6000610e5d610dc8611aa7565b848460016000610dd6611aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e5891906136f2565b611aaf565b6001905092915050565b600560149054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b601460159054906101000a900460ff1681565b60105481565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610f15611aa7565b73ffffffffffffffffffffffffffffffffffffffff16610f336110f3565b73ffffffffffffffffffffffffffffffffffffffff1614610f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f809061354d565b60405180910390fd5b6005610f9e828461250b90919063ffffffff16565b1115610fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd690613772565b60405180910390fd5b81600b8190555080600d819055505050565b600c5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611047611aa7565b73ffffffffffffffffffffffffffffffffffffffff166110656110f3565b73ffffffffffffffffffffffffffffffffffffffff16146110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b29061354d565b60405180910390fd5b6110c56000612521565b565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611125611aa7565b73ffffffffffffffffffffffffffffffffffffffff166111436110f3565b73ffffffffffffffffffffffffffffffffffffffff1614611199576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111909061354d565b60405180910390fd5b6000600a54905081600a819055506111c36101906111b5610bca565b611c7890919063ffffffff16565b600a541015611207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fe90613640565b60405180910390fd5b7f0a7c714b6801281a6e2610a6371ac6a5da9a5947616d74f4aa3ad1d289278e738183604051611238929190613792565b60405180910390a15050565b606060048054611253906134d0565b80601f016020809104026020016040519081016040528092919081815260200182805461127f906134d0565b80156112cc5780601f106112a1576101008083540402835291602001916112cc565b820191906000526020600020905b8154815290600101906020018083116112af57829003601f168201915b5050505050905090565b600b5481565b600080600160006112eb611aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156113a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139f9061382d565b60405180910390fd5b6113bc6113b3611aa7565b85858403611aaf565b600191505092915050565b6113cf611aa7565b73ffffffffffffffffffffffffffffffffffffffff166113ed6110f3565b73ffffffffffffffffffffffffffffffffffffffff1614611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143a9061354d565b60405180910390fd5b600561146a8261145c858761250b90919063ffffffff16565b61250b90919063ffffffff16565b11156114ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a290613772565b60405180910390fd5b82600b8190555081600c8190555080600e81905550505050565b60006114d96114d2611aa7565b8484611c8e565b6001905092915050565b6114eb611aa7565b73ffffffffffffffffffffffffffffffffffffffff166115096110f3565b73ffffffffffffffffffffffffffffffffffffffff161461155f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115569061354d565b60405180910390fd5b801515601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036115f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e8906138bf565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161168e9190612f59565b60405180910390a25050565b60115481565b6116a8611aa7565b73ffffffffffffffffffffffffffffffffffffffff166116c66110f3565b73ffffffffffffffffffffffffffffffffffffffff161461171c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117139061354d565b60405180910390fd5b80601460156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516117659190612f59565b60405180910390a150565b60085481565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b600a5481565b611817611aa7565b73ffffffffffffffffffffffffffffffffffffffff166118356110f3565b73ffffffffffffffffffffffffffffffffffffffff161461188b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118829061354d565b60405180910390fd5b81601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611919611aa7565b73ffffffffffffffffffffffffffffffffffffffff166119376110f3565b73ffffffffffffffffffffffffffffffffffffffff161461198d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119849061354d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f390613951565b60405180910390fd5b611a0581612521565b50565b611a10611aa7565b73ffffffffffffffffffffffffffffffffffffffff16611a2e6110f3565b73ffffffffffffffffffffffffffffffffffffffff1614611a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7b9061354d565b60405180910390fd5b6001600560146101000a81548160ff021916908315150217905550565b600e5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b15906139e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8490613a75565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c6b91906131bb565b60405180910390a3505050565b60008183611c869190613ac4565b905092915050565b8282600560149054906101000a900460ff1680611cf45750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d485750600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7e90613b41565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ded90613bd3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5c90613c65565b60405180910390fd5b60008303611e7e57611e79858560006125e7565b612504565b601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f225750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f6d57600854831115611f6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6390613cf7565b60405180910390fd5b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156120125750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120685750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120cc57600061207885610ff7565b9050600a54848261208991906136f2565b11156120ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c190613d89565b60405180910390fd5b505b60148054906101000a900460ff1615801561213257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561214a5750601460159054906101000a900460ff165b80156121785750600954600f54101580612168575060095460105410155b80612177575060095460115410155b5b1561218657612185612866565b5b601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561222a5750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124f8576000806000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff160361233d576000600d5411156122e2576122bb60646122ad600d548a612a0f90919063ffffffff16565b611c7890919063ffffffff16565b915081601160008282546122cf91906136f2565b925050819055506122e18930846125e7565b5b6000600b54111561233c576123156064612307600b548a612a0f90919063ffffffff16565b611c7890919063ffffffff16565b9250826010600082825461232991906136f2565b9250508190555061233b8930856125e7565b5b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16036124a8576000600c5411156123ea576123c360646123b5600c548a612a0f90919063ffffffff16565b611c7890919063ffffffff16565b935083600f60008282546123d791906136f2565b925050819055506123e98930866125e7565b5b6000600b5411156124445761241d606461240f600b548a612a0f90919063ffffffff16565b611c7890919063ffffffff16565b9250826010600082825461243191906136f2565b925050819055506124438930856125e7565b5b6000600e5411156124a7576124776064612469600e548a612a0f90919063ffffffff16565b611c7890919063ffffffff16565b90506124a689601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836125e7565b5b5b6124f16124e2826124d4856124c6888a61250b90919063ffffffff16565b61250b90919063ffffffff16565b61250b90919063ffffffff16565b88612a2590919063ffffffff16565b9650505050505b6125038585856125e7565b5b5050505050565b6000818361251991906136f2565b905092915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264d90613bd3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bc90613c65565b60405180910390fd5b6126d0838383612a3b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612756576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274d90613e1b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127e991906136f2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161284d91906131bb565b60405180910390a3612860848484612a40565b50505050565b60016014806101000a81548160ff021916908315150217905550600954601054106129495760006128a36002600954611c7890919063ffffffff16565b905060006128bc82600954612a2590919063ffffffff16565b905060004790506128cd8330612a45565b60006128e28247612a2590919063ffffffff16565b90506128ee8382612cbf565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161292193929190613e3b565b60405180910390a16009546010600082825461293d9190613e72565b92505081905550505050505b600954600f541061299e57612982600954601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612a45565b600954600f60008282546129969190613e72565b925050819055505b600954601154106129f3576129d7600954601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612a45565b600954601160008282546129eb9190613e72565b925050819055505b60006014806101000a81548160ff021916908315150217905550565b60008183612a1d9190613ea6565b905092915050565b60008183612a339190613e72565b905092915050565b505050565b505050565b6000600267ffffffffffffffff811115612a6257612a61612fa6565b5b604051908082528060200260200182016040528015612a905781602001602082028036833780820191505090505b5090503081600081518110612aa857612aa761356d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b739190613efd565b81600181518110612b8757612b8661356d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082612bee30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661177c565b1015612c2457612c2330600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600019611aaf565b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008486426040518663ffffffff1660e01b8152600401612c88959493929190614023565b600060405180830381600087803b158015612ca257600080fd5b505af1158015612cb6573d6000803e3d6000fd5b50505050505050565b612cec30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611aaf565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612d386110f3565b426040518863ffffffff1660e01b8152600401612d5a9695949392919061407d565b60606040518083038185885af1158015612d78573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d9d91906140f3565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612dde578082015181840152602081019050612dc3565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e0682612da4565b612e108185612daf565b9350612e20818560208601612dc0565b612e2981612dea565b840191505092915050565b60006020820190508181036000830152612e4e8184612dfb565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e9582612e6a565b9050919050565b612ea581612e8a565b8114612eb057600080fd5b50565b600081359050612ec281612e9c565b92915050565b6000819050919050565b612edb81612ec8565b8114612ee657600080fd5b50565b600081359050612ef881612ed2565b92915050565b60008060408385031215612f1557612f14612e60565b5b6000612f2385828601612eb3565b9250506020612f3485828601612ee9565b9150509250929050565b60008115159050919050565b612f5381612f3e565b82525050565b6000602082019050612f6e6000830184612f4a565b92915050565b600060208284031215612f8a57612f89612e60565b5b6000612f9884828501612ee9565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612fde82612dea565b810181811067ffffffffffffffff82111715612ffd57612ffc612fa6565b5b80604052505050565b6000613010612e56565b905061301c8282612fd5565b919050565b600067ffffffffffffffff82111561303c5761303b612fa6565b5b602082029050602081019050919050565b600080fd5b600061306561306084613021565b613006565b905080838252602082019050602084028301858111156130885761308761304d565b5b835b818110156130b1578061309d8882612eb3565b84526020840193505060208101905061308a565b5050509392505050565b600082601f8301126130d0576130cf612fa1565b5b81356130e0848260208601613052565b91505092915050565b6000602082840312156130ff576130fe612e60565b5b600082013567ffffffffffffffff81111561311d5761311c612e65565b5b613129848285016130bb565b91505092915050565b6000819050919050565b600061315761315261314d84612e6a565b613132565b612e6a565b9050919050565b60006131698261313c565b9050919050565b600061317b8261315e565b9050919050565b61318b81613170565b82525050565b60006020820190506131a66000830184613182565b92915050565b6131b581612ec8565b82525050565b60006020820190506131d060008301846131ac565b92915050565b6000806000606084860312156131ef576131ee612e60565b5b60006131fd86828701612eb3565b935050602061320e86828701612eb3565b925050604061321f86828701612ee9565b9150509250925092565b600060ff82169050919050565b61323f81613229565b82525050565b600060208201905061325a6000830184613236565b92915050565b61326981612e8a565b82525050565b60006020820190506132846000830184613260565b92915050565b6000602082840312156132a05761329f612e60565b5b60006132ae84828501612eb3565b91505092915050565b600080604083850312156132ce576132cd612e60565b5b60006132dc85828601612ee9565b92505060206132ed85828601612ee9565b9150509250929050565b6000806000606084860312156133105761330f612e60565b5b600061331e86828701612ee9565b935050602061332f86828701612ee9565b925050604061334086828701612ee9565b9150509250925092565b61335381612f3e565b811461335e57600080fd5b50565b6000813590506133708161334a565b92915050565b6000806040838503121561338d5761338c612e60565b5b600061339b85828601612eb3565b92505060206133ac85828601613361565b9150509250929050565b6000602082840312156133cc576133cb612e60565b5b60006133da84828501613361565b91505092915050565b600080604083850312156133fa576133f9612e60565b5b600061340885828601612eb3565b925050602061341985828601612eb3565b9150509250929050565b600061342e82612e6a565b9050919050565b61343e81613423565b811461344957600080fd5b50565b60008135905061345b81613435565b92915050565b6000806040838503121561347857613477612e60565b5b60006134868582860161344c565b92505060206134978582860161344c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806134e857607f821691505b6020821081036134fb576134fa6134a1565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613537602083612daf565b915061354282613501565b602082019050919050565b600060208201905081810360008301526135668161352a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135d682613229565b915060ff82036135e9576135e861359c565b5b600182019050919050565b7f76616c756520746f6f206c6f7700000000000000000000000000000000000000600082015250565b600061362a600d83612daf565b9150613635826135f4565b602082019050919050565b600060208201905081810360008301526136598161361d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006136bc602883612daf565b91506136c782613660565b604082019050919050565b600060208201905081810360008301526136eb816136af565b9050919050565b60006136fd82612ec8565b915061370883612ec8565b92508282019050808211156137205761371f61359c565b5b92915050565b7f74617820746f6f20686967680000000000000000000000000000000000000000600082015250565b600061375c600c83612daf565b915061376782613726565b602082019050919050565b6000602082019050818103600083015261378b8161374f565b9050919050565b60006040820190506137a760008301856131ac565b6137b460208301846131ac565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613817602583612daf565b9150613822826137bb565b604082019050919050565b600060208201905081810360008301526138468161380a565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b60006138a9602a83612daf565b91506138b48261384d565b604082019050919050565b600060208201905081810360008301526138d88161389c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061393b602683612daf565b9150613946826138df565b604082019050919050565b6000602082019050818103600083015261396a8161392e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006139cd602483612daf565b91506139d882613971565b604082019050919050565b600060208201905081810360008301526139fc816139c0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a5f602283612daf565b9150613a6a82613a03565b604082019050919050565b60006020820190508181036000830152613a8e81613a52565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613acf82612ec8565b9150613ada83612ec8565b925082613aea57613ae9613a95565b5b828204905092915050565b7f4e6f74204f70656e000000000000000000000000000000000000000000000000600082015250565b6000613b2b600883612daf565b9150613b3682613af5565b602082019050919050565b60006020820190508181036000830152613b5a81613b1e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613bbd602583612daf565b9150613bc882613b61565b604082019050919050565b60006020820190508181036000830152613bec81613bb0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c4f602383612daf565b9150613c5a82613bf3565b604082019050919050565b60006020820190508181036000830152613c7e81613c42565b9050919050565b7f616d6f756e74206578636565647320746865206d617853656c6c5472616e736160008201527f6374696f6e416d6f756e742e0000000000000000000000000000000000000000602082015250565b6000613ce1602c83612daf565b9150613cec82613c85565b604082019050919050565b60006020820190508181036000830152613d1081613cd4565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b6000613d73602483612daf565b9150613d7e82613d17565b604082019050919050565b60006020820190508181036000830152613da281613d66565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613e05602683612daf565b9150613e1082613da9565b604082019050919050565b60006020820190508181036000830152613e3481613df8565b9050919050565b6000606082019050613e5060008301866131ac565b613e5d60208301856131ac565b613e6a60408301846131ac565b949350505050565b6000613e7d82612ec8565b9150613e8883612ec8565b9250828203905081811115613ea057613e9f61359c565b5b92915050565b6000613eb182612ec8565b9150613ebc83612ec8565b9250828202613eca81612ec8565b91508282048414831517613ee157613ee061359c565b5b5092915050565b600081519050613ef781612e9c565b92915050565b600060208284031215613f1357613f12612e60565b5b6000613f2184828501613ee8565b91505092915050565b6000819050919050565b6000613f4f613f4a613f4584613f2a565b613132565b612ec8565b9050919050565b613f5f81613f34565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f9a81612e8a565b82525050565b6000613fac8383613f91565b60208301905092915050565b6000602082019050919050565b6000613fd082613f65565b613fda8185613f70565b9350613fe583613f81565b8060005b83811015614016578151613ffd8882613fa0565b975061400883613fb8565b925050600181019050613fe9565b5085935050505092915050565b600060a08201905061403860008301886131ac565b6140456020830187613f56565b81810360408301526140578186613fc5565b90506140666060830185613260565b61407360808301846131ac565b9695505050505050565b600060c0820190506140926000830189613260565b61409f60208301886131ac565b6140ac6040830187613f56565b6140b96060830186613f56565b6140c66080830185613260565b6140d360a08301846131ac565b979650505050505050565b6000815190506140ed81612ed2565b92915050565b60008060006060848603121561410c5761410b612e60565b5b600061411a868287016140de565b935050602061412b868287016140de565b925050604061413c868287016140de565b915050925092509256fea2646970667358221220e693a892c5e0442ab92ba77b45a96f571da1e11ebc39101e5bed70d245e7475764736f6c63430008110033

Deployed Bytecode

0x60806040526004361061023f5760003560e01c80638b27306d1161012e578063c49b9a80116100ab578063e6c75f711161006f578063e6c75f7114610898578063e8ba854f146108c3578063f2fde38b146108ec578063fb201b1d14610915578063fce589d81461092c57610246565b8063c49b9a80146107b1578063c8c8ebe4146107da578063d7c94efd14610805578063dd62ed3e14610830578063e2f456051461086d57610246565b8063a457c2d7116100f2578063a457c2d7146106ba578063a6d4ec32146106f7578063a9059cbb14610720578063c02466681461075d578063c3e3c7bc1461078657610246565b80638b27306d146105e55780638da5cb5b1461061057806391d55f411461063b57806395d89b411461066457806398118cb41461068f57610246565b806347535d7b116101bc578063610e34b911610180578063610e34b9146105125780636b67c4df1461053b57806370a0823114610566578063715018a6146105a357806385141a77146105ba57610246565b806347535d7b1461042957806349bd5a5e146104545780634a74bb021461047f5780634b8ce602146104aa5780634fbee193146104d557610246565b806318160ddd1161020357806318160ddd146103305780631e293c101461035b57806323b872dd14610384578063313ce567146103c157806339509351146103ec57610246565b806306fdde031461024b578063095ea7b31461027657806309e89af7146102b35780630b6bb6f5146102dc5780631694505e1461030557610246565b3661024657005b600080fd5b34801561025757600080fd5b50610260610957565b60405161026d9190612e34565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190612efe565b6109e9565b6040516102aa9190612f59565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190612f74565b610a07565b005b3480156102e857600080fd5b5061030360048036038101906102fe91906130e9565b610a8d565b005b34801561031157600080fd5b5061031a610ba4565b6040516103279190613191565b60405180910390f35b34801561033c57600080fd5b50610345610bca565b60405161035291906131bb565b60405180910390f35b34801561036757600080fd5b50610382600480360381019061037d9190612f74565b610bd4565b005b34801561039057600080fd5b506103ab60048036038101906103a691906131d6565b610cba565b6040516103b89190612f59565b60405180910390f35b3480156103cd57600080fd5b506103d6610db2565b6040516103e39190613245565b60405180910390f35b3480156103f857600080fd5b50610413600480360381019061040e9190612efe565b610dbb565b6040516104209190612f59565b60405180910390f35b34801561043557600080fd5b5061043e610e67565b60405161044b9190612f59565b60405180910390f35b34801561046057600080fd5b50610469610e7a565b604051610476919061326f565b60405180910390f35b34801561048b57600080fd5b50610494610e9e565b6040516104a19190612f59565b60405180910390f35b3480156104b657600080fd5b506104bf610eb1565b6040516104cc91906131bb565b60405180910390f35b3480156104e157600080fd5b506104fc60048036038101906104f7919061328a565b610eb7565b6040516105099190612f59565b60405180910390f35b34801561051e57600080fd5b50610539600480360381019061053491906132b7565b610f0d565b005b34801561054757600080fd5b50610550610ff1565b60405161055d91906131bb565b60405180910390f35b34801561057257600080fd5b5061058d6004803603810190610588919061328a565b610ff7565b60405161059a91906131bb565b60405180910390f35b3480156105af57600080fd5b506105b861103f565b005b3480156105c657600080fd5b506105cf6110c7565b6040516105dc919061326f565b60405180910390f35b3480156105f157600080fd5b506105fa6110ed565b60405161060791906131bb565b60405180910390f35b34801561061c57600080fd5b506106256110f3565b604051610632919061326f565b60405180910390f35b34801561064757600080fd5b50610662600480360381019061065d9190612f74565b61111d565b005b34801561067057600080fd5b50610679611244565b6040516106869190612e34565b60405180910390f35b34801561069b57600080fd5b506106a46112d6565b6040516106b191906131bb565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc9190612efe565b6112dc565b6040516106ee9190612f59565b60405180910390f35b34801561070357600080fd5b5061071e600480360381019061071991906132f7565b6113c7565b005b34801561072c57600080fd5b5061074760048036038101906107429190612efe565b6114c5565b6040516107549190612f59565b60405180910390f35b34801561076957600080fd5b50610784600480360381019061077f9190613376565b6114e3565b005b34801561079257600080fd5b5061079b61169a565b6040516107a891906131bb565b60405180910390f35b3480156107bd57600080fd5b506107d860048036038101906107d391906133b6565b6116a0565b005b3480156107e657600080fd5b506107ef611770565b6040516107fc91906131bb565b60405180910390f35b34801561081157600080fd5b5061081a611776565b60405161082791906131bb565b60405180910390f35b34801561083c57600080fd5b50610857600480360381019061085291906133e3565b61177c565b60405161086491906131bb565b60405180910390f35b34801561087957600080fd5b50610882611803565b60405161088f91906131bb565b60405180910390f35b3480156108a457600080fd5b506108ad611809565b6040516108ba91906131bb565b60405180910390f35b3480156108cf57600080fd5b506108ea60048036038101906108e59190613461565b61180f565b005b3480156108f857600080fd5b50610913600480360381019061090e919061328a565b611911565b005b34801561092157600080fd5b5061092a611a08565b005b34801561093857600080fd5b50610941611aa1565b60405161094e91906131bb565b60405180910390f35b606060038054610966906134d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610992906134d0565b80156109df5780601f106109b4576101008083540402835291602001916109df565b820191906000526020600020905b8154815290600101906020018083116109c257829003601f168201915b5050505050905090565b60006109fd6109f6611aa7565b8484611aaf565b6001905092915050565b610a0f611aa7565b73ffffffffffffffffffffffffffffffffffffffff16610a2d6110f3565b73ffffffffffffffffffffffffffffffffffffffff1614610a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7a9061354d565b60405180910390fd5b8060098190555050565b610a95611aa7565b73ffffffffffffffffffffffffffffffffffffffff16610ab36110f3565b73ffffffffffffffffffffffffffffffffffffffff1614610b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b009061354d565b60405180910390fd5b60005b81518160ff161015610ba057600160066000848460ff1681518110610b3457610b3361356d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610b98906135cb565b915050610b0c565b5050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b610bdc611aa7565b73ffffffffffffffffffffffffffffffffffffffff16610bfa6110f3565b73ffffffffffffffffffffffffffffffffffffffff1614610c50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c479061354d565b60405180910390fd5b80600881905550610c73610190610c65610bca565b611c7890919063ffffffff16565b6008541015610cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cae90613640565b60405180910390fd5b50565b6000610cc7848484611c8e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d12611aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d89906136d2565b60405180910390fd5b610da685610d9e611aa7565b858403611aaf565b60019150509392505050565b60006012905090565b6000610e5d610dc8611aa7565b848460016000610dd6611aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e5891906136f2565b611aaf565b6001905092915050565b600560149054906101000a900460ff1681565b7f000000000000000000000000374c1bbb29bb6b120d13e4691d07471a92a5ee8681565b601460159054906101000a900460ff1681565b60105481565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610f15611aa7565b73ffffffffffffffffffffffffffffffffffffffff16610f336110f3565b73ffffffffffffffffffffffffffffffffffffffff1614610f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f809061354d565b60405180910390fd5b6005610f9e828461250b90919063ffffffff16565b1115610fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd690613772565b60405180910390fd5b81600b8190555080600d819055505050565b600c5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611047611aa7565b73ffffffffffffffffffffffffffffffffffffffff166110656110f3565b73ffffffffffffffffffffffffffffffffffffffff16146110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b29061354d565b60405180910390fd5b6110c56000612521565b565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611125611aa7565b73ffffffffffffffffffffffffffffffffffffffff166111436110f3565b73ffffffffffffffffffffffffffffffffffffffff1614611199576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111909061354d565b60405180910390fd5b6000600a54905081600a819055506111c36101906111b5610bca565b611c7890919063ffffffff16565b600a541015611207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fe90613640565b60405180910390fd5b7f0a7c714b6801281a6e2610a6371ac6a5da9a5947616d74f4aa3ad1d289278e738183604051611238929190613792565b60405180910390a15050565b606060048054611253906134d0565b80601f016020809104026020016040519081016040528092919081815260200182805461127f906134d0565b80156112cc5780601f106112a1576101008083540402835291602001916112cc565b820191906000526020600020905b8154815290600101906020018083116112af57829003601f168201915b5050505050905090565b600b5481565b600080600160006112eb611aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156113a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139f9061382d565b60405180910390fd5b6113bc6113b3611aa7565b85858403611aaf565b600191505092915050565b6113cf611aa7565b73ffffffffffffffffffffffffffffffffffffffff166113ed6110f3565b73ffffffffffffffffffffffffffffffffffffffff1614611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143a9061354d565b60405180910390fd5b600561146a8261145c858761250b90919063ffffffff16565b61250b90919063ffffffff16565b11156114ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a290613772565b60405180910390fd5b82600b8190555081600c8190555080600e81905550505050565b60006114d96114d2611aa7565b8484611c8e565b6001905092915050565b6114eb611aa7565b73ffffffffffffffffffffffffffffffffffffffff166115096110f3565b73ffffffffffffffffffffffffffffffffffffffff161461155f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115569061354d565b60405180910390fd5b801515601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036115f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e8906138bf565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161168e9190612f59565b60405180910390a25050565b60115481565b6116a8611aa7565b73ffffffffffffffffffffffffffffffffffffffff166116c66110f3565b73ffffffffffffffffffffffffffffffffffffffff161461171c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117139061354d565b60405180910390fd5b80601460156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516117659190612f59565b60405180910390a150565b60085481565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b600a5481565b611817611aa7565b73ffffffffffffffffffffffffffffffffffffffff166118356110f3565b73ffffffffffffffffffffffffffffffffffffffff161461188b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118829061354d565b60405180910390fd5b81601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611919611aa7565b73ffffffffffffffffffffffffffffffffffffffff166119376110f3565b73ffffffffffffffffffffffffffffffffffffffff161461198d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119849061354d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f390613951565b60405180910390fd5b611a0581612521565b50565b611a10611aa7565b73ffffffffffffffffffffffffffffffffffffffff16611a2e6110f3565b73ffffffffffffffffffffffffffffffffffffffff1614611a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7b9061354d565b60405180910390fd5b6001600560146101000a81548160ff021916908315150217905550565b600e5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b15906139e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8490613a75565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c6b91906131bb565b60405180910390a3505050565b60008183611c869190613ac4565b905092915050565b8282600560149054906101000a900460ff1680611cf45750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d485750600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7e90613b41565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ded90613bd3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5c90613c65565b60405180910390fd5b60008303611e7e57611e79858560006125e7565b612504565b601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f225750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f6d57600854831115611f6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6390613cf7565b60405180910390fd5b5b7f000000000000000000000000374c1bbb29bb6b120d13e4691d07471a92a5ee8673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156120125750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120685750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120cc57600061207885610ff7565b9050600a54848261208991906136f2565b11156120ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c190613d89565b60405180910390fd5b505b60148054906101000a900460ff1615801561213257507f000000000000000000000000374c1bbb29bb6b120d13e4691d07471a92a5ee8673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561214a5750601460159054906101000a900460ff165b80156121785750600954600f54101580612168575060095460105410155b80612177575060095460115410155b5b1561218657612185612866565b5b601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561222a5750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124f8576000806000807f000000000000000000000000374c1bbb29bb6b120d13e4691d07471a92a5ee8673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff160361233d576000600d5411156122e2576122bb60646122ad600d548a612a0f90919063ffffffff16565b611c7890919063ffffffff16565b915081601160008282546122cf91906136f2565b925050819055506122e18930846125e7565b5b6000600b54111561233c576123156064612307600b548a612a0f90919063ffffffff16565b611c7890919063ffffffff16565b9250826010600082825461232991906136f2565b9250508190555061233b8930856125e7565b5b5b7f000000000000000000000000374c1bbb29bb6b120d13e4691d07471a92a5ee8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16036124a8576000600c5411156123ea576123c360646123b5600c548a612a0f90919063ffffffff16565b611c7890919063ffffffff16565b935083600f60008282546123d791906136f2565b925050819055506123e98930866125e7565b5b6000600b5411156124445761241d606461240f600b548a612a0f90919063ffffffff16565b611c7890919063ffffffff16565b9250826010600082825461243191906136f2565b925050819055506124438930856125e7565b5b6000600e5411156124a7576124776064612469600e548a612a0f90919063ffffffff16565b611c7890919063ffffffff16565b90506124a689601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836125e7565b5b5b6124f16124e2826124d4856124c6888a61250b90919063ffffffff16565b61250b90919063ffffffff16565b61250b90919063ffffffff16565b88612a2590919063ffffffff16565b9650505050505b6125038585856125e7565b5b5050505050565b6000818361251991906136f2565b905092915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264d90613bd3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bc90613c65565b60405180910390fd5b6126d0838383612a3b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612756576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274d90613e1b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127e991906136f2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161284d91906131bb565b60405180910390a3612860848484612a40565b50505050565b60016014806101000a81548160ff021916908315150217905550600954601054106129495760006128a36002600954611c7890919063ffffffff16565b905060006128bc82600954612a2590919063ffffffff16565b905060004790506128cd8330612a45565b60006128e28247612a2590919063ffffffff16565b90506128ee8382612cbf565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161292193929190613e3b565b60405180910390a16009546010600082825461293d9190613e72565b92505081905550505050505b600954600f541061299e57612982600954601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612a45565b600954600f60008282546129969190613e72565b925050819055505b600954601154106129f3576129d7600954601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612a45565b600954601160008282546129eb9190613e72565b925050819055505b60006014806101000a81548160ff021916908315150217905550565b60008183612a1d9190613ea6565b905092915050565b60008183612a339190613e72565b905092915050565b505050565b505050565b6000600267ffffffffffffffff811115612a6257612a61612fa6565b5b604051908082528060200260200182016040528015612a905781602001602082028036833780820191505090505b5090503081600081518110612aa857612aa761356d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b739190613efd565b81600181518110612b8757612b8661356d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082612bee30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661177c565b1015612c2457612c2330600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600019611aaf565b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008486426040518663ffffffff1660e01b8152600401612c88959493929190614023565b600060405180830381600087803b158015612ca257600080fd5b505af1158015612cb6573d6000803e3d6000fd5b50505050505050565b612cec30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611aaf565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612d386110f3565b426040518863ffffffff1660e01b8152600401612d5a9695949392919061407d565b60606040518083038185885af1158015612d78573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d9d91906140f3565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612dde578082015181840152602081019050612dc3565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e0682612da4565b612e108185612daf565b9350612e20818560208601612dc0565b612e2981612dea565b840191505092915050565b60006020820190508181036000830152612e4e8184612dfb565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e9582612e6a565b9050919050565b612ea581612e8a565b8114612eb057600080fd5b50565b600081359050612ec281612e9c565b92915050565b6000819050919050565b612edb81612ec8565b8114612ee657600080fd5b50565b600081359050612ef881612ed2565b92915050565b60008060408385031215612f1557612f14612e60565b5b6000612f2385828601612eb3565b9250506020612f3485828601612ee9565b9150509250929050565b60008115159050919050565b612f5381612f3e565b82525050565b6000602082019050612f6e6000830184612f4a565b92915050565b600060208284031215612f8a57612f89612e60565b5b6000612f9884828501612ee9565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612fde82612dea565b810181811067ffffffffffffffff82111715612ffd57612ffc612fa6565b5b80604052505050565b6000613010612e56565b905061301c8282612fd5565b919050565b600067ffffffffffffffff82111561303c5761303b612fa6565b5b602082029050602081019050919050565b600080fd5b600061306561306084613021565b613006565b905080838252602082019050602084028301858111156130885761308761304d565b5b835b818110156130b1578061309d8882612eb3565b84526020840193505060208101905061308a565b5050509392505050565b600082601f8301126130d0576130cf612fa1565b5b81356130e0848260208601613052565b91505092915050565b6000602082840312156130ff576130fe612e60565b5b600082013567ffffffffffffffff81111561311d5761311c612e65565b5b613129848285016130bb565b91505092915050565b6000819050919050565b600061315761315261314d84612e6a565b613132565b612e6a565b9050919050565b60006131698261313c565b9050919050565b600061317b8261315e565b9050919050565b61318b81613170565b82525050565b60006020820190506131a66000830184613182565b92915050565b6131b581612ec8565b82525050565b60006020820190506131d060008301846131ac565b92915050565b6000806000606084860312156131ef576131ee612e60565b5b60006131fd86828701612eb3565b935050602061320e86828701612eb3565b925050604061321f86828701612ee9565b9150509250925092565b600060ff82169050919050565b61323f81613229565b82525050565b600060208201905061325a6000830184613236565b92915050565b61326981612e8a565b82525050565b60006020820190506132846000830184613260565b92915050565b6000602082840312156132a05761329f612e60565b5b60006132ae84828501612eb3565b91505092915050565b600080604083850312156132ce576132cd612e60565b5b60006132dc85828601612ee9565b92505060206132ed85828601612ee9565b9150509250929050565b6000806000606084860312156133105761330f612e60565b5b600061331e86828701612ee9565b935050602061332f86828701612ee9565b925050604061334086828701612ee9565b9150509250925092565b61335381612f3e565b811461335e57600080fd5b50565b6000813590506133708161334a565b92915050565b6000806040838503121561338d5761338c612e60565b5b600061339b85828601612eb3565b92505060206133ac85828601613361565b9150509250929050565b6000602082840312156133cc576133cb612e60565b5b60006133da84828501613361565b91505092915050565b600080604083850312156133fa576133f9612e60565b5b600061340885828601612eb3565b925050602061341985828601612eb3565b9150509250929050565b600061342e82612e6a565b9050919050565b61343e81613423565b811461344957600080fd5b50565b60008135905061345b81613435565b92915050565b6000806040838503121561347857613477612e60565b5b60006134868582860161344c565b92505060206134978582860161344c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806134e857607f821691505b6020821081036134fb576134fa6134a1565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613537602083612daf565b915061354282613501565b602082019050919050565b600060208201905081810360008301526135668161352a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135d682613229565b915060ff82036135e9576135e861359c565b5b600182019050919050565b7f76616c756520746f6f206c6f7700000000000000000000000000000000000000600082015250565b600061362a600d83612daf565b9150613635826135f4565b602082019050919050565b600060208201905081810360008301526136598161361d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006136bc602883612daf565b91506136c782613660565b604082019050919050565b600060208201905081810360008301526136eb816136af565b9050919050565b60006136fd82612ec8565b915061370883612ec8565b92508282019050808211156137205761371f61359c565b5b92915050565b7f74617820746f6f20686967680000000000000000000000000000000000000000600082015250565b600061375c600c83612daf565b915061376782613726565b602082019050919050565b6000602082019050818103600083015261378b8161374f565b9050919050565b60006040820190506137a760008301856131ac565b6137b460208301846131ac565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613817602583612daf565b9150613822826137bb565b604082019050919050565b600060208201905081810360008301526138468161380a565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b60006138a9602a83612daf565b91506138b48261384d565b604082019050919050565b600060208201905081810360008301526138d88161389c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061393b602683612daf565b9150613946826138df565b604082019050919050565b6000602082019050818103600083015261396a8161392e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006139cd602483612daf565b91506139d882613971565b604082019050919050565b600060208201905081810360008301526139fc816139c0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a5f602283612daf565b9150613a6a82613a03565b604082019050919050565b60006020820190508181036000830152613a8e81613a52565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613acf82612ec8565b9150613ada83612ec8565b925082613aea57613ae9613a95565b5b828204905092915050565b7f4e6f74204f70656e000000000000000000000000000000000000000000000000600082015250565b6000613b2b600883612daf565b9150613b3682613af5565b602082019050919050565b60006020820190508181036000830152613b5a81613b1e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613bbd602583612daf565b9150613bc882613b61565b604082019050919050565b60006020820190508181036000830152613bec81613bb0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c4f602383612daf565b9150613c5a82613bf3565b604082019050919050565b60006020820190508181036000830152613c7e81613c42565b9050919050565b7f616d6f756e74206578636565647320746865206d617853656c6c5472616e736160008201527f6374696f6e416d6f756e742e0000000000000000000000000000000000000000602082015250565b6000613ce1602c83612daf565b9150613cec82613c85565b604082019050919050565b60006020820190508181036000830152613d1081613cd4565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b6000613d73602483612daf565b9150613d7e82613d17565b604082019050919050565b60006020820190508181036000830152613da281613d66565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613e05602683612daf565b9150613e1082613da9565b604082019050919050565b60006020820190508181036000830152613e3481613df8565b9050919050565b6000606082019050613e5060008301866131ac565b613e5d60208301856131ac565b613e6a60408301846131ac565b949350505050565b6000613e7d82612ec8565b9150613e8883612ec8565b9250828203905081811115613ea057613e9f61359c565b5b92915050565b6000613eb182612ec8565b9150613ebc83612ec8565b9250828202613eca81612ec8565b91508282048414831517613ee157613ee061359c565b5b5092915050565b600081519050613ef781612e9c565b92915050565b600060208284031215613f1357613f12612e60565b5b6000613f2184828501613ee8565b91505092915050565b6000819050919050565b6000613f4f613f4a613f4584613f2a565b613132565b612ec8565b9050919050565b613f5f81613f34565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f9a81612e8a565b82525050565b6000613fac8383613f91565b60208301905092915050565b6000602082019050919050565b6000613fd082613f65565b613fda8185613f70565b9350613fe583613f81565b8060005b83811015614016578151613ffd8882613fa0565b975061400883613fb8565b925050600181019050613fe9565b5085935050505092915050565b600060a08201905061403860008301886131ac565b6140456020830187613f56565b81810360408301526140578186613fc5565b90506140666060830185613260565b61407360808301846131ac565b9695505050505050565b600060c0820190506140926000830189613260565b61409f60208301886131ac565b6140ac6040830187613f56565b6140b96060830186613f56565b6140c66080830185613260565b6140d360a08301846131ac565b979650505050505050565b6000815190506140ed81612ed2565b92915050565b60008060006060848603121561410c5761410b612e60565b5b600061411a868287016140de565b935050602061412b868287016140de565b925050604061413c868287016140de565b915050925092509256fea2646970667358221220e693a892c5e0442ab92ba77b45a96f571da1e11ebc39101e5bed70d245e7475764736f6c63430008110033

Deployed Bytecode Sourcemap

38552:10367:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6870:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9037:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48132:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38357:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38644:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7990:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47613:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9688:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7832:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10589:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37937:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38692:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39563:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39181:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48260:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46918:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38991:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8161:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1879:94;;;;;;;;;;;;;:::i;:::-;;39448:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39144:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1228:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48576:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7089:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38933:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11307:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47134:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8501:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47834:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39218:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48397:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38739:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39045:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8739:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38805:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38868:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47422:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2128:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38277:72;;;;;;;;;;;;;:::i;:::-;;39093:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6870:100;6924:13;6957:5;6950:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6870:100;:::o;9037:169::-;9120:4;9137:39;9146:12;:10;:12::i;:::-;9160:7;9169:6;9137:8;:39::i;:::-;9194:4;9187:11;;9037:169;;;;:::o;48132:116::-;1459:12;:10;:12::i;:::-;1448:23;;:7;:5;:7::i;:::-;:23;;;1440:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48232:8:::1;48211:18;:29;;;;48132:116:::0;:::o;38357:186::-;1459:12;:10;:12::i;:::-;1448:23;;:7;:5;:7::i;:::-;:23;;;1440:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38444:7:::1;38440:96;38461:6;:13;38457:1;:17;;;38440:96;;;38520:4;38496:10;:21;38507:6;38514:1;38507:9;;;;;;;;;;:::i;:::-;;;;;;;;38496:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;38476:3;;;;;:::i;:::-;;;;38440:96;;;;38357:186:::0;:::o;38644:41::-;;;;;;;;;;;;;:::o;7990:108::-;8051:7;8078:12;;8071:19;;7990:108;:::o;47613:209::-;1459:12;:10;:12::i;:::-;1448:23;;:7;:5;:7::i;:::-;:23;;;1440:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;47719:12:::1;47696:20;:35;;;;47774:22;47792:3;47774:13;:11;:13::i;:::-;:17;;:22;;;;:::i;:::-;47750:20;;:46;;47742:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;47613:209:::0;:::o;9688:492::-;9828:4;9845:36;9855:6;9863:9;9874:6;9845:9;:36::i;:::-;9894:24;9921:11;:19;9933:6;9921:19;;;;;;;;;;;;;;;:33;9941:12;:10;:12::i;:::-;9921:33;;;;;;;;;;;;;;;;9894:60;;9993:6;9973:16;:26;;9965:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10080:57;10089:6;10097:12;:10;:12::i;:::-;10130:6;10111:16;:25;10080:8;:57::i;:::-;10168:4;10161:11;;;9688:492;;;;;:::o;7832:93::-;7890:5;7915:2;7908:9;;7832:93;:::o;10589:215::-;10677:4;10694:80;10703:12;:10;:12::i;:::-;10717:7;10763:10;10726:11;:25;10738:12;:10;:12::i;:::-;10726:25;;;;;;;;;;;;;;;:34;10752:7;10726:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;10694:8;:80::i;:::-;10792:4;10785:11;;10589:215;;;;:::o;37937:26::-;;;;;;;;;;;;;:::o;38692:38::-;;;:::o;39563:40::-;;;;;;;;;;;;;:::o;39181:30::-;;;;:::o;48260:125::-;48325:4;48349:19;:28;48369:7;48349:28;;;;;;;;;;;;;;;;;;;;;;;;;48342:35;;48260:125;;;:::o;46918:208::-;1459:12;:10;:12::i;:::-;1448:23;;:7;:5;:7::i;:::-;:23;;;1440:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;47038:1:::1;47013:21;47025:8;47013:7;:11;;:21;;;;:::i;:::-;:26;;47005:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;47082:7;47067:12;:22;;;;47110:8;47100:7;:18;;;;46918:208:::0;;:::o;38991:31::-;;;;:::o;8161:127::-;8235:7;8262:9;:18;8272:7;8262:18;;;;;;;;;;;;;;;;8255:25;;8161:127;;;:::o;1879:94::-;1459:12;:10;:12::i;:::-;1448:23;;:7;:5;:7::i;:::-;:23;;;1440:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1944:21:::1;1962:1;1944:9;:21::i;:::-;1879:94::o:0;39448:70::-;;;;;;;;;;;;;:::o;39144:30::-;;;;:::o;1228:87::-;1274:7;1301:6;;;;;;;;;;;1294:13;;1228:87;:::o;48576:290::-;1459:12;:10;:12::i;:::-;1448:23;;:7;:5;:7::i;:::-;:23;;;1440:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48652:17:::1;48672:14;;48652:34;;48713:9;48696:14;:26;;;;48759:22;48777:3;48759:13;:11;:13::i;:::-;:17;;:22;;;;:::i;:::-;48741:14;;:40;;48733:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;48815:44;48838:9;48849;48815:44;;;;;;;:::i;:::-;;;;;;;;48641:225;48576:290:::0;:::o;7089:104::-;7145:13;7178:7;7171:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7089:104;:::o;38933:31::-;;;;:::o;11307:413::-;11400:4;11417:24;11444:11;:25;11456:12;:10;:12::i;:::-;11444:25;;;;;;;;;;;;;;;:34;11470:7;11444:34;;;;;;;;;;;;;;;;11417:61;;11517:15;11497:16;:35;;11489:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11610:67;11619:12;:10;:12::i;:::-;11633:7;11661:15;11642:16;:34;11610:8;:67::i;:::-;11708:4;11701:11;;;11307:413;;;;:::o;47134:275::-;1459:12;:10;:12::i;:::-;1448:23;;:7;:5;:7::i;:::-;:23;;;1440:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;47287:1:::1;47248:35;47274:8;47248:21;47260:8;47248:7;:11;;:21;;;;:::i;:::-;:25;;:35;;;;:::i;:::-;:40;;47240:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;47331:7;47316:12;:22;;;;47364:8;47349:12;:23;;;;47393:8;47383:7;:18;;;;47134:275:::0;;;:::o;8501:175::-;8587:4;8604:42;8614:12;:10;:12::i;:::-;8628:9;8639:6;8604:9;:42::i;:::-;8664:4;8657:11;;8501:175;;;;:::o;47834:290::-;1459:12;:10;:12::i;:::-;1448:23;;:7;:5;:7::i;:::-;:23;;;1440:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;47959:8:::1;47927:40;;:19;:28;47947:7;47927:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;47919:95:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;48056:8;48025:19;:28;48045:7;48025:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;48098:7;48082:34;;;48107:8;48082:34;;;;;;:::i;:::-;;;;;;;;47834:290:::0;;:::o;39218:25::-;;;;:::o;48397:171::-;1459:12;:10;:12::i;:::-;1448:23;;:7;:5;:7::i;:::-;:23;;;1440:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48498:8:::1;48474:21;;:32;;;;;;;;;;;;;;;;;;48522:38;48551:8;48522:38;;;;;;:::i;:::-;;;;;;;;48397:171:::0;:::o;38739:59::-;;;;:::o;39045:26::-;;;;:::o;8739:151::-;8828:7;8855:11;:18;8867:5;8855:18;;;;;;;;;;;;;;;:27;8874:7;8855:27;;;;;;;;;;;;;;;;8848:34;;8739:151;;;;:::o;38805:56::-;;;;:::o;38868:53::-;;;;:::o;47422:183::-;1459:12;:10;:12::i;:::-;1448:23;;:7;:5;:7::i;:::-;:23;;;1440:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;47551:11:::1;47533:15;;:29;;;;;;;;;;;;;;;;;;47586:11;47573:10;;:24;;;;;;;;;;;;;;;;;;47422:183:::0;;:::o;2128:192::-;1459:12;:10;:12::i;:::-;1448:23;;:7;:5;:7::i;:::-;:23;;;1440:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2237:1:::1;2217:22;;:8;:22;;::::0;2209:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2293:19;2303:8;2293:9;:19::i;:::-;2128:192:::0;:::o;38277:72::-;1459:12;:10;:12::i;:::-;1448:23;;:7;:5;:7::i;:::-;:23;;;1440:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38337:4:::1;38328:6;;:13;;;;;;;;;;;;;;;;;;38277:72::o:0;39093:26::-;;;;:::o;102:98::-;155:7;182:10;175:17;;102:98;:::o;14080:380::-;14233:1;14216:19;;:5;:19;;;14208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14314:1;14295:21;;:7;:21;;;14287:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14398:6;14368:11;:18;14380:5;14368:18;;;;;;;;;;;;;;;:27;14387:7;14368:27;;;;;;;;;;;;;;;:36;;;;14436:7;14420:32;;14429:5;14420:32;;;14445:6;14420:32;;;;;;:::i;:::-;;;;;;;;14080:380;;;:::o;26931:98::-;26989:7;27020:1;27016;:5;;;;:::i;:::-;27009:12;;26931:98;;;;:::o;41204:3039::-;41304:4;41310:2;38079:6;;;;;;;;;;;:26;;;;38089:10;:16;38100:4;38089:16;;;;;;;;;;;;;;;;;;;;;;;;;38079:26;:44;;;;38109:10;:14;38120:2;38109:14;;;;;;;;;;;;;;;;;;;;;;;;;38079:44;38071:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;41367:1:::1;41351:18;;:4;:18;;::::0;41343:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;41444:1;41430:16;;:2;:16;;::::0;41422:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;41512:1;41502:6;:11:::0;41499:92:::1;;41530:28;41546:4;41552:2;41556:1;41530:15;:28::i;:::-;41573:7;;41499:92;41607:19;:25;41627:4;41607:25;;;;;;;;;;;;;;;;;;;;;;;;;41606:26;:54;;;;;41637:19;:23;41657:2;41637:23;;;;;;;;;;;;;;;;;;;;;;;;;41636:24;41606:54;41603:172;;;41694:20;;41684:6;:30;;41676:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;41603:172;41797:13;41791:19;;:4;:19;;;:49;;;;;41815:19;:25;41835:4;41815:25;;;;;;;;;;;;;;;;;;;;;;;;;41814:26;41791:49;:77;;;;;41845:19;:23;41865:2;41845:23;;;;;;;;;;;;;;;;;;;;;;;;;41844:24;41791:77;41787:273;;;41885:32;41920:13;41930:2;41920:9;:13::i;:::-;41885:48;;41993:14;;41983:6;41956:24;:33;;;;:::i;:::-;:51;;41948:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;41870:190;41787:273;42089:16;::::0;::::1;;;;;;;;42088:17;:38;;;;;42113:13;42109:17;;:2;:17;;;42088:38;:77;;;;;42144:21;;;;;;;;;;;42088:77;:237;;;;;42203:18;;42184:15;;:37;;:91;;;;42257:18;;42238:15;;:37;;42184:91;:140;;;;42306:18;;42292:10;;:32;;42184:140;42088:237;42085:304;;;42361:16;:14;:16::i;:::-;42085:304;42506:19;:25;42526:4;42506:25;;;;;;;;;;;;;;;;;;;;;;;;;42505:26;:54;;;;;42536:19;:23;42556:2;42536:23;;;;;;;;;;;;;;;;;;;;;;;;;42535:24;42505:54;42502:1686;;;42576:22;42613::::0;42650:17:::1;42682::::0;42737:13:::1;42731:19;;:4;:19;;::::0;42728:558:::1;;42802:1;42792:7;;:11;42789:215;;;42840:28;42864:3;42840:19;42851:7;;42840:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;42828:40;;42905:9;42891:10;;:23;;;;;;;:::i;:::-;;;;;;;;42937:47;42953:4;42967;42974:9;42937:15;:47::i;:::-;42789:215;43042:1;43027:12;;:16;43024:245;;;43085:33;43114:3;43085:24;43096:12;;43085:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;43068:50;;43160:14;43141:15;;:33;;;;;;;:::i;:::-;;;;;;;;43197:52;43213:4;43227;43234:14;43197:15;:52::i;:::-;43024:245;42728:558;43309:13;43305:17;;:2;:17;;::::0;43302:771:::1;;43378:1;43363:12;;:16;43360:245;;;43421:33;43450:3;43421:24;43432:12;;43421:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;43404:50;;43496:14;43477:15;;:33;;;;;;;:::i;:::-;;;;;;;;43533:52;43549:4;43563;43570:14;43533:15;:52::i;:::-;43360:245;43643:1;43628:12;;:16;43625:245;;;43686:33;43715:3;43686:24;43697:12;;43686:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;43669:50;;43761:14;43742:15;;:33;;;;;;;:::i;:::-;;;;;;;;43798:52;43814:4;43828;43835:14;43798:15;:52::i;:::-;43625:245;43903:1;43893:7;;:11;43890:166;;;43941:28;43965:3;43941:19;43952:7;;43941:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;43929:40;;43992:44;44008:4;44014:10;;;;;;;;;;;44026:9;43992:15;:44::i;:::-;43890:166;43302:771;44098:76;44109:64;44163:9;44109:49;44148:9;44109:34;44128:14;44109;:18;;:34;;;;:::i;:::-;:38;;:49;;;;:::i;:::-;:53;;:64;;;;:::i;:::-;44098:6;:10;;:76;;;;:::i;:::-;44089:85;;42561:1627;;;;42502:1686;44200:33;44216:4;44222:2;44226:6;44200:15;:33::i;:::-;38147:1;41204:3039:::0;;;;;:::o;25794:98::-;25852:7;25883:1;25879;:5;;;;:::i;:::-;25872:12;;25794:98;;;;:::o;2328:173::-;2384:16;2403:6;;;;;;;;;;;2384:25;;2429:8;2420:6;;:17;;;;;;;;;;;;;;;;;;2484:8;2453:40;;2474:8;2453:40;;;;;;;;;;;;2373:128;2328:173;:::o;12210:733::-;12368:1;12350:20;;:6;:20;;;12342:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12452:1;12431:23;;:9;:23;;;12423:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12507:47;12528:6;12536:9;12547:6;12507:20;:47::i;:::-;12567:21;12591:9;:17;12601:6;12591:17;;;;;;;;;;;;;;;;12567:41;;12644:6;12627:13;:23;;12619:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12765:6;12749:13;:22;12729:9;:17;12739:6;12729:17;;;;;;;;;;;;;;;:42;;;;12817:6;12793:9;:20;12803:9;12793:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12858:9;12841:35;;12850:6;12841:35;;;12869:6;12841:35;;;;;;:::i;:::-;;;;;;;;12889:46;12909:6;12917:9;12928:6;12889:19;:46::i;:::-;12331:612;12210:733;;;:::o;44251:1435::-;40095:4;40076:16;;:23;;;;;;;;;;;;;;;;;;44332:18:::1;;44313:15;;:37;44310:1000;;44422:12;44437:25;44460:1;44437:18;;:22;;:25;;;;:::i;:::-;44422:40;;44477:17;44497:28;44520:4;44497:18;;:22;;:28;;;;:::i;:::-;44477:48;;44823:22;44848:21;44823:46;;44922:37;44939:4;44953;44922:16;:37::i;:::-;45028:18;45049:41;45075:14;45049:21;:25;;:41;;;;:::i;:::-;45028:62;;45148:35;45161:9;45172:10;45148:12;:35::i;:::-;45203:43;45218:4;45224:10;45236:9;45203:43;;;;;;;;:::i;:::-;;;;;;;;45280:18;;45261:15;;:37;;;;;;;:::i;:::-;;;;;;;;44352:958;;;;44310:1000;45344:18;;45325:15;;:37;45322:174;;45379:53;45396:18;;45416:15;;;;;;;;;;;45379:16;:53::i;:::-;45466:18;;45447:15;;:37;;;;;;;:::i;:::-;;;;;;;;45322:174;45525:18;;45511:10;;:32;45508:159;;45560:48;45577:18;;45597:10;;;;;;;;;;;45560:16;:48::i;:::-;45637:18;;45623:10;;:32;;;;;;;:::i;:::-;;;;;;;;45508:159;40141:5:::0;40122:16;;:24;;;;;;;;;;;;;;;;;;44251:1435::o;26532:98::-;26590:7;26621:1;26617;:5;;;;:::i;:::-;26610:12;;26532:98;;;;:::o;26175:::-;26233:7;26264:1;26260;:5;;;;:::i;:::-;26253:12;;26175:98;;;;:::o;15060:125::-;;;;:::o;15789:124::-;;;;:::o;46215:695::-;46354:21;46392:1;46378:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46354:40;;46423:4;46405;46410:1;46405:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;46449:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;46439:4;46444:1;46439:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;46540:11;46487:50;46505:4;46520:15;;;;;;;;;;;46487:9;:50::i;:::-;:64;46484:156;;;46566:62;46583:4;46598:15;;;;;;;;;;;46625:1;46616:11;46566:8;:62::i;:::-;46484:156;46678:15;;;;;;;;;;;:66;;;46759:11;46785:1;46829:4;46848:3;46866:15;46678:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46283:627;46215:695;;:::o;45694:513::-;45842:62;45859:4;45874:15;;;;;;;;;;;45892:11;45842:8;:62::i;:::-;45947:15;;;;;;;;;;;:31;;;45986:9;46019:4;46039:11;46065:1;46108;46151:7;:5;:7::i;:::-;46173:15;45947:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;45694:513;;:::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:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:117::-;3890:1;3887;3880:12;3904:180;3952:77;3949:1;3942:88;4049:4;4046:1;4039:15;4073:4;4070:1;4063:15;4090:281;4173:27;4195:4;4173:27;:::i;:::-;4165:6;4161:40;4303:6;4291:10;4288:22;4267:18;4255:10;4252:34;4249:62;4246:88;;;4314:18;;:::i;:::-;4246:88;4354:10;4350:2;4343:22;4133:238;4090:281;;:::o;4377:129::-;4411:6;4438:20;;:::i;:::-;4428:30;;4467:33;4495:4;4487:6;4467:33;:::i;:::-;4377:129;;;:::o;4512:311::-;4589:4;4679:18;4671:6;4668:30;4665:56;;;4701:18;;:::i;:::-;4665:56;4751:4;4743:6;4739:17;4731:25;;4811:4;4805;4801:15;4793:23;;4512:311;;;:::o;4829:117::-;4938:1;4935;4928:12;4969:710;5065:5;5090:81;5106:64;5163:6;5106:64;:::i;:::-;5090:81;:::i;:::-;5081:90;;5191:5;5220:6;5213:5;5206:21;5254:4;5247:5;5243:16;5236:23;;5307:4;5299:6;5295:17;5287:6;5283:30;5336:3;5328:6;5325:15;5322:122;;;5355:79;;:::i;:::-;5322:122;5470:6;5453:220;5487:6;5482:3;5479:15;5453:220;;;5562:3;5591:37;5624:3;5612:10;5591:37;:::i;:::-;5586:3;5579:50;5658:4;5653:3;5649:14;5642:21;;5529:144;5513:4;5508:3;5504:14;5497:21;;5453:220;;;5457:21;5071:608;;4969:710;;;;;:::o;5702:370::-;5773:5;5822:3;5815:4;5807:6;5803:17;5799:27;5789:122;;5830:79;;:::i;:::-;5789:122;5947:6;5934:20;5972:94;6062:3;6054:6;6047:4;6039:6;6035:17;5972:94;:::i;:::-;5963:103;;5779:293;5702:370;;;;:::o;6078:539::-;6162:6;6211:2;6199:9;6190:7;6186:23;6182:32;6179:119;;;6217:79;;:::i;:::-;6179:119;6365:1;6354:9;6350:17;6337:31;6395:18;6387:6;6384:30;6381:117;;;6417:79;;:::i;:::-;6381:117;6522:78;6592:7;6583:6;6572:9;6568:22;6522:78;:::i;:::-;6512:88;;6308:302;6078:539;;;;:::o;6623:60::-;6651:3;6672:5;6665:12;;6623:60;;;:::o;6689:142::-;6739:9;6772:53;6790:34;6799:24;6817:5;6799:24;:::i;:::-;6790:34;:::i;:::-;6772:53;:::i;:::-;6759:66;;6689:142;;;:::o;6837:126::-;6887:9;6920:37;6951:5;6920:37;:::i;:::-;6907:50;;6837:126;;;:::o;6969:153::-;7046:9;7079:37;7110:5;7079:37;:::i;:::-;7066:50;;6969:153;;;:::o;7128:185::-;7242:64;7300:5;7242:64;:::i;:::-;7237:3;7230:77;7128:185;;:::o;7319:276::-;7439:4;7477:2;7466:9;7462:18;7454:26;;7490:98;7585:1;7574:9;7570:17;7561:6;7490:98;:::i;:::-;7319:276;;;;:::o;7601:118::-;7688:24;7706:5;7688:24;:::i;:::-;7683:3;7676:37;7601:118;;:::o;7725:222::-;7818:4;7856:2;7845:9;7841:18;7833:26;;7869:71;7937:1;7926:9;7922:17;7913:6;7869:71;:::i;:::-;7725:222;;;;:::o;7953:619::-;8030:6;8038;8046;8095:2;8083:9;8074:7;8070:23;8066:32;8063:119;;;8101:79;;:::i;:::-;8063:119;8221:1;8246:53;8291:7;8282:6;8271:9;8267:22;8246:53;:::i;:::-;8236:63;;8192:117;8348:2;8374:53;8419:7;8410:6;8399:9;8395:22;8374:53;:::i;:::-;8364:63;;8319:118;8476:2;8502:53;8547:7;8538:6;8527:9;8523:22;8502:53;:::i;:::-;8492:63;;8447:118;7953:619;;;;;:::o;8578:86::-;8613:7;8653:4;8646:5;8642:16;8631:27;;8578:86;;;:::o;8670:112::-;8753:22;8769:5;8753:22;:::i;:::-;8748:3;8741:35;8670:112;;:::o;8788:214::-;8877:4;8915:2;8904:9;8900:18;8892:26;;8928:67;8992:1;8981:9;8977:17;8968:6;8928:67;:::i;:::-;8788:214;;;;:::o;9008:118::-;9095:24;9113:5;9095:24;:::i;:::-;9090:3;9083:37;9008:118;;:::o;9132:222::-;9225:4;9263:2;9252:9;9248:18;9240:26;;9276:71;9344:1;9333:9;9329:17;9320:6;9276:71;:::i;:::-;9132:222;;;;:::o;9360:329::-;9419:6;9468:2;9456:9;9447:7;9443:23;9439:32;9436:119;;;9474:79;;:::i;:::-;9436:119;9594:1;9619:53;9664:7;9655:6;9644:9;9640:22;9619:53;:::i;:::-;9609:63;;9565:117;9360:329;;;;:::o;9695:474::-;9763:6;9771;9820:2;9808:9;9799:7;9795:23;9791:32;9788:119;;;9826:79;;:::i;:::-;9788:119;9946:1;9971:53;10016:7;10007:6;9996:9;9992:22;9971:53;:::i;:::-;9961:63;;9917:117;10073:2;10099:53;10144:7;10135:6;10124:9;10120:22;10099:53;:::i;:::-;10089:63;;10044:118;9695:474;;;;;:::o;10175:619::-;10252:6;10260;10268;10317:2;10305:9;10296:7;10292:23;10288:32;10285:119;;;10323:79;;:::i;:::-;10285:119;10443:1;10468:53;10513:7;10504:6;10493:9;10489:22;10468:53;:::i;:::-;10458:63;;10414:117;10570:2;10596:53;10641:7;10632:6;10621:9;10617:22;10596:53;:::i;:::-;10586:63;;10541:118;10698:2;10724:53;10769:7;10760:6;10749:9;10745:22;10724:53;:::i;:::-;10714:63;;10669:118;10175:619;;;;;:::o;10800:116::-;10870:21;10885:5;10870:21;:::i;:::-;10863:5;10860:32;10850:60;;10906:1;10903;10896:12;10850:60;10800:116;:::o;10922:133::-;10965:5;11003:6;10990:20;10981:29;;11019:30;11043:5;11019:30;:::i;:::-;10922:133;;;;:::o;11061:468::-;11126:6;11134;11183:2;11171:9;11162:7;11158:23;11154:32;11151:119;;;11189:79;;:::i;:::-;11151:119;11309:1;11334:53;11379:7;11370:6;11359:9;11355:22;11334:53;:::i;:::-;11324:63;;11280:117;11436:2;11462:50;11504:7;11495:6;11484:9;11480:22;11462:50;:::i;:::-;11452:60;;11407:115;11061:468;;;;;:::o;11535:323::-;11591:6;11640:2;11628:9;11619:7;11615:23;11611:32;11608:119;;;11646:79;;:::i;:::-;11608:119;11766:1;11791:50;11833:7;11824:6;11813:9;11809:22;11791:50;:::i;:::-;11781:60;;11737:114;11535:323;;;;:::o;11864:474::-;11932:6;11940;11989:2;11977:9;11968:7;11964:23;11960:32;11957:119;;;11995:79;;:::i;:::-;11957:119;12115:1;12140:53;12185:7;12176:6;12165:9;12161:22;12140:53;:::i;:::-;12130:63;;12086:117;12242:2;12268:53;12313:7;12304:6;12293:9;12289:22;12268:53;:::i;:::-;12258:63;;12213:118;11864:474;;;;;:::o;12344:104::-;12389:7;12418:24;12436:5;12418:24;:::i;:::-;12407:35;;12344:104;;;:::o;12454:138::-;12535:32;12561:5;12535:32;:::i;:::-;12528:5;12525:43;12515:71;;12582:1;12579;12572:12;12515:71;12454:138;:::o;12598:155::-;12652:5;12690:6;12677:20;12668:29;;12706:41;12741:5;12706:41;:::i;:::-;12598:155;;;;:::o;12759:506::-;12843:6;12851;12900:2;12888:9;12879:7;12875:23;12871:32;12868:119;;;12906:79;;:::i;:::-;12868:119;13026:1;13051:61;13104:7;13095:6;13084:9;13080:22;13051:61;:::i;:::-;13041:71;;12997:125;13161:2;13187:61;13240:7;13231:6;13220:9;13216:22;13187:61;:::i;:::-;13177:71;;13132:126;12759:506;;;;;:::o;13271:180::-;13319:77;13316:1;13309:88;13416:4;13413:1;13406:15;13440:4;13437:1;13430:15;13457:320;13501:6;13538:1;13532:4;13528:12;13518:22;;13585:1;13579:4;13575:12;13606:18;13596:81;;13662:4;13654:6;13650:17;13640:27;;13596:81;13724:2;13716:6;13713:14;13693:18;13690:38;13687:84;;13743:18;;:::i;:::-;13687:84;13508:269;13457:320;;;:::o;13783:182::-;13923:34;13919:1;13911:6;13907:14;13900:58;13783:182;:::o;13971:366::-;14113:3;14134:67;14198:2;14193:3;14134:67;:::i;:::-;14127:74;;14210:93;14299:3;14210:93;:::i;:::-;14328:2;14323:3;14319:12;14312:19;;13971:366;;;:::o;14343:419::-;14509:4;14547:2;14536:9;14532:18;14524:26;;14596:9;14590:4;14586:20;14582:1;14571:9;14567:17;14560:47;14624:131;14750:4;14624:131;:::i;:::-;14616:139;;14343:419;;;:::o;14768:180::-;14816:77;14813:1;14806:88;14913:4;14910:1;14903:15;14937:4;14934:1;14927:15;14954:180;15002:77;14999:1;14992:88;15099:4;15096:1;15089:15;15123:4;15120:1;15113:15;15140:167;15177:3;15200:22;15216:5;15200:22;:::i;:::-;15191:31;;15244:4;15237:5;15234:15;15231:41;;15252:18;;:::i;:::-;15231:41;15299:1;15292:5;15288:13;15281:20;;15140:167;;;:::o;15313:163::-;15453:15;15449:1;15441:6;15437:14;15430:39;15313:163;:::o;15482:366::-;15624:3;15645:67;15709:2;15704:3;15645:67;:::i;:::-;15638:74;;15721:93;15810:3;15721:93;:::i;:::-;15839:2;15834:3;15830:12;15823:19;;15482:366;;;:::o;15854:419::-;16020:4;16058:2;16047:9;16043:18;16035:26;;16107:9;16101:4;16097:20;16093:1;16082:9;16078:17;16071:47;16135:131;16261:4;16135:131;:::i;:::-;16127:139;;15854:419;;;:::o;16279:227::-;16419:34;16415:1;16407:6;16403:14;16396:58;16488:10;16483:2;16475:6;16471:15;16464:35;16279:227;:::o;16512:366::-;16654:3;16675:67;16739:2;16734:3;16675:67;:::i;:::-;16668:74;;16751:93;16840:3;16751:93;:::i;:::-;16869:2;16864:3;16860:12;16853:19;;16512:366;;;:::o;16884:419::-;17050:4;17088:2;17077:9;17073:18;17065:26;;17137:9;17131:4;17127:20;17123:1;17112:9;17108:17;17101:47;17165:131;17291:4;17165:131;:::i;:::-;17157:139;;16884:419;;;:::o;17309:191::-;17349:3;17368:20;17386:1;17368:20;:::i;:::-;17363:25;;17402:20;17420:1;17402:20;:::i;:::-;17397:25;;17445:1;17442;17438:9;17431:16;;17466:3;17463:1;17460:10;17457:36;;;17473:18;;:::i;:::-;17457:36;17309:191;;;;:::o;17506:162::-;17646:14;17642:1;17634:6;17630:14;17623:38;17506:162;:::o;17674:366::-;17816:3;17837:67;17901:2;17896:3;17837:67;:::i;:::-;17830:74;;17913:93;18002:3;17913:93;:::i;:::-;18031:2;18026:3;18022:12;18015:19;;17674:366;;;:::o;18046:419::-;18212:4;18250:2;18239:9;18235:18;18227:26;;18299:9;18293:4;18289:20;18285:1;18274:9;18270:17;18263:47;18327:131;18453:4;18327:131;:::i;:::-;18319:139;;18046:419;;;:::o;18471:332::-;18592:4;18630:2;18619:9;18615:18;18607:26;;18643:71;18711:1;18700:9;18696:17;18687:6;18643:71;:::i;:::-;18724:72;18792:2;18781:9;18777:18;18768:6;18724:72;:::i;:::-;18471:332;;;;;:::o;18809:224::-;18949:34;18945:1;18937:6;18933:14;18926:58;19018:7;19013:2;19005:6;19001:15;18994:32;18809:224;:::o;19039:366::-;19181:3;19202:67;19266:2;19261:3;19202:67;:::i;:::-;19195:74;;19278:93;19367:3;19278:93;:::i;:::-;19396:2;19391:3;19387:12;19380:19;;19039:366;;;:::o;19411:419::-;19577:4;19615:2;19604:9;19600:18;19592:26;;19664:9;19658:4;19654:20;19650:1;19639:9;19635:17;19628:47;19692:131;19818:4;19692:131;:::i;:::-;19684:139;;19411:419;;;:::o;19836:229::-;19976:34;19972:1;19964:6;19960:14;19953:58;20045:12;20040:2;20032:6;20028:15;20021:37;19836:229;:::o;20071:366::-;20213:3;20234:67;20298:2;20293:3;20234:67;:::i;:::-;20227:74;;20310:93;20399:3;20310:93;:::i;:::-;20428:2;20423:3;20419:12;20412:19;;20071:366;;;:::o;20443:419::-;20609:4;20647:2;20636:9;20632:18;20624:26;;20696:9;20690:4;20686:20;20682:1;20671:9;20667:17;20660:47;20724:131;20850:4;20724:131;:::i;:::-;20716:139;;20443:419;;;:::o;20868:225::-;21008:34;21004:1;20996:6;20992:14;20985:58;21077:8;21072:2;21064:6;21060:15;21053:33;20868:225;:::o;21099:366::-;21241:3;21262:67;21326:2;21321:3;21262:67;:::i;:::-;21255:74;;21338:93;21427:3;21338:93;:::i;:::-;21456:2;21451:3;21447:12;21440:19;;21099:366;;;:::o;21471:419::-;21637:4;21675:2;21664:9;21660:18;21652:26;;21724:9;21718:4;21714:20;21710:1;21699:9;21695:17;21688:47;21752:131;21878:4;21752:131;:::i;:::-;21744:139;;21471:419;;;:::o;21896:223::-;22036:34;22032:1;22024:6;22020:14;22013:58;22105:6;22100:2;22092:6;22088:15;22081:31;21896:223;:::o;22125:366::-;22267:3;22288:67;22352:2;22347:3;22288:67;:::i;:::-;22281:74;;22364:93;22453:3;22364:93;:::i;:::-;22482:2;22477:3;22473:12;22466:19;;22125:366;;;:::o;22497:419::-;22663:4;22701:2;22690:9;22686:18;22678:26;;22750:9;22744:4;22740:20;22736:1;22725:9;22721:17;22714:47;22778:131;22904:4;22778:131;:::i;:::-;22770:139;;22497:419;;;:::o;22922:221::-;23062:34;23058:1;23050:6;23046:14;23039:58;23131:4;23126:2;23118:6;23114:15;23107:29;22922:221;:::o;23149:366::-;23291:3;23312:67;23376:2;23371:3;23312:67;:::i;:::-;23305:74;;23388:93;23477:3;23388:93;:::i;:::-;23506:2;23501:3;23497:12;23490:19;;23149:366;;;:::o;23521:419::-;23687:4;23725:2;23714:9;23710:18;23702:26;;23774:9;23768:4;23764:20;23760:1;23749:9;23745:17;23738:47;23802:131;23928:4;23802:131;:::i;:::-;23794:139;;23521:419;;;:::o;23946:180::-;23994:77;23991:1;23984:88;24091:4;24088:1;24081:15;24115:4;24112:1;24105:15;24132:185;24172:1;24189:20;24207:1;24189:20;:::i;:::-;24184:25;;24223:20;24241:1;24223:20;:::i;:::-;24218:25;;24262:1;24252:35;;24267:18;;:::i;:::-;24252:35;24309:1;24306;24302:9;24297:14;;24132:185;;;;:::o;24323:158::-;24463:10;24459:1;24451:6;24447:14;24440:34;24323:158;:::o;24487:365::-;24629:3;24650:66;24714:1;24709:3;24650:66;:::i;:::-;24643:73;;24725:93;24814:3;24725:93;:::i;:::-;24843:2;24838:3;24834:12;24827:19;;24487:365;;;:::o;24858:419::-;25024:4;25062:2;25051:9;25047:18;25039:26;;25111:9;25105:4;25101:20;25097:1;25086:9;25082:17;25075:47;25139:131;25265:4;25139:131;:::i;:::-;25131:139;;24858:419;;;:::o;25283:224::-;25423:34;25419:1;25411:6;25407:14;25400:58;25492:7;25487:2;25479:6;25475:15;25468:32;25283:224;:::o;25513:366::-;25655:3;25676:67;25740:2;25735:3;25676:67;:::i;:::-;25669:74;;25752:93;25841:3;25752:93;:::i;:::-;25870:2;25865:3;25861:12;25854:19;;25513:366;;;:::o;25885:419::-;26051:4;26089:2;26078:9;26074:18;26066:26;;26138:9;26132:4;26128:20;26124:1;26113:9;26109:17;26102:47;26166:131;26292:4;26166:131;:::i;:::-;26158:139;;25885:419;;;:::o;26310:222::-;26450:34;26446:1;26438:6;26434:14;26427:58;26519:5;26514:2;26506:6;26502:15;26495:30;26310:222;:::o;26538:366::-;26680:3;26701:67;26765:2;26760:3;26701:67;:::i;:::-;26694:74;;26777:93;26866:3;26777:93;:::i;:::-;26895:2;26890:3;26886:12;26879:19;;26538:366;;;:::o;26910:419::-;27076:4;27114:2;27103:9;27099:18;27091:26;;27163:9;27157:4;27153:20;27149:1;27138:9;27134:17;27127:47;27191:131;27317:4;27191:131;:::i;:::-;27183:139;;26910:419;;;:::o;27335:231::-;27475:34;27471:1;27463:6;27459:14;27452:58;27544:14;27539:2;27531:6;27527:15;27520:39;27335:231;:::o;27572:366::-;27714:3;27735:67;27799:2;27794:3;27735:67;:::i;:::-;27728:74;;27811:93;27900:3;27811:93;:::i;:::-;27929:2;27924:3;27920:12;27913:19;;27572:366;;;:::o;27944:419::-;28110:4;28148:2;28137:9;28133:18;28125:26;;28197:9;28191:4;28187:20;28183:1;28172:9;28168:17;28161:47;28225:131;28351:4;28225:131;:::i;:::-;28217:139;;27944:419;;;:::o;28369:223::-;28509:34;28505:1;28497:6;28493:14;28486:58;28578:6;28573:2;28565:6;28561:15;28554:31;28369:223;:::o;28598:366::-;28740:3;28761:67;28825:2;28820:3;28761:67;:::i;:::-;28754:74;;28837:93;28926:3;28837:93;:::i;:::-;28955:2;28950:3;28946:12;28939:19;;28598:366;;;:::o;28970:419::-;29136:4;29174:2;29163:9;29159:18;29151:26;;29223:9;29217:4;29213:20;29209:1;29198:9;29194:17;29187:47;29251:131;29377:4;29251:131;:::i;:::-;29243:139;;28970:419;;;:::o;29395:225::-;29535:34;29531:1;29523:6;29519:14;29512:58;29604:8;29599:2;29591:6;29587:15;29580:33;29395:225;:::o;29626:366::-;29768:3;29789:67;29853:2;29848:3;29789:67;:::i;:::-;29782:74;;29865:93;29954:3;29865:93;:::i;:::-;29983:2;29978:3;29974:12;29967:19;;29626:366;;;:::o;29998:419::-;30164:4;30202:2;30191:9;30187:18;30179:26;;30251:9;30245:4;30241:20;30237:1;30226:9;30222:17;30215:47;30279:131;30405:4;30279:131;:::i;:::-;30271:139;;29998:419;;;:::o;30423:442::-;30572:4;30610:2;30599:9;30595:18;30587:26;;30623:71;30691:1;30680:9;30676:17;30667:6;30623:71;:::i;:::-;30704:72;30772:2;30761:9;30757:18;30748:6;30704:72;:::i;:::-;30786;30854:2;30843:9;30839:18;30830:6;30786:72;:::i;:::-;30423:442;;;;;;:::o;30871:194::-;30911:4;30931:20;30949:1;30931:20;:::i;:::-;30926:25;;30965:20;30983:1;30965:20;:::i;:::-;30960:25;;31009:1;31006;31002:9;30994:17;;31033:1;31027:4;31024:11;31021:37;;;31038:18;;:::i;:::-;31021:37;30871:194;;;;:::o;31071:410::-;31111:7;31134:20;31152:1;31134:20;:::i;:::-;31129:25;;31168:20;31186:1;31168:20;:::i;:::-;31163:25;;31223:1;31220;31216:9;31245:30;31263:11;31245:30;:::i;:::-;31234:41;;31424:1;31415:7;31411:15;31408:1;31405:22;31385:1;31378:9;31358:83;31335:139;;31454:18;;:::i;:::-;31335:139;31119:362;31071:410;;;;:::o;31487:143::-;31544:5;31575:6;31569:13;31560:22;;31591:33;31618:5;31591:33;:::i;:::-;31487:143;;;;:::o;31636:351::-;31706:6;31755:2;31743:9;31734:7;31730:23;31726:32;31723:119;;;31761:79;;:::i;:::-;31723:119;31881:1;31906:64;31962:7;31953:6;31942:9;31938:22;31906:64;:::i;:::-;31896:74;;31852:128;31636:351;;;;:::o;31993:85::-;32038:7;32067:5;32056:16;;31993:85;;;:::o;32084:158::-;32142:9;32175:61;32193:42;32202:32;32228:5;32202:32;:::i;:::-;32193:42;:::i;:::-;32175:61;:::i;:::-;32162:74;;32084:158;;;:::o;32248:147::-;32343:45;32382:5;32343:45;:::i;:::-;32338:3;32331:58;32248:147;;:::o;32401:114::-;32468:6;32502:5;32496:12;32486:22;;32401:114;;;:::o;32521:184::-;32620:11;32654:6;32649:3;32642:19;32694:4;32689:3;32685:14;32670:29;;32521:184;;;;:::o;32711:132::-;32778:4;32801:3;32793:11;;32831:4;32826:3;32822:14;32814:22;;32711:132;;;:::o;32849:108::-;32926:24;32944:5;32926:24;:::i;:::-;32921:3;32914:37;32849:108;;:::o;32963:179::-;33032:10;33053:46;33095:3;33087:6;33053:46;:::i;:::-;33131:4;33126:3;33122:14;33108:28;;32963:179;;;;:::o;33148:113::-;33218:4;33250;33245:3;33241:14;33233:22;;33148:113;;;:::o;33297:732::-;33416:3;33445:54;33493:5;33445:54;:::i;:::-;33515:86;33594:6;33589:3;33515:86;:::i;:::-;33508:93;;33625:56;33675:5;33625:56;:::i;:::-;33704:7;33735:1;33720:284;33745:6;33742:1;33739:13;33720:284;;;33821:6;33815:13;33848:63;33907:3;33892:13;33848:63;:::i;:::-;33841:70;;33934:60;33987:6;33934:60;:::i;:::-;33924:70;;33780:224;33767:1;33764;33760:9;33755:14;;33720:284;;;33724:14;34020:3;34013:10;;33421:608;;;33297:732;;;;:::o;34035:831::-;34298:4;34336:3;34325:9;34321:19;34313:27;;34350:71;34418:1;34407:9;34403:17;34394:6;34350:71;:::i;:::-;34431:80;34507:2;34496:9;34492:18;34483:6;34431:80;:::i;:::-;34558:9;34552:4;34548:20;34543:2;34532:9;34528:18;34521:48;34586:108;34689:4;34680:6;34586:108;:::i;:::-;34578:116;;34704:72;34772:2;34761:9;34757:18;34748:6;34704:72;:::i;:::-;34786:73;34854:3;34843:9;34839:19;34830:6;34786:73;:::i;:::-;34035:831;;;;;;;;:::o;34872:807::-;35121:4;35159:3;35148:9;35144:19;35136:27;;35173:71;35241:1;35230:9;35226:17;35217:6;35173:71;:::i;:::-;35254:72;35322:2;35311:9;35307:18;35298:6;35254:72;:::i;:::-;35336:80;35412:2;35401:9;35397:18;35388:6;35336:80;:::i;:::-;35426;35502:2;35491:9;35487:18;35478:6;35426:80;:::i;:::-;35516:73;35584:3;35573:9;35569:19;35560:6;35516:73;:::i;:::-;35599;35667:3;35656:9;35652:19;35643:6;35599:73;:::i;:::-;34872:807;;;;;;;;;:::o;35685:143::-;35742:5;35773:6;35767:13;35758:22;;35789:33;35816:5;35789:33;:::i;:::-;35685:143;;;;:::o;35834:663::-;35922:6;35930;35938;35987:2;35975:9;35966:7;35962:23;35958:32;35955:119;;;35993:79;;:::i;:::-;35955:119;36113:1;36138:64;36194:7;36185:6;36174:9;36170:22;36138:64;:::i;:::-;36128:74;;36084:128;36251:2;36277:64;36333:7;36324:6;36313:9;36309:22;36277:64;:::i;:::-;36267:74;;36222:129;36390:2;36416:64;36472:7;36463:6;36452:9;36448:22;36416:64;:::i;:::-;36406:74;;36361:129;35834:663;;;;;:::o

Swarm Source

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