Sponsored Link:   PAVOCOIN - IoT blockchain for the AgTech ecosystem. Bringing together IoT, blockchain, and agriculture. Join now!
Contract Overview
Balance: 81.481812135 Ether
Ether Value: $58,658.76 (@ $719.90/ETH)
Transactions: 88 txns
 Latest 25 txns from a total Of 88 transactions
View All

TxHash Age From To Value [TxFee]
0x6c6b21637530d0f1be6191ae7cb3b9eb74b469b6e07f1eef435b17d11aa85e375 days 13 hrs ago0x1d2ee3b4c31ec6b384372789b43646e3835e4077  IN  0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.00092537
0xe826ef7d0baa069f756ce118838631061759031f9d6da439bc0e2f72ef2f6d8e13 days 17 mins ago0x06cee304f7666c151fec668218e56029dd229291  IN  0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.00024469
0xf01c67da69bad84d88a8290b4e41c4bf45c3f4bf13a8c73ef76a3d490e343f0613 days 21 mins ago0x06cee304f7666c151fec668218e56029dd229291  IN  0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.00033855
0x29671aaa8d91686ace72ed9b234cddd0ab8b2d76c6747f0a3bf1824faf3e5f3b13 days 26 mins ago0x06cee304f7666c151fec668218e56029dd229291  IN  0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.0002257
0x7a8f1f6c2e65f5a13af804689b8e5ba9f5df081310a9e117e44c5a06851785fb13 days 5 hrs ago0x122423e45db6d40613270afab5e9ca0df0601cfd  IN  0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.00092537
0xfd2e7338f149c861c484a5e7cf1f11876f7465750dd27fc449ff68db716c95b513 days 5 hrs ago0xcb2f9b04377c3dde453ef5e2afda5ead1033d077  IN  0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.00092537
0xe8056c865c51b2a88faf73706b4c2e40c601d4264bc6afd27c072cb976fa363413 days 20 hrs ago0xf8d8ec930b417cc6a254f07d82f872d333c812b8  IN  0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.000022
0x13340dd7882f5c490b5f7bee6d378259c27d33aa60a2c12888bb1a68ac2cc1b815 days 11 hrs ago0x1d2ee3b4c31ec6b384372789b43646e3835e4077  IN  0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.00092537
0x7ee9c1697b6b0fc237a269ac6f3ab082cb1c2e11549129ca6af15f9a652d8db218 days 7 hrs ago0xe34701c00af72ecbebca237c7f84387afd81e0e2  IN  0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0.2 Ether0.00996162
0xd90486f6f2b5666d9af23d80ea64e6074c97c778a998cd770b69302e7c35aeb619 days 49 mins ago0xf8d8e8dca72d41aba3e24518194e9eaf03fdda86  IN  0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d3 Ether0.008135323
0xd6a82a5e29688b7d4a273988b4d50f9b3b22e0edcf5a669d311b29641d9976cc27 days 46 mins ago0x1d2ee3b4c31ec6b384372789b43646e3835e4077  IN  0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d8 Ether0.002826089
0x7f0102bafb3d6eeab89219f1ebbf69bb59a27193c507edca9e4fb60513e83c1627 days 48 mins ago0x1d2ee3b4c31ec6b384372789b43646e3835e4077  IN  0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d1 Ether0.008652107
0x7c57f224489826b350815bec4c79ec441b26baca97059cd33108bddadfe0c45328 days 9 hrs ago0xd3161844c2dc2bbadb67216d01ac0c617151b566  IN  0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0.1 Ether0.00002549
0x344ffa1911f6bd481c224c7f5048380d2b044c24ea8ae9e8a2d4d2871975ee9828 days 10 hrs ago0xd3161844c2dc2bbadb67216d01ac0c617151b566  IN  0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0.1 Ether0.000021
0x607857a5db06694adb4fc00e0114380ac6b5b6d4e43724e1756e57ebb315e83431 days 36 mins ago0xd3161844c2dc2bbadb67216d01ac0c617151b566  IN  0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0.1 Ether0.000021
0x9a4090ae27540a17d0ea39d0158cf76637ebc4306233e1bd623530bd25ac315333 days 3 hrs ago0x1d2ee3b4c31ec6b384372789b43646e3835e4077  IN  0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d1 Ether0.000861
0xbfa94f5e572df517db0e1d15cc474c3b75deefc84c087ef31c537c23fabf9ca933 days 4 hrs ago0x1d2ee3b4c31ec6b384372789b43646e3835e4077  IN  0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d1 Ether0.000861
0xa69e814f021ed4f872dc3c091a02e3e4fc73a26a063eb4f67a6d090f6673d8a034 days 1 hr ago0xbea62df0898a172b53b264abb6e9151cf7bb4a6f  IN  0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0 Ether0.002836503
0x77ee5417e07aab9db1f1144bafb53a52bd6c79e65a66458a377f42da7efec32834 days 3 hrs ago0xdda887c3664c80316aac1e044b3f3876e875ca12  IN  0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0.1 Ether0.00822525
0x7fde03a8e67f249069c8219983339770040a70054767cc6a825e1b7f3a0a3f1534 days 5 hrs ago0x1d2ee3b4c31ec6b384372789b43646e3835e4077  IN  0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d5 Ether0.002763687
0x0c6d6510e5596ac292e4f365015563641385b0530476610dbec505f7c980877734 days 6 hrs ago0x1c7230f4c949d18e30d04ec89b770c62c7784237  IN  0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d1.541350924 Ether0.001415547
0x7cda7250ea1171656060066d1fdf11c3843b93ff1c872f3682e0e337bde7719d34 days 6 hrs ago0x1c7230f4c949d18e30d04ec89b770c62c7784237  IN  0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0.1 Ether0.003454605
0x47aa9911633aa19b7dc0f3acf87a003f0391b9c321c90ecf28e321701755564934 days 7 hrs ago0x1c7230f4c949d18e30d04ec89b770c62c7784237  IN  0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0.5 Ether0.003145674
0x500959b8058ec3e54ed933c5ca7e89192f0ae007f1c376e97787b8ab24ba0e9f34 days 7 hrs ago0x1c7230f4c949d18e30d04ec89b770c62c7784237  IN  0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0.1 Ether0.003145674
0x7bf8d5e6a948918be62c1393146f19754e2a1f6bb2670b41b91ebfc55971a9ec34 days 7 hrs ago0x1c7230f4c949d18e30d04ec89b770c62c7784237  IN  0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d0.1 Ether0.000441
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 3 Internal Transactions

ParentTxHash Block Age From To Value
0x08da70b22a293f407f5f9bf8662db8059959871ff433b424cbd6a2abff96c2af515888083 days 8 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d  Contract Creation0 Ether
0x08da70b22a293f407f5f9bf8662db8059959871ff433b424cbd6a2abff96c2af515888083 days 8 hrs ago0x7d7caeb5badbda7bb803fd2ad3b60396f60e897d  Contract Creation0 Ether
0x08da70b22a293f407f5f9bf8662db8059959871ff433b424cbd6a2abff96c2af515888083 days 8 hrs ago0x0cea560d7d6a2d84640e8920650c71dc4fd139ea  Contract Creation0 Ether
[ Download CSV Export  ] 
Contract Source Code Verified (Exact match)
Contract Name: Crowdsale
Compiler Version: 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

-----Decoded View---------------
Found 9 constructor arguments :
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 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.