Sepolia Testnet

Token

FELINA (FEL)
ERC-20

Overview

Max Total Supply

1,000,000,000 FEL

Holders

8

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5 FEL
0x455e5aa18469bc6ccef49594645666c587a3a71b
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:
FelinaToken

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 4 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

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

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

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

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

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

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

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

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

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

File 2 of 4 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with 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;
    }
}

File 3 of 4 : FelinaToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

import "./interfaces/IFelinaToken.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

/**
 * @title FelinaToken.
 * @author Eugenio Pacelli Flores Voitier.
 * @notice This is a sample contract to create an ERC20 token.
 * @dev This token follows the ERC-20 standard as defined in the EIP.
 */

/**
 * THIS IS AN EXAMPLE CONTRACT THAT USES UN-AUDITED CODE.
 * DO NOT USE THIS CODE IN PRODUCTION.
 */

contract FelinaToken is IFelinaToken, Ownable {
    string private s_name;
    string private s_symbol;
    uint256 private s_blockReward;
    uint256 private s_totalSupply;
    uint8 private constant DECIMALS = 18;
    uint256 private immutable i_targetSupply;
    mapping(address => uint256) private s_balances;
    mapping(address => mapping(address => uint256)) private s_allowances;

    event Burn(address indexed _from, uint256 _value);

    /**
     * @dev Sets the values for {s_name}, {s_symbol}, {s_totalSupply}, {i_initialSupply}
     *  and {i_targetSupply}.
     *
     * The value of {DECIMALS} is 18.
     *
     * Allocates the entire supply to the creator of the token.
     */
    constructor(
        string memory tokenName,
        string memory tokenSymbol,
        uint256 initialSupply,
        uint256 targetSupply,
        uint256 blockReward
    ) {
        s_name = tokenName;
        s_symbol = tokenSymbol;
        s_totalSupply = initialSupply * 10 ** uint256(DECIMALS);
        i_targetSupply = targetSupply * 10 ** uint256(DECIMALS);
        s_blockReward = blockReward * 10 ** uint256(DECIMALS);
        s_balances[msg.sender] = s_totalSupply;
    }

    /**
     * @notice Moves `_value` tokens from caller's account to `_to` recipient.
     * Call this function ONLY to transfer tokens to a Externally Owned Account.
     * @param _to Address of the recipient.
     * @param _value Amount of tokens.
     * @return success True in case of successful transfer, false otherwise.
     */
    function transfer(address _to, uint256 _value) public returns (bool success) {
        _transfer(msg.sender, _to, _value);
        return true;
    }

    /**
     * @notice Moves `_value` tokens to `_to` on behalf of `_from`. Then `_value` is
     * deducted from caller allowance. Call this function ONLY to transfer tokens to
     * a smart contract. CALLER MUST CONFIRM `_to` IS CAPABLE OF RECEIVING ERC20 TOKENS
     * OR ELSE THEY MAY BE PERMANENTLY LOST.
     * @dev Throws if `_value` exceeds `_spender` remaining allowance.
     * @param _from Account from which the tokens will be moved.
     * @param _to Address of the recipient of tokens.
     * @param _value Amount of tokens to be moved.
     * @return success A boolean to indicate if the transaction was successful.
     */
    function transferFrom(
        address _from,
        address _to,
        uint256 _value
    ) public returns (bool success) {
        require(
            _value <= s_allowances[_from][msg.sender],
            "FEL: Value exceeds the remaining allowance"
        );

        s_allowances[_from][msg.sender] -= _value;
        _transfer(_from, _to, _value);
        return true;
    }

    /**
     * @notice Sets `_value` as the allowance for a `_spender`. Allows `_spender`
     * to spend no more than `_value` tokens on your behalf.
     * @dev Calling this function to change the allowance bring th risk of a `_spender`
     * using both the old and new allowance by unfortunate transaction ordering. To
     * reduce the risk is recommended to first reduce the old allowance to zero and then
     * set a new allowance with the desire `_value`.
     * See: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     * @param _spender The address of the account authorized to spend.
     * @param _value Max amount of tokens allowed to spend.
     * @return success A boolean to indicate if the spender was approved.
     */
    function approve(address _spender, uint256 _value) public returns (bool success) {
        _approve(msg.sender, _spender, _value);
        return true;
    }

    /**
     * @notice Destroy `_value` tokens irreversibly.
     * @dev Throws if `_value` exceeds the balance of the account.
     * @param _value Amount of tokens to destroy.
     * @return success A boolean to indicate if the burning of tokens succeeded.
     *
     * Emits a {Burn} event.
     */
    function burn(uint256 _value) public returns (bool success) {
        require(s_balances[msg.sender] >= _value, "FEL: Value exceeds the account balance");
        require(s_totalSupply > i_targetSupply, "FEL: Cannot burn more tokens");
        s_totalSupply -= _value;
        s_balances[msg.sender] -= _value;
        emit Burn(msg.sender, _value);
        return true;
    }

    /**
     * @notice Destroy tokens from another account.
     * @dev Throws if `_value` exceeds the balance of the account. Throws if
     * `_from` is address zero. Throws if target supply has been reached. Throws
     * if `_value` exceeds remaining allowance of the spender address.
     * @param _from Address of the account from which tokens will be destroyed.
     * @param _value Amount of token to destroy.
     * @return success A boolean to indicate if the burning of tokens succeeded.
     *
     * Emits a {Burn} event.
     */
    function burnFrom(address _from, uint256 _value) public returns (bool success) {
        require(_from != address(0), "FEL: Cannot burn tokens from address zero");
        require(s_balances[_from] >= _value, "FEL: Value exceeds the account balance");
        require(s_totalSupply > i_targetSupply, "FEL: Cannot burn more tokens");
        require(
            _value <= s_allowances[_from][msg.sender],
            "FEL: Value exceeds the remaining allowance"
        );

        s_balances[_from] -= _value;
        s_allowances[_from][msg.sender] -= _value;
        s_totalSupply -= _value;
        emit Burn(_from, _value);
        return true;
    }

    /**
     * @notice Set the amount of tokens to reward validators for mining
     * transactions of the token.
     * @param _blockReward Amount of tokens to reward.
     * @dev Throws if caller is not the token owner.
     */
    function setBlockReward(uint256 _blockReward) external onlyOwner returns (bool success) {
        s_blockReward = _blockReward * 10 ** uint256(DECIMALS);
        return true;
    }

    /**
     * @notice Increases the allowance of a `_spender`.
     * @param _spender Address of the approved address to act on behalf of msg.sender.
     * @param _addedValue Amount to increase the allowance of the `_spender`.
     */
    function increaseAllowance(
        address _spender,
        uint256 _addedValue
    ) public returns (bool success) {
        uint256 _currentAllowance = allowance(msg.sender, _spender);
        _approve(msg.sender, _spender, _currentAllowance + _addedValue);
        return true;
    }

    /**
     * @notice Decreases the allowance of a `_spender`.
     * @dev Throws if the `_subtractedValue` will cause underflow.
     * @param _spender Address of the approved address to act on behalf of msg.sender.
     * @param _subtractedValue Amount to decrease the allowance of the `_spender`.
     */
    function decreaseAllowance(
        address _spender,
        uint256 _subtractedValue
    ) public returns (bool success) {
        uint256 _currentAllowance = allowance(msg.sender, _spender);
        require(
            _currentAllowance >= _subtractedValue,
            "FEL: Cannot decrease allowance to a negative value"
        );
        unchecked {
            _approve(msg.sender, _spender, _currentAllowance - _subtractedValue);
        }
        return true;
    }

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

    /**
     * @notice Returns the symbol of the token.
     */
    function symbol() public view returns (string memory) {
        return s_symbol;
    }

    /**
     * @notice Returns the current supply of the token.
     */
    function totalSupply() public view returns (uint256) {
        return s_totalSupply;
    }

    /**
     * @notice Reads the balance of an account.
     */
    function balanceOf(address _account) public view returns (uint256) {
        return s_balances[_account];
    }

    /**
     * @notice Returns the reamining allowance of tokens of an account.
     */
    function allowance(address _owner, address _spender) public view returns (uint256) {
        return s_allowances[_owner][_spender];
    }

    /**
     * @notice Returns the target supply of the tokens.
     */
    function getTargetSupply() public view returns (uint256) {
        return i_targetSupply;
    }

    /**
     *@notice Reads the block reward for the validators.
     */
    function getBlockReward() public view returns (uint256) {
        return s_blockReward;
    }

    /**
     * @notice Returns the number of decimals places of the token.
     */
    function decimals() public pure returns (uint8) {
        return DECIMALS;
    }

    /**
     * @notice Internal transfer, can only be called by the contract.
     * @dev Throws if `_to` is address zero. Throws if `_from` is address zero.
     * Throws if `_value` exceeds the balance of the account.
     * @param _from Address of the sender, must have balance at least of _value.
     * @param _to Address of the recipient, cannot be the zero address.
     * @param _value Amount of tokens.
     *
     * Emits a {Transfer} event.
     */
    function _transfer(address _from, address _to, uint256 _value) internal {
        require(_to != address(0), "FEL: Cannot transfer tokens to address zero");
        require(_from != address(0), "FEL: Cannot transfer tokens from address zero");
        require(s_balances[_from] >= _value, "FEL: Value exceeds the account balance");
        _beforeTokenTransfer(_from, _to);
        s_balances[_from] -= _value;
        s_balances[_to] += _value;
        emit Transfer(_from, _to, _value);
    }

    /**
     * @notice Sets the allowance for a `_spender`
     * @dev Throws if the `_owner` or `_spender` are the address zero. Internal
     * function, can only be called from within this contract.
     *
     * Emits a {Approval} event.
     */
    function _approve(address _owner, address _spender, uint256 _value) internal {
        require(_owner != address(0), "FEL: Cannot approve from address zero");
        require(_spender != address(0), "FEL: Cannot approve address zero as spender");
        s_allowances[_owner][_spender] = _value;
        emit Approval(_owner, _spender, _value);
    }

    /**
     * @dev This function does not throws. Checks if the coinbase
     * address should receive the block reward.
     * @param _from The address of the sender.
     * @param _to The Address of the receipient.
     */
    function _beforeTokenTransfer(address _from, address _to) internal {
        if (
            _from != address(0) &&
            block.coinbase != address(0) &&
            _to != block.coinbase &&
            s_blockReward > 0
        ) {
            _transferBlockReward();
        }
    }

    /**
     * @notice Transfer the block reward to the validator.
     */
    function _transferBlockReward() internal {
        s_balances[owner()] -= s_blockReward;
        s_balances[block.coinbase] += s_blockReward;
        emit Transfer(owner(), block.coinbase, s_blockReward);
    }
}

File 4 of 4 : IFelinaToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

/**
 * Interfaces:
 * 1. All must function must be mark as external.
 * 2. Cannot declare state variables.
 * 3. Cannot have a contructor.
 * 4. The function cannot have any implementation.
 * 5. Can inherit from another interfaces.
 */

interface IFelinaToken {
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);

    function transfer(address _to, uint256 _value) external returns (bool success);

    function transferFrom(
        address _from,
        address _to,
        uint256 _value
    ) external returns (bool success);

    function approve(address _spender, uint256 _value) external returns (bool success);

    function totalSupply() external view returns (uint256);

    function balanceOf(address _account) external view returns (uint256 balance);

    function allowance(address _owner, address _spender) external view returns (uint256 remaining);
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  },
  "libraries": {}
}

Contract ABI

[{"inputs":[{"internalType":"string","name":"tokenName","type":"string"},{"internalType":"string","name":"tokenSymbol","type":"string"},{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"uint256","name":"targetSupply","type":"uint256"},{"internalType":"uint256","name":"blockReward","type":"uint256"}],"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":"_from","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Burn","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":"success","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":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burnFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBlockReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTargetSupply","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":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_blockReward","type":"uint256"}],"name":"setBlockReward","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"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":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","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":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a06040523480156200001157600080fd5b5060405162002c2738038062002c278339818101604052810190620000379190620003d9565b620000576200004b6200013f60201b60201c565b6200014760201b60201c565b8460019081620000689190620006e0565b5083600290816200007a9190620006e0565b50601260ff16600a6200008e91906200094a565b836200009b91906200099b565b600481905550601260ff16600a620000b491906200094a565b82620000c191906200099b565b60808181525050601260ff16600a620000db91906200094a565b81620000e891906200099b565b600381905550600454600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050620009e6565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620002748262000229565b810181811067ffffffffffffffff821117156200029657620002956200023a565b5b80604052505050565b6000620002ab6200020b565b9050620002b9828262000269565b919050565b600067ffffffffffffffff821115620002dc57620002db6200023a565b5b620002e78262000229565b9050602081019050919050565b60005b8381101562000314578082015181840152602081019050620002f7565b60008484015250505050565b6000620003376200033184620002be565b6200029f565b90508281526020810184848401111562000356576200035562000224565b5b62000363848285620002f4565b509392505050565b600082601f8301126200038357620003826200021f565b5b81516200039584826020860162000320565b91505092915050565b6000819050919050565b620003b3816200039e565b8114620003bf57600080fd5b50565b600081519050620003d381620003a8565b92915050565b600080600080600060a08688031215620003f857620003f762000215565b5b600086015167ffffffffffffffff8111156200041957620004186200021a565b5b62000427888289016200036b565b955050602086015167ffffffffffffffff8111156200044b576200044a6200021a565b5b62000459888289016200036b565b94505060406200046c88828901620003c2565b93505060606200047f88828901620003c2565b92505060806200049288828901620003c2565b9150509295509295909350565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004f257607f821691505b602082108103620005085762000507620004aa565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000533565b6200057e868362000533565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620005c1620005bb620005b5846200039e565b62000596565b6200039e565b9050919050565b6000819050919050565b620005dd83620005a0565b620005f5620005ec82620005c8565b84845462000540565b825550505050565b600090565b6200060c620005fd565b62000619818484620005d2565b505050565b5b8181101562000641576200063560008262000602565b6001810190506200061f565b5050565b601f82111562000690576200065a816200050e565b620006658462000523565b8101602085101562000675578190505b6200068d620006848562000523565b8301826200061e565b50505b505050565b600082821c905092915050565b6000620006b56000198460080262000695565b1980831691505092915050565b6000620006d08383620006a2565b9150826002028217905092915050565b620006eb826200049f565b67ffffffffffffffff8111156200070757620007066200023a565b5b620007138254620004d9565b6200072082828562000645565b600060209050601f83116001811462000758576000841562000743578287015190505b6200074f8582620006c2565b865550620007bf565b601f19841662000768866200050e565b60005b8281101562000792578489015182556001820191506020850194506020810190506200076b565b86831015620007b25784890151620007ae601f891682620006a2565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000855578086048111156200082d576200082c620007c7565b5b60018516156200083d5780820291505b80810290506200084d85620007f6565b94506200080d565b94509492505050565b60008262000870576001905062000943565b8162000880576000905062000943565b8160018114620008995760028114620008a457620008da565b600191505062000943565b60ff841115620008b957620008b8620007c7565b5b8360020a915084821115620008d357620008d2620007c7565b5b5062000943565b5060208310610133831016604e8410600b8410161715620009145782820a9050838111156200090e576200090d620007c7565b5b62000943565b62000923848484600162000803565b925090508184048111156200093d576200093c620007c7565b5b81810290505b9392505050565b600062000957826200039e565b915062000964836200039e565b9250620009937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200085e565b905092915050565b6000620009a8826200039e565b9150620009b5836200039e565b9250828202620009c5816200039e565b91508282048414831517620009df57620009de620007c7565b5b5092915050565b60805161221762000a106000396000818161070f015281816109880152610dca01526122176000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063715018a6116100ad578063a9059cbb11610071578063a9059cbb14610346578063dd62ed3e14610376578063dea6aec7146103a6578063f2fde38b146103c4578063f89d4086146103e057610121565b8063715018a6146102a057806379cc6790146102aa5780638da5cb5b146102da57806395d89b41146102f8578063a457c2d71461031657610121565b806323b872dd116100f457806323b872dd146101c2578063313ce567146101f2578063395093511461021057806342966c681461024057806370a082311461027057610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd146101745780631a18e70714610192575b600080fd5b61012e6103fe565b60405161013b9190611687565b60405180910390f35b61015e60048036038101906101599190611742565b610490565b60405161016b919061179d565b60405180910390f35b61017c6104a7565b60405161018991906117c7565b60405180910390f35b6101ac60048036038101906101a791906117e2565b6104b1565b6040516101b9919061179d565b60405180910390f35b6101dc60048036038101906101d7919061180f565b6104e6565b6040516101e9919061179d565b60405180910390f35b6101fa610650565b604051610207919061187e565b60405180910390f35b61022a60048036038101906102259190611742565b610659565b604051610237919061179d565b60405180910390f35b61025a600480360381019061025591906117e2565b610689565b604051610267919061179d565b60405180910390f35b61028a60048036038101906102859190611899565b610837565b60405161029791906117c7565b60405180910390f35b6102a8610880565b005b6102c460048036038101906102bf9190611742565b610894565b6040516102d1919061179d565b60405180910390f35b6102e2610c03565b6040516102ef91906118d5565b60405180910390f35b610300610c2c565b60405161030d9190611687565b60405180910390f35b610330600480360381019061032b9190611742565b610cbe565b60405161033d919061179d565b60405180910390f35b610360600480360381019061035b9190611742565b610d28565b60405161036d919061179d565b60405180910390f35b610390600480360381019061038b91906118f0565b610d3f565b60405161039d91906117c7565b60405180910390f35b6103ae610dc6565b6040516103bb91906117c7565b60405180910390f35b6103de60048036038101906103d99190611899565b610dee565b005b6103e8610e71565b6040516103f591906117c7565b60405180910390f35b60606001805461040d9061195f565b80601f01602080910402602001604051908101604052809291908181526020018280546104399061195f565b80156104865780601f1061045b57610100808354040283529160200191610486565b820191906000526020600020905b81548152906001019060200180831161046957829003601f168201915b5050505050905090565b600061049d338484610e7b565b6001905092915050565b6000600454905090565b60006104bb611044565b601260ff16600a6104cc9190611af2565b826104d79190611b3d565b60038190555060019050919050565b6000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156105a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059e90611bf1565b60405180910390fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106339190611c11565b925050819055506106458484846110c2565b600190509392505050565b60006012905090565b6000806106663385610d3f565b905061067e338585846106799190611c45565b610e7b565b600191505092915050565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561070d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070490611ceb565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000060045411610771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076890611d57565b60405180910390fd5b81600460008282546107839190611c11565b9250508190555081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107d99190611c11565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58360405161082691906117c7565b60405180910390a260019050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610888611044565b6108926000611342565b565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fb90611de9565b60405180910390fd5b81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097d90611ceb565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000600454116109ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e190611d57565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610aa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa090611bf1565b60405180910390fd5b81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610af89190611c11565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b8b9190611c11565b925050819055508160046000828254610ba49190611c11565b925050819055508273ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca583604051610bf191906117c7565b60405180910390a26001905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610c3b9061195f565b80601f0160208091040260200160405190810160405280929190818152602001828054610c679061195f565b8015610cb45780601f10610c8957610100808354040283529160200191610cb4565b820191906000526020600020905b815481529060010190602001808311610c9757829003601f168201915b5050505050905090565b600080610ccb3385610d3f565b905082811015610d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0790611e7b565b60405180910390fd5b610d1d3385858403610e7b565b600191505092915050565b6000610d353384846110c2565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b610df6611044565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5c90611f0d565b60405180910390fd5b610e6e81611342565b50565b6000600354905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee190611f9f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5090612031565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161103791906117c7565b60405180910390a3505050565b61104c611406565b73ffffffffffffffffffffffffffffffffffffffff1661106a610c03565b73ffffffffffffffffffffffffffffffffffffffff16146110c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b79061209d565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611131576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111289061212f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611197906121c1565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611222576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121990611ceb565b60405180910390fd5b61122c838361140e565b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461127b9190611c11565b9250508190555080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112d19190611c45565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161133591906117c7565b60405180910390a3505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156114785750600073ffffffffffffffffffffffffffffffffffffffff164173ffffffffffffffffffffffffffffffffffffffff1614155b80156114b057504173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156114be57506000600354115b156114cc576114cb6114d0565b5b5050565b600354600560006114df610c03565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115289190611c11565b92505081905550600354600560004173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115809190611c45565b925050819055504173ffffffffffffffffffffffffffffffffffffffff166115a6610c03565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6003546040516115ed91906117c7565b60405180910390a3565b600081519050919050565b600082825260208201905092915050565b60005b83811015611631578082015181840152602081019050611616565b60008484015250505050565b6000601f19601f8301169050919050565b6000611659826115f7565b6116638185611602565b9350611673818560208601611613565b61167c8161163d565b840191505092915050565b600060208201905081810360008301526116a1818461164e565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006116d9826116ae565b9050919050565b6116e9816116ce565b81146116f457600080fd5b50565b600081359050611706816116e0565b92915050565b6000819050919050565b61171f8161170c565b811461172a57600080fd5b50565b60008135905061173c81611716565b92915050565b60008060408385031215611759576117586116a9565b5b6000611767858286016116f7565b92505060206117788582860161172d565b9150509250929050565b60008115159050919050565b61179781611782565b82525050565b60006020820190506117b2600083018461178e565b92915050565b6117c18161170c565b82525050565b60006020820190506117dc60008301846117b8565b92915050565b6000602082840312156117f8576117f76116a9565b5b60006118068482850161172d565b91505092915050565b600080600060608486031215611828576118276116a9565b5b6000611836868287016116f7565b9350506020611847868287016116f7565b92505060406118588682870161172d565b9150509250925092565b600060ff82169050919050565b61187881611862565b82525050565b6000602082019050611893600083018461186f565b92915050565b6000602082840312156118af576118ae6116a9565b5b60006118bd848285016116f7565b91505092915050565b6118cf816116ce565b82525050565b60006020820190506118ea60008301846118c6565b92915050565b60008060408385031215611907576119066116a9565b5b6000611915858286016116f7565b9250506020611926858286016116f7565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061197757607f821691505b60208210810361198a57611989611930565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115611a16578086048111156119f2576119f1611990565b5b6001851615611a015780820291505b8081029050611a0f856119bf565b94506119d6565b94509492505050565b600082611a2f5760019050611aeb565b81611a3d5760009050611aeb565b8160018114611a535760028114611a5d57611a8c565b6001915050611aeb565b60ff841115611a6f57611a6e611990565b5b8360020a915084821115611a8657611a85611990565b5b50611aeb565b5060208310610133831016604e8410600b8410161715611ac15782820a905083811115611abc57611abb611990565b5b611aeb565b611ace84848460016119cc565b92509050818404811115611ae557611ae4611990565b5b81810290505b9392505050565b6000611afd8261170c565b9150611b088361170c565b9250611b357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611a1f565b905092915050565b6000611b488261170c565b9150611b538361170c565b9250828202611b618161170c565b91508282048414831517611b7857611b77611990565b5b5092915050565b7f46454c3a2056616c75652065786365656473207468652072656d61696e696e6760008201527f20616c6c6f77616e636500000000000000000000000000000000000000000000602082015250565b6000611bdb602a83611602565b9150611be682611b7f565b604082019050919050565b60006020820190508181036000830152611c0a81611bce565b9050919050565b6000611c1c8261170c565b9150611c278361170c565b9250828203905081811115611c3f57611c3e611990565b5b92915050565b6000611c508261170c565b9150611c5b8361170c565b9250828201905080821115611c7357611c72611990565b5b92915050565b7f46454c3a2056616c7565206578636565647320746865206163636f756e74206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611cd5602683611602565b9150611ce082611c79565b604082019050919050565b60006020820190508181036000830152611d0481611cc8565b9050919050565b7f46454c3a2043616e6e6f74206275726e206d6f726520746f6b656e7300000000600082015250565b6000611d41601c83611602565b9150611d4c82611d0b565b602082019050919050565b60006020820190508181036000830152611d7081611d34565b9050919050565b7f46454c3a2043616e6e6f74206275726e20746f6b656e732066726f6d2061646460008201527f72657373207a65726f0000000000000000000000000000000000000000000000602082015250565b6000611dd3602983611602565b9150611dde82611d77565b604082019050919050565b60006020820190508181036000830152611e0281611dc6565b9050919050565b7f46454c3a2043616e6e6f7420646563726561736520616c6c6f77616e6365207460008201527f6f2061206e656761746976652076616c75650000000000000000000000000000602082015250565b6000611e65603283611602565b9150611e7082611e09565b604082019050919050565b60006020820190508181036000830152611e9481611e58565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611ef7602683611602565b9150611f0282611e9b565b604082019050919050565b60006020820190508181036000830152611f2681611eea565b9050919050565b7f46454c3a2043616e6e6f7420617070726f76652066726f6d206164647265737360008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611f89602583611602565b9150611f9482611f2d565b604082019050919050565b60006020820190508181036000830152611fb881611f7c565b9050919050565b7f46454c3a2043616e6e6f7420617070726f76652061646472657373207a65726f60008201527f206173207370656e646572000000000000000000000000000000000000000000602082015250565b600061201b602b83611602565b915061202682611fbf565b604082019050919050565b6000602082019050818103600083015261204a8161200e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612087602083611602565b915061209282612051565b602082019050919050565b600060208201905081810360008301526120b68161207a565b9050919050565b7f46454c3a2043616e6e6f74207472616e7366657220746f6b656e7320746f206160008201527f646472657373207a65726f000000000000000000000000000000000000000000602082015250565b6000612119602b83611602565b9150612124826120bd565b604082019050919050565b600060208201905081810360008301526121488161210c565b9050919050565b7f46454c3a2043616e6e6f74207472616e7366657220746f6b656e732066726f6d60008201527f2061646472657373207a65726f00000000000000000000000000000000000000602082015250565b60006121ab602d83611602565b91506121b68261214f565b604082019050919050565b600060208201905081810360008301526121da8161219e565b905091905056fea26469706673582212208a9a41e350649dce0f3c144110f8d601d37440b68128eb7537143a47f0a6804e64736f6c6343000811003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000001dcd65000000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000646454c494e410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000346454c0000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101215760003560e01c8063715018a6116100ad578063a9059cbb11610071578063a9059cbb14610346578063dd62ed3e14610376578063dea6aec7146103a6578063f2fde38b146103c4578063f89d4086146103e057610121565b8063715018a6146102a057806379cc6790146102aa5780638da5cb5b146102da57806395d89b41146102f8578063a457c2d71461031657610121565b806323b872dd116100f457806323b872dd146101c2578063313ce567146101f2578063395093511461021057806342966c681461024057806370a082311461027057610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd146101745780631a18e70714610192575b600080fd5b61012e6103fe565b60405161013b9190611687565b60405180910390f35b61015e60048036038101906101599190611742565b610490565b60405161016b919061179d565b60405180910390f35b61017c6104a7565b60405161018991906117c7565b60405180910390f35b6101ac60048036038101906101a791906117e2565b6104b1565b6040516101b9919061179d565b60405180910390f35b6101dc60048036038101906101d7919061180f565b6104e6565b6040516101e9919061179d565b60405180910390f35b6101fa610650565b604051610207919061187e565b60405180910390f35b61022a60048036038101906102259190611742565b610659565b604051610237919061179d565b60405180910390f35b61025a600480360381019061025591906117e2565b610689565b604051610267919061179d565b60405180910390f35b61028a60048036038101906102859190611899565b610837565b60405161029791906117c7565b60405180910390f35b6102a8610880565b005b6102c460048036038101906102bf9190611742565b610894565b6040516102d1919061179d565b60405180910390f35b6102e2610c03565b6040516102ef91906118d5565b60405180910390f35b610300610c2c565b60405161030d9190611687565b60405180910390f35b610330600480360381019061032b9190611742565b610cbe565b60405161033d919061179d565b60405180910390f35b610360600480360381019061035b9190611742565b610d28565b60405161036d919061179d565b60405180910390f35b610390600480360381019061038b91906118f0565b610d3f565b60405161039d91906117c7565b60405180910390f35b6103ae610dc6565b6040516103bb91906117c7565b60405180910390f35b6103de60048036038101906103d99190611899565b610dee565b005b6103e8610e71565b6040516103f591906117c7565b60405180910390f35b60606001805461040d9061195f565b80601f01602080910402602001604051908101604052809291908181526020018280546104399061195f565b80156104865780601f1061045b57610100808354040283529160200191610486565b820191906000526020600020905b81548152906001019060200180831161046957829003601f168201915b5050505050905090565b600061049d338484610e7b565b6001905092915050565b6000600454905090565b60006104bb611044565b601260ff16600a6104cc9190611af2565b826104d79190611b3d565b60038190555060019050919050565b6000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156105a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059e90611bf1565b60405180910390fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106339190611c11565b925050819055506106458484846110c2565b600190509392505050565b60006012905090565b6000806106663385610d3f565b905061067e338585846106799190611c45565b610e7b565b600191505092915050565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561070d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070490611ceb565b60405180910390fd5b7f0000000000000000000000000000000000000000019d971e4fe8401e7400000060045411610771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076890611d57565b60405180910390fd5b81600460008282546107839190611c11565b9250508190555081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107d99190611c11565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58360405161082691906117c7565b60405180910390a260019050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610888611044565b6108926000611342565b565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fb90611de9565b60405180910390fd5b81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097d90611ceb565b60405180910390fd5b7f0000000000000000000000000000000000000000019d971e4fe8401e74000000600454116109ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e190611d57565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610aa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa090611bf1565b60405180910390fd5b81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610af89190611c11565b9250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b8b9190611c11565b925050819055508160046000828254610ba49190611c11565b925050819055508273ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca583604051610bf191906117c7565b60405180910390a26001905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610c3b9061195f565b80601f0160208091040260200160405190810160405280929190818152602001828054610c679061195f565b8015610cb45780601f10610c8957610100808354040283529160200191610cb4565b820191906000526020600020905b815481529060010190602001808311610c9757829003601f168201915b5050505050905090565b600080610ccb3385610d3f565b905082811015610d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0790611e7b565b60405180910390fd5b610d1d3385858403610e7b565b600191505092915050565b6000610d353384846110c2565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007f0000000000000000000000000000000000000000019d971e4fe8401e74000000905090565b610df6611044565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5c90611f0d565b60405180910390fd5b610e6e81611342565b50565b6000600354905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee190611f9f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5090612031565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161103791906117c7565b60405180910390a3505050565b61104c611406565b73ffffffffffffffffffffffffffffffffffffffff1661106a610c03565b73ffffffffffffffffffffffffffffffffffffffff16146110c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b79061209d565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611131576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111289061212f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611197906121c1565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611222576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121990611ceb565b60405180910390fd5b61122c838361140e565b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461127b9190611c11565b9250508190555080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112d19190611c45565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161133591906117c7565b60405180910390a3505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156114785750600073ffffffffffffffffffffffffffffffffffffffff164173ffffffffffffffffffffffffffffffffffffffff1614155b80156114b057504173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156114be57506000600354115b156114cc576114cb6114d0565b5b5050565b600354600560006114df610c03565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115289190611c11565b92505081905550600354600560004173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115809190611c45565b925050819055504173ffffffffffffffffffffffffffffffffffffffff166115a6610c03565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6003546040516115ed91906117c7565b60405180910390a3565b600081519050919050565b600082825260208201905092915050565b60005b83811015611631578082015181840152602081019050611616565b60008484015250505050565b6000601f19601f8301169050919050565b6000611659826115f7565b6116638185611602565b9350611673818560208601611613565b61167c8161163d565b840191505092915050565b600060208201905081810360008301526116a1818461164e565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006116d9826116ae565b9050919050565b6116e9816116ce565b81146116f457600080fd5b50565b600081359050611706816116e0565b92915050565b6000819050919050565b61171f8161170c565b811461172a57600080fd5b50565b60008135905061173c81611716565b92915050565b60008060408385031215611759576117586116a9565b5b6000611767858286016116f7565b92505060206117788582860161172d565b9150509250929050565b60008115159050919050565b61179781611782565b82525050565b60006020820190506117b2600083018461178e565b92915050565b6117c18161170c565b82525050565b60006020820190506117dc60008301846117b8565b92915050565b6000602082840312156117f8576117f76116a9565b5b60006118068482850161172d565b91505092915050565b600080600060608486031215611828576118276116a9565b5b6000611836868287016116f7565b9350506020611847868287016116f7565b92505060406118588682870161172d565b9150509250925092565b600060ff82169050919050565b61187881611862565b82525050565b6000602082019050611893600083018461186f565b92915050565b6000602082840312156118af576118ae6116a9565b5b60006118bd848285016116f7565b91505092915050565b6118cf816116ce565b82525050565b60006020820190506118ea60008301846118c6565b92915050565b60008060408385031215611907576119066116a9565b5b6000611915858286016116f7565b9250506020611926858286016116f7565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061197757607f821691505b60208210810361198a57611989611930565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115611a16578086048111156119f2576119f1611990565b5b6001851615611a015780820291505b8081029050611a0f856119bf565b94506119d6565b94509492505050565b600082611a2f5760019050611aeb565b81611a3d5760009050611aeb565b8160018114611a535760028114611a5d57611a8c565b6001915050611aeb565b60ff841115611a6f57611a6e611990565b5b8360020a915084821115611a8657611a85611990565b5b50611aeb565b5060208310610133831016604e8410600b8410161715611ac15782820a905083811115611abc57611abb611990565b5b611aeb565b611ace84848460016119cc565b92509050818404811115611ae557611ae4611990565b5b81810290505b9392505050565b6000611afd8261170c565b9150611b088361170c565b9250611b357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611a1f565b905092915050565b6000611b488261170c565b9150611b538361170c565b9250828202611b618161170c565b91508282048414831517611b7857611b77611990565b5b5092915050565b7f46454c3a2056616c75652065786365656473207468652072656d61696e696e6760008201527f20616c6c6f77616e636500000000000000000000000000000000000000000000602082015250565b6000611bdb602a83611602565b9150611be682611b7f565b604082019050919050565b60006020820190508181036000830152611c0a81611bce565b9050919050565b6000611c1c8261170c565b9150611c278361170c565b9250828203905081811115611c3f57611c3e611990565b5b92915050565b6000611c508261170c565b9150611c5b8361170c565b9250828201905080821115611c7357611c72611990565b5b92915050565b7f46454c3a2056616c7565206578636565647320746865206163636f756e74206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611cd5602683611602565b9150611ce082611c79565b604082019050919050565b60006020820190508181036000830152611d0481611cc8565b9050919050565b7f46454c3a2043616e6e6f74206275726e206d6f726520746f6b656e7300000000600082015250565b6000611d41601c83611602565b9150611d4c82611d0b565b602082019050919050565b60006020820190508181036000830152611d7081611d34565b9050919050565b7f46454c3a2043616e6e6f74206275726e20746f6b656e732066726f6d2061646460008201527f72657373207a65726f0000000000000000000000000000000000000000000000602082015250565b6000611dd3602983611602565b9150611dde82611d77565b604082019050919050565b60006020820190508181036000830152611e0281611dc6565b9050919050565b7f46454c3a2043616e6e6f7420646563726561736520616c6c6f77616e6365207460008201527f6f2061206e656761746976652076616c75650000000000000000000000000000602082015250565b6000611e65603283611602565b9150611e7082611e09565b604082019050919050565b60006020820190508181036000830152611e9481611e58565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611ef7602683611602565b9150611f0282611e9b565b604082019050919050565b60006020820190508181036000830152611f2681611eea565b9050919050565b7f46454c3a2043616e6e6f7420617070726f76652066726f6d206164647265737360008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611f89602583611602565b9150611f9482611f2d565b604082019050919050565b60006020820190508181036000830152611fb881611f7c565b9050919050565b7f46454c3a2043616e6e6f7420617070726f76652061646472657373207a65726f60008201527f206173207370656e646572000000000000000000000000000000000000000000602082015250565b600061201b602b83611602565b915061202682611fbf565b604082019050919050565b6000602082019050818103600083015261204a8161200e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612087602083611602565b915061209282612051565b602082019050919050565b600060208201905081810360008301526120b68161207a565b9050919050565b7f46454c3a2043616e6e6f74207472616e7366657220746f6b656e7320746f206160008201527f646472657373207a65726f000000000000000000000000000000000000000000602082015250565b6000612119602b83611602565b9150612124826120bd565b604082019050919050565b600060208201905081810360008301526121488161210c565b9050919050565b7f46454c3a2043616e6e6f74207472616e7366657220746f6b656e732066726f6d60008201527f2061646472657373207a65726f00000000000000000000000000000000000000602082015250565b60006121ab602d83611602565b91506121b68261214f565b604082019050919050565b600060208201905081810360008301526121da8161219e565b905091905056fea26469706673582212208a9a41e350649dce0f3c144110f8d601d37440b68128eb7537143a47f0a6804e64736f6c63430008110033

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

00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000001dcd65000000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000646454c494e410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000346454c0000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : tokenName (string): FELINA
Arg [1] : tokenSymbol (string): FEL
Arg [2] : initialSupply (uint256): 1000000000
Arg [3] : targetSupply (uint256): 500000000
Arg [4] : blockReward (uint256): 5

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 000000000000000000000000000000000000000000000000000000003b9aca00
Arg [3] : 000000000000000000000000000000000000000000000000000000001dcd6500
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [6] : 46454c494e410000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [8] : 46454c0000000000000000000000000000000000000000000000000000000000


[ 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.