ETH Price: $2,462.80 (-2.45%)

Token

CreePe (CRPE)
 

Overview

Max Total Supply

785,697,939,775,498,483,503,246,178,807 CRPE

Holders

121

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Balance
3,351,920,327,613,604,310,137,862,062 CRPE

Value
$0.00
0x44a9e09778b606e73d649fb696081b0690d5d2a9
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

CreePe, is more than just a digital asset; it is a tribute to the enduring legacy of Minecraft and its iconic character, the Creeper.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
CreePe

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// File: @openzeppelin/contracts/interfaces/draft-IERC6093.sol


// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)
pragma solidity ^0.8.20;

/**
 * @dev Standard ERC20 Errors
 * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.
 */
interface IERC20Errors {
    /**
     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     * @param balance Current balance for the interacting account.
     * @param needed Minimum amount required to perform a transfer.
     */
    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);

    /**
     * @dev Indicates a failure with the token `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     */
    error ERC20InvalidSender(address sender);

    /**
     * @dev Indicates a failure with the token `receiver`. Used in transfers.
     * @param receiver Address to which tokens are being transferred.
     */
    error ERC20InvalidReceiver(address receiver);

    /**
     * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.
     * @param spender Address that may be allowed to operate on tokens without being their owner.
     * @param allowance Amount of tokens a `spender` is allowed to operate with.
     * @param needed Minimum amount required to perform a transfer.
     */
    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);

    /**
     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
     * @param approver Address initiating an approval operation.
     */
    error ERC20InvalidApprover(address approver);

    /**
     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.
     * @param spender Address that may be allowed to operate on tokens without being their owner.
     */
    error ERC20InvalidSpender(address spender);
}

/**
 * @dev Standard ERC721 Errors
 * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.
 */
interface IERC721Errors {
    /**
     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.
     * Used in balance queries.
     * @param owner Address of the current owner of a token.
     */
    error ERC721InvalidOwner(address owner);

    /**
     * @dev Indicates a `tokenId` whose `owner` is the zero address.
     * @param tokenId Identifier number of a token.
     */
    error ERC721NonexistentToken(uint256 tokenId);

    /**
     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     * @param tokenId Identifier number of a token.
     * @param owner Address of the current owner of a token.
     */
    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);

    /**
     * @dev Indicates a failure with the token `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     */
    error ERC721InvalidSender(address sender);

    /**
     * @dev Indicates a failure with the token `receiver`. Used in transfers.
     * @param receiver Address to which tokens are being transferred.
     */
    error ERC721InvalidReceiver(address receiver);

    /**
     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     * @param tokenId Identifier number of a token.
     */
    error ERC721InsufficientApproval(address operator, uint256 tokenId);

    /**
     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
     * @param approver Address initiating an approval operation.
     */
    error ERC721InvalidApprover(address approver);

    /**
     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     */
    error ERC721InvalidOperator(address operator);
}

/**
 * @dev Standard ERC1155 Errors
 * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.
 */
interface IERC1155Errors {
    /**
     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     * @param balance Current balance for the interacting account.
     * @param needed Minimum amount required to perform a transfer.
     * @param tokenId Identifier number of a token.
     */
    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);

    /**
     * @dev Indicates a failure with the token `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     */
    error ERC1155InvalidSender(address sender);

    /**
     * @dev Indicates a failure with the token `receiver`. Used in transfers.
     * @param receiver Address to which tokens are being transferred.
     */
    error ERC1155InvalidReceiver(address receiver);

    /**
     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     * @param owner Address of the current owner of a token.
     */
    error ERC1155MissingApprovalForAll(address operator, address owner);

    /**
     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
     * @param approver Address initiating an approval operation.
     */
    error ERC1155InvalidApprover(address approver);

    /**
     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     */
    error ERC1155InvalidOperator(address operator);

    /**
     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.
     * Used in batch transfers.
     * @param idsLength Length of the array of token identifiers
     * @param valuesLength Length of the array of token amounts
     */
    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);
}

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


// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)

pragma solidity ^0.8.20;

/**
 * @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 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) {
        return msg.sender;
    }

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

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

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


// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)

pragma solidity ^0.8.20;


/**
 * @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.
 *
 * The initial owner is set to the address provided by the deployer. 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;

    /**
     * @dev The caller account is not authorized to perform an operation.
     */
    error OwnableUnauthorizedAccount(address account);

    /**
     * @dev The owner is not a valid owner account. (eg. `address(0)`)
     */
    error OwnableInvalidOwner(address owner);

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

    /**
     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.
     */
    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

    /**
     * @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 {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

    /**
     * @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 {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _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);
    }
}

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol


// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.20;

/**
 * @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 value of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

    /**
     * @dev Moves a `value` amount of 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 value) 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 a `value` amount of tokens 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 value) external returns (bool);

    /**
     * @dev Moves a `value` amount of tokens from `from` to `to` using the
     * allowance mechanism. `value` 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 value) external returns (bool);
}

// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol


// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.20;


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

// File: @openzeppelin/contracts/token/ERC20/ERC20.sol


// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.20;





/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 */
abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
    mapping(address account => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

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

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

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, value);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `value`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `value`.
     */
    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, value);
        _transfer(from, to, value);
        return true;
    }

    /**
     * @dev Moves a `value` amount of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead.
     */
    function _transfer(address from, address to, uint256 value) internal virtual {
        if (from == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (to == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(from, to, value);
    }

    /**
     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`
     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding
     * this function.
     *
     * Emits a {Transfer} event.
     */
    function _update(address from, address to, uint256 value) internal virtual {
        if (from == address(0)) {
            // Overflow check required: The rest of the code assumes that totalSupply never overflows
            _totalSupply += value;
        } else {
            uint256 fromBalance = _balances[from];
            if (fromBalance < value) {
                revert ERC20InsufficientBalance(from, fromBalance, value);
            }
            unchecked {
                // Overflow not possible: value <= fromBalance <= totalSupply.
                _balances[from] = fromBalance - value;
            }
        }

        if (to == address(0)) {
            unchecked {
                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.
                _totalSupply -= value;
            }
        } else {
            unchecked {
                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.
                _balances[to] += value;
            }
        }

        emit Transfer(from, to, value);
    }

    /**
     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).
     * Relies on the `_update` mechanism
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead.
     */
    function _mint(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(address(0), account, value);
    }

    /**
     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.
     * Relies on the `_update` mechanism.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead
     */
    function _burn(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        _update(account, address(0), value);
    }

    /**
     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     *
     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        _approve(owner, spender, value, true);
    }

    /**
     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.
     *
     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by
     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any
     * `Approval` event during `transferFrom` operations.
     *
     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to
     * true using the following override:
     * ```
     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {
     *     super._approve(owner, spender, value, true);
     * }
     * ```
     *
     * Requirements are the same as {_approve}.
     */
    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }
        _allowances[owner][spender] = value;
        if (emitEvent) {
            emit Approval(owner, spender, value);
        }
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `value`.
     *
     * Does not update the allowance value in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Does not emit an {Approval} event.
     */
    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            if (currentAllowance < value) {
                revert ERC20InsufficientAllowance(spender, currentAllowance, value);
            }
            unchecked {
                _approve(owner, spender, currentAllowance - value, false);
            }
        }
    }
}

// File: @openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol


// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/ERC20Burnable.sol)

pragma solidity ^0.8.20;



/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys a `value` amount of tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 value) public virtual {
        _burn(_msgSender(), value);
    }

    /**
     * @dev Destroys a `value` amount of tokens from `account`, deducting from
     * the caller's allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `value`.
     */
    function burnFrom(address account, uint256 value) public virtual {
        _spendAllowance(account, _msgSender(), value);
        _burn(account, value);
    }
}

// File: contracts/CreePe.sol


pragma solidity ^0.8.25.0;




contract CreePe is ERC20, ERC20Burnable, Ownable {
    bool public tradingOpen = false;

    // Wallets
    address private airdropWallet; // Community wallet 🫂
    address private devWallet; // Development wallet ⚙️
    address private teamWallet; // Team tokens 💚

    address private uniswapV2Pair; // Address of the DEX pair

    uint256 private buyFee;
    uint256 private sellFee;

    uint256 private maxTxAmount; // max amount that can be transacted in one txn.
    uint256 private minTxAmount; // min amount that can be transacted in one txn.
    uint256 private maxWalletToken; // max amount of tokens that can be held in a wallet

    mapping(address => bool) private isFeeExempt;

    constructor(address initialOwner)
        ERC20("CreePe", "CRPE")
        Ownable(initialOwner)
    {
        uint256 totalSupply = 800_000_000_000 * 10**decimals();
        uint256 liquiditySupply = 640_000_000_000 * 10**decimals(); // 80% dedicated to liquidity

        buyFee = 100; // initial buy fee 0.1%
        sellFee = 400; // initial sell fee 0.4%

        // Set max transaction amount to 0.1% of total supply
        maxTxAmount = liquiditySupply / 1000;

        // Set min transaction amount to 640 CreePe tokens
        minTxAmount = liquiditySupply / 1_000_000_000;

        // Set max wallet token to 0.1% of total supply to prevent whale pump n dump
        maxWalletToken = liquiditySupply / 1000;

        // exclude from paying fees or having max transaction amount
        excludeFromTaxes(msg.sender, true);
        excludeFromTaxes(address(this), true);
        excludeFromTaxes(address(0xdead), true);

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

    function openTrading() external onlyOwner {
        tradingOpen = true;
    }

    /**
     * @notice Sets the development fund wallet
     * @dev onlyOwner.
     * Emits an {developmentFundUpdated} event
     * @param newDevWallet the new Dev wallet
     */
    function setWalletForDevelopment(address newDevWallet) external onlyOwner {
        devWallet = newDevWallet;
        excludeFromTaxes(newDevWallet, true);
    }

    /**
     * @notice Sets the uniswap pair address
     * @dev onlyOwner.
     */
    function setUniswapV2Pair(address uniswapV2Address) external onlyOwner {
        uniswapV2Pair = uniswapV2Address;
    }

    /**
     * @notice Sets the team wallet
     * @dev onlyOwner.
     * @param newTeamWallet the new team wallet
     */
    function setWalletForTeam(address newTeamWallet) external onlyOwner {
        require(teamWallet == address(0), "Team wallet set.");

        teamWallet = newTeamWallet;
        excludeFromTaxes(newTeamWallet, true);
        uint256 teamAmount = 40_000_000_000 * 10**decimals(); // 5%
        transfer(teamWallet, teamAmount);
    }

    /**
     * @notice Sets the community wallet
     * @dev onlyOwner.
     * @param newAirdropWallet the new airdrop and commmunity wallet
     */
    function setWalletForAirdrop(address newAirdropWallet) external onlyOwner {
        require(airdropWallet == address(0), "Airdrop wallet set.");
        
        airdropWallet = newAirdropWallet;
        excludeFromTaxes(newAirdropWallet, true);
        uint256 airdropAmount = 120_000_000_000 * 10**decimals(); // 15%
        transfer(airdropWallet, airdropAmount);
    }

    /*
     * @notice Sets if an address is excluded from fees
     * @dev onlyOwner.
     * @param account The wallet to update
     * @param excluded If the wallet is excluded or not
     */
    function excludeFromTaxes(address account, bool excluded) public onlyOwner {
        isFeeExempt[account] = excluded;
    }

    /**
     * @notice Sets a new buy fee
     * @dev onlyOwner.
     * @param newBuyFee the new fee
     * @param newSellFee the new fee
     */
    function setFees(uint256 newBuyFee, uint256 newSellFee) external onlyOwner {
        buyFee = newBuyFee;
        sellFee = newSellFee;
    }

    /**
     * @notice Sets new txn amounts
     * @dev onlyOwner.
     * @param newMaxTxAmount the new fee
     * @param newMinTxAmount the new fee
     */
    function setTxAmount(uint256 newMinTxAmount, uint256 newMaxTxAmount)
        external
        onlyOwner
    {
        minTxAmount = newMinTxAmount;
        maxTxAmount = newMaxTxAmount;
    }

    /**
     * @notice Sets a new setMaxWalletAmount
     * @dev onlyOwner.
     * @param newMaxWalletAmount the new fee
     */
    function setMaxWalletAmount(uint256 newMaxWalletAmount) external onlyOwner {
        maxWalletToken = newMaxWalletAmount;
    }

    function contractSettings()
        external
        view
        returns (
            uint256 _buyFee,
            uint256 _sellFee,
            address _devWallet,
            address _airdropWallet,
            uint256 _maxTxAmount,
            uint256 _minTxAmount,
            uint256 _maxWalletToken
        )
    {
        _buyFee = buyFee;
        _sellFee = sellFee;
        _devWallet = devWallet;
        _airdropWallet = airdropWallet;
        _maxTxAmount = maxTxAmount;
        _minTxAmount = minTxAmount;
        _maxWalletToken = maxWalletToken;
    }

    function transfer(address to, uint256 value)
        public
        override
        returns (bool)
    {
        address from = msg.sender;
        uint256 amount = value;

        require(from != address(0), "Transfer from zero address");
        require(to != address(0), "Transfer to zero address");

        if (to == teamWallet) {
            require(teamWallet != address(0), "Team wallet not set.");
        }

        if (to == airdropWallet) {
            require(airdropWallet != address(0), "Airdrop wallet not set."
            );
        }

        require(devWallet != address(0), "Dev wallet not set."
        );

        if (from != owner() && to != owner() && to != address(0xdead)) {
            if (!tradingOpen) {
                require(isFeeExempt[from] || isFeeExempt[to], "Trading not active.");
            }
        }

        if (
            from != owner() &&
            to != owner() &&
            !isFeeExempt[from] &&
            !isFeeExempt[to]
        ) {
            // Ensure the txn amount meets the min and max;
            require(amount <= maxTxAmount, "Amount > maxTxAmount.");
            require(amount >= minTxAmount, "Amount < minTxAmount.");
        }

        // Ensure the recipient does not exceed the maximum wallet holding
        if (from != owner() && to != owner() && !isFeeExempt[to] && to != address(0xdead) && to != uniswapV2Pair) {
            uint256 newBalance = balanceOf(to) + amount;
            require(newBalance <= maxWalletToken, "Balance > maxWalletToken.");
        }

        // if any account belongs to _isExcludedFromFee account then remove the fee
        bool takeFee = !(isFeeExempt[from] || isFeeExempt[to]);

        if (takeFee) {
            uint256 fees;
            uint256 burnAmount;

            if (to == uniswapV2Pair) {
                // Sell transaction
                fees = (amount * sellFee) / 100_000;

                burnAmount = fees / 5;
                burn(burnAmount); // burn 20% of total fee on each txn

                uint256 devAmount = fees - burnAmount;
                super._transfer(from, devWallet, devAmount); // Transfer the rest to the development fund

                amount -= fees; // Subtract fees from the transfer amount
            }

            // We don't charge first buy txns
            if (from == uniswapV2Pair && balanceOf(to) > 0) {
                // Buy transaction
                fees = (amount * buyFee) / 100_000;

                burnAmount = fees / 5;
                burn(burnAmount); // burn 20% of total fee on each txn

                uint256 devAmount = fees - burnAmount;
                super._transfer(from, devWallet, devAmount); // Transfer the rest to the development fund

                amount -= fees; // Subtract fees from the transfer amount
            }
        }

        super._transfer(from, to, amount);

        return true;
    }

    /**
     * @notice  If the wallet is excluded from fees and max transaction amount and if the wallet is a automated market maker pair
     * @param   _target  The wallet to check
     * @return  _isFeeExempt  If the wallet is excluded from fees
     */
    function checkFeeExemption(address _target)
        external
        view
        returns (bool _isFeeExempt)
    {
        _isFeeExempt = isFeeExempt[_target];
    }

    /**
     * @notice  Provide a burn mechanism and keep surprising the community
     * @param   _value  Amount to be burned
     */
    function burn(uint256 _value) public override {
        _burn(msg.sender, _value);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"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":[{"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":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"checkFeeExemption","outputs":[{"internalType":"bool","name":"_isFeeExempt","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSettings","outputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"address","name":"_devWallet","type":"address"},{"internalType":"address","name":"_airdropWallet","type":"address"},{"internalType":"uint256","name":"_maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"_minTxAmount","type":"uint256"},{"internalType":"uint256","name":"_maxWalletToken","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinTxAmount","type":"uint256"},{"internalType":"uint256","name":"newMaxTxAmount","type":"uint256"}],"name":"setTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"uniswapV2Address","type":"address"}],"name":"setUniswapV2Pair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAirdropWallet","type":"address"}],"name":"setWalletForAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newDevWallet","type":"address"}],"name":"setWalletForDevelopment","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTeamWallet","type":"address"}],"name":"setWalletForTeam","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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"}]

60806040526005805460ff60a01b1916905534801561001c575f80fd5b50604051611b02380380611b0283398101604081905261003b9161038a565b806040518060400160405280600681526020016543726565506560d01b815250604051806040016040528060048152602001634352504560e01b8152508160039081610087919061044f565b506004610094828261044f565b5050506001600160a01b0381166100c557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100ce8161017a565b505f6100dc6012600a610604565b6100eb9064ba43b74000610612565b90505f6100fa6012600a610604565b61010990649502f90000610612565b6064600a55610190600b5590506101226103e882610629565b600c55610133633b9aca0082610629565b600d556101426103e882610629565b600e556101503360016101cb565b61015b3060016101cb565b61016861dead60016101cb565b61017233836101fd565b50505061065b565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6101d3610235565b6001600160a01b03919091165f908152600f60205260409020805460ff1916911515919091179055565b6001600160a01b0382166102265760405163ec442f0560e01b81525f60048201526024016100bc565b6102315f8383610264565b5050565b6005546001600160a01b031633146102625760405163118cdaa760e01b81523360048201526024016100bc565b565b6001600160a01b03831661028e578060025f8282546102839190610648565b909155506102fe9050565b6001600160a01b0383165f90815260208190526040902054818110156102e05760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016100bc565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661031a57600280548290039055610338565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161037d91815260200190565b60405180910390a3505050565b5f6020828403121561039a575f80fd5b81516001600160a01b03811681146103b0575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806103df57607f821691505b6020821081036103fd57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561044a57805f5260205f20601f840160051c810160208510156104285750805b601f840160051c820191505b81811015610447575f8155600101610434565b50505b505050565b81516001600160401b03811115610468576104686103b7565b61047c8161047684546103cb565b84610403565b602080601f8311600181146104af575f84156104985750858301515b5f19600386901b1c1916600185901b178555610506565b5f85815260208120601f198616915b828110156104dd578886015182559484019460019091019084016104be565b50858210156104fa57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561055c57815f19048211156105425761054261050e565b8085161561054f57918102915b93841c9390800290610527565b509250929050565b5f82610572575060016105fe565b8161057e57505f6105fe565b8160018114610594576002811461059e576105ba565b60019150506105fe565b60ff8411156105af576105af61050e565b50506001821b6105fe565b5060208310610133831016604e8410600b84101617156105dd575081810a6105fe565b6105e78383610522565b805f19048211156105fa576105fa61050e565b0290505b92915050565b5f6103b060ff841683610564565b80820281158282048414176105fe576105fe61050e565b5f8261064357634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156105fe576105fe61050e565b61149a806106685f395ff3fe608060405234801561000f575f80fd5b5060043610610187575f3560e01c80638d8da342116100d9578063a9059cbb11610093578063dd62ed3e1161006e578063dd62ed3e1461039c578063ec5ae406146103d4578063f2fde38b146103e7578063ffb54a99146103fa575f80fd5b8063a9059cbb1461032b578063c9567bf91461033e578063db2a0a5514610346575f80fd5b80638d8da342146102a45780638da5cb5b146102b7578063911004b0146102d257806395d89b41146102e55780639808a14b146102ed578063a29a608914610318575f80fd5b806323b872dd1161014457806342966c681161011f57806342966c681461024e57806370a0823114610261578063715018a61461028957806379cc679014610291575f80fd5b806323b872dd1461021957806327a14fc21461022c578063313ce5671461023f575f80fd5b806306fdde031461018b578063095ea7b3146101a95780630b78f9c0146101cc57806318160ddd146101e1578063214f64dd146101f35780632260366114610206575b5f80fd5b61019361040e565b6040516101a0919061115c565b60405180910390f35b6101bc6101b73660046111ac565b61049e565b60405190151581526020016101a0565b6101df6101da3660046111d4565b6104b7565b005b6002545b6040519081526020016101a0565b6101df6102013660046111f4565b6104ca565b6101df610214366004611214565b610586565b6101bc61022736600461124d565b6105b8565b6101df61023a366004611286565b6105db565b604051601281526020016101a0565b6101df61025c366004611286565b6105e8565b6101e561026f3660046111f4565b6001600160a01b03165f9081526020819052604090205490565b6101df6105f5565b6101df61029f3660046111ac565b610608565b6101df6102b23660046111f4565b610621565b6005546040516001600160a01b0390911681526020016101a0565b6101df6102e03660046111f4565b6106d0565b6101936106fe565b6101bc6102fb3660046111f4565b6001600160a01b03165f908152600f602052604090205460ff1690565b6101df6103263660046111f4565b61070d565b6101bc6103393660046111ac565b610737565b6101df610d63565b600a54600b54600754600654600c54600d54600e546040805197885260208801969096526001600160a01b0394851695870195909552929091166060850152608084015260a083015260c082015260e0016101a0565b6101e56103aa36600461129d565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6101df6103e23660046111d4565b610d80565b6101df6103f53660046111f4565b610d93565b6005546101bc90600160a01b900460ff1681565b60606003805461041d906112ce565b80601f0160208091040260200160405190810160405280929190818152602001828054610449906112ce565b80156104945780601f1061046b57610100808354040283529160200191610494565b820191905f5260205f20905b81548152906001019060200180831161047757829003601f168201915b5050505050905090565b5f336104ab818585610dcd565b60019150505b92915050565b6104bf610dda565b600a91909155600b55565b6104d2610dda565b6006546001600160a01b0316156105265760405162461bcd60e51b815260206004820152601360248201527220b4b9323937b8103bb0b63632ba1039b2ba1760691b60448201526064015b60405180910390fd5b600680546001600160a01b0319166001600160a01b03831617905561054c816001610586565b5f6105596012600a6113fa565b61056890641bf08eb000611408565b600654909150610581906001600160a01b031682610737565b505050565b61058e610dda565b6001600160a01b03919091165f908152600f60205260409020805460ff1916911515919091179055565b5f336105c5858285610e07565b6105d0858585610e82565b506001949350505050565b6105e3610dda565b600e55565b6105f23382610edf565b50565b6105fd610dda565b6106065f610f13565b565b610613823383610e07565b61061d8282610edf565b5050565b610629610dda565b6008546001600160a01b0316156106755760405162461bcd60e51b815260206004820152601060248201526f2a32b0b6903bb0b63632ba1039b2ba1760811b604482015260640161051d565b600880546001600160a01b0319166001600160a01b03831617905561069b816001610586565b5f6106a86012600a6113fa565b6106b7906409502f9000611408565b600854909150610581906001600160a01b031682610737565b6106d8610dda565b600780546001600160a01b0319166001600160a01b0383161790556105f2816001610586565b60606004805461041d906112ce565b610715610dda565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b5f3382816107875760405162461bcd60e51b815260206004820152601a60248201527f5472616e736665722066726f6d207a65726f2061646472657373000000000000604482015260640161051d565b6001600160a01b0385166107dd5760405162461bcd60e51b815260206004820152601860248201527f5472616e7366657220746f207a65726f20616464726573730000000000000000604482015260640161051d565b6008546001600160a01b0390811690861603610842576008546001600160a01b03166108425760405162461bcd60e51b81526020600482015260146024820152732a32b0b6903bb0b63632ba103737ba1039b2ba1760611b604482015260640161051d565b6006546001600160a01b03908116908616036108b0576006546001600160a01b03166108b05760405162461bcd60e51b815260206004820152601760248201527f41697264726f702077616c6c6574206e6f74207365742e000000000000000000604482015260640161051d565b6007546001600160a01b03166108fe5760405162461bcd60e51b81526020600482015260136024820152722232bb103bb0b63632ba103737ba1039b2ba1760691b604482015260640161051d565b6005546001600160a01b0383811691161480159061092a57506005546001600160a01b03868116911614155b801561094157506001600160a01b03851661dead14155b156109d657600554600160a01b900460ff166109d6576001600160a01b0382165f908152600f602052604090205460ff168061099457506001600160a01b0385165f908152600f602052604090205460ff165b6109d65760405162461bcd60e51b81526020600482015260136024820152722a3930b234b733903737ba1030b1ba34bb329760691b604482015260640161051d565b6005546001600160a01b03838116911614801590610a0257506005546001600160a01b03868116911614155b8015610a2657506001600160a01b0382165f908152600f602052604090205460ff16155b8015610a4a57506001600160a01b0385165f908152600f602052604090205460ff16155b15610ae357600c54811115610a995760405162461bcd60e51b815260206004820152601560248201527420b6b7bab73a101f1036b0bc2a3c20b6b7bab73a1760591b604482015260640161051d565b600d54811015610ae35760405162461bcd60e51b815260206004820152601560248201527420b6b7bab73a101e1036b4b72a3c20b6b7bab73a1760591b604482015260640161051d565b6005546001600160a01b03838116911614801590610b0f57506005546001600160a01b03868116911614155b8015610b3357506001600160a01b0385165f908152600f602052604090205460ff16155b8015610b4a57506001600160a01b03851661dead14155b8015610b6457506009546001600160a01b03868116911614155b15610be2576001600160a01b0385165f90815260208190526040812054610b8c90839061141f565b9050600e54811115610be05760405162461bcd60e51b815260206004820152601960248201527f42616c616e6365203e206d617857616c6c6574546f6b656e2e00000000000000604482015260640161051d565b505b6001600160a01b0382165f908152600f602052604081205460ff1680610c1f57506001600160a01b0386165f908152600f602052604090205460ff165b1590508015610d4c576009545f9081906001600160a01b0390811690891603610caa57620186a0600b5485610c549190611408565b610c5e9190611432565b9150610c6b600583611432565b9050610c76816105e8565b5f610c818284611451565b600754909150610c9c9087906001600160a01b031683610e82565b610ca68386611451565b9450505b6009546001600160a01b038681169116148015610cdc57506001600160a01b0388165f90815260208190526040812054115b15610d4957620186a0600a5485610cf39190611408565b610cfd9190611432565b9150610d0a600583611432565b9050610d15816105e8565b5f610d208284611451565b600754909150610d3b9087906001600160a01b031683610e82565b610d458386611451565b9450505b50505b610d57838784610e82565b50600195945050505050565b610d6b610dda565b6005805460ff60a01b1916600160a01b179055565b610d88610dda565b600d91909155600c55565b610d9b610dda565b6001600160a01b038116610dc457604051631e4fbdf760e01b81525f600482015260240161051d565b6105f281610f13565b6105818383836001610f64565b6005546001600160a01b031633146106065760405163118cdaa760e01b815233600482015260240161051d565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198114610e7c5781811015610e6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161051d565b610e7c84848484035f610f64565b50505050565b6001600160a01b038316610eab57604051634b637e8f60e11b81525f600482015260240161051d565b6001600160a01b038216610ed45760405163ec442f0560e01b81525f600482015260240161051d565b610581838383611036565b6001600160a01b038216610f0857604051634b637e8f60e11b81525f600482015260240161051d565b61061d825f83611036565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038416610f8d5760405163e602df0560e01b81525f600482015260240161051d565b6001600160a01b038316610fb657604051634a1406b160e11b81525f600482015260240161051d565b6001600160a01b038085165f9081526001602090815260408083209387168352929052208290558015610e7c57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161102891815260200190565b60405180910390a350505050565b6001600160a01b038316611060578060025f828254611055919061141f565b909155506110d09050565b6001600160a01b0383165f90815260208190526040902054818110156110b25760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161051d565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166110ec5760028054829003905561110a565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161114f91815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146111a7575f80fd5b919050565b5f80604083850312156111bd575f80fd5b6111c683611191565b946020939093013593505050565b5f80604083850312156111e5575f80fd5b50508035926020909101359150565b5f60208284031215611204575f80fd5b61120d82611191565b9392505050565b5f8060408385031215611225575f80fd5b61122e83611191565b915060208301358015158114611242575f80fd5b809150509250929050565b5f805f6060848603121561125f575f80fd5b61126884611191565b925061127660208501611191565b9150604084013590509250925092565b5f60208284031215611296575f80fd5b5035919050565b5f80604083850312156112ae575f80fd5b6112b783611191565b91506112c560208401611191565b90509250929050565b600181811c908216806112e257607f821691505b60208210810361130057634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561135457815f190482111561133a5761133a611306565b8085161561134757918102915b93841c939080029061131f565b509250929050565b5f8261136a575060016104b1565b8161137657505f6104b1565b816001811461138c5760028114611396576113b2565b60019150506104b1565b60ff8411156113a7576113a7611306565b50506001821b6104b1565b5060208310610133831016604e8410600b84101617156113d5575081810a6104b1565b6113df838361131a565b805f19048211156113f2576113f2611306565b029392505050565b5f61120d60ff84168361135c565b80820281158282048414176104b1576104b1611306565b808201808211156104b1576104b1611306565b5f8261144c57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104b1576104b161130656fea2646970667358221220c5e07c5348d0c29e19ba502aff574748c81f40ab89c01d1127b971f12c3e3f2864736f6c634300081900330000000000000000000000008c1dd24cf35b40e7d7b83892a6a8140e50e96d48

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610187575f3560e01c80638d8da342116100d9578063a9059cbb11610093578063dd62ed3e1161006e578063dd62ed3e1461039c578063ec5ae406146103d4578063f2fde38b146103e7578063ffb54a99146103fa575f80fd5b8063a9059cbb1461032b578063c9567bf91461033e578063db2a0a5514610346575f80fd5b80638d8da342146102a45780638da5cb5b146102b7578063911004b0146102d257806395d89b41146102e55780639808a14b146102ed578063a29a608914610318575f80fd5b806323b872dd1161014457806342966c681161011f57806342966c681461024e57806370a0823114610261578063715018a61461028957806379cc679014610291575f80fd5b806323b872dd1461021957806327a14fc21461022c578063313ce5671461023f575f80fd5b806306fdde031461018b578063095ea7b3146101a95780630b78f9c0146101cc57806318160ddd146101e1578063214f64dd146101f35780632260366114610206575b5f80fd5b61019361040e565b6040516101a0919061115c565b60405180910390f35b6101bc6101b73660046111ac565b61049e565b60405190151581526020016101a0565b6101df6101da3660046111d4565b6104b7565b005b6002545b6040519081526020016101a0565b6101df6102013660046111f4565b6104ca565b6101df610214366004611214565b610586565b6101bc61022736600461124d565b6105b8565b6101df61023a366004611286565b6105db565b604051601281526020016101a0565b6101df61025c366004611286565b6105e8565b6101e561026f3660046111f4565b6001600160a01b03165f9081526020819052604090205490565b6101df6105f5565b6101df61029f3660046111ac565b610608565b6101df6102b23660046111f4565b610621565b6005546040516001600160a01b0390911681526020016101a0565b6101df6102e03660046111f4565b6106d0565b6101936106fe565b6101bc6102fb3660046111f4565b6001600160a01b03165f908152600f602052604090205460ff1690565b6101df6103263660046111f4565b61070d565b6101bc6103393660046111ac565b610737565b6101df610d63565b600a54600b54600754600654600c54600d54600e546040805197885260208801969096526001600160a01b0394851695870195909552929091166060850152608084015260a083015260c082015260e0016101a0565b6101e56103aa36600461129d565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6101df6103e23660046111d4565b610d80565b6101df6103f53660046111f4565b610d93565b6005546101bc90600160a01b900460ff1681565b60606003805461041d906112ce565b80601f0160208091040260200160405190810160405280929190818152602001828054610449906112ce565b80156104945780601f1061046b57610100808354040283529160200191610494565b820191905f5260205f20905b81548152906001019060200180831161047757829003601f168201915b5050505050905090565b5f336104ab818585610dcd565b60019150505b92915050565b6104bf610dda565b600a91909155600b55565b6104d2610dda565b6006546001600160a01b0316156105265760405162461bcd60e51b815260206004820152601360248201527220b4b9323937b8103bb0b63632ba1039b2ba1760691b60448201526064015b60405180910390fd5b600680546001600160a01b0319166001600160a01b03831617905561054c816001610586565b5f6105596012600a6113fa565b61056890641bf08eb000611408565b600654909150610581906001600160a01b031682610737565b505050565b61058e610dda565b6001600160a01b03919091165f908152600f60205260409020805460ff1916911515919091179055565b5f336105c5858285610e07565b6105d0858585610e82565b506001949350505050565b6105e3610dda565b600e55565b6105f23382610edf565b50565b6105fd610dda565b6106065f610f13565b565b610613823383610e07565b61061d8282610edf565b5050565b610629610dda565b6008546001600160a01b0316156106755760405162461bcd60e51b815260206004820152601060248201526f2a32b0b6903bb0b63632ba1039b2ba1760811b604482015260640161051d565b600880546001600160a01b0319166001600160a01b03831617905561069b816001610586565b5f6106a86012600a6113fa565b6106b7906409502f9000611408565b600854909150610581906001600160a01b031682610737565b6106d8610dda565b600780546001600160a01b0319166001600160a01b0383161790556105f2816001610586565b60606004805461041d906112ce565b610715610dda565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b5f3382816107875760405162461bcd60e51b815260206004820152601a60248201527f5472616e736665722066726f6d207a65726f2061646472657373000000000000604482015260640161051d565b6001600160a01b0385166107dd5760405162461bcd60e51b815260206004820152601860248201527f5472616e7366657220746f207a65726f20616464726573730000000000000000604482015260640161051d565b6008546001600160a01b0390811690861603610842576008546001600160a01b03166108425760405162461bcd60e51b81526020600482015260146024820152732a32b0b6903bb0b63632ba103737ba1039b2ba1760611b604482015260640161051d565b6006546001600160a01b03908116908616036108b0576006546001600160a01b03166108b05760405162461bcd60e51b815260206004820152601760248201527f41697264726f702077616c6c6574206e6f74207365742e000000000000000000604482015260640161051d565b6007546001600160a01b03166108fe5760405162461bcd60e51b81526020600482015260136024820152722232bb103bb0b63632ba103737ba1039b2ba1760691b604482015260640161051d565b6005546001600160a01b0383811691161480159061092a57506005546001600160a01b03868116911614155b801561094157506001600160a01b03851661dead14155b156109d657600554600160a01b900460ff166109d6576001600160a01b0382165f908152600f602052604090205460ff168061099457506001600160a01b0385165f908152600f602052604090205460ff165b6109d65760405162461bcd60e51b81526020600482015260136024820152722a3930b234b733903737ba1030b1ba34bb329760691b604482015260640161051d565b6005546001600160a01b03838116911614801590610a0257506005546001600160a01b03868116911614155b8015610a2657506001600160a01b0382165f908152600f602052604090205460ff16155b8015610a4a57506001600160a01b0385165f908152600f602052604090205460ff16155b15610ae357600c54811115610a995760405162461bcd60e51b815260206004820152601560248201527420b6b7bab73a101f1036b0bc2a3c20b6b7bab73a1760591b604482015260640161051d565b600d54811015610ae35760405162461bcd60e51b815260206004820152601560248201527420b6b7bab73a101e1036b4b72a3c20b6b7bab73a1760591b604482015260640161051d565b6005546001600160a01b03838116911614801590610b0f57506005546001600160a01b03868116911614155b8015610b3357506001600160a01b0385165f908152600f602052604090205460ff16155b8015610b4a57506001600160a01b03851661dead14155b8015610b6457506009546001600160a01b03868116911614155b15610be2576001600160a01b0385165f90815260208190526040812054610b8c90839061141f565b9050600e54811115610be05760405162461bcd60e51b815260206004820152601960248201527f42616c616e6365203e206d617857616c6c6574546f6b656e2e00000000000000604482015260640161051d565b505b6001600160a01b0382165f908152600f602052604081205460ff1680610c1f57506001600160a01b0386165f908152600f602052604090205460ff165b1590508015610d4c576009545f9081906001600160a01b0390811690891603610caa57620186a0600b5485610c549190611408565b610c5e9190611432565b9150610c6b600583611432565b9050610c76816105e8565b5f610c818284611451565b600754909150610c9c9087906001600160a01b031683610e82565b610ca68386611451565b9450505b6009546001600160a01b038681169116148015610cdc57506001600160a01b0388165f90815260208190526040812054115b15610d4957620186a0600a5485610cf39190611408565b610cfd9190611432565b9150610d0a600583611432565b9050610d15816105e8565b5f610d208284611451565b600754909150610d3b9087906001600160a01b031683610e82565b610d458386611451565b9450505b50505b610d57838784610e82565b50600195945050505050565b610d6b610dda565b6005805460ff60a01b1916600160a01b179055565b610d88610dda565b600d91909155600c55565b610d9b610dda565b6001600160a01b038116610dc457604051631e4fbdf760e01b81525f600482015260240161051d565b6105f281610f13565b6105818383836001610f64565b6005546001600160a01b031633146106065760405163118cdaa760e01b815233600482015260240161051d565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198114610e7c5781811015610e6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161051d565b610e7c84848484035f610f64565b50505050565b6001600160a01b038316610eab57604051634b637e8f60e11b81525f600482015260240161051d565b6001600160a01b038216610ed45760405163ec442f0560e01b81525f600482015260240161051d565b610581838383611036565b6001600160a01b038216610f0857604051634b637e8f60e11b81525f600482015260240161051d565b61061d825f83611036565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038416610f8d5760405163e602df0560e01b81525f600482015260240161051d565b6001600160a01b038316610fb657604051634a1406b160e11b81525f600482015260240161051d565b6001600160a01b038085165f9081526001602090815260408083209387168352929052208290558015610e7c57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161102891815260200190565b60405180910390a350505050565b6001600160a01b038316611060578060025f828254611055919061141f565b909155506110d09050565b6001600160a01b0383165f90815260208190526040902054818110156110b25760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161051d565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166110ec5760028054829003905561110a565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161114f91815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146111a7575f80fd5b919050565b5f80604083850312156111bd575f80fd5b6111c683611191565b946020939093013593505050565b5f80604083850312156111e5575f80fd5b50508035926020909101359150565b5f60208284031215611204575f80fd5b61120d82611191565b9392505050565b5f8060408385031215611225575f80fd5b61122e83611191565b915060208301358015158114611242575f80fd5b809150509250929050565b5f805f6060848603121561125f575f80fd5b61126884611191565b925061127660208501611191565b9150604084013590509250925092565b5f60208284031215611296575f80fd5b5035919050565b5f80604083850312156112ae575f80fd5b6112b783611191565b91506112c560208401611191565b90509250929050565b600181811c908216806112e257607f821691505b60208210810361130057634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561135457815f190482111561133a5761133a611306565b8085161561134757918102915b93841c939080029061131f565b509250929050565b5f8261136a575060016104b1565b8161137657505f6104b1565b816001811461138c5760028114611396576113b2565b60019150506104b1565b60ff8411156113a7576113a7611306565b50506001821b6104b1565b5060208310610133831016604e8410600b84101617156113d5575081810a6104b1565b6113df838361131a565b805f19048211156113f2576113f2611306565b029392505050565b5f61120d60ff84168361135c565b80820281158282048414176104b1576104b1611306565b808201808211156104b1576104b1611306565b5f8261144c57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104b1576104b161130656fea2646970667358221220c5e07c5348d0c29e19ba502aff574748c81f40ab89c01d1127b971f12c3e3f2864736f6c63430008190033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000008c1dd24cf35b40e7d7b83892a6a8140e50e96d48

-----Decoded View---------------
Arg [0] : initialOwner (address): 0x8c1dD24cF35B40e7D7B83892a6A8140E50E96D48

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000008c1dd24cf35b40e7d7b83892a6a8140e50e96d48


Deployed Bytecode Sourcemap

27068:9100:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16478:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18771:190;;;;;;:::i;:::-;;:::i;:::-;;;1039:14:1;;1032:22;1014:41;;1002:2;987:18;18771:190:0;874:187:1;31114:143:0;;;;;;:::i;:::-;;:::i;:::-;;17580:99;17659:12;;17580:99;;;1465:25:1;;;1453:2;1438:18;17580:99:0;1319:177:1;30243:379:0;;;;;;:::i;:::-;;:::i;30829:125::-;;;;;;:::i;:::-;;:::i;19539:249::-;;;;;;:::i;:::-;;:::i;31767:129::-;;;;;;:::i;:::-;;:::i;17431:84::-;;;17505:2;2704:36:1;;2692:2;2677:18;17431:84:0;2562:184:1;36075:90:0;;;;;;:::i;:::-;;:::i;17742:118::-;;;;;;:::i;:::-;-1:-1:-1;;;;;17834:18:0;17807:7;17834:18;;;;;;;;;;;;17742:118;10091:103;;;:::i;26829:161::-;;;;;;:::i;:::-;;:::i;29742:339::-;;;;;;:::i;:::-;;:::i;9416:87::-;9489:6;;9416:87;;-1:-1:-1;;;;;9489:6:0;;;2897:51:1;;2885:2;2870:18;9416:87:0;2751:203:1;29224:164:0;;;;;;:::i;:::-;;:::i;16688:95::-;;;:::i;35756:172::-;;;;;;:::i;:::-;-1:-1:-1;;;;;35900:20:0;35850:17;35900:20;;;:11;:20;;;;;;;;;35756:172;29484:122;;;;;;:::i;:::-;;:::i;32500:2986::-;;;;;;:::i;:::-;;:::i;28951:79::-;;;:::i;31904:588::-;32258:6;;32286:7;;32317:9;;32354:13;;32393:11;;32430;;32470:14;;31904:588;;;3274:25:1;;;3330:2;3315:18;;3308:34;;;;-1:-1:-1;;;;;32317:9:0;;;3396:18:1;;;3389:43;;;;32354:13:0;;;;3463:2:1;3448:18;;3441:43;3515:3;3500:19;;3493:35;3369:3;3544:19;;3537:35;3603:3;3588:19;;3581:35;3261:3;3246:19;31904:588:0;2959:663:1;18310:142:0;;;;;;:::i;:::-;-1:-1:-1;;;;;18417:18:0;;;18390:7;18417:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18310:142;31428:197;;;;;;:::i;:::-;;:::i;10349:220::-;;;;;;:::i;:::-;;:::i;27124:31::-;;;;;-1:-1:-1;;;27124:31:0;;;;;;16478:91;16523:13;16556:5;16549:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16478:91;:::o;18771:190::-;18844:4;7505:10;18900:31;7505:10;18916:7;18925:5;18900:8;:31::i;:::-;18949:4;18942:11;;;18771:190;;;;;:::o;31114:143::-;9302:13;:11;:13::i;:::-;31200:6:::1;:18:::0;;;;31229:7:::1;:20:::0;31114:143::o;30243:379::-;9302:13;:11;:13::i;:::-;30336::::1;::::0;-1:-1:-1;;;;;30336:13:0::1;:27:::0;30328:59:::1;;;::::0;-1:-1:-1;;;30328:59:0;;4479:2:1;30328:59:0::1;::::0;::::1;4461:21:1::0;4518:2;4498:18;;;4491:30;-1:-1:-1;;;4537:18:1;;;4530:49;4596:18;;30328:59:0::1;;;;;;;;;30408:13;:32:::0;;-1:-1:-1;;;;;;30408:32:0::1;-1:-1:-1::0;;;;;30408:32:0;::::1;;::::0;;30451:40:::1;30408:32:::0;-1:-1:-1;30451:16:0::1;:40::i;:::-;30502:21;30544:14;17505:2:::0;30544::::1;:14;:::i;:::-;30526:32;::::0;:15:::1;:32;:::i;:::-;30585:13;::::0;30502:56;;-1:-1:-1;30576:38:0::1;::::0;-1:-1:-1;;;;;30585:13:0::1;30502:56:::0;30576:8:::1;:38::i;:::-;;30317:305;30243:379:::0;:::o;30829:125::-;9302:13;:11;:13::i;:::-;-1:-1:-1;;;;;30915:20:0;;;::::1;;::::0;;;:11:::1;:20;::::0;;;;:31;;-1:-1:-1;;30915:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;30829:125::o;19539:249::-;19626:4;7505:10;19684:37;19700:4;7505:10;19715:5;19684:15;:37::i;:::-;19732:26;19742:4;19748:2;19752:5;19732:9;:26::i;:::-;-1:-1:-1;19776:4:0;;19539:249;-1:-1:-1;;;;19539:249:0:o;31767:129::-;9302:13;:11;:13::i;:::-;31853:14:::1;:35:::0;31767:129::o;36075:90::-;36132:25;36138:10;36150:6;36132:5;:25::i;:::-;36075:90;:::o;10091:103::-;9302:13;:11;:13::i;:::-;10156:30:::1;10183:1;10156:18;:30::i;:::-;10091:103::o:0;26829:161::-;26905:45;26921:7;7505:10;26944:5;26905:15;:45::i;:::-;26961:21;26967:7;26976:5;26961;:21::i;:::-;26829:161;;:::o;29742:339::-;9302:13;:11;:13::i;:::-;29829:10:::1;::::0;-1:-1:-1;;;;;29829:10:0::1;:24:::0;29821:53:::1;;;::::0;-1:-1:-1;;;29821:53:0;;6509:2:1;29821:53:0::1;::::0;::::1;6491:21:1::0;6548:2;6528:18;;;6521:30;-1:-1:-1;;;6567:18:1;;;6560:46;6623:18;;29821:53:0::1;6307:340:1::0;29821:53:0::1;29887:10;:26:::0;;-1:-1:-1;;;;;;29887:26:0::1;-1:-1:-1::0;;;;;29887:26:0;::::1;;::::0;;29924:37:::1;29887:26:::0;-1:-1:-1;29924:16:0::1;:37::i;:::-;29972:18;30010:14;17505:2:::0;30010::::1;:14;:::i;:::-;29993:31;::::0;:14:::1;:31;:::i;:::-;30050:10;::::0;29972:52;;-1:-1:-1;30041:32:0::1;::::0;-1:-1:-1;;;;;30050:10:0::1;29972:52:::0;30041:8:::1;:32::i;29224:164::-:0;9302:13;:11;:13::i;:::-;29309:9:::1;:24:::0;;-1:-1:-1;;;;;;29309:24:0::1;-1:-1:-1::0;;;;;29309:24:0;::::1;;::::0;;29344:36:::1;29309:24:::0;-1:-1:-1;29344:16:0::1;:36::i;16688:95::-:0;16735:13;16768:7;16761:14;;;;;:::i;29484:122::-;9302:13;:11;:13::i;:::-;29566::::1;:32:::0;;-1:-1:-1;;;;;;29566:32:0::1;-1:-1:-1::0;;;;;29566:32:0;;;::::1;::::0;;;::::1;::::0;;29484:122::o;32500:2986::-;32597:4;32634:10;32672:5;32634:10;32690:57;;;;-1:-1:-1;;;32690:57:0;;6854:2:1;32690:57:0;;;6836:21:1;6893:2;6873:18;;;6866:30;6932:28;6912:18;;;6905:56;6978:18;;32690:57:0;6652:350:1;32690:57:0;-1:-1:-1;;;;;32766:16:0;;32758:53;;;;-1:-1:-1;;;32758:53:0;;7209:2:1;32758:53:0;;;7191:21:1;7248:2;7228:18;;;7221:30;7287:26;7267:18;;;7260:54;7331:18;;32758:53:0;7007:348:1;32758:53:0;32834:10;;-1:-1:-1;;;;;32834:10:0;;;32828:16;;;;32824:106;;32869:10;;-1:-1:-1;;;;;32869:10:0;32861:57;;;;-1:-1:-1;;;32861:57:0;;7562:2:1;32861:57:0;;;7544:21:1;7601:2;7581:18;;;7574:30;-1:-1:-1;;;7620:18:1;;;7613:50;7680:18;;32861:57:0;7360:344:1;32861:57:0;32952:13;;-1:-1:-1;;;;;32952:13:0;;;32946:19;;;;32942:129;;32990:13;;-1:-1:-1;;;;;32990:13:0;32982:77;;;;-1:-1:-1;;;32982:77:0;;7911:2:1;32982:77:0;;;7893:21:1;7950:2;7930:18;;;7923:30;7989:25;7969:18;;;7962:53;8032:18;;32982:77:0;7709:347:1;32982:77:0;33091:9;;-1:-1:-1;;;;;33091:9:0;33083:65;;;;-1:-1:-1;;;33083:65:0;;8263:2:1;33083:65:0;;;8245:21:1;8302:2;8282:18;;;8275:30;-1:-1:-1;;;8321:18:1;;;8314:49;8380:18;;33083:65:0;8061:343:1;33083:65:0;9489:6;;-1:-1:-1;;;;;33165:15:0;;;9489:6;;33165:15;;;;:32;;-1:-1:-1;9489:6:0;;-1:-1:-1;;;;;33184:13:0;;;9489:6;;33184:13;;33165:32;:57;;;;-1:-1:-1;;;;;;33201:21:0;;33215:6;33201:21;;33165:57;33161:210;;;33244:11;;-1:-1:-1;;;33244:11:0;;;;33239:121;;-1:-1:-1;;;;;33284:17:0;;;;;;:11;:17;;;;;;;;;:36;;-1:-1:-1;;;;;;33305:15:0;;;;;;:11;:15;;;;;;;;33284:36;33276:68;;;;-1:-1:-1;;;33276:68:0;;8611:2:1;33276:68:0;;;8593:21:1;8650:2;8630:18;;;8623:30;-1:-1:-1;;;8669:18:1;;;8662:49;8728:18;;33276:68:0;8409:343:1;33276:68:0;9489:6;;-1:-1:-1;;;;;33401:15:0;;;9489:6;;33401:15;;;;:45;;-1:-1:-1;9489:6:0;;-1:-1:-1;;;;;33433:13:0;;;9489:6;;33433:13;;33401:45;:80;;;;-1:-1:-1;;;;;;33464:17:0;;;;;;:11;:17;;;;;;;;33463:18;33401:80;:113;;;;-1:-1:-1;;;;;;33499:15:0;;;;;;:11;:15;;;;;;;;33498:16;33401:113;33383:356;;;33620:11;;33610:6;:21;;33602:55;;;;-1:-1:-1;;;33602:55:0;;8959:2:1;33602:55:0;;;8941:21:1;8998:2;8978:18;;;8971:30;-1:-1:-1;;;9017:18:1;;;9010:51;9078:18;;33602:55:0;8757:345:1;33602:55:0;33690:11;;33680:6;:21;;33672:55;;;;-1:-1:-1;;;33672:55:0;;9309:2:1;33672:55:0;;;9291:21:1;9348:2;9328:18;;;9321:30;-1:-1:-1;;;9367:18:1;;;9360:51;9428:18;;33672:55:0;9107:345:1;33672:55:0;9489:6;;-1:-1:-1;;;;;33831:15:0;;;9489:6;;33831:15;;;;:32;;-1:-1:-1;9489:6:0;;-1:-1:-1;;;;;33850:13:0;;;9489:6;;33850:13;;33831:32;:52;;;;-1:-1:-1;;;;;;33868:15:0;;;;;;:11;:15;;;;;;;;33867:16;33831:52;:77;;;;-1:-1:-1;;;;;;33887:21:0;;33901:6;33887:21;;33831:77;:100;;;;-1:-1:-1;33918:13:0;;-1:-1:-1;;;;;33912:19:0;;;33918:13;;33912:19;;33831:100;33827:257;;;-1:-1:-1;;;;;17834:18:0;;33948;17834;;;;;;;;;;;33969:22;;33985:6;;33969:22;:::i;:::-;33948:43;;34028:14;;34014:10;:28;;34006:66;;;;-1:-1:-1;;;34006:66:0;;9789:2:1;34006:66:0;;;9771:21:1;9828:2;9808:18;;;9801:30;9867:27;9847:18;;;9840:55;9912:18;;34006:66:0;9587:349:1;34006:66:0;33933:151;33827:257;-1:-1:-1;;;;;34198:17:0;;34181:12;34198:17;;;:11;:17;;;;;;;;;:36;;-1:-1:-1;;;;;;34219:15:0;;;;;;:11;:15;;;;;;;;34198:36;34196:39;34181:54;;34252:7;34248:1161;;;34348:13;;34276:12;;;;-1:-1:-1;;;;;34348:13:0;;;34342:19;;;;34338:488;;34447:7;34436;;34427:6;:16;;;;:::i;:::-;34426:28;;;;:::i;:::-;34419:35;-1:-1:-1;34488:8:0;34495:1;34419:35;34488:8;:::i;:::-;34475:21;;34515:16;34520:10;34515:4;:16::i;:::-;34589:17;34609;34616:10;34609:4;:17;:::i;:::-;34667:9;;34589:37;;-1:-1:-1;34645:43:0;;34661:4;;-1:-1:-1;;;;;34667:9:0;34589:37;34645:15;:43::i;:::-;34754:14;34764:4;34754:14;;:::i;:::-;;;34363:463;34338:488;34901:13;;-1:-1:-1;;;;;34893:21:0;;;34901:13;;34893:21;:42;;;;-1:-1:-1;;;;;;17834:18:0;;34934:1;17834:18;;;;;;;;;;;34918:17;34893:42;34889:509;;;35019:7;35009:6;;35000;:15;;;;:::i;:::-;34999:27;;;;:::i;:::-;34992:34;-1:-1:-1;35060:8:0;35067:1;34992:34;35060:8;:::i;:::-;35047:21;;35087:16;35092:10;35087:4;:16::i;:::-;35161:17;35181;35188:10;35181:4;:17;:::i;:::-;35239:9;;35161:37;;-1:-1:-1;35217:43:0;;35233:4;;-1:-1:-1;;;;;35239:9:0;35161:37;35217:15;:43::i;:::-;35326:14;35336:4;35326:14;;:::i;:::-;;;34937:461;34889:509;34261:1148;;34248:1161;35421:33;35437:4;35443:2;35447:6;35421:15;:33::i;:::-;-1:-1:-1;35474:4:0;;32500:2986;-1:-1:-1;;;;;32500:2986:0:o;28951:79::-;9302:13;:11;:13::i;:::-;29004:11:::1;:18:::0;;-1:-1:-1;;;;29004:18:0::1;-1:-1:-1::0;;;29004:18:0::1;::::0;;28951:79::o;31428:197::-;9302:13;:11;:13::i;:::-;31550:11:::1;:28:::0;;;;31589:11:::1;:28:::0;31428:197::o;10349:220::-;9302:13;:11;:13::i;:::-;-1:-1:-1;;;;;10434:22:0;::::1;10430:93;;10480:31;::::0;-1:-1:-1;;;10480:31:0;;10508:1:::1;10480:31;::::0;::::1;2897:51:1::0;2870:18;;10480:31:0::1;2751:203:1::0;10430:93:0::1;10533:28;10552:8;10533:18;:28::i;23606:130::-:0;23691:37;23700:5;23707:7;23716:5;23723:4;23691:8;:37::i;9581:166::-;9489:6;;-1:-1:-1;;;;;9489:6:0;7505:10;9641:23;9637:103;;9688:40;;-1:-1:-1;;;9688:40:0;;7505:10;9688:40;;;2897:51:1;2870:18;;9688:40:0;2751:203:1;25322:487:0;-1:-1:-1;;;;;18417:18:0;;;25422:24;18417:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;25489:37:0;;25485:317;;25566:5;25547:16;:24;25543:132;;;25599:60;;-1:-1:-1;;;25599:60:0;;-1:-1:-1;;;;;10516:32:1;;25599:60:0;;;10498:51:1;10565:18;;;10558:34;;;10608:18;;;10601:34;;;10471:18;;25599:60:0;10296:345:1;25543:132:0;25718:57;25727:5;25734:7;25762:5;25743:16;:24;25769:5;25718:8;:57::i;:::-;25411:398;25322:487;;;:::o;20173:316::-;-1:-1:-1;;;;;20265:18:0;;20261:88;;20307:30;;-1:-1:-1;;;20307:30:0;;20334:1;20307:30;;;2897:51:1;2870:18;;20307:30:0;2751:203:1;20261:88:0;-1:-1:-1;;;;;20363:16:0;;20359:88;;20403:32;;-1:-1:-1;;;20403:32:0;;20432:1;20403:32;;;2897:51:1;2870:18;;20403:32:0;2751:203:1;20359:88:0;20457:24;20465:4;20471:2;20475:5;20457:7;:24::i;22842:211::-;-1:-1:-1;;;;;22913:21:0;;22909:91;;22958:30;;-1:-1:-1;;;22958:30:0;;22985:1;22958:30;;;2897:51:1;2870:18;;22958:30:0;2751:203:1;22909:91:0;23010:35;23018:7;23035:1;23039:5;23010:7;:35::i;10729:191::-;10822:6;;;-1:-1:-1;;;;;10839:17:0;;;-1:-1:-1;;;;;;10839:17:0;;;;;;;10872:40;;10822:6;;;10839:17;10822:6;;10872:40;;10803:16;;10872:40;10792:128;10729:191;:::o;24587:443::-;-1:-1:-1;;;;;24700:19:0;;24696:91;;24743:32;;-1:-1:-1;;;24743:32:0;;24772:1;24743:32;;;2897:51:1;2870:18;;24743:32:0;2751:203:1;24696:91:0;-1:-1:-1;;;;;24801:21:0;;24797:92;;24846:31;;-1:-1:-1;;;24846:31:0;;24874:1;24846:31;;;2897:51:1;2870:18;;24846:31:0;2751:203:1;24797:92:0;-1:-1:-1;;;;;24899:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;24945:78;;;;24996:7;-1:-1:-1;;;;;24980:31:0;24989:5;-1:-1:-1;;;;;24980:31:0;;25005:5;24980:31;;;;1465:25:1;;1453:2;1438:18;;1319:177;24980:31:0;;;;;;;;24587:443;;;;:::o;20813:1135::-;-1:-1:-1;;;;;20903:18:0;;20899:552;;21057:5;21041:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;20899:552:0;;-1:-1:-1;20899:552:0;;-1:-1:-1;;;;;21117:15:0;;21095:19;21117:15;;;;;;;;;;;21151:19;;;21147:117;;;21198:50;;-1:-1:-1;;;21198:50:0;;-1:-1:-1;;;;;10516:32:1;;21198:50:0;;;10498:51:1;10565:18;;;10558:34;;;10608:18;;;10601:34;;;10471:18;;21198:50:0;10296:345:1;21147:117:0;-1:-1:-1;;;;;21387:15:0;;:9;:15;;;;;;;;;;21405:19;;;;21387:37;;20899:552;-1:-1:-1;;;;;21467:16:0;;21463:435;;21633:12;:21;;;;;;;21463:435;;;-1:-1:-1;;;;;21849:13:0;;:9;:13;;;;;;;;;;:22;;;;;;21463:435;21930:2;-1:-1:-1;;;;;21915:25:0;21924:4;-1:-1:-1;;;;;21915:25:0;;21934:5;21915:25;;;;1465::1;;1453:2;1438:18;;1319:177;21915:25:0;;;;;;;;20813:1135;;;:::o;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:173::-;505:20;;-1:-1:-1;;;;;554:31:1;;544:42;;534:70;;600:1;597;590:12;534:70;437:173;;;:::o;615:254::-;683:6;691;744:2;732:9;723:7;719:23;715:32;712:52;;;760:1;757;750:12;712:52;783:29;802:9;783:29;:::i;:::-;773:39;859:2;844:18;;;;831:32;;-1:-1:-1;;;615:254:1:o;1066:248::-;1134:6;1142;1195:2;1183:9;1174:7;1170:23;1166:32;1163:52;;;1211:1;1208;1201:12;1163:52;-1:-1:-1;;1234:23:1;;;1304:2;1289:18;;;1276:32;;-1:-1:-1;1066:248:1:o;1501:186::-;1560:6;1613:2;1601:9;1592:7;1588:23;1584:32;1581:52;;;1629:1;1626;1619:12;1581:52;1652:29;1671:9;1652:29;:::i;:::-;1642:39;1501:186;-1:-1:-1;;;1501:186:1:o;1692:347::-;1757:6;1765;1818:2;1806:9;1797:7;1793:23;1789:32;1786:52;;;1834:1;1831;1824:12;1786:52;1857:29;1876:9;1857:29;:::i;:::-;1847:39;;1936:2;1925:9;1921:18;1908:32;1983:5;1976:13;1969:21;1962:5;1959:32;1949:60;;2005:1;2002;1995:12;1949:60;2028:5;2018:15;;;1692:347;;;;;:::o;2044:328::-;2121:6;2129;2137;2190:2;2178:9;2169:7;2165:23;2161:32;2158:52;;;2206:1;2203;2196:12;2158:52;2229:29;2248:9;2229:29;:::i;:::-;2219:39;;2277:38;2311:2;2300:9;2296:18;2277:38;:::i;:::-;2267:48;;2362:2;2351:9;2347:18;2334:32;2324:42;;2044:328;;;;;:::o;2377:180::-;2436:6;2489:2;2477:9;2468:7;2464:23;2460:32;2457:52;;;2505:1;2502;2495:12;2457:52;-1:-1:-1;2528:23:1;;2377:180;-1:-1:-1;2377:180:1:o;3627:260::-;3695:6;3703;3756:2;3744:9;3735:7;3731:23;3727:32;3724:52;;;3772:1;3769;3762:12;3724:52;3795:29;3814:9;3795:29;:::i;:::-;3785:39;;3843:38;3877:2;3866:9;3862:18;3843:38;:::i;:::-;3833:48;;3627:260;;;;;:::o;3892:380::-;3971:1;3967:12;;;;4014;;;4035:61;;4089:4;4081:6;4077:17;4067:27;;4035:61;4142:2;4134:6;4131:14;4111:18;4108:38;4105:161;;4188:10;4183:3;4179:20;4176:1;4169:31;4223:4;4220:1;4213:15;4251:4;4248:1;4241:15;4105:161;;3892:380;;;:::o;4625:127::-;4686:10;4681:3;4677:20;4674:1;4667:31;4717:4;4714:1;4707:15;4741:4;4738:1;4731:15;4757:416;4846:1;4883:5;4846:1;4897:270;4918:7;4908:8;4905:21;4897:270;;;4977:4;4973:1;4969:6;4965:17;4959:4;4956:27;4953:53;;;4986:18;;:::i;:::-;5036:7;5026:8;5022:22;5019:55;;;5056:16;;;;5019:55;5135:22;;;;5095:15;;;;4897:270;;;4901:3;4757:416;;;;;:::o;5178:806::-;5227:5;5257:8;5247:80;;-1:-1:-1;5298:1:1;5312:5;;5247:80;5346:4;5336:76;;-1:-1:-1;5383:1:1;5397:5;;5336:76;5428:4;5446:1;5441:59;;;;5514:1;5509:130;;;;5421:218;;5441:59;5471:1;5462:10;;5485:5;;;5509:130;5546:3;5536:8;5533:17;5530:43;;;5553:18;;:::i;:::-;-1:-1:-1;;5609:1:1;5595:16;;5624:5;;5421:218;;5723:2;5713:8;5710:16;5704:3;5698:4;5695:13;5691:36;5685:2;5675:8;5672:16;5667:2;5661:4;5658:12;5654:35;5651:77;5648:159;;;-1:-1:-1;5760:19:1;;;5792:5;;5648:159;5839:34;5864:8;5858:4;5839:34;:::i;:::-;5909:6;5905:1;5901:6;5897:19;5888:7;5885:32;5882:58;;;5920:18;;:::i;:::-;5958:20;;5178:806;-1:-1:-1;;;5178:806:1:o;5989:140::-;6047:5;6076:47;6117:4;6107:8;6103:19;6097:4;6076:47;:::i;6134:168::-;6207:9;;;6238;;6255:15;;;6249:22;;6235:37;6225:71;;6276:18;;:::i;9457:125::-;9522:9;;;9543:10;;;9540:36;;;9556:18;;:::i;9941:217::-;9981:1;10007;9997:132;;10051:10;10046:3;10042:20;10039:1;10032:31;10086:4;10083:1;10076:15;10114:4;10111:1;10104:15;9997:132;-1:-1:-1;10143:9:1;;9941:217::o;10163:128::-;10230:9;;;10251:11;;;10248:37;;;10265:18;;:::i

Swarm Source

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