ETH Price: $3,434.85 (+7.60%)
Gas: 11 Gwei

Contract

0x0c963A1B52Eb97C5e457c7D76696F8b95c3087eD
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve184708732023-10-31 15:02:23258 days ago1698764543IN
Tokoin: Old TOKO Token
0 ETH0.0014442631.10031851
Transfer163985742023-01-13 14:50:11549 days ago1673621411IN
Tokoin: Old TOKO Token
0 ETH0.0018549735.41440467
Transfer159120972022-11-06 16:13:11617 days ago1667751191IN
Tokoin: Old TOKO Token
0 ETH0.0008373417.59457668
Transfer153774062022-08-20 11:38:44695 days ago1660995524IN
Tokoin: Old TOKO Token
0 ETH0.000243185.11254407
Transfer138199232021-12-17 2:25:24941 days ago1639707924IN
Tokoin: Old TOKO Token
0 ETH0.00570931109
Transfer138159392021-12-16 11:26:37942 days ago1639653997IN
Tokoin: Old TOKO Token
0 ETH0.0035093967
Transfer137646162021-12-08 11:40:53950 days ago1638963653IN
Tokoin: Old TOKO Token
0 ETH0.0033522564
Transfer137582572021-12-07 11:24:50951 days ago1638876290IN
Tokoin: Old TOKO Token
0 ETH0.0012550
Transfer137075092021-11-29 8:21:02959 days ago1638174062IN
Tokoin: Old TOKO Token
0 ETH0.00544741104
Transfer137074962021-11-29 8:17:37959 days ago1638173857IN
Tokoin: Old TOKO Token
0 ETH0.0041393787
Transfer137054512021-11-29 0:14:54959 days ago1638144894IN
Tokoin: Old TOKO Token
0 ETH0.0040327290
Transfer136342982021-11-17 17:28:08971 days ago1637170088IN
Tokoin: Old TOKO Token
0 ETH0.00942339198.00795888
Transfer135766822021-11-08 15:53:20980 days ago1636386800IN
Tokoin: Old TOKO Token
0 ETH0.00654737125
Transfer135236192021-10-31 8:00:31988 days ago1635667231IN
Tokoin: Old TOKO Token
0 ETH0.00529185150
Transfer134565172021-10-20 19:40:46999 days ago1634758846IN
Tokoin: Old TOKO Token
0 ETH0.00743781142
Transfer134360372021-10-17 14:46:291002 days ago1634481989IN
Tokoin: Old TOKO Token
0 ETH0.0039284275
Transfer134250752021-10-15 21:38:141003 days ago1634333894IN
Tokoin: Old TOKO Token
0 ETH0.00581406111
Transfer134028552021-10-12 9:36:021007 days ago1634031362IN
Tokoin: Old TOKO Token
0 ETH0.0021335370
Transfer133693352021-10-07 3:07:211012 days ago1633576041IN
Tokoin: Old TOKO Token
0 ETH0.00785685150
Transfer133566822021-10-05 3:40:591014 days ago1633405259IN
Tokoin: Old TOKO Token
0 ETH0.0032474962
Transfer131294182021-08-30 21:52:571049 days ago1630360377IN
Tokoin: Old TOKO Token
0 ETH0.00440987125
Transfer131294182021-08-30 21:52:571049 days ago1630360377IN
Tokoin: Old TOKO Token
0 ETH0.0048188692
Transfer130738252021-08-22 7:42:501058 days ago1629618170IN
Tokoin: Old TOKO Token
0 ETH0.0018852136
Transfer130438302021-08-17 16:36:381063 days ago1629218198IN
Tokoin: Old TOKO Token
0 ETH0.0028223280
Transfer130428612021-08-17 13:01:361063 days ago1629205296IN
Tokoin: Old TOKO Token
0 ETH0.0023570545
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
76292172019-04-24 9:00:061909 days ago1556096406
Tokoin: Old TOKO Token
8.2038827 ETH
76292042019-04-24 8:58:091909 days ago1556096289
Tokoin: Old TOKO Token
3.26082533 ETH
76291992019-04-24 8:56:331909 days ago1556096193
Tokoin: Old TOKO Token
1.842 ETH
76291812019-04-24 8:52:201909 days ago1556095940
Tokoin: Old TOKO Token
21.109 ETH
76291622019-04-24 8:46:541909 days ago1556095614
Tokoin: Old TOKO Token
4.93654628 ETH
76291612019-04-24 8:46:401909 days ago1556095600
Tokoin: Old TOKO Token
11.4436093 ETH
76291592019-04-24 8:46:261909 days ago1556095586
Tokoin: Old TOKO Token
9 ETH
76291432019-04-24 8:41:351909 days ago1556095295
Tokoin: Old TOKO Token
14 ETH
76291222019-04-24 8:36:551909 days ago1556095015
Tokoin: Old TOKO Token
2.06272925 ETH
76291192019-04-24 8:36:311909 days ago1556094991
Tokoin: Old TOKO Token
6.1 ETH
76291122019-04-24 8:34:351909 days ago1556094875
Tokoin: Old TOKO Token
24.348 ETH
76291022019-04-24 8:32:251909 days ago1556094745
Tokoin: Old TOKO Token
8.3 ETH
76290892019-04-24 8:29:311909 days ago1556094571
Tokoin: Old TOKO Token
1.86750266 ETH
76290892019-04-24 8:29:311909 days ago1556094571
Tokoin: Old TOKO Token
2.12432646 ETH
76290872019-04-24 8:28:141909 days ago1556094494
Tokoin: Old TOKO Token
4.9 ETH
76290572019-04-24 8:21:191909 days ago1556094079
Tokoin: Old TOKO Token
2.7 ETH
76290522019-04-24 8:19:441909 days ago1556093984
Tokoin: Old TOKO Token
4.10404331 ETH
76290512019-04-24 8:19:351909 days ago1556093975
Tokoin: Old TOKO Token
2.2 ETH
76290492019-04-24 8:18:581909 days ago1556093938
Tokoin: Old TOKO Token
27.71 ETH
76290352019-04-24 8:16:471909 days ago1556093807
Tokoin: Old TOKO Token
7.73499149 ETH
76290282019-04-24 8:14:331909 days ago1556093673
Tokoin: Old TOKO Token
4 ETH
76290212019-04-24 8:12:511909 days ago1556093571
Tokoin: Old TOKO Token
2.01472599 ETH
76290082019-04-24 8:09:281909 days ago1556093368
Tokoin: Old TOKO Token
1.8 ETH
76290032019-04-24 8:09:101909 days ago1556093350
Tokoin: Old TOKO Token
15.71913592 ETH
76290012019-04-24 8:08:421909 days ago1556093322
Tokoin: Old TOKO Token
20 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TokoinToken

Compiler Version
v0.5.1+commit.c8a2cb62

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-04-25
*/

pragma solidity ^0.5.0;

library SafeMath {
    /**
     * @dev Multiplies two numbers, throws on overflow.
     **/
    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        if (a == 0) {
            return 0;
        }
        c = a * b;
        assert(c / a == b);
        return c;
    }
    
    /**
     * @dev Integer division of two numbers, truncating the quotient.
     **/
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
        // uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return a / b;
    }
    
    /**
     * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
     **/
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }
    
    /**
     * @dev Adds two numbers, throws on overflow.
     **/
    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
        c = a + b;
        assert(c >= a);
        return c;
    }
}

/**
 * @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 payable public 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() public {
      owner = msg.sender;
    }
    
    /**
     * @dev Throws if called by any account other than the owner.
     **/
    modifier onlyOwner() {
      require(msg.sender == owner);
      _;
    }
    
    /**
     * @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 payable newOwner) public onlyOwner {
      require(newOwner != address(0));
      emit OwnershipTransferred(owner, newOwner);
      owner = newOwner;
    }
}

/* @title ControlledAccess
 * @dev The ControlledAccess contract allows function to be restricted to users
 * that possess a signed authorization from the owner of the contract. This signed
 * message includes the user to give permission to and the contract address to prevent
 * reusing the same authorization message on different contract with same owner. 
 */

/**
 * @title ERC20Basic interface
 * @dev Basic ERC20 interface
 **/
contract ERC20Basic {
    function totalSupply() public view returns (uint256);
    function balanceOf(address who) public view returns (uint256);
    function transfer(address to, uint256 value) public returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
}

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 **/
contract ERC20 is ERC20Basic {
    function allowance(address owner, address spender) public view returns (uint256);
    function transferFrom(address from, address to, uint256 value) public returns (bool);
    function approve(address spender, uint256 value) public returns (bool);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * @title TokenVesting
 * @dev A token holder contract that can release its token balance gradually like a
 * typical vesting scheme, with a cliff and vesting period. Optionally revocable by the
 * owner.
 */
contract TokenVesting is Ownable {
  using SafeMath for uint256;

  event Vested(address beneficiary, uint256 amount);
  event Released(address beneficiary, uint256 amount);

  struct Balance {
      uint256 value;
      uint256 start;
      uint256 currentPeriod;
  }

  mapping(address => Balance) private balances;
  mapping (address => uint256) private released;
  uint256 private period;
  uint256 private duration;
  mapping (uint256 => uint256) private percentagePerPeriod;

  constructor() public {
    owner = msg.sender;
    period = 4;
    duration = 7884000;
    percentagePerPeriod[0] = 15;
    percentagePerPeriod[1] = 20;
    percentagePerPeriod[2] = 30;
    percentagePerPeriod[3] = 35;
  }
  
  function balanceOf(address _owner) public view returns(uint256) {
      return balances[_owner].value.sub(released[_owner]);
  }
    /**
   * @notice Vesting token to beneficiary but not released yet.
   * ERC20 token which is being vested
   */
  function vesting(address _beneficiary, uint256 _amount) public onlyOwner {
      if(balances[_beneficiary].start == 0){
          balances[_beneficiary].start = now;
      }

      balances[_beneficiary].value = balances[_beneficiary].value.add(_amount);
      emit Vested(_beneficiary, _amount);
  }
  
  /**
   * @notice Transfers vested tokens to beneficiary.
   * ERC20 token which is being vested
   */
  function release(address _beneficiary) public onlyOwner {
    require(balances[_beneficiary].currentPeriod.add(1) <= period);
    require(balances[_beneficiary].value > released[_beneficiary]);
    require(balances[_beneficiary].start != 0);
    require(now >= balances[_beneficiary].start.add((balances[_beneficiary].currentPeriod.add(1) * duration)));

    uint256 amountReleasedThisPeriod = balances[_beneficiary].value.mul(percentagePerPeriod[balances[_beneficiary].currentPeriod]);
    amountReleasedThisPeriod = amountReleasedThisPeriod.div(100);
    released[_beneficiary] = released[_beneficiary].add(amountReleasedThisPeriod);
    balances[_beneficiary].currentPeriod = balances[_beneficiary].currentPeriod.add(1);

    BasicToken(owner).transfer(_beneficiary, amountReleasedThisPeriod);

    emit Released(_beneficiary, amountReleasedThisPeriod);
  }
}

/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 **/
contract BasicToken is ERC20Basic {
    using SafeMath for uint256;
    mapping(address => uint256) balances;
    uint256 totalSupply_;
    
    /**
     * @dev total number of tokens in existence
     **/
    function totalSupply() public view returns (uint256) {
        return totalSupply_;
    }
    
    /**
     * @dev transfer token for 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) {
        require(_to != address(0));
        require(_value <= balances[msg.sender]);

        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        emit Transfer(msg.sender, _to, _value);
        return true;
    }
    
    /**
     * @dev Gets the balance of the specified address.
     * @param _owner The address to query the the balance of.
     * @return An uint256 representing the amount owned by the passed address.
     **/
    function balanceOf(address _owner) public view returns (uint256) {
        return balances[_owner];
    }
}

contract StandardToken is ERC20, BasicToken {
    mapping (address => mapping (address => uint256)) allowed;
    /**
     * @dev Transfer tokens from one address to another
     * @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) {
        require(_to != address(0));
        require(_value <= balances[_from]);
        require(_value <= allowed[_from][msg.sender]);
    
        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
        
        emit Transfer(_from, _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) {
        allowed[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }
    
    /**
     * @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 Increase the amount of tokens that an owner allowed to a spender.
     *
     * approve should be called when allowed[_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
     * @param _spender The address which will spend the funds.
     * @param _addedValue The amount of tokens to increase the allowance by.
     **/
    function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
        allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }
    
    /**
     * @dev Decrease the amount of tokens that an owner allowed to a spender.
     *
     * approve should be called when allowed[_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
     * @param _spender The address which will spend the funds.
     * @param _subtractedValue The amount of tokens to decrease the allowance by.
     **/
    function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
        uint oldValue = allowed[msg.sender][_spender];
        if (_subtractedValue > oldValue) {
            allowed[msg.sender][_spender] = 0;
        } else {
            allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
        }
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }
}


/**
 * @title Configurable
 * @dev Configurable varriables of the contract
 **/
contract Configurable {
    uint256 public constant cap = 2000000000*10**18;
    uint256 public basePrice = 314815*10**16; // tokens per 1 ether
    uint256 public tokensSold = 0;
    uint256 public tokensSoldInICO = 0;
    uint256 public tokensSoldInPrivateSales = 0;
    
    uint256 public constant tokenReserve = 2000000000*10**18;
    uint256 public constant tokenReserveForICO = 70000000*10**18;
    uint256 public constant tokenReserveForPrivateSales = 630000000*10**18;
    uint256 public remainingTokens = 0;
    uint256 public remainingTokensForICO = 0;
    uint256 public remainingTokensForPrivateSales = 0;

    uint256 public minTransaction = 1.76 ether;
    uint256 public maxTransaction = 29.41 ether;

    uint256 public discountUntilSales = 1176.47 ether;
    uint256 public totalSalesInEther = 0;
    mapping(address => bool) public buyerGetDiscount;
}

contract BurnableToken is BasicToken, Ownable {
    event Burn(address indexed burner, uint256 value);
    
    function burn(uint256 _value) public onlyOwner {
        _burn(msg.sender, _value);
      }
      
    function _burn(address _who, uint256 _value) internal {
        require(_value <= balances[_who]);
        balances[_who] = balances[_who].sub(_value);
        totalSupply_ = totalSupply_.sub(_value);
        emit Burn(_who, _value);
        emit Transfer(_who, address(0), _value);
    }
}

/**
 * @title CrowdsaleToken 
 * @dev Contract to preform crowd sale with token
 **/
contract CrowdsaleToken is StandardToken, Configurable, BurnableToken  {
    /**
     * @dev enum of current crowd sale state
     **/
     enum Stages {
        none,
        icoStart,
        icoEnd
    }
    
    bool  public haltedICO = false;
    Stages currentStage;
    TokenVesting public tokenVestingContract;
  
    /**
     * @dev constructor of CrowdsaleToken
     **/
    constructor() public {
        currentStage = Stages.none;
        balances[owner] = balances[owner].add(tokenReserve);
        totalSupply_ = totalSupply_.add(tokenReserve);

        remainingTokens = cap;
        remainingTokensForICO = tokenReserveForICO;
        remainingTokensForPrivateSales = tokenReserveForPrivateSales;
        tokenVestingContract = new TokenVesting();
        emit Transfer(address(this), owner, tokenReserve);
    }
    
    /**
     * @dev fallback function to send ether to for Crowd sale
     **/
    function () external payable {
        
        require(!haltedICO);
        require(currentStage == Stages.icoStart);
        require(msg.value > 0);
        require(remainingTokensForICO > 0);
        require(minTransaction <= msg.value);
        require(maxTransaction >= msg.value);
        
        uint256 weiAmount = msg.value; // Calculate tokens to sell
        uint256 bonusTokens;
        uint256 tokens = weiAmount.mul(basePrice).div(1 ether);
        uint256 returnWei = 0;

        //Check is discount is valid or not
        if (totalSalesInEther.add(weiAmount) <= discountUntilSales && !buyerGetDiscount[msg.sender]) {
            bonusTokens = tokens.div(10);

            totalSalesInEther = totalSalesInEther.add(weiAmount);
            buyerGetDiscount[msg.sender] = true;
        }
        
        if (tokensSoldInICO.add(tokens.add(bonusTokens)) > tokenReserveForICO) {
            uint256 newTokens = tokenReserveForICO.sub(tokensSoldInICO);
            bonusTokens = newTokens.sub(tokens);

            if (bonusTokens <= 0) {
                bonusTokens = 0;
            }

            tokens = newTokens.sub(bonusTokens);
            returnWei = tokens.div(basePrice).div(1 ether);
        }
        
        //Calculate token sold in ICO and remaining token
        tokensSoldInICO = tokensSoldInICO.add(tokens.add(bonusTokens));
        remainingTokensForICO = tokenReserveForICO.sub(tokensSoldInICO);

        tokensSold = tokensSold.add(tokens.add(bonusTokens)); // Increment raised amount
        remainingTokens = cap.sub(tokensSold);

        if(returnWei > 0){
            msg.sender.transfer(returnWei);
            emit Transfer(address(this), msg.sender, returnWei);
        }
        
        balances[msg.sender] = balances[msg.sender].add(tokens);
        balances[owner] = balances[owner].sub(tokens);
        emit Transfer(address(this), msg.sender, tokens);
        owner.transfer(weiAmount);// Send money to owner
    }
    
    function sendPrivate(address _to, uint256 _tokens) external payable onlyOwner {
        require(_to != address(0));
        require(address(tokenVestingContract) != address(0));
        require(remainingTokensForPrivateSales > 0);
        require(tokenReserveForPrivateSales >= tokensSoldInPrivateSales.add(_tokens));

        //Calculate token sold in private sales and remaining token
        tokensSoldInPrivateSales = tokensSoldInPrivateSales.add(_tokens);
        remainingTokensForPrivateSales = tokenReserveForPrivateSales.sub(tokensSoldInPrivateSales);

        tokensSold = tokensSold.add(_tokens); // Increment raised amount
        remainingTokens = cap.sub(tokensSold);

        balances[address(tokenVestingContract)] = balances[address(tokenVestingContract)].add(_tokens);
        tokenVestingContract.vesting(_to, _tokens);

        balances[owner] = balances[owner].sub(_tokens);
        emit Transfer(address(this), address(tokenVestingContract), _tokens);
    }

    function release(address _to) external onlyOwner {
        tokenVestingContract.release(_to);
    }

    /**
     * @dev startIco starts the public ICO
     **/
    function startIco() public onlyOwner {
        require(currentStage != Stages.icoEnd);
        currentStage = Stages.icoStart;
    }
    
    event icoHalted(address sender);
    function haltICO() public onlyOwner {
        haltedICO = true;
        emit icoHalted(msg.sender);
    }

    event icoResumed(address sender);
    function resumeICO() public onlyOwner {
        haltedICO = false;
        emit icoResumed(msg.sender);
    }

    /**
     * @dev endIco closes down the ICO 
     **/
    function endIco() internal {
        currentStage = Stages.icoEnd;
        // Transfer any remaining tokens
        if(remainingTokens > 0)
            balances[owner] = balances[owner].add(remainingTokens);
        // transfer any remaining ETH balance in the contract to the owner
        owner.transfer(address(this).balance); 
    }


    /**
     * @dev finalizeIco closes down the ICO and sets needed varriables
     **/
    function finalizeIco() public onlyOwner {
        require(currentStage != Stages.icoEnd);
        endIco();
    }

    function setDiscountUntilSales(uint256 _discountUntilSales) public onlyOwner {
        discountUntilSales = _discountUntilSales;
    }
    
    function setBasePrice(uint256 _basePrice) public onlyOwner {
        basePrice = _basePrice;
    }

    function setMinTransaction(uint256 _minTransaction) public onlyOwner {
        minTransaction = _minTransaction;
    }

    function setMaxTransaction(uint256 _maxTransaction) public onlyOwner {
        maxTransaction = _maxTransaction;
    }

    function addTokenSoldInICO(uint256 _amount) public onlyOwner {
        tokensSoldInICO = tokensSoldInICO.add(_amount);
        remainingTokensForICO = tokenReserveForICO.sub(tokensSoldInICO);

        tokensSold = tokensSold.add(_amount);
        remainingTokens = cap.sub(_amount);
    }

    function addTokenSoldInPrivateSales(uint256 _amount) public onlyOwner {
        tokensSoldInPrivateSales = tokensSoldInPrivateSales.add(_amount);
        remainingTokensForPrivateSales = tokenReserveForPrivateSales.sub(tokensSoldInPrivateSales);

        tokensSold = tokensSold.add(_amount);
        remainingTokens = cap.sub(_amount);
    }
}

/**
 * @title TokoinToken 
 * @dev Contract to create the Tokoin Token
 **/
contract TokoinToken is CrowdsaleToken {
    string public constant name = "Tokoin";
    string public constant symbol = "TOKO";
    uint32 public constant decimals = 18;
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"tokenVestingContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"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":"minTransaction","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"haltICO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"remainingTokensForICO","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"release","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_discountUntilSales","type":"uint256"}],"name":"setDiscountUntilSales","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokensSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensSoldInICO","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenReserveForICO","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"addTokenSoldInICO","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":true,"inputs":[],"name":"tokenReserveForPrivateSales","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"discountUntilSales","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startIco","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalizeIco","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"buyerGetDiscount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"resumeICO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokensSoldInPrivateSales","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":false,"inputs":[{"name":"_maxTransaction","type":"uint256"}],"name":"setMaxTransaction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_minTransaction","type":"uint256"}],"name":"setMinTransaction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"addTokenSoldInPrivateSales","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"remainingTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxTransaction","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"basePrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenReserve","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"haltedICO","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSalesInEther","outputs":[{"name":"","type":"uint256"}],"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":"_basePrice","type":"uint256"}],"name":"setBasePrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"remainingTokensForPrivateSales","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokens","type":"uint256"}],"name":"sendPrivate","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"}],"name":"icoHalted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"}],"name":"icoResumed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","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":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","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"}]

608060405268aaa95b9162edff000060035560006004556000600555600060065560006007556000600855600060095567186cc6acd4b00000600a55680198254f2ddc3d0000600b55683fc6cd0fcb77cf0000600c556000600d556000600f60146101000a81548160ff02191690831515021790555033600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600f60156101000a81548160ff02191690836002811115620000d657fe5b02179055506200016a6b06765c793fa10079d0000000600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200033e6401000000000262001414179091906401000000009004565b600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001ff6b06765c793fa10079d00000006001546200033e6401000000000262001414179091906401000000009004565b6001819055506b06765c793fa10079d00000006007819055506a39e7139a8c08fa060000006008819055506b02091fb06eec50ca36000000600981905550620002476200035b565b604051809103906000f08015801562000264573d6000803e3d6000fd5b50601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b06765c793fa10079d00000006040518082815260200191505060405180910390a36200036c565b600081830190508281101515156200035257fe5b80905092915050565b604051610dba80620036fd83390190565b613381806200037c6000396000f3fe608060405260043610610214576000357c010000000000000000000000000000000000000000000000000000000090048063037b27f91461084757806306fdde031461089e578063095ea7b31461092e5780631247d35e146109a1578063129caa18146109cc57806314ec5673146109e357806318160ddd14610a0e5780631916558714610a395780631c79770914610a8a57806323b872dd14610ac5578063313ce56714610b58578063355274ea14610b8f57806342966c6814610bba578063518ab2a814610bf557806357bb7d7b14610c2057806359679ca414610c4b5780636618846314610c765780636e9ba9f614610ce957806370a0823114610d2457806375bd5d6014610d89578063800eecb014610db457806389311e6f14610ddf5780638da5cb5b14610df6578063903a3ef614610e4d57806395d89b4114610e6457806397e9ed6c14610ef45780639cbd7da514610f5d578063a7be2fb114610f74578063a9059cbb14610f9f578063ab5a188714611012578063b43485af1461104d578063bdef77d914611088578063bf583903146110c3578063c3f70b52146110ee578063c7876ea414611119578063cbcb317114611144578063d426111c1461116f578063d73dd6231461119e578063dcf192e014611211578063dd62ed3e1461123c578063de4b3262146112c1578063e57c431a146112fc578063f2fde38b14611327578063f4a68fa214611378575b600f60149054906101000a900460ff1615151561023057600080fd5b6001600281111561023d57fe5b600f60159054906101000a900460ff16600281111561025857fe5b14151561026457600080fd5b60003411151561027357600080fd5b600060085411151561028457600080fd5b34600a541115151561029557600080fd5b34600b54101515156102a657600080fd5b60003490506000806102dd670de0b6b3a76400006102cf600354866113c690919063ffffffff16565b6113fe90919063ffffffff16565b90506000809050600c546102fc85600d5461141490919063ffffffff16565b111580156103545750600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156103e35761036d600a836113fe90919063ffffffff16565b925061038484600d5461141490919063ffffffff16565b600d819055506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6a39e7139a8c08fa06000000610416610405858561141490919063ffffffff16565b60055461141490919063ffffffff16565b11156104ac57600061043e6005546a39e7139a8c08fa0600000061143090919063ffffffff16565b9050610453838261143090919063ffffffff16565b935060008411151561046457600093505b610477848261143090919063ffffffff16565b92506104a8670de0b6b3a764000061049a600354866113fe90919063ffffffff16565b6113fe90919063ffffffff16565b9150505b6104d36104c2848461141490919063ffffffff16565b60055461141490919063ffffffff16565b6005819055506104f96005546a39e7139a8c08fa0600000061143090919063ffffffff16565b600881905550610526610515848461141490919063ffffffff16565b60045461141490919063ffffffff16565b60048190555061054d6004546b06765c793fa10079d000000061143090919063ffffffff16565b6007819055506000811115610609573373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156105a2573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b61065a826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461141490919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061070f82600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143090919063ffffffff16565b600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050158015610840573d6000803e3d6000fd5b5050505050005b34801561085357600080fd5b5061085c611449565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108aa57600080fd5b506108b361146f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108f35780820151818401526020810190506108d8565b50505050905090810190601f1680156109205780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561093a57600080fd5b506109876004803603604081101561095157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114a8565b604051808215151515815260200191505060405180910390f35b3480156109ad57600080fd5b506109b661159a565b6040518082815260200191505060405180910390f35b3480156109d857600080fd5b506109e16115a0565b005b3480156109ef57600080fd5b506109f861167c565b6040518082815260200191505060405180910390f35b348015610a1a57600080fd5b50610a23611682565b6040518082815260200191505060405180910390f35b348015610a4557600080fd5b50610a8860048036036020811015610a5c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061168c565b005b348015610a9657600080fd5b50610ac360048036036020811015610aad57600080fd5b81019080803590602001909291905050506117c0565b005b348015610ad157600080fd5b50610b3e60048036036060811015610ae857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611826565b604051808215151515815260200191505060405180910390f35b348015610b6457600080fd5b50610b6d611be0565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b348015610b9b57600080fd5b50610ba4611be5565b6040518082815260200191505060405180910390f35b348015610bc657600080fd5b50610bf360048036036020811015610bdd57600080fd5b8101908080359060200190929190505050611bf5565b005b348015610c0157600080fd5b50610c0a611c5e565b6040518082815260200191505060405180910390f35b348015610c2c57600080fd5b50610c35611c64565b6040518082815260200191505060405180910390f35b348015610c5757600080fd5b50610c60611c6a565b6040518082815260200191505060405180910390f35b348015610c8257600080fd5b50610ccf60048036036040811015610c9957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c79565b604051808215151515815260200191505060405180910390f35b348015610cf557600080fd5b50610d2260048036036020811015610d0c57600080fd5b8101908080359060200190929190505050611f0a565b005b348015610d3057600080fd5b50610d7360048036036020811015610d4757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fea565b6040518082815260200191505060405180910390f35b348015610d9557600080fd5b50610d9e612032565b6040518082815260200191505060405180910390f35b348015610dc057600080fd5b50610dc9612042565b6040518082815260200191505060405180910390f35b348015610deb57600080fd5b50610df4612048565b005b348015610e0257600080fd5b50610e0b6120fe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e5957600080fd5b50610e62612124565b005b348015610e7057600080fd5b50610e796121be565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610eb9578082015181840152602081019050610e9e565b50505050905090810190601f168015610ee65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610f0057600080fd5b50610f4360048036036020811015610f1757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121f7565b604051808215151515815260200191505060405180910390f35b348015610f6957600080fd5b50610f72612217565b005b348015610f8057600080fd5b50610f896122f3565b6040518082815260200191505060405180910390f35b348015610fab57600080fd5b50610ff860048036036040811015610fc257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506122f9565b604051808215151515815260200191505060405180910390f35b34801561101e57600080fd5b5061104b6004803603602081101561103557600080fd5b8101908080359060200190929190505050612518565b005b34801561105957600080fd5b506110866004803603602081101561107057600080fd5b810190808035906020019092919050505061257e565b005b34801561109457600080fd5b506110c1600480360360208110156110ab57600080fd5b81019080803590602001909291905050506125e4565b005b3480156110cf57600080fd5b506110d86126c5565b6040518082815260200191505060405180910390f35b3480156110fa57600080fd5b506111036126cb565b6040518082815260200191505060405180910390f35b34801561112557600080fd5b5061112e6126d1565b6040518082815260200191505060405180910390f35b34801561115057600080fd5b506111596126d7565b6040518082815260200191505060405180910390f35b34801561117b57600080fd5b506111846126e7565b604051808215151515815260200191505060405180910390f35b3480156111aa57600080fd5b506111f7600480360360408110156111c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506126fa565b604051808215151515815260200191505060405180910390f35b34801561121d57600080fd5b506112266128f6565b6040518082815260200191505060405180910390f35b34801561124857600080fd5b506112ab6004803603604081101561125f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128fc565b6040518082815260200191505060405180910390f35b3480156112cd57600080fd5b506112fa600480360360208110156112e457600080fd5b8101908080359060200190929190505050612983565b005b34801561130857600080fd5b506113116129e9565b6040518082815260200191505060405180910390f35b34801561133357600080fd5b506113766004803603602081101561134a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129ef565b005b6113c46004803603604081101561138e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b47565b005b6000808314156113d957600090506113f8565b81830290508183828115156113ea57fe5b041415156113f457fe5b8090505b92915050565b6000818381151561140b57fe5b04905092915050565b6000818301905082811015151561142757fe5b80905092915050565b600082821115151561143e57fe5b818303905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600681526020017f546f6b6f696e000000000000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600a5481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115fc57600080fd5b6001600f60146101000a81548160ff0219169083151502179055507f7da9a28fc739c49fc1c69da8d04ef41c147a30006543f598ca93a161abcf859c33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60085481565b6000600154905090565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116e857600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166319165587826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156117a557600080fd5b505af11580156117b9573d6000803e3d6000fd5b5050505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561181c57600080fd5b80600c8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561186357600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156118b057600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561193b57600080fd5b61198c826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143090919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a1f826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461141490919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611af082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143090919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b601281565b6b06765c793fa10079d000000081565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c5157600080fd5b611c5b3382613017565b50565b60045481565b60055481565b6a39e7139a8c08fa0600000081565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115611d8a576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e1e565b611d9d838261143090919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f6657600080fd5b611f7b8160055461141490919063ffffffff16565b600581905550611fa16005546a39e7139a8c08fa0600000061143090919063ffffffff16565b600881905550611fbc8160045461141490919063ffffffff16565b600481905550611fe1816b06765c793fa10079d000000061143090919063ffffffff16565b60078190555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6b02091fb06eec50ca3600000081565b600c5481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120a457600080fd5b6002808111156120b057fe5b600f60159054906101000a900460ff1660028111156120cb57fe5b141515156120d857600080fd5b6001600f60156101000a81548160ff021916908360028111156120f757fe5b0217905550565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561218057600080fd5b60028081111561218c57fe5b600f60159054906101000a900460ff1660028111156121a757fe5b141515156121b457600080fd5b6121bc6131ca565b565b6040805190810160405280600481526020017f544f4b4f0000000000000000000000000000000000000000000000000000000081525081565b600e6020528060005260406000206000915054906101000a900460ff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561227357600080fd5b6000600f60146101000a81548160ff0219169083151502179055507f32d5b39251895444e61ec25a5758001a188524eb2257fae0122fe5adabd5ede533604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60065481565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561233657600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561238357600080fd5b6123d4826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143090919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612467826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461141490919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561257457600080fd5b80600b8190555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156125da57600080fd5b80600a8190555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561264057600080fd5b6126558160065461141490919063ffffffff16565b60068190555061267c6006546b02091fb06eec50ca3600000061143090919063ffffffff16565b6009819055506126978160045461141490919063ffffffff16565b6004819055506126bc816b06765c793fa10079d000000061143090919063ffffffff16565b60078190555050565b60075481565b600b5481565b60035481565b6b06765c793fa10079d000000081565b600f60149054906101000a900460ff1681565b600061278b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461141490919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600d5481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129df57600080fd5b8060038190555050565b60095481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612a4b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612a8757600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612ba357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612bdf57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515612c3d57600080fd5b6000600954111515612c4e57600080fd5b612c638160065461141490919063ffffffff16565b6b02091fb06eec50ca3600000010151515612c7d57600080fd5b612c928160065461141490919063ffffffff16565b600681905550612cb96006546b02091fb06eec50ca3600000061143090919063ffffffff16565b600981905550612cd48160045461141490919063ffffffff16565b600481905550612cfb6004546b06765c793fa10079d000000061143090919063ffffffff16565b600781905550612d7481600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461141490919063ffffffff16565b600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663143ee5b983836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612e9d57600080fd5b505af1158015612eb1573d6000803e3d6000fd5b50505050612f2881600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143090919063ffffffff16565b600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115151561306457600080fd5b6130b5816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061310c8160015461143090919063ffffffff16565b6001819055508173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6002600f60156101000a81548160ff021916908360028111156131e957fe5b0217905550600060075411156132d35761326e600754600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461141490919063ffffffff16565b600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015613352573d6000803e3d6000fd5b5056fea165627a7a72305820e792f29a6c433cd0dfc9b612f4a31d992518d75f9708c399e659c9d2a29781fa0029608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460038190555062784ce0600481905550600f60056000808152602001908152602001600020819055506014600560006001815260200190815260200160002081905550601e6005600060028152602001908152602001600020819055506023600560006003815260200190815260200160002081905550610ca1806101196000396000f3fe608060405260043610610067576000357c010000000000000000000000000000000000000000000000000000000090048063143ee5b91461006c57806319165587146100c757806370a08231146101185780638da5cb5b1461017d578063f2fde38b146101d4575b600080fd5b34801561007857600080fd5b506100c56004803603604081101561008f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610225565b005b3480156100d357600080fd5b50610116600480360360208110156100ea57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061041c565b005b34801561012457600080fd5b506101676004803603602081101561013b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109db565b6040518082815260200191505060405180910390f35b34801561018957600080fd5b50610192610a78565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e057600080fd5b50610223600480360360208110156101f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a9d565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561028057600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015414156103135742600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b61036881600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154610bf290919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055507ed5958799b183a7b738d3ad5e711305293dd5076a37a4e3b7e6611dea6114f38282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561047757600080fd5b6003546104cf60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154610bf290919063ffffffff16565b111515156104dc57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411151561056b57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154141515156105bd57600080fd5b61066a60045461061860018060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154610bf290919063ffffffff16565b02600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154610bf290919063ffffffff16565b421015151561067857600080fd5b600061072460056000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154815260200190815260200160002054600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154610c0e90919063ffffffff16565b905061073a606482610c4690919063ffffffff16565b905061078e81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bf290919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061082660018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154610bf290919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561093057600080fd5b505af1158015610944573d6000803e3d6000fd5b505050506040513d602081101561095a57600080fd5b8101908080519060200190929190505050507fb21fb52d5749b80f3182f8c6992236b5e5576681880914484d7f4c9b062e619e8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b6000610a71600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154610c5c90919063ffffffff16565b9050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610af857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610b3457600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008183019050828110151515610c0557fe5b80905092915050565b600080831415610c215760009050610c40565b8183029050818382811515610c3257fe5b04141515610c3c57fe5b8090505b92915050565b60008183811515610c5357fe5b04905092915050565b6000828211151515610c6a57fe5b81830390509291505056fea165627a7a7230582001d3178c8967b0fa2c1b339a2a03369901c587ebb8eed1975a389da4dd9b33270029

Deployed Bytecode

0x608060405260043610610214576000357c010000000000000000000000000000000000000000000000000000000090048063037b27f91461084757806306fdde031461089e578063095ea7b31461092e5780631247d35e146109a1578063129caa18146109cc57806314ec5673146109e357806318160ddd14610a0e5780631916558714610a395780631c79770914610a8a57806323b872dd14610ac5578063313ce56714610b58578063355274ea14610b8f57806342966c6814610bba578063518ab2a814610bf557806357bb7d7b14610c2057806359679ca414610c4b5780636618846314610c765780636e9ba9f614610ce957806370a0823114610d2457806375bd5d6014610d89578063800eecb014610db457806389311e6f14610ddf5780638da5cb5b14610df6578063903a3ef614610e4d57806395d89b4114610e6457806397e9ed6c14610ef45780639cbd7da514610f5d578063a7be2fb114610f74578063a9059cbb14610f9f578063ab5a188714611012578063b43485af1461104d578063bdef77d914611088578063bf583903146110c3578063c3f70b52146110ee578063c7876ea414611119578063cbcb317114611144578063d426111c1461116f578063d73dd6231461119e578063dcf192e014611211578063dd62ed3e1461123c578063de4b3262146112c1578063e57c431a146112fc578063f2fde38b14611327578063f4a68fa214611378575b600f60149054906101000a900460ff1615151561023057600080fd5b6001600281111561023d57fe5b600f60159054906101000a900460ff16600281111561025857fe5b14151561026457600080fd5b60003411151561027357600080fd5b600060085411151561028457600080fd5b34600a541115151561029557600080fd5b34600b54101515156102a657600080fd5b60003490506000806102dd670de0b6b3a76400006102cf600354866113c690919063ffffffff16565b6113fe90919063ffffffff16565b90506000809050600c546102fc85600d5461141490919063ffffffff16565b111580156103545750600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156103e35761036d600a836113fe90919063ffffffff16565b925061038484600d5461141490919063ffffffff16565b600d819055506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6a39e7139a8c08fa06000000610416610405858561141490919063ffffffff16565b60055461141490919063ffffffff16565b11156104ac57600061043e6005546a39e7139a8c08fa0600000061143090919063ffffffff16565b9050610453838261143090919063ffffffff16565b935060008411151561046457600093505b610477848261143090919063ffffffff16565b92506104a8670de0b6b3a764000061049a600354866113fe90919063ffffffff16565b6113fe90919063ffffffff16565b9150505b6104d36104c2848461141490919063ffffffff16565b60055461141490919063ffffffff16565b6005819055506104f96005546a39e7139a8c08fa0600000061143090919063ffffffff16565b600881905550610526610515848461141490919063ffffffff16565b60045461141490919063ffffffff16565b60048190555061054d6004546b06765c793fa10079d000000061143090919063ffffffff16565b6007819055506000811115610609573373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156105a2573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b61065a826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461141490919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061070f82600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143090919063ffffffff16565b600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050158015610840573d6000803e3d6000fd5b5050505050005b34801561085357600080fd5b5061085c611449565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108aa57600080fd5b506108b361146f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108f35780820151818401526020810190506108d8565b50505050905090810190601f1680156109205780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561093a57600080fd5b506109876004803603604081101561095157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114a8565b604051808215151515815260200191505060405180910390f35b3480156109ad57600080fd5b506109b661159a565b6040518082815260200191505060405180910390f35b3480156109d857600080fd5b506109e16115a0565b005b3480156109ef57600080fd5b506109f861167c565b6040518082815260200191505060405180910390f35b348015610a1a57600080fd5b50610a23611682565b6040518082815260200191505060405180910390f35b348015610a4557600080fd5b50610a8860048036036020811015610a5c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061168c565b005b348015610a9657600080fd5b50610ac360048036036020811015610aad57600080fd5b81019080803590602001909291905050506117c0565b005b348015610ad157600080fd5b50610b3e60048036036060811015610ae857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611826565b604051808215151515815260200191505060405180910390f35b348015610b6457600080fd5b50610b6d611be0565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b348015610b9b57600080fd5b50610ba4611be5565b6040518082815260200191505060405180910390f35b348015610bc657600080fd5b50610bf360048036036020811015610bdd57600080fd5b8101908080359060200190929190505050611bf5565b005b348015610c0157600080fd5b50610c0a611c5e565b6040518082815260200191505060405180910390f35b348015610c2c57600080fd5b50610c35611c64565b6040518082815260200191505060405180910390f35b348015610c5757600080fd5b50610c60611c6a565b6040518082815260200191505060405180910390f35b348015610c8257600080fd5b50610ccf60048036036040811015610c9957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c79565b604051808215151515815260200191505060405180910390f35b348015610cf557600080fd5b50610d2260048036036020811015610d0c57600080fd5b8101908080359060200190929190505050611f0a565b005b348015610d3057600080fd5b50610d7360048036036020811015610d4757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fea565b6040518082815260200191505060405180910390f35b348015610d9557600080fd5b50610d9e612032565b6040518082815260200191505060405180910390f35b348015610dc057600080fd5b50610dc9612042565b6040518082815260200191505060405180910390f35b348015610deb57600080fd5b50610df4612048565b005b348015610e0257600080fd5b50610e0b6120fe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e5957600080fd5b50610e62612124565b005b348015610e7057600080fd5b50610e796121be565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610eb9578082015181840152602081019050610e9e565b50505050905090810190601f168015610ee65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610f0057600080fd5b50610f4360048036036020811015610f1757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121f7565b604051808215151515815260200191505060405180910390f35b348015610f6957600080fd5b50610f72612217565b005b348015610f8057600080fd5b50610f896122f3565b6040518082815260200191505060405180910390f35b348015610fab57600080fd5b50610ff860048036036040811015610fc257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506122f9565b604051808215151515815260200191505060405180910390f35b34801561101e57600080fd5b5061104b6004803603602081101561103557600080fd5b8101908080359060200190929190505050612518565b005b34801561105957600080fd5b506110866004803603602081101561107057600080fd5b810190808035906020019092919050505061257e565b005b34801561109457600080fd5b506110c1600480360360208110156110ab57600080fd5b81019080803590602001909291905050506125e4565b005b3480156110cf57600080fd5b506110d86126c5565b6040518082815260200191505060405180910390f35b3480156110fa57600080fd5b506111036126cb565b6040518082815260200191505060405180910390f35b34801561112557600080fd5b5061112e6126d1565b6040518082815260200191505060405180910390f35b34801561115057600080fd5b506111596126d7565b6040518082815260200191505060405180910390f35b34801561117b57600080fd5b506111846126e7565b604051808215151515815260200191505060405180910390f35b3480156111aa57600080fd5b506111f7600480360360408110156111c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506126fa565b604051808215151515815260200191505060405180910390f35b34801561121d57600080fd5b506112266128f6565b6040518082815260200191505060405180910390f35b34801561124857600080fd5b506112ab6004803603604081101561125f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128fc565b6040518082815260200191505060405180910390f35b3480156112cd57600080fd5b506112fa600480360360208110156112e457600080fd5b8101908080359060200190929190505050612983565b005b34801561130857600080fd5b506113116129e9565b6040518082815260200191505060405180910390f35b34801561133357600080fd5b506113766004803603602081101561134a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129ef565b005b6113c46004803603604081101561138e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b47565b005b6000808314156113d957600090506113f8565b81830290508183828115156113ea57fe5b041415156113f457fe5b8090505b92915050565b6000818381151561140b57fe5b04905092915050565b6000818301905082811015151561142757fe5b80905092915050565b600082821115151561143e57fe5b818303905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600681526020017f546f6b6f696e000000000000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600a5481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115fc57600080fd5b6001600f60146101000a81548160ff0219169083151502179055507f7da9a28fc739c49fc1c69da8d04ef41c147a30006543f598ca93a161abcf859c33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60085481565b6000600154905090565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116e857600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166319165587826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156117a557600080fd5b505af11580156117b9573d6000803e3d6000fd5b5050505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561181c57600080fd5b80600c8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561186357600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156118b057600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561193b57600080fd5b61198c826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143090919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a1f826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461141490919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611af082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143090919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b601281565b6b06765c793fa10079d000000081565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c5157600080fd5b611c5b3382613017565b50565b60045481565b60055481565b6a39e7139a8c08fa0600000081565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115611d8a576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e1e565b611d9d838261143090919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f6657600080fd5b611f7b8160055461141490919063ffffffff16565b600581905550611fa16005546a39e7139a8c08fa0600000061143090919063ffffffff16565b600881905550611fbc8160045461141490919063ffffffff16565b600481905550611fe1816b06765c793fa10079d000000061143090919063ffffffff16565b60078190555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6b02091fb06eec50ca3600000081565b600c5481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120a457600080fd5b6002808111156120b057fe5b600f60159054906101000a900460ff1660028111156120cb57fe5b141515156120d857600080fd5b6001600f60156101000a81548160ff021916908360028111156120f757fe5b0217905550565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561218057600080fd5b60028081111561218c57fe5b600f60159054906101000a900460ff1660028111156121a757fe5b141515156121b457600080fd5b6121bc6131ca565b565b6040805190810160405280600481526020017f544f4b4f0000000000000000000000000000000000000000000000000000000081525081565b600e6020528060005260406000206000915054906101000a900460ff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561227357600080fd5b6000600f60146101000a81548160ff0219169083151502179055507f32d5b39251895444e61ec25a5758001a188524eb2257fae0122fe5adabd5ede533604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60065481565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561233657600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561238357600080fd5b6123d4826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143090919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612467826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461141490919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561257457600080fd5b80600b8190555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156125da57600080fd5b80600a8190555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561264057600080fd5b6126558160065461141490919063ffffffff16565b60068190555061267c6006546b02091fb06eec50ca3600000061143090919063ffffffff16565b6009819055506126978160045461141490919063ffffffff16565b6004819055506126bc816b06765c793fa10079d000000061143090919063ffffffff16565b60078190555050565b60075481565b600b5481565b60035481565b6b06765c793fa10079d000000081565b600f60149054906101000a900460ff1681565b600061278b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461141490919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600d5481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129df57600080fd5b8060038190555050565b60095481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612a4b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612a8757600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612ba357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612bdf57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515612c3d57600080fd5b6000600954111515612c4e57600080fd5b612c638160065461141490919063ffffffff16565b6b02091fb06eec50ca3600000010151515612c7d57600080fd5b612c928160065461141490919063ffffffff16565b600681905550612cb96006546b02091fb06eec50ca3600000061143090919063ffffffff16565b600981905550612cd48160045461141490919063ffffffff16565b600481905550612cfb6004546b06765c793fa10079d000000061143090919063ffffffff16565b600781905550612d7481600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461141490919063ffffffff16565b600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663143ee5b983836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612e9d57600080fd5b505af1158015612eb1573d6000803e3d6000fd5b50505050612f2881600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143090919063ffffffff16565b600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115151561306457600080fd5b6130b5816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061310c8160015461143090919063ffffffff16565b6001819055508173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6002600f60156101000a81548160ff021916908360028111156131e957fe5b0217905550600060075411156132d35761326e600754600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461141490919063ffffffff16565b600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015613352573d6000803e3d6000fd5b5056fea165627a7a72305820e792f29a6c433cd0dfc9b612f4a31d992518d75f9708c399e659c9d2a29781fa0029

Swarm Source

bzzr://01d3178c8967b0fa2c1b339a2a03369901c587ebb8eed1975a389da4dd9b3327

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

Tokoin contract has been migrated to 0xa0F0546Eb5E3eE7e8cfC5DA12e5949F3AE622675

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.