ETH Price: $2,944.81 (-2.08%)
Gas: 3 Gwei

Contract

0xA66d83716c7CFE425B44D0f7ef92dE263468fb3d
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Transfer42804722017-09-16 13:52:192434 days ago1505569939IN
Decentraland: Token Sale
5 ETH0.00475231.68000192
Transfer42803652017-09-16 13:08:382434 days ago1505567318IN
Decentraland: Token Sale
10 ETH0.00475231.68000192
Transfer42803622017-09-16 13:08:012434 days ago1505567281IN
Decentraland: Token Sale
10 ETH0.00475231.68000192
Transfer42803542017-09-16 13:04:572434 days ago1505567097IN
Decentraland: Token Sale
10 ETH0.0079231.68000192
Transfer42803522017-09-16 13:04:412434 days ago1505567081IN
Decentraland: Token Sale
10 ETH0.00475231.68000192
Transfer42803512017-09-16 13:03:542434 days ago1505567034IN
Decentraland: Token Sale
10 ETH0.00475231.68000192
Transfer42803472017-09-16 13:00:252434 days ago1505566825IN
Decentraland: Token Sale
10 ETH0.007550
0x696d746f42733692017-09-14 14:35:152436 days ago1505399715IN
Decentraland: Token Sale
2 ETH0.0033809542
Transfer42433982017-09-06 4:46:402445 days ago1504673200IN
Decentraland: Token Sale
0.1 ETH0.0150
Transfer42321462017-09-03 0:18:262448 days ago1504397906IN
Decentraland: Token Sale
5.38084879 ETH0.003322.00000133
Transfer42028702017-08-25 16:04:142456 days ago1503677054IN
Decentraland: Token Sale
1 ETH0.004221
Transfer42014922017-08-25 6:51:282456 days ago1503643888IN
Decentraland: Token Sale
1 ETH0.00084
Transfer42014742017-08-25 6:44:262456 days ago1503643466IN
Decentraland: Token Sale
0.99496 ETH0.0008421
Transfer42014582017-08-25 6:38:292456 days ago1503643109IN
Decentraland: Token Sale
0.9958 ETH0.004221
Transfer42014032017-08-25 6:16:582456 days ago1503641818IN
Decentraland: Token Sale
1 ETH0.0019890
Transfer42012452017-08-25 5:14:412457 days ago1503638081IN
Decentraland: Token Sale
1 ETH0.0016880
Transfer41930132017-08-23 5:17:092459 days ago1503465429IN
Decentraland: Token Sale
2.45 ETH0.0016603421
Transfer41930092017-08-23 5:15:552459 days ago1503465355IN
Decentraland: Token Sale
2.46 ETH0.0008352921
Transfer41930012017-08-23 5:13:282459 days ago1503465208IN
Decentraland: Token Sale
2.47 ETH0.00065121
Transfer41929872017-08-23 5:08:132459 days ago1503464893IN
Decentraland: Token Sale
2 ETH0.00044121
Transfer41929572017-08-23 4:58:382459 days ago1503464318IN
Decentraland: Token Sale
2.45 ETH0.0004453621
Transfer41929472017-08-23 4:55:362459 days ago1503464136IN
Decentraland: Token Sale
2.46 ETH0.0004453621
Transfer41929382017-08-23 4:53:262459 days ago1503464006IN
Decentraland: Token Sale
2.47 ETH0.0004453621
Transfer41929132017-08-23 4:45:372459 days ago1503463537IN
Decentraland: Token Sale
2.478 ETH0.0004453621
Transfer41928742017-08-23 4:31:242459 days ago1503462684IN
Decentraland: Token Sale
2.478 ETH0.00044121
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
41709672017-08-17 22:51:392464 days ago1503010299
Decentraland: Token Sale
0.00007847 ETH
41709602017-08-17 22:47:252464 days ago1503010045
Decentraland: Token Sale
0.00001 ETH
41709262017-08-17 22:36:102464 days ago1503009370
Decentraland: Token Sale
0.00036615 ETH
41709242017-08-17 22:35:262464 days ago1503009326
Decentraland: Token Sale
0.00001 ETH
41709202017-08-17 22:34:042464 days ago1503009244
Decentraland: Token Sale
0.00036615 ETH
41709172017-08-17 22:33:202464 days ago1503009200
Decentraland: Token Sale
0.00036615 ETH
41709162017-08-17 22:33:172464 days ago1503009197
Decentraland: Token Sale
0.00036615 ETH
41709152017-08-17 22:32:462464 days ago1503009166
Decentraland: Token Sale
0.00036615 ETH
41709072017-08-17 22:31:172464 days ago1503009077
Decentraland: Token Sale
0.00036615 ETH
41709042017-08-17 22:30:472464 days ago1503009047
Decentraland: Token Sale
0.00036615 ETH
41708222017-08-17 22:03:152464 days ago1503007395
Decentraland: Token Sale
0.001 ETH
41707422017-08-17 21:38:022464 days ago1503005882
Decentraland: Token Sale
0.02347294 ETH
41707142017-08-17 21:27:522464 days ago1503005272
Decentraland: Token Sale
0.04 ETH
41707132017-08-17 21:27:422464 days ago1503005262
Decentraland: Token Sale
0.01 ETH
41707132017-08-17 21:27:422464 days ago1503005262
Decentraland: Token Sale
0.001 ETH
41707112017-08-17 21:27:052464 days ago1503005225
Decentraland: Token Sale
0.0001 ETH
41707022017-08-17 21:22:292464 days ago1503004949
Decentraland: Token Sale
0.9 ETH
41707022017-08-17 21:22:292464 days ago1503004949
Decentraland: Token Sale
6 ETH
41707022017-08-17 21:22:292464 days ago1503004949
Decentraland: Token Sale
5.1 ETH
41707022017-08-17 21:22:292464 days ago1503004949
Decentraland: Token Sale
2 ETH
41707022017-08-17 21:22:292464 days ago1503004949
Decentraland: Token Sale
2.8 ETH
41707022017-08-17 21:22:292464 days ago1503004949
Decentraland: Token Sale
2 ETH
41707022017-08-17 21:22:292464 days ago1503004949
Decentraland: Token Sale
3 ETH
41707022017-08-17 21:22:292464 days ago1503004949
Decentraland: Token Sale
18 ETH
41707022017-08-17 21:22:292464 days ago1503004949
Decentraland: Token Sale
5 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MANACrowdsale

Compiler Version
v0.4.11+commit.68ef5810

Optimization Enabled:
Yes with 0 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2017-08-15
*/

pragma solidity ^0.4.11;

contract Ownable {
  address public owner;


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() {
    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) onlyOwner {
    if (newOwner != address(0)) {
      owner = newOwner;
    }
  }

}

contract Pausable is Ownable {
  event Pause();
  event Unpause();

  bool public paused = false;


  /**
   * @dev modifier to allow actions only when the contract IS paused
   */
  modifier whenNotPaused() {
    require(!paused);
    _;
  }

  /**
   * @dev modifier to allow actions only when the contract IS NOT paused
   */
  modifier whenPaused {
    require(paused);
    _;
  }

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

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

contract ERC20Basic {
  uint256 public totalSupply;
  function balanceOf(address who) constant returns (uint256);
  function transfer(address to, uint256 value) returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) constant returns (uint256);
  function transferFrom(address from, address to, uint256 value) returns (bool);
  function approve(address spender, uint256 value) returns (bool);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
  function mul(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal constant 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 constant returns (uint256) {
    assert(b <= a);
    return a - b;
  }

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

contract Crowdsale {
  using SafeMath for uint256;

  // The token being sold
  MintableToken public token;

  // start and end block where investments are allowed (both inclusive)
  uint256 public startBlock;
  uint256 public endBlock;

  // address where funds are collected
  address public wallet;

  // how many token units a buyer gets per wei
  uint256 public rate;

  // amount of raised money in wei
  uint256 public weiRaised;

  /**
   * event for token purchase logging
   * @param purchaser who paid for the tokens
   * @param beneficiary who got the tokens
   * @param value weis paid for purchase
   * @param amount amount of tokens purchased
   */
  event TokenPurchase(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount);


  function Crowdsale(uint256 _startBlock, uint256 _endBlock, uint256 _rate, address _wallet) {
    require(_startBlock >= block.number);
    require(_endBlock >= _startBlock);
    require(_rate > 0);
    require(_wallet != 0x0);

    token = createTokenContract();
    startBlock = _startBlock;
    endBlock = _endBlock;
    rate = _rate;
    wallet = _wallet;
  }

  // creates the token to be sold.
  // override this method to have crowdsale of a specific mintable token.
  function createTokenContract() internal returns (MintableToken) {
    return new MintableToken();
  }


  // fallback function can be used to buy tokens
  function () payable {
    buyTokens(msg.sender);
  }

  // low level token purchase function
  function buyTokens(address beneficiary) payable {
    require(beneficiary != 0x0);
    require(validPurchase());

    uint256 weiAmount = msg.value;

    // calculate token amount to be created
    uint256 tokens = weiAmount.mul(rate);

    // update state
    weiRaised = weiRaised.add(weiAmount);

    token.mint(beneficiary, tokens);
    TokenPurchase(msg.sender, beneficiary, weiAmount, tokens);

    forwardFunds();
  }

  // send ether to the fund collection wallet
  // override to create custom fund forwarding mechanisms
  function forwardFunds() internal {
    wallet.transfer(msg.value);
  }

  // @return true if the transaction can buy tokens
  function validPurchase() internal constant returns (bool) {
    uint256 current = block.number;
    bool withinPeriod = current >= startBlock && current <= endBlock;
    bool nonZeroPurchase = msg.value != 0;
    return withinPeriod && nonZeroPurchase;
  }

  // @return true if crowdsale event has ended
  function hasEnded() public constant returns (bool) {
    return block.number > endBlock;
  }


}

contract WhitelistedCrowdsale is Crowdsale, Ownable {
    using SafeMath for uint256;

    // list of addresses that can purchase before crowdsale opens
    mapping (address => bool) public whitelist;

    function addToWhitelist(address buyer) public onlyOwner {
        require(buyer != 0x0);
        whitelist[buyer] = true;
    }

    // @return true if buyer is whitelisted
    function isWhitelisted(address buyer) public constant returns (bool) {
        return whitelist[buyer];
    }

    // overriding Crowdsale#validPurchase to add whitelist logic
    // @return true if buyers can buy at the moment
    function validPurchase() internal constant returns (bool) {
        // [TODO] issue with overriding and associativity of logical operators
        return super.validPurchase() || (!hasEnded() && isWhitelisted(msg.sender));
    }

}

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) returns (bool) {
    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) constant returns (uint256 balance) {
    return balances[_owner];
  }

}

contract ContinuousSale {
    using SafeMath for uint256;

    // time bucket size
    uint256 public constant BUCKET_SIZE = 12 hours;

    // the token being sold
    MintableToken public token;

    // address where funds are collected
    address public wallet;

    // amount of tokens emitted per wei
    uint256 public rate;

    // amount of raised money in wei
    uint256 public weiRaised;

    // max amount of tokens to mint per time bucket
    uint256 public issuance;

    // last time bucket from which tokens have been purchased
    uint256 public lastBucket = 0;

    // amount issued in the last bucket
    uint256 public bucketAmount = 0;

    event TokenPurchase(address indexed investor, address indexed beneficiary, uint256 weiAmount, uint256 tokens);

    function ContinuousSale(
        uint256 _rate,
        address _wallet,
        MintableToken _token
    ) {
        require(_rate != 0);
        require(_wallet != 0);
        // require(address(token) != 0x0);

        rate = _rate;
        wallet = _wallet;
        token = _token;
    }

    function() payable {
        buyTokens(msg.sender);
    }

    function buyTokens(address beneficiary) public payable {
        require(beneficiary != 0x0);
        require(msg.value != 0);

        prepareContinuousPurchase();
        uint256 tokens = processPurchase(beneficiary);
        checkContinuousPurchase(tokens);
    }

    function prepareContinuousPurchase() internal {
        uint256 timestamp = block.timestamp;
        uint256 bucket = timestamp - (timestamp % BUCKET_SIZE);

        if (bucket > lastBucket) {
            lastBucket = bucket;
            bucketAmount = 0;
        }
    }

    function checkContinuousPurchase(uint256 tokens) internal {
        uint256 updatedBucketAmount = bucketAmount.add(tokens);
        require(updatedBucketAmount <= issuance);

        bucketAmount = updatedBucketAmount;
    }

    function processPurchase(address beneficiary) internal returns(uint256) {
        uint256 weiAmount = msg.value;

        // calculate token amount to be created
        uint256 tokens = weiAmount.mul(rate);

        // update state
        weiRaised = weiRaised.add(weiAmount);

        token.mint(beneficiary, tokens);
        TokenPurchase(msg.sender, beneficiary, weiAmount, tokens);

        forwardFunds();

        return tokens;
    }

    function forwardFunds() internal {
        wallet.transfer(msg.value);
    }
}

contract StandardToken is ERC20, BasicToken {

  mapping (address => mapping (address => uint256)) allowed;


  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amout of tokens to be transfered
   */
  function transferFrom(address _from, address _to, uint256 _value) returns (bool) {
    var _allowance = allowed[_from][msg.sender];

    // Check is not needed because sub(_allowance, _value) will already throw if this condition is not met
    // require (_value <= _allowance);

    balances[_to] = balances[_to].add(_value);
    balances[_from] = balances[_from].sub(_value);
    allowed[_from][msg.sender] = _allowance.sub(_value);
    Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @dev Aprove the passed address to spend the specified amount of tokens on behalf of msg.sender.
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) returns (bool) {

    // To change the approve amount you first have to reduce the addresses`
    //  allowance to zero by calling `approve(_spender, 0)` if it is not
    //  already 0 to mitigate the race condition described here:
    //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
    require((_value == 0) || (allowed[msg.sender][_spender] == 0));

    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 specifing the amount of tokens still avaible for the spender.
   */
  function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
    return allowed[_owner][_spender];
  }

}

contract BurnableToken is StandardToken {

    event Burn(address indexed burner, uint256 value);

    /**
     * @dev Burns a specified amount of tokens.
     * @param _value The amount of tokens to burn.
     */
    function burn(uint256 _value) public {
        require(_value > 0);

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

}

contract PausableToken is StandardToken, Pausable {

  function transfer(address _to, uint _value) whenNotPaused returns (bool) {
    return super.transfer(_to, _value);
  }

  function transferFrom(address _from, address _to, uint _value) whenNotPaused returns (bool) {
    return super.transferFrom(_from, _to, _value);
  }
}

contract MANAContinuousSale is ContinuousSale, Ownable {

    uint256 public constant INFLATION = 8;

    bool public started = false;

    event RateChange(uint256 amount);

    event WalletChange(address wallet);

    function MANAContinuousSale(
        uint256 _rate,
        address _wallet,
        MintableToken _token
    ) ContinuousSale(_rate, _wallet, _token) {
    }

    modifier whenStarted() {
        require(started);
        _;
    }

    function start() onlyOwner {
        require(!started);

        // initialize issuance
        uint256 finalSupply = token.totalSupply();
        uint256 annualIssuance = finalSupply.mul(INFLATION).div(100);
        issuance = annualIssuance.mul(BUCKET_SIZE).div(1 years);

        started = true;
    }

    function buyTokens(address beneficiary) whenStarted public payable {
        super.buyTokens(beneficiary);
    }

    function setWallet(address _wallet) onlyOwner {
        require(_wallet != 0x0);
        wallet = _wallet;
        WalletChange(_wallet);
    }

    function setRate(uint256 _rate) onlyOwner {
        rate = _rate;
        RateChange(_rate);
    }

    function unpauseToken() onlyOwner {
        MANAToken(token).unpause();
    }

    function pauseToken() onlyOwner {
        MANAToken(token).pause();
    }
}

contract FinalizableCrowdsale is Crowdsale, Ownable {
  using SafeMath for uint256;

  bool public isFinalized = false;

  event Finalized();

  // should be called after crowdsale ends, to do
  // some extra finalization work
  function finalize() onlyOwner {
    require(!isFinalized);
    require(hasEnded());

    finalization();
    Finalized();

    isFinalized = true;
  }

  // end token minting on finalization
  // override this with custom logic if needed
  function finalization() internal {
    token.finishMinting();
  }



}

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

  bool public mintingFinished = false;


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

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

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

contract MANAToken is BurnableToken, PausableToken, MintableToken {

    string public constant symbol = "MANA";

    string public constant name = "Decentraland MANA";

    uint8 public constant decimals = 18;

    function burn(uint256 _value) whenNotPaused public {
        super.burn(_value);
    }
}

contract CappedCrowdsale is Crowdsale {
  using SafeMath for uint256;

  uint256 public cap;

  function CappedCrowdsale(uint256 _cap) {
    require(_cap > 0);
    cap = _cap;
  }

  // overriding Crowdsale#validPurchase to add extra cap logic
  // @return true if investors can buy at the moment
  function validPurchase() internal constant returns (bool) {
    bool withinCap = weiRaised.add(msg.value) <= cap;
    return super.validPurchase() && withinCap;
  }

  // overriding Crowdsale#hasEnded to add cap logic
  // @return true if crowdsale event has ended
  function hasEnded() public constant returns (bool) {
    bool capReached = weiRaised >= cap;
    return super.hasEnded() || capReached;
  }

}

contract MANACrowdsale is WhitelistedCrowdsale, CappedCrowdsale, FinalizableCrowdsale {

    uint256 public constant TOTAL_SHARE = 100;
    uint256 public constant CROWDSALE_SHARE = 40;
    uint256 public constant FOUNDATION_SHARE = 60;

    // price at which whitelisted buyers will be able to buy tokens
    uint256 public preferentialRate;

    // customize the rate for each whitelisted buyer
    mapping (address => uint256) public buyerRate;

    // initial rate at which tokens are offered
    uint256 public initialRate;

    // end rate at which tokens are offered
    uint256 public endRate;

    // continuous crowdsale contract
    MANAContinuousSale public continuousSale;

    event WalletChange(address wallet);

    event PreferentialRateChange(address indexed buyer, uint256 rate);

    event InitialRateChange(uint256 rate);

    event EndRateChange(uint256 rate);

    function MANACrowdsale(
        uint256 _startBlock,
        uint256 _endBlock,
        uint256 _initialRate,
        uint256 _endRate,
        uint256 _preferentialRate,
        address _wallet
    )
        CappedCrowdsale(86206 ether)
        WhitelistedCrowdsale()
        FinalizableCrowdsale()
        Crowdsale(_startBlock, _endBlock, _initialRate, _wallet)
    {
        require(_initialRate > 0);
        require(_endRate > 0);
        require(_preferentialRate > 0);

        initialRate = _initialRate;
        endRate = _endRate;
        preferentialRate = _preferentialRate;

        continuousSale = createContinuousSaleContract();

        MANAToken(token).pause();
    }

    function createTokenContract() internal returns(MintableToken) {
        return new MANAToken();
    }

    function createContinuousSaleContract() internal returns(MANAContinuousSale) {
        return new MANAContinuousSale(rate, wallet, token);
    }

    function setBuyerRate(address buyer, uint256 rate) onlyOwner public {
        require(rate != 0);
        require(isWhitelisted(buyer));
        require(block.number < startBlock);

        buyerRate[buyer] = rate;

        PreferentialRateChange(buyer, rate);
    }

    function setInitialRate(uint256 rate) onlyOwner public {
        require(rate != 0);
        require(block.number < startBlock);

        initialRate = rate;

        InitialRateChange(rate);
    }

    function setEndRate(uint256 rate) onlyOwner public {
        require(rate != 0);
        require(block.number < startBlock);

        endRate = rate;

        EndRateChange(rate);
    }

    function getRate() internal returns(uint256) {
        // some early buyers are offered a discount on the crowdsale price
        if (buyerRate[msg.sender] != 0) {
            return buyerRate[msg.sender];
        }

        // whitelisted buyers can purchase at preferential price before crowdsale ends
        if (isWhitelisted(msg.sender)) {
            return preferentialRate;
        }

        // otherwise compute the price for the auction
        uint256 elapsed = block.number - startBlock;
        uint256 rateRange = initialRate - endRate;
        uint256 blockRange = endBlock - startBlock;

        return initialRate.sub(rateRange.mul(elapsed).div(blockRange));
    }

    // low level token purchase function
    function buyTokens(address beneficiary) payable {
        require(beneficiary != 0x0);
        require(validPurchase());

        uint256 weiAmount = msg.value;
        uint256 updatedWeiRaised = weiRaised.add(weiAmount);

        uint256 rate = getRate();
        // calculate token amount to be created
        uint256 tokens = weiAmount.mul(rate);

        // update state
        weiRaised = updatedWeiRaised;

        token.mint(beneficiary, tokens);
        TokenPurchase(msg.sender, beneficiary, weiAmount, tokens);

        forwardFunds();
    }

    function setWallet(address _wallet) onlyOwner public {
        require(_wallet != 0x0);
        wallet = _wallet;
        continuousSale.setWallet(_wallet);
        WalletChange(_wallet);
    }

    function unpauseToken() onlyOwner {
        require(isFinalized);
        MANAToken(token).unpause();
    }

    function pauseToken() onlyOwner {
        require(isFinalized);
        MANAToken(token).pause();
    }


    function beginContinuousSale() onlyOwner public {
        require(isFinalized);

        token.transferOwnership(continuousSale);

        continuousSale.start();
        continuousSale.transferOwnership(owner);
    }

    function finalization() internal {
        uint256 totalSupply = token.totalSupply();
        uint256 finalSupply = TOTAL_SHARE.mul(totalSupply).div(CROWDSALE_SHARE);

        // emit tokens for the foundation
        token.mint(wallet, FOUNDATION_SHARE.mul(finalSupply).div(TOTAL_SHARE));

        // NOTE: cannot call super here because it would finish minting and
        // the continuous sale would not be able to proceed
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"endBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"pauseToken","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"FOUNDATION_SHARE","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"buyer","type":"address"}],"name":"isWhitelisted","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"buyer","type":"address"},{"name":"rate","type":"uint256"}],"name":"setBuyerRate","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"startBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"unpauseToken","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"preferentialRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"continuousSale","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"buyerRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isFinalized","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"initialRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"rate","type":"uint256"}],"name":"setInitialRate","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"TOTAL_SHARE","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"endRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"CROWDSALE_SHARE","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_wallet","type":"address"}],"name":"setWallet","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"rate","type":"uint256"}],"name":"setEndRate","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"buyer","type":"address"}],"name":"addToWhitelist","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"beginContinuousSale","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_startBlock","type":"uint256"},{"name":"_endBlock","type":"uint256"},{"name":"_initialRate","type":"uint256"},{"name":"_endRate","type":"uint256"},{"name":"_preferentialRate","type":"uint256"},{"name":"_wallet","type":"address"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"wallet","type":"address"}],"name":"WalletChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"buyer","type":"address"},{"indexed":false,"name":"rate","type":"uint256"}],"name":"PreferentialRateChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"rate","type":"uint256"}],"name":"InitialRateChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"rate","type":"uint256"}],"name":"EndRateChange","type":"event"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"}]

60606040526009805460ff1916905534156200001757fe5b60405160c0806200416983398101604090815281516020830151918301516060840151608085015160a090950151929491929091905b6912413c9365097c3800005b5b868686845b438410156200006e5760006000fd5b838310156200007d5760006000fd5b600082116200008c5760006000fd5b600160a060020a0381161515620000a35760006000fd5b620000bb640100000000620010f96200021c82021704565b60008054600160a060020a0319908116600160a060020a0393841617909155600186905560028590556004849055600380549091169183169190911790555b505060068054600160a060020a03191633600160a060020a031617905550505b60008111620001295760006000fd5b60088190555b50600084116200013f5760006000fd5b600083116200014e5760006000fd5b600082116200015d5760006000fd5b600c849055600d839055600a829055620001846401000000006200111d6200024382021704565b600e8054600160a060020a031916600160a060020a039283161790556000805460408051602090810184905281517f8456cb5900000000000000000000000000000000000000000000000000000000815291519290941693638456cb599360048084019492938390030190829087803b1515620001fd57fe5b6102c65a03f115156200020c57fe5b5050505b505050505050620002c2565b600062000228620002a0565b60405190819003906000f08015156200023d57fe5b90505b90565b60045460035460008054909291600160a060020a03908116911662000267620002b1565b928352600160a060020a039182166020840152166040808301919091525190819003606001906000f08015156200023d57fe5b90505b90565b604051610c278062002aff83390190565b604051610a43806200372683390190565b61282d80620002d26000396000f3006060604052361561016f5763ffffffff60e060020a600035041663083c632381146101815780632c349627146101a35780632c4e722e146101b5578063355274ea146101d75780633723f149146101f95780633af32abf1461021b5780634042b66f1461024b578063467523fa1461026d57806348cd4cb11461028e5780634bb278f3146102b057806350669a03146102c2578063521eb273146102d45780635fbff3e21461030057806385bb8e29146103225780638660b2201461034e5780638d4e40831461037c5780638da5cb5b146103a05780639b19251a146103cc5780639e51051f146103fc578063abe3dfd11461041e578063bf41e16f14610433578063c505ebce14610455578063d9719e5614610477578063deaa59df14610499578063dfb87be1146104b7578063e43252d7146104cc578063e83f682a146104ea578063ec8ac4d8146104fc578063ecb70fb714610512578063f2fde38b14610536578063fc0c546a14610554575b61017f5b61017c33610580565b5b565b005b341561018957fe5b6101916106ad565b60408051918252519081900360200190f35b34156101ab57fe5b61017f6106b3565b005b34156101bd57fe5b610191610751565b60408051918252519081900360200190f35b34156101df57fe5b610191610757565b60408051918252519081900360200190f35b341561020157fe5b61019161075d565b60408051918252519081900360200190f35b341561022357fe5b610237600160a060020a0360043516610762565b604080519115158252519081900360200190f35b341561025357fe5b610191610784565b60408051918252519081900360200190f35b341561027557fe5b61017f600160a060020a036004351660243561078a565b005b341561029657fe5b61019161082d565b60408051918252519081900360200190f35b34156102b857fe5b61017f610833565b005b34156102ca57fe5b61017f6108b6565b005b34156102dc57fe5b6102e4610954565b60408051600160a060020a039092168252519081900360200190f35b341561030857fe5b610191610963565b60408051918252519081900360200190f35b341561032a57fe5b6102e4610969565b60408051600160a060020a039092168252519081900360200190f35b341561035657fe5b610191600160a060020a0360043516610978565b60408051918252519081900360200190f35b341561038457fe5b61023761098a565b604080519115158252519081900360200190f35b34156103a857fe5b6102e4610993565b60408051600160a060020a039092168252519081900360200190f35b34156103d457fe5b610237600160a060020a03600435166109a2565b604080519115158252519081900360200190f35b341561040457fe5b6101916109b7565b60408051918252519081900360200190f35b341561042657fe5b61017f6004356109bd565b005b341561043b57fe5b610191610a32565b60408051918252519081900360200190f35b341561045d57fe5b610191610a37565b60408051918252519081900360200190f35b341561047f57fe5b610191610a3d565b60408051918252519081900360200190f35b34156104a157fe5b61017f600160a060020a0360043516610a42565b005b34156104bf57fe5b61017f600435610b29565b005b34156104d457fe5b61017f600160a060020a0360043516610b9e565b005b34156104f257fe5b61017f610bf8565b005b61017f600160a060020a0360043516610580565b005b341561051a57fe5b610237610d3f565b604080519115158252519081900360200190f35b341561053e57fe5b61017f600160a060020a0360043516610d62565b005b341561055c57fe5b6102e4610dae565b60408051600160a060020a039092168252519081900360200190f35b6000808080600160a060020a038516151561059b5760006000fd5b6105a3610dbd565b15156105af5760006000fd5b6005543494506105c5908563ffffffff610df516565b92506105cf610e0f565b91506105e1848363ffffffff610ec016565b600584905560008054604080516020908101849052815160e060020a6340c10f19028152600160a060020a038b8116600483015260248201879052925195965091909216936340c10f1993604480840194938390030190829087803b151561064557fe5b6102c65a03f1151561065357fe5b505060408051868152602081018490528151600160a060020a03808a1694503316927f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18928290030190a36106a5610eef565b5b5050505050565b60025481565b60065433600160a060020a039081169116146106cf5760006000fd5b60095460ff1615156106e15760006000fd5b600060009054906101000a9004600160a060020a0316600160a060020a0316638456cb596000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b151561073c57fe5b6102c65a03f1151561074a57fe5b5050505b5b565b60045481565b60085481565b603c81565b600160a060020a03811660009081526007602052604090205460ff165b919050565b60055481565b60065433600160a060020a039081169116146107a65760006000fd5b8015156107b35760006000fd5b6107bc82610762565b15156107c85760006000fd5b60015443106107d75760006000fd5b600160a060020a0382166000818152600b6020908152604091829020849055815184815291517f0f3ae419c756d7584b97a00ed889018a8f499d13dcdac1c7b3a95c7ca1f37f669281900390910190a25b5b5050565b60015481565b60065433600160a060020a0390811691161461084f5760006000fd5b60095460ff16156108605760006000fd5b610868610d3f565b15156108745760006000fd5b61087c610f22565b6040517f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768190600090a16009805460ff191660011790555b5b565b60065433600160a060020a039081169116146108d25760006000fd5b60095460ff1615156108e45760006000fd5b600060009054906101000a9004600160a060020a0316600160a060020a0316633f4ba83a6000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b151561073c57fe5b6102c65a03f1151561074a57fe5b5050505b5b565b600354600160a060020a031681565b600a5481565b600e54600160a060020a031681565b600b6020526000908152604090205481565b60095460ff1681565b600654600160a060020a031681565b60076020526000908152604090205460ff1681565b600c5481565b60065433600160a060020a039081169116146109d95760006000fd5b8015156109e65760006000fd5b60015443106109f55760006000fd5b600c8190556040805182815290517f3148ac6288a0872fc7c29cb5374bddb5f87f89c836031267129f165a4c4c9b3e9181900360200190a15b5b50565b606481565b600d5481565b602881565b60065433600160a060020a03908116911614610a5e5760006000fd5b600160a060020a0381161515610a745760006000fd5b60038054600160a060020a031916600160a060020a03838116918217909255600e546040805160e060020a63deaa59df02815260048101939093525192169163deaa59df9160248082019260009290919082900301818387803b1515610ad657fe5b6102c65a03f11515610ae457fe5b505060408051600160a060020a038416815290517f3787b7480773021c225875ded0c374cfd0805e3061363fbbb447366e557c77a192509081900360200190a15b5b50565b60065433600160a060020a03908116911614610b455760006000fd5b801515610b525760006000fd5b6001544310610b615760006000fd5b600d8190556040805182815290517f34cbbef951e76a206451845af670e86419548f7a8a2fda19417ba9631fe2dc5d9181900360200190a15b5b50565b60065433600160a060020a03908116911614610bba5760006000fd5b600160a060020a0381161515610bd05760006000fd5b600160a060020a0381166000908152600760205260409020805460ff191660011790555b5b50565b60065433600160a060020a03908116911614610c145760006000fd5b60095460ff161515610c265760006000fd5b60008054600e546040805160e060020a63f2fde38b028152600160a060020a0392831660048201529051919092169263f2fde38b926024808201939182900301818387803b1515610c7357fe5b6102c65a03f11515610c8157fe5b5050600e546040805160e060020a63be9a65550281529051600160a060020a03909216925063be9a655591600480830192600092919082900301818387803b1515610cc857fe5b6102c65a03f11515610cd657fe5b5050600e546006546040805160e060020a63f2fde38b028152600160a060020a039283166004820152905191909216925063f2fde38b9160248082019260009290919082900301818387803b151561073c57fe5b6102c65a03f1151561074a57fe5b5050505b5b565b600854600554600091901015610d53611053565b80610d5b5750805b91505b5090565b60065433600160a060020a03908116911614610d7e5760006000fd5b600160a060020a03811615610a2e5760068054600160a060020a031916600160a060020a0383161790555b5b5b50565b600054600160a060020a031681565b60006000600854610dd934600554610df590919063ffffffff16565b11159050610de561105c565b8015610d5b5750805b91505b5090565b600082820183811015610e0457fe5b8091505b5092915050565b600160a060020a0333166000908152600b602052604081205481908190819015610e5357600160a060020a0333166000908152600b60205260409020549350610eba565b610e5c33610762565b15610e6b57600a549350610eba565b5050600154600d54600c54600254438490039450919003919003610eb7610ea882610e9c858763ffffffff610ec016565b9063ffffffff61108d16565b600c549063ffffffff6110aa16565b93505b50505090565b6000828202831580610edc5750828482811515610ed957fe5b04145b1515610e0457fe5b8091505b5092915050565b600354604051600160a060020a03909116903480156108fc02916000818181858888f19350505050151561017c57fe5b5b565b60008054604080516020908101849052815160e060020a6318160ddd02815291518493600160a060020a0316926318160ddd92600480830193919282900301818787803b1515610f6e57fe5b6102c65a03f11515610f7c57fe5b5050604051519250610fa890506028610e9c60648563ffffffff610ec016565b9063ffffffff61108d16565b600054600354919250600160a060020a03908116916340c10f199116610fe66064610e9c603c8763ffffffff610ec016565b9063ffffffff61108d16565b6000604051602001526040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b151561103d57fe5b6102c65a03f115156106a557fe5b5050505b5050565b60025443115b90565b60006110666110c1565b806110855750611074610d3f565b158015611085575061108533610762565b5b5b90505b90565b60006000828481151561109c57fe5b0490508091505b5092915050565b6000828211156110b657fe5b508082035b92915050565b600060006000600043925060015483101580156110e057506002548311155b915050341515818015610eb75750805b93505b50505090565b6000611103611177565b60405190819003906000f080151561108557fe5b90505b90565b60045460035460008054909291600160a060020a03908116911661113f611187565b928352600160a060020a039182166020840152166040808301919091525190819003606001906000f080151561108557fe5b90505b90565b604051610c278061119883390190565b604051610a4380611dbf83390190560060606040526003805460a060020a61ffff02191690555b60038054600160a060020a03191633600160a060020a03161790555b5b610be5806100426000396000f300606060405236156100e05763ffffffff60e060020a60003504166305d2035b81146100e257806306fdde0314610106578063095ea7b31461019657806318160ddd146101c957806323b872dd146101eb578063313ce567146102245780633f4ba83a1461024a57806340c10f191461026e57806342966c68146102a15780635c975abb146102b657806370a08231146102da5780637d64bcb4146103085780638456cb591461032c5780638da5cb5b1461035057806395d89b411461037c578063a9059cbb1461040c578063dd62ed3e1461043f578063f2fde38b14610473575bfe5b34156100ea57fe5b6100f2610491565b604080519115158252519081900360200190f35b341561010e57fe5b6101166104a1565b60408051602080825283518183015283519192839290830191850190808383821561015c575b80518252602083111561015c57601f19909201916020918201910161013c565b505050905090810190601f1680156101885780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561019e57fe5b6100f2600160a060020a03600435166024356104cf565b604080519115158252519081900360200190f35b34156101d157fe5b6101d9610574565b60408051918252519081900360200190f35b34156101f357fe5b6100f2600160a060020a036004358116906024351660443561057a565b604080519115158252519081900360200190f35b341561022c57fe5b6102346105ab565b6040805160ff9092168252519081900360200190f35b341561025257fe5b6100f26105b0565b604080519115158252519081900360200190f35b341561027657fe5b6100f2600160a060020a036004351660243561062a565b604080519115158252519081900360200190f35b34156102a957fe5b6102b46004356106fd565b005b34156102be57fe5b6100f2610723565b604080519115158252519081900360200190f35b34156102e257fe5b6101d9600160a060020a0360043516610733565b60408051918252519081900360200190f35b341561031057fe5b6100f2610752565b604080519115158252519081900360200190f35b341561033457fe5b6100f26107b8565b604080519115158252519081900360200190f35b341561035857fe5b610360610837565b60408051600160a060020a039092168252519081900360200190f35b341561038457fe5b610116610846565b60408051602080825283518183015283519192839290830191850190808383821561015c575b80518252602083111561015c57601f19909201916020918201910161013c565b505050905090810190601f1680156101885780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561041457fe5b6100f2600160a060020a0360043516602435610867565b604080519115158252519081900360200190f35b341561044757fe5b6101d9600160a060020a0360043581169060243516610896565b60408051918252519081900360200190f35b341561047b57fe5b6102b4600160a060020a03600435166108c3565b005b60035460a860020a900460ff1681565b6040805180820190915260118152607860020a70446563656e7472616c616e64204d414e4102602082015281565b60008115806105015750600160a060020a03338116600090815260026020908152604080832093871683529290522054155b151561050d5760006000fd5b600160a060020a03338116600081815260026020908152604080832094881680845294825291829020869055815186815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35060015b92915050565b60005481565b60035460009060a060020a900460ff16156105955760006000fd5b6105a084848461090f565b90505b5b9392505050565b601281565b60035460009033600160a060020a039081169116146105cf5760006000fd5b60035460a060020a900460ff1615156105e85760006000fd5b6003805460a060020a60ff02191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a15060015b5b5b90565b60035460009033600160a060020a039081169116146106495760006000fd5b60035460a860020a900460ff16156106615760006000fd5b600054610674908363ffffffff610a1216565b6000908155600160a060020a03841681526001602052604090205461069f908363ffffffff610a1216565b600160a060020a038416600081815260016020908152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a25060015b5b5b92915050565b60035460a060020a900460ff16156107155760006000fd5b61071e81610a2c565b5b5b50565b60035460a060020a900460ff1681565b600160a060020a0381166000908152600160205260409020545b919050565b60035460009033600160a060020a039081169116146107715760006000fd5b6003805460a860020a60ff02191660a860020a1790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a15060015b5b90565b60035460009033600160a060020a039081169116146107d75760006000fd5b60035460a060020a900460ff16156107ef5760006000fd5b6003805460a060020a60ff02191660a060020a1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a15060015b5b5b90565b600354600160a060020a031681565b604080518082019091526004815260e060020a634d414e4102602082015281565b60035460009060a060020a900460ff16156108825760006000fd5b61088c8383610ad4565b90505b5b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a039081169116146108df5760006000fd5b600160a060020a0381161561071e5760038054600160a060020a031916600160a060020a0383161790555b5b5b50565b600160a060020a038084166000908152600260209081526040808320338516845282528083205493861683526001909152812054909190610956908463ffffffff610a1216565b600160a060020a03808616600090815260016020526040808220939093559087168152205461098b908463ffffffff610b8216565b600160a060020a0386166000908152600160205260409020556109b4818463ffffffff610b8216565b600160a060020a03808716600081815260026020908152604080832033861684528252918290209490945580518781529051928816939192600080516020610b9a833981519152929181900390910190a3600191505b509392505050565b600082820183811015610a2157fe5b8091505b5092915050565b6000808211610a3b5760006000fd5b5033600160a060020a038116600090815260016020526040902054610a609083610b82565b600160a060020a03821660009081526001602052604081209190915554610a8d908363ffffffff610b8216565b600055604080518381529051600160a060020a033316917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25b5050565b600160a060020a033316600090815260016020526040812054610afd908363ffffffff610b8216565b600160a060020a033381166000908152600160205260408082209390935590851681522054610b32908363ffffffff610a1216565b600160a060020a03808516600081815260016020908152604091829020949094558051868152905191933390931692600080516020610b9a83398151915292918290030190a35060015b92915050565b600082821115610b8e57fe5b508082035b929150505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820f462e7242c33877d5d2f087a81cc0a589147f1cf578ce7fc53451e7ce4fb376f00296060604052600060058190556006556007805460a060020a60ff0219169055341561002657fe5b604051606080610a438339810160409081528151602083015191909201515b5b8282825b8215156100575760006000fd5b600160a060020a038216151561006d5760006000fd5b600283905560018054600160a060020a03808516600160a060020a03199283161790925560008054928416929091169190911790555b505060078054600160a060020a03191633600160a060020a0316179055505b5b5050505b61096d806100d66000396000f300606060405236156100e05763ffffffff60e060020a60003504166312c5502781146100f25780631f2698ab146101145780632958263a146101385780632c3496271461015a5780632c4e722e1461016c57806334fcf4371461018e5780634042b66f146101a357806350669a03146101c5578063521eb273146101d75780636d20d6ae14610203578063863623bb146102255780638da5cb5b146102475780639227bed614610273578063be9a655514610295578063deaa59df146102a7578063ec8ac4d8146102c5578063f2fde38b146102db578063fc0c546a146102f9575b6100f05b6100ed33610325565b5b565b005b34156100fa57fe5b61010261034c565b60408051918252519081900360200190f35b341561011c57fe5b610124610352565b604080519115158252519081900360200190f35b341561014057fe5b610102610362565b60408051918252519081900360200190f35b341561016257fe5b6100f0610368565b005b341561017457fe5b6101026103f4565b60408051918252519081900360200190f35b341561019657fe5b6100f06004356103fa565b005b34156101ab57fe5b610102610453565b60408051918252519081900360200190f35b34156101cd57fe5b6100f0610459565b005b34156101df57fe5b6101e76104e5565b60408051600160a060020a039092168252519081900360200190f35b341561020b57fe5b6101026104f4565b60408051918252519081900360200190f35b341561022d57fe5b6101026104f9565b60408051918252519081900360200190f35b341561024f57fe5b6101e76104ff565b60408051600160a060020a039092168252519081900360200190f35b341561027b57fe5b61010261050e565b60408051918252519081900360200190f35b341561029d57fe5b6100f0610514565b005b34156102af57fe5b6100f0600160a060020a0360043516610629565b005b6100f0600160a060020a0360043516610325565b005b34156102e357fe5b6100f0600160a060020a03600435166106b1565b005b341561030157fe5b6101e76106fd565b60408051600160a060020a039092168252519081900360200190f35b60075460a060020a900460ff16151561033e5760006000fd5b6103478161070c565b5b5b50565b61a8c081565b60075460a060020a900460ff1681565b60055481565b60075433600160a060020a039081169116146103845760006000fd5b600060009054906101000a9004600160a060020a0316600160a060020a0316638456cb596000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b15156103df57fe5b6102c65a03f115156103ed57fe5b5050505b5b565b60025481565b60075433600160a060020a039081169116146104165760006000fd5b60028190556040805182815290517f0b6eb270e68ec2b65cffce354325dcd6cb2449e0e8fec1184cd58da0c7b0344b9181900360200190a15b5b50565b60035481565b60075433600160a060020a039081169116146104755760006000fd5b600060009054906101000a9004600160a060020a0316600160a060020a0316633f4ba83a6000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b15156103df57fe5b6102c65a03f115156103ed57fe5b5050505b5b565b600154600160a060020a031681565b600881565b60045481565b600754600160a060020a031681565b60065481565b600754600090819033600160a060020a039081169116146105355760006000fd5b60075460a060020a900460ff161561054d5760006000fd5b600060009054906101000a9004600160a060020a0316600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b15156105a857fe5b6102c65a03f115156105b657fe5b50506040515192506105e2905060646105d684600863ffffffff61075216565b9063ffffffff61078116565b905061060a6301e133806105d68361a8c063ffffffff61075216565b9063ffffffff61078116565b6004556007805460a060020a60ff02191660a060020a1790555b5b5050565b60075433600160a060020a039081169116146106455760006000fd5b600160a060020a038116151561065b5760006000fd5b60018054600160a060020a038316600160a060020a0319909116811790915560408051918252517f3787b7480773021c225875ded0c374cfd0805e3061363fbbb447366e557c77a19181900360200190a15b5b50565b60075433600160a060020a039081169116146106cd5760006000fd5b600160a060020a038116156103475760078054600160a060020a031916600160a060020a0383161790555b5b5b50565b600054600160a060020a031681565b6000600160a060020a03821615156107245760006000fd5b3415156107315760006000fd5b61073961079e565b610742826107c5565b9050610624816108c1565b5b5050565b600082820283158061076e575082848281151561076b57fe5b04145b151561077657fe5b8091505b5092915050565b60006000828481151561079057fe5b0490508091505b5092915050565b42600061a8c0825b068203905060055481111561062457600581905560006006555b5b5050565b600254600090349082906107e090839063ffffffff61075216565b6003549091506107f6908363ffffffff6108f416565b60035560008054604080516020908101849052815160e060020a6340c10f19028152600160a060020a03898116600483015260248201879052925192909316936340c10f199360448082019492918390030190829087803b151561085657fe5b6102c65a03f1151561086457fe5b505060408051848152602081018490528151600160a060020a0380891694503316927f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18928290030190a36108b661090e565b8092505b5050919050565b6006546000906108d7908363ffffffff6108f416565b6004549091508111156108ea5760006000fd5b60068190555b5050565b60008282018381101561077657fe5b8091505b5092915050565b600154604051600160a060020a03909116903480156108fc02916000818181858888f1935050505015156100ed57fe5b5b5600a165627a7a7230582091f46278e0d3b41baaf3dcfcffacb32577388fe89da6edbd51f41b8c3a0da8160029a165627a7a7230582069c7deb7b84443de079696c9d4ab746f3bee5f0319c60222a25c578c80fe3517002960606040526003805460a060020a61ffff02191690555b60038054600160a060020a03191633600160a060020a03161790555b5b610be5806100426000396000f300606060405236156100e05763ffffffff60e060020a60003504166305d2035b81146100e257806306fdde0314610106578063095ea7b31461019657806318160ddd146101c957806323b872dd146101eb578063313ce567146102245780633f4ba83a1461024a57806340c10f191461026e57806342966c68146102a15780635c975abb146102b657806370a08231146102da5780637d64bcb4146103085780638456cb591461032c5780638da5cb5b1461035057806395d89b411461037c578063a9059cbb1461040c578063dd62ed3e1461043f578063f2fde38b14610473575bfe5b34156100ea57fe5b6100f2610491565b604080519115158252519081900360200190f35b341561010e57fe5b6101166104a1565b60408051602080825283518183015283519192839290830191850190808383821561015c575b80518252602083111561015c57601f19909201916020918201910161013c565b505050905090810190601f1680156101885780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561019e57fe5b6100f2600160a060020a03600435166024356104cf565b604080519115158252519081900360200190f35b34156101d157fe5b6101d9610574565b60408051918252519081900360200190f35b34156101f357fe5b6100f2600160a060020a036004358116906024351660443561057a565b604080519115158252519081900360200190f35b341561022c57fe5b6102346105ab565b6040805160ff9092168252519081900360200190f35b341561025257fe5b6100f26105b0565b604080519115158252519081900360200190f35b341561027657fe5b6100f2600160a060020a036004351660243561062a565b604080519115158252519081900360200190f35b34156102a957fe5b6102b46004356106fd565b005b34156102be57fe5b6100f2610723565b604080519115158252519081900360200190f35b34156102e257fe5b6101d9600160a060020a0360043516610733565b60408051918252519081900360200190f35b341561031057fe5b6100f2610752565b604080519115158252519081900360200190f35b341561033457fe5b6100f26107b8565b604080519115158252519081900360200190f35b341561035857fe5b610360610837565b60408051600160a060020a039092168252519081900360200190f35b341561038457fe5b610116610846565b60408051602080825283518183015283519192839290830191850190808383821561015c575b80518252602083111561015c57601f19909201916020918201910161013c565b505050905090810190601f1680156101885780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561041457fe5b6100f2600160a060020a0360043516602435610867565b604080519115158252519081900360200190f35b341561044757fe5b6101d9600160a060020a0360043581169060243516610896565b60408051918252519081900360200190f35b341561047b57fe5b6102b4600160a060020a03600435166108c3565b005b60035460a860020a900460ff1681565b6040805180820190915260118152607860020a70446563656e7472616c616e64204d414e4102602082015281565b60008115806105015750600160a060020a03338116600090815260026020908152604080832093871683529290522054155b151561050d5760006000fd5b600160a060020a03338116600081815260026020908152604080832094881680845294825291829020869055815186815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35060015b92915050565b60005481565b60035460009060a060020a900460ff16156105955760006000fd5b6105a084848461090f565b90505b5b9392505050565b601281565b60035460009033600160a060020a039081169116146105cf5760006000fd5b60035460a060020a900460ff1615156105e85760006000fd5b6003805460a060020a60ff02191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a15060015b5b5b90565b60035460009033600160a060020a039081169116146106495760006000fd5b60035460a860020a900460ff16156106615760006000fd5b600054610674908363ffffffff610a1216565b6000908155600160a060020a03841681526001602052604090205461069f908363ffffffff610a1216565b600160a060020a038416600081815260016020908152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a25060015b5b5b92915050565b60035460a060020a900460ff16156107155760006000fd5b61071e81610a2c565b5b5b50565b60035460a060020a900460ff1681565b600160a060020a0381166000908152600160205260409020545b919050565b60035460009033600160a060020a039081169116146107715760006000fd5b6003805460a860020a60ff02191660a860020a1790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a15060015b5b90565b60035460009033600160a060020a039081169116146107d75760006000fd5b60035460a060020a900460ff16156107ef5760006000fd5b6003805460a060020a60ff02191660a060020a1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a15060015b5b5b90565b600354600160a060020a031681565b604080518082019091526004815260e060020a634d414e4102602082015281565b60035460009060a060020a900460ff16156108825760006000fd5b61088c8383610ad4565b90505b5b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a039081169116146108df5760006000fd5b600160a060020a0381161561071e5760038054600160a060020a031916600160a060020a0383161790555b5b5b50565b600160a060020a038084166000908152600260209081526040808320338516845282528083205493861683526001909152812054909190610956908463ffffffff610a1216565b600160a060020a03808616600090815260016020526040808220939093559087168152205461098b908463ffffffff610b8216565b600160a060020a0386166000908152600160205260409020556109b4818463ffffffff610b8216565b600160a060020a03808716600081815260026020908152604080832033861684528252918290209490945580518781529051928816939192600080516020610b9a833981519152929181900390910190a3600191505b509392505050565b600082820183811015610a2157fe5b8091505b5092915050565b6000808211610a3b5760006000fd5b5033600160a060020a038116600090815260016020526040902054610a609083610b82565b600160a060020a03821660009081526001602052604081209190915554610a8d908363ffffffff610b8216565b600055604080518381529051600160a060020a033316917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25b5050565b600160a060020a033316600090815260016020526040812054610afd908363ffffffff610b8216565b600160a060020a033381166000908152600160205260408082209390935590851681522054610b32908363ffffffff610a1216565b600160a060020a03808516600081815260016020908152604091829020949094558051868152905191933390931692600080516020610b9a83398151915292918290030190a35060015b92915050565b600082821115610b8e57fe5b508082035b929150505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820f462e7242c33877d5d2f087a81cc0a589147f1cf578ce7fc53451e7ce4fb376f00296060604052600060058190556006556007805460a060020a60ff0219169055341561002657fe5b604051606080610a438339810160409081528151602083015191909201515b5b8282825b8215156100575760006000fd5b600160a060020a038216151561006d5760006000fd5b600283905560018054600160a060020a03808516600160a060020a03199283161790925560008054928416929091169190911790555b505060078054600160a060020a03191633600160a060020a0316179055505b5b5050505b61096d806100d66000396000f300606060405236156100e05763ffffffff60e060020a60003504166312c5502781146100f25780631f2698ab146101145780632958263a146101385780632c3496271461015a5780632c4e722e1461016c57806334fcf4371461018e5780634042b66f146101a357806350669a03146101c5578063521eb273146101d75780636d20d6ae14610203578063863623bb146102255780638da5cb5b146102475780639227bed614610273578063be9a655514610295578063deaa59df146102a7578063ec8ac4d8146102c5578063f2fde38b146102db578063fc0c546a146102f9575b6100f05b6100ed33610325565b5b565b005b34156100fa57fe5b61010261034c565b60408051918252519081900360200190f35b341561011c57fe5b610124610352565b604080519115158252519081900360200190f35b341561014057fe5b610102610362565b60408051918252519081900360200190f35b341561016257fe5b6100f0610368565b005b341561017457fe5b6101026103f4565b60408051918252519081900360200190f35b341561019657fe5b6100f06004356103fa565b005b34156101ab57fe5b610102610453565b60408051918252519081900360200190f35b34156101cd57fe5b6100f0610459565b005b34156101df57fe5b6101e76104e5565b60408051600160a060020a039092168252519081900360200190f35b341561020b57fe5b6101026104f4565b60408051918252519081900360200190f35b341561022d57fe5b6101026104f9565b60408051918252519081900360200190f35b341561024f57fe5b6101e76104ff565b60408051600160a060020a039092168252519081900360200190f35b341561027b57fe5b61010261050e565b60408051918252519081900360200190f35b341561029d57fe5b6100f0610514565b005b34156102af57fe5b6100f0600160a060020a0360043516610629565b005b6100f0600160a060020a0360043516610325565b005b34156102e357fe5b6100f0600160a060020a03600435166106b1565b005b341561030157fe5b6101e76106fd565b60408051600160a060020a039092168252519081900360200190f35b60075460a060020a900460ff16151561033e5760006000fd5b6103478161070c565b5b5b50565b61a8c081565b60075460a060020a900460ff1681565b60055481565b60075433600160a060020a039081169116146103845760006000fd5b600060009054906101000a9004600160a060020a0316600160a060020a0316638456cb596000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b15156103df57fe5b6102c65a03f115156103ed57fe5b5050505b5b565b60025481565b60075433600160a060020a039081169116146104165760006000fd5b60028190556040805182815290517f0b6eb270e68ec2b65cffce354325dcd6cb2449e0e8fec1184cd58da0c7b0344b9181900360200190a15b5b50565b60035481565b60075433600160a060020a039081169116146104755760006000fd5b600060009054906101000a9004600160a060020a0316600160a060020a0316633f4ba83a6000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b15156103df57fe5b6102c65a03f115156103ed57fe5b5050505b5b565b600154600160a060020a031681565b600881565b60045481565b600754600160a060020a031681565b60065481565b600754600090819033600160a060020a039081169116146105355760006000fd5b60075460a060020a900460ff161561054d5760006000fd5b600060009054906101000a9004600160a060020a0316600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b15156105a857fe5b6102c65a03f115156105b657fe5b50506040515192506105e2905060646105d684600863ffffffff61075216565b9063ffffffff61078116565b905061060a6301e133806105d68361a8c063ffffffff61075216565b9063ffffffff61078116565b6004556007805460a060020a60ff02191660a060020a1790555b5b5050565b60075433600160a060020a039081169116146106455760006000fd5b600160a060020a038116151561065b5760006000fd5b60018054600160a060020a038316600160a060020a0319909116811790915560408051918252517f3787b7480773021c225875ded0c374cfd0805e3061363fbbb447366e557c77a19181900360200190a15b5b50565b60075433600160a060020a039081169116146106cd5760006000fd5b600160a060020a038116156103475760078054600160a060020a031916600160a060020a0383161790555b5b5b50565b600054600160a060020a031681565b6000600160a060020a03821615156107245760006000fd5b3415156107315760006000fd5b61073961079e565b610742826107c5565b9050610624816108c1565b5b5050565b600082820283158061076e575082848281151561076b57fe5b04145b151561077657fe5b8091505b5092915050565b60006000828481151561079057fe5b0490508091505b5092915050565b42600061a8c0825b068203905060055481111561062457600581905560006006555b5b5050565b600254600090349082906107e090839063ffffffff61075216565b6003549091506107f6908363ffffffff6108f416565b60035560008054604080516020908101849052815160e060020a6340c10f19028152600160a060020a03898116600483015260248201879052925192909316936340c10f199360448082019492918390030190829087803b151561085657fe5b6102c65a03f1151561086457fe5b505060408051848152602081018490528151600160a060020a0380891694503316927f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18928290030190a36108b661090e565b8092505b5050919050565b6006546000906108d7908363ffffffff6108f416565b6004549091508111156108ea5760006000fd5b60068190555b5050565b60008282018381101561077657fe5b8091505b5092915050565b600154604051600160a060020a03909116903480156108fc02916000818181858888f1935050505015156100ed57fe5b5b5600a165627a7a7230582091f46278e0d3b41baaf3dcfcffacb32577388fe89da6edbd51f41b8c3a0da816002900000000000000000000000000000000000000000000000000000000003fa3cc0000000000000000000000000000000000000000000000000000000000401e710000000000000000000000000000000000000000000000000000000000002f330000000000000000000000000000000000000000000000000000000000001c520000000000000000000000000000000000000000000000000000000000002f330000000000000000000000006bf917b4725ad736b33dbd493ad7a4b992150dab

Deployed Bytecode

0x6060604052361561016f5763ffffffff60e060020a600035041663083c632381146101815780632c349627146101a35780632c4e722e146101b5578063355274ea146101d75780633723f149146101f95780633af32abf1461021b5780634042b66f1461024b578063467523fa1461026d57806348cd4cb11461028e5780634bb278f3146102b057806350669a03146102c2578063521eb273146102d45780635fbff3e21461030057806385bb8e29146103225780638660b2201461034e5780638d4e40831461037c5780638da5cb5b146103a05780639b19251a146103cc5780639e51051f146103fc578063abe3dfd11461041e578063bf41e16f14610433578063c505ebce14610455578063d9719e5614610477578063deaa59df14610499578063dfb87be1146104b7578063e43252d7146104cc578063e83f682a146104ea578063ec8ac4d8146104fc578063ecb70fb714610512578063f2fde38b14610536578063fc0c546a14610554575b61017f5b61017c33610580565b5b565b005b341561018957fe5b6101916106ad565b60408051918252519081900360200190f35b34156101ab57fe5b61017f6106b3565b005b34156101bd57fe5b610191610751565b60408051918252519081900360200190f35b34156101df57fe5b610191610757565b60408051918252519081900360200190f35b341561020157fe5b61019161075d565b60408051918252519081900360200190f35b341561022357fe5b610237600160a060020a0360043516610762565b604080519115158252519081900360200190f35b341561025357fe5b610191610784565b60408051918252519081900360200190f35b341561027557fe5b61017f600160a060020a036004351660243561078a565b005b341561029657fe5b61019161082d565b60408051918252519081900360200190f35b34156102b857fe5b61017f610833565b005b34156102ca57fe5b61017f6108b6565b005b34156102dc57fe5b6102e4610954565b60408051600160a060020a039092168252519081900360200190f35b341561030857fe5b610191610963565b60408051918252519081900360200190f35b341561032a57fe5b6102e4610969565b60408051600160a060020a039092168252519081900360200190f35b341561035657fe5b610191600160a060020a0360043516610978565b60408051918252519081900360200190f35b341561038457fe5b61023761098a565b604080519115158252519081900360200190f35b34156103a857fe5b6102e4610993565b60408051600160a060020a039092168252519081900360200190f35b34156103d457fe5b610237600160a060020a03600435166109a2565b604080519115158252519081900360200190f35b341561040457fe5b6101916109b7565b60408051918252519081900360200190f35b341561042657fe5b61017f6004356109bd565b005b341561043b57fe5b610191610a32565b60408051918252519081900360200190f35b341561045d57fe5b610191610a37565b60408051918252519081900360200190f35b341561047f57fe5b610191610a3d565b60408051918252519081900360200190f35b34156104a157fe5b61017f600160a060020a0360043516610a42565b005b34156104bf57fe5b61017f600435610b29565b005b34156104d457fe5b61017f600160a060020a0360043516610b9e565b005b34156104f257fe5b61017f610bf8565b005b61017f600160a060020a0360043516610580565b005b341561051a57fe5b610237610d3f565b604080519115158252519081900360200190f35b341561053e57fe5b61017f600160a060020a0360043516610d62565b005b341561055c57fe5b6102e4610dae565b60408051600160a060020a039092168252519081900360200190f35b6000808080600160a060020a038516151561059b5760006000fd5b6105a3610dbd565b15156105af5760006000fd5b6005543494506105c5908563ffffffff610df516565b92506105cf610e0f565b91506105e1848363ffffffff610ec016565b600584905560008054604080516020908101849052815160e060020a6340c10f19028152600160a060020a038b8116600483015260248201879052925195965091909216936340c10f1993604480840194938390030190829087803b151561064557fe5b6102c65a03f1151561065357fe5b505060408051868152602081018490528151600160a060020a03808a1694503316927f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18928290030190a36106a5610eef565b5b5050505050565b60025481565b60065433600160a060020a039081169116146106cf5760006000fd5b60095460ff1615156106e15760006000fd5b600060009054906101000a9004600160a060020a0316600160a060020a0316638456cb596000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b151561073c57fe5b6102c65a03f1151561074a57fe5b5050505b5b565b60045481565b60085481565b603c81565b600160a060020a03811660009081526007602052604090205460ff165b919050565b60055481565b60065433600160a060020a039081169116146107a65760006000fd5b8015156107b35760006000fd5b6107bc82610762565b15156107c85760006000fd5b60015443106107d75760006000fd5b600160a060020a0382166000818152600b6020908152604091829020849055815184815291517f0f3ae419c756d7584b97a00ed889018a8f499d13dcdac1c7b3a95c7ca1f37f669281900390910190a25b5b5050565b60015481565b60065433600160a060020a0390811691161461084f5760006000fd5b60095460ff16156108605760006000fd5b610868610d3f565b15156108745760006000fd5b61087c610f22565b6040517f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768190600090a16009805460ff191660011790555b5b565b60065433600160a060020a039081169116146108d25760006000fd5b60095460ff1615156108e45760006000fd5b600060009054906101000a9004600160a060020a0316600160a060020a0316633f4ba83a6000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b151561073c57fe5b6102c65a03f1151561074a57fe5b5050505b5b565b600354600160a060020a031681565b600a5481565b600e54600160a060020a031681565b600b6020526000908152604090205481565b60095460ff1681565b600654600160a060020a031681565b60076020526000908152604090205460ff1681565b600c5481565b60065433600160a060020a039081169116146109d95760006000fd5b8015156109e65760006000fd5b60015443106109f55760006000fd5b600c8190556040805182815290517f3148ac6288a0872fc7c29cb5374bddb5f87f89c836031267129f165a4c4c9b3e9181900360200190a15b5b50565b606481565b600d5481565b602881565b60065433600160a060020a03908116911614610a5e5760006000fd5b600160a060020a0381161515610a745760006000fd5b60038054600160a060020a031916600160a060020a03838116918217909255600e546040805160e060020a63deaa59df02815260048101939093525192169163deaa59df9160248082019260009290919082900301818387803b1515610ad657fe5b6102c65a03f11515610ae457fe5b505060408051600160a060020a038416815290517f3787b7480773021c225875ded0c374cfd0805e3061363fbbb447366e557c77a192509081900360200190a15b5b50565b60065433600160a060020a03908116911614610b455760006000fd5b801515610b525760006000fd5b6001544310610b615760006000fd5b600d8190556040805182815290517f34cbbef951e76a206451845af670e86419548f7a8a2fda19417ba9631fe2dc5d9181900360200190a15b5b50565b60065433600160a060020a03908116911614610bba5760006000fd5b600160a060020a0381161515610bd05760006000fd5b600160a060020a0381166000908152600760205260409020805460ff191660011790555b5b50565b60065433600160a060020a03908116911614610c145760006000fd5b60095460ff161515610c265760006000fd5b60008054600e546040805160e060020a63f2fde38b028152600160a060020a0392831660048201529051919092169263f2fde38b926024808201939182900301818387803b1515610c7357fe5b6102c65a03f11515610c8157fe5b5050600e546040805160e060020a63be9a65550281529051600160a060020a03909216925063be9a655591600480830192600092919082900301818387803b1515610cc857fe5b6102c65a03f11515610cd657fe5b5050600e546006546040805160e060020a63f2fde38b028152600160a060020a039283166004820152905191909216925063f2fde38b9160248082019260009290919082900301818387803b151561073c57fe5b6102c65a03f1151561074a57fe5b5050505b5b565b600854600554600091901015610d53611053565b80610d5b5750805b91505b5090565b60065433600160a060020a03908116911614610d7e5760006000fd5b600160a060020a03811615610a2e5760068054600160a060020a031916600160a060020a0383161790555b5b5b50565b600054600160a060020a031681565b60006000600854610dd934600554610df590919063ffffffff16565b11159050610de561105c565b8015610d5b5750805b91505b5090565b600082820183811015610e0457fe5b8091505b5092915050565b600160a060020a0333166000908152600b602052604081205481908190819015610e5357600160a060020a0333166000908152600b60205260409020549350610eba565b610e5c33610762565b15610e6b57600a549350610eba565b5050600154600d54600c54600254438490039450919003919003610eb7610ea882610e9c858763ffffffff610ec016565b9063ffffffff61108d16565b600c549063ffffffff6110aa16565b93505b50505090565b6000828202831580610edc5750828482811515610ed957fe5b04145b1515610e0457fe5b8091505b5092915050565b600354604051600160a060020a03909116903480156108fc02916000818181858888f19350505050151561017c57fe5b5b565b60008054604080516020908101849052815160e060020a6318160ddd02815291518493600160a060020a0316926318160ddd92600480830193919282900301818787803b1515610f6e57fe5b6102c65a03f11515610f7c57fe5b5050604051519250610fa890506028610e9c60648563ffffffff610ec016565b9063ffffffff61108d16565b600054600354919250600160a060020a03908116916340c10f199116610fe66064610e9c603c8763ffffffff610ec016565b9063ffffffff61108d16565b6000604051602001526040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b151561103d57fe5b6102c65a03f115156106a557fe5b5050505b5050565b60025443115b90565b60006110666110c1565b806110855750611074610d3f565b158015611085575061108533610762565b5b5b90505b90565b60006000828481151561109c57fe5b0490508091505b5092915050565b6000828211156110b657fe5b508082035b92915050565b600060006000600043925060015483101580156110e057506002548311155b915050341515818015610eb75750805b93505b50505090565b6000611103611177565b60405190819003906000f080151561108557fe5b90505b90565b60045460035460008054909291600160a060020a03908116911661113f611187565b928352600160a060020a039182166020840152166040808301919091525190819003606001906000f080151561108557fe5b90505b90565b604051610c278061119883390190565b604051610a4380611dbf83390190560060606040526003805460a060020a61ffff02191690555b60038054600160a060020a03191633600160a060020a03161790555b5b610be5806100426000396000f300606060405236156100e05763ffffffff60e060020a60003504166305d2035b81146100e257806306fdde0314610106578063095ea7b31461019657806318160ddd146101c957806323b872dd146101eb578063313ce567146102245780633f4ba83a1461024a57806340c10f191461026e57806342966c68146102a15780635c975abb146102b657806370a08231146102da5780637d64bcb4146103085780638456cb591461032c5780638da5cb5b1461035057806395d89b411461037c578063a9059cbb1461040c578063dd62ed3e1461043f578063f2fde38b14610473575bfe5b34156100ea57fe5b6100f2610491565b604080519115158252519081900360200190f35b341561010e57fe5b6101166104a1565b60408051602080825283518183015283519192839290830191850190808383821561015c575b80518252602083111561015c57601f19909201916020918201910161013c565b505050905090810190601f1680156101885780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561019e57fe5b6100f2600160a060020a03600435166024356104cf565b604080519115158252519081900360200190f35b34156101d157fe5b6101d9610574565b60408051918252519081900360200190f35b34156101f357fe5b6100f2600160a060020a036004358116906024351660443561057a565b604080519115158252519081900360200190f35b341561022c57fe5b6102346105ab565b6040805160ff9092168252519081900360200190f35b341561025257fe5b6100f26105b0565b604080519115158252519081900360200190f35b341561027657fe5b6100f2600160a060020a036004351660243561062a565b604080519115158252519081900360200190f35b34156102a957fe5b6102b46004356106fd565b005b34156102be57fe5b6100f2610723565b604080519115158252519081900360200190f35b34156102e257fe5b6101d9600160a060020a0360043516610733565b60408051918252519081900360200190f35b341561031057fe5b6100f2610752565b604080519115158252519081900360200190f35b341561033457fe5b6100f26107b8565b604080519115158252519081900360200190f35b341561035857fe5b610360610837565b60408051600160a060020a039092168252519081900360200190f35b341561038457fe5b610116610846565b60408051602080825283518183015283519192839290830191850190808383821561015c575b80518252602083111561015c57601f19909201916020918201910161013c565b505050905090810190601f1680156101885780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561041457fe5b6100f2600160a060020a0360043516602435610867565b604080519115158252519081900360200190f35b341561044757fe5b6101d9600160a060020a0360043581169060243516610896565b60408051918252519081900360200190f35b341561047b57fe5b6102b4600160a060020a03600435166108c3565b005b60035460a860020a900460ff1681565b6040805180820190915260118152607860020a70446563656e7472616c616e64204d414e4102602082015281565b60008115806105015750600160a060020a03338116600090815260026020908152604080832093871683529290522054155b151561050d5760006000fd5b600160a060020a03338116600081815260026020908152604080832094881680845294825291829020869055815186815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35060015b92915050565b60005481565b60035460009060a060020a900460ff16156105955760006000fd5b6105a084848461090f565b90505b5b9392505050565b601281565b60035460009033600160a060020a039081169116146105cf5760006000fd5b60035460a060020a900460ff1615156105e85760006000fd5b6003805460a060020a60ff02191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a15060015b5b5b90565b60035460009033600160a060020a039081169116146106495760006000fd5b60035460a860020a900460ff16156106615760006000fd5b600054610674908363ffffffff610a1216565b6000908155600160a060020a03841681526001602052604090205461069f908363ffffffff610a1216565b600160a060020a038416600081815260016020908152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a25060015b5b5b92915050565b60035460a060020a900460ff16156107155760006000fd5b61071e81610a2c565b5b5b50565b60035460a060020a900460ff1681565b600160a060020a0381166000908152600160205260409020545b919050565b60035460009033600160a060020a039081169116146107715760006000fd5b6003805460a860020a60ff02191660a860020a1790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a15060015b5b90565b60035460009033600160a060020a039081169116146107d75760006000fd5b60035460a060020a900460ff16156107ef5760006000fd5b6003805460a060020a60ff02191660a060020a1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a15060015b5b5b90565b600354600160a060020a031681565b604080518082019091526004815260e060020a634d414e4102602082015281565b60035460009060a060020a900460ff16156108825760006000fd5b61088c8383610ad4565b90505b5b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a039081169116146108df5760006000fd5b600160a060020a0381161561071e5760038054600160a060020a031916600160a060020a0383161790555b5b5b50565b600160a060020a038084166000908152600260209081526040808320338516845282528083205493861683526001909152812054909190610956908463ffffffff610a1216565b600160a060020a03808616600090815260016020526040808220939093559087168152205461098b908463ffffffff610b8216565b600160a060020a0386166000908152600160205260409020556109b4818463ffffffff610b8216565b600160a060020a03808716600081815260026020908152604080832033861684528252918290209490945580518781529051928816939192600080516020610b9a833981519152929181900390910190a3600191505b509392505050565b600082820183811015610a2157fe5b8091505b5092915050565b6000808211610a3b5760006000fd5b5033600160a060020a038116600090815260016020526040902054610a609083610b82565b600160a060020a03821660009081526001602052604081209190915554610a8d908363ffffffff610b8216565b600055604080518381529051600160a060020a033316917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25b5050565b600160a060020a033316600090815260016020526040812054610afd908363ffffffff610b8216565b600160a060020a033381166000908152600160205260408082209390935590851681522054610b32908363ffffffff610a1216565b600160a060020a03808516600081815260016020908152604091829020949094558051868152905191933390931692600080516020610b9a83398151915292918290030190a35060015b92915050565b600082821115610b8e57fe5b508082035b929150505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820f462e7242c33877d5d2f087a81cc0a589147f1cf578ce7fc53451e7ce4fb376f00296060604052600060058190556006556007805460a060020a60ff0219169055341561002657fe5b604051606080610a438339810160409081528151602083015191909201515b5b8282825b8215156100575760006000fd5b600160a060020a038216151561006d5760006000fd5b600283905560018054600160a060020a03808516600160a060020a03199283161790925560008054928416929091169190911790555b505060078054600160a060020a03191633600160a060020a0316179055505b5b5050505b61096d806100d66000396000f300606060405236156100e05763ffffffff60e060020a60003504166312c5502781146100f25780631f2698ab146101145780632958263a146101385780632c3496271461015a5780632c4e722e1461016c57806334fcf4371461018e5780634042b66f146101a357806350669a03146101c5578063521eb273146101d75780636d20d6ae14610203578063863623bb146102255780638da5cb5b146102475780639227bed614610273578063be9a655514610295578063deaa59df146102a7578063ec8ac4d8146102c5578063f2fde38b146102db578063fc0c546a146102f9575b6100f05b6100ed33610325565b5b565b005b34156100fa57fe5b61010261034c565b60408051918252519081900360200190f35b341561011c57fe5b610124610352565b604080519115158252519081900360200190f35b341561014057fe5b610102610362565b60408051918252519081900360200190f35b341561016257fe5b6100f0610368565b005b341561017457fe5b6101026103f4565b60408051918252519081900360200190f35b341561019657fe5b6100f06004356103fa565b005b34156101ab57fe5b610102610453565b60408051918252519081900360200190f35b34156101cd57fe5b6100f0610459565b005b34156101df57fe5b6101e76104e5565b60408051600160a060020a039092168252519081900360200190f35b341561020b57fe5b6101026104f4565b60408051918252519081900360200190f35b341561022d57fe5b6101026104f9565b60408051918252519081900360200190f35b341561024f57fe5b6101e76104ff565b60408051600160a060020a039092168252519081900360200190f35b341561027b57fe5b61010261050e565b60408051918252519081900360200190f35b341561029d57fe5b6100f0610514565b005b34156102af57fe5b6100f0600160a060020a0360043516610629565b005b6100f0600160a060020a0360043516610325565b005b34156102e357fe5b6100f0600160a060020a03600435166106b1565b005b341561030157fe5b6101e76106fd565b60408051600160a060020a039092168252519081900360200190f35b60075460a060020a900460ff16151561033e5760006000fd5b6103478161070c565b5b5b50565b61a8c081565b60075460a060020a900460ff1681565b60055481565b60075433600160a060020a039081169116146103845760006000fd5b600060009054906101000a9004600160a060020a0316600160a060020a0316638456cb596000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b15156103df57fe5b6102c65a03f115156103ed57fe5b5050505b5b565b60025481565b60075433600160a060020a039081169116146104165760006000fd5b60028190556040805182815290517f0b6eb270e68ec2b65cffce354325dcd6cb2449e0e8fec1184cd58da0c7b0344b9181900360200190a15b5b50565b60035481565b60075433600160a060020a039081169116146104755760006000fd5b600060009054906101000a9004600160a060020a0316600160a060020a0316633f4ba83a6000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b15156103df57fe5b6102c65a03f115156103ed57fe5b5050505b5b565b600154600160a060020a031681565b600881565b60045481565b600754600160a060020a031681565b60065481565b600754600090819033600160a060020a039081169116146105355760006000fd5b60075460a060020a900460ff161561054d5760006000fd5b600060009054906101000a9004600160a060020a0316600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b15156105a857fe5b6102c65a03f115156105b657fe5b50506040515192506105e2905060646105d684600863ffffffff61075216565b9063ffffffff61078116565b905061060a6301e133806105d68361a8c063ffffffff61075216565b9063ffffffff61078116565b6004556007805460a060020a60ff02191660a060020a1790555b5b5050565b60075433600160a060020a039081169116146106455760006000fd5b600160a060020a038116151561065b5760006000fd5b60018054600160a060020a038316600160a060020a0319909116811790915560408051918252517f3787b7480773021c225875ded0c374cfd0805e3061363fbbb447366e557c77a19181900360200190a15b5b50565b60075433600160a060020a039081169116146106cd5760006000fd5b600160a060020a038116156103475760078054600160a060020a031916600160a060020a0383161790555b5b5b50565b600054600160a060020a031681565b6000600160a060020a03821615156107245760006000fd5b3415156107315760006000fd5b61073961079e565b610742826107c5565b9050610624816108c1565b5b5050565b600082820283158061076e575082848281151561076b57fe5b04145b151561077657fe5b8091505b5092915050565b60006000828481151561079057fe5b0490508091505b5092915050565b42600061a8c0825b068203905060055481111561062457600581905560006006555b5b5050565b600254600090349082906107e090839063ffffffff61075216565b6003549091506107f6908363ffffffff6108f416565b60035560008054604080516020908101849052815160e060020a6340c10f19028152600160a060020a03898116600483015260248201879052925192909316936340c10f199360448082019492918390030190829087803b151561085657fe5b6102c65a03f1151561086457fe5b505060408051848152602081018490528151600160a060020a0380891694503316927f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18928290030190a36108b661090e565b8092505b5050919050565b6006546000906108d7908363ffffffff6108f416565b6004549091508111156108ea5760006000fd5b60068190555b5050565b60008282018381101561077657fe5b8091505b5092915050565b600154604051600160a060020a03909116903480156108fc02916000818181858888f1935050505015156100ed57fe5b5b5600a165627a7a7230582091f46278e0d3b41baaf3dcfcffacb32577388fe89da6edbd51f41b8c3a0da8160029a165627a7a7230582069c7deb7b84443de079696c9d4ab746f3bee5f0319c60222a25c578c80fe35170029

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

00000000000000000000000000000000000000000000000000000000003fa3cc0000000000000000000000000000000000000000000000000000000000401e710000000000000000000000000000000000000000000000000000000000002f330000000000000000000000000000000000000000000000000000000000001c520000000000000000000000000000000000000000000000000000000000002f330000000000000000000000006bf917b4725ad736b33dbd493ad7a4b992150dab

-----Decoded View---------------
Arg [0] : _startBlock (uint256): 4170700
Arg [1] : _endBlock (uint256): 4202097
Arg [2] : _initialRate (uint256): 12083
Arg [3] : _endRate (uint256): 7250
Arg [4] : _preferentialRate (uint256): 12083
Arg [5] : _wallet (address): 0x6Bf917B4725aD736B33Dbd493Ad7a4B992150DAb

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000003fa3cc
Arg [1] : 0000000000000000000000000000000000000000000000000000000000401e71
Arg [2] : 0000000000000000000000000000000000000000000000000000000000002f33
Arg [3] : 0000000000000000000000000000000000000000000000000000000000001c52
Arg [4] : 0000000000000000000000000000000000000000000000000000000000002f33
Arg [5] : 0000000000000000000000006bf917b4725ad736b33dbd493ad7a4b992150dab


Swarm Source

bzzr://91f46278e0d3b41baaf3dcfcffacb32577388fe89da6edbd51f41b8c3a0da816

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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