ETH Price: $2,436.12 (+6.15%)

Token

Smart-Inu (SMINU)
 

Overview

Max Total Supply

35,055,060.87064965693122552 SMINU

Holders

94

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
10,422,470.484394482594793447 SMINU

Value
$0.00
0x5af743e228c54da37bc41f42aea4999e6f280f24
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:
SmartINUToken

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-11-20
*/

/**
 
░██████╗███╗░░░███╗░█████╗░██████╗░████████╗  ██╗███╗░░██╗██╗░░░██╗
██╔════╝████╗░████║██╔══██╗██╔══██╗╚══██╔══╝  ██║████╗░██║██║░░░██║
╚█████╗░██╔████╔██║███████║██████╔╝░░░██║░░░  ██║██╔██╗██║██║░░░██║
░╚═══██╗██║╚██╔╝██║██╔══██║██╔══██╗░░░██║░░░  ██║██║╚████║██║░░░██║
██████╔╝██║░╚═╝░██║██║░░██║██║░░██║░░░██║░░░  ██║██║░╚███║╚██████╔╝
╚═════╝░╚═╝░░░░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝░░░╚═╝░░░  ╚═╝╚═╝░░╚══╝░╚═════╝░
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with 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;
    }
}
/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

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

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

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}
/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * 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.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}
/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

abstract contract SmartInuTokenInterface is ERC20, Ownable {
    /// @notice Total number of tokens
    uint256 public maxSupply = 1_000_000_000e18; // 1 Billion SMARTINU

    /// @notice Creates `_amount` token to `_to`. Must only be called by the owner (SMARTINU FARM).
    function mint(address _to, uint256 _amount) public onlyOwner {
        require(
            (totalSupply() + _amount) <= maxSupply,
            "SMARTINU::mint: cannot exceed max supply"
        );
        _mint(_to, _amount);
        _moveDelegates(address(0), _delegates[_to], _amount);
    }

    /// @notice A record of each accounts delegate
    mapping(address => address) internal _delegates;

    /// @notice A checkpoint for marking number of votes from a given block
    struct Checkpoint {
        uint32 fromBlock;
        uint256 votes;
    }

    /// @notice A record of votes checkpoints for each account, by index
    mapping(address => mapping(uint32 => Checkpoint)) public checkpoints;

    /// @notice The number of checkpoints for each account
    mapping(address => uint32) public numCheckpoints;

    /// @notice The EIP-712 typehash for the contract's domain
    bytes32 public constant DOMAIN_TYPEHASH =
        keccak256(
            "EIP712Domain(string name,uint256 chainId,address verifyingContract)"
        );

    /// @notice The EIP-712 typehash for the delegation struct used by the contract
    bytes32 public constant DELEGATION_TYPEHASH =
        keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)");

    /// @notice A record of states for signing / validating signatures
    mapping(address => uint256) public nonces;

    /// @notice An event thats emitted when an account changes its delegate
    event DelegateChanged(
        address indexed delegator,
        address indexed fromDelegate,
        address indexed toDelegate
    );

    /// @notice An event thats emitted when a delegate account's vote balance changes
    event DelegateVotesChanged(
        address indexed delegate,
        uint256 previousBalance,
        uint256 newBalance
    );

    /**
     * @notice Delegate votes from `msg.sender` to `delegatee`
     * @param delegator The address to get delegatee for
     */
    function delegates(address delegator) external view returns (address) {
        return _delegates[delegator];
    }

    /**
     * @notice Delegate votes from `msg.sender` to `delegatee`
     * @param delegatee The address to delegate votes to
     */
    function delegate(address delegatee) external {
        return _delegate(msg.sender, delegatee);
    }

    /**
     * @notice Delegates votes from signatory to `delegatee`
     * @param delegatee The address to delegate votes to
     * @param nonce The contract state required to match the signature
     * @param expiry The time at which to expire the signature
     * @param v The recovery byte of the signature
     * @param r Half of the ECDSA signature pair
     * @param s Half of the ECDSA signature pair
     */
    function delegateBySig(
        address delegatee,
        uint256 nonce,
        uint256 expiry,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external {
        bytes32 domainSeparator = keccak256(
            abi.encode(
                DOMAIN_TYPEHASH,
                keccak256(bytes(name())),
                getChainId(),
                address(this)
            )
        );

        bytes32 structHash = keccak256(
            abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry)
        );

        bytes32 digest = keccak256(
            abi.encodePacked("\x19\x01", domainSeparator, structHash)
        );

        address signatory = ecrecover(digest, v, r, s);
        require(
            signatory != address(0),
            "SMARTINU::delegateBySig: invalid signature"
        );
        require(
            nonce == nonces[signatory]++,
            "SMARTINU::delegateBySig: invalid nonce"
        );
        require(block.timestamp <= expiry, "SMARTINU::delegateBySig: signature expired");
        return _delegate(signatory, delegatee);
    }

    /**
     * @notice Gets the current votes balance for `account`
     * @param account The address to get votes balance
     * @return The number of current votes for `account`
     */
    function getCurrentVotes(address account) external view returns (uint256) {
        uint32 nCheckpoints = numCheckpoints[account];
        return
            nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;
    }

    /**
     * @notice Determine the prior number of votes for an account as of a block number
     * @dev Block number must be a finalized block or else this function will revert to prevent misinformation.
     * @param account The address of the account to check
     * @param blockNumber The block number to get the vote balance at
     * @return The number of votes the account had as of the given block
     */
    function getPriorVotes(address account, uint256 blockNumber)
        external
        view
        returns (uint256)
    {
        require(
            blockNumber < block.number,
            "SMARTINU::getPriorVotes: not yet determined"
        );

        uint32 nCheckpoints = numCheckpoints[account];
        if (nCheckpoints == 0) {
            return 0;
        }

        // First check most recent balance
        if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {
            return checkpoints[account][nCheckpoints - 1].votes;
        }

        // Next check implicit zero balance
        if (checkpoints[account][0].fromBlock > blockNumber) {
            return 0;
        }

        uint32 lower = 0;
        uint32 upper = nCheckpoints - 1;
        while (upper > lower) {
            uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow
            Checkpoint memory cp = checkpoints[account][center];
            if (cp.fromBlock == blockNumber) {
                return cp.votes;
            } else if (cp.fromBlock < blockNumber) {
                lower = center;
            } else {
                upper = center - 1;
            }
        }
        return checkpoints[account][lower].votes;
    }

    function _delegate(address delegator, address delegatee) internal {
        address currentDelegate = _delegates[delegator];
        uint256 delegatorBalance = balanceOf(delegator); // balance of underlying SMARTINU (not scaled);
        _delegates[delegator] = delegatee;

        emit DelegateChanged(delegator, currentDelegate, delegatee);

        _moveDelegates(currentDelegate, delegatee, delegatorBalance);
    }

    function _moveDelegates(
        address srcRep,
        address dstRep,
        uint256 amount
    ) internal {
        if (srcRep != dstRep && amount > 0) {
            if (srcRep != address(0)) {
                // decrease old representative
                uint32 srcRepNum = numCheckpoints[srcRep];
                uint256 srcRepOld = srcRepNum > 0
                    ? checkpoints[srcRep][srcRepNum - 1].votes
                    : 0;
                uint256 srcRepNew = srcRepOld - amount;
                _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
            }

            if (dstRep != address(0)) {
                // increase new representative
                uint32 dstRepNum = numCheckpoints[dstRep];
                uint256 dstRepOld = dstRepNum > 0
                    ? checkpoints[dstRep][dstRepNum - 1].votes
                    : 0;
                uint256 dstRepNew = dstRepOld + amount;
                _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
            }
        }
    }

    function _writeCheckpoint(
        address delegatee,
        uint32 nCheckpoints,
        uint256 oldVotes,
        uint256 newVotes
    ) internal {
        uint32 blockNumber = safe32(
            block.number,
            "SMARTINU::_writeCheckpoint: block number exceeds 32 bits"
        );

        if (
            nCheckpoints > 0 &&
            checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber
        ) {
            checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;
        } else {
            checkpoints[delegatee][nCheckpoints] = Checkpoint(
                blockNumber,
                newVotes
            );
            numCheckpoints[delegatee] = nCheckpoints + 1;
        }

        emit DelegateVotesChanged(delegatee, oldVotes, newVotes);
    }

    function safe32(uint256 n, string memory errorMessage)
        internal
        pure
        returns (uint32)
    {
        require(n < 2**32, errorMessage);
        return uint32(n);
    }

    function getChainId() internal view returns (uint256) {
        uint256 chainId;
        assembly {
            chainId := chainid()
        }
        return chainId;
    }
}

contract SmartINUToken is SmartInuTokenInterface {
    constructor(string memory name, string memory symbol) ERC20(name, symbol) {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"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":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","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":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint256","name":"votes","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":[{"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"}]

60806040526b033b2e3c9fd0803ce80000006006553480156200002157600080fd5b5060405162001ca138038062001ca183398101604081905262000044916200024b565b8151829082906200005d906003906020850190620000ee565b50805162000073906004906020840190620000ee565b505050620000906200008a6200009860201b60201c565b6200009c565b505062000308565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620000fc90620002b5565b90600052602060002090601f0160209004810192826200012057600085556200016b565b82601f106200013b57805160ff19168380011785556200016b565b828001600101855582156200016b579182015b828111156200016b5782518255916020019190600101906200014e565b50620001799291506200017d565b5090565b5b808211156200017957600081556001016200017e565b600082601f830112620001a657600080fd5b81516001600160401b0380821115620001c357620001c3620002f2565b604051601f8301601f19908116603f01168101908282118183101715620001ee57620001ee620002f2565b816040528381526020925086838588010111156200020b57600080fd5b600091505b838210156200022f578582018301518183018401529082019062000210565b83821115620002415760008385830101525b9695505050505050565b600080604083850312156200025f57600080fd5b82516001600160401b03808211156200027757600080fd5b620002858683870162000194565b935060208501519150808211156200029c57600080fd5b50620002ab8582860162000194565b9150509250929050565b600181811c90821680620002ca57607f821691505b60208210811415620002ec57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b61198980620003186000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063782d6fe1116100de578063b4b5ea5711610097578063dd62ed3e11610071578063dd62ed3e146103bb578063e7a324dc146103f4578063f1127ed81461041b578063f2fde38b1461047257600080fd5b8063b4b5ea571461038c578063c3cda5201461039f578063d5abeb01146103b257600080fd5b8063782d6fe11461031a5780637ecebe001461032d5780638da5cb5b1461034d57806395d89b411461035e578063a457c2d714610366578063a9059cbb1461037957600080fd5b8063395093511161014b5780635c19a95c116101255780635c19a95c1461029b5780636fcfff45146102ae57806370a08231146102e9578063715018a61461031257600080fd5b8063395093511461022f57806340c10f1914610242578063587cde1e1461025757600080fd5b806306fdde0314610193578063095ea7b3146101b157806318160ddd146101d457806320606b70146101e657806323b872dd1461020d578063313ce56714610220575b600080fd5b61019b610485565b6040516101a89190611778565b60405180910390f35b6101c46101bf3660046116ae565b610517565b60405190151581526020016101a8565b6002545b6040519081526020016101a8565b6101d87f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6101c461021b366004611672565b61052e565b604051601281526020016101a8565b6101c461023d3660046116ae565b6105dd565b6102556102503660046116ae565b610619565b005b610283610265366004611624565b6001600160a01b039081166000908152600760205260409020541690565b6040516001600160a01b0390911681526020016101a8565b6102556102a9366004611624565b6106ec565b6102d46102bc366004611624565b60096020526000908152604090205463ffffffff1681565b60405163ffffffff90911681526020016101a8565b6101d86102f7366004611624565b6001600160a01b031660009081526020819052604090205490565b6102556106f9565b6101d86103283660046116ae565b61072f565b6101d861033b366004611624565b600a6020526000908152604090205481565b6005546001600160a01b0316610283565b61019b610998565b6101c46103743660046116ae565b6109a7565b6101c46103873660046116ae565b610a40565b6101d861039a366004611624565b610a4d565b6102556103ad3660046116d8565b610ac2565b6101d860065481565b6101d86103c936600461163f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101d87fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b610456610429366004611738565b60086020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b6040805163ffffffff90931683526020830191909152016101a8565b610255610480366004611624565b610d9c565b606060038054610494906118af565b80601f01602080910402602001604051908101604052809291908181526020018280546104c0906118af565b801561050d5780601f106104e25761010080835404028352916020019161050d565b820191906000526020600020905b8154815290600101906020018083116104f057829003601f168201915b5050505050905090565b6000610524338484610e34565b5060015b92915050565b600061053b848484610f58565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156105c55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6105d28533858403610e34565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610524918590610614908690611802565b610e34565b6005546001600160a01b031633146106435760405162461bcd60e51b81526004016105bc906117cd565b6006548161065060025490565b61065a9190611802565b11156106b95760405162461bcd60e51b815260206004820152602860248201527f534d415254494e553a3a6d696e743a2063616e6e6f7420657863656564206d616044820152677820737570706c7960c01b60648201526084016105bc565b6106c38282611128565b6001600160a01b038083166000908152600760205260408120546106e8921683611207565b5050565b6106f6338261136b565b50565b6005546001600160a01b031633146107235760405162461bcd60e51b81526004016105bc906117cd565b61072d60006113e4565b565b60004382106107945760405162461bcd60e51b815260206004820152602b60248201527f534d415254494e553a3a6765745072696f72566f7465733a206e6f742079657460448201526a0819195d195c9b5a5b995960aa1b60648201526084016105bc565b6001600160a01b03831660009081526009602052604090205463ffffffff16806107c2576000915050610528565b6001600160a01b038416600090815260086020526040812084916107e760018561188a565b63ffffffff90811682526020820192909252604001600020541611610850576001600160a01b03841660009081526008602052604081209061082a60018461188a565b63ffffffff1663ffffffff16815260200190815260200160002060010154915050610528565b6001600160a01b038416600090815260086020908152604080832083805290915290205463ffffffff1683101561088b576000915050610528565b60008061089960018461188a565b90505b8163ffffffff168163ffffffff16111561096157600060026108be848461188a565b6108c89190611842565b6108d2908361188a565b6001600160a01b038816600090815260086020908152604080832063ffffffff8086168552908352928190208151808301909252805490931680825260019093015491810191909152919250871415610935576020015194506105289350505050565b805163ffffffff1687111561094c5781935061095a565b61095760018361188a565b92505b505061089c565b506001600160a01b038516600090815260086020908152604080832063ffffffff9094168352929052206001015491505092915050565b606060048054610494906118af565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610a295760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105bc565b610a363385858403610e34565b5060019392505050565b6000610524338484610f58565b6001600160a01b03811660009081526009602052604081205463ffffffff1680610a78576000610abb565b6001600160a01b038316600090815260086020526040812090610a9c60018461188a565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9392505050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866610aed610485565b80519060200120610afb4690565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08401526001600160a01b038b1660e084015261010083018a90526101208084018a90528251808503909101815261014084019092528151919093012061190160f01b610160830152610162820183905261018282018190529192506000906101a20160408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015610c27573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610c9d5760405162461bcd60e51b815260206004820152602a60248201527f534d415254494e553a3a64656c656761746542795369673a20696e76616c6964604482015269207369676e617475726560b01b60648201526084016105bc565b6001600160a01b0381166000908152600a60205260408120805491610cc1836118ea565b919050558914610d225760405162461bcd60e51b815260206004820152602660248201527f534d415254494e553a3a64656c656761746542795369673a20696e76616c6964604482015265206e6f6e636560d01b60648201526084016105bc565b87421115610d855760405162461bcd60e51b815260206004820152602a60248201527f534d415254494e553a3a64656c656761746542795369673a207369676e6174756044820152691c9948195e1c1a5c995960b21b60648201526084016105bc565b610d8f818b61136b565b505050505b505050505050565b6005546001600160a01b03163314610dc65760405162461bcd60e51b81526004016105bc906117cd565b6001600160a01b038116610e2b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105bc565b6106f6816113e4565b6001600160a01b038316610e965760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105bc565b6001600160a01b038216610ef75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105bc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610fbc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105bc565b6001600160a01b03821661101e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105bc565b6001600160a01b038316600090815260208190526040902054818110156110965760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105bc565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906110cd908490611802565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161111991815260200190565b60405180910390a35b50505050565b6001600160a01b03821661117e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105bc565b80600260008282546111909190611802565b90915550506001600160a01b038216600090815260208190526040812080548392906111bd908490611802565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b816001600160a01b0316836001600160a01b0316141580156112295750600081115b15611366576001600160a01b038316156112cc576001600160a01b03831660009081526009602052604081205463ffffffff1690816112695760006112ac565b6001600160a01b03851660009081526008602052604081209061128d60018561188a565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060006112ba8483611873565b90506112c886848484611436565b5050505b6001600160a01b03821615611366576001600160a01b03821660009081526009602052604081205463ffffffff16908161130757600061134a565b6001600160a01b03841660009081526008602052604081209061132b60018561188a565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060006113588483611802565b9050610d9485848484611436565b505050565b6001600160a01b038281166000818152600760208181526040808420805485845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611122828483611207565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600061145a4360405180606001604052806038815260200161191c603891396115d8565b905060008463ffffffff161180156114b457506001600160a01b038516600090815260086020526040812063ffffffff83169161149860018861188a565b63ffffffff908116825260208201929092526040016000205416145b156114fd576001600160a01b038516600090815260086020526040812083916114de60018861188a565b63ffffffff16815260208101919091526040016000206001015561158d565b60408051808201825263ffffffff838116825260208083018681526001600160a01b038a166000908152600883528581208a851682529092529390209151825463ffffffff19169116178155905160019182015561155c90859061181a565b6001600160a01b0386166000908152600960205260409020805463ffffffff191663ffffffff929092169190911790555b60408051848152602081018490526001600160a01b038716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b60008164010000000084106116005760405162461bcd60e51b81526004016105bc9190611778565b509192915050565b80356001600160a01b038116811461161f57600080fd5b919050565b60006020828403121561163657600080fd5b610abb82611608565b6000806040838503121561165257600080fd5b61165b83611608565b915061166960208401611608565b90509250929050565b60008060006060848603121561168757600080fd5b61169084611608565b925061169e60208501611608565b9150604084013590509250925092565b600080604083850312156116c157600080fd5b6116ca83611608565b946020939093013593505050565b60008060008060008060c087890312156116f157600080fd5b6116fa87611608565b95506020870135945060408701359350606087013560ff8116811461171e57600080fd5b9598949750929560808101359460a0909101359350915050565b6000806040838503121561174b57600080fd5b61175483611608565b9150602083013563ffffffff8116811461176d57600080fd5b809150509250929050565b600060208083528351808285015260005b818110156117a557858101830151858201604001528201611789565b818111156117b7576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561181557611815611905565b500190565b600063ffffffff80831681851680830382111561183957611839611905565b01949350505050565b600063ffffffff8084168061186757634e487b7160e01b600052601260045260246000fd5b92169190910492915050565b60008282101561188557611885611905565b500390565b600063ffffffff838116908316818110156118a7576118a7611905565b039392505050565b600181811c908216806118c357607f821691505b602082108114156118e457634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156118fe576118fe611905565b5060010190565b634e487b7160e01b600052601160045260246000fdfe534d415254494e553a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a2646970667358221220dda7b6d53dd2d4ba0532197384eac97a45517680475897ed6e57588993a950ed64736f6c63430008070033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000009536d6172742d496e7500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005534d494e55000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018e5760003560e01c8063782d6fe1116100de578063b4b5ea5711610097578063dd62ed3e11610071578063dd62ed3e146103bb578063e7a324dc146103f4578063f1127ed81461041b578063f2fde38b1461047257600080fd5b8063b4b5ea571461038c578063c3cda5201461039f578063d5abeb01146103b257600080fd5b8063782d6fe11461031a5780637ecebe001461032d5780638da5cb5b1461034d57806395d89b411461035e578063a457c2d714610366578063a9059cbb1461037957600080fd5b8063395093511161014b5780635c19a95c116101255780635c19a95c1461029b5780636fcfff45146102ae57806370a08231146102e9578063715018a61461031257600080fd5b8063395093511461022f57806340c10f1914610242578063587cde1e1461025757600080fd5b806306fdde0314610193578063095ea7b3146101b157806318160ddd146101d457806320606b70146101e657806323b872dd1461020d578063313ce56714610220575b600080fd5b61019b610485565b6040516101a89190611778565b60405180910390f35b6101c46101bf3660046116ae565b610517565b60405190151581526020016101a8565b6002545b6040519081526020016101a8565b6101d87f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6101c461021b366004611672565b61052e565b604051601281526020016101a8565b6101c461023d3660046116ae565b6105dd565b6102556102503660046116ae565b610619565b005b610283610265366004611624565b6001600160a01b039081166000908152600760205260409020541690565b6040516001600160a01b0390911681526020016101a8565b6102556102a9366004611624565b6106ec565b6102d46102bc366004611624565b60096020526000908152604090205463ffffffff1681565b60405163ffffffff90911681526020016101a8565b6101d86102f7366004611624565b6001600160a01b031660009081526020819052604090205490565b6102556106f9565b6101d86103283660046116ae565b61072f565b6101d861033b366004611624565b600a6020526000908152604090205481565b6005546001600160a01b0316610283565b61019b610998565b6101c46103743660046116ae565b6109a7565b6101c46103873660046116ae565b610a40565b6101d861039a366004611624565b610a4d565b6102556103ad3660046116d8565b610ac2565b6101d860065481565b6101d86103c936600461163f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101d87fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b610456610429366004611738565b60086020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b6040805163ffffffff90931683526020830191909152016101a8565b610255610480366004611624565b610d9c565b606060038054610494906118af565b80601f01602080910402602001604051908101604052809291908181526020018280546104c0906118af565b801561050d5780601f106104e25761010080835404028352916020019161050d565b820191906000526020600020905b8154815290600101906020018083116104f057829003601f168201915b5050505050905090565b6000610524338484610e34565b5060015b92915050565b600061053b848484610f58565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156105c55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6105d28533858403610e34565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610524918590610614908690611802565b610e34565b6005546001600160a01b031633146106435760405162461bcd60e51b81526004016105bc906117cd565b6006548161065060025490565b61065a9190611802565b11156106b95760405162461bcd60e51b815260206004820152602860248201527f534d415254494e553a3a6d696e743a2063616e6e6f7420657863656564206d616044820152677820737570706c7960c01b60648201526084016105bc565b6106c38282611128565b6001600160a01b038083166000908152600760205260408120546106e8921683611207565b5050565b6106f6338261136b565b50565b6005546001600160a01b031633146107235760405162461bcd60e51b81526004016105bc906117cd565b61072d60006113e4565b565b60004382106107945760405162461bcd60e51b815260206004820152602b60248201527f534d415254494e553a3a6765745072696f72566f7465733a206e6f742079657460448201526a0819195d195c9b5a5b995960aa1b60648201526084016105bc565b6001600160a01b03831660009081526009602052604090205463ffffffff16806107c2576000915050610528565b6001600160a01b038416600090815260086020526040812084916107e760018561188a565b63ffffffff90811682526020820192909252604001600020541611610850576001600160a01b03841660009081526008602052604081209061082a60018461188a565b63ffffffff1663ffffffff16815260200190815260200160002060010154915050610528565b6001600160a01b038416600090815260086020908152604080832083805290915290205463ffffffff1683101561088b576000915050610528565b60008061089960018461188a565b90505b8163ffffffff168163ffffffff16111561096157600060026108be848461188a565b6108c89190611842565b6108d2908361188a565b6001600160a01b038816600090815260086020908152604080832063ffffffff8086168552908352928190208151808301909252805490931680825260019093015491810191909152919250871415610935576020015194506105289350505050565b805163ffffffff1687111561094c5781935061095a565b61095760018361188a565b92505b505061089c565b506001600160a01b038516600090815260086020908152604080832063ffffffff9094168352929052206001015491505092915050565b606060048054610494906118af565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610a295760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105bc565b610a363385858403610e34565b5060019392505050565b6000610524338484610f58565b6001600160a01b03811660009081526009602052604081205463ffffffff1680610a78576000610abb565b6001600160a01b038316600090815260086020526040812090610a9c60018461188a565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9392505050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866610aed610485565b80519060200120610afb4690565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08401526001600160a01b038b1660e084015261010083018a90526101208084018a90528251808503909101815261014084019092528151919093012061190160f01b610160830152610162820183905261018282018190529192506000906101a20160408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015610c27573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610c9d5760405162461bcd60e51b815260206004820152602a60248201527f534d415254494e553a3a64656c656761746542795369673a20696e76616c6964604482015269207369676e617475726560b01b60648201526084016105bc565b6001600160a01b0381166000908152600a60205260408120805491610cc1836118ea565b919050558914610d225760405162461bcd60e51b815260206004820152602660248201527f534d415254494e553a3a64656c656761746542795369673a20696e76616c6964604482015265206e6f6e636560d01b60648201526084016105bc565b87421115610d855760405162461bcd60e51b815260206004820152602a60248201527f534d415254494e553a3a64656c656761746542795369673a207369676e6174756044820152691c9948195e1c1a5c995960b21b60648201526084016105bc565b610d8f818b61136b565b505050505b505050505050565b6005546001600160a01b03163314610dc65760405162461bcd60e51b81526004016105bc906117cd565b6001600160a01b038116610e2b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105bc565b6106f6816113e4565b6001600160a01b038316610e965760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105bc565b6001600160a01b038216610ef75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105bc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610fbc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105bc565b6001600160a01b03821661101e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105bc565b6001600160a01b038316600090815260208190526040902054818110156110965760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105bc565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906110cd908490611802565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161111991815260200190565b60405180910390a35b50505050565b6001600160a01b03821661117e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105bc565b80600260008282546111909190611802565b90915550506001600160a01b038216600090815260208190526040812080548392906111bd908490611802565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b816001600160a01b0316836001600160a01b0316141580156112295750600081115b15611366576001600160a01b038316156112cc576001600160a01b03831660009081526009602052604081205463ffffffff1690816112695760006112ac565b6001600160a01b03851660009081526008602052604081209061128d60018561188a565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060006112ba8483611873565b90506112c886848484611436565b5050505b6001600160a01b03821615611366576001600160a01b03821660009081526009602052604081205463ffffffff16908161130757600061134a565b6001600160a01b03841660009081526008602052604081209061132b60018561188a565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060006113588483611802565b9050610d9485848484611436565b505050565b6001600160a01b038281166000818152600760208181526040808420805485845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611122828483611207565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600061145a4360405180606001604052806038815260200161191c603891396115d8565b905060008463ffffffff161180156114b457506001600160a01b038516600090815260086020526040812063ffffffff83169161149860018861188a565b63ffffffff908116825260208201929092526040016000205416145b156114fd576001600160a01b038516600090815260086020526040812083916114de60018861188a565b63ffffffff16815260208101919091526040016000206001015561158d565b60408051808201825263ffffffff838116825260208083018681526001600160a01b038a166000908152600883528581208a851682529092529390209151825463ffffffff19169116178155905160019182015561155c90859061181a565b6001600160a01b0386166000908152600960205260409020805463ffffffff191663ffffffff929092169190911790555b60408051848152602081018490526001600160a01b038716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b60008164010000000084106116005760405162461bcd60e51b81526004016105bc9190611778565b509192915050565b80356001600160a01b038116811461161f57600080fd5b919050565b60006020828403121561163657600080fd5b610abb82611608565b6000806040838503121561165257600080fd5b61165b83611608565b915061166960208401611608565b90509250929050565b60008060006060848603121561168757600080fd5b61169084611608565b925061169e60208501611608565b9150604084013590509250925092565b600080604083850312156116c157600080fd5b6116ca83611608565b946020939093013593505050565b60008060008060008060c087890312156116f157600080fd5b6116fa87611608565b95506020870135945060408701359350606087013560ff8116811461171e57600080fd5b9598949750929560808101359460a0909101359350915050565b6000806040838503121561174b57600080fd5b61175483611608565b9150602083013563ffffffff8116811461176d57600080fd5b809150509250929050565b600060208083528351808285015260005b818110156117a557858101830151858201604001528201611789565b818111156117b7576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561181557611815611905565b500190565b600063ffffffff80831681851680830382111561183957611839611905565b01949350505050565b600063ffffffff8084168061186757634e487b7160e01b600052601260045260246000fd5b92169190910492915050565b60008282101561188557611885611905565b500390565b600063ffffffff838116908316818110156118a7576118a7611905565b039392505050565b600181811c908216806118c357607f821691505b602082108114156118e457634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156118fe576118fe611905565b5060010190565b634e487b7160e01b600052601160045260246000fdfe534d415254494e553a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a2646970667358221220dda7b6d53dd2d4ba0532197384eac97a45517680475897ed6e57588993a950ed64736f6c63430008070033

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

000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000009536d6172742d496e7500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005534d494e55000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name (string): Smart-Inu
Arg [1] : symbol (string): SMINU

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [3] : 536d6172742d496e750000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [5] : 534d494e55000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

28542:135:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7291:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9458:169;;;;;;:::i;:::-;;:::i;:::-;;;2988:14:1;;2981:22;2963:41;;2951:2;2936:18;9458:169:0;2823:187:1;8411:108:0;8499:12;;8411:108;;;3161:25:1;;;3149:2;3134:18;8411:108:0;3015:177:1;20632:155:0;;20683:104;20632:155;;10109:492;;;;;;:::i;:::-;;:::i;8253:93::-;;;8336:2;12106:36:1;;12094:2;12079:18;8253:93:0;11964:184:1;11010:215:0;;;;;;:::i;:::-;;:::i;19721:301::-;;;;;;:::i;:::-;;:::i;:::-;;21731:117;;;;;;:::i;:::-;-1:-1:-1;;;;;21819:21:0;;;21792:7;21819:21;;;:10;:21;;;;;;;;21731:117;;;;-1:-1:-1;;;;;2779:32:1;;;2761:51;;2749:2;2734:18;21731:117:0;2615:203:1;21996:104:0;;;;;;:::i;:::-;;:::i;20511:48::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11673:10:1;11661:23;;;11643:42;;11631:2;11616:18;20511:48:0;11499:192:1;8582:127:0;;;;;;:::i;:::-;-1:-1:-1;;;;;8683:18:0;8656:7;8683:18;;;;;;;;;;;;8582:127;18811:94;;;:::i;24521:1297::-;;;;;;:::i;:::-;;:::i;21088:41::-;;;;;;:::i;:::-;;;;;;;;;;;;;;18160:87;18233:6;;-1:-1:-1;;;;;18233:6:0;18160:87;;7510:104;;;:::i;11728:413::-;;;;;;:::i;:::-;;:::i;8922:175::-;;;;;;:::i;:::-;;:::i;23854:236::-;;;;;;:::i;:::-;;:::i;22534:1119::-;;;;;;:::i;:::-;;:::i;19546:43::-;;;;;;9160:151;;;;;;:::i;:::-;-1:-1:-1;;;;;9276:18:0;;;9249:7;9276:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9160:151;20881:126;;20936:71;20881:126;;20374:68;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11898:10:1;11886:23;;;11868:42;;11941:2;11926:18;;11919:34;;;;11841:18;20374:68:0;11696:263:1;19060:192:0;;;;;;:::i;:::-;;:::i;7291:100::-;7345:13;7378:5;7371:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7291:100;:::o;9458:169::-;9541:4;9558:39;1890:10;9581:7;9590:6;9558:8;:39::i;:::-;-1:-1:-1;9615:4:0;9458:169;;;;;:::o;10109:492::-;10249:4;10266:36;10276:6;10284:9;10295:6;10266:9;:36::i;:::-;-1:-1:-1;;;;;10342:19:0;;10315:24;10342:19;;;:11;:19;;;;;;;;1890:10;10342:33;;;;;;;;10394:26;;;;10386:79;;;;-1:-1:-1;;;10386:79:0;;7689:2:1;10386:79:0;;;7671:21:1;7728:2;7708:18;;;7701:30;7767:34;7747:18;;;7740:62;-1:-1:-1;;;7818:18:1;;;7811:38;7866:19;;10386:79:0;;;;;;;;;10501:57;10510:6;1890:10;10551:6;10532:16;:25;10501:8;:57::i;:::-;-1:-1:-1;10589:4:0;;10109:492;-1:-1:-1;;;;10109:492:0:o;11010:215::-;1890:10;11098:4;11147:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11147:34:0;;;;;;;;;;11098:4;;11115:80;;11138:7;;11147:47;;11184:10;;11147:47;:::i;:::-;11115:8;:80::i;19721:301::-;18233:6;;-1:-1:-1;;;;;18233:6:0;1890:10;18380:23;18372:68;;;;-1:-1:-1;;;18372:68:0;;;;;;;:::i;:::-;19844:9:::1;;19832:7;19816:13;8499:12:::0;;;8411:108;19816:13:::1;:23;;;;:::i;:::-;19815:38;;19793:128;;;::::0;-1:-1:-1;;;19793:128:0;;7280:2:1;19793:128:0::1;::::0;::::1;7262:21:1::0;7319:2;7299:18;;;7292:30;7358:34;7338:18;;;7331:62;-1:-1:-1;;;7409:18:1;;;7402:38;7457:19;;19793:128:0::1;7078:404:1::0;19793:128:0::1;19932:19;19938:3;19943:7;19932:5;:19::i;:::-;-1:-1:-1::0;;;;;19989:15:0;;::::1;19985:1;19989:15:::0;;;:10:::1;:15;::::0;;;;;19962:52:::1;::::0;19989:15:::1;20006:7:::0;19962:14:::1;:52::i;:::-;19721:301:::0;;:::o;21996:104::-;22060:32;22070:10;22082:9;22060;:32::i;:::-;21996:104;:::o;18811:94::-;18233:6;;-1:-1:-1;;;;;18233:6:0;1890:10;18380:23;18372:68;;;;-1:-1:-1;;;18372:68:0;;;;;;;:::i;:::-;18876:21:::1;18894:1;18876:9;:21::i;:::-;18811:94::o:0;24521:1297::-;24632:7;24693:12;24679:11;:26;24657:119;;;;-1:-1:-1;;;24657:119:0;;8865:2:1;24657:119:0;;;8847:21:1;8904:2;8884:18;;;8877:30;8943:34;8923:18;;;8916:62;-1:-1:-1;;;8994:18:1;;;8987:41;9045:19;;24657:119:0;8663:407:1;24657:119:0;-1:-1:-1;;;;;24811:23:0;;24789:19;24811:23;;;:14;:23;;;;;;;;24849:17;24845:58;;24890:1;24883:8;;;;;24845:58;-1:-1:-1;;;;;24963:20:0;;;;;;:11;:20;;;;;25015:11;;24984:16;24999:1;24984:12;:16;:::i;:::-;24963:38;;;;;;;;;;;;;;;-1:-1:-1;24963:38:0;:48;;:63;24959:147;;-1:-1:-1;;;;;25050:20:0;;;;;;:11;:20;;;;;;25071:16;25086:1;25071:12;:16;:::i;:::-;25050:38;;;;;;;;;;;;;;;:44;;;25043:51;;;;;24959:147;-1:-1:-1;;;;;25167:20:0;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;25163:88:0;;;25238:1;25231:8;;;;;25163:88;25263:12;;25305:16;25320:1;25305:12;:16;:::i;:::-;25290:31;;25332:428;25347:5;25339:13;;:5;:13;;;25332:428;;;25369:13;25411:1;25394:13;25402:5;25394;:13;:::i;:::-;25393:19;;;;:::i;:::-;25385:27;;:5;:27;:::i;:::-;-1:-1:-1;;;;;25477:20:0;;25454;25477;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;25454:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;25369:43;;-1:-1:-1;25524:27:0;;25520:229;;;25579:8;;;;-1:-1:-1;25572:15:0;;-1:-1:-1;;;;25572:15:0;25520:229;25613:12;;:26;;;-1:-1:-1;25609:140:0;;;25668:6;25660:14;;25609:140;;;25723:10;25732:1;25723:6;:10;:::i;:::-;25715:18;;25609:140;25354:406;;25332:428;;;-1:-1:-1;;;;;;25777:20:0;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;;;;-1:-1:-1;;24521:1297:0;;;;:::o;7510:104::-;7566:13;7599:7;7592:14;;;;;:::i;11728:413::-;1890:10;11821:4;11865:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11865:34:0;;;;;;;;;;11918:35;;;;11910:85;;;;-1:-1:-1;;;11910:85:0;;10500:2:1;11910:85:0;;;10482:21:1;10539:2;10519:18;;;10512:30;10578:34;10558:18;;;10551:62;-1:-1:-1;;;10629:18:1;;;10622:35;10674:19;;11910:85:0;10298:401:1;11910:85:0;12031:67;1890:10;12054:7;12082:15;12063:16;:34;12031:8;:67::i;:::-;-1:-1:-1;12129:4:0;;11728:413;-1:-1:-1;;;11728:413:0:o;8922:175::-;9008:4;9025:42;1890:10;9049:9;9060:6;9025:9;:42::i;23854:236::-;-1:-1:-1;;;;;23961:23:0;;23919:7;23961:23;;;:14;:23;;;;;;;;24015:16;:67;;24081:1;24015:67;;;-1:-1:-1;;;;;24034:20:0;;;;;;:11;:20;;;;;;24055:16;24070:1;24055:12;:16;:::i;:::-;24034:38;;;;;;;;;;;;;;;:44;;;24015:67;23995:87;23854:236;-1:-1:-1;;;23854:236:0:o;22534:1119::-;22719:23;20683:104;22848:6;:4;:6::i;:::-;22832:24;;;;;;22875:12;28483:9;;28357:178;22875:12;22769:165;;;;;;;3850:25:1;;;;3891:18;;;3884:34;;;;3934:18;;;3927:34;;;;22914:4:0;3977:18:1;;;;3970:60;;;;22769:165:0;;;;;;;;;;3822:19:1;;;22769:165:0;;22745:200;;;;;;20936:71;23003:57;;;3428:25:1;-1:-1:-1;;;;;3489:32:1;;3469:18;;;3462:60;3538:18;;;3531:34;;;3581:18;;;;3574:34;;;23003:57:0;;;;;;;;;;3400:19:1;;;23003:57:0;;;22979:92;;;;;;;-1:-1:-1;;;23125:57:0;;;2476:27:1;2519:11;;;2512:27;;;2555:12;;;2548:28;;;22745:200:0;;-1:-1:-1;;;2592:12:1;;23125:57:0;;;-1:-1:-1;;23125:57:0;;;;;;;;;23101:92;;23125:57;23101:92;;;;23206:17;23226:26;;;;;;;;;4268:25:1;;;4341:4;4329:17;;4309:18;;;4302:45;;;;4363:18;;;4356:34;;;4406:18;;;4399:34;;;23101:92:0;;-1:-1:-1;23206:17:0;23226:26;;4240:19:1;;23226:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23226:26:0;;-1:-1:-1;;23226:26:0;;;-1:-1:-1;;;;;;;23285:23:0;;23263:115;;;;-1:-1:-1;;;23263:115:0;;10089:2:1;23263:115:0;;;10071:21:1;10128:2;10108:18;;;10101:30;10167:34;10147:18;;;10140:62;-1:-1:-1;;;10218:18:1;;;10211:40;10268:19;;23263:115:0;9887:406:1;23263:115:0;-1:-1:-1;;;;;23420:17:0;;;;;;:6;:17;;;;;:19;;;;;;:::i;:::-;;;;;23411:5;:28;23389:116;;;;-1:-1:-1;;;23389:116:0;;9682:2:1;23389:116:0;;;9664:21:1;9721:2;9701:18;;;9694:30;9760:34;9740:18;;;9733:62;-1:-1:-1;;;9811:18:1;;;9804:36;9857:19;;23389:116:0;9480:402:1;23389:116:0;23543:6;23524:15;:25;;23516:80;;;;-1:-1:-1;;;23516:80:0;;6462:2:1;23516:80:0;;;6444:21:1;6501:2;6481:18;;;6474:30;6540:34;6520:18;;;6513:62;-1:-1:-1;;;6591:18:1;;;6584:40;6641:19;;23516:80:0;6260:406:1;23516:80:0;23614:31;23624:9;23635;23614;:31::i;:::-;23607:38;;;;22534:1119;;;;;;;:::o;19060:192::-;18233:6;;-1:-1:-1;;;;;18233:6:0;1890:10;18380:23;18372:68;;;;-1:-1:-1;;;18372:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19149:22:0;::::1;19141:73;;;::::0;-1:-1:-1;;;19141:73:0;;5652:2:1;19141:73:0::1;::::0;::::1;5634:21:1::0;5691:2;5671:18;;;5664:30;5730:34;5710:18;;;5703:62;-1:-1:-1;;;5781:18:1;;;5774:36;5827:19;;19141:73:0::1;5450:402:1::0;19141:73:0::1;19225:19;19235:8;19225:9;:19::i;15412:380::-:0;-1:-1:-1;;;;;15548:19:0;;15540:68;;;;-1:-1:-1;;;15540:68:0;;9277:2:1;15540:68:0;;;9259:21:1;9316:2;9296:18;;;9289:30;9355:34;9335:18;;;9328:62;-1:-1:-1;;;9406:18:1;;;9399:34;9450:19;;15540:68:0;9075:400:1;15540:68:0;-1:-1:-1;;;;;15627:21:0;;15619:68;;;;-1:-1:-1;;;15619:68:0;;6059:2:1;15619:68:0;;;6041:21:1;6098:2;6078:18;;;6071:30;6137:34;6117:18;;;6110:62;-1:-1:-1;;;6188:18:1;;;6181:32;6230:19;;15619:68:0;5857:398:1;15619:68:0;-1:-1:-1;;;;;15700:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15752:32;;3161:25:1;;;15752:32:0;;3134:18:1;15752:32:0;;;;;;;15412:380;;;:::o;12631:733::-;-1:-1:-1;;;;;12771:20:0;;12763:70;;;;-1:-1:-1;;;12763:70:0;;8459:2:1;12763:70:0;;;8441:21:1;8498:2;8478:18;;;8471:30;8537:34;8517:18;;;8510:62;-1:-1:-1;;;8588:18:1;;;8581:35;8633:19;;12763:70:0;8257:401:1;12763:70:0;-1:-1:-1;;;;;12852:23:0;;12844:71;;;;-1:-1:-1;;;12844:71:0;;5248:2:1;12844:71:0;;;5230:21:1;5287:2;5267:18;;;5260:30;5326:34;5306:18;;;5299:62;-1:-1:-1;;;5377:18:1;;;5370:33;5420:19;;12844:71:0;5046:399:1;12844:71:0;-1:-1:-1;;;;;13012:17:0;;12988:21;13012:17;;;;;;;;;;;13048:23;;;;13040:74;;;;-1:-1:-1;;;13040:74:0;;6873:2:1;13040:74:0;;;6855:21:1;6912:2;6892:18;;;6885:30;6951:34;6931:18;;;6924:62;-1:-1:-1;;;7002:18:1;;;6995:36;7048:19;;13040:74:0;6671:402:1;13040:74:0;-1:-1:-1;;;;;13150:17:0;;;:9;:17;;;;;;;;;;;13170:22;;;13150:42;;13214:20;;;;;;;;:30;;13186:6;;13150:9;13214:30;;13186:6;;13214:30;:::i;:::-;;;;;;;;13279:9;-1:-1:-1;;;;;13262:35:0;13271:6;-1:-1:-1;;;;;13262:35:0;;13290:6;13262:35;;;;3161:25:1;;3149:2;3134:18;;3015:177;13262:35:0;;;;;;;;13310:46;12752:612;12631:733;;;:::o;13651:399::-;-1:-1:-1;;;;;13735:21:0;;13727:65;;;;-1:-1:-1;;;13727:65:0;;10906:2:1;13727:65:0;;;10888:21:1;10945:2;10925:18;;;10918:30;10984:33;10964:18;;;10957:61;11035:18;;13727:65:0;10704:355:1;13727:65:0;13883:6;13867:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;13900:18:0;;:9;:18;;;;;;;;;;:28;;13922:6;;13900:9;:28;;13922:6;;13900:28;:::i;:::-;;;;-1:-1:-1;;13944:37:0;;3161:25:1;;;-1:-1:-1;;;;;13944:37:0;;;13961:1;;13944:37;;3149:2:1;3134:18;13944:37:0;;;;;;;19721:301;;:::o;26261:1059::-;26401:6;-1:-1:-1;;;;;26391:16:0;:6;-1:-1:-1;;;;;26391:16:0;;;:30;;;;;26420:1;26411:6;:10;26391:30;26387:926;;;-1:-1:-1;;;;;26442:20:0;;;26438:424;;-1:-1:-1;;;;;26550:22:0;;26531:16;26550:22;;;:14;:22;;;;;;;;;26611:13;:102;;26712:1;26611:102;;;-1:-1:-1;;;;;26648:19:0;;;;;;:11;:19;;;;;;26668:13;26680:1;26668:9;:13;:::i;:::-;26648:34;;;;;;;;;;;;;;;:40;;;26611:102;26591:122;-1:-1:-1;26732:17:0;26752:18;26764:6;26591:122;26752:18;:::i;:::-;26732:38;;26789:57;26806:6;26814:9;26825;26836;26789:16;:57::i;:::-;26464:398;;;26438:424;-1:-1:-1;;;;;26882:20:0;;;26878:424;;-1:-1:-1;;;;;26990:22:0;;26971:16;26990:22;;;:14;:22;;;;;;;;;27051:13;:102;;27152:1;27051:102;;;-1:-1:-1;;;;;27088:19:0;;;;;;:11;:19;;;;;;27108:13;27120:1;27108:9;:13;:::i;:::-;27088:34;;;;;;;;;;;;;;;:40;;;27051:102;27031:122;-1:-1:-1;27172:17:0;27192:18;27204:6;27031:122;27192:18;:::i;:::-;27172:38;;27229:57;27246:6;27254:9;27265;27276;27229:16;:57::i;26878:424::-;26261:1059;;;:::o;25826:427::-;-1:-1:-1;;;;;25929:21:0;;;25903:23;25929:21;;;:10;:21;;;;;;;;;;8683:18;;;;;;;26067:21;;;;:33;;;-1:-1:-1;;;;;;26067:33:0;;;;;;;26118:54;;25929:21;;;;;8683:18;;26067:33;;25929:21;;;26118:54;;25903:23;26118:54;26185:60;26200:15;26217:9;26228:16;26185:14;:60::i;19260:173::-;19335:6;;;-1:-1:-1;;;;;19352:17:0;;;-1:-1:-1;;;;;;19352:17:0;;;;;;;19385:40;;19335:6;;;19352:17;19335:6;;19385:40;;19316:16;;19385:40;19305:128;19260:173;:::o;27328:817::-;27493:18;27514:117;27535:12;27514:117;;;;;;;;;;;;;;;;;:6;:117::i;:::-;27493:138;;27677:1;27662:12;:16;;;:98;;;;-1:-1:-1;;;;;;27695:22:0;;;;;;:11;:22;;;;;:65;;;;27718:16;27733:1;27718:12;:16;:::i;:::-;27695:40;;;;;;;;;;;;;;;-1:-1:-1;27695:40:0;:50;;:65;27662:98;27644:425;;;-1:-1:-1;;;;;27787:22:0;;;;;;:11;:22;;;;;27836:8;;27810:16;27825:1;27810:12;:16;:::i;:::-;27787:40;;;;;;;;;;;;;-1:-1:-1;27787:40:0;:46;;:57;27644:425;;;27916:82;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27877:22:0;;-1:-1:-1;27877:22:0;;;:11;:22;;;;;:36;;;;;;;;;;;:121;;;;-1:-1:-1;;27877:121:0;;;;;;;;-1:-1:-1;27877:121:0;;;;28041:16;;27877:36;;28041:16;:::i;:::-;-1:-1:-1;;;;;28013:25:0;;;;;;:14;:25;;;;;:44;;-1:-1:-1;;28013:44:0;;;;;;;;;;;;27644:425;28086:51;;;11420:25:1;;;11476:2;11461:18;;11454:34;;;-1:-1:-1;;;;;28086:51:0;;;;;11393:18:1;28086:51:0;;;;;;;27482:663;27328:817;;;;:::o;28153:196::-;28258:6;28301:12;28294:5;28290:9;;28282:32;;;;-1:-1:-1;;;28282:32:0;;;;;;;;:::i;:::-;-1:-1:-1;28339:1:0;;28153:196;-1:-1:-1;;28153:196:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;383:260::-;451:6;459;512:2;500:9;491:7;487:23;483:32;480:52;;;528:1;525;518:12;480:52;551:29;570:9;551:29;:::i;:::-;541:39;;599:38;633:2;622:9;618:18;599:38;:::i;:::-;589:48;;383:260;;;;;:::o;648:328::-;725:6;733;741;794:2;782:9;773:7;769:23;765:32;762:52;;;810:1;807;800:12;762:52;833:29;852:9;833:29;:::i;:::-;823:39;;881:38;915:2;904:9;900:18;881:38;:::i;:::-;871:48;;966:2;955:9;951:18;938:32;928:42;;648:328;;;;;:::o;981:254::-;1049:6;1057;1110:2;1098:9;1089:7;1085:23;1081:32;1078:52;;;1126:1;1123;1116:12;1078:52;1149:29;1168:9;1149:29;:::i;:::-;1139:39;1225:2;1210:18;;;;1197:32;;-1:-1:-1;;;981:254:1:o;1240:618::-;1342:6;1350;1358;1366;1374;1382;1435:3;1423:9;1414:7;1410:23;1406:33;1403:53;;;1452:1;1449;1442:12;1403:53;1475:29;1494:9;1475:29;:::i;:::-;1465:39;;1551:2;1540:9;1536:18;1523:32;1513:42;;1602:2;1591:9;1587:18;1574:32;1564:42;;1656:2;1645:9;1641:18;1628:32;1700:4;1693:5;1689:16;1682:5;1679:27;1669:55;;1720:1;1717;1710:12;1669:55;1240:618;;;;-1:-1:-1;1240:618:1;;1795:3;1780:19;;1767:33;;1847:3;1832:19;;;1819:33;;-1:-1:-1;1240:618:1;-1:-1:-1;;1240:618:1:o;1863:350::-;1930:6;1938;1991:2;1979:9;1970:7;1966:23;1962:32;1959:52;;;2007:1;2004;1997:12;1959:52;2030:29;2049:9;2030:29;:::i;:::-;2020:39;;2109:2;2098:9;2094:18;2081:32;2153:10;2146:5;2142:22;2135:5;2132:33;2122:61;;2179:1;2176;2169:12;2122:61;2202:5;2192:15;;;1863:350;;;;;:::o;4444:597::-;4556:4;4585:2;4614;4603:9;4596:21;4646:6;4640:13;4689:6;4684:2;4673:9;4669:18;4662:34;4714:1;4724:140;4738:6;4735:1;4732:13;4724:140;;;4833:14;;;4829:23;;4823:30;4799:17;;;4818:2;4795:26;4788:66;4753:10;;4724:140;;;4882:6;4879:1;4876:13;4873:91;;;4952:1;4947:2;4938:6;4927:9;4923:22;4919:31;4912:42;4873:91;-1:-1:-1;5025:2:1;5004:15;-1:-1:-1;;5000:29:1;4985:45;;;;5032:2;4981:54;;4444:597;-1:-1:-1;;;4444:597:1:o;7896:356::-;8098:2;8080:21;;;8117:18;;;8110:30;8176:34;8171:2;8156:18;;8149:62;8243:2;8228:18;;7896:356::o;12153:128::-;12193:3;12224:1;12220:6;12217:1;12214:13;12211:39;;;12230:18;;:::i;:::-;-1:-1:-1;12266:9:1;;12153:128::o;12286:228::-;12325:3;12353:10;12390:2;12387:1;12383:10;12420:2;12417:1;12413:10;12451:3;12447:2;12443:12;12438:3;12435:21;12432:47;;;12459:18;;:::i;:::-;12495:13;;12286:228;-1:-1:-1;;;;12286:228:1:o;12519:288::-;12558:1;12584:10;12621:2;12618:1;12614:10;12643:3;12633:134;;12689:10;12684:3;12680:20;12677:1;12670:31;12724:4;12721:1;12714:15;12752:4;12749:1;12742:15;12633:134;12785:10;;12781:20;;;;;12519:288;-1:-1:-1;;12519:288:1:o;12812:125::-;12852:4;12880:1;12877;12874:8;12871:34;;;12885:18;;:::i;:::-;-1:-1:-1;12922:9:1;;12812:125::o;12942:221::-;12981:4;13010:10;13070;;;;13040;;13092:12;;;13089:38;;;13107:18;;:::i;:::-;13144:13;;12942:221;-1:-1:-1;;;12942:221:1:o;13168:380::-;13247:1;13243:12;;;;13290;;;13311:61;;13365:4;13357:6;13353:17;13343:27;;13311:61;13418:2;13410:6;13407:14;13387:18;13384:38;13381:161;;;13464:10;13459:3;13455:20;13452:1;13445:31;13499:4;13496:1;13489:15;13527:4;13524:1;13517:15;13381:161;;13168:380;;;:::o;13553:135::-;13592:3;-1:-1:-1;;13613:17:1;;13610:43;;;13633:18;;:::i;:::-;-1:-1:-1;13680:1:1;13669:13;;13553:135::o;13693:127::-;13754:10;13749:3;13745:20;13742:1;13735:31;13785:4;13782:1;13775:15;13809:4;13806:1;13799:15

Swarm Source

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