ETH Price: $2,696.96 (+2.67%)
Gas: 12 Gwei

Token

K-Tune Token (KTT)
 

Overview

Max Total Supply

3,830,000,000 KTT

Holders

3,664 (0.00%)

Market

Price

$0.00 @ 0.000000 ETH (+0.62%)

Onchain Market Cap

$2,347,445.30

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
100 KTT

Value
$0.06 ( ~2.22472413169099E-05 Eth) [0.0000%]
0x7057d1a352979159714f359109cfcdf238afaef1
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

With over 24,000 new songs being released every day, the music industry has become ever more competitive. It takes a team of producers and artists to create one 'hit song'. On K-Tune, amateur and professional musicians can sell their skills and find help with their creations.

Market

Volume (24H):$2,481.65
Market Capitalization:$0.00
Circulating Supply:0.00 KTT
Market Data Source: Coinmarketcap

ICO Information

ICO Address :0xde4f1f39242E779f4Ae6324e06FB30Ba3E14e377  
ICO Start Date :Oct 30, 2019  
ICO End Date :Nov 30, 2019  
ICO Price :$0.085   
Public Sale Allocation :100000000 KTT  
Country :Switzerland  
Soft Cap :$2000000  
Hard Cap :$100000000  
Amount Raised :$2340980  
Token Distribution Date :Dec 1, 2019  

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
KtuneTokenBlocks

Compiler Version
v0.5.2+commit.1df8f40c

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-06-18
*/

pragma solidity ^0.5.2;
    
    /**
     * @title Ownable
     * @dev The Ownable contract has an owner address, and provides basic authorization control
     * functions, this simplifies the implementation of "user permissions".
     */
    contract Ownable {
        address private _owner;
    
        event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
        /**
         * @dev The Ownable constructor sets the original `owner` of the contract to the sender
         * account.
         */
        constructor () internal {
            _owner = msg.sender;
            emit OwnershipTransferred(address(0), _owner);
        }
    
        /**
         * @return the address of the owner.
         */
        function owner() public view returns (address) {
            return _owner;
        }
    
        /**
         * @dev Throws if called by any account other than the owner.
         */
        modifier onlyOwner() {
            require(isOwner());
            _;
        }
    
        /**
         * @return true if `msg.sender` is the owner of the contract.
         */
        function isOwner() public view returns (bool) {
            return msg.sender == _owner;
        }
    
        /**
         * @dev Allows the current owner to relinquish control of the contract.
         * It will not be possible to call the functions with the `onlyOwner`
         * modifier anymore.
         * @notice Renouncing ownership will leave the contract without an owner,
         * thereby removing any functionality that is only available to the owner.
         */
        function renounceOwnership() public onlyOwner {
            emit OwnershipTransferred(_owner, address(0));
            _owner = address(0);
        }
    
        /**
         * @dev Allows the current owner to transfer control of the contract to a newOwner.
         * @param newOwner The address to transfer ownership to.
         */
        function transferOwnership(address newOwner) public onlyOwner {
            _transferOwnership(newOwner);
        }
    
        /**
         * @dev Transfers control of the contract to a newOwner.
         * @param newOwner The address to transfer ownership to.
         */
        function _transferOwnership(address newOwner) internal {
            require(newOwner != address(0));
            emit OwnershipTransferred(_owner, newOwner);
            _owner = newOwner;
        }
    }
    
    /**
     * @title Secondary
     * @dev A Secondary contract can only be used by its primary account (the one that created it)
     */
    contract Secondary {
        address private _primary;
    
        event PrimaryTransferred(
            address recipient
        );
    
        /**
         * @dev Sets the primary account to the one that is creating the Secondary contract.
         */
        constructor () internal {
            _primary = msg.sender;
            emit PrimaryTransferred(_primary);
        }
    
        /**
         * @dev Reverts if called from any account other than the primary.
         */
        modifier onlyPrimary() {
            require(msg.sender == _primary);
            _;
        }
    
        /**
         * @return the address of the primary.
         */
        function primary() public view returns (address) {
            return _primary;
        }
    
        /**
         * @dev Transfers contract to a new primary.
         * @param recipient The address of new primary.
         */
        function transferPrimary(address recipient) public onlyPrimary {
            require(recipient != address(0));
            _primary = recipient;
            emit PrimaryTransferred(_primary);
        }
    }
    
    // File: node_modules\openzeppelin-solidity\contracts\token\ERC20\IERC20.sol
    /**
     * @title ERC20 interface
     * @dev see https://github.com/ethereum/EIPs/issues/20
     */
    
    interface IERC20 {
        function transfer(address to, uint256 value) external returns (bool);
    
        function approve(address spender, uint256 value) external returns (bool);
    
        function transferFrom(address from, address to, uint256 value) external returns (bool);
    
        function totalSupply() external view returns (uint256);
    
        function balanceOf(address who) external view returns (uint256);
    
        function allowance(address owner, address spender) external view returns (uint256);
    
        event Transfer(address indexed from, address indexed to, uint256 value);
    
        event Approval(address indexed owner, address indexed spender, uint256 value);
    }
    
    // File: node_modules\openzeppelin-solidity\contracts\math\SafeMath.sol
    
    
    /**
     * @title SafeMath
     * @dev Unsigned math operations with safety checks that revert on error
     */
    library SafeMath {
        /**
         * @dev Multiplies two unsigned integers, reverts on overflow.
         */
        function mul(uint256 a, uint256 b) internal pure returns (uint256) {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
            if (a == 0) {
                return 0;
            }
    
            uint256 c = a * b;
            require(c / a == b);
    
            return c;
        }
    
        /**
         * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.
         */
        function div(uint256 a, uint256 b) internal pure returns (uint256) {
            // Solidity only automatically asserts when dividing by 0
            require(b > 0);
            uint256 c = a / b;
            // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    
            return c;
        }
    
        /**
         * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).
         */
        function sub(uint256 a, uint256 b) internal pure returns (uint256) {
            require(b <= a);
            uint256 c = a - b;
    
            return c;
        }
    
        /**
         * @dev Adds two unsigned integers, reverts on overflow.
         */
        function add(uint256 a, uint256 b) internal pure returns (uint256) {
            uint256 c = a + b;
            require(c >= a);
    
            return c;
        }
    
        /**
         * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),
         * reverts when dividing by zero.
         */
        function mod(uint256 a, uint256 b) internal pure returns (uint256) {
            require(b != 0);
            return a % b;
        }
    }
    
    
    // File: node_modules\openzeppelin-solidity\contracts\token\ERC20\ERC20.sol
    /**
     * @title Standard ERC20 token
     *
     * @dev Implementation of the basic standard token.
     * https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
     * Originally based on code by FirstBlood:
     * https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
     *
     * This implementation emits additional Approval events, allowing applications to reconstruct the allowance status for
     * all accounts just by listening to said events. Note that this isn't required by the specification, and other
     * compliant implementations may not do it.
     */
    /**
     * @title Standard ERC20 token
     *
     * @dev Implementation of the basic standard token.
     * https://eips.ethereum.org/EIPS/eip-20
     * Originally based on code by FirstBlood:
     * https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
     *
     * This implementation emits additional Approval events, allowing applications to reconstruct the allowance status for
     * all accounts just by listening to said events. Note that this isn't required by the specification, and other
     * compliant implementations may not do it.
     */
    contract ERC20 is IERC20 {
        using SafeMath for uint256;
    
        mapping (address => uint256) private _balances;
    
        mapping (address => mapping (address => uint256)) private _allowed;
    
        uint256 private _totalSupply;
    
        /**
         * @dev Total number of tokens in existence
         */
        function totalSupply() public view returns (uint256) {
            return _totalSupply;
        }
    
        /**
         * @dev Gets the balance of the specified address.
         * @param owner The address to query the balance of.
         * @return A uint256 representing the amount owned by the passed address.
         */
        function balanceOf(address owner) public view returns (uint256) {
            return _balances[owner];
        }
    
        /**
         * @dev Function to check the amount of tokens that an owner allowed to a spender.
         * @param owner address The address which owns the funds.
         * @param spender address The address which will spend the funds.
         * @return A uint256 specifying the amount of tokens still available for the spender.
         */
        function allowance(address owner, address spender) public view returns (uint256) {
            return _allowed[owner][spender];
        }
    
        /**
         * @dev Transfer token to a specified address
         * @param to The address to transfer to.
         * @param value The amount to be transferred.
         */
        function transfer(address to, uint256 value) public returns (bool) {
            _transfer(msg.sender, to, value);
            return true;
        }
    
        /**
         * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
         * 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
         * @param spender The address which will spend the funds.
         * @param value The amount of tokens to be spent.
         */
        function approve(address spender, uint256 value) public returns (bool) {
            _approve(msg.sender, spender, value);
            return true;
        }
    
        /**
         * @dev Transfer tokens from one address to another.
         * Note that while this function emits an Approval event, this is not required as per the specification,
         * and other compliant implementations may not emit the event.
         * @param from address The address which you want to send tokens from
         * @param to address The address which you want to transfer to
         * @param value uint256 the amount of tokens to be transferred
         */
        function transferFrom(address from, address to, uint256 value) public returns (bool) {
            _transfer(from, to, value);
            _approve(from, msg.sender, _allowed[from][msg.sender].sub(value));
            return true;
        }
    
        /**
         * @dev Increase the amount of tokens that an owner allowed to a spender.
         * approve should be called when _allowed[msg.sender][spender] == 0. To increment
         * allowed value is better to use this function to avoid 2 calls (and wait until
         * the first transaction is mined)
         * From MonolithDAO Token.sol
         * Emits an Approval event.
         * @param spender The address which will spend the funds.
         * @param addedValue The amount of tokens to increase the allowance by.
         */
        function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
            _approve(msg.sender, spender, _allowed[msg.sender][spender].add(addedValue));
            return true;
        }
    
        /**
         * @dev Decrease the amount of tokens that an owner allowed to a spender.
         * approve should be called when _allowed[msg.sender][spender] == 0. To decrement
         * allowed value is better to use this function to avoid 2 calls (and wait until
         * the first transaction is mined)
         * From MonolithDAO Token.sol
         * Emits an Approval event.
         * @param spender The address which will spend the funds.
         * @param subtractedValue The amount of tokens to decrease the allowance by.
         */
        function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
            _approve(msg.sender, spender, _allowed[msg.sender][spender].sub(subtractedValue));
            return true;
        }
    
        /**
         * @dev Transfer token for a specified addresses
         * @param from The address to transfer from.
         * @param to The address to transfer to.
         * @param value The amount to be transferred.
         */
        function _transfer(address from, address to, uint256 value) internal {
            require(to != address(0));
    
            _balances[from] = _balances[from].sub(value);
            _balances[to] = _balances[to].add(value);
            emit Transfer(from, to, value);
        }
    
        /**
         * @dev Internal function that mints an amount of the token and assigns it to
         * an account. This encapsulates the modification of balances such that the
         * proper events are emitted.
         * @param account The account that will receive the created tokens.
         * @param value The amount that will be created.
         */
        function _mint(address account, uint256 value) internal {
            require(account != address(0));
    
            _totalSupply = _totalSupply.add(value);
            _balances[account] = _balances[account].add(value);
            emit Transfer(address(0), account, value);
        }
    
        /**
         * @dev Internal function that burns an amount of the token of a given
         * account.
         * @param account The account whose tokens will be burnt.
         * @param value The amount that will be burnt.
         */
        function _burn(address account, uint256 value) internal {
            require(account != address(0));
    
            _totalSupply = _totalSupply.sub(value);
            _balances[account] = _balances[account].sub(value);
            emit Transfer(account, address(0), value);
        }
    
        /**
         * @dev Approve an address to spend another addresses' tokens.
         * @param owner The address that owns the tokens.
         * @param spender The address that will spend the tokens.
         * @param value The number of tokens that can be spent.
         */
        function _approve(address owner, address spender, uint256 value) internal {
            require(spender != address(0));
            require(owner != address(0));
    
            _allowed[owner][spender] = value;
            emit Approval(owner, spender, value);
        }
    
        /**
         * @dev Internal function that burns an amount of the token of a given
         * account, deducting from the sender's allowance for said account. Uses the
         * internal burn function.
         * Emits an Approval event (reflecting the reduced allowance).
         * @param account The account whose tokens will be burnt.
         * @param value The amount that will be burnt.
         */
        function _burnFrom(address account, uint256 value) internal {
            _burn(account, value);
            _approve(account, msg.sender, _allowed[account][msg.sender].sub(value));
        }
    }
    
    
    // File: openzeppelin-solidity\contracts\token\ERC20\ERC20Burnable.sol
    /**
     * @title Burnable Token
     * @dev Token that can be irreversibly burned (destroyed).
     */
    contract ERC20Burnable is ERC20 {
        /**
         * @dev Burns a specific amount of tokens.
         * @param value The amount of token to be burned.
         */
        function burn(uint256 value) public {
            _burn(msg.sender, value);
        }
    
        /**
         * @dev Burns a specific amount of tokens from the target address and decrements allowance
         * @param from address The account whose tokens will be burned.
         * @param value uint256 The amount of token to be burned.
         */
        function burnFrom(address from, uint256 value) public {
            _burnFrom(from, value);
        }
    }
    // File: node_modules\openzeppelin-solidity\contracts\access\Roles.sol
    /**
     * @title Roles
     * @dev Library for managing addresses assigned to a Role.
     */
    library Roles {
        struct Role {
            mapping (address => bool) bearer;
        }
    
        /**
         * @dev give an account access to this role
         */
        function add(Role storage role, address account) internal {
            require(account != address(0));
            require(!has(role, account));
    
            role.bearer[account] = true;
        }
    
        /**
         * @dev remove an account's access to this role
         */
        function remove(Role storage role, address account) internal {
            require(account != address(0));
            require(has(role, account));
    
            role.bearer[account] = false;
        }
    
        /**
         * @dev check if an account has this role
         * @return bool
         */
        function has(Role storage role, address account) internal view returns (bool) {
            require(account != address(0));
            return role.bearer[account];
        }
    }
    
    // File: node_modules\openzeppelin-solidity\contracts\access\roles\MinterRole.sol
    contract MinterRole {
        using Roles for Roles.Role;
    
        event MinterAdded(address indexed account);
        event MinterRemoved(address indexed account);
    
        Roles.Role private _minters;
    
        constructor () internal {
            _addMinter(msg.sender);
        }
    
        modifier onlyMinter() {
            require(isMinter(msg.sender));
            _;
        }
    
        function isMinter(address account) public view returns (bool) {
            return _minters.has(account);
        }
    
        function addMinter(address account) public onlyMinter {
            _addMinter(account);
        }
    
        function renounceMinter() public {
            _removeMinter(msg.sender);
        }
    
        function _addMinter(address account) internal {
            _minters.add(account);
            emit MinterAdded(account);
        }
    
        function _removeMinter(address account) internal {
            _minters.remove(account);
            emit MinterRemoved(account);
        }
    }
    
    // File: openzeppelin-solidity\contracts\token\ERC20\ERC20Mintable.sol
    
    /**
     * @title ERC20Mintable
     * @dev ERC20 minting logic
     */
    contract ERC20Mintable is ERC20, MinterRole {
        /**
         * @dev Function to mint tokens
         * @param to The address that will receive the minted tokens.
         * @param value The amount of tokens to mint.
         * @return A boolean that indicates if the operation was successful.
         */
        function mint(address to, uint256 value) public onlyMinter returns (bool) {
            _mint(to, value);
            return true;
        }
    }
    
    // File: contracts\ERC20Frozenable.sol
    
    
    //truffle-flattener Token.sol
    contract ERC20Frozenable is ERC20Burnable, ERC20Mintable, Ownable {
        mapping (address => bool) private _frozenAccount;
        event FrozenFunds(address target, bool frozen);
    
    
        function frozenAccount(address _address) public view returns(bool isFrozen) {
            return _frozenAccount[_address];
        }
    
        function freezeAccount(address target, bool freeze)  public onlyOwner {
            require(_frozenAccount[target] != freeze, "Same as current");
            _frozenAccount[target] = freeze;
            emit FrozenFunds(target, freeze);
        }
    
        function _transfer(address from, address to, uint256 value) internal {
            require(!_frozenAccount[from], "error - frozen");
            require(!_frozenAccount[to], "error - frozen");
            super._transfer(from, to, value);
        }
    
    }
    
    // File: openzeppelin-solidity\contracts\token\ERC20\ERC20Detailed.sol
    
    /**
     * @title ERC20Detailed token
     * @dev The decimals are only for visualization purposes.
     * All the operations are done using the smallest and indivisible token unit,
     * just as on Ethereum all the operations are done in wei.
     */
    contract ERC20Detailed is IERC20 {
        string private _name;
        string private _symbol;
        uint8 private _decimals;
    
        constructor (string memory name, string memory symbol, uint8 decimals) public {
            _name = name;
            _symbol = symbol;
            _decimals = decimals;
        }
    
        /**
         * @return the name of the token.
         */
        function name() public view returns (string memory) {
            return _name;
        }
    
        /**
         * @return the symbol of the token.
         */
        function symbol() public view returns (string memory) {
            return _symbol;
        }
    
        /**
         * @return the number of decimals of the token.
         */
        function decimals() public view returns (uint8) {
            return _decimals;
        }
    }
    
     /**
      * @title Escrow
      * @dev Base escrow contract, holds funds designated for a payee until they
      * withdraw them.
      * @dev Intended usage: This contract (and derived escrow contracts) should be a
      * standalone contract, that only interacts with the contract that instantiated
      * it. That way, it is guaranteed that all Ether will be handled according to
      * the Escrow rules, and there is no need to check for payable functions or
      * transfers in the inheritance tree. The contract that uses the escrow as its
      * payment method should be its primary, and provide public methods redirecting
      * to the escrow's deposit and withdraw.
      */
    contract Escrow is Secondary {
        using SafeMath for uint256;
    
        event Deposited(address indexed payee, uint256 weiAmount);
        event Withdrawn(address indexed payee, uint256 weiAmount);
    
        mapping(address => uint256) private _deposits;
    
        function depositsOf(address payee) public view returns (uint256) {
            return _deposits[payee];
        }
    
        /**
         * @dev Stores the sent amount as credit to be withdrawn.
         * @param payee The destination address of the funds.
         */
        function deposit(address payee) public onlyPrimary payable {
            uint256 amount = msg.value;
            _deposits[payee] = _deposits[payee].add(amount);
    
            emit Deposited(payee, amount);
        }
    
        /**
         * @dev Withdraw accumulated balance for a payee.
         * @param payee The address whose funds will be withdrawn and transferred to.
         */
        function withdraw(address payable payee) public onlyPrimary {
            uint256 payment = _deposits[payee];
    
            _deposits[payee] = 0;
    
            payee.transfer(payment);
    
            emit Withdrawn(payee, payment);
        }
    }
    
    /**
     * @title PullPayment
     * @dev Base contract supporting async send for pull payments. Inherit from this
     * contract and use _asyncTransfer instead of send or transfer.
     */
    contract PullPayment {
        Escrow private _escrow;
    
        constructor () internal {
            _escrow = new Escrow();
        }
    
        /**
         * @dev Withdraw accumulated balance.
         * @param payee Whose balance will be withdrawn.
         */
        function withdrawPayments(address payable payee) public {
            _escrow.withdraw(payee);
        }
    
        /**
         * @dev Returns the credit owed to an address.
         * @param dest The creditor's address.
         */
        function payments(address dest) public view returns (uint256) {
            return _escrow.depositsOf(dest);
        }
    
        /**
         * @dev Called by the payer to store the sent amount as credit to be pulled.
         * @param dest The destination address of the funds.
         * @param amount The amount to transfer.
         */
        function _asyncTransfer(address dest, uint256 amount) internal {
            _escrow.deposit.value(amount)(dest);
        }
    }
    
    contract PaymentSplitter {
        using SafeMath for uint256;
    
        event PayeeAdded(address account, uint256 shares);
        event PaymentReleased(address to, uint256 amount);
        event PaymentReceived(address from, uint256 amount);
    
        uint256 private _totalShares;
        uint256 private _totalReleased;
    
        mapping(address => uint256) private _shares;
        mapping(address => uint256) private _released;
        address[] private _payees;
    
        /**
         * @dev Constructor
         */
        constructor (address[] memory payees, uint256[] memory shares) public payable {
            require(payees.length == shares.length);
            require(payees.length > 0);
    
            for (uint256 i = 0; i < payees.length; i++) {
                _addPayee(payees[i], shares[i]);
            }
        }
    
        /**
         * @dev payable fallback
         */
        function () external payable {
            emit PaymentReceived(msg.sender, msg.value);
        }
    
        /**
         * @return the total shares of the contract.
         */
        function totalShares() public view returns (uint256) {
            return _totalShares;
        }
    
        /**
         * @return the total amount already released.
         */
        function totalReleased() public view returns (uint256) {
            return _totalReleased;
        }
    
        /**
         * @return the shares of an account.
         */
        function shares(address account) public view returns (uint256) {
            return _shares[account];
        }
    
        /**
         * @return the amount already released to an account.
         */
        function released(address account) public view returns (uint256) {
            return _released[account];
        }
    
        /**
         * @return the address of a payee.
         */
        function payee(uint256 index) public view returns (address) {
            return _payees[index];
        }
    
        /**
         * @dev Release one of the payee's proportional payment.
         * @param account Whose payments will be released.
         */
        function release(address payable account) public {
            require(_shares[account] > 0);
    
            uint256 totalReceived = address(this).balance.add(_totalReleased);
            uint256 payment = totalReceived.mul(_shares[account]).div(_totalShares).sub(_released[account]);
    
            require(payment != 0);
    
            _released[account] = _released[account].add(payment);
            _totalReleased = _totalReleased.add(payment);
    
            account.transfer(payment);
            emit PaymentReleased(account, payment);
        }
    
        /**
         * @dev Add a new payee to the contract.
         * @param account The address of the payee to add.
         * @param shares_ The number of shares owned by the payee.
         */
        function _addPayee(address account, uint256 shares_) private {
            require(account != address(0));
            require(shares_ > 0);
            require(_shares[account] == 0);
    
            _payees.push(account);
            _shares[account] = shares_;
            _totalShares = _totalShares.add(shares_);
            emit PayeeAdded(account, shares_);
        }
    }
    
    contract ConditionalEscrow is Escrow {
        /**
         * @dev Returns whether an address is allowed to withdraw their funds. To be
         * implemented by derived contracts.
         * @param payee The destination address of the funds.
         */
        function withdrawalAllowed(address payee) public view returns (bool);
    
        function withdraw(address payable payee) public {
            require(withdrawalAllowed(payee));
            super.withdraw(payee);
        }
    }
    
    
    contract RefundEscrow is ConditionalEscrow {
        enum State { Active, Refunding, Closed }
    
        event RefundsClosed();
        event RefundsEnabled();
    
        State private _state;
        address payable private _beneficiary;
    
        /**
         * @dev Constructor.
         * @param beneficiary The beneficiary of the deposits.
         */
        constructor (address payable beneficiary) public {
            require(beneficiary != address(0));
            _beneficiary = beneficiary;
            _state = State.Active;
        }
    
        /**
         * @return the current state of the escrow.
         */
        function state() public view returns (State) {
            return _state;
        }
    
        /**
         * @return the beneficiary of the escrow.
         */
        function beneficiary() public view returns (address) {
            return _beneficiary;
        }
    
        /**
         * @dev Stores funds that may later be refunded.
         * @param refundee The address funds will be sent to if a refund occurs.
         */
        function deposit(address refundee) public payable {
            require(_state == State.Active);
            super.deposit(refundee);
        }
    
        /**
         * @dev Allows for the beneficiary to withdraw their funds, rejecting
         * further deposits.
         */
        function close() public onlyPrimary {
            require(_state == State.Active);
            _state = State.Closed;
            emit RefundsClosed();
        }
    
        /**
         * @dev Allows for refunds to take place, rejecting further deposits.
         */
        function enableRefunds() public onlyPrimary {
            require(_state == State.Active);
            _state = State.Refunding;
            emit RefundsEnabled();
        }
    
        /**
         * @dev Withdraws the beneficiary's funds.
         */
        function beneficiaryWithdraw() public {
            require(_state == State.Closed);
            _beneficiary.transfer(address(this).balance);
        }
    
        /**
         * @dev Returns whether refundees can withdraw their deposits (be refunded). The overridden function receives a
         * 'payee' argument, but we ignore it here since the condition is global, not per-payee.
         */
        function withdrawalAllowed(address) public view returns (bool) {
            return _state == State.Refunding;
        }
    }
    // File: contracts\Token.sol
    //truffle-flattener Token.sol
    contract KtuneTokenBlocks is ERC20Frozenable, ERC20Detailed {
    
        constructor()
        ERC20Detailed("K-Tune Token", "KTT", 18)
        public {
            uint256 supply = 10000000000;
            uint256 initialSupply = supply * uint(10) ** decimals();
            _mint(msg.sender, initialSupply);
        }
    }

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"value","type":"uint256"}],"name":"burnFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isMinter","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"frozenAccount","outputs":[{"name":"isFrozen","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"freeze","type":"bool"}],"name":"freezeAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"},{"indexed":false,"name":"frozen","type":"bool"}],"name":"FrozenFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"MinterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"MinterRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

60806040523480156200001157600080fd5b506040805190810160405280600c81526020017f4b2d54756e6520546f6b656e00000000000000000000000000000000000000008152506040805190810160405280600381526020017f4b5454000000000000000000000000000000000000000000000000000000000081525060126200009a33620001fa640100000000026401000000009004565b33600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38260069080519060200190620001709291906200056a565b508160079080519060200190620001899291906200056a565b5080600860006101000a81548160ff021916908360ff16021790555050505060006402540be40090506000620001cd62000264640100000000026401000000009004565b60ff16600a0a82029050620001f233826200027b640100000000026401000000009004565b505062000619565b6200021e816003620003f06401000000000262001b8a179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b6000600860009054906101000a900460ff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515620002b857600080fd5b620002dd81600254620004b3640100000000026200140a179091906401000000009004565b60028190555062000344816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620004b3640100000000026200140a179091906401000000009004565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156200042d57600080fd5b620004488282620004d5640100000000026401000000009004565b1515156200045557600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000808284019050838110151515620004cb57600080fd5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156200051357600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620005ad57805160ff1916838001178555620005de565b82800160010185558215620005de579182015b82811115620005dd578251825591602001919060010190620005c0565b5b509050620005ed9190620005f1565b5090565b6200061691905b8082111562000612576000816000905550600101620005f8565b5090565b90565b611d1580620006296000396000f3fe608060405234801561001057600080fd5b506004361061016a576000357c0100000000000000000000000000000000000000000000000000000000900480638da5cb5b116100e0578063a9059cbb11610099578063a9059cbb1461066d578063aa271e1a146106d3578063b414d4b61461072f578063dd62ed3e1461078b578063e724529c14610803578063f2fde38b146108535761016a565b80638da5cb5b146104ca5780638f32d59b1461051457806395d89b4114610536578063983b2d56146105b957806398650275146105fd578063a457c2d7146106075761016a565b80633950935111610132578063395093511461032057806340c10f191461038657806342966c68146103ec57806370a082311461041a578063715018a61461047257806379cc67901461047c5761016a565b806306fdde031461016f578063095ea7b3146101f257806318160ddd1461025857806323b872dd14610276578063313ce567146102fc575b600080fd5b610177610897565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101b757808201518184015260208101905061019c565b50505050905090810190601f1680156101e45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61023e6004803603604081101561020857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610939565b604051808215151515815260200191505060405180910390f35b610260610950565b6040518082815260200191505060405180910390f35b6102e26004803603606081101561028c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061095a565b604051808215151515815260200191505060405180910390f35b610304610a0b565b604051808260ff1660ff16815260200191505060405180910390f35b61036c6004803603604081101561033657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a22565b604051808215151515815260200191505060405180910390f35b6103d26004803603604081101561039c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ac7565b604051808215151515815260200191505060405180910390f35b6104186004803603602081101561040257600080fd5b8101908080359060200190929190505050610af1565b005b61045c6004803603602081101561043057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610afe565b6040518082815260200191505060405180910390f35b61047a610b46565b005b6104c86004803603604081101561049257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c1a565b005b6104d2610c28565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61051c610c52565b604051808215151515815260200191505060405180910390f35b61053e610caa565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561057e578082015181840152602081019050610563565b50505050905090810190601f1680156105ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105fb600480360360208110156105cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d4c565b005b610605610d6c565b005b6106536004803603604081101561061d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d77565b604051808215151515815260200191505060405180910390f35b6106b96004803603604081101561068357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e1c565b604051808215151515815260200191505060405180910390f35b610715600480360360208110156106e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e33565b604051808215151515815260200191505060405180910390f35b6107716004803603602081101561074557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e50565b604051808215151515815260200191505060405180910390f35b6107ed600480360360408110156107a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ea6565b6040518082815260200191505060405180910390f35b6108516004803603604081101561081957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610f2d565b005b6108956004803603602081101561086957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d2565b005b606060068054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561092f5780601f106109045761010080835404028352916020019161092f565b820191906000526020600020905b81548152906001019060200180831161091257829003601f168201915b5050505050905090565b60006109463384846110f1565b6001905092915050565b6000600254905090565b6000610967848484611254565b610a0084336109fb85600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113e890919063ffffffff16565b6110f1565b600190509392505050565b6000600860009054906101000a900460ff16905090565b6000610abd3384610ab885600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461140a90919063ffffffff16565b6110f1565b6001905092915050565b6000610ad233610e33565b1515610add57600080fd5b610ae7838361142b565b6001905092915050565b610afb338261157f565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b4e610c52565b1515610b5957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c2482826116d3565b5050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d425780601f10610d1757610100808354040283529160200191610d42565b820191906000526020600020905b815481529060010190602001808311610d2557829003601f168201915b5050505050905090565b610d5533610e33565b1515610d6057600080fd5b610d698161177a565b50565b610d75336117d4565b565b6000610e123384610e0d85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113e890919063ffffffff16565b6110f1565b6001905092915050565b6000610e29338484611254565b6001905092915050565b6000610e4982600361182e90919063ffffffff16565b9050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610f35610c52565b1515610f4057600080fd5b801515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151515611008576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f53616d652061732063757272656e74000000000000000000000000000000000081525060200191505060405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a58282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a15050565b6110da610c52565b15156110e557600080fd5b6110ee816118c2565b50565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561112d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561116957600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6572726f72202d2066726f7a656e00000000000000000000000000000000000081525060200191505060405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156113d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6572726f72202d2066726f7a656e00000000000000000000000000000000000081525060200191505060405180910390fd5b6113e38383836119be565b505050565b60008282111515156113f957600080fd5b600082840390508091505092915050565b600080828401905083811015151561142157600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561146757600080fd5b61147c8160025461140a90919063ffffffff16565b6002819055506114d3816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461140a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156115bb57600080fd5b6115d0816002546113e890919063ffffffff16565b600281905550611627816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113e890919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6116dd828261157f565b611776823361177184600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113e890919063ffffffff16565b6110f1565b5050565b61178e816003611b8a90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b6117e8816003611c3a90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561186b57600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156118fe57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156119fa57600080fd5b611a4b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113e890919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ade816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461140a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611bc657600080fd5b611bd0828261182e565b151515611bdc57600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611c7657600080fd5b611c80828261182e565b1515611c8b57600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fea165627a7a723058200fca1aacf98cb45c3c8b989ed0303d11dc6da50e30e8366cb8c82443d52d49cd0029

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061016a576000357c0100000000000000000000000000000000000000000000000000000000900480638da5cb5b116100e0578063a9059cbb11610099578063a9059cbb1461066d578063aa271e1a146106d3578063b414d4b61461072f578063dd62ed3e1461078b578063e724529c14610803578063f2fde38b146108535761016a565b80638da5cb5b146104ca5780638f32d59b1461051457806395d89b4114610536578063983b2d56146105b957806398650275146105fd578063a457c2d7146106075761016a565b80633950935111610132578063395093511461032057806340c10f191461038657806342966c68146103ec57806370a082311461041a578063715018a61461047257806379cc67901461047c5761016a565b806306fdde031461016f578063095ea7b3146101f257806318160ddd1461025857806323b872dd14610276578063313ce567146102fc575b600080fd5b610177610897565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101b757808201518184015260208101905061019c565b50505050905090810190601f1680156101e45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61023e6004803603604081101561020857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610939565b604051808215151515815260200191505060405180910390f35b610260610950565b6040518082815260200191505060405180910390f35b6102e26004803603606081101561028c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061095a565b604051808215151515815260200191505060405180910390f35b610304610a0b565b604051808260ff1660ff16815260200191505060405180910390f35b61036c6004803603604081101561033657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a22565b604051808215151515815260200191505060405180910390f35b6103d26004803603604081101561039c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ac7565b604051808215151515815260200191505060405180910390f35b6104186004803603602081101561040257600080fd5b8101908080359060200190929190505050610af1565b005b61045c6004803603602081101561043057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610afe565b6040518082815260200191505060405180910390f35b61047a610b46565b005b6104c86004803603604081101561049257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c1a565b005b6104d2610c28565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61051c610c52565b604051808215151515815260200191505060405180910390f35b61053e610caa565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561057e578082015181840152602081019050610563565b50505050905090810190601f1680156105ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105fb600480360360208110156105cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d4c565b005b610605610d6c565b005b6106536004803603604081101561061d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d77565b604051808215151515815260200191505060405180910390f35b6106b96004803603604081101561068357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e1c565b604051808215151515815260200191505060405180910390f35b610715600480360360208110156106e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e33565b604051808215151515815260200191505060405180910390f35b6107716004803603602081101561074557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e50565b604051808215151515815260200191505060405180910390f35b6107ed600480360360408110156107a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ea6565b6040518082815260200191505060405180910390f35b6108516004803603604081101561081957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610f2d565b005b6108956004803603602081101561086957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d2565b005b606060068054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561092f5780601f106109045761010080835404028352916020019161092f565b820191906000526020600020905b81548152906001019060200180831161091257829003601f168201915b5050505050905090565b60006109463384846110f1565b6001905092915050565b6000600254905090565b6000610967848484611254565b610a0084336109fb85600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113e890919063ffffffff16565b6110f1565b600190509392505050565b6000600860009054906101000a900460ff16905090565b6000610abd3384610ab885600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461140a90919063ffffffff16565b6110f1565b6001905092915050565b6000610ad233610e33565b1515610add57600080fd5b610ae7838361142b565b6001905092915050565b610afb338261157f565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b4e610c52565b1515610b5957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c2482826116d3565b5050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d425780601f10610d1757610100808354040283529160200191610d42565b820191906000526020600020905b815481529060010190602001808311610d2557829003601f168201915b5050505050905090565b610d5533610e33565b1515610d6057600080fd5b610d698161177a565b50565b610d75336117d4565b565b6000610e123384610e0d85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113e890919063ffffffff16565b6110f1565b6001905092915050565b6000610e29338484611254565b6001905092915050565b6000610e4982600361182e90919063ffffffff16565b9050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610f35610c52565b1515610f4057600080fd5b801515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151515611008576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f53616d652061732063757272656e74000000000000000000000000000000000081525060200191505060405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a58282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a15050565b6110da610c52565b15156110e557600080fd5b6110ee816118c2565b50565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561112d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561116957600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6572726f72202d2066726f7a656e00000000000000000000000000000000000081525060200191505060405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156113d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6572726f72202d2066726f7a656e00000000000000000000000000000000000081525060200191505060405180910390fd5b6113e38383836119be565b505050565b60008282111515156113f957600080fd5b600082840390508091505092915050565b600080828401905083811015151561142157600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561146757600080fd5b61147c8160025461140a90919063ffffffff16565b6002819055506114d3816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461140a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156115bb57600080fd5b6115d0816002546113e890919063ffffffff16565b600281905550611627816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113e890919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6116dd828261157f565b611776823361177184600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113e890919063ffffffff16565b6110f1565b5050565b61178e816003611b8a90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b6117e8816003611c3a90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561186b57600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156118fe57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156119fa57600080fd5b611a4b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113e890919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ade816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461140a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611bc657600080fd5b611bd0828261182e565b151515611bdc57600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611c7657600080fd5b611c80828261182e565b1515611c8b57600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fea165627a7a723058200fca1aacf98cb45c3c8b989ed0303d11dc6da50e30e8366cb8c82443d52d49cd0029

Deployed Bytecode Sourcemap

32129:336:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32129:336:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21882:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;21882:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10716:160;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10716:160:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8701:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11389:244;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11389:244:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;22254:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12207:215;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12207:215:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19970:143;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19970:143:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16620:87;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16620:87:0;;;;;;;;;;;;;;;;;:::i;:::-;;9047:114;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9047:114:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1673:152;;;:::i;:::-;;16989:103;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16989:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;779:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1174:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;22060:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;22060:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18954:100;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18954:100:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;19070:85;;;:::i;:::-;;13001:225;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13001:225:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9873:152;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9873:152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18821:117;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18821:117:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20428:134;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20428:134:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9532:139;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9532:139:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20578:250;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20578:250:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2026:117;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2026:117:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;21882:91;21919:13;21956:5;21949:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21882:91;:::o;10716:160::-;10781:4;10802:36;10811:10;10823:7;10832:5;10802:8;:36::i;:::-;10860:4;10853:11;;10716:160;;;;:::o;8701:99::-;8745:7;8776:12;;8769:19;;8701:99;:::o;11389:244::-;11468:4;11489:26;11499:4;11505:2;11509:5;11489:9;:26::i;:::-;11530:65;11539:4;11545:10;11557:37;11588:5;11557:8;:14;11566:4;11557:14;;;;;;;;;;;;;;;:26;11572:10;11557:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;11530:8;:65::i;:::-;11617:4;11610:11;;11389:244;;;;;:::o;22254:91::-;22295:5;22324:9;;;;;;;;;;;22317:16;;22254:91;:::o;12207:215::-;12287:4;12308:76;12317:10;12329:7;12338:45;12372:10;12338:8;:20;12347:10;12338:20;;;;;;;;;;;;;;;:29;12359:7;12338:29;;;;;;;;;;;;;;;;:33;;:45;;;;:::i;:::-;12308:8;:76::i;:::-;12406:4;12399:11;;12207:215;;;;:::o;19970:143::-;20038:4;18756:20;18765:10;18756:8;:20::i;:::-;18748:29;;;;;;;;20059:16;20065:2;20069:5;20059;:16::i;:::-;20097:4;20090:11;;19970:143;;;;:::o;16620:87::-;16671:24;16677:10;16689:5;16671;:24::i;:::-;16620:87;:::o;9047:114::-;9102:7;9133:9;:16;9143:5;9133:16;;;;;;;;;;;;;;;;9126:23;;9047:114;;;:::o;1673:152::-;1023:9;:7;:9::i;:::-;1015:18;;;;;;;;1776:1;1739:40;;1760:6;;;;;;;;;;;1739:40;;;;;;;;;;;;1811:1;1794:6;;:19;;;;;;;;;;;;;;;;;;1673:152::o;16989:103::-;17058:22;17068:4;17074:5;17058:9;:22::i;:::-;16989:103;;:::o;779:87::-;817:7;848:6;;;;;;;;;;;841:13;;779:87;:::o;1174:100::-;1214:4;1256:6;;;;;;;;;;;1242:20;;:10;:20;;;1235:27;;1174:100;:::o;22060:95::-;22099:13;22136:7;22129:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22060:95;:::o;18954:100::-;18756:20;18765:10;18756:8;:20::i;:::-;18748:29;;;;;;;;19023:19;19034:7;19023:10;:19::i;:::-;18954:100;:::o;19070:85::-;19118:25;19132:10;19118:13;:25::i;:::-;19070:85::o;13001:225::-;13086:4;13107:81;13116:10;13128:7;13137:50;13171:15;13137:8;:20;13146:10;13137:20;;;;;;;;;;;;;;;:29;13158:7;13137:29;;;;;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;13107:8;:81::i;:::-;13210:4;13203:11;;13001:225;;;;:::o;9873:152::-;9934:4;9955:32;9965:10;9977:2;9981:5;9955:9;:32::i;:::-;10009:4;10002:11;;9873:152;;;;:::o;18821:117::-;18877:4;18905:21;18918:7;18905:8;:12;;:21;;;;:::i;:::-;18898:28;;18821:117;;;:::o;20428:134::-;20489:13;20526:14;:24;20541:8;20526:24;;;;;;;;;;;;;;;;;;;;;;;;;20519:31;;20428:134;;;:::o;9532:139::-;9604:7;9635:8;:15;9644:5;9635:15;;;;;;;;;;;;;;;:24;9651:7;9635:24;;;;;;;;;;;;;;;;9628:31;;9532:139;;;;:::o;20578:250::-;1023:9;:7;:9::i;:::-;1015:18;;;;;;;;20697:6;20671:32;;:14;:22;20686:6;20671:22;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;20663:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20763:6;20738:14;:22;20753:6;20738:22;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;20789:27;20801:6;20809;20789:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20578:250;;:::o;2026:117::-;1023:9;:7;:9::i;:::-;1015:18;;;;;;;;2103:28;2122:8;2103:18;:28::i;:::-;2026:117;:::o;15316:278::-;15432:1;15413:21;;:7;:21;;;;15405:30;;;;;;;;15475:1;15458:19;;:5;:19;;;;15450:28;;;;;;;;15526:5;15499:8;:15;15508:5;15499:15;;;;;;;;;;;;;;;:24;15515:7;15499:24;;;;;;;;;;;;;;;:32;;;;15567:7;15551:31;;15560:5;15551:31;;;15576:5;15551:31;;;;;;;;;;;;;;;;;;15316:278;;;:::o;20844:252::-;20937:14;:20;20952:4;20937:20;;;;;;;;;;;;;;;;;;;;;;;;;20936:21;20928:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21000:14;:18;21015:2;21000:18;;;;;;;;;;;;;;;;;;;;;;;;;20999:19;20991:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21052:32;21068:4;21074:2;21078:5;21052:15;:32::i;:::-;20844:252;;;:::o;6247:170::-;6305:7;6342:1;6337;:6;;6329:15;;;;;;;;6359:9;6375:1;6371;:5;6359:17;;6404:1;6397:8;;;6247:170;;;;:::o;6525:::-;6583:7;6607:9;6623:1;6619;:5;6607:17;;6652:1;6647;:6;;6639:15;;;;;;;;6682:1;6675:8;;;6525:170;;;;:::o;14159:293::-;14257:1;14238:21;;:7;:21;;;;14230:30;;;;;;;;14296:23;14313:5;14296:12;;:16;;:23;;;;:::i;:::-;14281:12;:38;;;;14355:29;14378:5;14355:9;:18;14365:7;14355:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;14334:9;:18;14344:7;14334:18;;;;;;;;;;;;;;;:50;;;;14425:7;14404:36;;14421:1;14404:36;;;14434:5;14404:36;;;;;;;;;;;;;;;;;;14159:293;;:::o;14718:::-;14816:1;14797:21;;:7;:21;;;;14789:30;;;;;;;;14855:23;14872:5;14855:12;;:16;;:23;;;;:::i;:::-;14840:12;:38;;;;14914:29;14937:5;14914:9;:18;14924:7;14914:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;14893:9;:18;14903:7;14893:18;;;;;;;;;;;;;;;:50;;;;14989:1;14963:36;;14972:7;14963:36;;;14993:5;14963:36;;;;;;;;;;;;;;;;;;14718:293;;:::o;16033:194::-;16108:21;16114:7;16123:5;16108;:21::i;:::-;16144:71;16153:7;16162:10;16174:40;16208:5;16174:8;:17;16183:7;16174:17;;;;;;;;;;;;;;;:29;16192:10;16174:29;;;;;;;;;;;;;;;;:33;;:40;;;;:::i;:::-;16144:8;:71::i;:::-;16033:194;;:::o;19171:134::-;19232:21;19245:7;19232:8;:12;;:21;;;;:::i;:::-;19285:7;19273:20;;;;;;;;;;;;19171:134;:::o;19321:142::-;19385:24;19401:7;19385:8;:15;;:24;;;;:::i;:::-;19443:7;19429:22;;;;;;;;;;;;19321:142;:::o;18107:177::-;18179:4;18227:1;18208:21;;:7;:21;;;;18200:30;;;;;;;;18252:4;:11;;:20;18264:7;18252:20;;;;;;;;;;;;;;;;;;;;;;;;;18245:27;;18107:177;;;;:::o;2317:203::-;2415:1;2395:22;;:8;:22;;;;2387:31;;;;;;;;2467:8;2438:38;;2459:6;;;;;;;;;;;2438:38;;;;;;;;;;;;2500:8;2491:6;;:17;;;;;;;;;;;;;;;;;;2317:203;:::o;13485:286::-;13591:1;13577:16;;:2;:16;;;;13569:25;;;;;;;;13633:26;13653:5;13633:9;:15;13643:4;13633:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;13615:9;:15;13625:4;13615:15;;;;;;;;;;;;;;;:44;;;;13690:24;13708:5;13690:9;:13;13700:2;13690:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;13674:9;:13;13684:2;13674:13;;;;;;;;;;;;;;;:40;;;;13749:2;13734:25;;13743:4;13734:25;;;13753:5;13734:25;;;;;;;;;;;;;;;;;;13485:286;;;:::o;17475:206::-;17575:1;17556:21;;:7;:21;;;;17548:30;;;;;;;;17602:18;17606:4;17612:7;17602:3;:18::i;:::-;17601:19;17593:28;;;;;;;;17665:4;17642;:11;;:20;17654:7;17642:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;17475:206;;:::o;17780:209::-;17883:1;17864:21;;:7;:21;;;;17856:30;;;;;;;;17909:18;17913:4;17919:7;17909:3;:18::i;:::-;17901:27;;;;;;;;17972:5;17949:4;:11;;:20;17961:7;17949:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;17780:209;;:::o

Swarm Source

bzzr://0fca1aacf98cb45c3c8b989ed0303d11dc6da50e30e8366cb8c82443d52d49cd
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.