ETH Price: $3,401.34 (-0.49%)
Gas: 18 Gwei

Token

Reliablz (RELIABLZ)
 

Overview

Max Total Supply

100,000,000 RELIABLZ

Holders

113

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
967,414.213690237852265528 RELIABLZ

Value
$0.00
0x8f30770b1d55e59543a117493e22361f8442c4b9
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:
RELIABLZ

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-15
*/

/**

Website:   https://www.reliablz.com
DApp:      https://www.reliablz.com/dApp/overview 
Docs:      https://docs.reliablz.com

Twitter:   https://twitter.com/reliablz_coin
Telegram:  https://t.me/reliablz

*/

// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.9.0;

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

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

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked { 
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.
     *

     * _Available since v3.4._
     */
    function trySub(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

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

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

    /**
     * @dev 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 `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, 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 `from` to `to` 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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

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

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint);

    function price1CumulativeLast() external view returns (uint);

    function kLast() external view returns (uint);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountToken, uint amountETH);

    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapExactETHForTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);

    function swapTokensForExactETH(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapExactTokensForETH(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapETHForExactTokens(
        uint amountOut,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);

    function quote(
        uint amountA,
        uint reserveA,
        uint reserveB
    ) external pure returns (uint amountB);

    function getAmountOut(
        uint amountIn,
        uint reserveIn,
        uint reserveOut
    ) external pure returns (uint amountOut);

    function getAmountIn(
        uint amountOut,
        uint reserveIn,
        uint reserveOut
    ) external pure returns (uint amountIn);

    function getAmountsOut(
        uint amountIn,
        address[] calldata path
    ) external view returns (uint[] memory amounts);

    function getAmountsIn(
        uint amountOut,
        address[] calldata path
    ) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);

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

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

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

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

contract RELIABLZ is Context, IERC20, Ownable {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private isMarketPair;
    mapping(address => bool) internal _isManager;

    address payable private _taxWallet = payable(0xD26fdd3FA374bA13E2986896cf355d390b3f54D2);
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;

    uint256 private _buyTax = 20;
    uint256 private _sellTax = 20;
    uint256 private _initialTax = 2;

    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 100_000_000 * 10 ** _decimals;
    string private constant _name = unicode"Reliablz";
    string private constant _symbol = unicode"RELIABLZ";
    uint256 public _maxWalletSize = (_tTotal * 15) / 1000; // 1.5% of total supply
    uint256 private swapThreshold = (_tTotal * 10) / 10000; // 1% of total supply

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    bool public tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = false;

    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _isManager[owner()] = true;

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(_taxWallet, true);

        _mint(_msgSender(), _tTotal);
    }

    function addLiquidity() external payable onlyOwner {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), ~uint256(0));

        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );

        _setAutomatedMarketMakerPair(uniswapV2Pair, true);
    }

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function _mint(address account, uint256 amount) private {
        _balances[account] = amount;
        emit Transfer(address(0), account, amount);
    }

    function removeLimit() external onlyOwner {
        _buyTax = 2;
        _sellTax = 2;
        _initialTax = 2;

        _maxWalletSize = ~uint256(0);
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

    /** @dev Enable trading.
     * @notice Can only be called by the current owner.
     * @notice Can only be called once.
     */
    function enableTrading() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        tradingOpen = true;
        swapEnabled = true;
    }

    // Transfer functions

    function transfer(
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    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
    ) external override returns (bool) {
        require(
            _allowances[sender][_msgSender()] >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        _transferFrom(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()] - amount
        );

        return true;
    }

    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 _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        require(
            _isExcludedFromFees[sender] ||
                _isExcludedFromFees[recipient] ||
                _isManager[sender] ||
                _isManager[recipient] ||
                tradingOpen,
            "Not authorized to trade yet"
        );

        uint256 _limit = _maxWalletSize;

        if (sender != owner() && recipient != owner() && recipient != DEAD) {
            if (!isMarketPair[recipient]) {
                require(
                    _isExcludedFromFees[recipient] ||
                        _isExcludedFromFees[sender] ||
                        (_balances[recipient] + amount <= _limit),
                    "Transfer amount exceeds the MaxWallet size."
                );
            }
        }

        if (shouldSwapBack() && isMarketPair[recipient] && !_isExcludedFromFees[sender]) {
            swapBack();
        }

        if (inSwap) {
            _basicTransfer(sender, recipient, amount);
        } else {
            uint256 feeAmount = 0;

            if (!shouldTakeFees(sender) && amount < _maxWalletSize) {
                feeAmount = 0;
            } else {
                feeAmount = takeTxFees(sender, recipient, amount);
            }

            if (feeAmount > 0 || !swapEnabled) {
                _balances[sender] = _balances[sender] - amount;
                _balances[address(this)] += feeAmount;
                emit Transfer(sender, address(this), feeAmount);
            }

            _balances[recipient] = _balances[recipient] + (amount - feeAmount);
            emit Transfer(sender, recipient, amount - feeAmount);
        }

        return true;
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + (amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function shouldTakeFees(address sender) internal view returns (bool) {
        return !_isExcludedFromFees[sender];
    }

    function takeTxFees(
        address sender,
        address recipient,
        uint256 amount
    ) private view returns (uint256) {
        uint256 feeAmount = 0;
        uint256 tax = swapEnabled ? _initialTax : 0;
        if (
            isMarketPair[sender] &&
            !isMarketPair[recipient]
        ) {
            tax = _buyTax;
        } else if (
            !isMarketPair[sender] &&
            isMarketPair[recipient]
        ) {
            tax = _sellTax;
        }

        feeAmount = (amount * tax) / 100;

        return feeAmount;
    }

    function shouldSwapBack() internal view returns (bool) {
        return
            !isMarketPair[msg.sender] &&
            !inSwap &&
            swapEnabled &&
            balanceOf(address(this)) > 0 ;
    }

    function setSwapThreshold(uint256 newTax) external onlyOwner {
        swapThreshold = newTax;
    }

    function swapBack() internal lockTheSwap {
        uint256 amountToSwap = balanceOf(address(this));

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

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        payable(_taxWallet).transfer(address(this).balance);
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTax","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600680546001600160a01b03191673d26fdd3fa374ba13e2986896cf355d390b3f54d21790556014600781905560085560026009556103e86200004a6012600a620003de565b6200005a906305f5e100620003f6565b6200006790600f620003f6565b62000073919062000410565b600a556127106012600a620000899190620003de565b62000099906305f5e100620003f6565b620000a690600a620003f6565b620000b2919062000410565b600b55600d805462ffffff60a01b19169055348015620000d157600080fd5b50620000dd3362000192565b600160056000620000f66000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556200013d620001356000546001600160a01b031690565b6001620001e2565b6200014a306001620001e2565b60065462000163906001600160a01b03166001620001e2565b6200018c33620001766012600a620003de565b62000186906305f5e100620003f6565b62000217565b62000433565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620001ec62000268565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6001600160a01b0382166000818152600160209081526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6000546001600160a01b03163314620002c75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000320578160001904821115620003045762000304620002c9565b808516156200031257918102915b93841c9390800290620002e4565b509250929050565b6000826200033957506001620003d8565b816200034857506000620003d8565b81600181146200036157600281146200036c576200038c565b6001915050620003d8565b60ff841115620003805762000380620002c9565b50506001821b620003d8565b5060208310610133831016604e8410600b8410161715620003b1575081810a620003d8565b620003bd8383620002df565b8060001904821115620003d457620003d4620002c9565b0290505b92915050565b6000620003ef60ff84168362000328565b9392505050565b8082028115828204841417620003d857620003d8620002c9565b6000826200042e57634e487b7160e01b600052601260045260246000fd5b500490565b6117a780620004436000396000f3fe60806040526004361061012e5760003560e01c80638da5cb5b116100ab578063a9059cbb1161006f578063a9059cbb14610360578063c024666814610380578063dd62ed3e146103a0578063e8078d94146103e6578063f2fde38b146103ee578063ffb54a991461040e57600080fd5b80638da5cb5b146102bb5780638f9a55c0146102d957806395d89b41146102ef5780639a7a23d6146103205780639d0014b11461034057600080fd5b806349bd5a5e116100f257806349bd5a5e1461020c578063622565891461024457806370a082311461025b578063715018a6146102915780638a8c523c146102a657600080fd5b806306fdde031461013a578063095ea7b31461017d57806318160ddd146101ad57806323b872dd146101d0578063313ce567146101f057600080fd5b3661013557005b600080fd5b34801561014657600080fd5b506040805180820190915260088152672932b634b0b1363d60c11b60208201525b60405161017491906113c5565b60405180910390f35b34801561018957600080fd5b5061019d610198366004611428565b61042f565b6040519015158152602001610174565b3480156101b957600080fd5b506101c2610446565b604051908152602001610174565b3480156101dc57600080fd5b5061019d6101eb366004611454565b610467565b3480156101fc57600080fd5b5060405160128152602001610174565b34801561021857600080fd5b50600d5461022c906001600160a01b031681565b6040516001600160a01b039091168152602001610174565b34801561025057600080fd5b50610259610541565b005b34801561026757600080fd5b506101c2610276366004611495565b6001600160a01b031660009081526001602052604090205490565b34801561029d57600080fd5b50610259610560565b3480156102b257600080fd5b50610259610574565b3480156102c757600080fd5b506000546001600160a01b031661022c565b3480156102e557600080fd5b506101c2600a5481565b3480156102fb57600080fd5b506040805180820190915260088152672922a624a0a1262d60c11b6020820152610167565b34801561032c57600080fd5b5061025961033b3660046114b2565b6105ef565b34801561034c57600080fd5b5061025961035b3660046114f0565b610678565b34801561036c57600080fd5b5061019d61037b366004611428565b610685565b34801561038c57600080fd5b5061025961039b3660046114b2565b610699565b3480156103ac57600080fd5b506101c26103bb366004611509565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6102596106cc565b3480156103fa57600080fd5b50610259610409366004611495565b61095e565b34801561041a57600080fd5b50600d5461019d90600160a01b900460ff1681565b600061043c3384846109d4565b5060015b92915050565b60006104546012600a611631565b610462906305f5e100611640565b905090565b6001600160a01b03831660009081526002602090815260408083203384529091528120548211156104f05760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6104fb848484610af8565b506001600160a01b038416600090815260026020908152604080832033808552925290912054610537918691610532908690611657565b6109d4565b5060019392505050565b610549610f2d565b600260078190556008819055600955600019600a55565b610568610f2d565b6105726000610f87565b565b61057c610f2d565b600d54600160a01b900460ff16156105d65760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104e7565b600d805462ff00ff60a01b19166201000160a01b179055565b6105f7610f2d565b600d546001600160a01b039081169083160361066a5760405162461bcd60e51b815260206004820152602c60248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201526b34b9a6b0b935b2ba2830b4b960a11b60648201526084016104e7565b6106748282610fd7565b5050565b610680610f2d565b600b55565b6000610692338484610af8565b9392505050565b6106a1610f2d565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6106d4610f2d565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561072b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074f919061166a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561079c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c0919061166a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561080d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610831919061166a565b600d80546001600160a01b039283166001600160a01b031991821617909155600c8054928416929091168217905561086d9030906000196109d4565b600c546001600160a01b031663f305d719343061089f816001600160a01b031660009081526001602052604090205490565b6000806108b46000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561091c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906109419190611687565b5050600d5461095b91506001600160a01b03166001610fd7565b50565b610966610f2d565b6001600160a01b0381166109cb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104e7565b61095b81610f87565b6001600160a01b038316610a365760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104e7565b6001600160a01b038216610a975760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104e7565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526003602052604081205460ff1680610b3757506001600160a01b03831660009081526003602052604090205460ff165b80610b5a57506001600160a01b03841660009081526005602052604090205460ff165b80610b7d57506001600160a01b03831660009081526005602052604090205460ff165b80610b915750600d54600160a01b900460ff165b610bdd5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420617574686f72697a656420746f20747261646520796574000000000060448201526064016104e7565b600a546000546001600160a01b03868116911614801590610c0c57506000546001600160a01b03858116911614155b8015610c2357506001600160a01b03841661dead14155b15610d16576001600160a01b03841660009081526004602052604090205460ff16610d16576001600160a01b03841660009081526003602052604090205460ff1680610c8757506001600160a01b03851660009081526003602052604090205460ff165b80610cb657506001600160a01b0384166000908152600160205260409020548190610cb39085906116b5565b11155b610d165760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657220616d6f756e74206578636565647320746865204d61785760448201526a30b63632ba1039b4bd329760a91b60648201526084016104e7565b610d1e611002565b8015610d4257506001600160a01b03841660009081526004602052604090205460ff165b8015610d6757506001600160a01b03851660009081526003602052604090205460ff16155b15610d7457610d7461105e565b600d54600160a81b900460ff1615610d9757610d9185858561122b565b50610f22565b6001600160a01b03851660009081526003602052604081205460ff1615158015610dc25750600a5484105b15610dcf57506000610ddd565b610dda8686866112e5565b90505b6000811180610df65750600d54600160b01b900460ff16155b15610e98576001600160a01b038616600090815260016020526040902054610e1f908590611657565b6001600160a01b038716600090815260016020526040808220929092553081529081208054839290610e529084906116b5565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b610ea28185611657565b6001600160a01b038616600090815260016020526040902054610ec591906116b5565b6001600160a01b0380871660008181526001602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610f0f8488611657565b60405190815260200160405180910390a3505b506001949350505050565b6000546001600160a01b031633146105725760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b3360009081526004602052604081205460ff1615801561102c5750600d54600160a81b900460ff16155b80156110415750600d54600160b01b900460ff165b801561046257503060009081526001602052604081205411905090565b600d805460ff60a81b1916600160a81b17905530600090815260016020526040812054604080516002808252606082019092529192506000919081602001602082028036833701905050905030816000815181106110be576110be6116c8565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113b919061166a565b8160018151811061114e5761114e6116c8565b6001600160a01b039283166020918202929092010152600c5461117491309116846109d4565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906111ad9085906000908690309042906004016116de565b600060405180830381600087803b1580156111c757600080fd5b505af11580156111db573d6000803e3d6000fd5b50506006546040516001600160a01b0390911692504780156108fc029250906000818181858888f19350505050158015611219573d6000803e3d6000fd5b5050600d805460ff60a81b1916905550565b6001600160a01b03831660009081526001602052604081205461124f908390611657565b6001600160a01b03808616600090815260016020526040808220939093559085168152205461127f9083906116b5565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112d39086815260200190565b60405180910390a35060019392505050565b600d5460009081908190600160b01b900460ff16611304576000611308565b6009545b6001600160a01b03871660009081526004602052604090205490915060ff16801561134c57506001600160a01b03851660009081526004602052604090205460ff16155b1561135a57506007546113a5565b6001600160a01b03861660009081526004602052604090205460ff1615801561139b57506001600160a01b03851660009081526004602052604090205460ff165b156113a557506008545b60646113b18286611640565b6113bb919061174f565b9695505050505050565b600060208083528351808285015260005b818110156113f2578581018301518582016040015282016113d6565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461095b57600080fd5b6000806040838503121561143b57600080fd5b823561144681611413565b946020939093013593505050565b60008060006060848603121561146957600080fd5b833561147481611413565b9250602084013561148481611413565b929592945050506040919091013590565b6000602082840312156114a757600080fd5b813561069281611413565b600080604083850312156114c557600080fd5b82356114d081611413565b9150602083013580151581146114e557600080fd5b809150509250929050565b60006020828403121561150257600080fd5b5035919050565b6000806040838503121561151c57600080fd5b823561152781611413565b915060208301356114e581611413565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561158857816000190482111561156e5761156e611537565b8085161561157b57918102915b93841c9390800290611552565b509250929050565b60008261159f57506001610440565b816115ac57506000610440565b81600181146115c257600281146115cc576115e8565b6001915050610440565b60ff8411156115dd576115dd611537565b50506001821b610440565b5060208310610133831016604e8410600b841016171561160b575081810a610440565b611615838361154d565b806000190482111561162957611629611537565b029392505050565b600061069260ff841683611590565b808202811582820484141761044057610440611537565b8181038181111561044057610440611537565b60006020828403121561167c57600080fd5b815161069281611413565b60008060006060848603121561169c57600080fd5b8351925060208401519150604084015190509250925092565b8082018082111561044057610440611537565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561172e5784516001600160a01b031683529383019391830191600101611709565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261176c57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220da3931fec6a50f05869a117b93da4d20a86f97a5d3481f5de2545700b00154d964736f6c63430008130033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c80638da5cb5b116100ab578063a9059cbb1161006f578063a9059cbb14610360578063c024666814610380578063dd62ed3e146103a0578063e8078d94146103e6578063f2fde38b146103ee578063ffb54a991461040e57600080fd5b80638da5cb5b146102bb5780638f9a55c0146102d957806395d89b41146102ef5780639a7a23d6146103205780639d0014b11461034057600080fd5b806349bd5a5e116100f257806349bd5a5e1461020c578063622565891461024457806370a082311461025b578063715018a6146102915780638a8c523c146102a657600080fd5b806306fdde031461013a578063095ea7b31461017d57806318160ddd146101ad57806323b872dd146101d0578063313ce567146101f057600080fd5b3661013557005b600080fd5b34801561014657600080fd5b506040805180820190915260088152672932b634b0b1363d60c11b60208201525b60405161017491906113c5565b60405180910390f35b34801561018957600080fd5b5061019d610198366004611428565b61042f565b6040519015158152602001610174565b3480156101b957600080fd5b506101c2610446565b604051908152602001610174565b3480156101dc57600080fd5b5061019d6101eb366004611454565b610467565b3480156101fc57600080fd5b5060405160128152602001610174565b34801561021857600080fd5b50600d5461022c906001600160a01b031681565b6040516001600160a01b039091168152602001610174565b34801561025057600080fd5b50610259610541565b005b34801561026757600080fd5b506101c2610276366004611495565b6001600160a01b031660009081526001602052604090205490565b34801561029d57600080fd5b50610259610560565b3480156102b257600080fd5b50610259610574565b3480156102c757600080fd5b506000546001600160a01b031661022c565b3480156102e557600080fd5b506101c2600a5481565b3480156102fb57600080fd5b506040805180820190915260088152672922a624a0a1262d60c11b6020820152610167565b34801561032c57600080fd5b5061025961033b3660046114b2565b6105ef565b34801561034c57600080fd5b5061025961035b3660046114f0565b610678565b34801561036c57600080fd5b5061019d61037b366004611428565b610685565b34801561038c57600080fd5b5061025961039b3660046114b2565b610699565b3480156103ac57600080fd5b506101c26103bb366004611509565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6102596106cc565b3480156103fa57600080fd5b50610259610409366004611495565b61095e565b34801561041a57600080fd5b50600d5461019d90600160a01b900460ff1681565b600061043c3384846109d4565b5060015b92915050565b60006104546012600a611631565b610462906305f5e100611640565b905090565b6001600160a01b03831660009081526002602090815260408083203384529091528120548211156104f05760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6104fb848484610af8565b506001600160a01b038416600090815260026020908152604080832033808552925290912054610537918691610532908690611657565b6109d4565b5060019392505050565b610549610f2d565b600260078190556008819055600955600019600a55565b610568610f2d565b6105726000610f87565b565b61057c610f2d565b600d54600160a01b900460ff16156105d65760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104e7565b600d805462ff00ff60a01b19166201000160a01b179055565b6105f7610f2d565b600d546001600160a01b039081169083160361066a5760405162461bcd60e51b815260206004820152602c60248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201526b34b9a6b0b935b2ba2830b4b960a11b60648201526084016104e7565b6106748282610fd7565b5050565b610680610f2d565b600b55565b6000610692338484610af8565b9392505050565b6106a1610f2d565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6106d4610f2d565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561072b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074f919061166a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561079c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c0919061166a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561080d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610831919061166a565b600d80546001600160a01b039283166001600160a01b031991821617909155600c8054928416929091168217905561086d9030906000196109d4565b600c546001600160a01b031663f305d719343061089f816001600160a01b031660009081526001602052604090205490565b6000806108b46000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561091c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906109419190611687565b5050600d5461095b91506001600160a01b03166001610fd7565b50565b610966610f2d565b6001600160a01b0381166109cb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104e7565b61095b81610f87565b6001600160a01b038316610a365760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104e7565b6001600160a01b038216610a975760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104e7565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526003602052604081205460ff1680610b3757506001600160a01b03831660009081526003602052604090205460ff165b80610b5a57506001600160a01b03841660009081526005602052604090205460ff165b80610b7d57506001600160a01b03831660009081526005602052604090205460ff165b80610b915750600d54600160a01b900460ff165b610bdd5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420617574686f72697a656420746f20747261646520796574000000000060448201526064016104e7565b600a546000546001600160a01b03868116911614801590610c0c57506000546001600160a01b03858116911614155b8015610c2357506001600160a01b03841661dead14155b15610d16576001600160a01b03841660009081526004602052604090205460ff16610d16576001600160a01b03841660009081526003602052604090205460ff1680610c8757506001600160a01b03851660009081526003602052604090205460ff165b80610cb657506001600160a01b0384166000908152600160205260409020548190610cb39085906116b5565b11155b610d165760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657220616d6f756e74206578636565647320746865204d61785760448201526a30b63632ba1039b4bd329760a91b60648201526084016104e7565b610d1e611002565b8015610d4257506001600160a01b03841660009081526004602052604090205460ff165b8015610d6757506001600160a01b03851660009081526003602052604090205460ff16155b15610d7457610d7461105e565b600d54600160a81b900460ff1615610d9757610d9185858561122b565b50610f22565b6001600160a01b03851660009081526003602052604081205460ff1615158015610dc25750600a5484105b15610dcf57506000610ddd565b610dda8686866112e5565b90505b6000811180610df65750600d54600160b01b900460ff16155b15610e98576001600160a01b038616600090815260016020526040902054610e1f908590611657565b6001600160a01b038716600090815260016020526040808220929092553081529081208054839290610e529084906116b5565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b610ea28185611657565b6001600160a01b038616600090815260016020526040902054610ec591906116b5565b6001600160a01b0380871660008181526001602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610f0f8488611657565b60405190815260200160405180910390a3505b506001949350505050565b6000546001600160a01b031633146105725760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b3360009081526004602052604081205460ff1615801561102c5750600d54600160a81b900460ff16155b80156110415750600d54600160b01b900460ff165b801561046257503060009081526001602052604081205411905090565b600d805460ff60a81b1916600160a81b17905530600090815260016020526040812054604080516002808252606082019092529192506000919081602001602082028036833701905050905030816000815181106110be576110be6116c8565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113b919061166a565b8160018151811061114e5761114e6116c8565b6001600160a01b039283166020918202929092010152600c5461117491309116846109d4565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906111ad9085906000908690309042906004016116de565b600060405180830381600087803b1580156111c757600080fd5b505af11580156111db573d6000803e3d6000fd5b50506006546040516001600160a01b0390911692504780156108fc029250906000818181858888f19350505050158015611219573d6000803e3d6000fd5b5050600d805460ff60a81b1916905550565b6001600160a01b03831660009081526001602052604081205461124f908390611657565b6001600160a01b03808616600090815260016020526040808220939093559085168152205461127f9083906116b5565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112d39086815260200190565b60405180910390a35060019392505050565b600d5460009081908190600160b01b900460ff16611304576000611308565b6009545b6001600160a01b03871660009081526004602052604090205490915060ff16801561134c57506001600160a01b03851660009081526004602052604090205460ff16155b1561135a57506007546113a5565b6001600160a01b03861660009081526004602052604090205460ff1615801561139b57506001600160a01b03851660009081526004602052604090205460ff165b156113a557506008545b60646113b18286611640565b6113bb919061174f565b9695505050505050565b600060208083528351808285015260005b818110156113f2578581018301518582016040015282016113d6565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461095b57600080fd5b6000806040838503121561143b57600080fd5b823561144681611413565b946020939093013593505050565b60008060006060848603121561146957600080fd5b833561147481611413565b9250602084013561148481611413565b929592945050506040919091013590565b6000602082840312156114a757600080fd5b813561069281611413565b600080604083850312156114c557600080fd5b82356114d081611413565b9150602083013580151581146114e557600080fd5b809150509250929050565b60006020828403121561150257600080fd5b5035919050565b6000806040838503121561151c57600080fd5b823561152781611413565b915060208301356114e581611413565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561158857816000190482111561156e5761156e611537565b8085161561157b57918102915b93841c9390800290611552565b509250929050565b60008261159f57506001610440565b816115ac57506000610440565b81600181146115c257600281146115cc576115e8565b6001915050610440565b60ff8411156115dd576115dd611537565b50506001821b610440565b5060208310610133831016604e8410600b841016171561160b575081810a610440565b611615838361154d565b806000190482111561162957611629611537565b029392505050565b600061069260ff841683611590565b808202811582820484141761044057610440611537565b8181038181111561044057610440611537565b60006020828403121561167c57600080fd5b815161069281611413565b60008060006060848603121561169c57600080fd5b8351925060208401519150604084015190509250925092565b8082018082111561044057610440611537565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561172e5784516001600160a01b031683529383019391830191600101611709565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261176c57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220da3931fec6a50f05869a117b93da4d20a86f97a5d3481f5de2545700b00154d964736f6c63430008130033

Deployed Bytecode Sourcemap

21845:9422:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24249:83;;;;;;;;;;-1:-1:-1;24319:5:0;;;;;;;;;;;;-1:-1:-1;;;24319:5:0;;;;24249:83;;;;;;;:::i;:::-;;;;;;;;26363:186;;;;;;;;;;-1:-1:-1;26363:186:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;26363:186:0;1023:187:1;24526:95:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;24526:95:0;1215:177:1;26557:502:0;;;;;;;;;;-1:-1:-1;26557:502:0;;;;;:::i;:::-;;:::i;24435:83::-;;;;;;;;;;-1:-1:-1;24435:83:0;;22547:2;2000:36:1;;1988:2;1973:18;24435:83:0;1858:184:1;22959:28:0;;;;;;;;;;-1:-1:-1;22959:28:0;;;;-1:-1:-1;;;;;22959:28:0;;;;;;-1:-1:-1;;;;;2211:32:1;;;2193:51;;2181:2;2166:18;22959:28:0;2047:203:1;24919:162:0;;;;;;;;;;;;;:::i;:::-;;24629:119;;;;;;;;;;-1:-1:-1;24629:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;24722:18:0;24695:7;24722:18;;;:9;:18;;;;;;;24629:119;8927:103;;;;;;;;;;;;;:::i;25792:169::-;;;;;;;;;;;;;:::i;8286:87::-;;;;;;;;;;-1:-1:-1;8332:7:0;8359:6;-1:-1:-1;;;;;8359:6:0;8286:87;;22741:53;;;;;;;;;;;;;;;;24340:87;;;;;;;;;;-1:-1:-1;24412:7:0;;;;;;;;;;;;-1:-1:-1;;;24412:7:0;;;;24340:87;;25229:293;;;;;;;;;;-1:-1:-1;25229:293:0;;;;;:::i;:::-;;:::i;30530:102::-;;;;;;;;;;-1:-1:-1;30530:102:0;;;;;:::i;:::-;;:::i;25998:181::-;;;;;;;;;;-1:-1:-1;25998:181:0;;;;;:::i;:::-;;:::i;25089:132::-;;;;;;;;;;-1:-1:-1;25089:132:0;;;;;:::i;:::-;;:::i;26187:168::-;;;;;;;;;;-1:-1:-1;26187:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;26320:18:0;;;26293:7;26320:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;26187:168;23449:792;;;:::i;9185:238::-;;;;;;;;;;-1:-1:-1;9185:238:0;;;;;:::i;:::-;;:::i;22994:31::-;;;;;;;;;;-1:-1:-1;22994:31:0;;;;-1:-1:-1;;;22994:31:0;;;;;;26363:186;26463:4;26480:39;407:10;26503:7;26512:6;26480:8;:39::i;:::-;-1:-1:-1;26537:4:0;26363:186;;;;;:::o;24526:95::-;24579:7;22605:15;22547:2;22605;:15;:::i;:::-;22591:29;;:11;:29;:::i;:::-;24599:14;;24526:95;:::o;26557:502::-;-1:-1:-1;;;;;26730:19:0;;26691:4;26730:19;;;:11;:19;;;;;;;;407:10;26730:33;;;;;;;;:43;-1:-1:-1;26730:43:0;26708:133;;;;-1:-1:-1;;;26708:133:0;;5396:2:1;26708:133:0;;;5378:21:1;5435:2;5415:18;;;5408:30;5474:34;5454:18;;;5447:62;-1:-1:-1;;;5525:18:1;;;5518:38;5573:19;;26708:133:0;;;;;;;;;26852:40;26866:6;26874:9;26885:6;26852:13;:40::i;:::-;-1:-1:-1;;;;;;26974:19:0;;;;;;:11;:19;;;;;;;;407:10;26974:33;;;;;;;;;26903:124;;26926:6;;26974:42;;27010:6;;26974:42;:::i;:::-;26903:8;:124::i;:::-;-1:-1:-1;27047:4:0;26557:502;;;;;:::o;24919:162::-;8172:13;:11;:13::i;:::-;24982:1:::1;24972:7;:11:::0;;;24994:8:::1;:12:::0;;;25017:11:::1;:15:::0;-1:-1:-1;;25045:14:0::1;:28:::0;24919:162::o;8927:103::-;8172:13;:11;:13::i;:::-;8992:30:::1;9019:1;8992:18;:30::i;:::-;8927:103::o:0;25792:169::-;8172:13;:11;:13::i;:::-;25856:11:::1;::::0;-1:-1:-1;;;25856:11:0;::::1;;;25855:12;25847:48;;;::::0;-1:-1:-1;;;25847:48:0;;5938:2:1;25847:48:0::1;::::0;::::1;5920:21:1::0;5977:2;5957:18;;;5950:30;6016:25;5996:18;;;5989:53;6059:18;;25847:48:0::1;5736:347:1::0;25847:48:0::1;25906:11;:18:::0;;-1:-1:-1;;;;25935:18:0;-1:-1:-1;;;25935:18:0;;;25792:169::o;25229:293::-;8172:13;:11;:13::i;:::-;25375::::1;::::0;-1:-1:-1;;;;;25375:13:0;;::::1;25367:21:::0;;::::1;::::0;25345:115:::1;;;::::0;-1:-1:-1;;;25345:115:0;;6290:2:1;25345:115:0::1;::::0;::::1;6272:21:1::0;6329:2;6309:18;;;6302:30;6368:34;6348:18;;;6341:62;-1:-1:-1;;;6419:18:1;;;6412:42;6471:19;;25345:115:0::1;6088:408:1::0;25345:115:0::1;25473:41;25502:4;25508:5;25473:28;:41::i;:::-;25229:293:::0;;:::o;30530:102::-;8172:13;:11;:13::i;:::-;30602::::1;:22:::0;30530:102::o;25998:181::-;26103:4;26127:44;26141:10;26153:9;26164:6;26127:13;:44::i;:::-;26120:51;25998:181;-1:-1:-1;;;25998:181:0:o;25089:132::-;8172:13;:11;:13::i;:::-;-1:-1:-1;;;;;25174:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;25174:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25089:132::o;23449:792::-;8172:13;:11;:13::i;:::-;23511:35:::1;23582:42;23511:124;;23735:16;-1:-1:-1::0;;;;;23735:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23717:70:0::1;;23796:4;23803:16;-1:-1:-1::0;;;;;23803:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23717:110;::::0;-1:-1:-1;;;;;;23717:110:0::1;::::0;;;;;;-1:-1:-1;;;;;6987:15:1;;;23717:110:0::1;::::0;::::1;6969:34:1::0;7039:15;;7019:18;;;7012:43;6904:18;;23717:110:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23701:13;:126:::0;;-1:-1:-1;;;;;23701:126:0;;::::1;-1:-1:-1::0;;;;;;23701:126:0;;::::1;;::::0;;;23840:15:::1;:34:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;23885:62:::1;::::0;23902:4:::1;::::0;-1:-1:-1;;23885:8:0::1;:62::i;:::-;23960:15;::::0;-1:-1:-1;;;;;23960:15:0::1;:31;23999:9;24032:4;24052:24;24032:4:::0;-1:-1:-1;;;;;24722:18:0;24695:7;24722:18;;;:9;:18;;;;;;;24629:119;24052:24:::1;24091:1;24107::::0;24123:7:::1;8332::::0;8359:6;-1:-1:-1;;;;;8359:6:0;;8286:87;24123:7:::1;23960:211;::::0;::::1;::::0;;;-1:-1:-1;;;;;;23960:211:0;;;-1:-1:-1;;;;;7425:15:1;;;23960:211:0::1;::::0;::::1;7407:34:1::0;7457:18;;;7450:34;;;;7500:18;;;7493:34;;;;7543:18;;;7536:34;7607:15;;;7586:19;;;7579:44;24145:15:0::1;7639:19:1::0;;;7632:35;7341:19;;23960:211:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;24213:13:0::1;::::0;24184:49:::1;::::0;-1:-1:-1;;;;;;24213:13:0::1;::::0;24184:28:::1;:49::i;:::-;23500:741;23449:792::o:0;9185:238::-;8172:13;:11;:13::i;:::-;-1:-1:-1;;;;;9288:22:0;::::1;9266:110;;;::::0;-1:-1:-1;;;9266:110:0;;8191:2:1;9266:110:0::1;::::0;::::1;8173:21:1::0;8230:2;8210:18;;;8203:30;8269:34;8249:18;;;8242:62;-1:-1:-1;;;8320:18:1;;;8313:36;8366:19;;9266:110:0::1;7989:402:1::0;9266:110:0::1;9387:28;9406:8;9387:18;:28::i;27067:335::-:0;-1:-1:-1;;;;;27160:19:0;;27152:68;;;;-1:-1:-1;;;27152:68:0;;8598:2:1;27152:68:0;;;8580:21:1;8637:2;8617:18;;;8610:30;8676:34;8656:18;;;8649:62;-1:-1:-1;;;8727:18:1;;;8720:34;8771:19;;27152:68:0;8396:400:1;27152:68:0;-1:-1:-1;;;;;27239:21:0;;27231:68;;;;-1:-1:-1;;;27231:68:0;;9003:2:1;27231:68:0;;;8985:21:1;9042:2;9022:18;;;9015:30;9081:34;9061:18;;;9054:62;-1:-1:-1;;;9132:18:1;;;9125:32;9174:19;;27231:68:0;8801:398:1;27231:68:0;-1:-1:-1;;;;;27310:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;27362:32;;1361:25:1;;;27362:32:0;;1334:18:1;27362:32:0;;;;;;;27067:335;;;:::o;27410:1821::-;-1:-1:-1;;;;;27575:27:0;;27536:4;27575:27;;;:19;:27;;;;;;;;;:78;;-1:-1:-1;;;;;;27623:30:0;;;;;;:19;:30;;;;;;;;27575:78;:117;;;-1:-1:-1;;;;;;27674:18:0;;;;;;:10;:18;;;;;;;;27575:117;:159;;;-1:-1:-1;;;;;;27713:21:0;;;;;;:10;:21;;;;;;;;27575:159;:191;;;-1:-1:-1;27755:11:0;;-1:-1:-1;;;27755:11:0;;;;27575:191;27553:268;;;;-1:-1:-1;;;27553:268:0;;9406:2:1;27553:268:0;;;9388:21:1;9445:2;9425:18;;;9418:30;9484:29;9464:18;;;9457:57;9531:18;;27553:268:0;9204:351:1;27553:268:0;27851:14;;8332:7;8359:6;-1:-1:-1;;;;;27882:17:0;;;8359:6;;27882:17;;;;:41;;-1:-1:-1;8332:7:0;8359:6;-1:-1:-1;;;;;27903:20:0;;;8359:6;;27903:20;;27882:41;:62;;;;-1:-1:-1;;;;;;27927:17:0;;22350:42;27927:17;;27882:62;27878:432;;;-1:-1:-1;;;;;27966:23:0;;;;;;:12;:23;;;;;;;;27961:338;;-1:-1:-1;;;;;28040:30:0;;;;;;:19;:30;;;;;;;;;:86;;-1:-1:-1;;;;;;28099:27:0;;;;;;:19;:27;;;;;;;;28040:86;:156;;;-1:-1:-1;;;;;;28156:20:0;;;;;;:9;:20;;;;;;28189:6;;28156:29;;28179:6;;28156:29;:::i;:::-;:39;;28040:156;28010:273;;;;-1:-1:-1;;;28010:273:0;;9892:2:1;28010:273:0;;;9874:21:1;9931:2;9911:18;;;9904:30;9970:34;9950:18;;;9943:62;-1:-1:-1;;;10021:18:1;;;10014:41;10072:19;;28010:273:0;9690:407:1;28010:273:0;28326:16;:14;:16::i;:::-;:43;;;;-1:-1:-1;;;;;;28346:23:0;;;;;;:12;:23;;;;;;;;28326:43;:75;;;;-1:-1:-1;;;;;;28374:27:0;;;;;;:19;:27;;;;;;;;28373:28;28326:75;28322:118;;;28418:10;:8;:10::i;:::-;28456:6;;-1:-1:-1;;;28456:6:0;;;;28452:748;;;28479:41;28494:6;28502:9;28513:6;28479:14;:41::i;:::-;;28452:748;;;-1:-1:-1;;;;;29671:27:0;;28553:17;29671:27;;;:19;:27;;;;;;;;29670:28;28595:23;:50;;;;;28631:14;;28622:6;:23;28595:50;28591:194;;;-1:-1:-1;28678:1:0;28591:194;;;28732:37;28743:6;28751:9;28762:6;28732:10;:37::i;:::-;28720:49;;28591:194;28817:1;28805:9;:13;:29;;;-1:-1:-1;28823:11:0;;-1:-1:-1;;;28823:11:0;;;;28822:12;28805:29;28801:238;;;-1:-1:-1;;;;;28875:17:0;;;;;;:9;:17;;;;;;:26;;28895:6;;28875:26;:::i;:::-;-1:-1:-1;;;;;28855:17:0;;;;;;:9;:17;;;;;;:46;;;;28938:4;28920:24;;;;;:37;;28948:9;;28855:17;28920:37;;28948:9;;28920:37;:::i;:::-;;;;-1:-1:-1;;28981:42:0;;1361:25:1;;;29006:4:0;;-1:-1:-1;;;;;28981:42:0;;;;;1349:2:1;1334:18;28981:42:0;;;;;;;28801:238;29102:18;29111:9;29102:6;:18;:::i;:::-;-1:-1:-1;;;;;29078:20:0;;;;;;:9;:20;;;;;;:43;;;;:::i;:::-;-1:-1:-1;;;;;29055:20:0;;;;;;;:9;:20;;;;;:66;;;;29141:47;;;29169:18;29178:9;29169:6;:18;:::i;:::-;29141:47;;1361:25:1;;;1349:2;1334:18;29141:47:0;;;;;;;28538:662;28452:748;-1:-1:-1;29219:4:0;;27410:1821;-1:-1:-1;;;;27410:1821:0:o;8451:132::-;8332:7;8359:6;-1:-1:-1;;;;;8359:6:0;407:10;8515:23;8507:68;;;;-1:-1:-1;;;8507:68:0;;10304:2:1;8507:68:0;;;10286:21:1;;;10323:18;;;10316:30;10382:34;10362:18;;;10355:62;10434:18;;8507:68:0;10102:356:1;9583:191:0;9657:16;9676:6;;-1:-1:-1;;;;;9693:17:0;;;-1:-1:-1;;;;;;9693:17:0;;;;;;9726:40;;9676:6;;;;;;;9726:40;;9657:16;9726:40;9646:128;9583:191;:::o;25530:117::-;-1:-1:-1;;;;;25613:18:0;;;;;;;;:12;:18;;;;;:26;;-1:-1:-1;;25613:26:0;;;;;;;;;;25530:117::o;30305:217::-;30405:10;30354:4;30392:24;;;:12;:24;;;;;;;;30391:25;:49;;;;-1:-1:-1;30434:6:0;;-1:-1:-1;;;30434:6:0;;;;30433:7;30391:49;:77;;;;-1:-1:-1;30457:11:0;;-1:-1:-1;;;30457:11:0;;;;30391:77;:122;;;;-1:-1:-1;30503:4:0;30512:1;24722:18;;;:9;:18;;;;;;30485:28;30371:142;;30305:217;:::o;30640:587::-;23141:6;:13;;-1:-1:-1;;;;23141:13:0;-1:-1:-1;;;23141:13:0;;;30733:4:::1;-1:-1:-1::0;24722:18:0;;;-1:-1:-1;24722:18:0;;;;;;30776:16:::1;::::0;;30790:1:::1;30776:16:::0;;;;;::::1;::::0;;;30692:47;;-1:-1:-1;30752:21:0::1;::::0;30776:16;::::1;;;;;;;;;;;::::0;-1:-1:-1;30776:16:0::1;30752:40;;30821:4;30803;30808:1;30803:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;30803:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;30847:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;30847:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;30803:7;;30847:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30837:4;30842:1;30837:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;30837:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;30914:15:::1;::::0;30882:63:::1;::::0;30899:4:::1;::::0;30914:15:::1;30932:12:::0;30882:8:::1;:63::i;:::-;30958:15;::::0;:197:::1;::::0;-1:-1:-1;;;30958:197:0;;-1:-1:-1;;;;;30958:15:0;;::::1;::::0;:66:::1;::::0;:197:::1;::::0;31039:12;;30958:15:::1;::::0;31082:4;;31109::::1;::::0;31129:15:::1;::::0;30958:197:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;31176:10:0::1;::::0;31168:51:::1;::::0;-1:-1:-1;;;;;31176:10:0;;::::1;::::0;-1:-1:-1;31197:21:0::1;31168:51:::0;::::1;;;::::0;-1:-1:-1;31197:21:0;31176:10:::1;31168:51:::0;31176:10;31168:51;31197:21;31176:10;31168:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;23177:6:0;:14;;-1:-1:-1;;;;23177:14:0;;;-1:-1:-1;30640:587:0:o;29239:336::-;-1:-1:-1;;;;;29403:17:0;;29366:4;29403:17;;;:9;:17;;;;;;:26;;29423:6;;29403:26;:::i;:::-;-1:-1:-1;;;;;29383:17:0;;;;;;;:9;:17;;;;;;:46;;;;29463:20;;;;;;;:31;;29487:6;;29463:31;:::i;:::-;-1:-1:-1;;;;;29440:20:0;;;;;;;:9;:20;;;;;;;:54;;;;29510:35;;;;;;;;;;29538:6;1361:25:1;;1349:2;1334:18;;1215:177;29510:35:0;;;;;;;;-1:-1:-1;29563:4:0;29239:336;;;;;:::o;29714:583::-;29907:11;;29841:7;;;;;;-1:-1:-1;;;29907:11:0;;;;:29;;29935:1;29907:29;;;29921:11;;29907:29;-1:-1:-1;;;;;29965:20:0;;;;;;:12;:20;;;;;;29893:43;;-1:-1:-1;29965:20:0;;:61;;;;-1:-1:-1;;;;;;30003:23:0;;;;;;:12;:23;;;;;;;;30002:24;29965:61;29947:269;;;-1:-1:-1;30059:7:0;;29947:269;;;-1:-1:-1;;;;;30103:20:0;;;;;;:12;:20;;;;;;;;30102:21;:61;;;;-1:-1:-1;;;;;;30140:23:0;;;;;;:12;:23;;;;;;;;30102:61;30084:132;;;-1:-1:-1;30196:8:0;;30084:132;30257:3;30241:12;30250:3;30241:6;:12;:::i;:::-;30240:20;;;;:::i;:::-;30228:32;29714:583;-1:-1:-1;;;;;;29714:583:0:o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2255:247::-;2314:6;2367:2;2355:9;2346:7;2342:23;2338:32;2335:52;;;2383:1;2380;2373:12;2335:52;2422:9;2409:23;2441:31;2466:5;2441:31;:::i;2507:416::-;2572:6;2580;2633:2;2621:9;2612:7;2608:23;2604:32;2601:52;;;2649:1;2646;2639:12;2601:52;2688:9;2675:23;2707:31;2732:5;2707:31;:::i;:::-;2757:5;-1:-1:-1;2814:2:1;2799:18;;2786:32;2856:15;;2849:23;2837:36;;2827:64;;2887:1;2884;2877:12;2827:64;2910:7;2900:17;;;2507:416;;;;;:::o;2928:180::-;2987:6;3040:2;3028:9;3019:7;3015:23;3011:32;3008:52;;;3056:1;3053;3046:12;3008:52;-1:-1:-1;3079:23:1;;2928:180;-1:-1:-1;2928:180:1:o;3113:388::-;3181:6;3189;3242:2;3230:9;3221:7;3217:23;3213:32;3210:52;;;3258:1;3255;3248:12;3210:52;3297:9;3284:23;3316:31;3341:5;3316:31;:::i;:::-;3366:5;-1:-1:-1;3423:2:1;3408:18;;3395:32;3436:33;3395:32;3436:33;:::i;3506:127::-;3567:10;3562:3;3558:20;3555:1;3548:31;3598:4;3595:1;3588:15;3622:4;3619:1;3612:15;3638:422;3727:1;3770:5;3727:1;3784:270;3805:7;3795:8;3792:21;3784:270;;;3864:4;3860:1;3856:6;3852:17;3846:4;3843:27;3840:53;;;3873:18;;:::i;:::-;3923:7;3913:8;3909:22;3906:55;;;3943:16;;;;3906:55;4022:22;;;;3982:15;;;;3784:270;;;3788:3;3638:422;;;;;:::o;4065:806::-;4114:5;4144:8;4134:80;;-1:-1:-1;4185:1:1;4199:5;;4134:80;4233:4;4223:76;;-1:-1:-1;4270:1:1;4284:5;;4223:76;4315:4;4333:1;4328:59;;;;4401:1;4396:130;;;;4308:218;;4328:59;4358:1;4349:10;;4372:5;;;4396:130;4433:3;4423:8;4420:17;4417:43;;;4440:18;;:::i;:::-;-1:-1:-1;;4496:1:1;4482:16;;4511:5;;4308:218;;4610:2;4600:8;4597:16;4591:3;4585:4;4582:13;4578:36;4572:2;4562:8;4559:16;4554:2;4548:4;4545:12;4541:35;4538:77;4535:159;;;-1:-1:-1;4647:19:1;;;4679:5;;4535:159;4726:34;4751:8;4745:4;4726:34;:::i;:::-;4796:6;4792:1;4788:6;4784:19;4775:7;4772:32;4769:58;;;4807:18;;:::i;:::-;4845:20;;4065:806;-1:-1:-1;;;4065:806:1:o;4876:140::-;4934:5;4963:47;5004:4;4994:8;4990:19;4984:4;4963:47;:::i;5021:168::-;5094:9;;;5125;;5142:15;;;5136:22;;5122:37;5112:71;;5163:18;;:::i;5603:128::-;5670:9;;;5691:11;;;5688:37;;;5705:18;;:::i;6501:251::-;6571:6;6624:2;6612:9;6603:7;6599:23;6595:32;6592:52;;;6640:1;6637;6630:12;6592:52;6672:9;6666:16;6691:31;6716:5;6691:31;:::i;7678:306::-;7766:6;7774;7782;7835:2;7823:9;7814:7;7810:23;7806:32;7803:52;;;7851:1;7848;7841:12;7803:52;7880:9;7874:16;7864:26;;7930:2;7919:9;7915:18;7909:25;7899:35;;7974:2;7963:9;7959:18;7953:25;7943:35;;7678:306;;;;;:::o;9560:125::-;9625:9;;;9646:10;;;9643:36;;;9659:18;;:::i;10595:127::-;10656:10;10651:3;10647:20;10644:1;10637:31;10687:4;10684:1;10677:15;10711:4;10708:1;10701:15;10727:980;10989:4;11037:3;11026:9;11022:19;11068:6;11057:9;11050:25;11094:2;11132:6;11127:2;11116:9;11112:18;11105:34;11175:3;11170:2;11159:9;11155:18;11148:31;11199:6;11234;11228:13;11265:6;11257;11250:22;11303:3;11292:9;11288:19;11281:26;;11342:2;11334:6;11330:15;11316:29;;11363:1;11373:195;11387:6;11384:1;11381:13;11373:195;;;11452:13;;-1:-1:-1;;;;;11448:39:1;11436:52;;11543:15;;;;11508:12;;;;11484:1;11402:9;11373:195;;;-1:-1:-1;;;;;;;11624:32:1;;;;11619:2;11604:18;;11597:60;-1:-1:-1;;;11688:3:1;11673:19;11666:35;11585:3;10727:980;-1:-1:-1;;;10727:980:1:o;11712:217::-;11752:1;11778;11768:132;;11822:10;11817:3;11813:20;11810:1;11803:31;11857:4;11854:1;11847:15;11885:4;11882:1;11875:15;11768:132;-1:-1:-1;11914:9:1;;11712:217::o

Swarm Source

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