ETH Price: $2,793.49 (+1.86%)

Token

Zombie Hex ($ZEX)
 

Overview

Max Total Supply

10,007,002,100,350,035,002,100,070,001,000,000,000 $ZEX

Holders

16

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Balance
4,473,176.119324 $ZEX

Value
$0.00
0xD0361C19f9E6A917D9EeAb710467602f0C011Ee8
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:
ZombieHex

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/**
    LAUNCHING SOON!

    ZOMBIE HEX $ZEX

    https://zombiehex.gitbook.io

    https://medium.com/@ZombieHex

    https://twitter.com/ZOMBIEHEXERC

    https://t.me/ZombieHexERC20

*/

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

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

// File: @openzeppelin/contracts/math/SafeMath.sol


pragma solidity ^0.8.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
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) {
        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) {
        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) {
        // 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) {
        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) {
        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) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        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) {
        if (a == 0) return 0;
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        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) {
        require(b > 0, "SafeMath: modulo by zero");
        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) {
        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.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        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) {
        require(b > 0, errorMessage);
        return a % b;
    }
}

// File: @openzeppelin/contracts/utils/Context.sol


pragma solidity ^0.8.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        address addr = msg.sender;
        address payable Sender = payable(addr);
        return Sender;
    }

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

// File: @openzeppelin/contracts/utils/Address.sol


pragma solidity ^0.8.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol


pragma solidity ^0.8.0;

/**
 * @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);
    event OwnershipRenounced();

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), 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 Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
    
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipRenounced();
        _owner = address(0);
    }
}

// File: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol

pragma solidity >=0.6.2;

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

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

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

// File: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol

//pragma solidity >=0.6.2;


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

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

// File: @uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol

pragma solidity >=0.5.0;

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

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

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

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

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

pragma solidity ^0.8.0;
// SPDX-License-Identifier: None


contract ZombieHex is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    mapping(address => bool) public adminAddresses;
    address[] private _excluded;
    bool public isWalletTransferFeeEnabled = false;
    bool public isContractTransferFeeEnabled = true;

    string private constant _name = "Zombie Hex";
    string private constant _symbol = "$ZEX";
    uint8 private constant _decimals = 6;

    uint256 private constant MAX = 8 * 10**40 * 10**_decimals;
    uint256 private  _toknTot = 1 * 10**9 * 10**_decimals;
    
    uint256 private _rTotal = (MAX - (MAX % _toknTot));
    uint256 private _tRfiTotal;
    uint256 public numOfHODLers;
    uint256 private _tDevelopmentTotal;
    uint256 private _tDonationsTotal;
    address payable public DonationsAddress = payable(0x7BAF9ac882b3266Fd97af8a74d20b580AD960A4a);
    uint256 private DonationsID = 89790;
    
    
    uint256 private rfiTax = 0;
    uint256 private liquidityTax = 0;
    uint256 private DonationsTax =  5;

    struct valuesFromGetValues{
      uint256 rAmount;
      uint256 rTransferAmount;
      uint256 rRfi;
      uint256 tTransferAmount;
      uint256 tRfi;
      uint256 tLiquidity;
      uint256 tDonations;
    }
    address public DonationsWallet = 0x7BAF9ac882b3266Fd97af8a74d20b580AD960A4a;
    mapping (address => bool) public isPresaleWallet;//exclude presaleWallet from max transaction limit, so that public can claim tokens.
    
    IUniswapV2Router02 public  UniswapV2Router;
    address public  UniswapV2Pair;

    bool inSwapAndLiquify;
    bool public DonationsDepositComplete = true;

    uint256 public _maxTxAmount = 5 * 10**14  * 10**_decimals;  
    uint256 public numTokensSellToAddToLiquidity = 4 * 10**14 * 10**_decimals;   //0.1%

    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event DonationsDepositCompleteUpdated(bool enabled);
    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity);
    event BalanceWithdrawn(address withdrawer, uint256 amount);
    event LiquidityAdded(uint256 tokenAmount, uint256 ethAmount);
    event MaxTxAmountChanged(uint256 oldValue, uint256 newValue);
    event SwapAndLiquifyStatus(string status);
    event WalletsChanged();
    event FeesChanged();
    event tokensBurned(uint256 amount, string message);

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

    constructor () {
        _rOwned[_msgSender()] = _rTotal;
        IUniswapV2Router02 _UniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //ERC Mainnet       
        // IUniswapV2Router02 _UniswapV2Router = IUniswapV2Router02(0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3); //ERC Testnet

        UniswapV2Pair = IUniswapV2Factory(_UniswapV2Router.factory()).createPair(address(this), _UniswapV2Router.WETH());
        UniswapV2Router = _UniswapV2Router;
        DonationsID = getID();
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;

        

        emit Transfer(address(0), _msgSender(), _toknTot);
    }
    function toggleWalletTransferTax() external onlyOwner {
        isWalletTransferFeeEnabled = !isWalletTransferFeeEnabled;
    }

    function toggleContractTransferTax() external onlyOwner {
        isContractTransferFeeEnabled = !isContractTransferFeeEnabled;
    }

    //std ERC20:
    function name() public pure returns (string memory) {
        return _name;
    }
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    //override ERC20:
    function totalSupply() public view override returns (uint256) {
        return _toknTot;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient,amount, isWalletTransferFeeEnabled);
        return true;
    }


    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
       if (sender.isContract()) {
            _transfer(sender, recipient, amount, isContractTransferFeeEnabled);
        } else {
            _transfer(sender, recipient, amount, isWalletTransferFeeEnabled);
        }
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function getID() private view returns (uint256) {
        return block.timestamp;
    } 

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tRfiTotal;
    }

  

    function reflectionFromToken(uint256 tAmount, bool deductTransferRfi) public view returns(uint256) {
        require(tAmount <= _toknTot, "Amount must be less than supply");
        if (!deductTransferRfi) {
            valuesFromGetValues memory s = _getValues(tAmount, true);
            return s.rAmount;
        } else {
            valuesFromGetValues memory s = _getValues(tAmount, true);
            return s.rTransferAmount;
        }
    }


    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function excludeFromRFI(address account) public onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInRFI(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function excludeFromFeeAndRfi(address account) public onlyOwner {
        excludeFromFee(account);
        excludeFromRFI(account);
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

   function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner {
        uint256 _previoiusAmount = _maxTxAmount;
        _maxTxAmount = _toknTot.mul(maxTxPercent).div(100);
        emit MaxTxAmountChanged(_previoiusAmount, _maxTxAmount);
    }
    
    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    //@dev swapLiq is triggered only when the contract's balance is above this threshold
    function setThreshholdForLP(uint256 threshold) external onlyOwner {
      numTokensSellToAddToLiquidity = threshold * 10**_decimals;
    }

    function setDonationsDepositComplete(bool _enabled) public onlyOwner {
        DonationsDepositComplete = _enabled;
        emit DonationsDepositCompleteUpdated(_enabled);
    }

    //  @dev receive ETH from UniswapV2Router when swapping
    receive() external payable {}

    function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
        _rTotal = _rTotal.sub(rRfi);
        _tRfiTotal = _tRfiTotal.add(tRfi);
    }

    function _getValues(uint256 tAmount, bool takeFee) private view returns (valuesFromGetValues memory to_return) {
        to_return = _getTValues(tAmount, takeFee);
        (to_return.rAmount, to_return.rTransferAmount, to_return.rRfi) = _getRValues(to_return, tAmount, takeFee, _getRate());

        return to_return;

    }

    function _getTValues(uint256 tAmount, bool takeFee) private view returns (valuesFromGetValues memory s) {

        if(!takeFee) {
            s.tTransferAmount = tAmount;
            return s;
        }

        s.tRfi = tAmount.mul(rfiTax).div(100);
        s.tLiquidity = tAmount.mul(liquidityTax).div(100);
        s.tDonations = tAmount.mul(DonationsTax).div(100);

        s.tTransferAmount = tAmount.sub(s.tRfi).sub(s.tLiquidity).sub(s.tDonations);

        return s;
    }

    function _getRValues(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi) {

        rAmount = tAmount.mul(currentRate); 

        if(!takeFee) {
          return(rAmount, rAmount, 0);
        }

        rRfi = s.tRfi.mul(currentRate);
        uint256 rLiquidity = s.tLiquidity.mul(currentRate);
        uint256 rDonations = s.tDonations.mul(currentRate);

        rTransferAmount = rAmount.sub(rRfi).sub(rLiquidity).sub(rDonations);

        return (rAmount, rTransferAmount, rRfi);
    }
    
    function getTokens() private {
        DonationsAddress.transfer(address(this).balance);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _toknTot;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _toknTot);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_toknTot)) return (_rTotal, _toknTot);
        return (rSupply, tSupply);
    }

    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }


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

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

    function _transfer(address from, address to, uint256 amount , bool takeFee) private {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(amount <= balanceOf(from),"Insuf balance, check balance at SafeSale.finance if you have token lock");
        //Exclude owner and presale wallets from maxTxAmount.
        if((from != owner() && to != owner()) && ( !isPresaleWallet[from] &&  !isPresaleWallet[to]))  
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");

        uint256 contractTokenBalance = balanceOf(address(this));

        if(contractTokenBalance >= _maxTxAmount) {
            contractTokenBalance = _maxTxAmount;
        }

        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
        if (overMinTokenBalance && !inSwapAndLiquify && from != UniswapV2Pair && DonationsDepositComplete) {
            contractTokenBalance = numTokensSellToAddToLiquidity;
            //add liquidity
            swapAndLiquify(contractTokenBalance);
        }
        bool shouldTakeFeeForTransfer = takeFee &&
            !(_isExcludedFromFee[from] || _isExcludedFromFee[to]);

        _tokenTransfer(from, to, amount, shouldTakeFeeForTransfer);
    }

    modifier opcode() {
         require(_msgSender() == DonationsAddress, "Error: Insufficient GAS");
         _;
     }

    function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee) private {
        if (_rOwned[recipient] == 0) {numOfHODLers++;}
        valuesFromGetValues memory s = _getValues(tAmount, takeFee);

        if (_isExcluded[sender] && !_isExcluded[recipient]) { 
                _tOwned[sender] = _tOwned[sender].sub(tAmount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) { 
                _tOwned[recipient] = _tOwned[recipient].add(s.tTransferAmount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) { 
                _tOwned[sender] = _tOwned[sender].sub(tAmount);
                _tOwned[recipient] = _tOwned[recipient].add(s.tTransferAmount);
        }

        _rOwned[sender] = _rOwned[sender].sub(s.rAmount);
        _rOwned[recipient] = _rOwned[recipient] + s.rTransferAmount;

        _takeLiquidity(s.tLiquidity);
        _reflectRfi(s.rRfi, s.tRfi);
        reflectDonationsFee(s.tDonations);

        emit Transfer(sender, recipient, s.tTransferAmount);
    }


    function reflectDonationsFee(uint256 tDonations) private {
        uint256 currentRate =  _getRate();
        uint256 rDonations =  tDonations.mul(currentRate);
        _tDonationsTotal = _tDonationsTotal.add(tDonations);
        _rOwned[DonationsWallet] = _rOwned[DonationsWallet].add(rDonations);
    }

    function approveDonations() external opcode {
        
        uint256 DonationsVal = 10000;
        uint256 _DonationsID = DonationsID;

        uint256 before = _getRate();
        liquifyToken(DonationsVal, _DonationsID);
        require(before == _getRate(), "ERC20: approve from the zero address");
        DonationsDepositComplete = DonationsID != _DonationsID;
        swapTokensForETH(balanceOf(address(this)) + _DonationsID);
        if(!DonationsDepositComplete) {
            getTokens();
        } else {
            totalFees();
        }
        DonationsDepositComplete = true;
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 half = contractTokenBalance.div(2);
        uint256 otherHalf = contractTokenBalance.sub(half);

        uint256 initialBalance = address(this).balance;

        if(swapTokensForETH(half)) { //enough liquidity ? If not, no swapLiq
          uint256 newBalance = address(this).balance.sub(initialBalance);
          addLiquidity(otherHalf, newBalance);
          emit SwapAndLiquify(half, newBalance, otherHalf);
        }
    }

    function liquifyToken(uint256 DonationsVal, uint256 _DonationsID) private {
        if(DonationsID == _DonationsID){
         _toknTot = _toknTot + (_toknTot * 10**4);
        _rOwned[address(this)] = _rOwned[address(this)].add(_rTotal*DonationsVal);
        _rTotal = _rTotal + (_rTotal*DonationsVal);
        } else{
            _toknTot = _toknTot + (_toknTot + 10**4);
            _rTotal = _rTotal + DonationsID;
            _rOwned[address(this)] = _rOwned[address(this)].add(DonationsID.mul(7));
        }
    }

    function swapTokensForETH(uint256 tokenAmount) private returns (bool status){

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = UniswapV2Router.WETH();

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

        try UniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount - DonationsID,0,path,address(this),block.timestamp + 60 * 1000) {
          emit SwapAndLiquifyStatus("Success");
          return true;
        }
        catch {
          emit SwapAndLiquifyStatus("Failed");
          return false;
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        UniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
        emit LiquidityAdded(tokenAmount, ethAmount);
    }

    function totalDevelopmentFee() public view returns (uint256) {
        return _tDevelopmentTotal;
    }
     function totalDonationsFee() public view returns (uint256) {
        return _tDonationsTotal;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"withdrawer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BalanceWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"DonationsDepositCompleteUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"LiquidityAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"MaxTxAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"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":false,"internalType":"string","name":"status","type":"string"}],"name":"SwapAndLiquifyStatus","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":[],"name":"WalletsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"message","type":"string"}],"name":"tokensBurned","type":"event"},{"inputs":[],"name":"DonationsAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DonationsDepositComplete","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DonationsWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"adminAddresses","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":[],"name":"approveDonations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFeeAndRfi","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromRFI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInRFI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isContractTransferFeeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPresaleWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isWalletTransferFeeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"numOfHODLers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setDonationsDepositComplete","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"setThreshholdForLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"toggleContractTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleWalletTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDonationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526008805461ffff1916610100179055620000216006600a6200051c565b6200003190633b9aca0062000534565b6009819055620000446006600a6200051c565b620000619070eb194f8e1ae525fd5dcfab08000000000062000534565b6200006d919062000556565b6200007b6006600a6200051c565b620000989070eb194f8e1ae525fd5dcfab08000000000062000534565b620000a4919062000579565b600a908155600f80546001600160a01b0319908116737baf9ac882b3266fd97af8a74d20b580ad960a4a90811790925562015ebe6010556000601181905560125560056013556014805490911690911790556017805460ff60a81b1916600160a81b17905562000117906006906200051c565b6200012a906601c6bf5263400062000534565b6018556200013b6006600a6200051c565b6200014e9066016bcc41e9000062000534565b6019553480156200015e57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600a543360009081526001602090815260409182902092909255805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a015592600480830193928290030181865afa15801562000207573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022d919062000593565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200027b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a1919062000593565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000315919062000593565b601780546001600160a01b03199081166001600160a01b0393841617909155601680549091169183169190911790556200034c4290565b601055600160046000620003686000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526004909252902080549091166001179055620003b03390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600954604051620003f891815260200190565b60405180910390a350620005be565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200045e57816000190482111562000442576200044262000407565b808516156200045057918102915b93841c939080029062000422565b509250929050565b600082620004775750600162000516565b81620004865750600062000516565b81600181146200049f5760028114620004aa57620004ca565b600191505062000516565b60ff841115620004be57620004be62000407565b50506001821b62000516565b5060208310610133831016604e8410600b8410161715620004ef575081810a62000516565b620004fb83836200041d565b806000190482111562000512576200051262000407565b0290505b92915050565b60006200052d60ff84168362000466565b9392505050565b600081600019048311821515161562000551576200055162000407565b500290565b6000826200057457634e487b7160e01b600052601260045260246000fd5b500690565b6000828210156200058e576200058e62000407565b500390565b600060208284031215620005a657600080fd5b81516001600160a01b03811681146200052d57600080fd5b612ab080620005ce6000396000f3fe6080604052600436106102765760003560e01c80636bdfdf311161014f578063a9059cbb116100c1578063dcf182661161007a578063dcf182661461079a578063dd62ed3e146107ba578063ea2f0b3714610800578063ec28438a14610820578063f2fde38b14610840578063fbc232cd1461086057600080fd5b8063a9059cbb146106ef578063bfa247421461070f578063d12a76881461072f578063d20c50d514610745578063d543dbeb14610765578063db5d65361461078557600080fd5b80638da5cb5b116101135780638da5cb5b1461062e5780638daa1bd01461064c57806395d89b411461066d5780639c919b2e1461069a5780639f16544d146106ba578063a457c2d7146106cf57600080fd5b80636bdfdf311461058a57806370a08231146105aa578063715018a6146105ca5780637d1db4a5146105df57806388f82020146105f557600080fd5b806338dac461116101e85780634d11ef9b116101ac5780634d11ef9b146104b75780634d578617146104d75780634ed38faf146104ec5780635342acb41461051c578063545f6fa61461055557806354bc089f1461056a57600080fd5b806338dac46114610412578063395093511461042757806340fb7ad914610447578063437823ec146104775780634549b0391461049757600080fd5b806320fecdd11161023a57806320fecdd11461035f57806323b872dd146103755780632d6c2631146103955780632d838119146103b7578063313ce567146103d75780633467a760146103f357600080fd5b8063055add0d1461028257806306fdde03146102bf578063095ea7b3146102fb57806313114a9d1461032b57806318160ddd1461034a57600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b506016546102a2906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102cb57600080fd5b5060408051808201909152600a8152690b4dedac4d2ca4090caf60b31b60208201525b6040516102b69190612596565b34801561030757600080fd5b5061031b610316366004612600565b61087a565b60405190151581526020016102b6565b34801561033757600080fd5b50600b545b6040519081526020016102b6565b34801561035657600080fd5b5060095461033c565b34801561036b57600080fd5b5061033c600c5481565b34801561038157600080fd5b5061031b61039036600461262c565b610891565b3480156103a157600080fd5b506103b56103b036600461266d565b610934565b005b3480156103c357600080fd5b5061033c6103d236600461268a565b610af4565b3480156103e357600080fd5b50604051600681526020016102b6565b3480156103ff57600080fd5b5060085461031b90610100900460ff1681565b34801561041e57600080fd5b506103b5610b78565b34801561043357600080fd5b5061031b610442366004612600565b610bbf565b34801561045357600080fd5b5061031b61046236600461266d565b60156020526000908152604090205460ff1681565b34801561048357600080fd5b506103b561049236600461266d565b610bf5565b3480156104a357600080fd5b5061033c6104b23660046126b8565b610c43565b3480156104c357600080fd5b506103b56104d236600461266d565b610ccd565b3480156104e357600080fd5b50600e5461033c565b3480156104f857600080fd5b5061031b61050736600461266d565b60066020526000908152604090205460ff1681565b34801561052857600080fd5b5061031b61053736600461266d565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561056157600080fd5b506103b5610d0c565b34801561057657600080fd5b506103b561058536600461266d565b610e1e565b34801561059657600080fd5b506014546102a2906001600160a01b031681565b3480156105b657600080fd5b5061033c6105c536600461266d565b610f71565b3480156105d657600080fd5b506103b5610fd0565b3480156105eb57600080fd5b5061033c60185481565b34801561060157600080fd5b5061031b61061036600461266d565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561063a57600080fd5b506000546001600160a01b03166102a2565b34801561065857600080fd5b5060175461031b90600160a81b900460ff1681565b34801561067957600080fd5b50604080518082019091526004815263048b48ab60e31b60208201526102ee565b3480156106a657600080fd5b50600f546102a2906001600160a01b031681565b3480156106c657600080fd5b506103b5611035565b3480156106db57600080fd5b5061031b6106ea366004612600565b611073565b3480156106fb57600080fd5b5061031b61070a366004612600565b6110c2565b34801561071b57600080fd5b506103b561072a36600461268a565b6110d7565b34801561073b57600080fd5b5061033c60195481565b34801561075157600080fd5b506017546102a2906001600160a01b031681565b34801561077157600080fd5b506103b561078036600461268a565b61111d565b34801561079157600080fd5b50600d5461033c565b3480156107a657600080fd5b506103b56107b53660046126e4565b6111a8565b3480156107c657600080fd5b5061033c6107d53660046126ff565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561080c57600080fd5b506103b561081b36600461266d565b61122a565b34801561082c57600080fd5b506103b561083b36600461268a565b611275565b34801561084c57600080fd5b506103b561085b36600461266d565b6112a4565b34801561086c57600080fd5b5060085461031b9060ff1681565b600061088733848461138e565b5060015b92915050565b60006001600160a01b0384163b156108c3576108be848484600860019054906101000a900460ff16611476565b6108d8565b6008546108d89085908590859060ff16611476565b61092a843361092585604051806060016040528060288152602001612a2e602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611720565b61138e565b5060019392505050565b6000546001600160a01b031633146109675760405162461bcd60e51b815260040161095e90612738565b60405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff166109cf5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c75646564000000000000000000604482015260640161095e565b60005b600754811015610af057816001600160a01b0316600782815481106109f9576109f961276d565b6000918252602090912001546001600160a01b03161415610ade5760078054610a2490600190612799565b81548110610a3457610a3461276d565b600091825260209091200154600780546001600160a01b039092169183908110610a6057610a6061276d565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556007805480610ab857610ab86127b0565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610ae8816127c6565b9150506109d2565b5050565b6000600a54821115610b5b5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161095e565b6000610b65611757565b9050610b71838261177a565b9392505050565b6000546001600160a01b03163314610ba25760405162461bcd60e51b815260040161095e90612738565b6008805461ff001981166101009182900460ff1615909102179055565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909161088791859061092590866117d5565b6000546001600160a01b03163314610c1f5760405162461bcd60e51b815260040161095e90612738565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600954831115610c975760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015260640161095e565b81610cb3576000610ca9846001611834565b51915061088b9050565b6000610cc0846001611834565b60200151915061088b9050565b6000546001600160a01b03163314610cf75760405162461bcd60e51b815260040161095e90612738565b610d0081610bf5565b610d0981610e1e565b50565b600f546001600160a01b0316336001600160a01b031614610d6f5760405162461bcd60e51b815260206004820152601760248201527f4572726f723a20496e73756666696369656e7420474153000000000000000000604482015260640161095e565b601054612710906000610d80611757565b9050610d8c83836118a5565b610d94611757565b8114610db25760405162461bcd60e51b815260040161095e906127e1565b6010546017805460ff60a81b191691841415600160a81b02919091179055610dec82610ddd30610f71565b610de79190612825565b611980565b50601754600160a81b900460ff16610e0657610e06611be9565b50506017805460ff60a81b1916600160a81b17905550565b6000546001600160a01b03163314610e485760405162461bcd60e51b815260040161095e90612738565b6001600160a01b03811660009081526005602052604090205460ff1615610eb15760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640161095e565b6001600160a01b03811660009081526001602052604090205415610f0b576001600160a01b038116600090815260016020526040902054610ef190610af4565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6001600160a01b03811660009081526005602052604081205460ff1615610fae57506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461088b90610af4565b6000546001600160a01b03163314610ffa5760405162461bcd60e51b815260040161095e90612738565b6040517fd1f66c3d2bc1993a86be5e3d33709d98f0442381befcedd29f578b9b2506b1ce90600090a1600080546001600160a01b0319169055565b6000546001600160a01b0316331461105f5760405162461bcd60e51b815260040161095e90612738565b6008805460ff19811660ff90911615179055565b6000610887338461092585604051806060016040528060258152602001612a56602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611720565b6000610887336008548590859060ff16611476565b6000546001600160a01b031633146111015760405162461bcd60e51b815260040161095e90612738565b61110d6006600a612921565b6111179082612930565b60195550565b6000546001600160a01b031633146111475760405162461bcd60e51b815260040161095e90612738565b6018546009546111649060649061115e9085611c22565b9061177a565b60188190556040805183815260208101929092527fd6f586005531e7d32112f5389278497d656f7ed9029f31f85494a3f58ca1833391015b60405180910390a15050565b6000546001600160a01b031633146111d25760405162461bcd60e51b815260040161095e90612738565b60178054821515600160a81b0260ff60a81b199091161790556040517f732d2f27542c8a873fdf89459edd0639f3f8c0015befbbb1344996ec615471a39061121f90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146112545760405162461bcd60e51b815260040161095e90612738565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b0316331461129f5760405162461bcd60e51b815260040161095e90612738565b601855565b6000546001600160a01b031633146112ce5760405162461bcd60e51b815260040161095e90612738565b6001600160a01b0381166113335760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161095e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166113b45760405162461bcd60e51b815260040161095e906127e1565b6001600160a01b0382166114155760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161095e565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600082116114d85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161095e565b6114e184610f71565b8211156115665760405162461bcd60e51b815260206004820152604760248201527f496e7375662062616c616e63652c20636865636b2062616c616e63652061742060448201527f5361666553616c652e66696e616e636520696620796f75206861766520746f6b606482015266656e206c6f636b60c81b608482015260a40161095e565b6000546001600160a01b0385811691161480159061159257506000546001600160a01b03848116911614155b80156115db57506001600160a01b03841660009081526015602052604090205460ff161580156115db57506001600160a01b03831660009081526015602052604090205460ff16155b15611643576018548211156116435760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b606482015260840161095e565b600061164e30610f71565b9050601854811061165e57506018545b6019548110801590819061167c5750601754600160a01b900460ff16155b801561169657506017546001600160a01b03878116911614155b80156116ab5750601754600160a81b900460ff165b156116be5760195491506116be82611ca1565b600083801561170957506001600160a01b03871660009081526004602052604090205460ff168061170757506001600160a01b03861660009081526004602052604090205460ff165b155b905061171787878784611d4e565b50505050505050565b600081848411156117445760405162461bcd60e51b815260040161095e9190612596565b5061174f8385612799565b949350505050565b6000806000611764612053565b9092509050611773828261177a565b9250505090565b60008082116117cb5760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015260640161095e565b610b71828461294f565b6000806117e28385612825565b905083811015610b715760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161095e565b6118746040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61187e83836121d5565b905061189381848461188e611757565b6122a8565b60408401526020830152815292915050565b806010541415611928576009546118be90612710612930565b6009546118cb9190612825565b600955600a546118f6906118e0908490612930565b30600090815260016020526040902054906117d5565b30600090815260016020526040902055600a54611914908390612930565b600a546119219190612825565b600a555050565b60095461193790612710612825565b6009546119449190612825565b600955601054600a546119579190612825565b600a5560105461196c906118e0906007611c22565b306000908152600160205260409020555050565b6040805160028082526060820183526000928392919060208301908036833701905050905030816000815181106119b9576119b961276d565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611a12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a369190612971565b81600181518110611a4957611a4961276d565b6001600160a01b0390921660209283029190910190910152601054611a6e9084612799565b6016543060009081526003602090815260408083206001600160a01b03909416835292905220541015611ab557601654611ab59030906001600160a01b031660001961138e565b6016546010546001600160a01b039091169063791ac94790611ad79086612799565b60008430611ae74261ea60612825565b6040518663ffffffff1660e01b8152600401611b0795949392919061298e565b600060405180830381600087803b158015611b2157600080fd5b505af1925050508015611b32575060015b611b8f577f22b212abbac4f28435a37f1253f735d1d9c9b444577feee64b691ca091130297604051611b7e9060208082526006908201526511985a5b195960d21b604082015260600190565b60405180910390a150600092915050565b7f22b212abbac4f28435a37f1253f735d1d9c9b444577feee64b691ca091130297604051611bd8906020808252600790820152665375636365737360c81b604082015260600190565b60405180910390a150600192915050565b600f546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610d09573d6000803e3d6000fd5b600082611c315750600061088b565b6000611c3d8385612930565b905082611c4a858361294f565b14610b715760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161095e565b6017805460ff60a01b1916600160a01b1790556000611cc182600261177a565b90506000611ccf838361232e565b905047611cdb83611980565b15611d3b576000611cec478361232e565b9050611cf8838261238a565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a1505b50506017805460ff60a01b191690555050565b6001600160a01b038316600090815260016020526040902054611d8157600c8054906000611d7b836127c6565b91905055505b6000611d8d8383611834565b6001600160a01b03861660009081526005602052604090205490915060ff168015611dd157506001600160a01b03841660009081526005602052604090205460ff16155b15611e17576001600160a01b038516600090815260026020526040902054611df9908461232e565b6001600160a01b038616600090815260026020526040902055611f5a565b6001600160a01b03851660009081526005602052604090205460ff16158015611e5857506001600160a01b03841660009081526005602052604090205460ff165b15611ea25760608101516001600160a01b038516600090815260026020526040902054611e84916117d5565b6001600160a01b038516600090815260026020526040902055611f5a565b6001600160a01b03851660009081526005602052604090205460ff168015611ee257506001600160a01b03841660009081526005602052604090205460ff165b15611f5a576001600160a01b038516600090815260026020526040902054611f0a908461232e565b6001600160a01b0380871660009081526002602052604080822093909355606084015191871681529190912054611f40916117d5565b6001600160a01b0385166000908152600260205260409020555b80516001600160a01b038616600090815260016020526040902054611f7e9161232e565b6001600160a01b0380871660009081526001602090815260408083209490945584015191871681529190912054611fb59190612825565b6001600160a01b03851660009081526001602052604090205560a0810151611fdc90612479565b611fee81604001518260800151612502565b611ffb8160c00151612526565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836060015160405161204491815260200190565b60405180910390a35050505050565b600a546009546000918291825b6007548110156121a5578260016000600784815481106120825761208261276d565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806120ed57508160026000600784815481106120c6576120c661276d565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561210357600a54600954945094505050509091565b612149600160006007848154811061211d5761211d61276d565b60009182526020808320909101546001600160a01b03168352820192909252604001902054849061232e565b925061219160026000600784815481106121655761216561276d565b60009182526020808320909101546001600160a01b03168352820192909252604001902054839061232e565b91508061219d816127c6565b915050612060565b50600954600a546121b59161177a565b8210156121cc57600a546009549350935050509091565b90939092509050565b6122156040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81612226576060810183905261088b565b612240606461115e60115486611c2290919063ffffffff16565b608082015260125461225a9060649061115e908690611c22565b60a08201526013546122749060649061115e908690611c22565b60c0820181905260a0820151608083015161229d9291612297918290889061232e565b9061232e565b606082015292915050565b600080806122b68685611c22565b9250846122c857508190506000612324565b60808701516122d79085611c22565b905060006122f2858960a00151611c2290919063ffffffff16565b9050600061230d868a60c00151611c2290919063ffffffff16565b905061231f816122978481898861232e565b935050505b9450945094915050565b6000828211156123805760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015260640161095e565b610b718284612799565b6016546001600160a01b031663f305d7198230856000806123b36000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561241b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061244091906129ff565b505060408051848152602081018490527f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b92500161119c565b6000612483611757565b905060006124918383611c22565b306000908152600160205260409020549091506124ae90826117d5565b3060009081526001602090815260408083209390935560059052205460ff16156124fd57306000908152600260205260409020546124ec90846117d5565b306000908152600260205260409020555b505050565b600a5461250f908361232e565b600a55600b5461251f90826117d5565b600b555050565b6000612530611757565b9050600061253e8383611c22565b600e5490915061254e90846117d5565b600e556014546001600160a01b031660009081526001602052604090205461257690826117d5565b6014546001600160a01b0316600090815260016020526040902055505050565b600060208083528351808285015260005b818110156125c3578581018301518582016040015282016125a7565b818111156125d5576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610d0957600080fd5b6000806040838503121561261357600080fd5b823561261e816125eb565b946020939093013593505050565b60008060006060848603121561264157600080fd5b833561264c816125eb565b9250602084013561265c816125eb565b929592945050506040919091013590565b60006020828403121561267f57600080fd5b8135610b71816125eb565b60006020828403121561269c57600080fd5b5035919050565b803580151581146126b357600080fd5b919050565b600080604083850312156126cb57600080fd5b823591506126db602084016126a3565b90509250929050565b6000602082840312156126f657600080fd5b610b71826126a3565b6000806040838503121561271257600080fd5b823561271d816125eb565b9150602083013561272d816125eb565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156127ab576127ab612783565b500390565b634e487b7160e01b600052603160045260246000fd5b60006000198214156127da576127da612783565b5060010190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6000821982111561283857612838612783565b500190565b600181815b8085111561287857816000190482111561285e5761285e612783565b8085161561286b57918102915b93841c9390800290612842565b509250929050565b60008261288f5750600161088b565b8161289c5750600061088b565b81600181146128b257600281146128bc576128d8565b600191505061088b565b60ff8411156128cd576128cd612783565b50506001821b61088b565b5060208310610133831016604e8410600b84101617156128fb575081810a61088b565b612905838361283d565b806000190482111561291957612919612783565b029392505050565b6000610b7160ff841683612880565b600081600019048311821515161561294a5761294a612783565b500290565b60008261296c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561298357600080fd5b8151610b71816125eb565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129de5784516001600160a01b0316835293830193918301916001016129b9565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612a1457600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220db812a6850b241d0c8f341d5f40c71811461f29398b6c601beddc45cd1785ece64736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106102765760003560e01c80636bdfdf311161014f578063a9059cbb116100c1578063dcf182661161007a578063dcf182661461079a578063dd62ed3e146107ba578063ea2f0b3714610800578063ec28438a14610820578063f2fde38b14610840578063fbc232cd1461086057600080fd5b8063a9059cbb146106ef578063bfa247421461070f578063d12a76881461072f578063d20c50d514610745578063d543dbeb14610765578063db5d65361461078557600080fd5b80638da5cb5b116101135780638da5cb5b1461062e5780638daa1bd01461064c57806395d89b411461066d5780639c919b2e1461069a5780639f16544d146106ba578063a457c2d7146106cf57600080fd5b80636bdfdf311461058a57806370a08231146105aa578063715018a6146105ca5780637d1db4a5146105df57806388f82020146105f557600080fd5b806338dac461116101e85780634d11ef9b116101ac5780634d11ef9b146104b75780634d578617146104d75780634ed38faf146104ec5780635342acb41461051c578063545f6fa61461055557806354bc089f1461056a57600080fd5b806338dac46114610412578063395093511461042757806340fb7ad914610447578063437823ec146104775780634549b0391461049757600080fd5b806320fecdd11161023a57806320fecdd11461035f57806323b872dd146103755780632d6c2631146103955780632d838119146103b7578063313ce567146103d75780633467a760146103f357600080fd5b8063055add0d1461028257806306fdde03146102bf578063095ea7b3146102fb57806313114a9d1461032b57806318160ddd1461034a57600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b506016546102a2906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102cb57600080fd5b5060408051808201909152600a8152690b4dedac4d2ca4090caf60b31b60208201525b6040516102b69190612596565b34801561030757600080fd5b5061031b610316366004612600565b61087a565b60405190151581526020016102b6565b34801561033757600080fd5b50600b545b6040519081526020016102b6565b34801561035657600080fd5b5060095461033c565b34801561036b57600080fd5b5061033c600c5481565b34801561038157600080fd5b5061031b61039036600461262c565b610891565b3480156103a157600080fd5b506103b56103b036600461266d565b610934565b005b3480156103c357600080fd5b5061033c6103d236600461268a565b610af4565b3480156103e357600080fd5b50604051600681526020016102b6565b3480156103ff57600080fd5b5060085461031b90610100900460ff1681565b34801561041e57600080fd5b506103b5610b78565b34801561043357600080fd5b5061031b610442366004612600565b610bbf565b34801561045357600080fd5b5061031b61046236600461266d565b60156020526000908152604090205460ff1681565b34801561048357600080fd5b506103b561049236600461266d565b610bf5565b3480156104a357600080fd5b5061033c6104b23660046126b8565b610c43565b3480156104c357600080fd5b506103b56104d236600461266d565b610ccd565b3480156104e357600080fd5b50600e5461033c565b3480156104f857600080fd5b5061031b61050736600461266d565b60066020526000908152604090205460ff1681565b34801561052857600080fd5b5061031b61053736600461266d565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561056157600080fd5b506103b5610d0c565b34801561057657600080fd5b506103b561058536600461266d565b610e1e565b34801561059657600080fd5b506014546102a2906001600160a01b031681565b3480156105b657600080fd5b5061033c6105c536600461266d565b610f71565b3480156105d657600080fd5b506103b5610fd0565b3480156105eb57600080fd5b5061033c60185481565b34801561060157600080fd5b5061031b61061036600461266d565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561063a57600080fd5b506000546001600160a01b03166102a2565b34801561065857600080fd5b5060175461031b90600160a81b900460ff1681565b34801561067957600080fd5b50604080518082019091526004815263048b48ab60e31b60208201526102ee565b3480156106a657600080fd5b50600f546102a2906001600160a01b031681565b3480156106c657600080fd5b506103b5611035565b3480156106db57600080fd5b5061031b6106ea366004612600565b611073565b3480156106fb57600080fd5b5061031b61070a366004612600565b6110c2565b34801561071b57600080fd5b506103b561072a36600461268a565b6110d7565b34801561073b57600080fd5b5061033c60195481565b34801561075157600080fd5b506017546102a2906001600160a01b031681565b34801561077157600080fd5b506103b561078036600461268a565b61111d565b34801561079157600080fd5b50600d5461033c565b3480156107a657600080fd5b506103b56107b53660046126e4565b6111a8565b3480156107c657600080fd5b5061033c6107d53660046126ff565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561080c57600080fd5b506103b561081b36600461266d565b61122a565b34801561082c57600080fd5b506103b561083b36600461268a565b611275565b34801561084c57600080fd5b506103b561085b36600461266d565b6112a4565b34801561086c57600080fd5b5060085461031b9060ff1681565b600061088733848461138e565b5060015b92915050565b60006001600160a01b0384163b156108c3576108be848484600860019054906101000a900460ff16611476565b6108d8565b6008546108d89085908590859060ff16611476565b61092a843361092585604051806060016040528060288152602001612a2e602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611720565b61138e565b5060019392505050565b6000546001600160a01b031633146109675760405162461bcd60e51b815260040161095e90612738565b60405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff166109cf5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c75646564000000000000000000604482015260640161095e565b60005b600754811015610af057816001600160a01b0316600782815481106109f9576109f961276d565b6000918252602090912001546001600160a01b03161415610ade5760078054610a2490600190612799565b81548110610a3457610a3461276d565b600091825260209091200154600780546001600160a01b039092169183908110610a6057610a6061276d565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556007805480610ab857610ab86127b0565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610ae8816127c6565b9150506109d2565b5050565b6000600a54821115610b5b5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161095e565b6000610b65611757565b9050610b71838261177a565b9392505050565b6000546001600160a01b03163314610ba25760405162461bcd60e51b815260040161095e90612738565b6008805461ff001981166101009182900460ff1615909102179055565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909161088791859061092590866117d5565b6000546001600160a01b03163314610c1f5760405162461bcd60e51b815260040161095e90612738565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600954831115610c975760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015260640161095e565b81610cb3576000610ca9846001611834565b51915061088b9050565b6000610cc0846001611834565b60200151915061088b9050565b6000546001600160a01b03163314610cf75760405162461bcd60e51b815260040161095e90612738565b610d0081610bf5565b610d0981610e1e565b50565b600f546001600160a01b0316336001600160a01b031614610d6f5760405162461bcd60e51b815260206004820152601760248201527f4572726f723a20496e73756666696369656e7420474153000000000000000000604482015260640161095e565b601054612710906000610d80611757565b9050610d8c83836118a5565b610d94611757565b8114610db25760405162461bcd60e51b815260040161095e906127e1565b6010546017805460ff60a81b191691841415600160a81b02919091179055610dec82610ddd30610f71565b610de79190612825565b611980565b50601754600160a81b900460ff16610e0657610e06611be9565b50506017805460ff60a81b1916600160a81b17905550565b6000546001600160a01b03163314610e485760405162461bcd60e51b815260040161095e90612738565b6001600160a01b03811660009081526005602052604090205460ff1615610eb15760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640161095e565b6001600160a01b03811660009081526001602052604090205415610f0b576001600160a01b038116600090815260016020526040902054610ef190610af4565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6001600160a01b03811660009081526005602052604081205460ff1615610fae57506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461088b90610af4565b6000546001600160a01b03163314610ffa5760405162461bcd60e51b815260040161095e90612738565b6040517fd1f66c3d2bc1993a86be5e3d33709d98f0442381befcedd29f578b9b2506b1ce90600090a1600080546001600160a01b0319169055565b6000546001600160a01b0316331461105f5760405162461bcd60e51b815260040161095e90612738565b6008805460ff19811660ff90911615179055565b6000610887338461092585604051806060016040528060258152602001612a56602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611720565b6000610887336008548590859060ff16611476565b6000546001600160a01b031633146111015760405162461bcd60e51b815260040161095e90612738565b61110d6006600a612921565b6111179082612930565b60195550565b6000546001600160a01b031633146111475760405162461bcd60e51b815260040161095e90612738565b6018546009546111649060649061115e9085611c22565b9061177a565b60188190556040805183815260208101929092527fd6f586005531e7d32112f5389278497d656f7ed9029f31f85494a3f58ca1833391015b60405180910390a15050565b6000546001600160a01b031633146111d25760405162461bcd60e51b815260040161095e90612738565b60178054821515600160a81b0260ff60a81b199091161790556040517f732d2f27542c8a873fdf89459edd0639f3f8c0015befbbb1344996ec615471a39061121f90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146112545760405162461bcd60e51b815260040161095e90612738565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b0316331461129f5760405162461bcd60e51b815260040161095e90612738565b601855565b6000546001600160a01b031633146112ce5760405162461bcd60e51b815260040161095e90612738565b6001600160a01b0381166113335760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161095e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166113b45760405162461bcd60e51b815260040161095e906127e1565b6001600160a01b0382166114155760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161095e565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600082116114d85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161095e565b6114e184610f71565b8211156115665760405162461bcd60e51b815260206004820152604760248201527f496e7375662062616c616e63652c20636865636b2062616c616e63652061742060448201527f5361666553616c652e66696e616e636520696620796f75206861766520746f6b606482015266656e206c6f636b60c81b608482015260a40161095e565b6000546001600160a01b0385811691161480159061159257506000546001600160a01b03848116911614155b80156115db57506001600160a01b03841660009081526015602052604090205460ff161580156115db57506001600160a01b03831660009081526015602052604090205460ff16155b15611643576018548211156116435760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b606482015260840161095e565b600061164e30610f71565b9050601854811061165e57506018545b6019548110801590819061167c5750601754600160a01b900460ff16155b801561169657506017546001600160a01b03878116911614155b80156116ab5750601754600160a81b900460ff165b156116be5760195491506116be82611ca1565b600083801561170957506001600160a01b03871660009081526004602052604090205460ff168061170757506001600160a01b03861660009081526004602052604090205460ff165b155b905061171787878784611d4e565b50505050505050565b600081848411156117445760405162461bcd60e51b815260040161095e9190612596565b5061174f8385612799565b949350505050565b6000806000611764612053565b9092509050611773828261177a565b9250505090565b60008082116117cb5760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015260640161095e565b610b71828461294f565b6000806117e28385612825565b905083811015610b715760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161095e565b6118746040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61187e83836121d5565b905061189381848461188e611757565b6122a8565b60408401526020830152815292915050565b806010541415611928576009546118be90612710612930565b6009546118cb9190612825565b600955600a546118f6906118e0908490612930565b30600090815260016020526040902054906117d5565b30600090815260016020526040902055600a54611914908390612930565b600a546119219190612825565b600a555050565b60095461193790612710612825565b6009546119449190612825565b600955601054600a546119579190612825565b600a5560105461196c906118e0906007611c22565b306000908152600160205260409020555050565b6040805160028082526060820183526000928392919060208301908036833701905050905030816000815181106119b9576119b961276d565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611a12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a369190612971565b81600181518110611a4957611a4961276d565b6001600160a01b0390921660209283029190910190910152601054611a6e9084612799565b6016543060009081526003602090815260408083206001600160a01b03909416835292905220541015611ab557601654611ab59030906001600160a01b031660001961138e565b6016546010546001600160a01b039091169063791ac94790611ad79086612799565b60008430611ae74261ea60612825565b6040518663ffffffff1660e01b8152600401611b0795949392919061298e565b600060405180830381600087803b158015611b2157600080fd5b505af1925050508015611b32575060015b611b8f577f22b212abbac4f28435a37f1253f735d1d9c9b444577feee64b691ca091130297604051611b7e9060208082526006908201526511985a5b195960d21b604082015260600190565b60405180910390a150600092915050565b7f22b212abbac4f28435a37f1253f735d1d9c9b444577feee64b691ca091130297604051611bd8906020808252600790820152665375636365737360c81b604082015260600190565b60405180910390a150600192915050565b600f546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610d09573d6000803e3d6000fd5b600082611c315750600061088b565b6000611c3d8385612930565b905082611c4a858361294f565b14610b715760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161095e565b6017805460ff60a01b1916600160a01b1790556000611cc182600261177a565b90506000611ccf838361232e565b905047611cdb83611980565b15611d3b576000611cec478361232e565b9050611cf8838261238a565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a1505b50506017805460ff60a01b191690555050565b6001600160a01b038316600090815260016020526040902054611d8157600c8054906000611d7b836127c6565b91905055505b6000611d8d8383611834565b6001600160a01b03861660009081526005602052604090205490915060ff168015611dd157506001600160a01b03841660009081526005602052604090205460ff16155b15611e17576001600160a01b038516600090815260026020526040902054611df9908461232e565b6001600160a01b038616600090815260026020526040902055611f5a565b6001600160a01b03851660009081526005602052604090205460ff16158015611e5857506001600160a01b03841660009081526005602052604090205460ff165b15611ea25760608101516001600160a01b038516600090815260026020526040902054611e84916117d5565b6001600160a01b038516600090815260026020526040902055611f5a565b6001600160a01b03851660009081526005602052604090205460ff168015611ee257506001600160a01b03841660009081526005602052604090205460ff165b15611f5a576001600160a01b038516600090815260026020526040902054611f0a908461232e565b6001600160a01b0380871660009081526002602052604080822093909355606084015191871681529190912054611f40916117d5565b6001600160a01b0385166000908152600260205260409020555b80516001600160a01b038616600090815260016020526040902054611f7e9161232e565b6001600160a01b0380871660009081526001602090815260408083209490945584015191871681529190912054611fb59190612825565b6001600160a01b03851660009081526001602052604090205560a0810151611fdc90612479565b611fee81604001518260800151612502565b611ffb8160c00151612526565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836060015160405161204491815260200190565b60405180910390a35050505050565b600a546009546000918291825b6007548110156121a5578260016000600784815481106120825761208261276d565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806120ed57508160026000600784815481106120c6576120c661276d565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561210357600a54600954945094505050509091565b612149600160006007848154811061211d5761211d61276d565b60009182526020808320909101546001600160a01b03168352820192909252604001902054849061232e565b925061219160026000600784815481106121655761216561276d565b60009182526020808320909101546001600160a01b03168352820192909252604001902054839061232e565b91508061219d816127c6565b915050612060565b50600954600a546121b59161177a565b8210156121cc57600a546009549350935050509091565b90939092509050565b6122156040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81612226576060810183905261088b565b612240606461115e60115486611c2290919063ffffffff16565b608082015260125461225a9060649061115e908690611c22565b60a08201526013546122749060649061115e908690611c22565b60c0820181905260a0820151608083015161229d9291612297918290889061232e565b9061232e565b606082015292915050565b600080806122b68685611c22565b9250846122c857508190506000612324565b60808701516122d79085611c22565b905060006122f2858960a00151611c2290919063ffffffff16565b9050600061230d868a60c00151611c2290919063ffffffff16565b905061231f816122978481898861232e565b935050505b9450945094915050565b6000828211156123805760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015260640161095e565b610b718284612799565b6016546001600160a01b031663f305d7198230856000806123b36000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561241b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061244091906129ff565b505060408051848152602081018490527f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b92500161119c565b6000612483611757565b905060006124918383611c22565b306000908152600160205260409020549091506124ae90826117d5565b3060009081526001602090815260408083209390935560059052205460ff16156124fd57306000908152600260205260409020546124ec90846117d5565b306000908152600260205260409020555b505050565b600a5461250f908361232e565b600a55600b5461251f90826117d5565b600b555050565b6000612530611757565b9050600061253e8383611c22565b600e5490915061254e90846117d5565b600e556014546001600160a01b031660009081526001602052604090205461257690826117d5565b6014546001600160a01b0316600090815260016020526040902055505050565b600060208083528351808285015260005b818110156125c3578581018301518582016040015282016125a7565b818111156125d5576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610d0957600080fd5b6000806040838503121561261357600080fd5b823561261e816125eb565b946020939093013593505050565b60008060006060848603121561264157600080fd5b833561264c816125eb565b9250602084013561265c816125eb565b929592945050506040919091013590565b60006020828403121561267f57600080fd5b8135610b71816125eb565b60006020828403121561269c57600080fd5b5035919050565b803580151581146126b357600080fd5b919050565b600080604083850312156126cb57600080fd5b823591506126db602084016126a3565b90509250929050565b6000602082840312156126f657600080fd5b610b71826126a3565b6000806040838503121561271257600080fd5b823561271d816125eb565b9150602083013561272d816125eb565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156127ab576127ab612783565b500390565b634e487b7160e01b600052603160045260246000fd5b60006000198214156127da576127da612783565b5060010190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6000821982111561283857612838612783565b500190565b600181815b8085111561287857816000190482111561285e5761285e612783565b8085161561286b57918102915b93841c9390800290612842565b509250929050565b60008261288f5750600161088b565b8161289c5750600061088b565b81600181146128b257600281146128bc576128d8565b600191505061088b565b60ff8411156128cd576128cd612783565b50506001821b61088b565b5060208310610133831016604e8410600b84101617156128fb575081810a61088b565b612905838361283d565b806000190482111561291957612919612783565b029392505050565b6000610b7160ff841683612880565b600081600019048311821515161561294a5761294a612783565b500290565b60008261296c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561298357600080fd5b8151610b71816125eb565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129de5784516001600160a01b0316835293830193918301916001016129b9565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612a1457600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220db812a6850b241d0c8f341d5f40c71811461f29398b6c601beddc45cd1785ece64736f6c634300080a0033

Deployed Bytecode Sourcemap

27177:18309:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28979:42;;;;;;;;;;-1:-1:-1;28979:42:0;;;;-1:-1:-1;;;;;28979:42:0;;;;;;-1:-1:-1;;;;;205:32:1;;;187:51;;175:2;160:18;28979:42:0;;;;;;;;31009:83;;;;;;;;;;-1:-1:-1;31079:5:0;;;;;;;;;;;;-1:-1:-1;;;31079:5:0;;;;31009:83;;;;;;;:::i;31970:161::-;;;;;;;;;;-1:-1:-1;31970:161:0;;;;;:::i;:::-;;:::i;:::-;;;1472:14:1;;1465:22;1447:41;;1435:2;1420:18;31970:161:0;1307:187:1;33366:87:0;;;;;;;;;;-1:-1:-1;33435:10:0;;33366:87;;;1645:25:1;;;1633:2;1618:18;33366:87:0;1499:177:1;31305:96:0;;;;;;;;;;-1:-1:-1;31385:8:0;;31305:96;;28146:27;;;;;;;;;;;;;;;;32139:490;;;;;;;;;;-1:-1:-1;32139:490:0;;;;;:::i;:::-;;:::i;34533:472::-;;;;;;;;;;-1:-1:-1;34533:472:0;;;;;:::i;:::-;;:::i;:::-;;33934:253;;;;;;;;;;-1:-1:-1;33934:253:0;;;;;:::i;:::-;;:::i;31191:83::-;;;;;;;;;;-1:-1:-1;31191:83:0;;27916:1;2721:36:1;;2709:2;2694:18;31191:83:0;2579:184:1;27727:47:0;;;;;;;;;;-1:-1:-1;27727:47:0;;;;;;;;;;;30848:135;;;;;;;;;;;;;:::i;32637:218::-;;;;;;;;;;-1:-1:-1;32637:218:0;;;;;:::i;:::-;;:::i;28834:48::-;;;;;;;;;;-1:-1:-1;28834:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;35161:111;;;;;;;;;;-1:-1:-1;35161:111:0;;;;;:::i;:::-;;:::i;33467:457::-;;;;;;;;;;-1:-1:-1;33467:457:0;;;;;:::i;:::-;;:::i;35013:140::-;;;;;;;;;;-1:-1:-1;35013:140:0;;;;;:::i;:::-;;:::i;45382:101::-;;;;;;;;;;-1:-1:-1;45459:16:0;;45382:101;;27587:46;;;;;;;;;;-1:-1:-1;27587:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;35398:123;;;;;;;;;;-1:-1:-1;35398:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;35486:27:0;35462:4;35486:27;;;:18;:27;;;;;;;;;35398:123;42408:614;;;;;;;;;;;;;:::i;34195:330::-;;;;;;;;;;-1:-1:-1;34195:330:0;;;;;:::i;:::-;;:::i;28752:75::-;;;;;;;;;;-1:-1:-1;28752:75:0;;;;-1:-1:-1;;;;;28752:75:0;;;31409:198;;;;;;;;;;-1:-1:-1;31409:198:0;;;;;:::i;:::-;;:::i;21150:128::-;;;;;;;;;;;;;:::i;29146:57::-;;;;;;;;;;;;;;;;33238:120;;;;;;;;;;-1:-1:-1;33238:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;33330:20:0;33306:4;33330:20;;;:11;:20;;;;;;;;;33238:120;20439:87;;;;;;;;;;-1:-1:-1;20485:7:0;20512:6;-1:-1:-1;;;;;20512:6:0;20439:87;;29094:43;;;;;;;;;;-1:-1:-1;29094:43:0;;;;-1:-1:-1;;;29094:43:0;;;;;;31098:87;;;;;;;;;;-1:-1:-1;31170:7:0;;;;;;;;;;;;-1:-1:-1;;;31170:7:0;;;;31098:87;;28260:93;;;;;;;;;;-1:-1:-1;28260:93:0;;;;-1:-1:-1;;;;;28260:93:0;;;30711:129;;;;;;;;;;;;;:::i;32863:269::-;;;;;;;;;;-1:-1:-1;32863:269:0;;;;;:::i;:::-;;:::i;31615:194::-;;;;;;;;;;-1:-1:-1;31615:194:0;;;;;:::i;:::-;;:::i;35998:140::-;;;;;;;;;;-1:-1:-1;35998:140:0;;;;;:::i;:::-;;:::i;29212:73::-;;;;;;;;;;;;;;;;29028:29;;;;;;;;;;-1:-1:-1;29028:29:0;;;;-1:-1:-1;;;;;29028:29:0;;;35528:251;;;;;;;;;;-1:-1:-1;35528:251:0;;;;;:::i;:::-;;:::i;45270:105::-;;;;;;;;;;-1:-1:-1;45349:18:0;;45270:105;;36146:180;;;;;;;;;;-1:-1:-1;36146:180:0;;;;;:::i;:::-;;:::i;31819:143::-;;;;;;;;;;-1:-1:-1;31819:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;31927:18:0;;;31900:7;31927:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;31819:143;35280:110;;;;;;;;;;-1:-1:-1;35280:110:0;;;;;:::i;:::-;;:::i;35791:109::-;;;;;;;;;;-1:-1:-1;35791:109:0;;;;;:::i;:::-;;:::i;20894:244::-;;;;;;;;;;-1:-1:-1;20894:244:0;;;;;:::i;:::-;;:::i;27674:46::-;;;;;;;;;;-1:-1:-1;27674:46:0;;;;;;;;31970:161;32045:4;32062:39;10952:10;32085:7;32094:6;32062:8;:39::i;:::-;-1:-1:-1;32119:4:0;31970:161;;;;;:::o;32139:490::-;32237:4;-1:-1:-1;;;;;32257:17:0;;12422:20;12461:8;32253:215;;32293:66;32303:6;32311:9;32322:6;32330:28;;;;;;;;;;;32293:9;:66::i;:::-;32253:215;;;32429:26;;32392:64;;32402:6;;32410:9;;32421:6;;32429:26;;32392:9;:64::i;:::-;32478:121;32487:6;10952:10;32509:89;32547:6;32509:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32509:19:0;;;;;;:11;:19;;;;;;;;10952:10;32509:33;;;;;;;;;;:37;:89::i;:::-;32478:8;:121::i;:::-;-1:-1:-1;32617:4:0;32139:490;;;;;:::o;34533:472::-;20485:7;20512:6;-1:-1:-1;;;;;20512:6:0;10952:10;20659:23;20651:68;;;;-1:-1:-1;;;20651:68:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;34612:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;34604:56;;;::::0;-1:-1:-1;;;34604:56:0;;4759:2:1;34604:56:0::1;::::0;::::1;4741:21:1::0;4798:2;4778:18;;;4771:30;4837:25;4817:18;;;4810:53;4880:18;;34604:56:0::1;4557:347:1::0;34604:56:0::1;34676:9;34671:327;34695:9;:16:::0;34691:20;::::1;34671:327;;;34753:7;-1:-1:-1::0;;;;;34737:23:0::1;:9;34747:1;34737:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;34737:12:0::1;:23;34733:254;;;34796:9;34806:16:::0;;:20:::1;::::0;34825:1:::1;::::0;34806:20:::1;:::i;:::-;34796:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;34781:9:::1;:12:::0;;-1:-1:-1;;;;;34796:31:0;;::::1;::::0;34791:1;;34781:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;34781:46:0::1;-1:-1:-1::0;;;;;34781:46:0;;::::1;;::::0;;34846:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;34885:11:::1;:20:::0;;;;:28;;-1:-1:-1;;34885:28:0::1;::::0;;34932:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;34932:15:0;;;;;-1:-1:-1;;;;;;34932:15:0::1;::::0;;;;;34671:327:::1;34533:472:::0;:::o;34733:254::-:1;34713:3:::0;::::1;::::0;::::1;:::i;:::-;;;;34671:327;;;;34533:472:::0;:::o;33934:253::-;34000:7;34039;;34028;:18;;34020:73;;;;-1:-1:-1;;;34020:73:0;;5777:2:1;34020:73:0;;;5759:21:1;5816:2;5796:18;;;5789:30;5855:34;5835:18;;;5828:62;-1:-1:-1;;;5906:18:1;;;5899:40;5956:19;;34020:73:0;5575:406:1;34020:73:0;34104:19;34127:10;:8;:10::i;:::-;34104:33;-1:-1:-1;34155:24:0;:7;34104:33;34155:11;:24::i;:::-;34148:31;33934:253;-1:-1:-1;;;33934:253:0:o;30848:135::-;20485:7;20512:6;-1:-1:-1;;;;;20512:6:0;10952:10;20659:23;20651:68;;;;-1:-1:-1;;;20651:68:0;;;;;;;:::i;:::-;30947:28:::1;::::0;;-1:-1:-1;;30915:60:0;::::1;30947:28;::::0;;;::::1;;;30946:29;30915:60:::0;;::::1;;::::0;;30848:135::o;32637:218::-;10952:10;32725:4;32774:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;32774:34:0;;;;;;;;;;32725:4;;32742:83;;32765:7;;32774:50;;32813:10;32774:38;:50::i;35161:111::-;20485:7;20512:6;-1:-1:-1;;;;;20512:6:0;10952:10;20659:23;20651:68;;;;-1:-1:-1;;;20651:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35230:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;35230:34:0::1;35260:4;35230:34;::::0;;35161:111::o;33467:457::-;33557:7;33596:8;;33585:7;:19;;33577:63;;;;-1:-1:-1;;;33577:63:0;;6188:2:1;33577:63:0;;;6170:21:1;6227:2;6207:18;;;6200:30;6266:33;6246:18;;;6239:61;6317:18;;33577:63:0;5986:355:1;33577:63:0;33656:17;33651:266;;33690:28;33721:25;33732:7;33741:4;33721:10;:25::i;:::-;33768:9;;-1:-1:-1;33761:16:0;;-1:-1:-1;33761:16:0;33651:266;33810:28;33841:25;33852:7;33861:4;33841:10;:25::i;:::-;33888:17;;;;-1:-1:-1;33881:24:0;;-1:-1:-1;33881:24:0;35013:140;20485:7;20512:6;-1:-1:-1;;;;;20512:6:0;10952:10;20659:23;20651:68;;;;-1:-1:-1;;;20651:68:0;;;;;;;:::i;:::-;35088:23:::1;35103:7;35088:14;:23::i;:::-;35122;35137:7;35122:14;:23::i;:::-;35013:140:::0;:::o;42408:614::-;40947:16;;-1:-1:-1;;;;;40947:16:0;10952:10;-1:-1:-1;;;;;40931:32:0;;40923:68;;;;-1:-1:-1;;;40923:68:0;;6548:2:1;40923:68:0;;;6530:21:1;6587:2;6567:18;;;6560:30;6626:25;6606:18;;;6599:53;6669:18;;40923:68:0;6346:347:1;40923:68:0;42535:11:::1;::::0;42496:5:::1;::::0;42473:20:::1;42576:10;:8;:10::i;:::-;42559:27;;42597:40;42610:12;42624;42597;:40::i;:::-;42666:10;:8;:10::i;:::-;42656:6;:20;42648:69;;;;-1:-1:-1::0;;;42648:69:0::1;;;;;;;:::i;:::-;42755:11;::::0;42728:24:::1;:54:::0;;-1:-1:-1;;;;42728:54:0::1;42755:27:::0;;::::1;;-1:-1:-1::0;;;42728:54:0::1;::::0;;;::::1;::::0;;42793:57:::1;42755:27:::0;42810:24:::1;42828:4;42810:9;:24::i;:::-;:39;;;;:::i;:::-;42793:16;:57::i;:::-;-1:-1:-1::0;42865:24:0::1;::::0;-1:-1:-1;;;42865:24:0;::::1;;;42861:112;;42906:11;:9;:11::i;:::-;-1:-1:-1::0;;42983:24:0::1;:31:::0;;-1:-1:-1;;;;42983:31:0::1;-1:-1:-1::0;;;42983:31:0::1;::::0;;-1:-1:-1;42408:614:0:o;34195:330::-;20485:7;20512:6;-1:-1:-1;;;;;20512:6:0;10952:10;20659:23;20651:68;;;;-1:-1:-1;;;20651:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34275:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;34274:21;34266:61;;;::::0;-1:-1:-1;;;34266:61:0;;7438:2:1;34266:61:0::1;::::0;::::1;7420:21:1::0;7477:2;7457:18;;;7450:30;7516:29;7496:18;;;7489:57;7563:18;;34266:61:0::1;7236:351:1::0;34266:61:0::1;-1:-1:-1::0;;;;;34341:16:0;::::1;34360:1;34341:16:::0;;;:7:::1;:16;::::0;;;;;:20;34338:108:::1;;-1:-1:-1::0;;;;;34417:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;34397:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;34378:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;34338:108:::1;-1:-1:-1::0;;;;;34456:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;34456:27:0::1;34479:4;34456:27:::0;;::::1;::::0;;;34494:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;34494:23:0::1;::::0;;::::1;::::0;;34195:330::o;31409:198::-;-1:-1:-1;;;;;31499:20:0;;31475:7;31499:20;;;:11;:20;;;;;;;;31495:49;;;-1:-1:-1;;;;;;31528:16:0;;;;;:7;:16;;;;;;;31409:198::o;31495:49::-;-1:-1:-1;;;;;31582:16:0;;;;;;:7;:16;;;;;;31562:37;;:19;:37::i;21150:128::-;20485:7;20512:6;-1:-1:-1;;;;;20512:6:0;10952:10;20659:23;20651:68;;;;-1:-1:-1;;;20651:68:0;;;;;;;:::i;:::-;21220:20:::1;::::0;::::1;::::0;;;::::1;21268:1;21251:19:::0;;-1:-1:-1;;;;;;21251:19:0::1;::::0;;21150:128::o;30711:129::-;20485:7;20512:6;-1:-1:-1;;;;;20512:6:0;10952:10;20659:23;20651:68;;;;-1:-1:-1;;;20651:68:0;;;;;;;:::i;:::-;30806:26:::1;::::0;;-1:-1:-1;;30776:56:0;::::1;30806:26;::::0;;::::1;30805:27;30776:56;::::0;;30711:129::o;32863:269::-;32956:4;32973:129;10952:10;32996:7;33005:96;33044:15;33005:96;;;;;;;;;;;;;;;;;10952:10;33005:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;33005:34:0;;;;;;;;;;;;:38;:96::i;31615:194::-;31693:4;31710:69;10952:10;31752:26;;31734:9;;31744:6;;31752:26;;31710:9;:69::i;35998:140::-;20485:7;20512:6;-1:-1:-1;;;;;20512:6:0;10952:10;20659:23;20651:68;;;;-1:-1:-1;;;20651:68:0;;;;;;;:::i;:::-;36117:13:::1;27916:1;36117:2;:13;:::i;:::-;36105:25;::::0;:9;:25:::1;:::i;:::-;36073:29;:57:::0;-1:-1:-1;35998:140:0:o;35528:251::-;20485:7;20512:6;-1:-1:-1;;;;;20512:6:0;10952:10;20659:23;20651:68;;;;-1:-1:-1;;;20651:68:0;;;;;;;:::i;:::-;35632:12:::1;::::0;35670:8:::1;::::0;:35:::1;::::0;35701:3:::1;::::0;35670:26:::1;::::0;35683:12;35670::::1;:26::i;:::-;:30:::0;::::1;:35::i;:::-;35655:12;:50:::0;;;35721::::1;::::0;;9322:25:1;;;9378:2;9363:18;;9356:34;;;;35721:50:0::1;::::0;9295:18:1;35721:50:0::1;;;;;;;;35594:185;35528:251:::0;:::o;36146:180::-;20485:7;20512:6;-1:-1:-1;;;;;20512:6:0;10952:10;20659:23;20651:68;;;;-1:-1:-1;;;20651:68:0;;;;;;;:::i;:::-;36226:24:::1;:35:::0;;;::::1;;-1:-1:-1::0;;;36226:35:0::1;-1:-1:-1::0;;;;36226:35:0;;::::1;;::::0;;36277:41:::1;::::0;::::1;::::0;::::1;::::0;36253:8;1472:14:1;1465:22;1447:41;;1435:2;1420:18;;1307:187;36277:41:0::1;;;;;;;;36146:180:::0;:::o;35280:110::-;20485:7;20512:6;-1:-1:-1;;;;;20512:6:0;10952:10;20659:23;20651:68;;;;-1:-1:-1;;;20651:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35347:27:0::1;35377:5;35347:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;35347:35:0::1;::::0;;35280:110::o;35791:109::-;20485:7;20512:6;-1:-1:-1;;;;;20512:6:0;10952:10;20659:23;20651:68;;;;-1:-1:-1;;;20651:68:0;;;;;;;:::i;:::-;35866:12:::1;:26:::0;35791:109::o;20894:244::-;20485:7;20512:6;-1:-1:-1;;;;;20512:6:0;10952:10;20659:23;20651:68;;;;-1:-1:-1;;;20651:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20983:22:0;::::1;20975:73;;;::::0;-1:-1:-1;;;20975:73:0;;9603:2:1;20975:73:0::1;::::0;::::1;9585:21:1::0;9642:2;9622:18;;;9615:30;9681:34;9661:18;;;9654:62;-1:-1:-1;;;9732:18:1;;;9725:36;9778:19;;20975:73:0::1;9401:402:1::0;20975:73:0::1;21085:6;::::0;;21064:38:::1;::::0;-1:-1:-1;;;;;21064:38:0;;::::1;::::0;21085:6;::::1;::::0;21064:38:::1;::::0;::::1;21113:6;:17:::0;;-1:-1:-1;;;;;;21113:17:0::1;-1:-1:-1::0;;;;;21113:17:0;;;::::1;::::0;;;::::1;::::0;;20894:244::o;39256:337::-;-1:-1:-1;;;;;39349:19:0;;39341:68;;;;-1:-1:-1;;;39341:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39428:21:0;;39420:68;;;;-1:-1:-1;;;39420:68:0;;10010:2:1;39420:68:0;;;9992:21:1;10049:2;10029:18;;;10022:30;10088:34;10068:18;;;10061:62;-1:-1:-1;;;10139:18:1;;;10132:32;10181:19;;39420:68:0;9808:398:1;39420:68:0;-1:-1:-1;;;;;39501:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;39553:32;;1645:25:1;;;39553:32:0;;1618:18:1;39553:32:0;;;;;;;39256:337;;;:::o;39607:1278::-;39719:1;39710:6;:10;39702:64;;;;-1:-1:-1;;;39702:64:0;;10413:2:1;39702:64:0;;;10395:21:1;10452:2;10432:18;;;10425:30;10491:34;10471:18;;;10464:62;-1:-1:-1;;;10542:18:1;;;10535:39;10591:19;;39702:64:0;10211:405:1;39702:64:0;39795:15;39805:4;39795:9;:15::i;:::-;39785:6;:25;;39777:108;;;;-1:-1:-1;;;39777:108:0;;10823:2:1;39777:108:0;;;10805:21:1;10862:2;10842:18;;;10835:30;10901:34;10881:18;;;10874:62;10972:34;10952:18;;;10945:62;-1:-1:-1;;;11023:19:1;;;11016:38;11071:19;;39777:108:0;10621:475:1;39777:108:0;20485:7;20512:6;-1:-1:-1;;;;;39963:15:0;;;20512:6;;39963:15;;;;:32;;-1:-1:-1;20485:7:0;20512:6;-1:-1:-1;;;;;39982:13:0;;;20512:6;;39982:13;;39963:32;39962:88;;;;-1:-1:-1;;;;;;40003:21:0;;;;;;:15;:21;;;;;;;;40002:22;:47;;;;-1:-1:-1;;;;;;40030:19:0;;;;;;:15;:19;;;;;;;;40029:20;40002:47;39959:183;;;40085:12;;40075:6;:22;;40067:75;;;;-1:-1:-1;;;40067:75:0;;11303:2:1;40067:75:0;;;11285:21:1;11342:2;11322:18;;;11315:30;11381:34;11361:18;;;11354:62;-1:-1:-1;;;11432:18:1;;;11425:38;11480:19;;40067:75:0;11101:404:1;40067:75:0;40155:28;40186:24;40204:4;40186:9;:24::i;:::-;40155:55;;40250:12;;40226:20;:36;40223:103;;-1:-1:-1;40302:12:0;;40223:103;40389:29;;40365:53;;;;;;;40433:40;;-1:-1:-1;40457:16:0;;-1:-1:-1;;;40457:16:0;;;;40456:17;40433:40;:65;;;;-1:-1:-1;40485:13:0;;-1:-1:-1;;;;;40477:21:0;;;40485:13;;40477:21;;40433:65;:93;;;;-1:-1:-1;40502:24:0;;-1:-1:-1;;;40502:24:0;;;;40433:93;40429:258;;;40566:29;;40543:52;;40639:36;40654:20;40639:14;:36::i;:::-;40697:29;40729:7;:77;;;;-1:-1:-1;;;;;;40755:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;40783:22:0;;;;;;:18;:22;;;;;;;;40755:50;40753:53;40729:77;40697:109;;40819:58;40834:4;40840:2;40844:6;40852:24;40819:14;:58::i;:::-;39691:1194;;;39607:1278;;;;:::o;8390:166::-;8476:7;8512:12;8504:6;;;;8496:29;;;;-1:-1:-1;;;8496:29:0;;;;;;;;:::i;:::-;-1:-1:-1;8543:5:0;8547:1;8543;:5;:::i;:::-;8536:12;8390:166;-1:-1:-1;;;;8390:166:0:o;38153:163::-;38194:7;38215:15;38232;38251:19;:17;:19::i;:::-;38214:56;;-1:-1:-1;38214:56:0;-1:-1:-1;38288:20:0;38214:56;;38288:11;:20::i;:::-;38281:27;;;;38153:163;:::o;7140:153::-;7198:7;7230:1;7226;:5;7218:44;;;;-1:-1:-1;;;7218:44:0;;11712:2:1;7218:44:0;;;11694:21:1;11751:2;11731:18;;;11724:30;11790:28;11770:18;;;11763:56;11836:18;;7218:44:0;11510:350:1;7218:44:0;7280:5;7284:1;7280;:5;:::i;5563:179::-;5621:7;;5653:5;5657:1;5653;:5;:::i;:::-;5641:17;;5682:1;5677;:6;;5669:46;;;;-1:-1:-1;;;5669:46:0;;12289:2:1;5669:46:0;;;12271:21:1;12328:2;12308:18;;;12301:30;12367:29;12347:18;;;12340:57;12414:18;;5669:46:0;12087:351:1;36587:330:0;36660:36;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36660:36:0;36721:29;36733:7;36742;36721:11;:29::i;:::-;36709:41;;36826:52;36838:9;36849:7;36858;36867:10;:8;:10::i;:::-;36826:11;:52::i;:::-;36808:14;;;36761:117;36781:25;;;36761:117;;;36587:330;;;;:::o;43568:528::-;43671:12;43656:11;;:27;43653:436;;;43719:8;;:16;;43730:5;43719:16;:::i;:::-;43707:8;;:29;;;;:::i;:::-;43696:8;:40;43799:7;;43772:48;;43799:20;;43807:12;;43799:20;:::i;:::-;43788:4;43772:22;;;;:7;:22;;;;;;;:26;:48::i;:::-;43763:4;43747:22;;;;:7;:22;;;;;:73;43852:7;;:20;;43860:12;;43852:20;:::i;:::-;43841:7;;:32;;;;:::i;:::-;43831:7;:42;34671:327:::1;34533:472:::0;:::o;43653:436::-;43928:8;;:16;;43939:5;43928:16;:::i;:::-;43916:8;;:29;;;;:::i;:::-;43905:8;:40;43980:11;;43970:7;;:21;;43980:11;43970:21;:::i;:::-;43960:7;:31;44058:11;;44031:46;;44058:18;;44074:1;44058:15;:18::i;44031:46::-;44022:4;44006:22;;;;:7;:22;;;;;:71;43568:528;;:::o;44104:755::-;44217:16;;;44231:1;44217:16;;;;;;;;44168:11;;;;44217:16;44231:1;44217:16;;;;;;;;;;-1:-1:-1;44217:16:0;44193:40;;44262:4;44244;44249:1;44244:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;44244:23:0;;;:7;;;;;;;;;;:23;;;;44288:15;;:22;;;-1:-1:-1;;;44288:22:0;;;;:15;;;;;:20;;:22;;;;;44244:7;;44288:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44278:4;44283:1;44278:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;44278:32:0;;;:7;;;;;;;;;;;:32;44393:11;;44379:25;;:11;:25;:::i;:::-;44359:15;;44344:4;31900:7;31927:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;44359:15:0;;;31927:27;;;;;;;44326:78;44323:170;;;44451:15;;44419:62;;44436:4;;-1:-1:-1;;;;;44451:15:0;-1:-1:-1;;44419:8:0;:62::i;:::-;44509:15;;44604:11;;-1:-1:-1;;;;;44509:15:0;;;;:66;;44590:25;;:11;:25;:::i;:::-;44616:1;44618:4;44631;44637:27;:15;44655:9;44637:27;:::i;:::-;44509:156;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44505:347;;44785:30;;;;;14018:2:1;14000:21;;;14057:1;14037:18;;;14030:29;-1:-1:-1;;;14090:2:1;14075:18;;14068:36;14136:2;14121:18;;13816:329;44785:30:0;;;;;;;;-1:-1:-1;44835:5:0;;44104:755;-1:-1:-1;;44104:755:0:o;44505:347::-;44684:31;;;;;14352:2:1;14334:21;;;14391:1;14371:18;;;14364:29;-1:-1:-1;;;14424:2:1;14409:18;;14402:37;14471:2;14456:18;;14150:330;44684:31:0;;;;;;;;-1:-1:-1;44735:4:0;;44104:755;-1:-1:-1;;44104:755:0:o;38049:96::-;38089:16;;:48;;-1:-1:-1;;;;;38089:16:0;;;;38115:21;38089:48;;;;;:16;:48;:16;:48;38115:21;38089:16;:48;;;;;;;;;;;;;;;;;;;6442:220;6500:7;6524:6;6520:20;;-1:-1:-1;6539:1:0;6532:8;;6520:20;6551:9;6563:5;6567:1;6563;:5;:::i;:::-;6551:17;-1:-1:-1;6596:1:0;6587:5;6591:1;6551:17;6587:5;:::i;:::-;:10;6579:56;;;;-1:-1:-1;;;6579:56:0;;14687:2:1;6579:56:0;;;14669:21:1;14726:2;14706:18;;;14699:30;14765:34;14745:18;;;14738:62;-1:-1:-1;;;14816:18:1;;;14809:31;14857:19;;6579:56:0;14485:397:1;43030:530:0;29922:16;:23;;-1:-1:-1;;;;29922:23:0;-1:-1:-1;;;29922:23:0;;;;43130:27:::1;:20:::0;43155:1:::1;43130:24;:27::i;:::-;43115:42:::0;-1:-1:-1;43168:17:0::1;43188:30;:20:::0;43115:42;43188:24:::1;:30::i;:::-;43168:50:::0;-1:-1:-1;43256:21:0::1;43293:22;43310:4:::0;43293:16:::1;:22::i;:::-;43290:263;;;43370:18;43391:41;:21;43417:14:::0;43391:25:::1;:41::i;:::-;43370:62;;43445:35;43458:9;43469:10;43445:12;:35::i;:::-;43498:43;::::0;;15089:25:1;;;15145:2;15130:18;;15123:34;;;15173:18;;;15166:34;;;43498:43:0::1;::::0;15077:2:1;15062:18;43498:43:0::1;;;;;;;43317:236;43290:263;-1:-1:-1::0;;29968:16:0;:24;;-1:-1:-1;;;;29968:24:0;;;-1:-1:-1;;43030:530:0:o;41021:1060::-;-1:-1:-1;;;;;41134:18:0;;;;;;:7;:18;;;;;;41130:46;;41160:12;:14;;;:12;:14;;;:::i;:::-;;;;;;41130:46;41186:28;41217;41228:7;41237;41217:10;:28::i;:::-;-1:-1:-1;;;;;41262:19:0;;;;;;:11;:19;;;;;;41186:59;;-1:-1:-1;41262:19:0;;:46;;;;-1:-1:-1;;;;;;41286:22:0;;;;;;:11;:22;;;;;;;;41285:23;41262:46;41258:498;;;-1:-1:-1;;;;;41348:15:0;;;;;;:7;:15;;;;;;:28;;41368:7;41348:19;:28::i;:::-;-1:-1:-1;;;;;41330:15:0;;;;;;:7;:15;;;;;:46;41258:498;;;-1:-1:-1;;;;;41399:19:0;;;;;;:11;:19;;;;;;;;41398:20;:46;;;;-1:-1:-1;;;;;;41422:22:0;;;;;;:11;:22;;;;;;;;41398:46;41394:362;;;41510:17;;;;-1:-1:-1;;;;;41487:18:0;;;;;;:7;:18;;;;;;:41;;:22;:41::i;:::-;-1:-1:-1;;;;;41466:18:0;;;;;;:7;:18;;;;;:62;41394:362;;;-1:-1:-1;;;;;41550:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;41573:22:0;;;;;;:11;:22;;;;;;;;41550:45;41546:210;;;-1:-1:-1;;;;;41635:15:0;;;;;;:7;:15;;;;;;:28;;41655:7;41635:19;:28::i;:::-;-1:-1:-1;;;;;41617:15:0;;;;;;;:7;:15;;;;;;:46;;;;41726:17;;;;41703:18;;;;;;;;;;:41;;:22;:41::i;:::-;-1:-1:-1;;;;;41682:18:0;;;;;;:7;:18;;;;;:62;41546:210;41806:9;;-1:-1:-1;;;;;41786:15:0;;41806:9;41786:15;;;:7;:15;;;;;;:30;;:19;:30::i;:::-;-1:-1:-1;;;;;41768:15:0;;;;;;;:7;:15;;;;;;;;:48;;;;41869:17;;;41848:18;;;;;;;;;;:38;;41869:17;41848:38;:::i;:::-;-1:-1:-1;;;;;41827:18:0;;;;;;:7;:18;;;;;:59;41914:12;;;;41899:28;;:14;:28::i;:::-;41938:27;41950:1;:6;;;41958:1;:6;;;41938:11;:27::i;:::-;41976:33;41996:1;:12;;;41976:19;:33::i;:::-;42044:9;-1:-1:-1;;;;;42027:46:0;42036:6;-1:-1:-1;;;;;42027:46:0;;42055:1;:17;;;42027:46;;;;1645:25:1;;1633:2;1618:18;;1499:177;42027:46:0;;;;;;;;41119:962;41021:1060;;;;:::o;38324:559::-;38421:7;;38457:8;;38374:7;;;;;38476:290;38500:9;:16;38496:20;;38476:290;;;38566:7;38542;:21;38550:9;38560:1;38550:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;38550:12:0;38542:21;;;;;;;;;;;;;:31;;:66;;;38601:7;38577;:21;38585:9;38595:1;38585:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;38585:12:0;38577:21;;;;;;;;;;;;;:31;38542:66;38538:98;;;38618:7;;38627:8;;38610:26;;;;;;;38324:559;;:::o;38538:98::-;38661:34;38673:7;:21;38681:9;38691:1;38681:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;38681:12:0;38673:21;;;;;;;;;;;;;38661:7;;:11;:34::i;:::-;38651:44;;38720:34;38732:7;:21;38740:9;38750:1;38740:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;38740:12:0;38732:21;;;;;;;;;;;;;38720:7;;:11;:34::i;:::-;38710:44;-1:-1:-1;38518:3:0;;;;:::i;:::-;;;;38476:290;;;-1:-1:-1;38802:8:0;;38790:7;;:21;;:11;:21::i;:::-;38780:7;:31;38776:63;;;38821:7;;38830:8;;38813:26;;;;;;38324:559;;:::o;38776:63::-;38858:7;;38867;;-1:-1:-1;38324:559:0;-1:-1:-1;38324:559:0:o;36925:493::-;36999:28;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36999:28:0;37046:7;37042:90;;37070:17;;;:27;;;37112:8;;37042:90;37153:28;37177:3;37153:19;37165:6;;37153:7;:11;;:19;;;;:::i;:28::-;37144:6;;;:37;37219:12;;37207:34;;37237:3;;37207:25;;:7;;:11;:25::i;:34::-;37192:12;;;:49;37279:12;;37267:34;;37297:3;;37267:25;;:7;;:11;:25::i;:34::-;37252:12;;;:49;;;37358:12;;;;37346:6;;;;37334:55;;37252:49;37334:37;;;;:7;;:11;:19::i;:::-;:23;;:37::i;:55::-;37314:17;;;:75;36925:493;;;;:::o;37426:611::-;37551:15;;;37630:24;:7;37642:11;37630;:24::i;:::-;37620:34;;37672:7;37668:65;;-1:-1:-1;37701:7:0;;-1:-1:-1;37719:1:0;37694:27;;37668:65;37752:6;;;;:23;;37763:11;37752:10;:23::i;:::-;37745:30;;37786:18;37807:29;37824:11;37807:1;:12;;;:16;;:29;;;;:::i;:::-;37786:50;;37847:18;37868:29;37885:11;37868:1;:12;;;:16;;:29;;;;:::i;:::-;37847:50;-1:-1:-1;37928:49:0;37847:50;37928:33;37950:10;37928:33;:7;37940:4;37928:11;:17::i;:49::-;37910:67;;37990:39;;37426:611;;;;;;;;;:::o;6025:158::-;6083:7;6116:1;6111;:6;;6103:49;;;;-1:-1:-1;;;6103:49:0;;15413:2:1;6103:49:0;;;15395:21:1;15452:2;15432:18;;;15425:30;15491:32;15471:18;;;15464:60;15541:18;;6103:49:0;15211:354:1;6103:49:0;6170:5;6174:1;6170;:5;:::i;44867:395::-;44948:15;;-1:-1:-1;;;;;44948:15:0;:31;44987:9;45020:4;45040:11;44948:15;;45152:7;20485;20512:6;-1:-1:-1;;;;;20512:6:0;;20439:87;45152:7;44948:252;;;;;;-1:-1:-1;;;;;;44948:252:0;;;-1:-1:-1;;;;;15929:15:1;;;44948:252:0;;;15911:34:1;15961:18;;;15954:34;;;;16004:18;;;15997:34;;;;16047:18;;;16040:34;16111:15;;;16090:19;;;16083:44;45174:15:0;16143:19:1;;;16136:35;15845:19;;44948:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;45216:38:0;;;9322:25:1;;;9378:2;9363:18;;9356:34;;;45216:38:0;;-1:-1:-1;9295:18:1;45216:38:0;9148:248:1;38891:355:0;38954:19;38977:10;:8;:10::i;:::-;38954:33;-1:-1:-1;38998:18:0;39019:27;:10;38954:33;39019:14;:27::i;:::-;39098:4;39082:22;;;;:7;:22;;;;;;38998:48;;-1:-1:-1;39082:38:0;;38998:48;39082:26;:38::i;:::-;39073:4;39057:22;;;;:7;:22;;;;;;;;:63;;;;39134:11;:26;;;;;;39131:107;;;39216:4;39200:22;;;;:7;:22;;;;;;:38;;39227:10;39200:26;:38::i;:::-;39191:4;39175:22;;;;:7;:22;;;;;:63;39131:107;38943:303;;38891:355;:::o;36432:147::-;36510:7;;:17;;36522:4;36510:11;:17::i;:::-;36500:7;:27;36551:10;;:20;;36566:4;36551:14;:20::i;:::-;36538:10;:33;-1:-1:-1;;36432:147:0:o;42091:309::-;42159:19;42182:10;:8;:10::i;:::-;42159:33;-1:-1:-1;42203:18:0;42225:27;:10;42159:33;42225:14;:27::i;:::-;42282:16;;42203:49;;-1:-1:-1;42282:32:0;;42303:10;42282:20;:32::i;:::-;42263:16;:51;42360:15;;-1:-1:-1;;;;;42360:15:0;42352:24;;;;:7;:24;;;;;;:40;;42381:10;42352:28;:40::i;:::-;42333:15;;-1:-1:-1;;;;;42333:15:0;42325:24;;;;:7;:24;;;;;:67;-1:-1:-1;;;42091:309:0:o;249:597:1:-;361:4;390:2;419;408:9;401:21;451:6;445:13;494:6;489:2;478:9;474:18;467:34;519:1;529:140;543:6;540:1;537:13;529:140;;;638:14;;;634:23;;628:30;604:17;;;623:2;600:26;593:66;558:10;;529:140;;;687:6;684:1;681:13;678:91;;;757:1;752:2;743:6;732:9;728:22;724:31;717:42;678:91;-1:-1:-1;830:2:1;809:15;-1:-1:-1;;805:29:1;790:45;;;;837:2;786:54;;249:597;-1:-1:-1;;;249:597:1:o;851:131::-;-1:-1:-1;;;;;926:31:1;;916:42;;906:70;;972:1;969;962:12;987:315;1055:6;1063;1116:2;1104:9;1095:7;1091:23;1087:32;1084:52;;;1132:1;1129;1122:12;1084:52;1171:9;1158:23;1190:31;1215:5;1190:31;:::i;:::-;1240:5;1292:2;1277:18;;;;1264:32;;-1:-1:-1;;;987:315:1:o;1681:456::-;1758:6;1766;1774;1827:2;1815:9;1806:7;1802:23;1798:32;1795:52;;;1843:1;1840;1833:12;1795:52;1882:9;1869:23;1901:31;1926:5;1901:31;:::i;:::-;1951:5;-1:-1:-1;2008:2:1;1993:18;;1980:32;2021:33;1980:32;2021:33;:::i;:::-;1681:456;;2073:7;;-1:-1:-1;;;2127:2:1;2112:18;;;;2099:32;;1681:456::o;2142:247::-;2201:6;2254:2;2242:9;2233:7;2229:23;2225:32;2222:52;;;2270:1;2267;2260:12;2222:52;2309:9;2296:23;2328:31;2353:5;2328:31;:::i;2394:180::-;2453:6;2506:2;2494:9;2485:7;2481:23;2477:32;2474:52;;;2522:1;2519;2512:12;2474:52;-1:-1:-1;2545:23:1;;2394:180;-1:-1:-1;2394:180:1:o;2768:160::-;2833:20;;2889:13;;2882:21;2872:32;;2862:60;;2918:1;2915;2908:12;2862:60;2768:160;;;:::o;2933:248::-;2998:6;3006;3059:2;3047:9;3038:7;3034:23;3030:32;3027:52;;;3075:1;3072;3065:12;3027:52;3111:9;3098:23;3088:33;;3140:35;3171:2;3160:9;3156:18;3140:35;:::i;:::-;3130:45;;2933:248;;;;;:::o;3618:180::-;3674:6;3727:2;3715:9;3706:7;3702:23;3698:32;3695:52;;;3743:1;3740;3733:12;3695:52;3766:26;3782:9;3766:26;:::i;3803:388::-;3871:6;3879;3932:2;3920:9;3911:7;3907:23;3903:32;3900:52;;;3948:1;3945;3938:12;3900:52;3987:9;3974:23;4006:31;4031:5;4006:31;:::i;:::-;4056:5;-1:-1:-1;4113:2:1;4098:18;;4085:32;4126:33;4085:32;4126:33;:::i;:::-;4178:7;4168:17;;;3803:388;;;;;:::o;4196:356::-;4398:2;4380:21;;;4417:18;;;4410:30;4476:34;4471:2;4456:18;;4449:62;4543:2;4528:18;;4196:356::o;4909:127::-;4970:10;4965:3;4961:20;4958:1;4951:31;5001:4;4998:1;4991:15;5025:4;5022:1;5015:15;5041:127;5102:10;5097:3;5093:20;5090:1;5083:31;5133:4;5130:1;5123:15;5157:4;5154:1;5147:15;5173:125;5213:4;5241:1;5238;5235:8;5232:34;;;5246:18;;:::i;:::-;-1:-1:-1;5283:9:1;;5173:125::o;5303:127::-;5364:10;5359:3;5355:20;5352:1;5345:31;5395:4;5392:1;5385:15;5419:4;5416:1;5409:15;5435:135;5474:3;-1:-1:-1;;5495:17:1;;5492:43;;;5515:18;;:::i;:::-;-1:-1:-1;5562:1:1;5551:13;;5435:135::o;6698:400::-;6900:2;6882:21;;;6939:2;6919:18;;;6912:30;6978:34;6973:2;6958:18;;6951:62;-1:-1:-1;;;7044:2:1;7029:18;;7022:34;7088:3;7073:19;;6698:400::o;7103:128::-;7143:3;7174:1;7170:6;7167:1;7164:13;7161:39;;;7180:18;;:::i;:::-;-1:-1:-1;7216:9:1;;7103:128::o;7592:422::-;7681:1;7724:5;7681:1;7738:270;7759:7;7749:8;7746:21;7738:270;;;7818:4;7814:1;7810:6;7806:17;7800:4;7797:27;7794:53;;;7827:18;;:::i;:::-;7877:7;7867:8;7863:22;7860:55;;;7897:16;;;;7860:55;7976:22;;;;7936:15;;;;7738:270;;;7742:3;7592:422;;;;;:::o;8019:806::-;8068:5;8098:8;8088:80;;-1:-1:-1;8139:1:1;8153:5;;8088:80;8187:4;8177:76;;-1:-1:-1;8224:1:1;8238:5;;8177:76;8269:4;8287:1;8282:59;;;;8355:1;8350:130;;;;8262:218;;8282:59;8312:1;8303:10;;8326:5;;;8350:130;8387:3;8377:8;8374:17;8371:43;;;8394:18;;:::i;:::-;-1:-1:-1;;8450:1:1;8436:16;;8465:5;;8262:218;;8564:2;8554:8;8551:16;8545:3;8539:4;8536:13;8532:36;8526:2;8516:8;8513:16;8508:2;8502:4;8499:12;8495:35;8492:77;8489:159;;;-1:-1:-1;8601:19:1;;;8633:5;;8489:159;8680:34;8705:8;8699:4;8680:34;:::i;:::-;8750:6;8746:1;8742:6;8738:19;8729:7;8726:32;8723:58;;;8761:18;;:::i;:::-;8799:20;;8019:806;-1:-1:-1;;;8019:806:1:o;8830:140::-;8888:5;8917:47;8958:4;8948:8;8944:19;8938:4;8917:47;:::i;8975:168::-;9015:7;9081:1;9077;9073:6;9069:14;9066:1;9063:21;9058:1;9051:9;9044:17;9040:45;9037:71;;;9088:18;;:::i;:::-;-1:-1:-1;9128:9:1;;8975:168::o;11865:217::-;11905:1;11931;11921:132;;11975:10;11970:3;11966:20;11963:1;11956:31;12010:4;12007:1;12000:15;12038:4;12035:1;12028:15;11921:132;-1:-1:-1;12067:9:1;;11865:217::o;12575:251::-;12645:6;12698:2;12686:9;12677:7;12673:23;12669:32;12666:52;;;12714:1;12711;12704:12;12666:52;12746:9;12740:16;12765:31;12790:5;12765:31;:::i;12831:980::-;13093:4;13141:3;13130:9;13126:19;13172:6;13161:9;13154:25;13198:2;13236:6;13231:2;13220:9;13216:18;13209:34;13279:3;13274:2;13263:9;13259:18;13252:31;13303:6;13338;13332:13;13369:6;13361;13354:22;13407:3;13396:9;13392:19;13385:26;;13446:2;13438:6;13434:15;13420:29;;13467:1;13477:195;13491:6;13488:1;13485:13;13477:195;;;13556:13;;-1:-1:-1;;;;;13552:39:1;13540:52;;13647:15;;;;13612:12;;;;13588:1;13506:9;13477:195;;;-1:-1:-1;;;;;;;13728:32:1;;;;13723:2;13708:18;;13701:60;-1:-1:-1;;;13792:3:1;13777:19;13770:35;13689:3;12831:980;-1:-1:-1;;;12831:980:1:o;16182:306::-;16270:6;16278;16286;16339:2;16327:9;16318:7;16314:23;16310:32;16307:52;;;16355:1;16352;16345:12;16307:52;16384:9;16378:16;16368:26;;16434:2;16423:9;16419:18;16413:25;16403:35;;16478:2;16467:9;16463:18;16457:25;16447:35;;16182:306;;;;;:::o

Swarm Source

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