Contract 0xdf35a8572e8c107e17803f7af2fc48b6c226c6a4

 
Txn Hash Method
Block
From
To
Value
0xaf314b54c5b66a2a2e799cc6f635cea597dcd93a2678f8cb303e7e4f0d511c8eTransfer52233382018-03-09 8:25:271202 days 2 hrs ago0xe61641e225362609cb350748ef58238f2bb850ec IN  Gimmer: Token Sale0.09 Ether0.0004220
0xfde209829b7f08ddb2409509d377cf62a0e52c03752ba438dc5302bc3b0a0541Transfer52211602018-03-08 23:26:281202 days 11 hrs ago0xc1791fba7861d897ffba8707453a1236606b1731 IN  Gimmer: Token Sale0.95 Ether0.0000641793
0x653e7e12022372e63e6e48e97e803262936b972272f14c9b121e51b103388dbeTransfer52211252018-03-08 23:17:441202 days 11 hrs ago0xc1791fba7861d897ffba8707453a1236606b1731 IN  Gimmer: Token Sale0.99907013 Ether0.0000641793
0xd3fc287eddf559d72fd46b7ed12c555237af327a7ffe29f5c99daa3066471c98Transfer52210402018-03-08 22:59:441202 days 11 hrs ago0xc1791fba7861d897ffba8707453a1236606b1731 IN  Gimmer: Token Sale0.99 Ether0.0000633
0xc5e62f3416bcdb44858f84b3a258e118e96120426a30f68c1a7ff4c76fc41e6eTransfer52210262018-03-08 22:55:021202 days 11 hrs ago0xc1791fba7861d897ffba8707453a1236606b1731 IN  Gimmer: Token Sale0.9998 Ether0.0000633
0x4826d8edf01c63e341452e85702addc573661132261886f853bf65dd5c8e8c84Transfer52208792018-03-08 22:13:551202 days 12 hrs ago0xc1791fba7861d897ffba8707453a1236606b1731 IN  Gimmer: Token Sale0.99994613 Ether0.0000633
0x811c98dac5bd190252f2a075cadb7b23b9088bc69d0077b6f1c3b9b7948c3903Transfer52047132018-03-06 4:25:191205 days 6 hrs ago0x5e5ce3591897b8552289feb9c17cf23da1fd5c18 IN  Gimmer: Token Sale0.11 Ether0.00161777
0x2402fd5bb98d069fb7a9a3b503e27396472e7a55308fb35f027b635e87a18530Transfer52031982018-03-05 22:12:061205 days 12 hrs ago0x811bf3c07fd7bd8d5ca381e875899b7962b26075 IN  Gimmer: Token Sale0.1 Ether0.0000427862
0xbef019dd58a9ea4809eb0e4247d42c83bc095d23fdcd636cbba024e1dc1ecd07Transfer51731612018-02-28 19:58:311210 days 14 hrs ago0x79c43e47632690e6fd38647683e52bdc11fa9946 IN  Gimmer: Token Sale0 Ether0.0001497517
0x7fb255a2d4f7915274b373ec22af1730bfc9bd4352b27514e6e7d3c7b15d8f81Transfer51724192018-02-28 17:02:491210 days 17 hrs ago0xe7a5ef9b171338b344c2050086b8e3b13f76d72d IN  Gimmer: Token Sale0.1 Ether0.00086141
0xafdcabbbfe3be9b0c4683cffb37d8c0a7ddf37f45a98956201b1225e3baa1044Transfer51710912018-02-28 11:36:031210 days 23 hrs ago0xe7a5ef9b171338b344c2050086b8e3b13f76d72d IN  Gimmer: Token Sale0.1 Ether0.00086141
0xdab9d1462f2099f2ed02e62dd76aee03a0b4a9229893b52722d1680f92851103Transfer51683582018-02-28 0:32:421211 days 10 hrs ago0x4d42db10365fe17dd88d82da39eb6592554d775b IN  Gimmer: Token Sale0.2 Ether0.0000855724
0xc9e4cafad6487d2284f4bd962a34ec2ca6ab0acb6e6aab8c74b30449a36abf20Transfer51682722018-02-28 0:11:011211 days 10 hrs ago0x4d42db10365fe17dd88d82da39eb6592554d775b IN  Gimmer: Token Sale0.2 Ether0.0000855724
0x2993ee45eaa791850aa201bbb863699dc1b974a6fe3ad7b4784cc6f0b9833059Transfer51682542018-02-28 0:07:341211 days 10 hrs ago0x4d42db10365fe17dd88d82da39eb6592554d775b IN  Gimmer: Token Sale0.22 Ether0.0000855724
0x1b34b866a8c4fc090f65bd085dab70ebd537c673eb71177597e4f4ca4cac432dTransfer51682102018-02-27 23:55:121211 days 10 hrs ago0x4d42db10365fe17dd88d82da39eb6592554d775b IN  Gimmer: Token Sale0.22 Ether0.00086141
0x3d463d43b7b5373d4a50cced5cb4ead8e8910fb4e555ddba0b5c102f6a5a44beTransfer51681312018-02-27 23:36:571211 days 11 hrs ago0x4d42db10365fe17dd88d82da39eb6592554d775b IN  Gimmer: Token Sale0.22 Ether0.00087711341
0xb17206be9a6dd2f193467aa44ed8d82de0bdc1c0d0450b2e343e29b29ec134caTransfer51680802018-02-27 23:24:421211 days 11 hrs ago0x4d42db10365fe17dd88d82da39eb6592554d775b IN  Gimmer: Token Sale0.22 Ether0.00023532311
0x6ce53250d428d25a928d46ae2ea984b5a37b31150bd584db1ea18df7ea163a28Transfer51679932018-02-27 23:02:271211 days 11 hrs ago0x4d42db10365fe17dd88d82da39eb6592554d775b IN  Gimmer: Token Sale0.2 Ether0.00087711341
0x0ca016b62854fd6114f459b8db5874305bce87b24c0bf0440cd62d801ee2ff19Transfer51671672018-02-27 19:34:231211 days 15 hrs ago0xf3f81fafb7b1e6b574d9f3c2b8d111fc49590123 IN  Gimmer: Token Sale1 Ether0.00023532311
0x165c59eab00d61676f3502d79f48bccbfabe5b03263d927f2380922be08328bfTransfer51671512018-02-27 19:31:351211 days 15 hrs ago0xf3f81fafb7b1e6b574d9f3c2b8d111fc49590123 IN  Gimmer: Token Sale1 Ether0.00023532311
0xb07d4688dd3ebe447dcbbcd533f92774b1b0939f835b80334377a4332eb0d0e3Transfer51651412018-02-27 11:30:401211 days 23 hrs ago0x261ef2a061bf9b5532bcbe0f82dccf76e7c419a8 IN  Gimmer: Token Sale0.2 Ether0.00087711341
0xbf111a446951567e265f579d7f5042bc974b4e7a27e62442b1829353efd81068Transfer51651212018-02-27 11:26:461211 days 23 hrs ago0x261ef2a061bf9b5532bcbe0f82dccf76e7c419a8 IN  Gimmer: Token Sale0.2 Ether0.00087711341
0x8b6d8ca03f97078dad613fdfa53d5e2fc2d3857e7b3ffd3efb3804c087b67434Transfer51650942018-02-27 11:21:361211 days 23 hrs ago0x261ef2a061bf9b5532bcbe0f82dccf76e7c419a8 IN  Gimmer: Token Sale0.2 Ether0.00087711341
0x3ef01c0b4c856dfd7d7edfa0137d866ec8babc41176a422312499ecf0703170eTransfer51650712018-02-27 11:17:001211 days 23 hrs ago0x261ef2a061bf9b5532bcbe0f82dccf76e7c419a8 IN  Gimmer: Token Sale0.2 Ether0.00086141
0x2014980293515726d0ca22c39c62cfe46329fe12e3e5a91bd5dcb78b7225cc7dTransfer51639442018-02-27 6:42:371212 days 4 hrs ago0x60f4a0c8ab8f5933c7f80b6a0b56521dd6affce2 IN  Gimmer: Token Sale0.2 Ether0.0004278620
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xca0eac13ee56293ec91b3f68f426f6775739f4537dedbffc444f11d611df319551592712018-02-26 11:17:211212 days 23 hrs ago Gimmer: Token SaleGimmer: Wallet0.2 Ether
0x2c15f4d5886579d9feab31ad574ff4aac91e37258591b1e8f6d793228465ba0451592512018-02-26 11:13:311212 days 23 hrs ago Gimmer: Token SaleGimmer: Wallet1.1 Ether
0xefa1b673f6c441d5b39e106d965833077b976e23bab5207f3fc2856a5052d0fb51589292018-02-26 9:54:371213 days 55 mins ago Gimmer: Token SaleGimmer: Wallet0.5 Ether
0xef2e10c074be5363427b6acb0b47c48e14aea9abd524dd74e1b38d4571a972e251587102018-02-26 8:58:331213 days 1 hr ago Gimmer: Token SaleGimmer: Wallet0.25 Ether
0x5c6bcae91e9766700853901d3748be599134d17bda8375e2ec645ccda5d5261d51585502018-02-26 8:19:471213 days 2 hrs ago Gimmer: Token SaleGimmer: Wallet0.214663931689166627 Ether
0xa486a99d6a22f85355651b16a061a2e1e033f6fa4799a06fc5fbfe9ad4fd585a51571712018-02-26 2:24:561213 days 8 hrs ago Gimmer: Token SaleGimmer: Wallet0.4 Ether
0x13e22065f4b4282be1a228ab5d01377f7c37024ce63436e3622916674f858a5651571632018-02-26 2:22:131213 days 8 hrs ago Gimmer: Token SaleGimmer: Wallet0.15 Ether
0xdcbbe0f9f9820fd5a58a10dae228b5275905811c48ef2429ed483e83c86c457e51559252018-02-25 21:23:031213 days 13 hrs ago Gimmer: Token SaleGimmer: Wallet0.8 Ether
0xe93debcba0e165ec06bf276b5e22ce4139954ca8844d0b3766f04570951261d851558302018-02-25 20:59:521213 days 13 hrs ago Gimmer: Token SaleGimmer: Wallet0.1 Ether
0xfe517a246d07fa27529ca4d203979be2bb72697da57704983a0db74169d27a4b51554022018-02-25 19:13:461213 days 15 hrs ago Gimmer: Token SaleGimmer: Wallet0.1 Ether
0xfbd307ed35e040099ada21ec65d9d432778fca9c308fc7981973a2263995636b51552502018-02-25 18:39:381213 days 16 hrs ago Gimmer: Token SaleGimmer: Wallet0.16 Ether
0xf83012010476bc1cc4a885e832ca788035c76fc8f46d4ef4c58a5ea3ca74cd7851549832018-02-25 17:36:551213 days 17 hrs ago Gimmer: Token SaleGimmer: Wallet0.11458 Ether
0x0ab9a671eb182389717370be27f368c69c1069d3c0ae5dc69da48afdfe5c3bfb51548782018-02-25 17:09:171213 days 17 hrs ago Gimmer: Token SaleGimmer: Wallet1 Ether
0x623302d2641b3ed373346cebb3e39c82fb20c5b80156335a46fd78132b381b7051548462018-02-25 17:00:431213 days 17 hrs ago Gimmer: Token SaleGimmer: Wallet0.1 Ether
0xf1bfefec59ce65bd24036e919607b9dd26aab429885b455f3058ea16b4bcc07651547142018-02-25 16:27:101213 days 18 hrs ago Gimmer: Token SaleGimmer: Wallet0.5 Ether
0x85d1eb47ed2c3d8a315b750bc34351e22ac99d964f711b545591dff10839204951545962018-02-25 15:56:251213 days 18 hrs ago Gimmer: Token SaleGimmer: Wallet0.11 Ether
0x50f8d951e32358332bfc682965f986fb658f9ef16f78cabb05e7520138dac0fc51545102018-02-25 15:31:471213 days 19 hrs ago Gimmer: Token SaleGimmer: Wallet5.9 Ether
0xbde22f307ec04b598f3e783ae69737af4a56b54920a602656134065b8de1d06151544112018-02-25 15:04:441213 days 19 hrs ago Gimmer: Token SaleGimmer: Wallet0.1 Ether
0xbdba329a183e6b32e4717d027006d63934d879ade1ef44f8fd00dc2eaa19e83f51543802018-02-25 14:57:301213 days 19 hrs ago Gimmer: Token SaleGimmer: Wallet2 Ether
0x763ba8bdb151849506c605cff45527c277c1924b4c38ee0d2d79e064280942ef51542832018-02-25 14:36:121213 days 20 hrs ago Gimmer: Token SaleGimmer: Wallet0.1 Ether
0xc2196478f6a709075ce95772defff0451d9329390930cc48dfff74e0a9543b0851542152018-02-25 14:17:581213 days 20 hrs ago Gimmer: Token SaleGimmer: Wallet0.134030652779869101 Ether
0xc5bcf40cd11f27950fbf57da92e9032d0d31b05d561bc052cbecac821d2a0b9e51541452018-02-25 14:01:141213 days 20 hrs ago Gimmer: Token SaleGimmer: Wallet1 Ether
0xc8e7d6e050e4307934ed669cccbdc9e4d82e1ca73936c42e3707ba278b91cb2551533882018-02-25 11:01:511213 days 23 hrs ago Gimmer: Token SaleGimmer: Wallet0.416 Ether
0x650c4bf86c5a7c67ec741a88a97a7201958c474d837fc65cd4a026ca286b8dde51521552018-02-25 5:55:431214 days 4 hrs ago Gimmer: Token SaleGimmer: Wallet0.12 Ether
0x19d5f6cb0342036e920086dd69c861d86e9f723d6ad08461c74265f117b2806851509272018-02-25 0:52:101214 days 9 hrs ago Gimmer: Token SaleGimmer: Wallet1 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GimmerTokenSale

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-01-17
*/

pragma solidity ^0.4.18;

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;
  }
}

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;
  }

}

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();
  }
}

contract GimmerTokenSale is Pausable {
    using SafeMath for uint256;

    /**
    * @dev Supporter structure, which allows us to track
    * how much the user has bought so far, and if he's flagged as known
    */
    struct Supporter {
        uint256 weiSpent; // the total amount of Wei this address has sent to this contract
        bool hasKYC; // if the user has KYC flagged
    }

    // Variables
    mapping(address => Supporter) public supportersMap; // Mapping with all the campaign supporters
    GimmerToken public token; // ERC20 GMR Token contract address
    address public fundWallet; // Wallet address to forward all Ether to
    address public kycManagerWallet; // Wallet address that manages the approval of KYC
    uint256 public tokensSold; // How many tokens sold have been sold in total
    uint256 public weiRaised; // Total amount of raised money in Wei
    uint256 public maxTxGas; // Maximum transaction gas price allowed for fair-chance transactions
    uint256 public saleWeiLimitWithoutKYC; // The maximum amount of Wei an address can spend here without needing KYC approval during CrowdSale
    bool public finished; // Flag denoting the owner has invoked finishContract()

    uint256 public constant ONE_MILLION = 1000000; // One million for token cap calculation reference
    uint256 public constant PRE_SALE_GMR_TOKEN_CAP = 15 * ONE_MILLION * 1 ether; // Maximum amount that can be sold during the Pre Sale period
    uint256 public constant GMR_TOKEN_SALE_CAP = 100 * ONE_MILLION * 1 ether; // Maximum amount of tokens that can be sold by this contract
    uint256 public constant MIN_ETHER = 0.1 ether; // Minimum ETH Contribution allowed during the crowd sale

    /* Allowed Contribution in Ether */
    uint256 public constant PRE_SALE_30_ETH = 30 ether; // Minimum 30 Ether to get 25% Bonus Tokens
    uint256 public constant PRE_SALE_300_ETH = 300 ether; // Minimum 300 Ether to get 30% Bonus Tokens
    uint256 public constant PRE_SALE_1000_ETH = 1000 ether; // Minimum 3000 Ether to get 40% Bonus Tokens

    /* Bonus Tokens based on the ETH Contributed in single transaction */
    uint256 public constant TOKEN_RATE_BASE_RATE = 2500; // Base Price for reference only
    uint256 public constant TOKEN_RATE_05_PERCENT_BONUS = 2625; // 05% Bonus Tokens During Crowd Sale's Week 4
    uint256 public constant TOKEN_RATE_10_PERCENT_BONUS = 2750; // 10% Bonus Tokens During Crowd Sale's Week 3
    uint256 public constant TOKEN_RATE_15_PERCENT_BONUS = 2875; // 15% Bonus Tokens During Crowd Sale'sWeek 2
    uint256 public constant TOKEN_RATE_20_PERCENT_BONUS = 3000; // 20% Bonus Tokens During Crowd Sale'sWeek 1
    uint256 public constant TOKEN_RATE_25_PERCENT_BONUS = 3125; // 25% Bonus Tokens, During PreSale when >= 30 ETH & < 300 ETH
    uint256 public constant TOKEN_RATE_30_PERCENT_BONUS = 3250; // 30% Bonus Tokens, During PreSale when >= 300 ETH & < 3000 ETH
    uint256 public constant TOKEN_RATE_40_PERCENT_BONUS = 3500; // 40% Bonus Tokens, During PreSale when >= 3000 ETH

    /* Timestamps where investments are allowed */
    uint256 public constant PRE_SALE_START_TIME = 1516190400; // PreSale Start Time : UTC: Wednesday, 17 January 2018 12:00:00 
    uint256 public constant PRE_SALE_END_TIME = 1517400000; // PreSale End Time : UTC: Wednesday, 31 January 2018 12:00:00
    uint256 public constant START_WEEK_1 = 1517486400; // CrowdSale Start Week-1 : UTC: Thursday, 1 February 2018 12:00:00
    uint256 public constant START_WEEK_2 = 1518091200; // CrowdSale Start Week-2 : UTC: Thursday, 8 February 2018 12:00:00
    uint256 public constant START_WEEK_3 = 1518696000; // CrowdSale Start Week-3 : UTC: Thursday, 15 February 2018 12:00:00
    uint256 public constant START_WEEK_4 = 1519300800; // CrowdSale Start Week-4 : UTC: Thursday, 22 February 2018 12:00:00
    uint256 public constant SALE_END_TIME = 1519905600; // CrowdSale End Time : UTC: Thursday, 1 March 2018 12:00:00

    /**
    * @dev Modifier to only allow KYCManager Wallet
    * to execute a function
    */
    modifier onlyKycManager() {
        require(msg.sender == kycManagerWallet);
        _;
    }

    /**
    * Event for token purchase logging
    * @param purchaser The wallet address that bought the tokens
    * @param value How many Weis were paid for the purchase
    * @param amount The amount of tokens purchased
    */
    event TokenPurchase(address indexed purchaser, uint256 value, uint256 amount);

    /**
     * Event for kyc status change logging
     * @param user User who has had his KYC status changed
     * @param isApproved A boolean representing the KYC approval the user has been changed to
     */
    event KYC(address indexed user, bool isApproved);

    /**
     * Constructor
     * @param _fundWallet Address to forward all received Ethers to
     * @param _kycManagerWallet KYC Manager wallet to approve / disapprove user's KYC
     * @param _saleWeiLimitWithoutKYC Maximum amount of Wei an address can spend in the contract without KYC during the crowdsale
     * @param _maxTxGas Maximum gas price a transaction can have before being reverted
     */
    function GimmerTokenSale(
        address _fundWallet, 
        address _kycManagerWallet,
        uint256 _saleWeiLimitWithoutKYC, 
        uint256 _maxTxGas
    )
    public 
    {
        require(_fundWallet != address(0));
        require(_kycManagerWallet != address(0));
        require(_saleWeiLimitWithoutKYC > 0);
        require(_maxTxGas > 0);

        fundWallet = _fundWallet;
        kycManagerWallet = _kycManagerWallet;
        saleWeiLimitWithoutKYC = _saleWeiLimitWithoutKYC;
        maxTxGas = _maxTxGas;

        token = new GimmerToken();
    }

    /* fallback function can be used to buy tokens */
    function () public payable {
        buyTokens();
    }

    /* low level token purchase function */
    function buyTokens() public payable whenNotPaused {
        // Do not allow if gasprice is bigger than the maximum
        // This is for fair-chance for all contributors, so no one can
        // set a too-high transaction price and be able to buy earlier
        require(tx.gasprice <= maxTxGas);
        // valid purchase identifies which stage the contract is at (PreState/Token Sale)
        // making sure were inside the contribution period and the user
        // is sending enough Wei for the stage's rules
        require(validPurchase());

        address sender = msg.sender;
        uint256 weiAmountSent = msg.value;

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

        // look if we have not yet reached the cap
        uint256 totalTokensSold = tokensSold.add(newTokens);
        if (isCrowdSaleRunning()) {
            require(totalTokensSold <= GMR_TOKEN_SALE_CAP);
        } else if (isPreSaleRunning()) { 
            require(totalTokensSold <= PRE_SALE_GMR_TOKEN_CAP);
        }

        // update supporter state
        Supporter storage sup = supportersMap[sender];
        uint256 totalWei = sup.weiSpent.add(weiAmountSent);
        sup.weiSpent = totalWei;

        // update contract state
        weiRaised = weiRaised.add(weiAmountSent);
        tokensSold = totalTokensSold;

        // mint the coins
        token.mint(sender, newTokens);
        TokenPurchase(sender, weiAmountSent, newTokens);

        // forward the funds to the wallet
        fundWallet.transfer(msg.value);
    }

    /**
    * @dev Ends the operation of the contract
    */
    function finishContract() public onlyOwner {
        // make sure the contribution period has ended
        require(now > SALE_END_TIME);
        require(!finished);

        finished = true;

        // send the 10% commission to Gimmer's fund wallet
        uint256 tenPC = tokensSold.div(10);
        token.mint(fundWallet, tenPC);

        // finish the minting of the token, so the system allows transfers
        token.finishMinting();

        // transfer ownership of the token contract to the fund wallet,
        // so it isn't locked to be a child of the crowd sale contract
        token.transferOwnership(fundWallet);
    }

    function setSaleWeiLimitWithoutKYC(uint256 _newSaleWeiLimitWithoutKYC) public onlyKycManager {
        require(_newSaleWeiLimitWithoutKYC > 0);
        saleWeiLimitWithoutKYC = _newSaleWeiLimitWithoutKYC;
    }

    /**
    * @dev Updates the maximum allowed transaction cost that can be received
    * on the buyTokens() function.
    * @param _newMaxTxGas The new maximum transaction cost
    */
    function updateMaxTxGas(uint256 _newMaxTxGas) public onlyKycManager {
        require(_newMaxTxGas > 0);
        maxTxGas = _newMaxTxGas;
    }

    /**
    * @dev Flag an user as known
    * @param _user The user to flag as known
    */
    function approveUserKYC(address _user) onlyKycManager public {
        require(_user != address(0));

        Supporter storage sup = supportersMap[_user];
        sup.hasKYC = true;
        KYC(_user, true);
    }

    /**
     * @dev Flag an user as unknown/disapproved
     * @param _user The user to flag as unknown / suspecious
     */
    function disapproveUserKYC(address _user) onlyKycManager public {
        require(_user != address(0));
        
        Supporter storage sup = supportersMap[_user];
        sup.hasKYC = false;
        KYC(_user, false);
    }

    /**
    * @dev Changes the KYC manager to a new address
    * @param _newKYCManagerWallet The new address that will be managing KYC approval
    */
    function setKYCManager(address _newKYCManagerWallet) onlyOwner public {
        require(_newKYCManagerWallet != address(0));
        kycManagerWallet = _newKYCManagerWallet;
    }
    
    /**
    * @dev Returns true if any of the token sale stages are currently running
    * @return A boolean representing the state of this contract
    */
    function isTokenSaleRunning() public constant returns (bool) {
        return (isPreSaleRunning() || isCrowdSaleRunning());
    }

    /**
    * @dev Returns true if the presale sale is currently running
    * @return A boolean representing the state of the presale
    */
    function isPreSaleRunning() public constant returns (bool) {
        return (now >= PRE_SALE_START_TIME && now < PRE_SALE_END_TIME);
    }

    /**
    * @dev Returns true if the public sale is currently running
    * @return A boolean representing the state of the crowd sale
    */
    function isCrowdSaleRunning() public constant returns (bool) {
        return (now >= START_WEEK_1 && now <= SALE_END_TIME);
    }

    /**
    * @dev Returns true if the public sale has ended
    * @return A boolean representing if we are past the contribution date for this contract
    */
    function hasEnded() public constant returns (bool) {
        return now > SALE_END_TIME;
    }

    /**
    * @dev Returns true if the pre sale has ended
    * @return A boolean representing if we are past the pre sale contribution dates
    */
    function hasPreSaleEnded() public constant returns (bool) {
        return now > PRE_SALE_END_TIME;
    }

    /**
    * @dev Returns if an user has KYC approval or not
    * @return A boolean representing the user's KYC status
    */
    function userHasKYC(address _user) public constant returns (bool) {
        return supportersMap[_user].hasKYC;
    }

    /**
     * @dev Returns the weiSpent of a user
     */
    function userWeiSpent(address _user) public constant returns (uint256) {
        return supportersMap[_user].weiSpent;
    }

    /**
     * @dev Returns the rate the user will be paying at,
     * based on the amount of Wei sent to the contract, and the current time
     * @return An uint256 representing the rate the user will pay for the GMR tokens
     */
    function getRate(uint256 _weiAmount) internal constant returns (uint256) {   
        if (isCrowdSaleRunning()) {
            if (now >= START_WEEK_4) { return TOKEN_RATE_05_PERCENT_BONUS; }
            else if (now >= START_WEEK_3) { return TOKEN_RATE_10_PERCENT_BONUS; }
            else if (now >= START_WEEK_2) { return TOKEN_RATE_15_PERCENT_BONUS; }
            else if (now >= START_WEEK_1) { return TOKEN_RATE_20_PERCENT_BONUS; }
        }
        else if (isPreSaleRunning()) {
            if (_weiAmount >= PRE_SALE_1000_ETH) { return TOKEN_RATE_40_PERCENT_BONUS; }
            else if (_weiAmount >= PRE_SALE_300_ETH) { return TOKEN_RATE_30_PERCENT_BONUS; }
            else if (_weiAmount >= PRE_SALE_30_ETH) { return TOKEN_RATE_25_PERCENT_BONUS; }
        }
    }

    /* @return true if the transaction can buy tokens, otherwise false */
    function validPurchase() internal constant returns (bool) {
        bool userHasKyc = userHasKYC(msg.sender);

        if (isCrowdSaleRunning()) {
            // crowdsale restrictions (KYC only needed after wei limit, minimum of 0.1 ETH tx)
            if(!userHasKyc) {
                Supporter storage sup = supportersMap[msg.sender];
                uint256 ethContribution = sup.weiSpent.add(msg.value);
                if (ethContribution > saleWeiLimitWithoutKYC) {
                    return false;
                }
            }
            return msg.value >= MIN_ETHER;
        }
        else if (isPreSaleRunning()) {
            // presale restrictions (at least 30 eth, always KYC)
            return userHasKyc && msg.value >= PRE_SALE_30_ETH;
        } else {
            return false;
        }
    }
}

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);
}

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];
  }

}

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);
}

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;
  }

}

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

  bool public mintingFinished = false;


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

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

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

contract GimmerToken is MintableToken  {
    // Constants
    string public constant name = "GimmerToken";
    string public constant symbol = "GMR";  
    uint8 public constant decimals = 18;

    /**
    * @dev Modifier to only allow transfers after the minting has been done
    */
    modifier onlyWhenTransferEnabled() {
        require(mintingFinished);
        _;
    }

    modifier validDestination(address _to) {
        require(_to != address(0x0));
        require(_to != address(this));
        _;
    }

    function GimmerToken() public {
    }

    function transferFrom(address _from, address _to, uint256 _value) public        
        onlyWhenTransferEnabled
        validDestination(_to)         
        returns (bool) {
        return super.transferFrom(_from, _to, _value);
    }

    function approve(address _spender, uint256 _value) public
        onlyWhenTransferEnabled         
        returns (bool) {
        return super.approve(_spender, _value);
    }

    function increaseApproval (address _spender, uint _addedValue) public
        onlyWhenTransferEnabled         
        returns (bool) {
        return super.increaseApproval(_spender, _addedValue);
    }

    function decreaseApproval (address _spender, uint _subtractedValue) public
        onlyWhenTransferEnabled         
        returns (bool) {
        return super.decreaseApproval(_spender, _subtractedValue);
    }

    function transfer(address _to, uint256 _value) public
        onlyWhenTransferEnabled
        validDestination(_to)         
        returns (bool) {
        return super.transfer(_to, _value);
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"maxTxGas","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"START_WEEK_4","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_RATE_40_PERCENT_BONUS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PRE_SALE_END_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"SALE_END_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newKYCManagerWallet","type":"address"}],"name":"setKYCManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isCrowdSaleRunning","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"saleWeiLimitWithoutKYC","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":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_user","type":"address"}],"name":"userHasKYC","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"kycManagerWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"START_WEEK_3","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_RATE_30_PERCENT_BONUS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PRE_SALE_START_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"START_WEEK_2","outputs":[{"name":"","type":"uint256"}],"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":"MIN_ETHER","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PRE_SALE_300_ETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_RATE_05_PERCENT_BONUS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fundWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_RATE_25_PERCENT_BONUS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PRE_SALE_GMR_TOKEN_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_RATE_15_PERCENT_BONUS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hasPreSaleEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PRE_SALE_1000_ETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"GMR_TOKEN_SALE_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finishContract","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":"ONE_MILLION","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_user","type":"address"}],"name":"disapproveUserKYC","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_user","type":"address"}],"name":"approveUserKYC","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newSaleWeiLimitWithoutKYC","type":"uint256"}],"name":"setSaleWeiLimitWithoutKYC","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_RATE_BASE_RATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"finished","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_user","type":"address"}],"name":"userWeiSpent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newMaxTxGas","type":"uint256"}],"name":"updateMaxTxGas","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isPreSaleRunning","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isTokenSaleRunning","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PRE_SALE_30_ETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"START_WEEK_1","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_RATE_10_PERCENT_BONUS","outputs":[{"name":"","type":"uint256"}],"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":"","type":"address"}],"name":"supportersMap","outputs":[{"name":"weiSpent","type":"uint256"},{"name":"hasKYC","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_RATE_20_PERCENT_BONUS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_fundWallet","type":"address"},{"name":"_kycManagerWallet","type":"address"},{"name":"_saleWeiLimitWithoutKYC","type":"uint256"},{"name":"_maxTxGas","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"isApproved","type":"bool"}],"name":"KYC","type":"event"},{"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"}]

60606040526000805460a060020a60ff0219169055341561001f57600080fd5b6040516080806120038339810160405280805191906020018051919060200180519190602001805160008054600160a060020a03191633600160a060020a039081169190911790915590925085161515905061007a57600080fd5b600160a060020a038316151561008f57600080fd5b6000821161009c57600080fd5b600081116100a957600080fd5b60038054600160a060020a03808716600160a060020a0319928316179092556004805492861692909116919091179055600882905560078190556100eb61012b565b604051809103906000f080151561010157600080fd5b60028054600160a060020a031916600160a060020a03929092169190911790555061013b92505050565b604051610ce38061132083390190565b6111d68061014a6000396000f3006060604052600436106102425763ffffffff60e060020a60003504166301c64ce8811461024c5780630432ff5614610271578063199676c7146102845780631aece0db1461029757806320a0045a146102aa57806337e05590146102bd57806337ee1837146102dc5780633b42dfad146103035780633f4ba83a146103165780634042b66f146103295780634438d2221461033c57806345a37bd61461035b5780634d73452e1461038a578063511acd531461039d578063518ab2a8146103b05780635381464c146103c357806354e707a0146103d65780635c975abb146103e95780635cd85187146103fc5780636133a0eb1461040f57806362d0ce4514610422578063664a1ad61461043557806367a6ae6214610448578063731fb32e1461045b57806375cf567a1461046e5780637878903c1461048157806378ae12d8146104945780638456cb59146104a7578063881056ba146104ba5780638a5d815e146104cd5780638da5cb5b146104e05780639869b736146104f357806398d4856714610506578063a3a6a43e14610525578063b119464814610544578063b28c461c1461055a578063bef4876b1461056d578063d0febe4c14610242578063d4fc582214610580578063d51abbd91461059f578063d5e4a36e146105b5578063e582645e146105c8578063ebe74b21146105db578063ecb70fb7146105ee578063ecff39af14610601578063f2fde38b14610614578063fa878e8f14610633578063fc0c546a14610646578063fcbd06aa14610659578063fd414a2914610692575b61024a6106a5565b005b341561025757600080fd5b61025f6108be565b60405190815260200160405180910390f35b341561027c57600080fd5b61025f6108c4565b341561028f57600080fd5b61025f6108cc565b34156102a257600080fd5b61025f6108d2565b34156102b557600080fd5b61025f6108da565b34156102c857600080fd5b61024a600160a060020a03600435166108e2565b34156102e757600080fd5b6102ef610941565b604051901515815260200160405180910390f35b341561030e57600080fd5b61025f610960565b341561032157600080fd5b61024a610966565b341561033457600080fd5b61025f6109e5565b341561034757600080fd5b6102ef600160a060020a03600435166109eb565b341561036657600080fd5b61036e610a11565b604051600160a060020a03909116815260200160405180910390f35b341561039557600080fd5b61025f610a20565b34156103a857600080fd5b61025f610a28565b34156103bb57600080fd5b61025f610a2e565b34156103ce57600080fd5b61025f610a34565b34156103e157600080fd5b61025f610a3c565b34156103f457600080fd5b6102ef610a44565b341561040757600080fd5b61025f610a54565b341561041a57600080fd5b61025f610a60565b341561042d57600080fd5b61025f610a6d565b341561044057600080fd5b61036e610a73565b341561045357600080fd5b61025f610a82565b341561046657600080fd5b61025f610a88565b341561047957600080fd5b61025f610a97565b341561048c57600080fd5b6102ef610a9d565b341561049f57600080fd5b61025f610aa7565b34156104b257600080fd5b61024a610ab4565b34156104c557600080fd5b61025f610b38565b34156104d857600080fd5b61024a610b47565b34156104eb57600080fd5b61036e610cf9565b34156104fe57600080fd5b61025f610d08565b341561051157600080fd5b61024a600160a060020a0360043516610d0f565b341561053057600080fd5b61024a600160a060020a0360043516610da3565b341561054f57600080fd5b61024a600435610e3a565b341561056557600080fd5b61025f610e67565b341561057857600080fd5b6102ef610e6d565b341561058b57600080fd5b61025f600160a060020a0360043516610e76565b34156105aa57600080fd5b61024a600435610e91565b34156105c057600080fd5b6102ef610ebe565b34156105d357600080fd5b6102ef610eda565b34156105e657600080fd5b61025f610ef2565b34156105f957600080fd5b6102ef610eff565b341561060c57600080fd5b61025f610f09565b341561061f57600080fd5b61024a600160a060020a0360043516610f11565b341561063e57600080fd5b61025f610fac565b341561065157600080fd5b61036e610fb2565b341561066457600080fd5b610678600160a060020a0360043516610fc1565b604051918252151560208201526040908101905180910390f35b341561069d57600080fd5b61025f610fdd565b60008060008060008060008060149054906101000a900460ff161515156106cb57600080fd5b6007543a11156106da57600080fd5b6106e2610fe3565b15156106ed57600080fd5b3396503495506106fc86611092565b945061070e868663ffffffff61114e16565b600554909450610724908563ffffffff61118416565b925061072e610941565b15610750576a52b7d2dcc80cd2e400000083111561074b57600080fd5b610775565b610758610ebe565b15610775576a0c685fa11e01ec6f00000083111561077557600080fd5b600160a060020a038716600090815260016020526040902080549092506107a2908763ffffffff61118416565b8083556006549091506107bb908763ffffffff61118416565b6006556005839055600254600160a060020a03166340c10f19888660006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561082257600080fd5b6102c65a03f1151561083357600080fd5b50505060405180515050600160a060020a0387167fcd60aa75dea3072fbc07ae6d7d856b5dc5f4eee88854f5b4abf7b680ef8bc50f878660405191825260208201526040908101905180910390a2600354600160a060020a03163480156108fc0290604051600060405180830381858888f1935050505015156108b557600080fd5b50505050505050565b60075481565b635a8eb0c081565b610dac81565b635a71afc081565b635a97eb4081565b60005433600160a060020a039081169116146108fd57600080fd5b600160a060020a038116151561091257600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000635a730140421015801561095b5750635a97eb404211155b905090565b60085481565b60005433600160a060020a0390811691161461098157600080fd5b60005460a060020a900460ff16151561099957600080fd5b6000805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60065481565b600160a060020a0381166000908152600160208190526040909120015460ff165b919050565b600454600160a060020a031681565b635a85764081565b610cb281565b60055481565b635a5f3ac081565b635a7c3bc081565b60005460a060020a900460ff1681565b67016345785d8a000081565b681043561a882930000081565b610a4181565b600354600160a060020a031681565b610c3581565b6a0c685fa11e01ec6f00000081565b610b3b81565b635a71afc0421190565b683635c9adc5dea0000081565b60005433600160a060020a03908116911614610acf57600080fd5b60005460a060020a900460ff1615610ae657600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b6a52b7d2dcc80cd2e400000081565b6000805433600160a060020a03908116911614610b6357600080fd5b635a97eb404211610b7357600080fd5b60095460ff1615610b8357600080fd5b6009805460ff19166001179055600554610ba490600a63ffffffff61119316565b600254600354919250600160a060020a03908116916340c10f1991168360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610c0d57600080fd5b6102c65a03f11515610c1e57600080fd5b50505060405180515050600254600160a060020a0316637d64bcb46000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610c7057600080fd5b6102c65a03f11515610c8157600080fd5b50505060405180515050600254600354600160a060020a039182169163f2fde38b911660405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515610ce257600080fd5b6102c65a03f11515610cf357600080fd5b50505050565b600054600160a060020a031681565b620f424081565b60045460009033600160a060020a03908116911614610d2d57600080fd5b600160a060020a0382161515610d4257600080fd5b50600160a060020a0381166000818152600160208190526040808320918201805460ff191690559092917fd2fe62e1cfb04a2830bbe558bdb4e07a2332de254077698f16dc3701cedc6c659151901515815260200160405180910390a25050565b60045460009033600160a060020a03908116911614610dc157600080fd5b600160a060020a0382161515610dd657600080fd5b50600160a060020a038116600081815260016020819052604091829020808201805460ff19168317905592917fd2fe62e1cfb04a2830bbe558bdb4e07a2332de254077698f16dc3701cedc6c65919051901515815260200160405180910390a25050565b60045433600160a060020a03908116911614610e5557600080fd5b60008111610e6257600080fd5b600855565b6109c481565b60095460ff1681565b600160a060020a031660009081526001602052604090205490565b60045433600160a060020a03908116911614610eac57600080fd5b60008111610eb957600080fd5b600755565b6000635a5f3ac0421015801561095b575050635a71afc0421090565b6000610ee4610ebe565b8061095b575061095b610941565b6801a055690d9db8000081565b635a97eb40421190565b635a73014081565b60005433600160a060020a03908116911614610f2c57600080fd5b600160a060020a0381161515610f4157600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b610abe81565b600254600160a060020a031681565b6001602081905260009182526040909120805491015460ff1682565b610bb881565b600080600080610ff2336109eb565b9250610ffc610941565b1561105d5782151561104a57600160a060020a03331660009081526001602052604090208054909250611035903463ffffffff61118416565b905060085481111561104a576000935061108c565b67016345785d8a0000341015935061108c565b611065610ebe565b156110875782801561108057506801a055690d9db800003410155b935061108c565b600093505b50505090565b600061109c610941565b156110f657635a8eb0c042106110b55750610a41610a0c565b635a85764042106110c95750610abe610a0c565b635a7c3bc042106110dd5750610b3b610a0c565b635a73014042106110f15750610bb8610a0c565b610a0c565b6110fe610ebe565b15610a0c57683635c9adc5dea00000821061111c5750610dac610a0c565b681043561a882930000082106111355750610cb2610a0c565b6801a055690d9db800008210610a0c5750610c35610a0c565b600080831515611161576000915061117d565b5082820282848281151561117157fe5b041461117957fe5b8091505b5092915050565b60008282018381101561117957fe5b60008082848115156111a157fe5b049493505050505600a165627a7a723058200b63012a71c02246ce781615046d970307b20777f77097718ba9e3661f45ddca002960606040526003805460a060020a60ff0219169055341561001f57600080fd5b60038054600160a060020a03191633600160a060020a0316179055610c9a806100496000396000f3006060604052600436106100e55763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b81146100ea57806306fdde0314610111578063095ea7b31461019b57806318160ddd146101bd57806323b872dd146101e2578063313ce5671461020a57806340c10f1914610233578063661884631461025557806370a08231146102775780637d64bcb4146102965780638da5cb5b146102a957806395d89b41146102d8578063a9059cbb146102eb578063d73dd6231461030d578063dd62ed3e1461032f578063f2fde38b14610354575b600080fd5b34156100f557600080fd5b6100fd610375565b604051901515815260200160405180910390f35b341561011c57600080fd5b610124610385565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610160578082015183820152602001610148565b50505050905090810190601f16801561018d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101a657600080fd5b6100fd600160a060020a03600435166024356103bc565b34156101c857600080fd5b6101d06103e8565b60405190815260200160405180910390f35b34156101ed57600080fd5b6100fd600160a060020a03600435811690602435166044356103ee565b341561021557600080fd5b61021d610454565b60405160ff909116815260200160405180910390f35b341561023e57600080fd5b6100fd600160a060020a0360043516602435610459565b341561026057600080fd5b6100fd600160a060020a0360043516602435610566565b341561028257600080fd5b6101d0600160a060020a036004351661058b565b34156102a157600080fd5b6100fd6105a6565b34156102b457600080fd5b6102bc610631565b604051600160a060020a03909116815260200160405180910390f35b34156102e357600080fd5b610124610640565b34156102f657600080fd5b6100fd600160a060020a0360043516602435610677565b341561031857600080fd5b6100fd600160a060020a03600435166024356106db565b341561033a57600080fd5b6101d0600160a060020a0360043581169060243516610700565b341561035f57600080fd5b610373600160a060020a036004351661072b565b005b60035460a060020a900460ff1681565b60408051908101604052600b81527f47696d6d6572546f6b656e000000000000000000000000000000000000000000602082015281565b60035460009060a060020a900460ff1615156103d757600080fd5b6103e183836107c6565b9392505050565b60005481565b60035460009060a060020a900460ff16151561040957600080fd5b82600160a060020a038116151561041f57600080fd5b30600160a060020a031681600160a060020a03161415151561044057600080fd5b61044b858585610832565b95945050505050565b601281565b60035460009033600160a060020a0390811691161461047757600080fd5b60035460a060020a900460ff161561048e57600080fd5b6000546104a1908363ffffffff6109b416565b6000908155600160a060020a0384168152600160205260409020546104cc908363ffffffff6109b416565b600160a060020a0384166000818152600160205260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859084905190815260200160405180910390a2600160a060020a03831660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a350600192915050565b60035460009060a060020a900460ff16151561058157600080fd5b6103e183836109c3565b600160a060020a031660009081526001602052604090205490565b60035460009033600160a060020a039081169116146105c457600080fd5b60035460a060020a900460ff16156105db57600080fd5b6003805474ff0000000000000000000000000000000000000000191660a060020a1790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a150600190565b600354600160a060020a031681565b60408051908101604052600381527f474d520000000000000000000000000000000000000000000000000000000000602082015281565b60035460009060a060020a900460ff16151561069257600080fd5b82600160a060020a03811615156106a857600080fd5b30600160a060020a031681600160a060020a0316141515156106c957600080fd5b6106d38484610abd565b949350505050565b60035460009060a060020a900460ff1615156106f657600080fd5b6103e18383610bb8565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60035433600160a060020a0390811691161461074657600080fd5b600160a060020a038116151561075b57600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b6000600160a060020a038316151561084957600080fd5b600160a060020a03841660009081526001602052604090205482111561086e57600080fd5b600160a060020a03808516600090815260026020908152604080832033909416835292905220548211156108a157600080fd5b600160a060020a0384166000908152600160205260409020546108ca908363ffffffff610c5c16565b600160a060020a0380861660009081526001602052604080822093909355908516815220546108ff908363ffffffff6109b416565b600160a060020a03808516600090815260016020908152604080832094909455878316825260028152838220339093168252919091522054610947908363ffffffff610c5c16565b600160a060020a03808616600081815260026020908152604080832033861684529091529081902093909355908516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b6000828201838110156103e157fe5b600160a060020a03338116600090815260026020908152604080832093861683529290529081205480831115610a2057600160a060020a033381166000908152600260209081526040808320938816835292905290812055610a57565b610a30818463ffffffff610c5c16565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a35060019392505050565b6000600160a060020a0383161515610ad457600080fd5b600160a060020a033316600090815260016020526040902054821115610af957600080fd5b600160a060020a033316600090815260016020526040902054610b22908363ffffffff610c5c16565b600160a060020a033381166000908152600160205260408082209390935590851681522054610b57908363ffffffff6109b416565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054610bf0908363ffffffff6109b416565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b600082821115610c6857fe5b509003905600a165627a7a723058201ac325bac733b301be9caf938ec815dc67d52e429c98d7f91b8f5d835be8ebfb0029000000000000000000000000850468f69fa4fe32816cd7698fd5bd1ece3e1d5c000000000000000000000000dcbd53ba97b1dbdaad0b55de3f115c01c7432026000000000000000000000000000000000000000000000000d02ab486cedc00000000000000000000000000000000000000000000000000000000000ba43b7400

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

000000000000000000000000850468f69fa4fe32816cd7698fd5bd1ece3e1d5c000000000000000000000000dcbd53ba97b1dbdaad0b55de3f115c01c7432026000000000000000000000000000000000000000000000000d02ab486cedc00000000000000000000000000000000000000000000000000000000000ba43b7400

-----Decoded View---------------
Arg [0] : _fundWallet (address): 0x850468f69fa4fe32816cd7698fd5bd1ece3e1d5c
Arg [1] : _kycManagerWallet (address): 0xdcbd53ba97b1dbdaad0b55de3f115c01c7432026
Arg [2] : _saleWeiLimitWithoutKYC (uint256): 15000000000000000000
Arg [3] : _maxTxGas (uint256): 50000000000

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000850468f69fa4fe32816cd7698fd5bd1ece3e1d5c
Arg [1] : 000000000000000000000000dcbd53ba97b1dbdaad0b55de3f115c01c7432026
Arg [2] : 000000000000000000000000000000000000000000000000d02ab486cedc0000
Arg [3] : 0000000000000000000000000000000000000000000000000000000ba43b7400


Swarm Source

bzzr://1ac325bac733b301be9caf938ec815dc67d52e429c98d7f91b8f5d835be8ebfb
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.