ETH Price: $2,968.16 (-4.09%)
Gas: 2 Gwei

Token

Easter Eggs Of Prey (EEP)
 

Overview

Max Total Supply

1,000,000,000 EEP

Holders

53

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5,148,879.015863995214168314 EEP

Value
$0.00
0x75e5fd7d9d6e671c8a7ef1f71ad121a4d890b614
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:
EEP

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// Easter Eggs Of Prey
// https://t.me/EasterEggsOfPrey
// https://eepredator.finance/

// SPDX-License-Identifier: unlicensed

////// lib/openzeppelin-contracts/contracts/access/Ownable.sol
// OpenZeppelin Contracts v4.4.0 (access/Ownable.sol)

pragma solidity ^0.8.0;


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

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

/**
 * @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() {
        _transferOwnership(_msgSender());
    }

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

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

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

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

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

////// lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol
// OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol)

/* pragma solidity ^0.8.0; */

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

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}


contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @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 _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

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

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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

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

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

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

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

////// lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol
// OpenZeppelin Contracts v4.4.0 (utils/math/SafeMath.sol)

/* pragma solidity ^0.8.0; */

// 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 generally not needed starting with Solidity 0.8, since 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;
        }
    }
}

////// src/IUniswapV2Factory.sol
/* pragma solidity 0.8.10; */
/* pragma experimental ABIEncoderV2; */

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

////// src/IUniswapV2Pair.sol
/* pragma solidity 0.8.10; */
/* pragma experimental ABIEncoderV2; */

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

////// src/IUniswapV2Router02.sol
/* pragma solidity 0.8.10; */
/* pragma experimental ABIEncoderV2; */

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

    function WETH() external pure returns (address);

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

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

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

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

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

contract EEP is ERC20, Ownable {
    using SafeMath for uint256;

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

    bool private swapping;

    address public marketingWallet;
    address public devWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    uint256 public percentForLPBurn = 25; // 25 = .25%
    bool public lpBurnEnabled = true;
    uint256 public lpBurnFrequency = 3600 seconds;
    uint256 public lastLpBurnTime;

    uint256 public manualBurnFrequency = 30 minutes;
    uint256 public lastManualLpBurnTime;

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

    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;

    /******************/

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

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event marketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event devWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

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

    event AutoNukeLP();

    event ManualNukeLP();

    constructor() ERC20("Easter Eggs Of Prey", "EEP") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 _buyMarketingFee = 1;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 1;

        uint256 _sellMarketingFee = 1;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 1;

        uint256 totalSupply = 1_000_000_000 * 1e18;

        maxTransactionAmount = 30_000_000 * 1e18; // 3% from total supply maxTransactionAmountTxn
        maxWallet = 60_000_000 * 1e18; // 6% from total supply maxWallet
        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swap wallet

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;

        marketingWallet = address(0xb35CB087F2C94654CF463a2729798cADCC23ed10); // set as marketing wallet
        devWallet = address(0xb35CB087F2C94654CF463a2729798cADCC23ed10); // set as dev wallet

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);

        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        lastLpBurnTime = block.timestamp;
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool) {
        transferDelayEnabled = false;
        return true;
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

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

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

    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _devFee
    ) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
        require(buyTotalFees <= 20, "Must keep fees at 20% or less");
    }

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _devFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
        require(sellTotalFees <= 25, "Must keep fees at 25% or less");
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateMarketingWallet(address newMarketingWallet)
        external
        onlyOwner
    {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }

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

    event BoughtEarly(address indexed sniper);

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

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

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled) {
                    if (
                        to != owner() &&
                        to != address(uniswapV2Router) &&
                        to != address(uniswapV2Pair)
                    ) {
                        require(
                            _holderLastTransferTimestamp[tx.origin] <
                                block.number,
                            "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                        );
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        if (
            !swapping &&
            automatedMarketMakerPairs[to] &&
            lpBurnEnabled &&
            block.timestamp >= lastLpBurnTime + lpBurnFrequency &&
            !_isExcludedFromFees[from]
        ) {
            autoBurnLiquidityPairTokens();
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForDev += (fees * sellDevFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForDev += (fees * buyDevFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

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

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

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

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity +
            tokensForMarketing +
            tokensForDev;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(
            totalTokensToSwap
        );
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);

        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;

        (success, ) = address(devWallet).call{value: ethForDev}("");

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

        (success, ) = address(marketingWallet).call{
            value: address(this).balance
        }("");
    }

    function setAutoLPBurnSettings(
        uint256 _frequencyInSeconds,
        uint256 _percent,
        bool _Enabled
    ) external onlyOwner {
        require(
            _frequencyInSeconds >= 600,
            "cannot set buyback more often than every 10 minutes"
        );
        require(
            _percent <= 1000 && _percent >= 0,
            "Must set auto LP burn percent between 0% and 10%"
        );
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        lpBurnEnabled = _Enabled;
    }

    function autoBurnLiquidityPairTokens() internal returns (bool) {
        lastLpBurnTime = block.timestamp;

        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);

        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div(
            10000
        );

        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0) {
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }

        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit AutoNukeLP();
        return true;
    }

    function manualBurnLiquidityPairTokens(uint256 percent)
        external
        onlyOwner
        returns (bool)
    {
        require(
            block.timestamp > lastManualLpBurnTime + manualBurnFrequency,
            "Must wait for cooldown to finish"
        );
        require(percent <= 1000, "May not nuke more than 10% of tokens in LP");
        lastManualLpBurnTime = block.timestamp;

        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);

        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000);

        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0) {
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }

        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit ManualNukeLP();
        return true;
    }
}

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":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","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":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526019600c556001600d60006101000a81548160ff021916908315150217905550610e10600e556107086010556001601260006101000a81548160ff0219169083151502179055506000601260016101000a81548160ff0219169083151502179055506000601260026101000a81548160ff0219169083151502179055506001601460006101000a81548160ff021916908315150217905550348015620000a957600080fd5b506040518060400160405280601381526020017f4561737465722045676773204f662050726579000000000000000000000000008152506040518060400160405280600381526020017f454550000000000000000000000000000000000000000000000000000000000081525081600390805190602001906200012e92919062000b95565b5080600490805190602001906200014792919062000b95565b5050506200016a6200015e6200065560201b60201c565b6200065d60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001968160016200072360201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200021457600080fd5b505afa15801562000229573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024f919062000c5c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002b257600080fd5b505afa158015620002c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ed919062000c5c565b6040518363ffffffff1660e01b81526004016200030c92919062000d0f565b602060405180830381600087803b1580156200032757600080fd5b505af11580156200033c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000362919062000c5c565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003d7600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200072360201b60201c565b6200040c600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200080d60201b60201c565b600060019050600080600190506000600190506000806001905060006b033b2e3c9fd0803ce800000090506a18d0bf423c03d8de0000006009819055506a31a17e847807b1bc000000600b819055506127106005826200046d919062000e60565b62000479919062000e28565b600a81905550866016819055508560178190555084601881905550601854601754601654620004a9919062000dcb565b620004b5919062000dcb565b60158190555083601a8190555082601b8190555081601c81905550601c54601b54601a54620004e5919062000dcb565b620004f1919062000dcb565b60198190555073b35cb087f2c94654cf463a2729798cadcc23ed10600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b35cb087f2c94654cf463a2729798cadcc23ed10600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005c3620005b5620008ae60201b60201c565b6001620008d860201b60201c565b620005d6306001620008d860201b60201c565b620005eb61dead6001620008d860201b60201c565b6200060d620005ff620008ae60201b60201c565b60016200072360201b60201c565b620006203060016200072360201b60201c565b6200063561dead60016200072360201b60201c565b62000647338262000a1260201b60201c565b50505050505050506200103f565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620007336200065560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000759620008ae60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007a99062000d59565b60405180910390fd5b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008e86200065560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200090e620008ae60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000967576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200095e9062000d59565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000a06919062000d3c565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a7c9062000d7b565b60405180910390fd5b62000a996000838362000b8b60201b60201c565b806002600082825462000aad919062000dcb565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000b04919062000dcb565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b6b919062000d9d565b60405180910390a362000b876000838362000b9060201b60201c565b5050565b505050565b505050565b82805462000ba39062000f0b565b90600052602060002090601f01602090048101928262000bc7576000855562000c13565b82601f1062000be257805160ff191683800117855562000c13565b8280016001018555821562000c13579182015b8281111562000c1257825182559160200191906001019062000bf5565b5b50905062000c22919062000c26565b5090565b5b8082111562000c4157600081600090555060010162000c27565b5090565b60008151905062000c568162001025565b92915050565b60006020828403121562000c755762000c7462000fce565b5b600062000c858482850162000c45565b91505092915050565b62000c998162000ec1565b82525050565b62000caa8162000ed5565b82525050565b600062000cbf60208362000dba565b915062000ccc8262000fd3565b602082019050919050565b600062000ce6601f8362000dba565b915062000cf38262000ffc565b602082019050919050565b62000d098162000f01565b82525050565b600060408201905062000d26600083018562000c8e565b62000d35602083018462000c8e565b9392505050565b600060208201905062000d53600083018462000c9f565b92915050565b6000602082019050818103600083015262000d748162000cb0565b9050919050565b6000602082019050818103600083015262000d968162000cd7565b9050919050565b600060208201905062000db4600083018462000cfe565b92915050565b600082825260208201905092915050565b600062000dd88262000f01565b915062000de58362000f01565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000e1d5762000e1c62000f41565b5b828201905092915050565b600062000e358262000f01565b915062000e428362000f01565b92508262000e555762000e5462000f70565b5b828204905092915050565b600062000e6d8262000f01565b915062000e7a8362000f01565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000eb65762000eb562000f41565b5b828202905092915050565b600062000ece8262000ee1565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000600282049050600182168062000f2457607f821691505b6020821081141562000f3b5762000f3a62000f9f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b620010308162000ec1565b81146200103c57600080fd5b50565b60805160601c615c526200108860003960008181610f9101528181612e30015281816141ff015281816142ef01528181614316015281816143b201526143d90152615c526000f3fe6080604052600436106103b15760003560e01c80638da5cb5b116101e7578063bbc0c7421161010d578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b14610e03578063f637434214610e2c578063f8b45b0514610e57578063fe72b27a14610e82576103b8565b8063dd62ed3e14610d45578063e2f4560514610d82578063e884f26014610dad578063f11a24d314610dd8576103b8565b8063c876d0b9116100dc578063c876d0b914610c87578063c8c8ebe414610cb2578063d257b34f14610cdd578063d85ba06314610d1a576103b8565b8063bbc0c74214610be1578063c024666814610c0c578063c17b5b8c14610c35578063c18bc19514610c5e576103b8565b80639ec22c0e11610185578063a4c82a0011610154578063a4c82a0014610b13578063a9059cbb14610b3e578063aacebbe314610b7b578063b62496f514610ba4576103b8565b80639ec22c0e14610a555780639fccce3214610a80578063a0d82dc514610aab578063a457c2d714610ad6576103b8565b8063924de9b7116101c1578063924de9b7146109ad57806395d89b41146109d65780639a7a23d614610a015780639c3b4fdc14610a2a576103b8565b80638da5cb5b1461092c5780638ea5220f146109575780639213691314610982576103b8565b8063313ce567116102d7578063715018a61161026a57806375f0a8741161023957806375f0a874146108965780637bce5a04146108c15780638095d564146108ec5780638a8c523c14610915576103b8565b8063715018a614610802578063730c188814610819578063751039fc146108425780637571336a1461086d576103b8565b80634fbee193116102a65780634fbee193146107325780636a486a8e1461076f5780636ddd17131461079a57806370a08231146107c5576103b8565b8063313ce56714610674578063395093511461069f57806349bd5a5e146106dc5780634a62bb6514610707576103b8565b8063199ffc721161034f57806323b872dd1161031e57806323b872dd146105b657806327c8f835146105f35780632c3e486c1461061e5780632e82f1a014610649576103b8565b8063199ffc721461050c5780631a8145bb146105375780631f3fed8f14610562578063203e727e1461058d576103b8565b80631694505e1161038b5780631694505e1461046257806318160ddd1461048d5780631816467f146104b8578063184c16c5146104e1576103b8565b806306fdde03146103bd578063095ea7b3146103e857806310d5de5314610425576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610ebf565b6040516103df9190614d5a565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a919061462d565b610f51565b60405161041c9190614d24565b60405180910390f35b34801561043157600080fd5b5061044c60048036038101906104479190614500565b610f6f565b6040516104599190614d24565b60405180910390f35b34801561046e57600080fd5b50610477610f8f565b6040516104849190614d3f565b60405180910390f35b34801561049957600080fd5b506104a2610fb3565b6040516104af919061509c565b60405180910390f35b3480156104c457600080fd5b506104df60048036038101906104da9190614500565b610fbd565b005b3480156104ed57600080fd5b506104f66110f9565b604051610503919061509c565b60405180910390f35b34801561051857600080fd5b506105216110ff565b60405161052e919061509c565b60405180910390f35b34801561054357600080fd5b5061054c611105565b604051610559919061509c565b60405180910390f35b34801561056e57600080fd5b5061057761110b565b604051610584919061509c565b60405180910390f35b34801561059957600080fd5b506105b460048036038101906105af919061469a565b611111565b005b3480156105c257600080fd5b506105dd60048036038101906105d8919061459a565b611220565b6040516105ea9190614d24565b60405180910390f35b3480156105ff57600080fd5b50610608611318565b6040516106159190614ca8565b60405180910390f35b34801561062a57600080fd5b5061063361131e565b604051610640919061509c565b60405180910390f35b34801561065557600080fd5b5061065e611324565b60405161066b9190614d24565b60405180910390f35b34801561068057600080fd5b50610689611337565b6040516106969190615148565b60405180910390f35b3480156106ab57600080fd5b506106c660048036038101906106c1919061462d565b611340565b6040516106d39190614d24565b60405180910390f35b3480156106e857600080fd5b506106f16113ec565b6040516106fe9190614ca8565b60405180910390f35b34801561071357600080fd5b5061071c611412565b6040516107299190614d24565b60405180910390f35b34801561073e57600080fd5b5061075960048036038101906107549190614500565b611425565b6040516107669190614d24565b60405180910390f35b34801561077b57600080fd5b5061078461147b565b604051610791919061509c565b60405180910390f35b3480156107a657600080fd5b506107af611481565b6040516107bc9190614d24565b60405180910390f35b3480156107d157600080fd5b506107ec60048036038101906107e79190614500565b611494565b6040516107f9919061509c565b60405180910390f35b34801561080e57600080fd5b506108176114dc565b005b34801561082557600080fd5b50610840600480360381019061083b91906146f4565b611564565b005b34801561084e57600080fd5b506108576116a4565b6040516108649190614d24565b60405180910390f35b34801561087957600080fd5b50610894600480360381019061088f91906145ed565b611744565b005b3480156108a257600080fd5b506108ab61181b565b6040516108b89190614ca8565b60405180910390f35b3480156108cd57600080fd5b506108d6611841565b6040516108e3919061509c565b60405180910390f35b3480156108f857600080fd5b50610913600480360381019061090e9190614747565b611847565b005b34801561092157600080fd5b5061092a611946565b005b34801561093857600080fd5b50610941611a01565b60405161094e9190614ca8565b60405180910390f35b34801561096357600080fd5b5061096c611a2b565b6040516109799190614ca8565b60405180910390f35b34801561098e57600080fd5b50610997611a51565b6040516109a4919061509c565b60405180910390f35b3480156109b957600080fd5b506109d460048036038101906109cf919061466d565b611a57565b005b3480156109e257600080fd5b506109eb611af0565b6040516109f89190614d5a565b60405180910390f35b348015610a0d57600080fd5b50610a286004803603810190610a2391906145ed565b611b82565b005b348015610a3657600080fd5b50610a3f611c9d565b604051610a4c919061509c565b60405180910390f35b348015610a6157600080fd5b50610a6a611ca3565b604051610a77919061509c565b60405180910390f35b348015610a8c57600080fd5b50610a95611ca9565b604051610aa2919061509c565b60405180910390f35b348015610ab757600080fd5b50610ac0611caf565b604051610acd919061509c565b60405180910390f35b348015610ae257600080fd5b50610afd6004803603810190610af8919061462d565b611cb5565b604051610b0a9190614d24565b60405180910390f35b348015610b1f57600080fd5b50610b28611da0565b604051610b35919061509c565b60405180910390f35b348015610b4a57600080fd5b50610b656004803603810190610b60919061462d565b611da6565b604051610b729190614d24565b60405180910390f35b348015610b8757600080fd5b50610ba26004803603810190610b9d9190614500565b611dc4565b005b348015610bb057600080fd5b50610bcb6004803603810190610bc69190614500565b611f00565b604051610bd89190614d24565b60405180910390f35b348015610bed57600080fd5b50610bf6611f20565b604051610c039190614d24565b60405180910390f35b348015610c1857600080fd5b50610c336004803603810190610c2e91906145ed565b611f33565b005b348015610c4157600080fd5b50610c5c6004803603810190610c579190614747565b612058565b005b348015610c6a57600080fd5b50610c856004803603810190610c80919061469a565b612156565b005b348015610c9357600080fd5b50610c9c612265565b604051610ca99190614d24565b60405180910390f35b348015610cbe57600080fd5b50610cc7612278565b604051610cd4919061509c565b60405180910390f35b348015610ce957600080fd5b50610d046004803603810190610cff919061469a565b61227e565b604051610d119190614d24565b60405180910390f35b348015610d2657600080fd5b50610d2f6123d3565b604051610d3c919061509c565b60405180910390f35b348015610d5157600080fd5b50610d6c6004803603810190610d67919061455a565b6123d9565b604051610d79919061509c565b60405180910390f35b348015610d8e57600080fd5b50610d97612460565b604051610da4919061509c565b60405180910390f35b348015610db957600080fd5b50610dc2612466565b604051610dcf9190614d24565b60405180910390f35b348015610de457600080fd5b50610ded612506565b604051610dfa919061509c565b60405180910390f35b348015610e0f57600080fd5b50610e2a6004803603810190610e259190614500565b61250c565b005b348015610e3857600080fd5b50610e41612604565b604051610e4e919061509c565b60405180910390f35b348015610e6357600080fd5b50610e6c61260a565b604051610e79919061509c565b60405180910390f35b348015610e8e57600080fd5b50610ea96004803603810190610ea4919061469a565b612610565b604051610eb69190614d24565b60405180910390f35b606060038054610ece906153a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610efa906153a8565b8015610f475780601f10610f1c57610100808354040283529160200191610f47565b820191906000526020600020905b815481529060010190602001808311610f2a57829003601f168201915b5050505050905090565b6000610f65610f5e6128fd565b8484612905565b6001905092915050565b60216020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610fc56128fd565b73ffffffffffffffffffffffffffffffffffffffff16610fe3611a01565b73ffffffffffffffffffffffffffffffffffffffff1614611039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103090614f7c565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b600c5481565b601e5481565b601d5481565b6111196128fd565b73ffffffffffffffffffffffffffffffffffffffff16611137611a01565b73ffffffffffffffffffffffffffffffffffffffff161461118d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118490614f7c565b60405180910390fd5b670de0b6b3a76400006103e860016111a3610fb3565b6111ad919061524a565b6111b79190615219565b6111c19190615219565b811015611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa9061507c565b60405180910390fd5b670de0b6b3a764000081611217919061524a565b60098190555050565b600061122d848484612ad0565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112786128fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156112f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ef90614f5c565b60405180910390fd5b61130c856113046128fd565b858403612905565b60019150509392505050565b61dead81565b600e5481565b600d60009054906101000a900460ff1681565b60006012905090565b60006113e261134d6128fd565b84846001600061135b6128fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113dd91906151c3565b612905565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260009054906101000a900460ff1681565b6000602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60195481565b601260029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114e46128fd565b73ffffffffffffffffffffffffffffffffffffffff16611502611a01565b73ffffffffffffffffffffffffffffffffffffffff1614611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f90614f7c565b60405180910390fd5b611562600061386a565b565b61156c6128fd565b73ffffffffffffffffffffffffffffffffffffffff1661158a611a01565b73ffffffffffffffffffffffffffffffffffffffff16146115e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d790614f7c565b60405180910390fd5b610258831015611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c90614dfc565b60405180910390fd5b6103e88211158015611638575060008210155b611677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166e90614e9c565b60405180910390fd5b82600e8190555081600c8190555080600d60006101000a81548160ff021916908315150217905550505050565b60006116ae6128fd565b73ffffffffffffffffffffffffffffffffffffffff166116cc611a01565b73ffffffffffffffffffffffffffffffffffffffff1614611722576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171990614f7c565b60405180910390fd5b6000601260006101000a81548160ff0219169083151502179055506001905090565b61174c6128fd565b73ffffffffffffffffffffffffffffffffffffffff1661176a611a01565b73ffffffffffffffffffffffffffffffffffffffff16146117c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b790614f7c565b60405180910390fd5b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b61184f6128fd565b73ffffffffffffffffffffffffffffffffffffffff1661186d611a01565b73ffffffffffffffffffffffffffffffffffffffff16146118c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ba90614f7c565b60405180910390fd5b8260168190555081601781905550806018819055506018546017546016546118eb91906151c3565b6118f591906151c3565b60158190555060146015541115611941576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193890614ebc565b60405180910390fd5b505050565b61194e6128fd565b73ffffffffffffffffffffffffffffffffffffffff1661196c611a01565b73ffffffffffffffffffffffffffffffffffffffff16146119c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b990614f7c565b60405180910390fd5b6001601260016101000a81548160ff0219169083151502179055506001601260026101000a81548160ff02191690831515021790555042600f81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a5481565b611a5f6128fd565b73ffffffffffffffffffffffffffffffffffffffff16611a7d611a01565b73ffffffffffffffffffffffffffffffffffffffff1614611ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aca90614f7c565b60405180910390fd5b80601260026101000a81548160ff02191690831515021790555050565b606060048054611aff906153a8565b80601f0160208091040260200160405190810160405280929190818152602001828054611b2b906153a8565b8015611b785780601f10611b4d57610100808354040283529160200191611b78565b820191906000526020600020905b815481529060010190602001808311611b5b57829003601f168201915b5050505050905090565b611b8a6128fd565b73ffffffffffffffffffffffffffffffffffffffff16611ba8611a01565b73ffffffffffffffffffffffffffffffffffffffff1614611bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf590614f7c565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8690614e3c565b60405180910390fd5b611c998282613930565b5050565b60185481565b60115481565b601f5481565b601c5481565b60008060016000611cc46128fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d789061505c565b60405180910390fd5b611d95611d8c6128fd565b85858403612905565b600191505092915050565b600f5481565b6000611dba611db36128fd565b8484612ad0565b6001905092915050565b611dcc6128fd565b73ffffffffffffffffffffffffffffffffffffffff16611dea611a01565b73ffffffffffffffffffffffffffffffffffffffff1614611e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3790614f7c565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60226020528060005260406000206000915054906101000a900460ff1681565b601260019054906101000a900460ff1681565b611f3b6128fd565b73ffffffffffffffffffffffffffffffffffffffff16611f59611a01565b73ffffffffffffffffffffffffffffffffffffffff1614611faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa690614f7c565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161204c9190614d24565b60405180910390a25050565b6120606128fd565b73ffffffffffffffffffffffffffffffffffffffff1661207e611a01565b73ffffffffffffffffffffffffffffffffffffffff16146120d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cb90614f7c565b60405180910390fd5b82601a8190555081601b8190555080601c81905550601c54601b54601a546120fc91906151c3565b61210691906151c3565b601981905550601980541115612151576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121489061503c565b60405180910390fd5b505050565b61215e6128fd565b73ffffffffffffffffffffffffffffffffffffffff1661217c611a01565b73ffffffffffffffffffffffffffffffffffffffff16146121d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c990614f7c565b60405180910390fd5b670de0b6b3a76400006103e860056121e8610fb3565b6121f2919061524a565b6121fc9190615219565b6122069190615219565b811015612248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223f90614e1c565b60405180910390fd5b670de0b6b3a76400008161225c919061524a565b600b8190555050565b601460009054906101000a900460ff1681565b60095481565b60006122886128fd565b73ffffffffffffffffffffffffffffffffffffffff166122a6611a01565b73ffffffffffffffffffffffffffffffffffffffff16146122fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f390614f7c565b60405180910390fd5b620186a0600161230a610fb3565b612314919061524a565b61231e9190615219565b821015612360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235790614edc565b60405180910390fd5b6103e8600561236d610fb3565b612377919061524a565b6123819190615219565b8211156123c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ba90614efc565b60405180910390fd5b81600a8190555060019050919050565b60155481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b60006124706128fd565b73ffffffffffffffffffffffffffffffffffffffff1661248e611a01565b73ffffffffffffffffffffffffffffffffffffffff16146124e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124db90614f7c565b60405180910390fd5b6000601460006101000a81548160ff0219169083151502179055506001905090565b60175481565b6125146128fd565b73ffffffffffffffffffffffffffffffffffffffff16612532611a01565b73ffffffffffffffffffffffffffffffffffffffff1614612588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257f90614f7c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156125f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ef90614dbc565b60405180910390fd5b6126018161386a565b50565b601b5481565b600b5481565b600061261a6128fd565b73ffffffffffffffffffffffffffffffffffffffff16612638611a01565b73ffffffffffffffffffffffffffffffffffffffff161461268e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268590614f7c565b60405180910390fd5b60105460115461269e91906151c3565b42116126df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d690614fdc565b60405180910390fd5b6103e8821115612724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271b90614f9c565b60405180910390fd5b4260118190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016127889190614ca8565b60206040518083038186803b1580156127a057600080fd5b505afa1580156127b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d891906146c7565b905060006128036127106127f586856139d190919063ffffffff16565b6139e790919063ffffffff16565b9050600081111561283e5761283d600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead836139fd565b5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156128ad57600080fd5b505af11580156128c1573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296c90614ffc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129dc90614ddc565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ac3919061509c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3790614fbc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba790614d7c565b60405180910390fd5b6000811415612bca57612bc5838360006139fd565b613865565b601260009054906101000a900460ff161561328f57612be7611a01565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612c555750612c25611a01565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c8e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cc8575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ce15750600660149054906101000a900460ff16155b1561328e57601260019054906101000a900460ff16612ddb57602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d9b5750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd190614d9c565b60405180910390fd5b5b601460009054906101000a900460ff1615612fa557612df8611a01565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612e7f57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ed95750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612fa45743601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5690614f3c565b60405180910390fd5b43601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130485750602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130ef57600954811115613092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161308990614f1c565b60405180910390fd5b600b5461309e83611494565b826130a991906151c3565b11156130ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e19061501c565b60405180910390fd5b61328d565b602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131925750602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131e1576009548111156131dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d390614e7c565b60405180910390fd5b61328c565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661328b57600b5461323e83611494565b8261324991906151c3565b111561328a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132819061501c565b60405180910390fd5b5b5b5b5b5b600061329a30611494565b90506000600a5482101590508080156132bf5750601260029054906101000a900460ff165b80156132d85750600660149054906101000a900460ff16155b801561332e5750602260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133845750602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133da5750602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561341e576001600660146101000a81548160ff021916908315150217905550613402613c7e565b6000600660146101000a81548160ff0219169083151502179055505b600660149054906101000a900460ff161580156134845750602260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561349c5750600d60009054906101000a900460ff165b80156134b75750600e54600f546134b391906151c3565b4210155b801561350d5750602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561351c5761351a613f65565b505b6000600660149054906101000a900460ff16159050602060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135d25750602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135dc57600090505b6000811561385557602260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561363f57506000601954115b1561370c5761366c606461365e601954886139d190919063ffffffff16565b6139e790919063ffffffff16565b9050601954601b548261367f919061524a565b6136899190615219565b601e600082825461369a91906151c3565b92505081905550601954601c54826136b2919061524a565b6136bc9190615219565b601f60008282546136cd91906151c3565b92505081905550601954601a54826136e5919061524a565b6136ef9190615219565b601d600082825461370091906151c3565b92505081905550613831565b602260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561376757506000601554115b15613830576137946064613786601554886139d190919063ffffffff16565b6139e790919063ffffffff16565b9050601554601754826137a7919061524a565b6137b19190615219565b601e60008282546137c291906151c3565b92505081905550601554601854826137da919061524a565b6137e49190615219565b601f60008282546137f591906151c3565b925050819055506015546016548261380d919061524a565b6138179190615219565b601d600082825461382891906151c3565b925050819055505b5b6000811115613846576138458730836139fd565b5b808561385291906152a4565b94505b6138608787876139fd565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600081836139df919061524a565b905092915050565b600081836139f59190615219565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a6490614fbc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613add576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ad490614d7c565b60405180910390fd5b613ae8838383614140565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b6590614e5c565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c0191906151c3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613c65919061509c565b60405180910390a3613c78848484614145565b50505050565b6000613c8930611494565b90506000601f54601d54601e54613ca091906151c3565b613caa91906151c3565b9050600080831480613cbc5750600082145b15613cc957505050613f63565b6014600a54613cd8919061524a565b831115613cf1576014600a54613cee919061524a565b92505b6000600283601e5486613d04919061524a565b613d0e9190615219565b613d189190615219565b90506000613d2f828661414a90919063ffffffff16565b90506000479050613d3f82614160565b6000613d54824761414a90919063ffffffff16565b90506000613d7f87613d71601d54856139d190919063ffffffff16565b6139e790919063ffffffff16565b90506000613daa88613d9c601f54866139d190919063ffffffff16565b6139e790919063ffffffff16565b90506000818385613dbb91906152a4565b613dc591906152a4565b90506000601e819055506000601d819055506000601f81905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613e2590614c93565b60006040518083038185875af1925050503d8060008114613e62576040519150601f19603f3d011682016040523d82523d6000602084013e613e67565b606091505b505080985050600087118015613e7d5750600081115b15613eca57613e8c87826143ac565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601e54604051613ec193929190615111565b60405180910390a15b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613f1090614c93565b60006040518083038185875af1925050503d8060008114613f4d576040519150601f19603f3d011682016040523d82523d6000602084013e613f52565b606091505b505080985050505050505050505050505b565b600042600f8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401613fcb9190614ca8565b60206040518083038186803b158015613fe357600080fd5b505afa158015613ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061401b91906146c7565b9050600061404861271061403a600c54856139d190919063ffffffff16565b6139e790919063ffffffff16565b9050600081111561408357614082600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead836139fd565b5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156140f257600080fd5b505af1158015614106573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b505050565b505050565b6000818361415891906152a4565b905092915050565b6000600267ffffffffffffffff81111561417d5761417c615496565b5b6040519080825280602002602001820160405280156141ab5781602001602082028036833780820191505090505b50905030816000815181106141c3576141c2615467565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561426357600080fd5b505afa158015614277573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061429b919061452d565b816001815181106142af576142ae615467565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614314307f000000000000000000000000000000000000000000000000000000000000000084612905565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016143769594939291906150b7565b600060405180830381600087803b15801561439057600080fd5b505af11580156143a4573d6000803e3d6000fd5b505050505050565b6143d7307f000000000000000000000000000000000000000000000000000000000000000084612905565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161443e96959493929190614cc3565b6060604051808303818588803b15801561445757600080fd5b505af115801561446b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614490919061479a565b5050505050565b6000813590506144a681615bd7565b92915050565b6000815190506144bb81615bd7565b92915050565b6000813590506144d081615bee565b92915050565b6000813590506144e581615c05565b92915050565b6000815190506144fa81615c05565b92915050565b600060208284031215614516576145156154c5565b5b600061452484828501614497565b91505092915050565b600060208284031215614543576145426154c5565b5b6000614551848285016144ac565b91505092915050565b60008060408385031215614571576145706154c5565b5b600061457f85828601614497565b925050602061459085828601614497565b9150509250929050565b6000806000606084860312156145b3576145b26154c5565b5b60006145c186828701614497565b93505060206145d286828701614497565b92505060406145e3868287016144d6565b9150509250925092565b60008060408385031215614604576146036154c5565b5b600061461285828601614497565b9250506020614623858286016144c1565b9150509250929050565b60008060408385031215614644576146436154c5565b5b600061465285828601614497565b9250506020614663858286016144d6565b9150509250929050565b600060208284031215614683576146826154c5565b5b6000614691848285016144c1565b91505092915050565b6000602082840312156146b0576146af6154c5565b5b60006146be848285016144d6565b91505092915050565b6000602082840312156146dd576146dc6154c5565b5b60006146eb848285016144eb565b91505092915050565b60008060006060848603121561470d5761470c6154c5565b5b600061471b868287016144d6565b935050602061472c868287016144d6565b925050604061473d868287016144c1565b9150509250925092565b6000806000606084860312156147605761475f6154c5565b5b600061476e868287016144d6565b935050602061477f868287016144d6565b9250506040614790868287016144d6565b9150509250925092565b6000806000606084860312156147b3576147b26154c5565b5b60006147c1868287016144eb565b93505060206147d2868287016144eb565b92505060406147e3868287016144eb565b9150509250925092565b60006147f98383614805565b60208301905092915050565b61480e816152d8565b82525050565b61481d816152d8565b82525050565b600061482e82615173565b6148388185615196565b935061484383615163565b8060005b8381101561487457815161485b88826147ed565b975061486683615189565b925050600181019050614847565b5085935050505092915050565b61488a816152ea565b82525050565b6148998161532d565b82525050565b6148a88161533f565b82525050565b60006148b98261517e565b6148c381856151b2565b93506148d3818560208601615375565b6148dc816154ca565b840191505092915050565b60006148f46023836151b2565b91506148ff826154db565b604082019050919050565b60006149176016836151b2565b91506149228261552a565b602082019050919050565b600061493a6026836151b2565b915061494582615553565b604082019050919050565b600061495d6022836151b2565b9150614968826155a2565b604082019050919050565b60006149806033836151b2565b915061498b826155f1565b604082019050919050565b60006149a36024836151b2565b91506149ae82615640565b604082019050919050565b60006149c66039836151b2565b91506149d18261568f565b604082019050919050565b60006149e96026836151b2565b91506149f4826156de565b604082019050919050565b6000614a0c6036836151b2565b9150614a178261572d565b604082019050919050565b6000614a2f6030836151b2565b9150614a3a8261577c565b604082019050919050565b6000614a52601d836151b2565b9150614a5d826157cb565b602082019050919050565b6000614a756035836151b2565b9150614a80826157f4565b604082019050919050565b6000614a986034836151b2565b9150614aa382615843565b604082019050919050565b6000614abb6035836151b2565b9150614ac682615892565b604082019050919050565b6000614ade6049836151b2565b9150614ae9826158e1565b606082019050919050565b6000614b016028836151b2565b9150614b0c82615956565b604082019050919050565b6000614b246020836151b2565b9150614b2f826159a5565b602082019050919050565b6000614b47602a836151b2565b9150614b52826159ce565b604082019050919050565b6000614b6a6025836151b2565b9150614b7582615a1d565b604082019050919050565b6000614b8d6020836151b2565b9150614b9882615a6c565b602082019050919050565b6000614bb06000836151a7565b9150614bbb82615a95565b600082019050919050565b6000614bd36024836151b2565b9150614bde82615a98565b604082019050919050565b6000614bf66013836151b2565b9150614c0182615ae7565b602082019050919050565b6000614c19601d836151b2565b9150614c2482615b10565b602082019050919050565b6000614c3c6025836151b2565b9150614c4782615b39565b604082019050919050565b6000614c5f602f836151b2565b9150614c6a82615b88565b604082019050919050565b614c7e81615316565b82525050565b614c8d81615320565b82525050565b6000614c9e82614ba3565b9150819050919050565b6000602082019050614cbd6000830184614814565b92915050565b600060c082019050614cd86000830189614814565b614ce56020830188614c75565b614cf2604083018761489f565b614cff606083018661489f565b614d0c6080830185614814565b614d1960a0830184614c75565b979650505050505050565b6000602082019050614d396000830184614881565b92915050565b6000602082019050614d546000830184614890565b92915050565b60006020820190508181036000830152614d7481846148ae565b905092915050565b60006020820190508181036000830152614d95816148e7565b9050919050565b60006020820190508181036000830152614db58161490a565b9050919050565b60006020820190508181036000830152614dd58161492d565b9050919050565b60006020820190508181036000830152614df581614950565b9050919050565b60006020820190508181036000830152614e1581614973565b9050919050565b60006020820190508181036000830152614e3581614996565b9050919050565b60006020820190508181036000830152614e55816149b9565b9050919050565b60006020820190508181036000830152614e75816149dc565b9050919050565b60006020820190508181036000830152614e95816149ff565b9050919050565b60006020820190508181036000830152614eb581614a22565b9050919050565b60006020820190508181036000830152614ed581614a45565b9050919050565b60006020820190508181036000830152614ef581614a68565b9050919050565b60006020820190508181036000830152614f1581614a8b565b9050919050565b60006020820190508181036000830152614f3581614aae565b9050919050565b60006020820190508181036000830152614f5581614ad1565b9050919050565b60006020820190508181036000830152614f7581614af4565b9050919050565b60006020820190508181036000830152614f9581614b17565b9050919050565b60006020820190508181036000830152614fb581614b3a565b9050919050565b60006020820190508181036000830152614fd581614b5d565b9050919050565b60006020820190508181036000830152614ff581614b80565b9050919050565b6000602082019050818103600083015261501581614bc6565b9050919050565b6000602082019050818103600083015261503581614be9565b9050919050565b6000602082019050818103600083015261505581614c0c565b9050919050565b6000602082019050818103600083015261507581614c2f565b9050919050565b6000602082019050818103600083015261509581614c52565b9050919050565b60006020820190506150b16000830184614c75565b92915050565b600060a0820190506150cc6000830188614c75565b6150d9602083018761489f565b81810360408301526150eb8186614823565b90506150fa6060830185614814565b6151076080830184614c75565b9695505050505050565b60006060820190506151266000830186614c75565b6151336020830185614c75565b6151406040830184614c75565b949350505050565b600060208201905061515d6000830184614c84565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006151ce82615316565b91506151d983615316565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561520e5761520d6153da565b5b828201905092915050565b600061522482615316565b915061522f83615316565b92508261523f5761523e615409565b5b828204905092915050565b600061525582615316565b915061526083615316565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615299576152986153da565b5b828202905092915050565b60006152af82615316565b91506152ba83615316565b9250828210156152cd576152cc6153da565b5b828203905092915050565b60006152e3826152f6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061533882615351565b9050919050565b600061534a82615316565b9050919050565b600061535c82615363565b9050919050565b600061536e826152f6565b9050919050565b60005b83811015615393578082015181840152602081019050615378565b838111156153a2576000848401525b50505050565b600060028204905060018216806153c057607f821691505b602082108114156153d4576153d3615438565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b615be0816152d8565b8114615beb57600080fd5b50565b615bf7816152ea565b8114615c0257600080fd5b50565b615c0e81615316565b8114615c1957600080fd5b5056fea264697066735822122078b28042b7817249675f08937c02773499ee94f54b97e7a381578c240bb542cf64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106103b15760003560e01c80638da5cb5b116101e7578063bbc0c7421161010d578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b14610e03578063f637434214610e2c578063f8b45b0514610e57578063fe72b27a14610e82576103b8565b8063dd62ed3e14610d45578063e2f4560514610d82578063e884f26014610dad578063f11a24d314610dd8576103b8565b8063c876d0b9116100dc578063c876d0b914610c87578063c8c8ebe414610cb2578063d257b34f14610cdd578063d85ba06314610d1a576103b8565b8063bbc0c74214610be1578063c024666814610c0c578063c17b5b8c14610c35578063c18bc19514610c5e576103b8565b80639ec22c0e11610185578063a4c82a0011610154578063a4c82a0014610b13578063a9059cbb14610b3e578063aacebbe314610b7b578063b62496f514610ba4576103b8565b80639ec22c0e14610a555780639fccce3214610a80578063a0d82dc514610aab578063a457c2d714610ad6576103b8565b8063924de9b7116101c1578063924de9b7146109ad57806395d89b41146109d65780639a7a23d614610a015780639c3b4fdc14610a2a576103b8565b80638da5cb5b1461092c5780638ea5220f146109575780639213691314610982576103b8565b8063313ce567116102d7578063715018a61161026a57806375f0a8741161023957806375f0a874146108965780637bce5a04146108c15780638095d564146108ec5780638a8c523c14610915576103b8565b8063715018a614610802578063730c188814610819578063751039fc146108425780637571336a1461086d576103b8565b80634fbee193116102a65780634fbee193146107325780636a486a8e1461076f5780636ddd17131461079a57806370a08231146107c5576103b8565b8063313ce56714610674578063395093511461069f57806349bd5a5e146106dc5780634a62bb6514610707576103b8565b8063199ffc721161034f57806323b872dd1161031e57806323b872dd146105b657806327c8f835146105f35780632c3e486c1461061e5780632e82f1a014610649576103b8565b8063199ffc721461050c5780631a8145bb146105375780631f3fed8f14610562578063203e727e1461058d576103b8565b80631694505e1161038b5780631694505e1461046257806318160ddd1461048d5780631816467f146104b8578063184c16c5146104e1576103b8565b806306fdde03146103bd578063095ea7b3146103e857806310d5de5314610425576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610ebf565b6040516103df9190614d5a565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a919061462d565b610f51565b60405161041c9190614d24565b60405180910390f35b34801561043157600080fd5b5061044c60048036038101906104479190614500565b610f6f565b6040516104599190614d24565b60405180910390f35b34801561046e57600080fd5b50610477610f8f565b6040516104849190614d3f565b60405180910390f35b34801561049957600080fd5b506104a2610fb3565b6040516104af919061509c565b60405180910390f35b3480156104c457600080fd5b506104df60048036038101906104da9190614500565b610fbd565b005b3480156104ed57600080fd5b506104f66110f9565b604051610503919061509c565b60405180910390f35b34801561051857600080fd5b506105216110ff565b60405161052e919061509c565b60405180910390f35b34801561054357600080fd5b5061054c611105565b604051610559919061509c565b60405180910390f35b34801561056e57600080fd5b5061057761110b565b604051610584919061509c565b60405180910390f35b34801561059957600080fd5b506105b460048036038101906105af919061469a565b611111565b005b3480156105c257600080fd5b506105dd60048036038101906105d8919061459a565b611220565b6040516105ea9190614d24565b60405180910390f35b3480156105ff57600080fd5b50610608611318565b6040516106159190614ca8565b60405180910390f35b34801561062a57600080fd5b5061063361131e565b604051610640919061509c565b60405180910390f35b34801561065557600080fd5b5061065e611324565b60405161066b9190614d24565b60405180910390f35b34801561068057600080fd5b50610689611337565b6040516106969190615148565b60405180910390f35b3480156106ab57600080fd5b506106c660048036038101906106c1919061462d565b611340565b6040516106d39190614d24565b60405180910390f35b3480156106e857600080fd5b506106f16113ec565b6040516106fe9190614ca8565b60405180910390f35b34801561071357600080fd5b5061071c611412565b6040516107299190614d24565b60405180910390f35b34801561073e57600080fd5b5061075960048036038101906107549190614500565b611425565b6040516107669190614d24565b60405180910390f35b34801561077b57600080fd5b5061078461147b565b604051610791919061509c565b60405180910390f35b3480156107a657600080fd5b506107af611481565b6040516107bc9190614d24565b60405180910390f35b3480156107d157600080fd5b506107ec60048036038101906107e79190614500565b611494565b6040516107f9919061509c565b60405180910390f35b34801561080e57600080fd5b506108176114dc565b005b34801561082557600080fd5b50610840600480360381019061083b91906146f4565b611564565b005b34801561084e57600080fd5b506108576116a4565b6040516108649190614d24565b60405180910390f35b34801561087957600080fd5b50610894600480360381019061088f91906145ed565b611744565b005b3480156108a257600080fd5b506108ab61181b565b6040516108b89190614ca8565b60405180910390f35b3480156108cd57600080fd5b506108d6611841565b6040516108e3919061509c565b60405180910390f35b3480156108f857600080fd5b50610913600480360381019061090e9190614747565b611847565b005b34801561092157600080fd5b5061092a611946565b005b34801561093857600080fd5b50610941611a01565b60405161094e9190614ca8565b60405180910390f35b34801561096357600080fd5b5061096c611a2b565b6040516109799190614ca8565b60405180910390f35b34801561098e57600080fd5b50610997611a51565b6040516109a4919061509c565b60405180910390f35b3480156109b957600080fd5b506109d460048036038101906109cf919061466d565b611a57565b005b3480156109e257600080fd5b506109eb611af0565b6040516109f89190614d5a565b60405180910390f35b348015610a0d57600080fd5b50610a286004803603810190610a2391906145ed565b611b82565b005b348015610a3657600080fd5b50610a3f611c9d565b604051610a4c919061509c565b60405180910390f35b348015610a6157600080fd5b50610a6a611ca3565b604051610a77919061509c565b60405180910390f35b348015610a8c57600080fd5b50610a95611ca9565b604051610aa2919061509c565b60405180910390f35b348015610ab757600080fd5b50610ac0611caf565b604051610acd919061509c565b60405180910390f35b348015610ae257600080fd5b50610afd6004803603810190610af8919061462d565b611cb5565b604051610b0a9190614d24565b60405180910390f35b348015610b1f57600080fd5b50610b28611da0565b604051610b35919061509c565b60405180910390f35b348015610b4a57600080fd5b50610b656004803603810190610b60919061462d565b611da6565b604051610b729190614d24565b60405180910390f35b348015610b8757600080fd5b50610ba26004803603810190610b9d9190614500565b611dc4565b005b348015610bb057600080fd5b50610bcb6004803603810190610bc69190614500565b611f00565b604051610bd89190614d24565b60405180910390f35b348015610bed57600080fd5b50610bf6611f20565b604051610c039190614d24565b60405180910390f35b348015610c1857600080fd5b50610c336004803603810190610c2e91906145ed565b611f33565b005b348015610c4157600080fd5b50610c5c6004803603810190610c579190614747565b612058565b005b348015610c6a57600080fd5b50610c856004803603810190610c80919061469a565b612156565b005b348015610c9357600080fd5b50610c9c612265565b604051610ca99190614d24565b60405180910390f35b348015610cbe57600080fd5b50610cc7612278565b604051610cd4919061509c565b60405180910390f35b348015610ce957600080fd5b50610d046004803603810190610cff919061469a565b61227e565b604051610d119190614d24565b60405180910390f35b348015610d2657600080fd5b50610d2f6123d3565b604051610d3c919061509c565b60405180910390f35b348015610d5157600080fd5b50610d6c6004803603810190610d67919061455a565b6123d9565b604051610d79919061509c565b60405180910390f35b348015610d8e57600080fd5b50610d97612460565b604051610da4919061509c565b60405180910390f35b348015610db957600080fd5b50610dc2612466565b604051610dcf9190614d24565b60405180910390f35b348015610de457600080fd5b50610ded612506565b604051610dfa919061509c565b60405180910390f35b348015610e0f57600080fd5b50610e2a6004803603810190610e259190614500565b61250c565b005b348015610e3857600080fd5b50610e41612604565b604051610e4e919061509c565b60405180910390f35b348015610e6357600080fd5b50610e6c61260a565b604051610e79919061509c565b60405180910390f35b348015610e8e57600080fd5b50610ea96004803603810190610ea4919061469a565b612610565b604051610eb69190614d24565b60405180910390f35b606060038054610ece906153a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610efa906153a8565b8015610f475780601f10610f1c57610100808354040283529160200191610f47565b820191906000526020600020905b815481529060010190602001808311610f2a57829003601f168201915b5050505050905090565b6000610f65610f5e6128fd565b8484612905565b6001905092915050565b60216020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610fc56128fd565b73ffffffffffffffffffffffffffffffffffffffff16610fe3611a01565b73ffffffffffffffffffffffffffffffffffffffff1614611039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103090614f7c565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b600c5481565b601e5481565b601d5481565b6111196128fd565b73ffffffffffffffffffffffffffffffffffffffff16611137611a01565b73ffffffffffffffffffffffffffffffffffffffff161461118d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118490614f7c565b60405180910390fd5b670de0b6b3a76400006103e860016111a3610fb3565b6111ad919061524a565b6111b79190615219565b6111c19190615219565b811015611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa9061507c565b60405180910390fd5b670de0b6b3a764000081611217919061524a565b60098190555050565b600061122d848484612ad0565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112786128fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156112f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ef90614f5c565b60405180910390fd5b61130c856113046128fd565b858403612905565b60019150509392505050565b61dead81565b600e5481565b600d60009054906101000a900460ff1681565b60006012905090565b60006113e261134d6128fd565b84846001600061135b6128fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113dd91906151c3565b612905565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260009054906101000a900460ff1681565b6000602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60195481565b601260029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114e46128fd565b73ffffffffffffffffffffffffffffffffffffffff16611502611a01565b73ffffffffffffffffffffffffffffffffffffffff1614611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f90614f7c565b60405180910390fd5b611562600061386a565b565b61156c6128fd565b73ffffffffffffffffffffffffffffffffffffffff1661158a611a01565b73ffffffffffffffffffffffffffffffffffffffff16146115e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d790614f7c565b60405180910390fd5b610258831015611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c90614dfc565b60405180910390fd5b6103e88211158015611638575060008210155b611677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166e90614e9c565b60405180910390fd5b82600e8190555081600c8190555080600d60006101000a81548160ff021916908315150217905550505050565b60006116ae6128fd565b73ffffffffffffffffffffffffffffffffffffffff166116cc611a01565b73ffffffffffffffffffffffffffffffffffffffff1614611722576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171990614f7c565b60405180910390fd5b6000601260006101000a81548160ff0219169083151502179055506001905090565b61174c6128fd565b73ffffffffffffffffffffffffffffffffffffffff1661176a611a01565b73ffffffffffffffffffffffffffffffffffffffff16146117c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b790614f7c565b60405180910390fd5b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b61184f6128fd565b73ffffffffffffffffffffffffffffffffffffffff1661186d611a01565b73ffffffffffffffffffffffffffffffffffffffff16146118c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ba90614f7c565b60405180910390fd5b8260168190555081601781905550806018819055506018546017546016546118eb91906151c3565b6118f591906151c3565b60158190555060146015541115611941576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193890614ebc565b60405180910390fd5b505050565b61194e6128fd565b73ffffffffffffffffffffffffffffffffffffffff1661196c611a01565b73ffffffffffffffffffffffffffffffffffffffff16146119c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b990614f7c565b60405180910390fd5b6001601260016101000a81548160ff0219169083151502179055506001601260026101000a81548160ff02191690831515021790555042600f81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a5481565b611a5f6128fd565b73ffffffffffffffffffffffffffffffffffffffff16611a7d611a01565b73ffffffffffffffffffffffffffffffffffffffff1614611ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aca90614f7c565b60405180910390fd5b80601260026101000a81548160ff02191690831515021790555050565b606060048054611aff906153a8565b80601f0160208091040260200160405190810160405280929190818152602001828054611b2b906153a8565b8015611b785780601f10611b4d57610100808354040283529160200191611b78565b820191906000526020600020905b815481529060010190602001808311611b5b57829003601f168201915b5050505050905090565b611b8a6128fd565b73ffffffffffffffffffffffffffffffffffffffff16611ba8611a01565b73ffffffffffffffffffffffffffffffffffffffff1614611bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf590614f7c565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8690614e3c565b60405180910390fd5b611c998282613930565b5050565b60185481565b60115481565b601f5481565b601c5481565b60008060016000611cc46128fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d789061505c565b60405180910390fd5b611d95611d8c6128fd565b85858403612905565b600191505092915050565b600f5481565b6000611dba611db36128fd565b8484612ad0565b6001905092915050565b611dcc6128fd565b73ffffffffffffffffffffffffffffffffffffffff16611dea611a01565b73ffffffffffffffffffffffffffffffffffffffff1614611e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3790614f7c565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60226020528060005260406000206000915054906101000a900460ff1681565b601260019054906101000a900460ff1681565b611f3b6128fd565b73ffffffffffffffffffffffffffffffffffffffff16611f59611a01565b73ffffffffffffffffffffffffffffffffffffffff1614611faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa690614f7c565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161204c9190614d24565b60405180910390a25050565b6120606128fd565b73ffffffffffffffffffffffffffffffffffffffff1661207e611a01565b73ffffffffffffffffffffffffffffffffffffffff16146120d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cb90614f7c565b60405180910390fd5b82601a8190555081601b8190555080601c81905550601c54601b54601a546120fc91906151c3565b61210691906151c3565b601981905550601980541115612151576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121489061503c565b60405180910390fd5b505050565b61215e6128fd565b73ffffffffffffffffffffffffffffffffffffffff1661217c611a01565b73ffffffffffffffffffffffffffffffffffffffff16146121d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c990614f7c565b60405180910390fd5b670de0b6b3a76400006103e860056121e8610fb3565b6121f2919061524a565b6121fc9190615219565b6122069190615219565b811015612248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223f90614e1c565b60405180910390fd5b670de0b6b3a76400008161225c919061524a565b600b8190555050565b601460009054906101000a900460ff1681565b60095481565b60006122886128fd565b73ffffffffffffffffffffffffffffffffffffffff166122a6611a01565b73ffffffffffffffffffffffffffffffffffffffff16146122fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f390614f7c565b60405180910390fd5b620186a0600161230a610fb3565b612314919061524a565b61231e9190615219565b821015612360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235790614edc565b60405180910390fd5b6103e8600561236d610fb3565b612377919061524a565b6123819190615219565b8211156123c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ba90614efc565b60405180910390fd5b81600a8190555060019050919050565b60155481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b60006124706128fd565b73ffffffffffffffffffffffffffffffffffffffff1661248e611a01565b73ffffffffffffffffffffffffffffffffffffffff16146124e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124db90614f7c565b60405180910390fd5b6000601460006101000a81548160ff0219169083151502179055506001905090565b60175481565b6125146128fd565b73ffffffffffffffffffffffffffffffffffffffff16612532611a01565b73ffffffffffffffffffffffffffffffffffffffff1614612588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257f90614f7c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156125f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ef90614dbc565b60405180910390fd5b6126018161386a565b50565b601b5481565b600b5481565b600061261a6128fd565b73ffffffffffffffffffffffffffffffffffffffff16612638611a01565b73ffffffffffffffffffffffffffffffffffffffff161461268e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268590614f7c565b60405180910390fd5b60105460115461269e91906151c3565b42116126df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d690614fdc565b60405180910390fd5b6103e8821115612724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271b90614f9c565b60405180910390fd5b4260118190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016127889190614ca8565b60206040518083038186803b1580156127a057600080fd5b505afa1580156127b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d891906146c7565b905060006128036127106127f586856139d190919063ffffffff16565b6139e790919063ffffffff16565b9050600081111561283e5761283d600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead836139fd565b5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156128ad57600080fd5b505af11580156128c1573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296c90614ffc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129dc90614ddc565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ac3919061509c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3790614fbc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba790614d7c565b60405180910390fd5b6000811415612bca57612bc5838360006139fd565b613865565b601260009054906101000a900460ff161561328f57612be7611a01565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612c555750612c25611a01565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c8e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cc8575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ce15750600660149054906101000a900460ff16155b1561328e57601260019054906101000a900460ff16612ddb57602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d9b5750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd190614d9c565b60405180910390fd5b5b601460009054906101000a900460ff1615612fa557612df8611a01565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612e7f57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ed95750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612fa45743601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5690614f3c565b60405180910390fd5b43601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130485750602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130ef57600954811115613092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161308990614f1c565b60405180910390fd5b600b5461309e83611494565b826130a991906151c3565b11156130ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e19061501c565b60405180910390fd5b61328d565b602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131925750602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131e1576009548111156131dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d390614e7c565b60405180910390fd5b61328c565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661328b57600b5461323e83611494565b8261324991906151c3565b111561328a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132819061501c565b60405180910390fd5b5b5b5b5b5b600061329a30611494565b90506000600a5482101590508080156132bf5750601260029054906101000a900460ff165b80156132d85750600660149054906101000a900460ff16155b801561332e5750602260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133845750602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133da5750602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561341e576001600660146101000a81548160ff021916908315150217905550613402613c7e565b6000600660146101000a81548160ff0219169083151502179055505b600660149054906101000a900460ff161580156134845750602260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561349c5750600d60009054906101000a900460ff165b80156134b75750600e54600f546134b391906151c3565b4210155b801561350d5750602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561351c5761351a613f65565b505b6000600660149054906101000a900460ff16159050602060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135d25750602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135dc57600090505b6000811561385557602260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561363f57506000601954115b1561370c5761366c606461365e601954886139d190919063ffffffff16565b6139e790919063ffffffff16565b9050601954601b548261367f919061524a565b6136899190615219565b601e600082825461369a91906151c3565b92505081905550601954601c54826136b2919061524a565b6136bc9190615219565b601f60008282546136cd91906151c3565b92505081905550601954601a54826136e5919061524a565b6136ef9190615219565b601d600082825461370091906151c3565b92505081905550613831565b602260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561376757506000601554115b15613830576137946064613786601554886139d190919063ffffffff16565b6139e790919063ffffffff16565b9050601554601754826137a7919061524a565b6137b19190615219565b601e60008282546137c291906151c3565b92505081905550601554601854826137da919061524a565b6137e49190615219565b601f60008282546137f591906151c3565b925050819055506015546016548261380d919061524a565b6138179190615219565b601d600082825461382891906151c3565b925050819055505b5b6000811115613846576138458730836139fd565b5b808561385291906152a4565b94505b6138608787876139fd565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600081836139df919061524a565b905092915050565b600081836139f59190615219565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a6490614fbc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613add576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ad490614d7c565b60405180910390fd5b613ae8838383614140565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b6590614e5c565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c0191906151c3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613c65919061509c565b60405180910390a3613c78848484614145565b50505050565b6000613c8930611494565b90506000601f54601d54601e54613ca091906151c3565b613caa91906151c3565b9050600080831480613cbc5750600082145b15613cc957505050613f63565b6014600a54613cd8919061524a565b831115613cf1576014600a54613cee919061524a565b92505b6000600283601e5486613d04919061524a565b613d0e9190615219565b613d189190615219565b90506000613d2f828661414a90919063ffffffff16565b90506000479050613d3f82614160565b6000613d54824761414a90919063ffffffff16565b90506000613d7f87613d71601d54856139d190919063ffffffff16565b6139e790919063ffffffff16565b90506000613daa88613d9c601f54866139d190919063ffffffff16565b6139e790919063ffffffff16565b90506000818385613dbb91906152a4565b613dc591906152a4565b90506000601e819055506000601d819055506000601f81905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613e2590614c93565b60006040518083038185875af1925050503d8060008114613e62576040519150601f19603f3d011682016040523d82523d6000602084013e613e67565b606091505b505080985050600087118015613e7d5750600081115b15613eca57613e8c87826143ac565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601e54604051613ec193929190615111565b60405180910390a15b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613f1090614c93565b60006040518083038185875af1925050503d8060008114613f4d576040519150601f19603f3d011682016040523d82523d6000602084013e613f52565b606091505b505080985050505050505050505050505b565b600042600f8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401613fcb9190614ca8565b60206040518083038186803b158015613fe357600080fd5b505afa158015613ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061401b91906146c7565b9050600061404861271061403a600c54856139d190919063ffffffff16565b6139e790919063ffffffff16565b9050600081111561408357614082600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead836139fd565b5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156140f257600080fd5b505af1158015614106573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b505050565b505050565b6000818361415891906152a4565b905092915050565b6000600267ffffffffffffffff81111561417d5761417c615496565b5b6040519080825280602002602001820160405280156141ab5781602001602082028036833780820191505090505b50905030816000815181106141c3576141c2615467565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561426357600080fd5b505afa158015614277573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061429b919061452d565b816001815181106142af576142ae615467565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614314307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612905565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016143769594939291906150b7565b600060405180830381600087803b15801561439057600080fd5b505af11580156143a4573d6000803e3d6000fd5b505050505050565b6143d7307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612905565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161443e96959493929190614cc3565b6060604051808303818588803b15801561445757600080fd5b505af115801561446b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614490919061479a565b5050505050565b6000813590506144a681615bd7565b92915050565b6000815190506144bb81615bd7565b92915050565b6000813590506144d081615bee565b92915050565b6000813590506144e581615c05565b92915050565b6000815190506144fa81615c05565b92915050565b600060208284031215614516576145156154c5565b5b600061452484828501614497565b91505092915050565b600060208284031215614543576145426154c5565b5b6000614551848285016144ac565b91505092915050565b60008060408385031215614571576145706154c5565b5b600061457f85828601614497565b925050602061459085828601614497565b9150509250929050565b6000806000606084860312156145b3576145b26154c5565b5b60006145c186828701614497565b93505060206145d286828701614497565b92505060406145e3868287016144d6565b9150509250925092565b60008060408385031215614604576146036154c5565b5b600061461285828601614497565b9250506020614623858286016144c1565b9150509250929050565b60008060408385031215614644576146436154c5565b5b600061465285828601614497565b9250506020614663858286016144d6565b9150509250929050565b600060208284031215614683576146826154c5565b5b6000614691848285016144c1565b91505092915050565b6000602082840312156146b0576146af6154c5565b5b60006146be848285016144d6565b91505092915050565b6000602082840312156146dd576146dc6154c5565b5b60006146eb848285016144eb565b91505092915050565b60008060006060848603121561470d5761470c6154c5565b5b600061471b868287016144d6565b935050602061472c868287016144d6565b925050604061473d868287016144c1565b9150509250925092565b6000806000606084860312156147605761475f6154c5565b5b600061476e868287016144d6565b935050602061477f868287016144d6565b9250506040614790868287016144d6565b9150509250925092565b6000806000606084860312156147b3576147b26154c5565b5b60006147c1868287016144eb565b93505060206147d2868287016144eb565b92505060406147e3868287016144eb565b9150509250925092565b60006147f98383614805565b60208301905092915050565b61480e816152d8565b82525050565b61481d816152d8565b82525050565b600061482e82615173565b6148388185615196565b935061484383615163565b8060005b8381101561487457815161485b88826147ed565b975061486683615189565b925050600181019050614847565b5085935050505092915050565b61488a816152ea565b82525050565b6148998161532d565b82525050565b6148a88161533f565b82525050565b60006148b98261517e565b6148c381856151b2565b93506148d3818560208601615375565b6148dc816154ca565b840191505092915050565b60006148f46023836151b2565b91506148ff826154db565b604082019050919050565b60006149176016836151b2565b91506149228261552a565b602082019050919050565b600061493a6026836151b2565b915061494582615553565b604082019050919050565b600061495d6022836151b2565b9150614968826155a2565b604082019050919050565b60006149806033836151b2565b915061498b826155f1565b604082019050919050565b60006149a36024836151b2565b91506149ae82615640565b604082019050919050565b60006149c66039836151b2565b91506149d18261568f565b604082019050919050565b60006149e96026836151b2565b91506149f4826156de565b604082019050919050565b6000614a0c6036836151b2565b9150614a178261572d565b604082019050919050565b6000614a2f6030836151b2565b9150614a3a8261577c565b604082019050919050565b6000614a52601d836151b2565b9150614a5d826157cb565b602082019050919050565b6000614a756035836151b2565b9150614a80826157f4565b604082019050919050565b6000614a986034836151b2565b9150614aa382615843565b604082019050919050565b6000614abb6035836151b2565b9150614ac682615892565b604082019050919050565b6000614ade6049836151b2565b9150614ae9826158e1565b606082019050919050565b6000614b016028836151b2565b9150614b0c82615956565b604082019050919050565b6000614b246020836151b2565b9150614b2f826159a5565b602082019050919050565b6000614b47602a836151b2565b9150614b52826159ce565b604082019050919050565b6000614b6a6025836151b2565b9150614b7582615a1d565b604082019050919050565b6000614b8d6020836151b2565b9150614b9882615a6c565b602082019050919050565b6000614bb06000836151a7565b9150614bbb82615a95565b600082019050919050565b6000614bd36024836151b2565b9150614bde82615a98565b604082019050919050565b6000614bf66013836151b2565b9150614c0182615ae7565b602082019050919050565b6000614c19601d836151b2565b9150614c2482615b10565b602082019050919050565b6000614c3c6025836151b2565b9150614c4782615b39565b604082019050919050565b6000614c5f602f836151b2565b9150614c6a82615b88565b604082019050919050565b614c7e81615316565b82525050565b614c8d81615320565b82525050565b6000614c9e82614ba3565b9150819050919050565b6000602082019050614cbd6000830184614814565b92915050565b600060c082019050614cd86000830189614814565b614ce56020830188614c75565b614cf2604083018761489f565b614cff606083018661489f565b614d0c6080830185614814565b614d1960a0830184614c75565b979650505050505050565b6000602082019050614d396000830184614881565b92915050565b6000602082019050614d546000830184614890565b92915050565b60006020820190508181036000830152614d7481846148ae565b905092915050565b60006020820190508181036000830152614d95816148e7565b9050919050565b60006020820190508181036000830152614db58161490a565b9050919050565b60006020820190508181036000830152614dd58161492d565b9050919050565b60006020820190508181036000830152614df581614950565b9050919050565b60006020820190508181036000830152614e1581614973565b9050919050565b60006020820190508181036000830152614e3581614996565b9050919050565b60006020820190508181036000830152614e55816149b9565b9050919050565b60006020820190508181036000830152614e75816149dc565b9050919050565b60006020820190508181036000830152614e95816149ff565b9050919050565b60006020820190508181036000830152614eb581614a22565b9050919050565b60006020820190508181036000830152614ed581614a45565b9050919050565b60006020820190508181036000830152614ef581614a68565b9050919050565b60006020820190508181036000830152614f1581614a8b565b9050919050565b60006020820190508181036000830152614f3581614aae565b9050919050565b60006020820190508181036000830152614f5581614ad1565b9050919050565b60006020820190508181036000830152614f7581614af4565b9050919050565b60006020820190508181036000830152614f9581614b17565b9050919050565b60006020820190508181036000830152614fb581614b3a565b9050919050565b60006020820190508181036000830152614fd581614b5d565b9050919050565b60006020820190508181036000830152614ff581614b80565b9050919050565b6000602082019050818103600083015261501581614bc6565b9050919050565b6000602082019050818103600083015261503581614be9565b9050919050565b6000602082019050818103600083015261505581614c0c565b9050919050565b6000602082019050818103600083015261507581614c2f565b9050919050565b6000602082019050818103600083015261509581614c52565b9050919050565b60006020820190506150b16000830184614c75565b92915050565b600060a0820190506150cc6000830188614c75565b6150d9602083018761489f565b81810360408301526150eb8186614823565b90506150fa6060830185614814565b6151076080830184614c75565b9695505050505050565b60006060820190506151266000830186614c75565b6151336020830185614c75565b6151406040830184614c75565b949350505050565b600060208201905061515d6000830184614c84565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006151ce82615316565b91506151d983615316565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561520e5761520d6153da565b5b828201905092915050565b600061522482615316565b915061522f83615316565b92508261523f5761523e615409565b5b828204905092915050565b600061525582615316565b915061526083615316565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615299576152986153da565b5b828202905092915050565b60006152af82615316565b91506152ba83615316565b9250828210156152cd576152cc6153da565b5b828203905092915050565b60006152e3826152f6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061533882615351565b9050919050565b600061534a82615316565b9050919050565b600061535c82615363565b9050919050565b600061536e826152f6565b9050919050565b60005b83811015615393578082015181840152602081019050615378565b838111156153a2576000848401525b50505050565b600060028204905060018216806153c057607f821691505b602082108114156153d4576153d3615438565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b615be0816152d8565b8114615beb57600080fd5b50565b615bf7816152ea565b8114615c0257600080fd5b50565b615c0e81615316565b8114615c1957600080fd5b5056fea264697066735822122078b28042b7817249675f08937c02773499ee94f54b97e7a381578c240bb542cf64736f6c63430008070033

Deployed Bytecode Sourcemap

30320:19438:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7174:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9482:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31934:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30393:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8294:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39086:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30948:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30763:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31718:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31678;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36400:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10174:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30486:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30858:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30819:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8136:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11112:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30451:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31046:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39251:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31533:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31126:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8465:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2126:103;;;;;;;;;;;;;:::i;:::-;;47340:555;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35508:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36947:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30578:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31426;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37318:403;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35301:155;;;;;;;;;;;;;:::i;:::-;;1475:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30615:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31568:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37210:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7393:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38339:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31500:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31002:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31758:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31644:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11912:482;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30910:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8855:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38847:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32155:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31086:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38149:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37729:412;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36683:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31344:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30648:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35895:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31392:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9134:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30690:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35690:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31463:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2384:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31606:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30730:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48699:1056;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7174:100;7228:13;7261:5;7254:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7174:100;:::o;9482:210::-;9601:4;9623:39;9632:12;:10;:12::i;:::-;9646:7;9655:6;9623:8;:39::i;:::-;9680:4;9673:11;;9482:210;;;;:::o;31934:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;30393:51::-;;;:::o;8294:108::-;8355:7;8382:12;;8375:19;;8294:108;:::o;39086:157::-;1706:12;:10;:12::i;:::-;1695:23;;:7;:5;:7::i;:::-;:23;;;1687:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39193:9:::1;;;;;;;;;;;39165:38;;39182:9;39165:38;;;;;;;;;;;;39226:9;39214;;:21;;;;;;;;;;;;;;;;;;39086:157:::0;:::o;30948:47::-;;;;:::o;30763:36::-;;;;:::o;31718:33::-;;;;:::o;31678:::-;;;;:::o;36400:275::-;1706:12;:10;:12::i;:::-;1695:23;;:7;:5;:7::i;:::-;:23;;;1687:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36537:4:::1;36529;36524:1;36508:13;:11;:13::i;:::-;:17;;;;:::i;:::-;36507:26;;;;:::i;:::-;36506:35;;;;:::i;:::-;36496:6;:45;;36474:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;36660:6;36650;:17;;;;:::i;:::-;36627:20;:40;;;;36400:275:::0;:::o;10174:529::-;10314:4;10331:36;10341:6;10349:9;10360:6;10331:9;:36::i;:::-;10380:24;10407:11;:19;10419:6;10407:19;;;;;;;;;;;;;;;:33;10427:12;:10;:12::i;:::-;10407:33;;;;;;;;;;;;;;;;10380:60;;10493:6;10473:16;:26;;10451:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;10603:57;10612:6;10620:12;:10;:12::i;:::-;10653:6;10634:16;:25;10603:8;:57::i;:::-;10691:4;10684:11;;;10174:529;;;;;:::o;30486:53::-;30532:6;30486:53;:::o;30858:45::-;;;;:::o;30819:32::-;;;;;;;;;;;;;:::o;8136:93::-;8194:5;8219:2;8212:9;;8136:93;:::o;11112:297::-;11227:4;11249:130;11272:12;:10;:12::i;:::-;11299:7;11358:10;11321:11;:25;11333:12;:10;:12::i;:::-;11321:25;;;;;;;;;;;;;;;:34;11347:7;11321:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;11249:8;:130::i;:::-;11397:4;11390:11;;11112:297;;;;:::o;30451:28::-;;;;;;;;;;;;;:::o;31046:33::-;;;;;;;;;;;;;:::o;39251:126::-;39317:4;39341:19;:28;39361:7;39341:28;;;;;;;;;;;;;;;;;;;;;;;;;39334:35;;39251:126;;;:::o;31533:28::-;;;;:::o;31126:31::-;;;;;;;;;;;;;:::o;8465:177::-;8584:7;8616:9;:18;8626:7;8616:18;;;;;;;;;;;;;;;;8609:25;;8465:177;;;:::o;2126:103::-;1706:12;:10;:12::i;:::-;1695:23;;:7;:5;:7::i;:::-;:23;;;1687:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2191:30:::1;2218:1;2191:18;:30::i;:::-;2126:103::o:0;47340:555::-;1706:12;:10;:12::i;:::-;1695:23;;:7;:5;:7::i;:::-;:23;;;1687:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;47542:3:::1;47519:19;:26;;47497:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;47669:4;47657:8;:16;;:33;;;;;47689:1;47677:8;:13;;47657:33;47635:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;47795:19;47777:15;:37;;;;47844:8;47825:16;:27;;;;47879:8;47863:13;;:24;;;;;;;;;;;;;;;;;;47340:555:::0;;;:::o;35508:121::-;35560:4;1706:12;:10;:12::i;:::-;1695:23;;:7;:5;:7::i;:::-;:23;;;1687:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35594:5:::1;35577:14;;:22;;;;;;;;;;;;;;;;;;35617:4;35610:11;;35508:121:::0;:::o;36947:167::-;1706:12;:10;:12::i;:::-;1695:23;;:7;:5;:7::i;:::-;:23;;;1687:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37102:4:::1;37060:31;:39;37092:6;37060:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;36947:167:::0;;:::o;30578:30::-;;;;;;;;;;;;;:::o;31426:::-;;;;:::o;37318:403::-;1706:12;:10;:12::i;:::-;1695:23;;:7;:5;:7::i;:::-;:23;;;1687:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37486:13:::1;37468:15;:31;;;;37528:13;37510:15;:31;;;;37564:7;37552:9;:19;;;;37633:9;;37615:15;;37597;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;37582:12;:60;;;;37677:2;37661:12;;:18;;37653:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;37318:403:::0;;;:::o;35301:155::-;1706:12;:10;:12::i;:::-;1695:23;;:7;:5;:7::i;:::-;:23;;;1687:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35372:4:::1;35356:13;;:20;;;;;;;;;;;;;;;;;;35401:4;35387:11;;:18;;;;;;;;;;;;;;;;;;35433:15;35416:14;:32;;;;35301:155::o:0;1475:87::-;1521:7;1548:6;;;;;;;;;;;1541:13;;1475:87;:::o;30615:24::-;;;;;;;;;;;;;:::o;31568:31::-;;;;:::o;37210:100::-;1706:12;:10;:12::i;:::-;1695:23;;:7;:5;:7::i;:::-;:23;;;1687:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37295:7:::1;37281:11;;:21;;;;;;;;;;;;;;;;;;37210:100:::0;:::o;7393:104::-;7449:13;7482:7;7475:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7393:104;:::o;38339:304::-;1706:12;:10;:12::i;:::-;1695:23;;:7;:5;:7::i;:::-;:23;;;1687:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38483:13:::1;;;;;;;;;;;38475:21;;:4;:21;;;;38453:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;38594:41;38623:4;38629:5;38594:28;:41::i;:::-;38339:304:::0;;:::o;31500:24::-;;;;:::o;31002:35::-;;;;:::o;31758:27::-;;;;:::o;31644:25::-;;;;:::o;11912:482::-;12032:4;12054:24;12081:11;:25;12093:12;:10;:12::i;:::-;12081:25;;;;;;;;;;;;;;;:34;12107:7;12081:34;;;;;;;;;;;;;;;;12054:61;;12168:15;12148:16;:35;;12126:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;12284:67;12293:12;:10;:12::i;:::-;12307:7;12335:15;12316:16;:34;12284:8;:67::i;:::-;12382:4;12375:11;;;11912:482;;;;:::o;30910:29::-;;;;:::o;8855:216::-;8977:4;8999:42;9009:12;:10;:12::i;:::-;9023:9;9034:6;8999:9;:42::i;:::-;9059:4;9052:11;;8855:216;;;;:::o;38847:231::-;1706:12;:10;:12::i;:::-;1695:23;;:7;:5;:7::i;:::-;:23;;;1687:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39007:15:::1;;;;;;;;;;;38964:59;;38987:18;38964:59;;;;;;;;;;;;39052:18;39034:15;;:36;;;;;;;;;;;;;;;;;;38847:231:::0;:::o;32155:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;31086:33::-;;;;;;;;;;;;;:::o;38149:182::-;1706:12;:10;:12::i;:::-;1695:23;;:7;:5;:7::i;:::-;:23;;;1687:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38265:8:::1;38234:19;:28;38254:7;38234:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;38305:7;38289:34;;;38314:8;38289:34;;;;;;:::i;:::-;;;;;;;;38149:182:::0;;:::o;37729:412::-;1706:12;:10;:12::i;:::-;1695:23;;:7;:5;:7::i;:::-;:23;;;1687:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37899:13:::1;37880:16;:32;;;;37942:13;37923:16;:32;;;;37979:7;37966:10;:20;;;;38051:10;;38032:16;;38013;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;37997:13;:64;;;;38097:2;38080:13:::0;::::1;:19;;38072:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;37729:412:::0;;;:::o;36683:256::-;1706:12;:10;:12::i;:::-;1695:23;;:7;:5;:7::i;:::-;:23;;;1687:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36823:4:::1;36815;36810:1;36794:13;:11;:13::i;:::-;:17;;;;:::i;:::-;36793:26;;;;:::i;:::-;36792:35;;;;:::i;:::-;36782:6;:45;;36760:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;36924:6;36914;:17;;;;:::i;:::-;36902:9;:29;;;;36683:256:::0;:::o;31344:39::-;;;;;;;;;;;;;:::o;30648:35::-;;;;:::o;35895:497::-;36003:4;1706:12;:10;:12::i;:::-;1695:23;;:7;:5;:7::i;:::-;:23;;;1687:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36082:6:::1;36077:1;36061:13;:11;:13::i;:::-;:17;;;;:::i;:::-;36060:28;;;;:::i;:::-;36047:9;:41;;36025:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;36237:4;36232:1;36216:13;:11;:13::i;:::-;:17;;;;:::i;:::-;36215:26;;;;:::i;:::-;36202:9;:39;;36180:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;36353:9;36332:18;:30;;;;36380:4;36373:11;;35895:497:::0;;;:::o;31392:27::-;;;;:::o;9134:201::-;9268:7;9300:11;:18;9312:5;9300:18;;;;;;;;;;;;;;;:27;9319:7;9300:27;;;;;;;;;;;;;;;;9293:34;;9134:201;;;;:::o;30690:33::-;;;;:::o;35690:135::-;35750:4;1706:12;:10;:12::i;:::-;1695:23;;:7;:5;:7::i;:::-;:23;;;1687:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35790:5:::1;35767:20;;:28;;;;;;;;;;;;;;;;;;35813:4;35806:11;;35690:135:::0;:::o;31463:30::-;;;;:::o;2384:238::-;1706:12;:10;:12::i;:::-;1695:23;;:7;:5;:7::i;:::-;:23;;;1687:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2507:1:::1;2487:22;;:8;:22;;;;2465:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;2586:28;2605:8;2586:18;:28::i;:::-;2384:238:::0;:::o;31606:31::-;;;;:::o;30730:24::-;;;;:::o;48699:1056::-;48810:4;1706:12;:10;:12::i;:::-;1695:23;;:7;:5;:7::i;:::-;:23;;;1687:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48895:19:::1;;48872:20;;:42;;;;:::i;:::-;48854:15;:60;48832:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;49004:4;48993:7;:15;;48985:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;49089:15;49066:20;:38;;;;49159:28;49190:4;:14;;;49205:13;;;;;;;;;;;49190:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;49159:60;;49269:20;49292:44;49330:5;49292:33;49317:7;49292:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;49269:67;;49456:1;49441:12;:16;49437:110;;;49474:61;49490:13;;;;;;;;;;;49513:6;49522:12;49474:15;:61::i;:::-;49437:110;49622:19;49659:13;;;;;;;;;;;49622:51;;49684:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;49711:14;;;;;;;;;;49743:4;49736:11;;;;;48699:1056:::0;;;:::o;317:98::-;370:7;397:10;390:17;;317:98;:::o;15702:380::-;15855:1;15838:19;;:5;:19;;;;15830:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15936:1;15917:21;;:7;:21;;;;15909:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16020:6;15990:11;:18;16002:5;15990:18;;;;;;;;;;;;;;;:27;16009:7;15990:27;;;;;;;;;;;;;;;:36;;;;16058:7;16042:32;;16051:5;16042:32;;;16067:6;16042:32;;;;;;:::i;:::-;;;;;;;;15702:380;;;:::o;39435:5011::-;39583:1;39567:18;;:4;:18;;;;39559:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39660:1;39646:16;;:2;:16;;;;39638:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;39729:1;39719:6;:11;39715:93;;;39747:28;39763:4;39769:2;39773:1;39747:15;:28::i;:::-;39790:7;;39715:93;39824:14;;;;;;;;;;;39820:2487;;;39885:7;:5;:7::i;:::-;39877:15;;:4;:15;;;;:49;;;;;39919:7;:5;:7::i;:::-;39913:13;;:2;:13;;;;39877:49;:86;;;;;39961:1;39947:16;;:2;:16;;;;39877:86;:128;;;;;39998:6;39984:21;;:2;:21;;;;39877:128;:158;;;;;40027:8;;;;;;;;;;;40026:9;39877:158;39855:2441;;;40075:13;;;;;;;;;;;40070:223;;40147:19;:25;40167:4;40147:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;40176:19;:23;40196:2;40176:23;;;;;;;;;;;;;;;;;;;;;;;;;40147:52;40113:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;40070:223;40449:20;;;;;;;;;;;40445:641;;;40530:7;:5;:7::i;:::-;40524:13;;:2;:13;;;;:72;;;;;40580:15;40566:30;;:2;:30;;;;40524:72;:129;;;;;40639:13;;;;;;;;;;;40625:28;;:2;:28;;;;40524:129;40494:573;;;40817:12;40742:28;:39;40771:9;40742:39;;;;;;;;;;;;;;;;:87;40704:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;41031:12;40989:28;:39;41018:9;40989:39;;;;;;;;;;;;;;;:54;;;;40494:573;40445:641;41160:25;:31;41186:4;41160:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;41217:31;:35;41249:2;41217:35;;;;;;;;;;;;;;;;;;;;;;;;;41216:36;41160:92;41134:1147;;;41339:20;;41329:6;:30;;41295:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;41547:9;;41530:13;41540:2;41530:9;:13::i;:::-;41521:6;:22;;;;:::i;:::-;:35;;41487:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;41134:1147;;;41725:25;:29;41751:2;41725:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;41780:31;:37;41812:4;41780:37;;;;;;;;;;;;;;;;;;;;;;;;;41779:38;41725:92;41699:582;;;41904:20;;41894:6;:30;;41860:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;41699:582;;;42061:31;:35;42093:2;42061:35;;;;;;;;;;;;;;;;;;;;;;;;;42056:225;;42181:9;;42164:13;42174:2;42164:9;:13::i;:::-;42155:6;:22;;;;:::i;:::-;:35;;42121:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;42056:225;41699:582;41134:1147;39855:2441;39820:2487;42319:28;42350:24;42368:4;42350:9;:24::i;:::-;42319:55;;42387:12;42426:18;;42402:20;:42;;42387:57;;42475:7;:35;;;;;42499:11;;;;;;;;;;;42475:35;:61;;;;;42528:8;;;;;;;;;;;42527:9;42475:61;:110;;;;;42554:25;:31;42580:4;42554:31;;;;;;;;;;;;;;;;;;;;;;;;;42553:32;42475:110;:153;;;;;42603:19;:25;42623:4;42603:25;;;;;;;;;;;;;;;;;;;;;;;;;42602:26;42475:153;:194;;;;;42646:19;:23;42666:2;42646:23;;;;;;;;;;;;;;;;;;;;;;;;;42645:24;42475:194;42457:326;;;42707:4;42696:8;;:15;;;;;;;;;;;;;;;;;;42728:10;:8;:10::i;:::-;42766:5;42755:8;;:16;;;;;;;;;;;;;;;;;;42457:326;42814:8;;;;;;;;;;;42813:9;:55;;;;;42839:25;:29;42865:2;42839:29;;;;;;;;;;;;;;;;;;;;;;;;;42813:55;:85;;;;;42885:13;;;;;;;;;;;42813:85;:153;;;;;42951:15;;42934:14;;:32;;;;:::i;:::-;42915:15;:51;;42813:153;:196;;;;;42984:19;:25;43004:4;42984:25;;;;;;;;;;;;;;;;;;;;;;;;;42983:26;42813:196;42795:282;;;43036:29;:27;:29::i;:::-;;42795:282;43089:12;43105:8;;;;;;;;;;;43104:9;43089:24;;43215:19;:25;43235:4;43215:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;43244:19;:23;43264:2;43244:23;;;;;;;;;;;;;;;;;;;;;;;;;43215:52;43211:100;;;43294:5;43284:15;;43211:100;43323:12;43428:7;43424:969;;;43480:25;:29;43506:2;43480:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;43529:1;43513:13;;:17;43480:50;43476:768;;;43558:34;43588:3;43558:25;43569:13;;43558:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;43551:41;;43661:13;;43641:16;;43634:4;:23;;;;:::i;:::-;43633:41;;;;:::i;:::-;43611:18;;:63;;;;;;;:::i;:::-;;;;;;;;43731:13;;43717:10;;43710:4;:17;;;;:::i;:::-;43709:35;;;;:::i;:::-;43693:12;;:51;;;;;;;:::i;:::-;;;;;;;;43813:13;;43793:16;;43786:4;:23;;;;:::i;:::-;43785:41;;;;:::i;:::-;43763:18;;:63;;;;;;;:::i;:::-;;;;;;;;43476:768;;;43888:25;:31;43914:4;43888:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;43938:1;43923:12;;:16;43888:51;43884:360;;;43967:33;43996:3;43967:24;43978:12;;43967:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;43960:40;;44068:12;;44049:15;;44042:4;:22;;;;:::i;:::-;44041:39;;;;:::i;:::-;44019:18;;:61;;;;;;;:::i;:::-;;;;;;;;44136:12;;44123:9;;44116:4;:16;;;;:::i;:::-;44115:33;;;;:::i;:::-;44099:12;;:49;;;;;;;:::i;:::-;;;;;;;;44216:12;;44197:15;;44190:4;:22;;;;:::i;:::-;44189:39;;;;:::i;:::-;44167:18;;:61;;;;;;;:::i;:::-;;;;;;;;43884:360;43476:768;44271:1;44264:4;:8;44260:91;;;44293:42;44309:4;44323;44330;44293:15;:42::i;:::-;44260:91;44377:4;44367:14;;;;;:::i;:::-;;;43424:969;44405:33;44421:4;44427:2;44431:6;44405:15;:33::i;:::-;39548:4898;;;;39435:5011;;;;:::o;2782:191::-;2856:16;2875:6;;;;;;;;;;;2856:25;;2901:8;2892:6;;:17;;;;;;;;;;;;;;;;;;2956:8;2925:40;;2946:8;2925:40;;;;;;;;;;;;2845:128;2782:191;:::o;38651:188::-;38768:5;38734:25;:31;38760:4;38734:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;38825:5;38791:40;;38819:4;38791:40;;;;;;;;;;;;38651:188;;:::o;21315:98::-;21373:7;21404:1;21400;:5;;;;:::i;:::-;21393:12;;21315:98;;;;:::o;21714:::-;21772:7;21803:1;21799;:5;;;;:::i;:::-;21792:12;;21714:98;;;;:::o;12884:770::-;13042:1;13024:20;;:6;:20;;;;13016:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13126:1;13105:23;;:9;:23;;;;13097:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13181:47;13202:6;13210:9;13221:6;13181:20;:47::i;:::-;13241:21;13265:9;:17;13275:6;13265:17;;;;;;;;;;;;;;;;13241:41;;13332:6;13315:13;:23;;13293:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;13476:6;13460:13;:22;13440:9;:17;13450:6;13440:17;;;;;;;;;;;;;;;:42;;;;13528:6;13504:9;:20;13514:9;13504:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;13569:9;13552:35;;13561:6;13552:35;;;13580:6;13552:35;;;;;;:::i;:::-;;;;;;;;13600:46;13620:6;13628:9;13639:6;13600:19;:46::i;:::-;13005:649;12884:770;;;:::o;45576:1756::-;45615:23;45641:24;45659:4;45641:9;:24::i;:::-;45615:50;;45676:25;45772:12;;45738:18;;45704;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;45676:108;;45795:12;45843:1;45824:15;:20;:46;;;;45869:1;45848:17;:22;45824:46;45820:85;;;45887:7;;;;;45820:85;45960:2;45939:18;;:23;;;;:::i;:::-;45921:15;:41;45917:115;;;46018:2;45997:18;;:23;;;;:::i;:::-;45979:41;;45917:115;46093:23;46206:1;46173:17;46138:18;;46120:15;:36;;;;:::i;:::-;46119:71;;;;:::i;:::-;:88;;;;:::i;:::-;46093:114;;46218:26;46247:36;46267:15;46247;:19;;:36;;;;:::i;:::-;46218:65;;46296:25;46324:21;46296:49;;46358:36;46375:18;46358:16;:36::i;:::-;46407:18;46428:44;46454:17;46428:21;:25;;:44;;;;:::i;:::-;46407:65;;46485:23;46511:81;46564:17;46511:34;46526:18;;46511:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;46485:107;;46603:17;46623:51;46656:17;46623:28;46638:12;;46623:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;46603:71;;46687:23;46744:9;46726:15;46713:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;46687:66;;46787:1;46766:18;:22;;;;46820:1;46799:18;:22;;;;46847:1;46832:12;:16;;;;46883:9;;;;;;;;;;;46875:23;;46906:9;46875:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46861:59;;;;;46955:1;46937:15;:19;:42;;;;;46978:1;46960:15;:19;46937:42;46933:278;;;46996:46;47009:15;47026;46996:12;:46::i;:::-;47062:137;47095:18;47132:15;47166:18;;47062:137;;;;;;;;:::i;:::-;;;;;;;;46933:278;47245:15;;;;;;;;;;;47237:29;;47288:21;47237:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47223:101;;;;;45604:1728;;;;;;;;;;45576:1756;:::o;47903:788::-;47960:4;47994:15;47977:14;:32;;;;48064:28;48095:4;:14;;;48110:13;;;;;;;;;;;48095:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;48064:60;;48174:20;48197:77;48258:5;48197:42;48222:16;;48197:20;:24;;:42;;;;:::i;:::-;:46;;:77;;;;:::i;:::-;48174:100;;48394:1;48379:12;:16;48375:110;;;48412:61;48428:13;;;;;;;;;;;48451:6;48460:12;48412:15;:61::i;:::-;48375:110;48560:19;48597:13;;;;;;;;;;;48560:51;;48622:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48649:12;;;;;;;;;;48679:4;48672:11;;;;;47903:788;:::o;16682:125::-;;;;:::o;17411:124::-;;;;:::o;20958:98::-;21016:7;21047:1;21043;:5;;;;:::i;:::-;21036:12;;20958:98;;;;:::o;44454:589::-;44580:21;44618:1;44604:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44580:40;;44649:4;44631;44636:1;44631:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;44675:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44665:4;44670:1;44665:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;44710:62;44727:4;44742:15;44760:11;44710:8;:62::i;:::-;44811:15;:66;;;44892:11;44918:1;44962:4;44989;45009:15;44811:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44509:534;44454:589;:::o;45051:517::-;45199:62;45216:4;45231:15;45249:11;45199:8;:62::i;:::-;45304:15;:31;;;45343:9;45376:4;45396:11;45422:1;45465;30532:6;45534:15;45304:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;45051:517;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;301:133;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;440:139;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;585:143;;;;:::o;734:329::-;793:6;842:2;830:9;821:7;817:23;813:32;810:119;;;848:79;;:::i;:::-;810:119;968:1;993:53;1038:7;1029:6;1018:9;1014:22;993:53;:::i;:::-;983:63;;939:117;734:329;;;;:::o;1069:351::-;1139:6;1188:2;1176:9;1167:7;1163:23;1159:32;1156:119;;;1194:79;;:::i;:::-;1156:119;1314:1;1339:64;1395:7;1386:6;1375:9;1371:22;1339:64;:::i;:::-;1329:74;;1285:128;1069:351;;;;:::o;1426:474::-;1494:6;1502;1551:2;1539:9;1530:7;1526:23;1522:32;1519:119;;;1557:79;;:::i;:::-;1519:119;1677:1;1702:53;1747:7;1738:6;1727:9;1723:22;1702:53;:::i;:::-;1692:63;;1648:117;1804:2;1830:53;1875:7;1866:6;1855:9;1851:22;1830:53;:::i;:::-;1820:63;;1775:118;1426:474;;;;;:::o;1906:619::-;1983:6;1991;1999;2048:2;2036:9;2027:7;2023:23;2019:32;2016:119;;;2054:79;;:::i;:::-;2016:119;2174:1;2199:53;2244:7;2235:6;2224:9;2220:22;2199:53;:::i;:::-;2189:63;;2145:117;2301:2;2327:53;2372:7;2363:6;2352:9;2348:22;2327:53;:::i;:::-;2317:63;;2272:118;2429:2;2455:53;2500:7;2491:6;2480:9;2476:22;2455:53;:::i;:::-;2445:63;;2400:118;1906:619;;;;;:::o;2531:468::-;2596:6;2604;2653:2;2641:9;2632:7;2628:23;2624:32;2621:119;;;2659:79;;:::i;:::-;2621:119;2779:1;2804:53;2849:7;2840:6;2829:9;2825:22;2804:53;:::i;:::-;2794:63;;2750:117;2906:2;2932:50;2974:7;2965:6;2954:9;2950:22;2932:50;:::i;:::-;2922:60;;2877:115;2531:468;;;;;:::o;3005:474::-;3073:6;3081;3130:2;3118:9;3109:7;3105:23;3101:32;3098:119;;;3136:79;;:::i;:::-;3098:119;3256:1;3281:53;3326:7;3317:6;3306:9;3302:22;3281:53;:::i;:::-;3271:63;;3227:117;3383:2;3409:53;3454:7;3445:6;3434:9;3430:22;3409:53;:::i;:::-;3399:63;;3354:118;3005:474;;;;;:::o;3485:323::-;3541:6;3590:2;3578:9;3569:7;3565:23;3561:32;3558:119;;;3596:79;;:::i;:::-;3558:119;3716:1;3741:50;3783:7;3774:6;3763:9;3759:22;3741:50;:::i;:::-;3731:60;;3687:114;3485:323;;;;:::o;3814:329::-;3873:6;3922:2;3910:9;3901:7;3897:23;3893:32;3890:119;;;3928:79;;:::i;:::-;3890:119;4048:1;4073:53;4118:7;4109:6;4098:9;4094:22;4073:53;:::i;:::-;4063:63;;4019:117;3814:329;;;;:::o;4149:351::-;4219:6;4268:2;4256:9;4247:7;4243:23;4239:32;4236:119;;;4274:79;;:::i;:::-;4236:119;4394:1;4419:64;4475:7;4466:6;4455:9;4451:22;4419:64;:::i;:::-;4409:74;;4365:128;4149:351;;;;:::o;4506:613::-;4580:6;4588;4596;4645:2;4633:9;4624:7;4620:23;4616:32;4613:119;;;4651:79;;:::i;:::-;4613:119;4771:1;4796:53;4841:7;4832:6;4821:9;4817:22;4796:53;:::i;:::-;4786:63;;4742:117;4898:2;4924:53;4969:7;4960:6;4949:9;4945:22;4924:53;:::i;:::-;4914:63;;4869:118;5026:2;5052:50;5094:7;5085:6;5074:9;5070:22;5052:50;:::i;:::-;5042:60;;4997:115;4506:613;;;;;:::o;5125:619::-;5202:6;5210;5218;5267:2;5255:9;5246:7;5242:23;5238:32;5235:119;;;5273:79;;:::i;:::-;5235:119;5393:1;5418:53;5463:7;5454:6;5443:9;5439:22;5418:53;:::i;:::-;5408:63;;5364:117;5520:2;5546:53;5591:7;5582:6;5571:9;5567:22;5546:53;:::i;:::-;5536:63;;5491:118;5648:2;5674:53;5719:7;5710:6;5699:9;5695:22;5674:53;:::i;:::-;5664:63;;5619:118;5125:619;;;;;:::o;5750:663::-;5838:6;5846;5854;5903:2;5891:9;5882:7;5878:23;5874:32;5871:119;;;5909:79;;:::i;:::-;5871:119;6029:1;6054:64;6110:7;6101:6;6090:9;6086:22;6054:64;:::i;:::-;6044:74;;6000:128;6167:2;6193:64;6249:7;6240:6;6229:9;6225:22;6193:64;:::i;:::-;6183:74;;6138:129;6306:2;6332:64;6388:7;6379:6;6368:9;6364:22;6332:64;:::i;:::-;6322:74;;6277:129;5750:663;;;;;:::o;6419:179::-;6488:10;6509:46;6551:3;6543:6;6509:46;:::i;:::-;6587:4;6582:3;6578:14;6564:28;;6419:179;;;;:::o;6604:108::-;6681:24;6699:5;6681:24;:::i;:::-;6676:3;6669:37;6604:108;;:::o;6718:118::-;6805:24;6823:5;6805:24;:::i;:::-;6800:3;6793:37;6718:118;;:::o;6872:732::-;6991:3;7020:54;7068:5;7020:54;:::i;:::-;7090:86;7169:6;7164:3;7090:86;:::i;:::-;7083:93;;7200:56;7250:5;7200:56;:::i;:::-;7279:7;7310:1;7295:284;7320:6;7317:1;7314:13;7295:284;;;7396:6;7390:13;7423:63;7482:3;7467:13;7423:63;:::i;:::-;7416:70;;7509:60;7562:6;7509:60;:::i;:::-;7499:70;;7355:224;7342:1;7339;7335:9;7330:14;;7295:284;;;7299:14;7595:3;7588:10;;6996:608;;;6872:732;;;;:::o;7610:109::-;7691:21;7706:5;7691:21;:::i;:::-;7686:3;7679:34;7610:109;;:::o;7725:185::-;7839:64;7897:5;7839:64;:::i;:::-;7834:3;7827:77;7725:185;;:::o;7916:147::-;8011:45;8050:5;8011:45;:::i;:::-;8006:3;7999:58;7916:147;;:::o;8069:364::-;8157:3;8185:39;8218:5;8185:39;:::i;:::-;8240:71;8304:6;8299:3;8240:71;:::i;:::-;8233:78;;8320:52;8365:6;8360:3;8353:4;8346:5;8342:16;8320:52;:::i;:::-;8397:29;8419:6;8397:29;:::i;:::-;8392:3;8388:39;8381:46;;8161:272;8069:364;;;;:::o;8439:366::-;8581:3;8602:67;8666:2;8661:3;8602:67;:::i;:::-;8595:74;;8678:93;8767:3;8678:93;:::i;:::-;8796:2;8791:3;8787:12;8780:19;;8439:366;;;:::o;8811:::-;8953:3;8974:67;9038:2;9033:3;8974:67;:::i;:::-;8967:74;;9050:93;9139:3;9050:93;:::i;:::-;9168:2;9163:3;9159:12;9152:19;;8811:366;;;:::o;9183:::-;9325:3;9346:67;9410:2;9405:3;9346:67;:::i;:::-;9339:74;;9422:93;9511:3;9422:93;:::i;:::-;9540:2;9535:3;9531:12;9524:19;;9183:366;;;:::o;9555:::-;9697:3;9718:67;9782:2;9777:3;9718:67;:::i;:::-;9711:74;;9794:93;9883:3;9794:93;:::i;:::-;9912:2;9907:3;9903:12;9896:19;;9555:366;;;:::o;9927:::-;10069:3;10090:67;10154:2;10149:3;10090:67;:::i;:::-;10083:74;;10166:93;10255:3;10166:93;:::i;:::-;10284:2;10279:3;10275:12;10268:19;;9927:366;;;:::o;10299:::-;10441:3;10462:67;10526:2;10521:3;10462:67;:::i;:::-;10455:74;;10538:93;10627:3;10538:93;:::i;:::-;10656:2;10651:3;10647:12;10640:19;;10299:366;;;:::o;10671:::-;10813:3;10834:67;10898:2;10893:3;10834:67;:::i;:::-;10827:74;;10910:93;10999:3;10910:93;:::i;:::-;11028:2;11023:3;11019:12;11012:19;;10671:366;;;:::o;11043:::-;11185:3;11206:67;11270:2;11265:3;11206:67;:::i;:::-;11199:74;;11282:93;11371:3;11282:93;:::i;:::-;11400:2;11395:3;11391:12;11384:19;;11043:366;;;:::o;11415:::-;11557:3;11578:67;11642:2;11637:3;11578:67;:::i;:::-;11571:74;;11654:93;11743:3;11654:93;:::i;:::-;11772:2;11767:3;11763:12;11756:19;;11415:366;;;:::o;11787:::-;11929:3;11950:67;12014:2;12009:3;11950:67;:::i;:::-;11943:74;;12026:93;12115:3;12026:93;:::i;:::-;12144:2;12139:3;12135:12;12128:19;;11787:366;;;:::o;12159:::-;12301:3;12322:67;12386:2;12381:3;12322:67;:::i;:::-;12315:74;;12398:93;12487:3;12398:93;:::i;:::-;12516:2;12511:3;12507:12;12500:19;;12159:366;;;:::o;12531:::-;12673:3;12694:67;12758:2;12753:3;12694:67;:::i;:::-;12687:74;;12770:93;12859:3;12770:93;:::i;:::-;12888:2;12883:3;12879:12;12872:19;;12531:366;;;:::o;12903:::-;13045:3;13066:67;13130:2;13125:3;13066:67;:::i;:::-;13059:74;;13142:93;13231:3;13142:93;:::i;:::-;13260:2;13255:3;13251:12;13244:19;;12903:366;;;:::o;13275:::-;13417:3;13438:67;13502:2;13497:3;13438:67;:::i;:::-;13431:74;;13514:93;13603:3;13514:93;:::i;:::-;13632:2;13627:3;13623:12;13616:19;;13275:366;;;:::o;13647:::-;13789:3;13810:67;13874:2;13869:3;13810:67;:::i;:::-;13803:74;;13886:93;13975:3;13886:93;:::i;:::-;14004:2;13999:3;13995:12;13988:19;;13647:366;;;:::o;14019:::-;14161:3;14182:67;14246:2;14241:3;14182:67;:::i;:::-;14175:74;;14258:93;14347:3;14258:93;:::i;:::-;14376:2;14371:3;14367:12;14360:19;;14019:366;;;:::o;14391:::-;14533:3;14554:67;14618:2;14613:3;14554:67;:::i;:::-;14547:74;;14630:93;14719:3;14630:93;:::i;:::-;14748:2;14743:3;14739:12;14732:19;;14391:366;;;:::o;14763:::-;14905:3;14926:67;14990:2;14985:3;14926:67;:::i;:::-;14919:74;;15002:93;15091:3;15002:93;:::i;:::-;15120:2;15115:3;15111:12;15104:19;;14763:366;;;:::o;15135:::-;15277:3;15298:67;15362:2;15357:3;15298:67;:::i;:::-;15291:74;;15374:93;15463:3;15374:93;:::i;:::-;15492:2;15487:3;15483:12;15476:19;;15135:366;;;:::o;15507:::-;15649:3;15670:67;15734:2;15729:3;15670:67;:::i;:::-;15663:74;;15746:93;15835:3;15746:93;:::i;:::-;15864:2;15859:3;15855:12;15848:19;;15507:366;;;:::o;15879:398::-;16038:3;16059:83;16140:1;16135:3;16059:83;:::i;:::-;16052:90;;16151:93;16240:3;16151:93;:::i;:::-;16269:1;16264:3;16260:11;16253:18;;15879:398;;;:::o;16283:366::-;16425:3;16446:67;16510:2;16505:3;16446:67;:::i;:::-;16439:74;;16522:93;16611:3;16522:93;:::i;:::-;16640:2;16635:3;16631:12;16624:19;;16283:366;;;:::o;16655:::-;16797:3;16818:67;16882:2;16877:3;16818:67;:::i;:::-;16811:74;;16894:93;16983:3;16894:93;:::i;:::-;17012:2;17007:3;17003:12;16996:19;;16655:366;;;:::o;17027:::-;17169:3;17190:67;17254:2;17249:3;17190:67;:::i;:::-;17183:74;;17266:93;17355:3;17266:93;:::i;:::-;17384:2;17379:3;17375:12;17368:19;;17027:366;;;:::o;17399:::-;17541:3;17562:67;17626:2;17621:3;17562:67;:::i;:::-;17555:74;;17638:93;17727:3;17638:93;:::i;:::-;17756:2;17751:3;17747:12;17740:19;;17399:366;;;:::o;17771:::-;17913:3;17934:67;17998:2;17993:3;17934:67;:::i;:::-;17927:74;;18010:93;18099:3;18010:93;:::i;:::-;18128:2;18123:3;18119:12;18112:19;;17771:366;;;:::o;18143:118::-;18230:24;18248:5;18230:24;:::i;:::-;18225:3;18218:37;18143:118;;:::o;18267:112::-;18350:22;18366:5;18350:22;:::i;:::-;18345:3;18338:35;18267:112;;:::o;18385:379::-;18569:3;18591:147;18734:3;18591:147;:::i;:::-;18584:154;;18755:3;18748:10;;18385:379;;;:::o;18770:222::-;18863:4;18901:2;18890:9;18886:18;18878:26;;18914:71;18982:1;18971:9;18967:17;18958:6;18914:71;:::i;:::-;18770:222;;;;:::o;18998:807::-;19247:4;19285:3;19274:9;19270:19;19262:27;;19299:71;19367:1;19356:9;19352:17;19343:6;19299:71;:::i;:::-;19380:72;19448:2;19437:9;19433:18;19424:6;19380:72;:::i;:::-;19462:80;19538:2;19527:9;19523:18;19514:6;19462:80;:::i;:::-;19552;19628:2;19617:9;19613:18;19604:6;19552:80;:::i;:::-;19642:73;19710:3;19699:9;19695:19;19686:6;19642:73;:::i;:::-;19725;19793:3;19782:9;19778:19;19769:6;19725:73;:::i;:::-;18998:807;;;;;;;;;:::o;19811:210::-;19898:4;19936:2;19925:9;19921:18;19913:26;;19949:65;20011:1;20000:9;19996:17;19987:6;19949:65;:::i;:::-;19811:210;;;;:::o;20027:276::-;20147:4;20185:2;20174:9;20170:18;20162:26;;20198:98;20293:1;20282:9;20278:17;20269:6;20198:98;:::i;:::-;20027:276;;;;:::o;20309:313::-;20422:4;20460:2;20449:9;20445:18;20437:26;;20509:9;20503:4;20499:20;20495:1;20484:9;20480:17;20473:47;20537:78;20610:4;20601:6;20537:78;:::i;:::-;20529:86;;20309:313;;;;:::o;20628:419::-;20794:4;20832:2;20821:9;20817:18;20809:26;;20881:9;20875:4;20871:20;20867:1;20856:9;20852:17;20845:47;20909:131;21035:4;20909:131;:::i;:::-;20901:139;;20628:419;;;:::o;21053:::-;21219:4;21257:2;21246:9;21242:18;21234:26;;21306:9;21300:4;21296:20;21292:1;21281:9;21277:17;21270:47;21334:131;21460:4;21334:131;:::i;:::-;21326:139;;21053:419;;;:::o;21478:::-;21644:4;21682:2;21671:9;21667:18;21659:26;;21731:9;21725:4;21721:20;21717:1;21706:9;21702:17;21695:47;21759:131;21885:4;21759:131;:::i;:::-;21751:139;;21478:419;;;:::o;21903:::-;22069:4;22107:2;22096:9;22092:18;22084:26;;22156:9;22150:4;22146:20;22142:1;22131:9;22127:17;22120:47;22184:131;22310:4;22184:131;:::i;:::-;22176:139;;21903:419;;;:::o;22328:::-;22494:4;22532:2;22521:9;22517:18;22509:26;;22581:9;22575:4;22571:20;22567:1;22556:9;22552:17;22545:47;22609:131;22735:4;22609:131;:::i;:::-;22601:139;;22328:419;;;:::o;22753:::-;22919:4;22957:2;22946:9;22942:18;22934:26;;23006:9;23000:4;22996:20;22992:1;22981:9;22977:17;22970:47;23034:131;23160:4;23034:131;:::i;:::-;23026:139;;22753:419;;;:::o;23178:::-;23344:4;23382:2;23371:9;23367:18;23359:26;;23431:9;23425:4;23421:20;23417:1;23406:9;23402:17;23395:47;23459:131;23585:4;23459:131;:::i;:::-;23451:139;;23178:419;;;:::o;23603:::-;23769:4;23807:2;23796:9;23792:18;23784:26;;23856:9;23850:4;23846:20;23842:1;23831:9;23827:17;23820:47;23884:131;24010:4;23884:131;:::i;:::-;23876:139;;23603:419;;;:::o;24028:::-;24194:4;24232:2;24221:9;24217:18;24209:26;;24281:9;24275:4;24271:20;24267:1;24256:9;24252:17;24245:47;24309:131;24435:4;24309:131;:::i;:::-;24301:139;;24028:419;;;:::o;24453:::-;24619:4;24657:2;24646:9;24642:18;24634:26;;24706:9;24700:4;24696:20;24692:1;24681:9;24677:17;24670:47;24734:131;24860:4;24734:131;:::i;:::-;24726:139;;24453:419;;;:::o;24878:::-;25044:4;25082:2;25071:9;25067:18;25059:26;;25131:9;25125:4;25121:20;25117:1;25106:9;25102:17;25095:47;25159:131;25285:4;25159:131;:::i;:::-;25151:139;;24878:419;;;:::o;25303:::-;25469:4;25507:2;25496:9;25492:18;25484:26;;25556:9;25550:4;25546:20;25542:1;25531:9;25527:17;25520:47;25584:131;25710:4;25584:131;:::i;:::-;25576:139;;25303:419;;;:::o;25728:::-;25894:4;25932:2;25921:9;25917:18;25909:26;;25981:9;25975:4;25971:20;25967:1;25956:9;25952:17;25945:47;26009:131;26135:4;26009:131;:::i;:::-;26001:139;;25728:419;;;:::o;26153:::-;26319:4;26357:2;26346:9;26342:18;26334:26;;26406:9;26400:4;26396:20;26392:1;26381:9;26377:17;26370:47;26434:131;26560:4;26434:131;:::i;:::-;26426:139;;26153:419;;;:::o;26578:::-;26744:4;26782:2;26771:9;26767:18;26759:26;;26831:9;26825:4;26821:20;26817:1;26806:9;26802:17;26795:47;26859:131;26985:4;26859:131;:::i;:::-;26851:139;;26578:419;;;:::o;27003:::-;27169:4;27207:2;27196:9;27192:18;27184:26;;27256:9;27250:4;27246:20;27242:1;27231:9;27227:17;27220:47;27284:131;27410:4;27284:131;:::i;:::-;27276:139;;27003:419;;;:::o;27428:::-;27594:4;27632:2;27621:9;27617:18;27609:26;;27681:9;27675:4;27671:20;27667:1;27656:9;27652:17;27645:47;27709:131;27835:4;27709:131;:::i;:::-;27701:139;;27428:419;;;:::o;27853:::-;28019:4;28057:2;28046:9;28042:18;28034:26;;28106:9;28100:4;28096:20;28092:1;28081:9;28077:17;28070:47;28134:131;28260:4;28134:131;:::i;:::-;28126:139;;27853:419;;;:::o;28278:::-;28444:4;28482:2;28471:9;28467:18;28459:26;;28531:9;28525:4;28521:20;28517:1;28506:9;28502:17;28495:47;28559:131;28685:4;28559:131;:::i;:::-;28551:139;;28278:419;;;:::o;28703:::-;28869:4;28907:2;28896:9;28892:18;28884:26;;28956:9;28950:4;28946:20;28942:1;28931:9;28927:17;28920:47;28984:131;29110:4;28984:131;:::i;:::-;28976:139;;28703:419;;;:::o;29128:::-;29294:4;29332:2;29321:9;29317:18;29309:26;;29381:9;29375:4;29371:20;29367:1;29356:9;29352:17;29345:47;29409:131;29535:4;29409:131;:::i;:::-;29401:139;;29128:419;;;:::o;29553:::-;29719:4;29757:2;29746:9;29742:18;29734:26;;29806:9;29800:4;29796:20;29792:1;29781:9;29777:17;29770:47;29834:131;29960:4;29834:131;:::i;:::-;29826:139;;29553:419;;;:::o;29978:::-;30144:4;30182:2;30171:9;30167:18;30159:26;;30231:9;30225:4;30221:20;30217:1;30206:9;30202:17;30195:47;30259:131;30385:4;30259:131;:::i;:::-;30251:139;;29978:419;;;:::o;30403:::-;30569:4;30607:2;30596:9;30592:18;30584:26;;30656:9;30650:4;30646:20;30642:1;30631:9;30627:17;30620:47;30684:131;30810:4;30684:131;:::i;:::-;30676:139;;30403:419;;;:::o;30828:::-;30994:4;31032:2;31021:9;31017:18;31009:26;;31081:9;31075:4;31071:20;31067:1;31056:9;31052:17;31045:47;31109:131;31235:4;31109:131;:::i;:::-;31101:139;;30828:419;;;:::o;31253:222::-;31346:4;31384:2;31373:9;31369:18;31361:26;;31397:71;31465:1;31454:9;31450:17;31441:6;31397:71;:::i;:::-;31253:222;;;;:::o;31481:831::-;31744:4;31782:3;31771:9;31767:19;31759:27;;31796:71;31864:1;31853:9;31849:17;31840:6;31796:71;:::i;:::-;31877:80;31953:2;31942:9;31938:18;31929:6;31877:80;:::i;:::-;32004:9;31998:4;31994:20;31989:2;31978:9;31974:18;31967:48;32032:108;32135:4;32126:6;32032:108;:::i;:::-;32024:116;;32150:72;32218:2;32207:9;32203:18;32194:6;32150:72;:::i;:::-;32232:73;32300:3;32289:9;32285:19;32276:6;32232:73;:::i;:::-;31481:831;;;;;;;;:::o;32318:442::-;32467:4;32505:2;32494:9;32490:18;32482:26;;32518:71;32586:1;32575:9;32571:17;32562:6;32518:71;:::i;:::-;32599:72;32667:2;32656:9;32652:18;32643:6;32599:72;:::i;:::-;32681;32749:2;32738:9;32734:18;32725:6;32681:72;:::i;:::-;32318:442;;;;;;:::o;32766:214::-;32855:4;32893:2;32882:9;32878:18;32870:26;;32906:67;32970:1;32959:9;32955:17;32946:6;32906:67;:::i;:::-;32766:214;;;;:::o;33067:132::-;33134:4;33157:3;33149:11;;33187:4;33182:3;33178:14;33170:22;;33067:132;;;:::o;33205:114::-;33272:6;33306:5;33300:12;33290:22;;33205:114;;;:::o;33325:99::-;33377:6;33411:5;33405:12;33395:22;;33325:99;;;:::o;33430:113::-;33500:4;33532;33527:3;33523:14;33515:22;;33430:113;;;:::o;33549:184::-;33648:11;33682:6;33677:3;33670:19;33722:4;33717:3;33713:14;33698:29;;33549:184;;;;:::o;33739:147::-;33840:11;33877:3;33862:18;;33739:147;;;;:::o;33892:169::-;33976:11;34010:6;34005:3;33998:19;34050:4;34045:3;34041:14;34026:29;;33892:169;;;;:::o;34067:305::-;34107:3;34126:20;34144:1;34126:20;:::i;:::-;34121:25;;34160:20;34178:1;34160:20;:::i;:::-;34155:25;;34314:1;34246:66;34242:74;34239:1;34236:81;34233:107;;;34320:18;;:::i;:::-;34233:107;34364:1;34361;34357:9;34350:16;;34067:305;;;;:::o;34378:185::-;34418:1;34435:20;34453:1;34435:20;:::i;:::-;34430:25;;34469:20;34487:1;34469:20;:::i;:::-;34464:25;;34508:1;34498:35;;34513:18;;:::i;:::-;34498:35;34555:1;34552;34548:9;34543:14;;34378:185;;;;:::o;34569:348::-;34609:7;34632:20;34650:1;34632:20;:::i;:::-;34627:25;;34666:20;34684:1;34666:20;:::i;:::-;34661:25;;34854:1;34786:66;34782:74;34779:1;34776:81;34771:1;34764:9;34757:17;34753:105;34750:131;;;34861:18;;:::i;:::-;34750:131;34909:1;34906;34902:9;34891:20;;34569:348;;;;:::o;34923:191::-;34963:4;34983:20;35001:1;34983:20;:::i;:::-;34978:25;;35017:20;35035:1;35017:20;:::i;:::-;35012:25;;35056:1;35053;35050:8;35047:34;;;35061:18;;:::i;:::-;35047:34;35106:1;35103;35099:9;35091:17;;34923:191;;;;:::o;35120:96::-;35157:7;35186:24;35204:5;35186:24;:::i;:::-;35175:35;;35120:96;;;:::o;35222:90::-;35256:7;35299:5;35292:13;35285:21;35274:32;;35222:90;;;:::o;35318:126::-;35355:7;35395:42;35388:5;35384:54;35373:65;;35318:126;;;:::o;35450:77::-;35487:7;35516:5;35505:16;;35450:77;;;:::o;35533:86::-;35568:7;35608:4;35601:5;35597:16;35586:27;;35533:86;;;:::o;35625:153::-;35702:9;35735:37;35766:5;35735:37;:::i;:::-;35722:50;;35625:153;;;:::o;35784:121::-;35842:9;35875:24;35893:5;35875:24;:::i;:::-;35862:37;;35784:121;;;:::o;35911:126::-;35961:9;35994:37;36025:5;35994:37;:::i;:::-;35981:50;;35911:126;;;:::o;36043:113::-;36093:9;36126:24;36144:5;36126:24;:::i;:::-;36113:37;;36043:113;;;:::o;36162:307::-;36230:1;36240:113;36254:6;36251:1;36248:13;36240:113;;;36339:1;36334:3;36330:11;36324:18;36320:1;36315:3;36311:11;36304:39;36276:2;36273:1;36269:10;36264:15;;36240:113;;;36371:6;36368:1;36365:13;36362:101;;;36451:1;36442:6;36437:3;36433:16;36426:27;36362:101;36211:258;36162:307;;;:::o;36475:320::-;36519:6;36556:1;36550:4;36546:12;36536:22;;36603:1;36597:4;36593:12;36624:18;36614:81;;36680:4;36672:6;36668:17;36658:27;;36614:81;36742:2;36734:6;36731:14;36711:18;36708:38;36705:84;;;36761:18;;:::i;:::-;36705:84;36526:269;36475:320;;;:::o;36801:180::-;36849:77;36846:1;36839:88;36946:4;36943:1;36936:15;36970:4;36967:1;36960:15;36987:180;37035:77;37032:1;37025:88;37132:4;37129:1;37122:15;37156:4;37153:1;37146:15;37173:180;37221:77;37218:1;37211:88;37318:4;37315:1;37308:15;37342:4;37339:1;37332:15;37359:180;37407:77;37404:1;37397:88;37504:4;37501:1;37494:15;37528:4;37525:1;37518:15;37545:180;37593:77;37590:1;37583:88;37690:4;37687:1;37680:15;37714:4;37711:1;37704:15;37854:117;37963:1;37960;37953:12;37977:102;38018:6;38069:2;38065:7;38060:2;38053:5;38049:14;38045:28;38035:38;;37977:102;;;:::o;38085:222::-;38225:34;38221:1;38213:6;38209:14;38202:58;38294:5;38289:2;38281:6;38277:15;38270:30;38085:222;:::o;38313:172::-;38453:24;38449:1;38441:6;38437:14;38430:48;38313:172;:::o;38491:225::-;38631:34;38627:1;38619:6;38615:14;38608:58;38700:8;38695:2;38687:6;38683:15;38676:33;38491:225;:::o;38722:221::-;38862:34;38858:1;38850:6;38846:14;38839:58;38931:4;38926:2;38918:6;38914:15;38907:29;38722:221;:::o;38949:238::-;39089:34;39085:1;39077:6;39073:14;39066:58;39158:21;39153:2;39145:6;39141:15;39134:46;38949:238;:::o;39193:223::-;39333:34;39329:1;39321:6;39317:14;39310:58;39402:6;39397:2;39389:6;39385:15;39378:31;39193:223;:::o;39422:244::-;39562:34;39558:1;39550:6;39546:14;39539:58;39631:27;39626:2;39618:6;39614:15;39607:52;39422:244;:::o;39672:225::-;39812:34;39808:1;39800:6;39796:14;39789:58;39881:8;39876:2;39868:6;39864:15;39857:33;39672:225;:::o;39903:241::-;40043:34;40039:1;40031:6;40027:14;40020:58;40112:24;40107:2;40099:6;40095:15;40088:49;39903:241;:::o;40150:235::-;40290:34;40286:1;40278:6;40274:14;40267:58;40359:18;40354:2;40346:6;40342:15;40335:43;40150:235;:::o;40391:179::-;40531:31;40527:1;40519:6;40515:14;40508:55;40391:179;:::o;40576:240::-;40716:34;40712:1;40704:6;40700:14;40693:58;40785:23;40780:2;40772:6;40768:15;40761:48;40576:240;:::o;40822:239::-;40962:34;40958:1;40950:6;40946:14;40939:58;41031:22;41026:2;41018:6;41014:15;41007:47;40822:239;:::o;41067:240::-;41207:34;41203:1;41195:6;41191:14;41184:58;41276:23;41271:2;41263:6;41259:15;41252:48;41067:240;:::o;41313:297::-;41453:34;41449:1;41441:6;41437:14;41430:58;41522:34;41517:2;41509:6;41505:15;41498:59;41591:11;41586:2;41578:6;41574:15;41567:36;41313:297;:::o;41616:227::-;41756:34;41752:1;41744:6;41740:14;41733:58;41825:10;41820:2;41812:6;41808:15;41801:35;41616:227;:::o;41849:182::-;41989:34;41985:1;41977:6;41973:14;41966:58;41849:182;:::o;42037:229::-;42177:34;42173:1;42165:6;42161:14;42154:58;42246:12;42241:2;42233:6;42229:15;42222:37;42037:229;:::o;42272:224::-;42412:34;42408:1;42400:6;42396:14;42389:58;42481:7;42476:2;42468:6;42464:15;42457:32;42272:224;:::o;42502:182::-;42642:34;42638:1;42630:6;42626:14;42619:58;42502:182;:::o;42690:114::-;;:::o;42810:223::-;42950:34;42946:1;42938:6;42934:14;42927:58;43019:6;43014:2;43006:6;43002:15;42995:31;42810:223;:::o;43039:169::-;43179:21;43175:1;43167:6;43163:14;43156:45;43039:169;:::o;43214:179::-;43354:31;43350:1;43342:6;43338:14;43331:55;43214:179;:::o;43399:224::-;43539:34;43535:1;43527:6;43523:14;43516:58;43608:7;43603:2;43595:6;43591:15;43584:32;43399:224;:::o;43629:234::-;43769:34;43765:1;43757:6;43753:14;43746:58;43838:17;43833:2;43825:6;43821:15;43814:42;43629:234;:::o;43869:122::-;43942:24;43960:5;43942:24;:::i;:::-;43935:5;43932:35;43922:63;;43981:1;43978;43971:12;43922:63;43869:122;:::o;43997:116::-;44067:21;44082:5;44067:21;:::i;:::-;44060:5;44057:32;44047:60;;44103:1;44100;44093:12;44047:60;43997:116;:::o;44119:122::-;44192:24;44210:5;44192:24;:::i;:::-;44185:5;44182:35;44172:63;;44231:1;44228;44221:12;44172:63;44119:122;:::o

Swarm Source

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