Sponsored:   INLOCK - Put Your BTC, Get Your Cash! Crypto Backed Loans, 3.2M Raised Already. Join NOW!
Contract Overview
Balance: 0.007999999999999996 Ether
Ether Value: $1.69 (@ $211.27/ETH)
Transactions: 123 txns
 Latest 25 txns From a total of 123 Transactions

TxHash Age From To Value [TxFee]
0x77647d52e819d665f562f5a01682df70ac4c061a73263b99fce790073252ee5e104 days 20 hrs ago0xbea62df0898a172b53b264abb6e9151cf7bb4a6f  IN   0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.001406751
0xbe971e431efae9731b6f79f08c69111e5372331e344988212c6406562a8434e7104 days 20 hrs ago0xbea62df0898a172b53b264abb6e9151cf7bb4a6f  IN   0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.002418631
0x93de6a35c21295c88059b93161c64505ecda649017db986bd27e242f590a3004109 days 8 hrs ago0xe4a0fee1b99c2c0f118a2863e96a5eb54ddfea69  IN   0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.00174505
0xfabae0b40665c10511c3f9b5a80c8897ef549416568fc1eaa6199a3ac9a1762e110 days 2 hrs ago0xe4a0fee1b99c2c0f118a2863e96a5eb54ddfea69  IN   0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.00122345
0x07ef2ef8a8a85a03aea360acc061bef65a102f336ae30a4cbc3cbe1f1b7af547110 days 2 hrs ago0xe4a0fee1b99c2c0f118a2863e96a5eb54ddfea69  IN   0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.00122345
0x29d982f9881fb8cd34c1cb4bc69d63d140d3f6b4d843c6d7bfa8429296a6cc38111 days 9 hrs ago0x337ba13cbc3754ca94347198a72e3959120b7f0e  IN   0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.0005995
0x8388c2c40427dee1bd9da686cdec4be47f468f7d4f0ca24868feabb0e0a658c0112 days 15 hrs ago0x1c7230f4c949d18e30d04ec89b770c62c7784237  IN   0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.000732921
0x0290f5b2c578f8c68925523f312282fbd7e557742e199485fd180b513e62f660112 days 19 hrs ago0xe34701c00af72ecbebca237c7f84387afd81e0e2  IN   0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.001430941
0x75df022e991683129995ac76577b8e341431cda9d139c01eade08643f2503da8112 days 22 hrs ago0x0aa18298021d0d8edcf2622298ce57136d741b16  IN   0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.000732921
0x91ee90a1d4f02d2e715290f59b684a3f5364be27a964297a635fe636d609a721113 days 6 hrs ago0x7f5e6bbee874fc5b6fa21cd5a23da009f62f827f  IN   0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.000209406
0x0927821dfdc177928f552c87fe0b96bd8bc42ef5749a5ac5b475190e2141d817113 days 8 hrs ago0xaa85a3c456212a198a9627e157ca2c2ce0ed8ab6  IN   0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.00209406
0x4d4ef3ac2d897a5a473d826cb30b2dd0ccae06b2afeb79c6e65076cbbbca68c5113 days 8 hrs ago0xfe66ce5c1bfba818bca3a13118b9c10da1182d34  IN   0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.001430941
0x3379f436a0f009739f86f3c14707bc68b69c3ddf437975416c8d56ff3ce86f86113 days 8 hrs ago0x06cee304f7666c151fec668218e56029dd229291  IN   0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.00104703
0x762eaf5962596e080518cc1453be58c0eba26c0454639f0e72fe41ce9486a53b113 days 8 hrs ago0xdb7efbcdee492b77877dfca5e473415d8b0e5ce5  IN   0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.000902
0x3c8f11da3ff586b9ca3c1c6fb8b23773b67770141a5a9c68fd3c0f4eb50e7838113 days 9 hrs ago0xa57a1f74361cf67ad98a91a763d1881998a5fe37  IN   0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.001430941
0xa3fa93b97f7cfd3b4ab8b779d4868e0660c2881079e84a2752233776c70bd463113 days 9 hrs ago0xc99c73b4e4274ad270c3b6b4022a49c4a45f885f  IN   0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.001361139
0x8efaf629dabf7f7de1991927a2c4cc2a4f49205cd9228f0d29cfe148de93369d113 days 10 hrs ago0xbf82999e0efde489f72f0c93a4bbedb13b4438c9  IN   0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.001430941
0xffe9fb273718e9b296bae9a660944e8fa96d1cafc1508266dbeda53251536fcf113 days 11 hrs ago0x30906ed1e6e6e899017f6fc64723a3caa4cb7d14  IN   0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.00034901
0x0a53160ef0b5b1e545db4d956d535ccd39fe74e1982059f40c48e393115ed440113 days 11 hrs ago0xdda887c3664c80316aac1e044b3f3876e875ca12  IN   0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.00174505
0x8169fe4363cb5efcb0740805a325f2907424e0d8101471c5c95f1bd0b5fe7bcd113 days 11 hrs ago0x4cb0334c24ebfbd4a577ea5b2be9a670ba98aaed  IN   0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.00101316
0x6fb8e75cd94398ff6997fe9fbf2d193c3e4ecc4358f028d920acc665ad52e5ff113 days 11 hrs ago0x4cb0334c24ebfbd4a577ea5b2be9a670ba98aaed  IN   0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.00139604
0xfe0f2be14af8793e054867bea5f7f887fb4b11fb1a5e7e3b252ec05187b1d769113 days 11 hrs ago0xf8d8e8dca72d41aba3e24518194e9eaf03fdda86  IN   0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.001710149
0x5b097b582c3fd21a015449624aec496769829e6797156a87e694b00531d7dab2113 days 12 hrs ago0xd472b782a8943106b867625033b28096f466f5d9  IN   0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.001430941
0xc638b6592a6eb914cd6ba91b3cd56047572c52e993c560b10c26ead327d70bad113 days 12 hrs ago0x48be2a7d0d56e0afcb70c940e07ff29bde955264  IN   0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.001430941
0x63a03f4e1db91bafc806d23af9b1b5fbb819797609d21709ae06c3580b97a6a2113 days 12 hrs ago0xff0ce2586bb1f3ae28fbc08d2073de408e23dda8  IN   0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.001430941
[ 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
0x77647d52e819d665f562f5a01682df70ac4c061a73263b99fce790073252ee5e5741177104 days 20 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0xa521de135b265c9f6e65ab467eaff96113faa62d4.69 Ether
0xbe971e431efae9731b6f79f08c69111e5372331e344988212c6406562a8434e75741141104 days 20 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0xa521de135b265c9f6e65ab467eaff96113faa62d4 wei
0x93de6a35c21295c88059b93161c64505ecda649017db986bd27e242f590a30045715689109 days 8 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0xe4a0fee1b99c2c0f118a2863e96a5eb54ddfea690.21 Ether
0x29d982f9881fb8cd34c1cb4bc69d63d140d3f6b4d843c6d7bfa8429296a6cc385704197111 days 9 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0x337ba13cbc3754ca94347198a72e3959120b7f0e0.27 Ether
0x8388c2c40427dee1bd9da686cdec4be47f468f7d4f0ca24868feabb0e0a658c05697362112 days 15 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0x1c7230f4c949d18e30d04ec89b770c62c77842371.641350924 Ether
0x0290f5b2c578f8c68925523f312282fbd7e557742e199485fd180b513e62f6605696300112 days 19 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0xe34701c00af72ecbebca237c7f84387afd81e0e20.2 Ether
0x75df022e991683129995ac76577b8e341431cda9d139c01eade08643f2503da85695713112 days 22 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0x0aa18298021d0d8edcf2622298ce57136d741b161.091679356 Ether
0x91ee90a1d4f02d2e715290f59b684a3f5364be27a964297a635fe636d609a7215693637113 days 6 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0x7f5e6bbee874fc5b6fa21cd5a23da009f62f827f0.31 Ether
0x0927821dfdc177928f552c87fe0b96bd8bc42ef5749a5ac5b475190e2141d8175693349113 days 8 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0xaa85a3c456212a198a9627e157ca2c2ce0ed8ab610.5 Ether
0x4d4ef3ac2d897a5a473d826cb30b2dd0ccae06b2afeb79c6e65076cbbbca68c55693301113 days 8 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0xfe66ce5c1bfba818bca3a13118b9c10da1182d340.99 Ether
0x3379f436a0f009739f86f3c14707bc68b69c3ddf437975416c8d56ff3ce86f865693182113 days 8 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0x06cee304f7666c151fec668218e56029dd2292910.617401225 Ether
0x3c8f11da3ff586b9ca3c1c6fb8b23773b67770141a5a9c68fd3c0f4eb50e78385693063113 days 9 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0xa57a1f74361cf67ad98a91a763d1881998a5fe3733 Ether
0xa3fa93b97f7cfd3b4ab8b779d4868e0660c2881079e84a2752233776c70bd4635692988113 days 9 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0xc99c73b4e4274ad270c3b6b4022a49c4a45f885f1.1 Ether
0x8efaf629dabf7f7de1991927a2c4cc2a4f49205cd9228f0d29cfe148de93369d5692809113 days 10 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0xbf82999e0efde489f72f0c93a4bbedb13b4438c90.654 Ether
0xffe9fb273718e9b296bae9a660944e8fa96d1cafc1508266dbeda53251536fcf5692540113 days 11 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0x30906ed1e6e6e899017f6fc64723a3caa4cb7d140.15 Ether
0x0a53160ef0b5b1e545db4d956d535ccd39fe74e1982059f40c48e393115ed4405692495113 days 11 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0xdda887c3664c80316aac1e044b3f3876e875ca120.1 Ether
0x6fb8e75cd94398ff6997fe9fbf2d193c3e4ecc4358f028d920acc665ad52e5ff5692448113 days 11 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0x4cb0334c24ebfbd4a577ea5b2be9a670ba98aaed1.9 Ether
0xfe0f2be14af8793e054867bea5f7f887fb4b11fb1a5e7e3b252ec05187b1d7695692443113 days 11 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0xf8d8e8dca72d41aba3e24518194e9eaf03fdda863 Ether
0x5b097b582c3fd21a015449624aec496769829e6797156a87e694b00531d7dab25692405113 days 12 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0xd472b782a8943106b867625033b28096f466f5d90.84365443 Ether
0xc638b6592a6eb914cd6ba91b3cd56047572c52e993c560b10c26ead327d70bad5692390113 days 12 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0x48be2a7d0d56e0afcb70c940e07ff29bde9552641 Ether
0x63a03f4e1db91bafc806d23af9b1b5fbb819797609d21709ae06c3580b97a6a25692381113 days 12 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0xff0ce2586bb1f3ae28fbc08d2073de408e23dda80.25 Ether
0xc863a9176cac36fa169018cc4a2ce5ab45925072293e215081c7234dec8e32dd5692237113 days 12 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0x69fb1085060a164fafce64b4b54072f6957872231 Ether
0xbd9f3660b0d0de509467f42afd87c47270a9441594d90d5693d2fb3ca9de3cc25692184113 days 13 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0x1d2ee3b4c31ec6b384372789b43646e3835e407716 Ether
0xeb66e34babf943d98d49490670905d430e1e78da851dbf23c090dcdd5aab772e5692183113 days 13 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0x378fa81701adadb602e40721a09708473ef02b9a1 Ether
0x2bb76d41048dfd5fff73e77521a513ffdc275efc000d78f9b5f5a34164443bfa5692179113 days 13 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0xef58d61da8b836eff146430cb93e7e82b8e162b91.2257262 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: Crowdsale
Compiler Text: v0.4.18+commit.9cf6e910
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.18;

// File: zeppelin-solidity/contracts/ownership/Ownable.sol

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

}

// File: zeppelin-solidity/contracts/lifecycle/Pausable.sol

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
  event Pause();
  event Unpause();

  bool public paused = false;


  /**
   * @dev Modifier to make a function callable only when the contract is not paused.
   */
  modifier whenNotPaused() {
    require(!paused);
    _;
  }

  /**
   * @dev Modifier to make a function callable only when the contract is paused.
   */
  modifier whenPaused() {
    require(paused);
    _;
  }

  /**
   * @dev called by the owner to pause, triggers stopped state
   */
  function pause() onlyOwner whenNotPaused public {
    paused = true;
    Pause();
  }

  /**
   * @dev called by the owner to unpause, returns to normal state
   */
  function unpause() onlyOwner whenPaused public {
    paused = false;
    Unpause();
  }
}

// File: zeppelin-solidity/contracts/math/SafeMath.sol

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

// File: zeppelin-solidity/contracts/token/ERC20Basic.sol

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

// File: zeppelin-solidity/contracts/token/BasicToken.sol

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

}

// File: zeppelin-solidity/contracts/token/ERC20.sol

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

// File: zeppelin-solidity/contracts/token/StandardToken.sol

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

}

// File: contracts/Token.sol

contract Token is StandardToken, Pausable {
    string constant public name = "Bace Token";
    string constant public symbol = "BACE";
    uint8 constant public decimals =  18;

    uint256 constant public INITIAL_TOTAL_SUPPLY = 100 * 1E6 * (uint256(10) ** (decimals));

    address private addressIco;

    modifier onlyIco() {
        require(msg.sender == addressIco);
        _;
    }

    /**
    * @dev Create BACE Token contract and set pause
    * @param _ico The address of ICO contract.
    */
    function Token(address _ico) public {
        require(_ico != address(0));
        addressIco = _ico;

        totalSupply = totalSupply.add(INITIAL_TOTAL_SUPPLY);
        balances[_ico] = balances[_ico].add(INITIAL_TOTAL_SUPPLY);
        Transfer(address(0), _ico, INITIAL_TOTAL_SUPPLY);

        pause();
    }

    /**
    * @dev Transfer token for a specified address with pause feature for owner.
    * @dev Only applies when the transfer is allowed by the owner.
    * @param _to The address to transfer to.
    * @param _value The amount to be transferred.
    */
    function transfer(address _to, uint256 _value) whenNotPaused public returns (bool) {
        super.transfer(_to, _value);
    }

    /**
    * @dev Transfer tokens from one address to another with pause feature for owner.
    * @dev Only applies when the transfer is allowed by the owner.
    * @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) whenNotPaused public returns (bool) {
        super.transferFrom(_from, _to, _value);
    }

    /**
    * @dev Transfer tokens from ICO address to another address.
    * @param _to The address to transfer to.
    * @param _value The amount to be transferred.
    */
    function transferFromIco(address _to, uint256 _value) onlyIco public returns (bool) {
        super.transfer(_to, _value);
    }

    /**
    * @dev Burn remaining tokens from the ICO balance.
    */
    function burnFromIco() onlyIco public {
        uint256 remainingTokens = balanceOf(addressIco);
        balances[addressIco] = balances[addressIco].sub(remainingTokens);
        totalSupply = totalSupply.sub(remainingTokens);
        Transfer(addressIco, address(0), remainingTokens);
    }

    /**
    * @dev Refund tokens from the investor balance.
    * @dev Function is needed for Refund investors ETH, if pre-ICO has failed.
    */
    function refund(address _to, uint256 _value) onlyIco public {
        require(_value <= balances[_to]);

        address addr = _to;
        balances[addr] = balances[addr].sub(_value);
        balances[addressIco] = balances[addressIco].add(_value);
        Transfer(_to, addressIco, _value);
    }
}

// File: contracts/Whitelist.sol

/**
 * @title Whitelist contract
 * @dev Whitelist for wallets.
*/
contract Whitelist is Ownable {
    mapping(address => bool) whitelist;

    uint256 public whitelistLength = 0;
	
	address private addressApi;
	
	modifier onlyPrivilegeAddresses {
        require(msg.sender == addressApi || msg.sender == owner);
        _;
    }

    /**
    * @dev Set backend Api address.
    * @dev Accept request from owner only.
    * @param _api The address of backend API.
    */
    function setApiAddress(address _api) onlyOwner public {
        require(_api != address(0));

        addressApi = _api;
    }


    /**
    * @dev Add wallet to whitelist.
    * @dev Accept request from the owner only.
    * @param _wallet The address of wallet to add.
    */  
    function addWallet(address _wallet) onlyPrivilegeAddresses public {
        require(_wallet != address(0));
        require(!isWhitelisted(_wallet));
        whitelist[_wallet] = true;
        whitelistLength++;
    }

    /**
    * @dev Remove wallet from whitelist.
    * @dev Accept request from the owner only.
    * @param _wallet The address of whitelisted wallet to remove.
    */  
    function removeWallet(address _wallet) onlyOwner public {
        require(_wallet != address(0));
        require(isWhitelisted(_wallet));
        whitelist[_wallet] = false;
        whitelistLength--;
    }

    /**
    * @dev Check the specified wallet whether it is in the whitelist.
    * @param _wallet The address of wallet to check.
    */ 
    function isWhitelisted(address _wallet) view public returns (bool) {
        return whitelist[_wallet];
    }

}

// File: contracts/Whitelistable.sol

/**
 * @title Whitelistable contract.
 * @dev Contract that can be embedded in another contract, to add functionality "whitelist".
 */


contract Whitelistable {
    Whitelist public whitelist;

    modifier whenWhitelisted(address _wallet) {
        require(whitelist.isWhitelisted(_wallet));
        _;
    }

    /**
    * @dev Constructor for Whitelistable contract.
    */
    function Whitelistable() public {
        whitelist = new Whitelist();
    }
}

// File: contracts/Crowdsale.sol

contract Crowdsale is Pausable, Whitelistable {
    using SafeMath for uint256;

    /////////////////////////////
    //Constant block
    //
    // DECIMALS = 18
    uint256 constant private DECIMALS = 18;
    // rate 1 ETH = 180 BACE tokens
    uint256 constant public BACE_ETH = 1800;
    // Bonus: 20%
    uint256 constant public PREICO_BONUS = 20;
    // 20 000 000 * 10^18
    uint256 constant public RESERVED_TOKENS_BACE_TEAM = 20 * 1E6 * (10 ** DECIMALS);
    // 10 000 000 * 10^18
    uint256 constant public RESERVED_TOKENS_ANGLE = 10 * 1E6 * (10 ** DECIMALS);
    // 10 000 000 * 10^18
    uint256 constant public HARDCAP_TOKENS_PRE_ICO = 10 * 1E6 * (10 ** DECIMALS);
    // 70 000 000 * 10^18
    uint256 constant public HARDCAP_TOKENS_ICO = 70 * 1E6 * (10 ** DECIMALS);
    // 5 000 000 * 10^18
    uint256 constant public MINCAP_TOKENS = 5 * 1E6 * (10 ** DECIMALS);
    /////////////////////////////

    /////////////////////////////
    //Live cycle block
    //
    uint256 public maxInvestments;

    uint256 public minInvestments;

    /**
     * @dev test mode.
     * @dev if test mode is "true" allows to change caps in an deployed contract
     */
    bool private testMode;

    /**
     * @dev contract BACE token object.
     */
    Token public token;

    /**
     * @dev start time of PreIco stage.
     */
    uint256 public preIcoStartTime;

    /**
     * @dev finish time of PreIco stage.
     */
    uint256 public preIcoFinishTime;

    /**
     * @dev start time of Ico stage.
     */
    uint256 public icoStartTime;

    /**
     * @dev finish time of Ico stage.
     */
    uint256 public icoFinishTime;

    /**
     * @dev were the Ico dates set?
     */
    bool public icoInstalled;

    /**
     * @dev The address to backend program.
     */
    address private backendWallet;

    /**
     * @dev The address to which raised funds will be withdrawn.
     */
    address private withdrawalWallet;

    /**
     * @dev The guard interval.
     */
    uint256 public guardInterval;
    ////////////////////////////

    /////////////////////////////
    //ETH block
    //
    /**
     * @dev Map of investors. Key = address, Value = Total ETH at PreIco.
     */
    mapping(address => uint256) public preIcoInvestors;

    /**
     * @dev Array of addresses of investors at PreIco.
     */
    address[] public preIcoInvestorsAddresses;

    /**
     * @dev Map of investors. Key = address, Value = Total ETH at Ico.
     */
    mapping(address => uint256) public icoInvestors;

    /**
     * @dev Array of addresses of investors at Ico.
     */
    address[] public icoInvestorsAddresses;

    /**
     * @dev Amount of investment collected in PreIco stage. (without BTC investment)
     */
    uint256 public preIcoTotalCollected;

    /**
     * @dev Amount of investment collected in Ico stage. (without BTC investment)
     */
    uint256 public icoTotalCollected;
    ////////////////////////////

    ////////////////////////////
    //Tokens block
    //

    /**
     * @dev Map of investors. Key = address, Value = Total tokens at PreIco.
     */
    mapping(address => uint256) public preIcoTokenHolders;

    /**
     * @dev Array of addresses of investors.
     */
    address[] public preIcoTokenHoldersAddresses;

    /**
     * @dev Map of investors. Key = address, Value = Total tokens at PreIco.
     */
    mapping(address => uint256) public icoTokenHolders;

    /**
     * @dev Array of addresses of investors.
     */
    address[] public icoTokenHoldersAddresses;

    /**
     * @dev the minimum amount in tokens for the investment.
     */
    uint256 public minCap;

    /**
     * @dev the maximum amount in tokens for the investment in the PreIco stage.
     */
    uint256 public hardCapPreIco;

    /**
     * @dev the maximum amount in tokens for the investment in the Ico stage.
     */
    uint256 public hardCapIco;

    /**
     * @dev number of sold tokens issued in  PreIco stage.
     */
    uint256 public preIcoSoldTokens;

    /**
     * @dev number of sold tokens issued in Ico stage.
     */
    uint256 public icoSoldTokens;

    /**
     * @dev The BACE token exchange rate for PreIco stage.
     */
    uint256 public exchangeRatePreIco;

    /**
     * @dev The BACE token exchange rate for Ico stage.
     */
    uint256 public exchangeRateIco;

    /**
     * @dev unsold BACE tokens burned?.
     */
    bool burnt;
    ////////////////////////////

    /**
     * @dev Constructor for Crowdsale contract.
     * @dev Set the owner who can manage whitelist and token.
     * @param _startTimePreIco The PreIco start time.
     * @param _endTimePreIco The PreIco end time.
     * @param _angelInvestorsWallet The address to which reserved tokens angel investors will be transferred.
     * @param _foundersWallet The address to which reserved tokens for founders will be transferred.
     * @param _backendWallet The address to backend program.
     * @param _withdrawalWallet The address to which raised funds will be withdrawn.
     * @param _testMode test mode is on?
     */
    function Crowdsale (
        uint256 _startTimePreIco,
        uint256 _endTimePreIco,
        address _angelInvestorsWallet,
        address _foundersWallet,
        address _backendWallet,
        address _withdrawalWallet,
        uint256 _maxInvestments,
        uint256 _minInvestments,
        bool _testMode
    ) public Whitelistable()
    {
        require(_angelInvestorsWallet != address(0) && _foundersWallet != address(0) && _backendWallet != address(0) && _withdrawalWallet != address(0));
        require(_startTimePreIco >= now && _endTimePreIco > _startTimePreIco);
        require(_maxInvestments != 0 && _minInvestments != 0 && _maxInvestments > _minInvestments);

        ////////////////////////////
        //Live cycle block init
        //
        testMode = _testMode;
        token = new Token(this);
        maxInvestments = _maxInvestments;
        minInvestments = _minInvestments;
        preIcoStartTime = _startTimePreIco;
        preIcoFinishTime = _endTimePreIco;
        icoStartTime = 0;
        icoFinishTime = 0;
        icoInstalled = false;
        guardInterval = uint256(86400).mul(7); //guard interval - 1 week
        /////////////////////////////

        ////////////////////////////
        //ETH block init
        preIcoTotalCollected = 0;
        icoTotalCollected = 0;
        /////////////////////////////

        ////////////////////////////
        //Tokens block init
        //
        minCap = MINCAP_TOKENS;
        hardCapPreIco = HARDCAP_TOKENS_PRE_ICO;
        hardCapIco = HARDCAP_TOKENS_ICO;
        preIcoSoldTokens = 0;
        icoSoldTokens = 0;
        exchangeRateIco = BACE_ETH;
        exchangeRatePreIco = exchangeRateIco.mul(uint256(100).add(PREICO_BONUS)).div(100);
        burnt = false;
        ////////////////////////////

        backendWallet = _backendWallet;
        withdrawalWallet = _withdrawalWallet;

        whitelist.transferOwnership(msg.sender);

        token.transferFromIco(_angelInvestorsWallet, RESERVED_TOKENS_ANGLE);
        token.transferFromIco(_foundersWallet, RESERVED_TOKENS_BACE_TEAM);
        token.transferOwnership(msg.sender);
    }

    modifier isTestMode() {
        require(testMode);
        _;
    }

    /**
     * @dev check Ico Failed.
     * @return bool true if Ico Failed.
     */
    function isIcoFailed() public view returns (bool) {
        return isIcoFinish() && icoSoldTokens.add(preIcoSoldTokens) < minCap;
    }

    /**
     * @dev check Ico Success.
     * @return bool true if Ico Success.
     */
    function isIcoSuccess() public view returns (bool) {
        return isIcoFinish() && icoSoldTokens.add(preIcoSoldTokens) >= minCap;
    }

    /**
     * @dev check PreIco Stage.
     * @return bool true if PreIco Stage now.
     */
    function isPreIcoStage() public view returns (bool) {
        return now > preIcoStartTime && now < preIcoFinishTime;
    }

    /**
     * @dev check Ico Stage.
     * @return bool true if Ico Stage now.
     */
    function isIcoStage() public view returns (bool) {
        return icoInstalled && now > icoStartTime && now < icoFinishTime;
    }

    /**
     * @dev check PreIco Finish.
     * @return bool true if PreIco Finished.
     */
    function isPreIcoFinish() public view returns (bool) {
        return now > preIcoFinishTime;
    }

    /**
     * @dev check Ico Finish.
     * @return bool true if Ico Finished.
     */
    function isIcoFinish() public view returns (bool) {
        return icoInstalled && now > icoFinishTime;
    }

    /**
     * @dev guard interval finished?
     * @return bool true if guard Interval finished.
     */
    function guardIntervalFinished() public view returns (bool) {
        return now > icoFinishTime.add(guardInterval);
    }

    /**
     * @dev Set start time and end time for Ico.
     * @param _startTimeIco The Ico start time.
     * @param _endTimeIco The Ico end time.
     */
    function setStartTimeIco(uint256 _startTimeIco, uint256 _endTimeIco) onlyOwner public {
        require(_startTimeIco >= now && _endTimeIco > _startTimeIco && _startTimeIco > preIcoFinishTime);

        icoStartTime = _startTimeIco;
        icoFinishTime = _endTimeIco;
        icoInstalled = true;
    }

    /**
     * @dev Remaining amount of tokens for PreIco stage.
     */
    function tokensRemainingPreIco() public view returns(uint256) {
        if (isPreIcoFinish()) {
            return 0;
        }
        return hardCapPreIco.sub(preIcoSoldTokens);
    }

    /**
     * @dev Remaining amount of tokens for Ico stage.
     */
    function tokensRemainingIco() public view returns(uint256) {
        if (burnt) {
            return 0;
        }
        if (isPreIcoFinish()) {
            return hardCapIco.sub(icoSoldTokens).sub(preIcoSoldTokens);
        }
        return hardCapIco.sub(hardCapPreIco).sub(icoSoldTokens);
    }

    /**
     * @dev Add information about the investment at the PreIco stage.
     * @param _addr Investor's address.
     * @param _weis Amount of wei(1 ETH = 1 * 10 ** 18 wei) received.
     * @param _tokens Amount of Token for investor.
     */
    function addInvestInfoPreIco(address _addr,  uint256 _weis, uint256 _tokens) private {
        if (preIcoTokenHolders[_addr] == 0) {
            preIcoTokenHoldersAddresses.push(_addr);
        }
        preIcoTokenHolders[_addr] = preIcoTokenHolders[_addr].add(_tokens);
        preIcoSoldTokens = preIcoSoldTokens.add(_tokens);
        if (_weis > 0) {
            if (preIcoInvestors[_addr] == 0) {
                preIcoInvestorsAddresses.push(_addr);
            }
            preIcoInvestors[_addr] = preIcoInvestors[_addr].add(_weis);
            preIcoTotalCollected = preIcoTotalCollected.add(_weis);
        }
    }

    /**
     * @dev Add information about the investment at the Ico stage.
     * @param _addr Investor's address.
     * @param _weis Amount of wei(1 ETH = 1 * 10 ** 18 wei) received.
     * @param _tokens Amount of Token for investor.
     */
    function addInvestInfoIco(address _addr,  uint256 _weis, uint256 _tokens) private {
        if (icoTokenHolders[_addr] == 0) {
            icoTokenHoldersAddresses.push(_addr);
        }
        icoTokenHolders[_addr] = icoTokenHolders[_addr].add(_tokens);
        icoSoldTokens = icoSoldTokens.add(_tokens);
        if (_weis > 0) {
            if (icoInvestors[_addr] == 0) {
                icoInvestorsAddresses.push(_addr);
            }
            icoInvestors[_addr] = icoInvestors[_addr].add(_weis);
            icoTotalCollected = icoTotalCollected.add(_weis);
        }
    }

    /**
     * @dev Fallback function can be used to buy tokens.
     */
    function() public payable {
        acceptInvestments(msg.sender, msg.value);
    }

    /**
     * @dev function can be used to buy tokens by ETH investors.
     */
    function sellTokens() public payable {
        acceptInvestments(msg.sender, msg.value);
    }

    /**
     * @dev Function processing new investments.
     * @param _addr Investor's address.
     * @param _amount The amount of wei(1 ETH = 1 * 10 ** 18 wei) received.
     */
    function acceptInvestments(address _addr, uint256 _amount) private whenWhitelisted(msg.sender) whenNotPaused {
        require(_addr != address(0) && _amount >= minInvestments);

        bool preIco = isPreIcoStage();
        bool ico = isIcoStage();

        require(preIco || ico);
        require((preIco && tokensRemainingPreIco() > 0) || (ico && tokensRemainingIco() > 0));

        uint256 intermediateEthInvestment;
        uint256 ethSurrender = 0;
        uint256 currentEth = preIco ? preIcoInvestors[_addr] : icoInvestors[_addr];

        if (currentEth.add(_amount) > maxInvestments) {
            intermediateEthInvestment = maxInvestments.sub(currentEth);
            ethSurrender = ethSurrender.add(_amount.sub(intermediateEthInvestment));
        } else {
            intermediateEthInvestment = _amount;
        }

        uint256 currentRate = preIco ? exchangeRatePreIco : exchangeRateIco;
        uint256 intermediateTokenInvestment = intermediateEthInvestment.mul(currentRate);
        uint256 tokensRemaining = preIco ? tokensRemainingPreIco() : tokensRemainingIco();
        uint256 currentTokens = preIco ? preIcoTokenHolders[_addr] : icoTokenHolders[_addr];
        uint256 weiToAccept;
        uint256 tokensToSell;

        if (currentTokens.add(intermediateTokenInvestment) > tokensRemaining) {
            tokensToSell = tokensRemaining;
            weiToAccept = tokensToSell.div(currentRate);
            ethSurrender = ethSurrender.add(intermediateEthInvestment.sub(weiToAccept));
        } else {
            tokensToSell = intermediateTokenInvestment;
            weiToAccept = intermediateEthInvestment;
        }

        if (preIco) {
            addInvestInfoPreIco(_addr, weiToAccept, tokensToSell);
        } else {
            addInvestInfoIco(_addr, weiToAccept, tokensToSell);
        }

        token.transferFromIco(_addr, tokensToSell);

        if (ethSurrender > 0) {
            msg.sender.transfer(ethSurrender);
        }
    }

    /**
     * @dev Function can be used to buy tokens by third-party investors.
     * @dev Only the owner or the backend can call this function.
     * @param _addr Investor's address.
     * @param _value Amount of Token for investor.
     */
    function thirdPartyInvestments(address _addr, uint256 _value) public  whenWhitelisted(_addr) whenNotPaused {
        require(msg.sender == backendWallet || msg.sender == owner);
        require(_addr != address(0) && _value > 0);

        bool preIco = isPreIcoStage();
        bool ico = isIcoStage();

        require(preIco || ico);
        require((preIco && tokensRemainingPreIco() > 0) || (ico && tokensRemainingIco() > 0));

        uint256 currentRate = preIco ? exchangeRatePreIco : exchangeRateIco;
        uint256 currentTokens = preIco ? preIcoTokenHolders[_addr] : icoTokenHolders[_addr];

        require(maxInvestments.mul(currentRate) >= currentTokens.add(_value));
        require(minInvestments.mul(currentRate) <= _value);

        uint256 tokensRemaining = preIco ? tokensRemainingPreIco() : tokensRemainingIco();

        require(tokensRemaining >= _value);

        if (preIco) {
            addInvestInfoPreIco(_addr, 0, _value);
        } else {
            addInvestInfoIco(_addr, 0, _value);
        }

        token.transferFromIco(_addr, _value);
    }

    /**
     * @dev Send raised funds to the withdrawal wallet.
     * @param _weiAmount The amount of raised funds to withdraw.
     */
    function forwardFunds(uint256 _weiAmount) public onlyOwner {
        require(isIcoSuccess() || (isIcoFailed() && guardIntervalFinished()));
        withdrawalWallet.transfer(_weiAmount);
    }

    /**
     * @dev Function for refund eth if Ico failed and guard interval has not expired.
     * @dev Any wallet can call the function.
     * @dev Function returns ETH for sender if it is a member of Ico or(and) PreIco.
     */
    function refund() public {
        require(isIcoFailed() && !guardIntervalFinished());

        uint256 ethAmountPreIco = preIcoInvestors[msg.sender];
        uint256 ethAmountIco = icoInvestors[msg.sender];
        uint256 ethAmount = ethAmountIco.add(ethAmountPreIco);

        uint256 tokensAmountPreIco = preIcoTokenHolders[msg.sender];
        uint256 tokensAmountIco = icoTokenHolders[msg.sender];
        uint256 tokensAmount = tokensAmountPreIco.add(tokensAmountIco);

        require(ethAmount > 0 && tokensAmount > 0);

        preIcoInvestors[msg.sender] = 0;
        icoInvestors[msg.sender] = 0;
        preIcoTokenHolders[msg.sender] = 0;
        icoTokenHolders[msg.sender] = 0;

        msg.sender.transfer(ethAmount);
        token.refund(msg.sender, tokensAmount);
    }

    /**
     * @dev Set new withdrawal wallet address.
     * @param _addr new withdrawal Wallet address.
     */
    function setWithdrawalWallet(address _addr) public onlyOwner {
        require(_addr != address(0));

        withdrawalWallet = _addr;
    }

    /**
        * @dev Set new backend wallet address.
        * @param _addr new backend Wallet address.
        */
    function setBackendWallet(address _addr) public onlyOwner {
        require(_addr != address(0));

        backendWallet = _addr;
    }

    /**
    * @dev Burn unsold tokens from the Ico balance.
    * @dev Only applies when the Ico was ended.
    */
    function burnUnsoldTokens() onlyOwner public {
        require(isIcoFinish());
        token.burnFromIco();
        burnt = true;
    }

    /**
     * @dev Set new MinCap.
     * @param _newMinCap new MinCap,
     */
    function setMinCap(uint256 _newMinCap) public onlyOwner isTestMode {
        require(now < preIcoFinishTime);
        minCap = _newMinCap;
    }

    /**
     * @dev Set new PreIco HardCap.
     * @param _newPreIcoHardCap new PreIco HardCap,
     */
    function setPreIcoHardCap(uint256 _newPreIcoHardCap) public onlyOwner isTestMode {
        require(now < preIcoFinishTime);
        require(_newPreIcoHardCap <= hardCapIco);
        hardCapPreIco = _newPreIcoHardCap;
    }

    /**
     * @dev Set new Ico HardCap.
     * @param _newIcoHardCap new Ico HardCap,
     */
    function setIcoHardCap(uint256 _newIcoHardCap) public onlyOwner isTestMode {
        require(now < preIcoFinishTime);
        require(_newIcoHardCap > hardCapPreIco);
        hardCapIco = _newIcoHardCap;
    }

    /**
     * @dev Count the Ico investors total.
     */
    function getIcoTokenHoldersAddressesCount() public view returns(uint256) {
        return icoTokenHoldersAddresses.length;
    }

    /**
     * @dev Count the PreIco investors total.
     */
    function getPreIcoTokenHoldersAddressesCount() public view returns(uint256) {
        return preIcoTokenHoldersAddresses.length;
    }

    /**
     * @dev Count the Ico investors total (not including third-party investors).
     */
    function getIcoInvestorsAddressesCount() public view returns(uint256) {
        return icoInvestorsAddresses.length;
    }

    /**
     * @dev Count the PreIco investors total (not including third-party investors).
     */
    function getPreIcoInvestorsAddressesCount() public view returns(uint256) {
        return preIcoInvestorsAddresses.length;
    }

    /**
     * @dev Get backend wallet address.
     */
    function getBackendWallet() public view returns(address) {
        return backendWallet;
    }

    /**
     * @dev Get Withdrawal wallet address.
     */
    function getWithdrawalWallet() public view returns(address) {
        return withdrawalWallet;
    }
}

// File: contracts/CrowdsaleFactory.sol

contract Factory {
    Crowdsale public crowdsale;

    function createCrowdsale (
        uint256 _startTimePreIco,
        uint256 _endTimePreIco,
        address _angelInvestorsWallet,
        address _foundersWallet,
        address _backendWallet,
        address _withdrawalWallet,
        uint256 _maxInvestments,
        uint256 _minInvestments,
        bool _testMode
    ) public
    {
        crowdsale = new Crowdsale(
            _startTimePreIco,
            _endTimePreIco,
            _angelInvestorsWallet,
            _foundersWallet,
            _backendWallet,
            _withdrawalWallet,
            _maxInvestments,
            _minInvestments,
            _testMode
        );

        Whitelist whitelist = crowdsale.whitelist();
        whitelist.transferOwnership(msg.sender);

        Token token = crowdsale.token();
        token.transferOwnership(msg.sender);

        crowdsale.transferOwnership(msg.sender);
    }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"getBackendWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"icoInvestorsAddresses","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"exchangeRateIco","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxInvestments","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"RESERVED_TOKENS_ANGLE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"setBackendWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getIcoTokenHoldersAddressesCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isIcoStage","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_value","type":"uint256"}],"name":"thirdPartyInvestments","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"preIcoInvestorsAddresses","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"preIcoTokenHoldersAddresses","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"HARDCAP_TOKENS_ICO","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"guardInterval","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"preIcoFinishTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"preIcoSoldTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"preIcoTokenHolders","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"HARDCAP_TOKENS_PRE_ICO","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"exchangeRatePreIco","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"RESERVED_TOKENS_BACE_TEAM","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"icoSoldTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPreIcoTokenHoldersAddressesCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newPreIcoHardCap","type":"uint256"}],"name":"setPreIcoHardCap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"refund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"guardIntervalFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hardCapIco","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hardCapPreIco","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"setWithdrawalWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"PREICO_BONUS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensRemainingIco","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"icoTokenHoldersAddresses","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPreIcoInvestorsAddressesCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"preIcoStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BACE_ETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getIcoInvestorsAddressesCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"whitelist","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"burnUnsoldTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"preIcoTotalCollected","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sellTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"icoInvestors","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"icoTotalCollected","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"icoStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isPreIcoFinish","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newIcoHardCap","type":"uint256"}],"name":"setIcoHardCap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newMinCap","type":"uint256"}],"name":"setMinCap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getWithdrawalWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"icoInstalled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensRemainingPreIco","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MINCAP_TOKENS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_startTimeIco","type":"uint256"},{"name":"_endTimeIco","type":"uint256"}],"name":"setStartTimeIco","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_weiAmount","type":"uint256"}],"name":"forwardFunds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"icoTokenHolders","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isIcoFinish","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minInvestments","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"icoFinishTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isIcoSuccess","outputs":[{"name":"","type":"bool"}],"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":"isPreIcoStage","outputs":[{"name":"","type":"bool"}],"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":"isIcoFailed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"preIcoInvestors","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_startTimePreIco","type":"uint256"},{"name":"_endTimePreIco","type":"uint256"},{"name":"_angelInvestorsWallet","type":"address"},{"name":"_foundersWallet","type":"address"},{"name":"_backendWallet","type":"address"},{"name":"_withdrawalWallet","type":"address"},{"name":"_maxInvestments","type":"uint256"},{"name":"_minInvestments","type":"uint256"},{"name":"_testMode","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","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
60606040526000805460a060020a60ff021916905534156200002057600080fd5b604051610120806200359b83398101604052808051919060200180519190602001805191906020018051919060200180519190602001805191906020018051919060200180519190602001805160008054600160a060020a03191633600160a060020a03161790559150620000969050620005a7565b604051809103906000f0801515620000ad57600080fd5b60018054600160a060020a031916600160a060020a03928316179055871615801590620000e25750600160a060020a03861615155b8015620000f75750600160a060020a03851615155b80156200010c5750600160a060020a03841615155b15156200011857600080fd5b4289101580156200012857508888115b15156200013457600080fd5b82158015906200014357508115155b80156200014f57508183115b15156200015b57600080fd5b6004805460ff19168215151790553062000174620005b8565b600160a060020a039091168152602001604051809103906000f08015156200019b57600080fd5b60048054600160a060020a03929092166101000261010060a860020a03199092169190911790556002839055600382905560058990556006889055600060078181556008919091556009805460ff191690556200020b9062015180906401000000006200187f6200054582021704565b600b556000601081905560118190556a0422ca8b0a00a4250000006016556a084595161401484a0000006017556a39e7139a8c08fa060000006018556019819055601a55610708601c55620002a76064620002926200027a826014640100000000620018536200057f82021704565b601c54906401000000006200187f6200054582021704565b90640100000000620018aa6200058f82021704565b601b55601d805460ff191690556009805461010060a860020a031916610100600160a060020a038881169190910291909117909155600a8054600160a060020a0319168683161790556001541663f2fde38b336040517c010000000000000000000000000000000000000000000000000000000063ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b15156200035257600080fd5b6102c65a03f115156200036457600080fd5b50506004546101009004600160a060020a031690506361a7b2f5886a084595161401484a0000006000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515620003f157600080fd5b6102c65a03f115156200040357600080fd5b505050604051805150506004546101009004600160a060020a03166361a7b2f5876a108b2a2c280290940000006000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156200049657600080fd5b6102c65a03f11515620004a857600080fd5b505050604051805150506004546101009004600160a060020a031663f2fde38b336040517c010000000000000000000000000000000000000000000000000000000063ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b15156200052157600080fd5b6102c65a03f115156200053357600080fd5b505050505050505050505050620005c9565b6000808315156200055a576000915062000578565b508282028284828115156200056b57fe5b04146200057457fe5b8091505b5092915050565b6000828201838110156200057457fe5b60008082848115156200059e57fe5b04949350505050565b60405161041680620021dc83390190565b604051610fa980620025f283390190565b611c0380620005d96000396000f3006060604052600436106102e75763ffffffff60e060020a60003504166301ad62a381146102f3578063077d256a1461032257806309b258f7146103385780630add0baa1461035d5780630c0078e8146103705780630edfe7ec14610383578063133af8b3146103a25780631bb797da146103b55780631dfa3ca8146103dc5780631ee7ccc7146103fe578063210a854b146104145780632e029c651461042a5780632ecc87031461043d57806331fb4c1d1461045057806333c9b83c146104635780633a0046a3146104765780633a752c31146103705780633c6a71f7146104955780633f4ba83a146104a85780633fa615b0146104bb57806340111f6d146104ce57806343d42780146104e157806349e627d2146104f457806357e71cd714610507578063590e1ae31461051d578063591beea8146105305780635c975abb146105435780635e58217d146105565780635fcc9d0f1461056957806375796f761461057c57806376636e731461059b57806377c34ee7146105ae5780637f4dd7a5146105c15780638456cb59146105d75780638da5cb5b146105ea57806390ce9e5b146105fd578063910f5b8114610610578063923f845514610623578063930cd62e1461063657806393e59dc114610649578063940bb3441461065c57806394169f251461066f5780639904e174146106825780639a9569151461068a578063a2d435d4146106a9578063a7c3d71b146106bc578063a993772f146106cf578063ab2a5772146106e2578063ae3b748d146106f8578063aecd15e31461070e578063afec91c414610721578063b27ea08d14610734578063b2e752cb14610747578063b92ddee61461075a578063c899712114610773578063d758d94414610789578063dd58f5d9146107a8578063dd9546b1146107bb578063e246ddba146107ce578063e808aef7146107e1578063f2fde38b146107f4578063f9e8ad7c14610813578063fc0c546a14610826578063fcc9b48c14610839578063fe2d89331461084c575b6102f1333461086b565b005b34156102fe57600080fd5b610306610c00565b604051600160a060020a03909116815260200160405180910390f35b341561032d57600080fd5b610306600435610c15565b341561034357600080fd5b61034b610c3d565b60405190815260200160405180910390f35b341561036857600080fd5b61034b610c43565b341561037b57600080fd5b61034b610c49565b341561038e57600080fd5b6102f1600160a060020a0360043516610c58565b34156103ad57600080fd5b61034b610cbd565b34156103c057600080fd5b6103c8610cc3565b604051901515815260200160405180910390f35b34156103e757600080fd5b6102f1600160a060020a0360043516602435610ceb565b341561040957600080fd5b610306600435610fc1565b341561041f57600080fd5b610306600435610fcf565b341561043557600080fd5b61034b610fdd565b341561044857600080fd5b61034b610fec565b341561045b57600080fd5b61034b610ff2565b341561046e57600080fd5b61034b610ff8565b341561048157600080fd5b61034b600160a060020a0360043516610ffe565b34156104a057600080fd5b61034b611010565b34156104b357600080fd5b6102f1611016565b34156104c657600080fd5b61034b611095565b34156104d957600080fd5b61034b61109b565b34156104ec57600080fd5b61034b6110aa565b34156104ff57600080fd5b61034b6110b0565b341561051257600080fd5b6102f16004356110b6565b341561052857600080fd5b6102f1611104565b341561053b57600080fd5b6103c86112a0565b341561054e57600080fd5b6103c86112c0565b341561056157600080fd5b61034b6112d0565b341561057457600080fd5b61034b6112d6565b341561058757600080fd5b6102f1600160a060020a03600435166112dc565b34156105a657600080fd5b61034b61132e565b34156105b957600080fd5b61034b611333565b34156105cc57600080fd5b6103066004356113a3565b34156105e257600080fd5b6102f16113b1565b34156105f557600080fd5b610306611435565b341561060857600080fd5b61034b611444565b341561061b57600080fd5b61034b61144a565b341561062e57600080fd5b61034b611450565b341561064157600080fd5b61034b611456565b341561065457600080fd5b61030661145c565b341561066757600080fd5b6102f161146b565b341561067a57600080fd5b61034b611500565b6102f1611506565b341561069557600080fd5b61034b600160a060020a0360043516611512565b34156106b457600080fd5b61034b611524565b34156106c757600080fd5b61034b61152a565b34156106da57600080fd5b6103c8611530565b34156106ed57600080fd5b6102f1600435611538565b341561070357600080fd5b6102f1600435611585565b341561071957600080fd5b6103066115c4565b341561072c57600080fd5b6103c86115d3565b341561073f57600080fd5b61034b6115dc565b341561075257600080fd5b61034b611608565b341561076557600080fd5b6102f1600435602435611617565b341561077e57600080fd5b6102f1600435611671565b341561079457600080fd5b61034b600160a060020a03600435166116f2565b34156107b357600080fd5b6103c8611704565b34156107c657600080fd5b61034b61171d565b34156107d957600080fd5b61034b611723565b34156107ec57600080fd5b6103c8611729565b34156107ff57600080fd5b6102f1600160a060020a0360043516611759565b341561081e57600080fd5b6103c86117e7565b341561083157600080fd5b6103066117fe565b341561084457600080fd5b6103c8611812565b341561085757600080fd5b61034b600160a060020a0360043516611841565b600080600080600080600080600080600033600160009054906101000a9004600160a060020a0316600160a060020a0316633af32abf8260006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156108e957600080fd5b6102c65a03f115156108fa57600080fd5b50505060405180519050151561090f57600080fd5b60005460a060020a900460ff161561092657600080fd5b600160a060020a038e161580159061094057506003548d10155b151561094b57600080fd5b6109536117e7565b9b5061095d610cc3565b9a508b8061096857508a5b151561097357600080fd5b8b8015610987575060006109856115dc565b115b806109a157508a80156109a15750600061099f611333565b115b15156109ac57600080fd5b600098508b6109d357600160a060020a038e166000908152600e60205260409020546109ed565b600160a060020a038e166000908152600c60205260409020545b600254909850610a03898f63ffffffff61185316565b1115610a4557600254610a1c908963ffffffff61186d16565b9950610a3e610a318e8c63ffffffff61186d16565b8a9063ffffffff61185316565b9850610a49565b8c99505b8b610a5657601c54610a5a565b601b545b9650610a6c8a8863ffffffff61187f16565b95508b610a8057610a7b611333565b610a88565b610a886115dc565b94508b610aad57600160a060020a038e16600090815260146020526040902054610ac7565b600160a060020a038e166000908152601260205260409020545b935084610ada858863ffffffff61185316565b1115610b0f57849150610af3828863ffffffff6118aa16565b9250610b08610a318b8563ffffffff61186d16565b9850610b16565b8591508992505b8b15610b2c57610b278e84846118c1565b610b37565b610b378e8484611a2e565b6004546101009004600160a060020a03166361a7b2f58f8460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610b9b57600080fd5b6102c65a03f11515610bac57600080fd5b505050604051805150506000891115610bf057600160a060020a03331689156108fc028a604051600060405180830381858888f193505050501515610bf057600080fd5b5050505050505050505050505050565b6009546101009004600160a060020a03165b90565b600f805482908110610c2357fe5b600091825260209091200154600160a060020a0316905081565b601c5481565b60025481565b6a084595161401484a00000081565b60005433600160a060020a03908116911614610c7357600080fd5b600160a060020a0381161515610c8857600080fd5b60098054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b60155490565b60095460009060ff168015610cd9575060075442115b8015610ce6575060085442105b905090565b60015460009081908190819081908790600160a060020a0316633af32abf82846040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610d5057600080fd5b6102c65a03f11515610d6157600080fd5b505050604051805190501515610d7657600080fd5b60005460a060020a900460ff1615610d8d57600080fd5b60095433600160a060020a03908116610100909204161480610dbd575060005433600160a060020a039081169116145b1515610dc857600080fd5b600160a060020a03881615801590610de05750600087115b1515610deb57600080fd5b610df36117e7565b9550610dfd610cc3565b94508580610e085750845b1515610e1357600080fd5b858015610e2757506000610e256115dc565b115b80610e415750848015610e4157506000610e3f611333565b115b1515610e4c57600080fd5b85610e5957601c54610e5d565b601b545b935085610e8257600160a060020a038816600090815260146020526040902054610e9c565b600160a060020a0388166000908152601260205260409020545b9250610eae838863ffffffff61185316565b600254610ec1908663ffffffff61187f16565b1015610ecc57600080fd5b6003548790610ee1908663ffffffff61187f16565b1115610eec57600080fd5b85610efe57610ef9611333565b610f06565b610f066115dc565b915086821015610f1557600080fd5b8515610f2c57610f27886000896118c1565b610f38565b610f3888600089611a2e565b6004546101009004600160a060020a03166361a7b2f5898960006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610f9c57600080fd5b6102c65a03f11515610fad57600080fd5b505050604051805150505050505050505050565b600d805482908110610c2357fe5b6013805482908110610c2357fe5b6a39e7139a8c08fa0600000081565b600b5481565b60065481565b60195481565b60126020526000908152604090205481565b601b5481565b60005433600160a060020a0390811691161461103157600080fd5b60005460a060020a900460ff16151561104957600080fd5b6000805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60165481565b6a108b2a2c2802909400000081565b601a5481565b60135490565b60005433600160a060020a039081169116146110d157600080fd5b60045460ff1615156110e257600080fd5b60065442106110f057600080fd5b6018548111156110ff57600080fd5b601755565b600080600080600080611115611812565b801561112657506111246112a0565b155b151561113157600080fd5b600160a060020a0333166000908152600c6020908152604080832054600e90925290912054909650945061116b858763ffffffff61185316565b600160a060020a033316600090815260126020908152604080832054601490925290912054919550935091506111a7838363ffffffff61185316565b90506000841180156111b95750600081115b15156111c457600080fd5b600160a060020a0333166000818152600c60209081526040808320839055600e82528083208390556012825280832083905560149091528082209190915585156108fc0290869051600060405180830381858888f19350505050151561122957600080fd5b6004546101009004600160a060020a031663410085df338360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561128457600080fd5b6102c65a03f1151561129557600080fd5b505050505050505050565b60006112b9600b5460085461185390919063ffffffff16565b4211905090565b60005460a060020a900460ff1681565b60185481565b60175481565b60005433600160a060020a039081169116146112f757600080fd5b600160a060020a038116151561130c57600080fd5b600a8054600160a060020a031916600160a060020a0392909216919091179055565b601481565b601d5460009060ff161561134957506000610c12565b611351611530565b156113865761137f601954611373601a5460185461186d90919063ffffffff16565b9063ffffffff61186d16565b9050610c12565b610ce6601a5461137360175460185461186d90919063ffffffff16565b6015805482908110610c2357fe5b60005433600160a060020a039081169116146113cc57600080fd5b60005460a060020a900460ff16156113e357600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600054600160a060020a031681565b600d5490565b60055481565b61070881565b600f5490565b600154600160a060020a031681565b60005433600160a060020a0390811691161461148657600080fd5b61148e611704565b151561149957600080fd5b6004546101009004600160a060020a03166398d5a1b16040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156114dd57600080fd5b6102c65a03f115156114ee57600080fd5b5050601d805460ff1916600117905550565b60105481565b611510333461086b565b565b600e6020526000908152604090205481565b60115481565b60075481565b600654421190565b60005433600160a060020a0390811691161461155357600080fd5b60045460ff16151561156457600080fd5b600654421061157257600080fd5b601754811161158057600080fd5b601855565b60005433600160a060020a039081169116146115a057600080fd5b60045460ff1615156115b157600080fd5b60065442106115bf57600080fd5b601655565b600a54600160a060020a031690565b60095460ff1681565b60006115e6611530565b156115f357506000610c12565b601954601754610ce69163ffffffff61186d16565b6a0422ca8b0a00a42500000081565b60005433600160a060020a0390811691161461163257600080fd5b42821015801561164157508181115b801561164e575060065482115b151561165957600080fd5b6007919091556008556009805460ff19166001179055565b60005433600160a060020a0390811691161461168c57600080fd5b611694611729565b806116b157506116a2611812565b80156116b157506116b16112a0565b15156116bc57600080fd5b600a54600160a060020a031681156108fc0282604051600060405180830381858888f1935050505015156116ef57600080fd5b50565b60146020526000908152604090205481565b60095460009060ff168015610ce6575050600854421190565b60035481565b60085481565b6000611733611704565b8015610ce65750601654601954601a546117529163ffffffff61185316565b1015905090565b60005433600160a060020a0390811691161461177457600080fd5b600160a060020a038116151561178957600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008054600160a060020a031916600160a060020a0392909216919091179055565b600060055442118015610ce6575050600654421090565b6004546101009004600160a060020a031681565b600061181c611704565b8015610ce65750601654601954601a5461183b9163ffffffff61185316565b10905090565b600c6020526000908152604090205481565b60008282018381101561186257fe5b8091505b5092915050565b60008282111561187957fe5b50900390565b6000808315156118925760009150611866565b508282028284828115156118a257fe5b041461186257fe5b60008082848115156118b857fe5b04949350505050565b600160a060020a03831660009081526012602052604090205415156119185760138054600181016118f28382611b9a565b5060009182526020909120018054600160a060020a031916600160a060020a0385161790555b600160a060020a038316600090815260126020526040902054611941908263ffffffff61185316565b600160a060020a03841660009081526012602052604090205560195461196d908263ffffffff61185316565b6019556000821115611a2957600160a060020a0383166000908152600c602052604090205415156119d057600d8054600181016119aa8382611b9a565b5060009182526020909120018054600160a060020a031916600160a060020a0385161790555b600160a060020a0383166000908152600c60205260409020546119f9908363ffffffff61185316565b600160a060020a0384166000908152600c6020526040902055601054611a25908363ffffffff61185316565b6010555b505050565b600160a060020a0383166000908152601460205260409020541515611a85576015805460018101611a5f8382611b9a565b5060009182526020909120018054600160a060020a031916600160a060020a0385161790555b600160a060020a038316600090815260146020526040902054611aae908263ffffffff61185316565b600160a060020a038416600090815260146020526040902055601a54611ada908263ffffffff61185316565b601a556000821115611a2957600160a060020a0383166000908152600e60205260409020541515611b3d57600f805460018101611b178382611b9a565b5060009182526020909120018054600160a060020a031916600160a060020a0385161790555b600160a060020a0383166000908152600e6020526040902054611b66908363ffffffff61185316565b600160a060020a0384166000908152600e6020526040902055601154611b92908363ffffffff61185316565b601155505050565b815481835581811511611a2957600083815260209020611a29918101908301610c1291905b80821115611bd35760008155600101611bbf565b50905600a165627a7a7230582078f64bf7ab023c0439e9c101b5dd721119bac27c6718b03bec91f8b3e2fc642b00296060604052600060028190558054600160a060020a033316600160a060020a03199091161790556103e1806100356000396000f3006060604052600436106100825763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633af32abf811461008757806378bb5164146100ba5780638da5cb5b146100df578063a75fe8e11461010e578063c20652fe1461012f578063efeb5f1f1461014e578063f2fde38b1461016d575b600080fd5b341561009257600080fd5b6100a6600160a060020a036004351661018c565b604051901515815260200160405180910390f35b34156100c557600080fd5b6100cd6101aa565b60405190815260200160405180910390f35b34156100ea57600080fd5b6100f26101b0565b604051600160a060020a03909116815260200160405180910390f35b341561011957600080fd5b61012d600160a060020a03600435166101bf565b005b341561013a57600080fd5b61012d600160a060020a036004351661022e565b341561015957600080fd5b61012d600160a060020a036004351661028d565b341561017857600080fd5b61012d600160a060020a036004351661031a565b600160a060020a031660009081526001602052604090205460ff1690565b60025481565b600054600160a060020a031681565b60005433600160a060020a039081169116146101da57600080fd5b600160a060020a03811615156101ef57600080fd5b6101f88161018c565b151561020357600080fd5b600160a060020a03166000908152600160205260409020805460ff1916905560028054600019019055565b60005433600160a060020a0390811691161461024957600080fd5b600160a060020a038116151561025e57600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60035433600160a060020a03908116911614806102b8575060005433600160a060020a039081169116145b15156102c357600080fd5b600160a060020a03811615156102d857600080fd5b6102e18161018c565b156102eb57600080fd5b600160a060020a03166000908152600160208190526040909120805460ff191682179055600280549091019055565b60005433600160a060020a0390811691161461033557600080fd5b600160a060020a038116151561034a57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a7230582073c741c218a3c2f4d6278c9280fd93222ee147ec1571dce4492c7d5eefe16c09002960606040526003805460a060020a60ff0219169055341561001f57600080fd5b604051602080610fa98339810160405280805160038054600160a060020a03191633600160a060020a039081169190911790915590925082161515905061006557600080fd5b60048054600160a060020a031916600160a060020a0383161790556000546100a5906a52b7d2dcc80cd2e400000064010000000061015a8102610c471704565b6000908155600160a060020a0382168152600160205260409020546100e2906a52b7d2dcc80cd2e4000000640100000000610c4761015a82021704565b600160a060020a0382166000818152600160205260408082209390935590917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906a52b7d2dcc80cd2e4000000905190815260200160405180910390a36101546401000000006107a361017082021704565b50610208565b60008282018381101561016957fe5b9392505050565b60035433600160a060020a0390811691161461018b57600080fd5b60035474010000000000000000000000000000000000000000900460ff16156101b357600080fd5b6003805460a060020a60ff021916740100000000000000000000000000000000000000001790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b610d92806102176000396000f3006060604052600436106101115763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610116578063095ea7b3146101a057806318160ddd146101d657806323b872dd146101fb578063313ce567146102235780633f4ba83a1461024c578063410085df146102615780635c975abb1461028357806361a7b2f51461029657806366188463146102b857806370a08231146102da5780638456cb59146102f95780638da5cb5b1461030c57806395d89b411461033b57806398d5a1b11461034e578063a9059cbb14610361578063c04fcad814610383578063d73dd62314610396578063dd62ed3e146103b8578063f2fde38b146103dd575b600080fd5b341561012157600080fd5b6101296103fc565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561016557808201518382015260200161014d565b50505050905090810190601f1680156101925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101ab57600080fd5b6101c2600160a060020a0360043516602435610433565b604051901515815260200160405180910390f35b34156101e157600080fd5b6101e961049f565b60405190815260200160405180910390f35b341561020657600080fd5b6101c2600160a060020a03600435811690602435166044356104a5565b341561022e57600080fd5b6102366104d2565b60405160ff909116815260200160405180910390f35b341561025757600080fd5b61025f6104d7565b005b341561026c57600080fd5b61025f600160a060020a0360043516602435610556565b341561028e57600080fd5b6101c261064f565b34156102a157600080fd5b6101c2600160a060020a036004351660243561065f565b34156102c357600080fd5b6101c2600160a060020a036004351660243561068e565b34156102e557600080fd5b6101e9600160a060020a0360043516610788565b341561030457600080fd5b61025f6107a3565b341561031757600080fd5b61031f610827565b604051600160a060020a03909116815260200160405180910390f35b341561034657600080fd5b610129610836565b341561035957600080fd5b61025f61086d565b341561036c57600080fd5b6101c2600160a060020a0360043516602435610932565b341561038e57600080fd5b6101e961094c565b34156103a157600080fd5b6101c2600160a060020a036004351660243561095b565b34156103c357600080fd5b6101e9600160a060020a03600435811690602435166109ff565b34156103e857600080fd5b61025f600160a060020a0360043516610a2a565b60408051908101604052600a81527f4261636520546f6b656e00000000000000000000000000000000000000000000602082015281565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60005481565b60035460009060a060020a900460ff16156104bf57600080fd5b6104ca848484610ac5565b509392505050565b601281565b60035433600160a060020a039081169116146104f257600080fd5b60035460a060020a900460ff16151561050a57600080fd5b6003805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60045460009033600160a060020a0390811691161461057457600080fd5b600160a060020a03831660009081526001602052604090205482111561059957600080fd5b50600160a060020a03821660009081526001602052604090205482906105c5908363ffffffff610c3516565b600160a060020a0380831660009081526001602052604080822093909355600454909116815220546105fd908363ffffffff610c4716565b60048054600160a060020a039081166000908152600160205260409081902093909355905481169190851690600080516020610d478339815191529085905190815260200160405180910390a3505050565b60035460a060020a900460ff1681565b60045460009033600160a060020a0390811691161461067d57600080fd5b6106878383610c5d565b5092915050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054808311156106eb57600160a060020a033381166000908152600260209081526040808320938816835292905290812055610722565b6106fb818463ffffffff610c3516565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a35060019392505050565b600160a060020a031660009081526001602052604090205490565b60035433600160a060020a039081169116146107be57600080fd5b60035460a060020a900460ff16156107d557600080fd5b6003805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600354600160a060020a031681565b60408051908101604052600481527f4241434500000000000000000000000000000000000000000000000000000000602082015281565b60045460009033600160a060020a0390811691161461088b57600080fd5b6004546108a090600160a060020a0316610788565b600454600160a060020a03166000908152600160205260409020549091506108ce908263ffffffff610c3516565b600454600160a060020a0316600090815260016020526040812091909155546108fd908263ffffffff610c3516565b6000908155600454600160a060020a0316600080516020610d478339815191528360405190815260200160405180910390a350565b60035460009060a060020a900460ff161561067d57600080fd5b6a52b7d2dcc80cd2e400000081565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054610993908363ffffffff610c4716565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60035433600160a060020a03908116911614610a4557600080fd5b600160a060020a0381161515610a5a57600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000600160a060020a0383161515610adc57600080fd5b600160a060020a038416600090815260016020526040902054821115610b0157600080fd5b600160a060020a0380851660009081526002602090815260408083203390941683529290522054821115610b3457600080fd5b600160a060020a038416600090815260016020526040902054610b5d908363ffffffff610c3516565b600160a060020a038086166000908152600160205260408082209390935590851681522054610b92908363ffffffff610c4716565b600160a060020a03808516600090815260016020908152604080832094909455878316825260028152838220339093168252919091522054610bda908363ffffffff610c3516565b600160a060020a0380861660008181526002602090815260408083203386168452909152908190209390935590851691600080516020610d478339815191529085905190815260200160405180910390a35060019392505050565b600082821115610c4157fe5b50900390565b600082820183811015610c5657fe5b9392505050565b6000600160a060020a0383161515610c7457600080fd5b600160a060020a033316600090815260016020526040902054821115610c9957600080fd5b600160a060020a033316600090815260016020526040902054610cc2908363ffffffff610c3516565b600160a060020a033381166000908152600160205260408082209390935590851681522054610cf7908363ffffffff610c4716565b600160a060020a038085166000818152600160205260409081902093909355913390911690600080516020610d478339815191529085905190815260200160405180910390a3506001929150505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058209c83b066ec53b70c1c7b3788e15104ce97ac0e890966165e426e3d3cc3a2ad530029000000000000000000000000000000000000000000000000000000005ac25380000000000000000000000000000000000000000000000000000000005ad4c8800000000000000000000000003aaee16d531378f3e4633083955fbbe7b9afca830000000000000000000000003104312a82f6c59e1dfbc821756be6ed2cef672a00000000000000000000000004ff23d3a851f6c56707be958a216acdc295d56a000000000000000000000000a521de135b265c9f6e65ab467eaff96113faa62d000000000000000000000000000000000000000000000011e3ab8395c6e80000000000000000000000000000000000000000000000000000016345785d8a00000000000000000000000000000000000000000000000000000000000000000000

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

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000005ac25380
Arg [1] : 000000000000000000000000000000000000000000000000000000005ad4c880
Arg [2] : 0000000000000000000000003aaee16d531378f3e4633083955fbbe7b9afca83
Arg [3] : 0000000000000000000000003104312a82f6c59e1dfbc821756be6ed2cef672a
Arg [4] : 00000000000000000000000004ff23d3a851f6c56707be958a216acdc295d56a
Arg [5] : 000000000000000000000000a521de135b265c9f6e65ab467eaff96113faa62d
Arg [6] : 000000000000000000000000000000000000000000000011e3ab8395c6e80000
Arg [7] : 000000000000000000000000000000000000000000000000016345785d8a0000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000000


   Swarm Source:
bzzr://9c83b066ec53b70c1c7b3788e15104ce97ac0e890966165e426e3d3cc3a2ad53

 

View All
Block Age transaction Difficulty Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.