Sponsored Link:   Color - Revolutionizing the Dapp Ecosystem, Bounty & Airdrop, Get 240,000 COL NOW!
 Latest 25 txns from a total Of 49462 transactions

TxHash Age From To Value [TxFee]
0x537466ff6b37cca9d17ede9a1c7d3499e0b9a38e5f715c1c3d4951417e8d1d6f3 days 11 hrs ago0xfdb6ac6750690d9c46d038f2536ec995d9d3d6d8  IN   0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770 Ether0.00056582
0x7b0f8d78f9661d6cfc96f55524ee6f32baa52bfe010078ce00c66452668b48213 days 12 hrs ago0xfdb6ac6750690d9c46d038f2536ec995d9d3d6d8  IN   0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770 Ether0.0005907
0x553195c6b72a804905fc63b2d19226f1b73f199a89b8fbb890f3f6b5a02f54c63 days 12 hrs ago0xfdb6ac6750690d9c46d038f2536ec995d9d3d6d8  IN   0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770 Ether0.00092392
0x7270efe5308c9232d2789c8062e8371b988a4fd99dc381f168d455e39c182d763 days 12 hrs ago0xfdb6ac6750690d9c46d038f2536ec995d9d3d6d8  IN   0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770 Ether0.0005907
0x30cb8dc26a0360b99a486dfd6896574917b07a2b62353564f9c78a5ec9242bae3 days 12 hrs ago0xfdb6ac6750690d9c46d038f2536ec995d9d3d6d8  IN   0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770 Ether0.00062392
0xa95a0eadd9473072b437f7e0e7c39a843cf28da43db84f85fb7bd31250abf5323 days 12 hrs ago0xfdb6ac6750690d9c46d038f2536ec995d9d3d6d8  IN   0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770 Ether0.00092392
0x8337b8272d33cd293b36fcf245917afaca283e43dd875cd39e68193c01424ef73 days 12 hrs ago0xfdb6ac6750690d9c46d038f2536ec995d9d3d6d8  IN   0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770 Ether0.00062392
0xbeb209a1dcd3c8e2fb07d59ff6088971fc7772f3ebe26c7bfffe6f60331d92143 days 12 hrs ago0xfdb6ac6750690d9c46d038f2536ec995d9d3d6d8  IN   0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770 Ether0.00092264
0x6550cf8287f573fd994657b62a42d3b2815d91837283ad6d62257bbee3fe082d3 days 12 hrs ago0xfdb6ac6750690d9c46d038f2536ec995d9d3d6d8  IN   0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770 Ether0.00062392
0x2cd01d79cfacb86f1fb5c73d4ea097708e736668048f281e7de856d90f5668563 days 12 hrs ago0xfdb6ac6750690d9c46d038f2536ec995d9d3d6d8  IN   0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770 Ether0.00092392
0xbfe248ec17c95e75760b828c4771951b2236362280380771271ae6cc0d621e4e3 days 12 hrs ago0xfdb6ac6750690d9c46d038f2536ec995d9d3d6d8  IN   0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770 Ether0.00062392
0xd232ed4edc8f8bdfec55f62f20b2678befaa80a65bc3236cafb8ad827ca76c593 days 12 hrs ago0xfdb6ac6750690d9c46d038f2536ec995d9d3d6d8  IN   0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770 Ether0.00062392
0x5cb386c896c425dd58035779e4c30a87ecdef63c06e87e02dd70d0e4845eee173 days 12 hrs ago0xfdb6ac6750690d9c46d038f2536ec995d9d3d6d8  IN   0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770 Ether0.00092264
0x054a5d471d3be3df43a1ece0fe1514b711d4dac8febb1ad01b2055b655a0a98b3 days 12 hrs ago0xfdb6ac6750690d9c46d038f2536ec995d9d3d6d8  IN   0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770 Ether0.00062392
0x9a56aad19a2d3f0c945ef130f811685f12f63cad624aa55299e59b88d18aa7f63 days 16 hrs ago0xfdb6ac6750690d9c46d038f2536ec995d9d3d6d8  IN   0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770 Ether0.00062392
0x32f4b5d7223ae4e747ad7bf72ecbaba7b8a170a3d24710ca4a1a64d3e7f41fe43 days 16 hrs ago0xfdb6ac6750690d9c46d038f2536ec995d9d3d6d8  IN   0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770 Ether0.00092392
0xf81e9be29a38d19a5e3dd6884bf9df4342ed1cf469165dc083e633246188c79b168 days 22 hrs ago0xfdb6ac6750690d9c46d038f2536ec995d9d3d6d8  IN   0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770 Ether0.000045091
0x4ad2789cf7a4e5745afb76ff6cd75a4e8a49027f5fe8d90b61f36ed6d572faf1168 days 22 hrs ago0xfdb6ac6750690d9c46d038f2536ec995d9d3d6d8  IN   0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770 Ether0.000045027
0x5ff7440462468239539c68121bb8c098412a08e546c15e164217b71acf65b563168 days 22 hrs ago0xfdb6ac6750690d9c46d038f2536ec995d9d3d6d8  IN   0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770 Ether0.000045027
0x0647c6eaf6035af4928661b1cccd458c81d1ab30f1a4518b02898826849e749d168 days 22 hrs ago0xfdb6ac6750690d9c46d038f2536ec995d9d3d6d8  IN   0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770 Ether0.000045091
0x441351d68846e369c67f36782a05a960b6d8718d73c73d3aa2ad6836313cf7be169 days 11 hrs ago0xf9d4d48f8c132fdeff7a82e2fb4ce7279ba7a2cb  IN   0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770 Ether0.000120364
0xcc44801a73940e5680b5e57c7e0ee363079cded9575ab55a40f7cae53a062505169 days 11 hrs ago0xf9d4d48f8c132fdeff7a82e2fb4ce7279ba7a2cb  IN   0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770 Ether0.000180364
0xc226bb46dd6a91647cb240e9f4447e2bb4758a2a5189982d04fc382ea04ee8c9169 days 11 hrs ago0xf9d4d48f8c132fdeff7a82e2fb4ce7279ba7a2cb  IN   0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770 Ether0.000180364
0x214c51f04f62ee71d9dac1d27c9aa4994e213010ae629cfe635abc6048eb5812169 days 11 hrs ago0xf9d4d48f8c132fdeff7a82e2fb4ce7279ba7a2cb  IN   0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770 Ether0.000180364
0x36d55bf87ccbfd6dac31e5af6afd39f785aa4bb92af3390625a5c83d286fd82f169 days 11 hrs ago0xf9d4d48f8c132fdeff7a82e2fb4ce7279ba7a2cb  IN   0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770 Ether0.000180108
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click here to View More View All
ParentTxHash Block Age From To Value
0x5a96c1f8608e3d6b7d044495265344d2f5625eceb84f55aafc91b8a2b9570b794905652183 days 17 hrs ago0xd6a062cae6123c158768a5c444ca0896cc60d6b10x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770.075 Ether
0x0134b6af4c2df8525bf8051d024604d4f7741ad700da5a51f95bee984c7e4a574904237183 days 23 hrs ago0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770xc7babc51ff9952490e36b393618b245398b7f2510.002 Ether
0x08ff818a023787ca8d7f6ef2c446da00b93f3a63dc1862ceeeee910282d62ff14904149183 days 23 hrs ago0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770xc7babc51ff9952490e36b393618b245398b7f2510.034023063 Ether
0x49196cde11451258754e5ff78951df8480dae61f7540025fce3cf54a543f48984904142183 days 23 hrs ago0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770xc7babc51ff9952490e36b393618b245398b7f2510.035644441 Ether
0x2d1787569056ef9525aeeb3cf2729214e5af6ccd80c298687bf33b51569a6bdb4904130183 days 23 hrs ago0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770xc7babc51ff9952490e36b393618b245398b7f2510.2 Ether
0xdd82e19759807ea22177d8afa20c549bbc0046d17e2df0fbc54f6b81cf2e46c14904130183 days 23 hrs ago0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770xc7babc51ff9952490e36b393618b245398b7f2510.25 Ether
0xf60deecfaca3f70cbea0991f09fe15a855b952abdb6d917eb2862002bf4956c54904129183 days 23 hrs ago0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770xc7babc51ff9952490e36b393618b245398b7f2510.2 Ether
0x0f884fc4fcdd53dc573431c403b2e1d98d8421b9759fa7d488d68d2a4bf7ffe74904129183 days 23 hrs ago0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770xc7babc51ff9952490e36b393618b245398b7f2511 Ether
0x6d4f1626bfb38b7c818b25707351afb3202911e175597438eafe9c5539b9717b4904129183 days 23 hrs ago0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770xc7babc51ff9952490e36b393618b245398b7f2510.67 Ether
0xc84a9b4b7fd4c25ec93b964ca98497a01ba457a8aed5032f0f988d9adebab21c4904129183 days 23 hrs ago0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770xc7babc51ff9952490e36b393618b245398b7f2510.5 Ether
0xcd1c74fb5271a0bf020a0d904f91a5c90d70df793befeadadc30d82ae6c31e654904129183 days 23 hrs ago0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770xc7babc51ff9952490e36b393618b245398b7f2510.1 Ether
0x00bf1d8a283adc49c2ac5be5651d52b2f0befbc6bdcf980efd7297ab2e87afb54904129183 days 23 hrs ago0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770xc7babc51ff9952490e36b393618b245398b7f2512.329 Ether
0xfa7bbb36b3ac36b6bc49ff556306a8446baee9728470bc72ad92361d545a71984904129183 days 23 hrs ago0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770xc7babc51ff9952490e36b393618b245398b7f2512.195985 Ether
0x91dc5fc315977563cf893a815cde9b9357ed5c66c03c84292b57d3c90d604ba94904129183 days 23 hrs ago0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770xc7babc51ff9952490e36b393618b245398b7f2510.98 Ether
0xce8e7d070c8f7aba4cc0143b695fa720910206aeaca7bddd56c2875583c3bc624904129183 days 23 hrs ago0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770xc7babc51ff9952490e36b393618b245398b7f2510.45 Ether
0x30ade75d8f7daad1754b90c6c1f3625c14c471b824d9f93453f9b1476ace12774904129183 days 23 hrs ago0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770xc7babc51ff9952490e36b393618b245398b7f2512.32919254658385 Ether
0x1cee091342be2f1ed45b0ec296d896527829660364422717215c6d23c122e4ee4904129183 days 23 hrs ago0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770xc7babc51ff9952490e36b393618b245398b7f2511.4 Ether
0x4e94c8edd56be313140626ee97755901c18c460c6f7550c15a61a1898ab129fb4904129183 days 23 hrs ago0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770xc7babc51ff9952490e36b393618b245398b7f2512.329 Ether
0x1df8ecab6ef54cb65ba0e48f0eced7a49631892ddbd7258d7eb93d8a873f4e344904129183 days 23 hrs ago0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770xc7babc51ff9952490e36b393618b245398b7f2510.65 Ether
0xf2d8ae9978b69eb1f73db6570d7fc535dfc4e5fa030439661a1b842542d834124904129183 days 23 hrs ago0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770xc7babc51ff9952490e36b393618b245398b7f2510.5 Ether
0x57cc9bee9fc016da3a370d9a76d0fb08fd34bc3da0fe12c57d2dc1a459b96a9f4904129183 days 23 hrs ago0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770xc7babc51ff9952490e36b393618b245398b7f2512.05 Ether
0x8095cf20c6c47e0cc58c55433202ce399f56b0868948e4fc57259715bd4aecfe4904129183 days 23 hrs ago0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770xc7babc51ff9952490e36b393618b245398b7f2512.329 Ether
0xd4f3354cc6c82f92f4118cb0afee978688c7cc351a65048c642b84618b7efe4f4904129183 days 23 hrs ago0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770xc7babc51ff9952490e36b393618b245398b7f2512.2802 Ether
0xd71cc0c249859e658f90187d198ffd2f71a0997be4161206bd6ba5dd120e360d4904129183 days 23 hrs ago0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770xc7babc51ff9952490e36b393618b245398b7f2511 Ether
0xc8a982c09aa5efa32fd2cd3bdee8207bf531cf31044d8d3e5b06c61c1b4dac614904129183 days 23 hrs ago0x8d4b2cffe2dcbbf06eaa5920401db86ca5fb81770xc7babc51ff9952490e36b393618b245398b7f2511 Ether
[ Download CSV Export  ] 
Contract Source Code Verified (Exact match)
Contract Name: SelfKeyCrowdsale
Compiler Version: v0.4.19+commit.c4cbbb05
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.18;


/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}



/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  uint256 public totalSupply;
  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 SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure.
 * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
  function safeTransfer(ERC20Basic token, address to, uint256 value) internal {
    assert(token.transfer(to, value));
  }

  function safeTransferFrom(ERC20 token, address from, address to, uint256 value) internal {
    assert(token.transferFrom(from, to, value));
  }

  function safeApprove(ERC20 token, address spender, uint256 value) internal {
    assert(token.approve(spender, value));
  }
}



/**
 * @title CrowdsaleConfig
 * @dev Holds all constants for SelfKeyCrowdsale contract
*/
contract CrowdsaleConfig {
    uint256 public constant TOKEN_DECIMALS = 18;
    uint256 public constant MIN_TOKEN_UNIT = 10 ** uint256(TOKEN_DECIMALS);

    // Initial distribution amounts
    uint256 public constant TOTAL_SUPPLY_CAP = 6000000000 * MIN_TOKEN_UNIT;

    // 33% of the total supply cap
    uint256 public constant SALE_CAP = 1980000000 * MIN_TOKEN_UNIT;

    // Minimum cap per purchaser on public sale = $100 in KEY (at $0.015)
    uint256 public constant PURCHASER_MIN_TOKEN_CAP = 6666 * MIN_TOKEN_UNIT;

    // Maximum cap per purchaser on first day of public sale = $3,000 in KEY (at $0.015)
    uint256 public constant PURCHASER_MAX_TOKEN_CAP_DAY1 = 200000 * MIN_TOKEN_UNIT;

    // Maximum cap per purchaser on public sale = $18,000 in KEY (at $0.015)
    uint256 public constant PURCHASER_MAX_TOKEN_CAP = 1200000 * MIN_TOKEN_UNIT;

    // 16.5%
    uint256 public constant FOUNDATION_POOL_TOKENS = 876666666 * MIN_TOKEN_UNIT;
    uint256 public constant FOUNDATION_POOL_TOKENS_VESTED = 113333334 * MIN_TOKEN_UNIT;

    // Approx 33%
    uint256 public constant COMMUNITY_POOL_TOKENS = 1980000000 * MIN_TOKEN_UNIT;

    // Founders' distribution. Total = 16.5%
    uint256 public constant FOUNDERS_TOKENS = 330000000 * MIN_TOKEN_UNIT;
    uint256 public constant FOUNDERS_TOKENS_VESTED_1 = 330000000 * MIN_TOKEN_UNIT;
    uint256 public constant FOUNDERS_TOKENS_VESTED_2 = 330000000 * MIN_TOKEN_UNIT;

    // 1% for legal advisors
    uint256 public constant LEGAL_EXPENSES_1_TOKENS = 54000000 * MIN_TOKEN_UNIT;
    uint256 public constant LEGAL_EXPENSES_2_TOKENS = 6000000 * MIN_TOKEN_UNIT;

    // KEY price in USD (thousandths)
    uint256 public constant TOKEN_PRICE_THOUSANDTH = 15;  // $0.015 per KEY

    // Contract wallet addresses for initial allocation
    address public constant CROWDSALE_WALLET_ADDR = 0xE0831b1687c9faD3447a517F9371E66672505dB0;
    address public constant FOUNDATION_POOL_ADDR = 0xD68947892Ef4D94Cdef7165b109Cf6Cd3f58A8e8;
    address public constant FOUNDATION_POOL_ADDR_VEST = 0xd0C24Bb82e71A44eA770e84A3c79979F9233308D;
    address public constant COMMUNITY_POOL_ADDR = 0x0506c5485AE54aB14C598Ef16C459409E5d8Fc03;
    address public constant FOUNDERS_POOL_ADDR = 0x4452d6454e777743a5Ee233fbe873055008fF528;
    address public constant LEGAL_EXPENSES_ADDR_1 = 0xb57911380F13A0a9a6Ba6562248674B5f56D7BFE;
    address public constant LEGAL_EXPENSES_ADDR_2 = 0x9be281CdcF34B3A01468Ad1008139410Ba5BB2fB;

    // 6 months period, in seconds, for pre-commitment half-vesting
    uint64 public constant PRECOMMITMENT_VESTING_SECONDS = 15552000;
}



/**
 * @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 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.
   */
  function Ownable() 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 newOwner) public onlyOwner {
    require(newOwner != address(0));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}















/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) balances;

  /**
  * @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]);

    // SafeMath.sub will throw if there is not enough balance.
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    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 balance) {
    return balances[_owner];
  }

}




/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * @dev https://github.com/ethereum/EIPs/issues/20
 * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is ERC20, BasicToken {

  mapping (address => mapping (address => uint256)) internal 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);
    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;
    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);
    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);
    }
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

}





/**
 * @title Mintable token
 * @dev Simple ERC20 Token example, with mintable token creation
 * @dev Issue: * https://github.com/OpenZeppelin/zeppelin-solidity/issues/120
 * Based on code by TokenMarketNet: https://github.com/TokenMarketNet/ico/blob/master/contracts/MintableToken.sol
 */

contract MintableToken is StandardToken, Ownable {
  event Mint(address indexed to, uint256 amount);
  event MintFinished();

  bool public mintingFinished = false;


  modifier canMint() {
    require(!mintingFinished);
    _;
  }

  /**
   * @dev Function to mint tokens
   * @param _to The address that will receive the minted tokens.
   * @param _amount The amount of tokens to mint.
   * @return A boolean that indicates if the operation was successful.
   */
  function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) {
    totalSupply = totalSupply.add(_amount);
    balances[_to] = balances[_to].add(_amount);
    Mint(_to, _amount);
    Transfer(address(0), _to, _amount);
    return true;
  }

  /**
   * @dev Function to stop minting new tokens.
   * @return True if the operation was successful.
   */
  function finishMinting() onlyOwner canMint public returns (bool) {
    mintingFinished = true;
    MintFinished();
    return true;
  }
}

/* solhint-disable not-rely-on-time */









/**
 * @title SelfKeyToken
 * @dev SelfKey Token implementation.
 */
contract SelfKeyToken is MintableToken {
    string public constant name = 'SelfKey'; //solhint-disable-line const-name-snakecase
    string public constant symbol = 'KEY'; //solhint-disable-line const-name-snakecase
    uint256 public constant decimals = 18; //solhint-disable-line const-name-snakecase

    uint256 public cap;
    bool private transfersEnabled = false;

    event Burned(address indexed burner, uint256 value);

    /**
     * @dev Only the contract owner can transfer without restrictions.
     *      Regular holders need to wait until sale is finalized.
     * @param _sender — The address sending the tokens
     * @param _value — The number of tokens to send
     */
    modifier canTransfer(address _sender, uint256 _value) {
        require(transfersEnabled || _sender == owner);
        _;
    }

    /**
     * @dev Constructor that sets a maximum supply cap.
     * @param _cap — The maximum supply cap.
     */
    function SelfKeyToken(uint256 _cap) public {
        cap = _cap;
    }

    /**
     * @dev Overrides MintableToken.mint() for restricting supply under cap
     * @param _to — The address to receive minted tokens
     * @param _value — The number of tokens to mint
     */
    function mint(address _to, uint256 _value) public onlyOwner canMint returns (bool) {
        require(totalSupply.add(_value) <= cap);
        return super.mint(_to, _value);
    }

    /**
     * @dev Checks modifier and allows transfer if tokens are not locked.
     * @param _to — The address to receive tokens
     * @param _value — The number of tokens to send
     */
    function transfer(address _to, uint256 _value)
        public canTransfer(msg.sender, _value) returns (bool)
    {
        return super.transfer(_to, _value);
    }

    /**
     * @dev Checks modifier and allows transfer if tokens are not locked.
     * @param _from — The address to send tokens from
     * @param _to — The address to receive tokens
     * @param _value — The number of tokens to send
     */
    function transferFrom(address _from, address _to, uint256 _value)
        public canTransfer(_from, _value) returns (bool)
    {
        return super.transferFrom(_from, _to, _value);
    }

    /**
     * @dev Enables token transfers.
     *      Called when the token sale is successfully finalized
     */
    function enableTransfers() public onlyOwner {
        transfersEnabled = true;
    }

    /**
    * @dev Burns a specific number of tokens.
    * @param _value — The number of tokens to be burned.
    */
    function burn(uint256 _value) public onlyOwner {
        require(_value > 0);

        address burner = msg.sender;
        balances[burner] = balances[burner].sub(_value);
        totalSupply = totalSupply.sub(_value);
        Burned(burner, _value);
    }
}












/**
 * @title TokenTimelock
 * @dev TokenTimelock is a token holder contract that will allow a
 * beneficiary to extract the tokens after a given release time
 */
contract TokenTimelock {
  using SafeERC20 for ERC20Basic;

  // ERC20 basic token contract being held
  ERC20Basic public token;

  // beneficiary of tokens after they are released
  address public beneficiary;

  // timestamp when token release is enabled
  uint256 public releaseTime;

  function TokenTimelock(ERC20Basic _token, address _beneficiary, uint256 _releaseTime) public {
    require(_releaseTime > now);
    token = _token;
    beneficiary = _beneficiary;
    releaseTime = _releaseTime;
  }

  /**
   * @notice Transfers tokens held by timelock to beneficiary.
   */
  function release() public {
    require(now >= releaseTime);

    uint256 amount = token.balanceOf(this);
    require(amount > 0);

    token.safeTransfer(beneficiary, amount);
  }
}






/**
 * @title RefundVault
 * @dev This contract is used for storing funds while a crowdsale
 * is in progress. Supports refunding the money if crowdsale fails,
 * and forwarding it if crowdsale is successful.
 */
contract RefundVault is Ownable {
  using SafeMath for uint256;

  enum State { Active, Refunding, Closed }

  mapping (address => uint256) public deposited;
  address public wallet;
  State public state;

  event Closed();
  event RefundsEnabled();
  event Refunded(address indexed beneficiary, uint256 weiAmount);

  function RefundVault(address _wallet) public {
    require(_wallet != address(0));
    wallet = _wallet;
    state = State.Active;
  }

  function deposit(address investor) onlyOwner public payable {
    require(state == State.Active);
    deposited[investor] = deposited[investor].add(msg.value);
  }

  function close() onlyOwner public {
    require(state == State.Active);
    state = State.Closed;
    Closed();
    wallet.transfer(this.balance);
  }

  function enableRefunds() onlyOwner public {
    require(state == State.Active);
    state = State.Refunding;
    RefundsEnabled();
  }

  function refund(address investor) public {
    require(state == State.Refunding);
    uint256 depositedValue = deposited[investor];
    deposited[investor] = 0;
    investor.transfer(depositedValue);
    Refunded(investor, depositedValue);
  }
}



/**
 * @title SelfKeyCrowdsale
 * @dev SelfKey Token Crowdsale implementation.
 */
// solhint-disable-next-line max-states-count
contract SelfKeyCrowdsale is Ownable, CrowdsaleConfig {
    using SafeMath for uint256;
    using SafeERC20 for SelfKeyToken;

    // whitelist of addresses that can perform precommitments and KYC verifications
    mapping(address => bool) public isVerifier;

    // Token contract
    SelfKeyToken public token;

    uint64 public startTime;
    uint64 public endTime;

    // Minimum tokens expected to sell
    uint256 public goal;

    // How many tokens a buyer gets per ETH
    uint256 public rate = 51800;

    // ETH price in USD, can be later updated until start date
    uint256 public ethPrice = 777;

    // Total amount of tokens purchased, including pre-sale
    uint256 public totalPurchased = 0;

    mapping(address => bool) public kycVerified;
    mapping(address => uint256) public tokensPurchased;

    // a mapping of dynamically instantiated token timelocks for each pre-commitment beneficiary
    mapping(address => address) public vestedTokens;

    bool public isFinalized = false;

    // Token Timelocks
    TokenTimelock public foundersTimelock1;
    TokenTimelock public foundersTimelock2;
    TokenTimelock public foundationTimelock;

    // Vault to hold funds until crowdsale is finalized. Allows refunding if crowdsale is not successful.
    RefundVault public vault;

    // Crowdsale events
    event TokenPurchase(
        address indexed purchaser,
        address indexed beneficiary,
        uint256 value,
        uint256 amount
    );

    event VerifiedKYC(address indexed participant);

    event AddedPrecommitment(
        address indexed participant,
        uint256 tokensAllocated
    );

    event Finalized();

    modifier verifierOnly() {
        require(isVerifier[msg.sender]);
        _;
    }

    /**
     * @dev Crowdsale contract constructor
     * @param _startTime — Unix timestamp representing the crowdsale start time
     * @param _endTime — Unix timestamp representing the crowdsale start time
     * @param _goal — Minimum amount of tokens expected to sell.
     */
    function SelfKeyCrowdsale(
        uint64 _startTime,
        uint64 _endTime,
        uint256 _goal
    ) public
    {
        require(_endTime > _startTime);

        // sets contract owner as a verifier
        isVerifier[msg.sender] = true;

        token = new SelfKeyToken(TOTAL_SUPPLY_CAP);

        // mints all possible tokens to the crowdsale contract
        token.mint(address(this), TOTAL_SUPPLY_CAP);
        token.finishMinting();

        startTime = _startTime;
        endTime = _endTime;
        goal = _goal;

        vault = new RefundVault(CROWDSALE_WALLET_ADDR);

        // Set timelocks to 6 months and a year after startTime, respectively
        uint64 sixMonthLock = uint64(startTime + 15552000);
        uint64 yearLock = uint64(startTime + 31104000);

        // Instantiation of token timelocks
        foundersTimelock1 = new TokenTimelock(token, FOUNDERS_POOL_ADDR, sixMonthLock);
        foundersTimelock2 = new TokenTimelock(token, FOUNDERS_POOL_ADDR, yearLock);
        foundationTimelock = new TokenTimelock(token, FOUNDATION_POOL_ADDR_VEST, yearLock);

        // Genesis allocation of tokens
        token.safeTransfer(FOUNDATION_POOL_ADDR, FOUNDATION_POOL_TOKENS);
        token.safeTransfer(COMMUNITY_POOL_ADDR, COMMUNITY_POOL_TOKENS);
        token.safeTransfer(FOUNDERS_POOL_ADDR, FOUNDERS_TOKENS);
        token.safeTransfer(LEGAL_EXPENSES_ADDR_1, LEGAL_EXPENSES_1_TOKENS);
        token.safeTransfer(LEGAL_EXPENSES_ADDR_2, LEGAL_EXPENSES_2_TOKENS);

        // Allocation of vested tokens
        token.safeTransfer(foundersTimelock1, FOUNDERS_TOKENS_VESTED_1);
        token.safeTransfer(foundersTimelock2, FOUNDERS_TOKENS_VESTED_2);
        token.safeTransfer(foundationTimelock, FOUNDATION_POOL_TOKENS_VESTED);
    }

    /**
     * @dev Fallback function is used to buy tokens.
     *      It's the only entry point since `buyTokens` is internal
     */
    function () public payable {
        buyTokens(msg.sender);
    }

    /**
     * @dev Adds an address to the whitelist of Verifiers
     * @param _address - address of the verifier
     */
    function addVerifier (address _address) public onlyOwner {
        isVerifier[_address] = true;
    }

    /**
     * @dev Removes an address from the whitelist of Verifiers
     * @param _address - address of the verifier to be removed
     */
    function removeVerifier (address _address) public onlyOwner {
        isVerifier[_address] = false;
    }

    /**
     * @dev Sets a new start date as long as token hasn't started yet
     * @param _startTime - unix timestamp of the new start time
     */
    function setStartTime (uint64 _startTime) public onlyOwner {
        require(now < startTime);
        require(_startTime > now);
        require(_startTime < endTime);

        startTime = _startTime;
    }

    /**
     * @dev Sets a new end date as long as end date hasn't been reached
     * @param _endTime - unix timestamp of the new end time
     */
    function setEndTime (uint64 _endTime) public onlyOwner {
        require(now < endTime);
        require(_endTime > now);
        require(_endTime > startTime);

        endTime = _endTime;
    }

    /**
     * @dev Updates the ETH/USD conversion rate as long as the public sale hasn't started
     * @param _ethPrice - Updated conversion rate
     */
    function setEthPrice(uint256 _ethPrice) public onlyOwner {
        require(now < startTime);
        require(_ethPrice > 0);

        ethPrice = _ethPrice;
        rate = ethPrice.mul(1000).div(TOKEN_PRICE_THOUSANDTH);
    }

    /**
     * @dev Must be called after crowdsale ends, to do some extra finalization
     *      work. Calls the contract's finalization function.
     */
    function finalize() public onlyOwner {
        require(now > startTime);
        require(!isFinalized);

        finalization();
        Finalized();

        isFinalized = true;
    }

    /**
     * @dev If crowdsale is unsuccessful, a refund can be claimed back
     */
    function claimRefund(address participant) public {
        // requires sale to be finalized and goal not reached,
        require(isFinalized);
        require(!goalReached());

        vault.refund(participant);
    }

    /**
     * @dev If crowdsale is unsuccessful, participants can claim refunds
     */
    function goalReached() public constant returns (bool) {
        return totalPurchased >= goal;
    }

    /**
     * @dev Release time-locked tokens
     */
    function releaseLockFounders1() public {
        foundersTimelock1.release();
    }

    function releaseLockFounders2() public {
        foundersTimelock2.release();
    }

    function releaseLockFoundation() public {
        foundationTimelock.release();
    }

    /**
     * @dev Release time-locked tokens for any vested address
     */
    function releaseLock(address participant) public {
        require(vestedTokens[participant] != 0x0);

        TokenTimelock timelock = TokenTimelock(vestedTokens[participant]);
        timelock.release();
    }

    /**
     * @dev Verifies KYC for given participant.
     *      This enables token purchases by the participant addres
     */
    function verifyKYC(address participant) public verifierOnly {
        kycVerified[participant] = true;

        VerifiedKYC(participant);
    }

    /**
     * @dev Adds an address for pre-sale commitments made off-chain.
     * @param beneficiary — Address of the already verified participant
     * @param tokensAllocated — Exact amount of KEY tokens (including decimal places) to allocate
     * @param halfVesting — determines whether the half the tokens will be time-locked or not
     */
    function addPrecommitment(
        address beneficiary,
        uint256 tokensAllocated,
        bool halfVesting
    ) public verifierOnly
    {
        // requires to be on pre-sale
        require(now < startTime); // solhint-disable-line not-rely-on-time

        kycVerified[beneficiary] = true;

        uint256 tokens = tokensAllocated;
        totalPurchased = totalPurchased.add(tokens);
        tokensPurchased[beneficiary] = tokensPurchased[beneficiary].add(tokens);

        if (halfVesting) {
            // half the tokens are put into a time-lock for a pre-defined period
            uint64 endTimeLock = uint64(startTime + PRECOMMITMENT_VESTING_SECONDS);

            // Sets a timelock for half the tokens allocated
            uint256 half = tokens.div(2);
            TokenTimelock timelock;

            if (vestedTokens[beneficiary] == 0x0) {
                timelock = new TokenTimelock(token, beneficiary, endTimeLock);
                vestedTokens[beneficiary] = address(timelock);
            } else {
                timelock = TokenTimelock(vestedTokens[beneficiary]);
            }

            token.safeTransfer(beneficiary, half);
            token.safeTransfer(timelock, tokens.sub(half));
        } else {
            // all tokens are sent to the participant's address
            token.safeTransfer(beneficiary, tokens);
        }

        AddedPrecommitment(
            beneficiary,
            tokens
        );
    }

    /**
     * @dev Additional finalization logic. Enables token transfers.
     */
    function finalization() internal {
        if (goalReached()) {
            burnUnsold();
            vault.close();
            token.enableTransfers();
        } else {
            vault.enableRefunds();
        }
    }

    /**
     *  @dev Low level token purchase. Only callable internally. Participants MUST be KYC-verified before purchase
     *  @param participant — The address of the token purchaser
     */
    function buyTokens(address participant) internal {
        require(kycVerified[participant]);
        require(now >= startTime);
        require(now < endTime);
        require(!isFinalized);
        require(msg.value != 0);

        // Calculate the token amount to be allocated
        uint256 weiAmount = msg.value;
        uint256 tokens = weiAmount.mul(rate);

        // Update state
        tokensPurchased[participant] = tokensPurchased[participant].add(tokens);
        totalPurchased = totalPurchased.add(tokens);

        require(totalPurchased <= SALE_CAP);
        require(tokensPurchased[participant] >= PURCHASER_MIN_TOKEN_CAP);

        if (now < startTime + 86400) {
            // if still during the first day of token sale, apply different max cap
            require(tokensPurchased[participant] <= PURCHASER_MAX_TOKEN_CAP_DAY1);
        } else {
            require(tokensPurchased[participant] <= PURCHASER_MAX_TOKEN_CAP);
        }

        // Sends ETH contribution to the RefundVault and tokens to participant
        vault.deposit.value(msg.value)(participant);
        token.safeTransfer(participant, tokens);

        TokenPurchase(
            msg.sender,
            participant,
            weiAmount,
            tokens
        );
    }

    /**
     * @dev Burn all remaining (unsold) tokens.
     *      This should be called after sale finalization
     */
    function burnUnsold() internal {
        // All tokens held by this contract get burned
        token.burn(token.balanceOf(this));
    }
}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"_ethPrice","type":"uint256"}],"name":"setEthPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"releaseLockFounders1","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"SALE_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MIN_TOKEN_UNIT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PURCHASER_MIN_TOKEN_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokensPurchased","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isVerifier","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_startTime","type":"uint64"}],"name":"setStartTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"releaseLockFoundation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"participant","type":"address"}],"name":"verifyKYC","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"vestedTokens","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"tokensAllocated","type":"uint256"},{"name":"halfVesting","type":"bool"}],"name":"addPrecommitment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"goal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"FOUNDATION_POOL_ADDR","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"FOUNDERS_POOL_ADDR","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOTAL_SUPPLY_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"COMMUNITY_POOL_TOKENS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PURCHASER_MAX_TOKEN_CAP_DAY1","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"FOUNDATION_POOL_TOKENS_VESTED","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_DECIMALS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PRECOMMITMENT_VESTING_SECONDS","outputs":[{"name":"","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"FOUNDERS_TOKENS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"releaseLockFounders2","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"LEGAL_EXPENSES_2_TOKENS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"FOUNDERS_TOKENS_VESTED_2","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"goalReached","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isFinalized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CROWDSALE_WALLET_ADDR","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"addVerifier","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"FOUNDERS_TOKENS_VESTED_1","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"FOUNDATION_POOL_TOKENS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"kycVerified","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"LEGAL_EXPENSES_ADDR_2","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"LEGAL_EXPENSES_1_TOKENS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"COMMUNITY_POOL_ADDR","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"participant","type":"address"}],"name":"claimRefund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"foundersTimelock1","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"foundersTimelock2","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"removeVerifier","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"participant","type":"address"}],"name":"releaseLock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"PURCHASER_MAX_TOKEN_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"LEGAL_EXPENSES_ADDR_1","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"FOUNDATION_POOL_ADDR_VEST","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalPurchased","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_endTime","type":"uint64"}],"name":"setEndTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"foundationTimelock","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_PRICE_THOUSANDTH","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":true,"inputs":[],"name":"vault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ethPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_startTime","type":"uint64"},{"name":"_endTime","type":"uint64"},{"name":"_goal","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"}],"name":"VerifiedKYC","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"},{"indexed":false,"name":"tokensAllocated","type":"uint256"}],"name":"AddedPrecommitment","type":"event"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
606060405261ca586005556103096006556000600755600b805460ff1916905534156200002b57600080fd5b604051606080620038f183398101604052808051919060200180519190602001805160008054600160a060020a03191633600160a060020a03161781559092509050806001604060020a03858116908516116200008757600080fd5b600160a060020a0333166000908152600160208190526040909120805460ff191690911790556b1363156bbee3016d70000000620000c462000749565b908152602001604051809103906000f0801515620000e157600080fd5b60028054600160a060020a031916600160a060020a039283161790819055166340c10f19306b1363156bbee3016d700000006000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156200017957600080fd5b6102c65a03f115156200018b57600080fd5b50505060405180515050600254600160a060020a0316637d64bcb46000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515620001f757600080fd5b6102c65a03f115156200020957600080fd5b505050604051805150506002805460a060020a60e060020a031916740100000000000000000000000000000000000000006001604060020a0388811691909102919091179091556003805467ffffffffffffffff1916918616919091179055600483905573e0831b1687c9fad3447a517f9371e66672505db06200028c6200075a565b600160a060020a039091168152602001604051809103906000f0801515620002b357600080fd5b600e8054600160a060020a031916600160a060020a039283161790556002547401000000000000000000000000000000000000000081046001604060020a031662ed4e00810194506301da9c0001925016734452d6454e777743a5ee233fbe873055008ff52883620003246200076b565b600160a060020a0393841681529190921660208201526001604060020a0390911660408083019190915260609091019051809103906000f08015156200036957600080fd5b600b805461010060a860020a031916610100600160a060020a039384160217905560025416734452d6454e777743a5ee233fbe873055008ff52882620003ae6200076b565b600160a060020a0393841681529190921660208201526001604060020a0390911660408083019190915260609091019051809103906000f0801515620003f357600080fd5b600c8054600160a060020a031916600160a060020a039283161790556002541673d0c24bb82e71a44ea770e84a3c79979f9233308d82620004336200076b565b600160a060020a0393841681529190921660208201526001604060020a0390911660408083019190915260609091019051809103906000f08015156200047857600080fd5b600d8054600160a060020a031916600160a060020a03928316179055600254620004d3911673d68947892ef4d94cdef7165b109cf6cd3f58a8e86b02d5296330eea14992680000640100000000620006a881026200151f1704565b6002546200051a90600160a060020a0316730506c5485ae54ab14c598ef16c459409e5d8fc036b0665d14f1378fde93c0000006401000000006200151f620006a882021704565b6002546200056190600160a060020a0316734452d6454e777743a5ee233fbe873055008ff5286b0110f837d8942a518a0000006401000000006200151f620006a882021704565b600254620005a790600160a060020a031673b57911380f13a0a9a6ba6562248674b5f56d7bfe6a2caaf1dd9f3a1ff60000006401000000006200151f620006a882021704565b600254620005ed90600160a060020a0316739be281cdcf34b3a01468ad1008139410ba5bb2fb6a04f68ca6d8cd91c60000006401000000006200151f620006a882021704565b600b546002546200062c91600160a060020a0391821691610100909104166b0110f837d8942a518a0000006401000000006200151f620006a882021704565b600c546002546200066591600160a060020a0391821691166b0110f837d8942a518a0000006401000000006200151f620006a882021704565b600d546002546200069d91600160a060020a0391821691166a5dbf4458cdddab0b9800006401000000006200151f620006a882021704565b50505050506200077c565b82600160a060020a031663a9059cbb83836000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156200071f57600080fd5b6102c65a03f115156200073157600080fd5b5050506040518051905015156200074457fe5b505050565b604051610ded806200221d83390190565b60405161060c806200300a83390190565b6040516102db806200361683390190565b611a91806200078c6000396000f3006060604052600436106102835763ffffffff60e060020a6000350416629f9262811461028e57806309d929d6146102a45780630b45e8db146102b75780632803d8e5146102dc57806328675325146102ef5780632ad92740146103025780632c4e722e146103215780633197cbb614610334578063331052181461036457806338812e58146103975780633888188d146103b757806338d16011146103ca5780633dee0397146103e95780633e5b5e3914610424578063401938831461044b5780634451967c1461045e57806346602ce71461047157806348931352146104845780634bb278f314610497578063515f128b146102b757806353fe7a59146104aa57806355176f51146104bd5780635b7f415c146104d057806365d5b48d146104e357806365f6d6a2146104f65780636a4113c7146105095780637619d22e1461051c578063769f194f146104f657806378e979251461052f5780637d3d6522146105425780638d4e4083146105555780638da5cb5b146105685780638e1b9f421461057b5780639000b3d61461058e57806397fdf5f2146104f65780639e43692c146105ad578063a5410a66146105c0578063abbcb24b146105df578063accfaeba146105f2578063bdf5fba114610605578063bffa55d514610618578063c0489af514610637578063c61f11031461064a578063ca2dfd0a1461065d578063d1c469161461067c578063d1ff535e1461069b578063daa0f79f146106ae578063e565b387146106c1578063e632c2f3146106d4578063e945c391146106e7578063ec0de26e14610707578063f0757a911461071a578063f2fde38b1461072d578063fbfa77cf1461074c578063fc0c546a1461075f578063ff186b2e14610772575b61028c33610785565b005b341561029957600080fd5b61028c600435610a1d565b34156102af57600080fd5b61028c610a92565b34156102c257600080fd5b6102ca610aec565b60405190815260200160405180910390f35b34156102e757600080fd5b6102ca610afc565b34156102fa57600080fd5b6102ca610b08565b341561030d57600080fd5b6102ca600160a060020a0360043516610b16565b341561032c57600080fd5b6102ca610b28565b341561033f57600080fd5b610347610b2e565b60405167ffffffffffffffff909116815260200160405180910390f35b341561036f57600080fd5b610383600160a060020a0360043516610b3e565b604051901515815260200160405180910390f35b34156103a257600080fd5b61028c67ffffffffffffffff60043516610b53565b34156103c257600080fd5b61028c610c01565b34156103d557600080fd5b61028c600160a060020a0360043516610c40565b34156103f457600080fd5b610408600160a060020a0360043516610cba565b604051600160a060020a03909116815260200160405180910390f35b341561042f57600080fd5b61028c600160a060020a03600435166024356044351515610cd5565b341561045657600080fd5b6102ca610f63565b341561046957600080fd5b610408610f69565b341561047c57600080fd5b610408610f81565b341561048f57600080fd5b6102ca610f99565b34156104a257600080fd5b61028c610fa9565b34156104b557600080fd5b6102ca611036565b34156104c857600080fd5b6102ca611044565b34156104db57600080fd5b6102ca611053565b34156104ee57600080fd5b610347611058565b341561050157600080fd5b6102ca61105f565b341561051457600080fd5b61028c61106f565b341561052757600080fd5b6102ca6110ae565b341561053a57600080fd5b6103476110bd565b341561054d57600080fd5b6103836110d4565b341561056057600080fd5b6103836110df565b341561057357600080fd5b6104086110e8565b341561058657600080fd5b6104086110f7565b341561059957600080fd5b61028c600160a060020a036004351661110f565b34156105b857600080fd5b6102ca611151565b34156105cb57600080fd5b610383600160a060020a0360043516611161565b34156105ea57600080fd5b610408611176565b34156105fd57600080fd5b6102ca61118e565b341561061057600080fd5b61040861119d565b341561062357600080fd5b61028c600160a060020a03600435166111b5565b341561064257600080fd5b61040861123f565b341561065557600080fd5b610408611253565b341561066857600080fd5b61028c600160a060020a0360043516611262565b341561068757600080fd5b61028c600160a060020a036004351661129e565b34156106a657600080fd5b6102ca611333565b34156106b957600080fd5b610408611341565b34156106cc57600080fd5b610408611359565b34156106df57600080fd5b6102ca611371565b34156106f257600080fd5b61028c67ffffffffffffffff60043516611377565b341561071257600080fd5b610408611407565b341561072557600080fd5b6102ca611416565b341561073857600080fd5b61028c600160a060020a036004351661141b565b341561075757600080fd5b6104086114b6565b341561076a57600080fd5b6104086114c5565b341561077d57600080fd5b6102ca6114d4565b600160a060020a038116600090815260086020526040812054819060ff1615156107ae57600080fd5b60025460a060020a900467ffffffffffffffff164210156107ce57600080fd5b60035467ffffffffffffffff1642106107e657600080fd5b600b5460ff16156107f657600080fd5b34151561080257600080fd5b60055434925061081990839063ffffffff6114da16565b600160a060020a038416600090815260096020526040902054909150610845908263ffffffff61151016565b600160a060020a038416600090815260096020526040902055600754610871908263ffffffff61151016565b60078190556b0665d14f1378fde93c00000090111561088f57600080fd5b600160a060020a0383166000908152600960205260409020546901695d556204b1e800009010156108bf57600080fd5b6002546201518067ffffffffffffffff60a060020a9092048216011642101561091757600160a060020a038316600090815260096020526040902054692a5a058fc295ed00000090111561091257600080fd5b610947565b600160a060020a03831660009081526009602052604090205469fe1c215e8f838e00000090111561094757600080fd5b600e54600160a060020a031663f340fa01348560405160e060020a63ffffffff8516028152600160a060020a0390911660048201526024016000604051808303818588803b151561099757600080fd5b6125ee5a03f115156109a857600080fd5b50506002546109ca9250600160a060020a03169050848363ffffffff61151f16565b82600160a060020a031633600160a060020a03167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18848460405191825260208201526040908101905180910390a3505050565b60005433600160a060020a03908116911614610a3857600080fd5b60025460a060020a900467ffffffffffffffff164210610a5757600080fd5b60008111610a6457600080fd5b6006819055610a8c600f610a80836103e863ffffffff6114da16565b9063ffffffff61159f16565b60055550565b600b546101009004600160a060020a03166386d1a69f6040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515610ad657600080fd5b6102c65a03f11515610ae757600080fd5b505050565b6b0665d14f1378fde93c00000081565b670de0b6b3a764000081565b6901695d556204b1e8000081565b60096020526000908152604090205481565b60055481565b60035467ffffffffffffffff1681565b60016020526000908152604090205460ff1681565b60005433600160a060020a03908116911614610b6e57600080fd5b60025460a060020a900467ffffffffffffffff164210610b8d57600080fd5b4267ffffffffffffffff821611610ba357600080fd5b60035467ffffffffffffffff90811690821610610bbf57600080fd5b6002805467ffffffffffffffff90921660a060020a027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600d54600160a060020a03166386d1a69f6040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515610ad657600080fd5b600160a060020a03331660009081526001602052604090205460ff161515610c6757600080fd5b600160a060020a03811660008181526008602052604090819020805460ff191660011790557f98cc2c535b6060b431d35630893358290dcd38687f6487e2882d331955020805905160405180910390a250565b600a60205260009081526040902054600160a060020a031681565b600160a060020a03331660009081526001602052604081205481908190819060ff161515610d0257600080fd5b60025460a060020a900467ffffffffffffffff164210610d2157600080fd5b600160a060020a0387166000908152600860205260409020805460ff19166001179055600754869450610d5a908563ffffffff61151016565b600755600160a060020a038716600090815260096020526040902054610d86908563ffffffff61151016565b600160a060020a0388166000908152600960205260409020558415610f00576002805467ffffffffffffffff60a060020a9091041662ed4e00019350610dd390859063ffffffff61159f16565b600160a060020a038089166000908152600a6020526040902054919350161515610e9457600254600160a060020a03168784610e0d61177a565b600160a060020a03938416815291909216602082015267ffffffffffffffff90911660408083019190915260609091019051809103906000f0801515610e5257600080fd5b600160a060020a038881166000908152600a60205260409020805473ffffffffffffffffffffffffffffffffffffffff19169183169190911790559050610eb1565b50600160a060020a038087166000908152600a6020526040902054165b600254610ece90600160a060020a0316888463ffffffff61151f16565b610efb81610ee2868563ffffffff6115b616565b600254600160a060020a0316919063ffffffff61151f16565b610f1d565b600254610f1d90600160a060020a0316888663ffffffff61151f16565b86600160a060020a03167fd4cab39bf07f5b24c1fa485061de865fae1bb7f0bcf434dd70bf1a33689ca4068560405190815260200160405180910390a250505050505050565b60045481565b73d68947892ef4d94cdef7165b109cf6cd3f58a8e881565b734452d6454e777743a5ee233fbe873055008ff52881565b6b1363156bbee3016d7000000081565b60005433600160a060020a03908116911614610fc457600080fd5b60025460a060020a900467ffffffffffffffff164211610fe357600080fd5b600b5460ff1615610ff357600080fd5b610ffb6115c8565b7f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768160405160405180910390a1600b805460ff19166001179055565b692a5a058fc295ed00000081565b6a5dbf4458cdddab0b98000081565b601281565b62ed4e0081565b6b0110f837d8942a518a00000081565b600c54600160a060020a03166386d1a69f6040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515610ad657600080fd5b6a04f68ca6d8cd91c600000081565b60025460a060020a900467ffffffffffffffff1681565b600454600754101590565b600b5460ff1681565b600054600160a060020a031681565b73e0831b1687c9fad3447a517f9371e66672505db081565b60005433600160a060020a0390811691161461112a57600080fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b6b02d5296330eea1499268000081565b60086020526000908152604090205460ff1681565b739be281cdcf34b3a01468ad1008139410ba5bb2fb81565b6a2caaf1dd9f3a1ff600000081565b730506c5485ae54ab14c598ef16c459409e5d8fc0381565b600b5460ff1615156111c657600080fd5b6111ce6110d4565b156111d857600080fd5b600e54600160a060020a031663fa89401a8260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b151561122857600080fd5b6102c65a03f1151561123957600080fd5b50505050565b600b546101009004600160a060020a031681565b600c54600160a060020a031681565b60005433600160a060020a0390811691161461127d57600080fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b600160a060020a038082166000908152600a602052604081205490911615156112c657600080fd5b50600160a060020a038082166000908152600a602052604090819020549091169081906386d1a69f90518163ffffffff1660e060020a028152600401600060405180830381600087803b151561131b57600080fd5b6102c65a03f1151561132c57600080fd5b5050505050565b69fe1c215e8f838e00000081565b73b57911380f13a0a9a6ba6562248674b5f56d7bfe81565b73d0c24bb82e71a44ea770e84a3c79979f9233308d81565b60075481565b60005433600160a060020a0390811691161461139257600080fd5b60035467ffffffffffffffff1642106113aa57600080fd5b4267ffffffffffffffff8216116113c057600080fd5b60025467ffffffffffffffff60a060020a9091048116908216116113e357600080fd5b6003805467ffffffffffffffff191667ffffffffffffffff92909216919091179055565b600d54600160a060020a031681565b600f81565b60005433600160a060020a0390811691161461143657600080fd5b600160a060020a038116151561144b57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600e54600160a060020a031681565b600254600160a060020a031681565b60065481565b6000808315156114ed5760009150611509565b508282028284828115156114fd57fe5b041461150557fe5b8091505b5092915050565b60008282018381101561150557fe5b82600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561157c57600080fd5b6102c65a03f1151561158d57600080fd5b505050604051805190501515610ae757fe5b60008082848115156115ad57fe5b04949350505050565b6000828211156115c257fe5b50900390565b6115d06110d4565b15611689576115dd6116ca565b600e54600160a060020a03166343d726d66040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561161c57600080fd5b6102c65a03f1151561162d57600080fd5b5050600254600160a060020a0316905063af35c6c76040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561167057600080fd5b6102c65a03f1151561168157600080fd5b5050506116c8565b600e54600160a060020a0316638c52dc416040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515610ad657600080fd5b565b600254600160a060020a03166342966c68816370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561172957600080fd5b6102c65a03f1151561173a57600080fd5b5050506040518051905060405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b1515610ad657600080fd5b6040516102db8061178b8339019056006060604052341561000f57600080fd5b6040516060806102db83398101604052808051919060200180519190602001805191505042811161003f57600080fd5b60008054600160a060020a03948516600160a060020a031991821617909155600180549390941692169190911790915560025561025a806100816000396000f3006060604052600436106100485763ffffffff60e060020a60003504166338af3eed811461004d57806386d1a69f1461007c578063b91d400114610091578063fc0c546a146100b6575b600080fd5b341561005857600080fd5b6100606100c9565b604051600160a060020a03909116815260200160405180910390f35b341561008757600080fd5b61008f6100d8565b005b341561009c57600080fd5b6100a4610194565b60405190815260200160405180910390f35b34156100c157600080fd5b61006061019a565b600154600160a060020a031681565b6002546000904210156100ea57600080fd5b60008054600160a060020a0316906370a082319030906040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561014557600080fd5b6102c65a03f1151561015657600080fd5b50505060405180519150506000811161016e57600080fd5b60015460005461019191600160a060020a0391821691168363ffffffff6101a916565b50565b60025481565b600054600160a060020a031681565b82600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561020657600080fd5b6102c65a03f1151561021757600080fd5b50505060405180519050151561022957fe5b5050505600a165627a7a72305820eeace2909ad96851c2cbf01b9bbc7140e82c263f6ff3790a8a0e12d0640aff770029a165627a7a72305820c3ad1fcd1df61752f4ec3ce0d3bdcac8b42dc2436f35caf58d05e1ba22122dcb002960606040526003805460a060020a60ff02191690556005805460ff19169055341561002957600080fd5b604051602080610ded8339810160405280805160038054600160a060020a03191633600160a060020a031617905560045550610d8190508061006c6000396000f3006060604052600436106101065763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b811461010b57806306fdde0314610132578063095ea7b3146101bc57806318160ddd146101de57806323b872dd14610203578063313ce5671461022b578063355274ea1461023e57806340c10f191461025157806342966c6814610273578063661884631461028b57806370a08231146102ad5780637d64bcb4146102cc5780638da5cb5b146102df57806395d89b411461030e578063a9059cbb14610321578063af35c6c714610343578063d73dd62314610356578063dd62ed3e14610378578063f2fde38b1461039d575b600080fd5b341561011657600080fd5b61011e6103bc565b604051901515815260200160405180910390f35b341561013d57600080fd5b6101456103cc565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610181578082015183820152602001610169565b50505050905090810190601f1680156101ae5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101c757600080fd5b61011e600160a060020a0360043516602435610403565b34156101e957600080fd5b6101f161046f565b60405190815260200160405180910390f35b341561020e57600080fd5b61011e600160a060020a0360043581169060243516604435610475565b341561023657600080fd5b6101f16104ba565b341561024957600080fd5b6101f16104bf565b341561025c57600080fd5b61011e600160a060020a03600435166024356104c5565b341561027e57600080fd5b61028960043561052c565b005b341561029657600080fd5b61011e600160a060020a03600435166024356105ed565b34156102b857600080fd5b6101f1600160a060020a03600435166106e7565b34156102d757600080fd5b61011e610702565b34156102ea57600080fd5b6102f261078d565b604051600160a060020a03909116815260200160405180910390f35b341561031957600080fd5b61014561079c565b341561032c57600080fd5b61011e600160a060020a03600435166024356107d3565b341561034e57600080fd5b610289610816565b341561036157600080fd5b61011e600160a060020a0360043516602435610840565b341561038357600080fd5b6101f1600160a060020a03600435811690602435166108e4565b34156103a857600080fd5b610289600160a060020a036004351661090f565b60035460a060020a900460ff1681565b60408051908101604052600781527f53656c664b657900000000000000000000000000000000000000000000000000602082015281565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60005481565b6005546000908490839060ff168061049a5750600354600160a060020a038381169116145b15156104a557600080fd5b6104b08686866109aa565b9695505050505050565b601281565b60045481565b60035460009033600160a060020a039081169116146104e357600080fd5b60035460a060020a900460ff16156104fa57600080fd5b600454600054610510908463ffffffff610b2c16565b111561051b57600080fd5b6105258383610b3b565b9392505050565b60035460009033600160a060020a0390811691161461054a57600080fd5b6000821161055757600080fd5b5033600160a060020a03811660009081526001602052604090205461057c9083610c48565b600160a060020a038216600090815260016020526040812091909155546105a9908363ffffffff610c4816565b600055600160a060020a0381167f696de425f79f4a40bc6d2122ca50507f0efbeabbff86a84871b7196ab8ea8df78360405190815260200160405180910390a25050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120548083111561064a57600160a060020a033381166000908152600260209081526040808320938816835292905290812055610681565b61065a818463ffffffff610c4816565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a35060019392505050565b600160a060020a031660009081526001602052604090205490565b60035460009033600160a060020a0390811691161461072057600080fd5b60035460a060020a900460ff161561073757600080fd5b6003805474ff0000000000000000000000000000000000000000191660a060020a1790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a150600190565b600354600160a060020a031681565b60408051908101604052600381527f4b45590000000000000000000000000000000000000000000000000000000000602082015281565b6005546000903390839060ff16806107f85750600354600160a060020a038381169116145b151561080357600080fd5b61080d8585610c5a565b95945050505050565b60035433600160a060020a0390811691161461083157600080fd5b6005805460ff19166001179055565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054610878908363ffffffff610b2c16565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60035433600160a060020a0390811691161461092a57600080fd5b600160a060020a038116151561093f57600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000600160a060020a03831615156109c157600080fd5b600160a060020a0384166000908152600160205260409020548211156109e657600080fd5b600160a060020a0380851660009081526002602090815260408083203390941683529290522054821115610a1957600080fd5b600160a060020a038416600090815260016020526040902054610a42908363ffffffff610c4816565b600160a060020a038086166000908152600160205260408082209390935590851681522054610a77908363ffffffff610b2c16565b600160a060020a03808516600090815260016020908152604080832094909455878316825260028152838220339093168252919091522054610abf908363ffffffff610c4816565b600160a060020a03808616600081815260026020908152604080832033861684529091529081902093909355908516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b60008282018381101561052557fe5b60035460009033600160a060020a03908116911614610b5957600080fd5b60035460a060020a900460ff1615610b7057600080fd5b600054610b83908363ffffffff610b2c16565b6000908155600160a060020a038416815260016020526040902054610bae908363ffffffff610b2c16565b600160a060020a0384166000818152600160205260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859084905190815260200160405180910390a2600160a060020a03831660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a350600192915050565b600082821115610c5457fe5b50900390565b6000600160a060020a0383161515610c7157600080fd5b600160a060020a033316600090815260016020526040902054821115610c9657600080fd5b600160a060020a033316600090815260016020526040902054610cbf908363ffffffff610c4816565b600160a060020a033381166000908152600160205260408082209390935590851681522054610cf4908363ffffffff610b2c16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a3506001929150505600a165627a7a72305820a0db4a7417f51dac893a505484403c713964d24a776ca71d61c0b642f6760aae00296060604052341561000f57600080fd5b60405160208061060c8339810160405280805160008054600160a060020a03191633600160a060020a039081169190911790915590925082161515905061005557600080fd5b60028054600160a060020a031916600160a060020a03929092169190911760a060020a60ff021916905561057e8061008e6000396000f3006060604052600436106100985763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166343d726d6811461009d578063521eb273146100b25780638c52dc41146100e15780638da5cb5b146100f4578063c19d93fb14610107578063cb13cddb1461013e578063f2fde38b1461016f578063f340fa011461018e578063fa89401a146101a2575b600080fd5b34156100a857600080fd5b6100b06101c1565b005b34156100bd57600080fd5b6100c561029c565b604051600160a060020a03909116815260200160405180910390f35b34156100ec57600080fd5b6100b06102ab565b34156100ff57600080fd5b6100c561033c565b341561011257600080fd5b61011a61034b565b6040518082600281111561012a57fe5b60ff16815260200191505060405180910390f35b341561014957600080fd5b61015d600160a060020a036004351661035b565b60405190815260200160405180910390f35b341561017a57600080fd5b6100b0600160a060020a036004351661036d565b6100b0600160a060020a0360043516610408565b34156101ad57600080fd5b6100b0600160a060020a036004351661048c565b60005433600160a060020a039081169116146101dc57600080fd5b60006002805460a060020a900460ff16908111156101f657fe5b1461020057600080fd5b6002805474ff00000000000000000000000000000000000000001916740200000000000000000000000000000000000000001790557f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1600254600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561029a57600080fd5b565b600254600160a060020a031681565b60005433600160a060020a039081169116146102c657600080fd5b60006002805460a060020a900460ff16908111156102e057fe5b146102ea57600080fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a1790557f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8960405160405180910390a1565b600054600160a060020a031681565b60025460a060020a900460ff1681565b60016020526000908152604090205481565b60005433600160a060020a0390811691161461038857600080fd5b600160a060020a038116151561039d57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60005433600160a060020a0390811691161461042357600080fd5b60006002805460a060020a900460ff169081111561043d57fe5b1461044757600080fd5b600160a060020a038116600090815260016020526040902054610470903463ffffffff61053c16565b600160a060020a03909116600090815260016020526040902055565b600060016002805460a060020a900460ff16908111156104a857fe5b146104b257600080fd5b50600160a060020a038116600081815260016020526040808220805492905590919082156108fc0290839051600060405180830381858888f1935050505015156104fb57600080fd5b81600160a060020a03167fd7dee2702d63ad89917b6a4da9981c90c4d24f8c2bdfd64c604ecae57d8d06518260405190815260200160405180910390a25050565b60008282018381101561054b57fe5b93925050505600a165627a7a72305820b275974688f037b488146289ceb926584b3323febeb882aeae13bf10f90e62ab00296060604052341561000f57600080fd5b6040516060806102db83398101604052808051919060200180519190602001805191505042811161003f57600080fd5b60008054600160a060020a03948516600160a060020a031991821617909155600180549390941692169190911790915560025561025a806100816000396000f3006060604052600436106100485763ffffffff60e060020a60003504166338af3eed811461004d57806386d1a69f1461007c578063b91d400114610091578063fc0c546a146100b6575b600080fd5b341561005857600080fd5b6100606100c9565b604051600160a060020a03909116815260200160405180910390f35b341561008757600080fd5b61008f6100d8565b005b341561009c57600080fd5b6100a4610194565b60405190815260200160405180910390f35b34156100c157600080fd5b61006061019a565b600154600160a060020a031681565b6002546000904210156100ea57600080fd5b60008054600160a060020a0316906370a082319030906040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561014557600080fd5b6102c65a03f1151561015657600080fd5b50505060405180519150506000811161016e57600080fd5b60015460005461019191600160a060020a0391821691168363ffffffff6101a916565b50565b60025481565b600054600160a060020a031681565b82600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561020657600080fd5b6102c65a03f1151561021757600080fd5b50505060405180519050151561022957fe5b5050505600a165627a7a72305820eeace2909ad96851c2cbf01b9bbc7140e82c263f6ff3790a8a0e12d0640aff770029000000000000000000000000000000000000000000000000000000005a5a9d80000000000000000000000000000000000000000000000000000000005a72588000000000000000000000000000000000000000000089dd0a1aa2c008994d6800

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

-----Decoded View---------------
Found 3 constructor arguments :
Arg [0] : 000000000000000000000000000000000000000000000000000000005a5a9d80
Arg [1] : 000000000000000000000000000000000000000000000000000000005a725880
Arg [2] : 00000000000000000000000000000000000000000089dd0a1aa2c008994d6800


   Swarm Source:
bzzr://eeace2909ad96851c2cbf01b9bbc7140e82c263f6ff3790a8a0e12d0640aff77

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.