Sponsored Link:   Etheal: Backed by a Finance Minister & Michael Terpin 30% bonus - Token sale starts tomorrow
Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 142 txns
 Latest 25 txns from a total Of 142 transactions

TxHash Age From To Value [TxFee]
0x4103bd97818600a539841abab7b86d172f480f8a6c47098fec102fc1339b91dc96 days 8 hrs ago0x8242672b7b16695b0df0bd8db461c3fff5899769  IN   0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0 Ether0.000091917
0x757b157da317bc099ff3d828dc2280890ad0ae7dc1e38d8249d20b60b5e3d010105 days 1 hr ago0x8242672b7b16695b0df0bd8db461c3fff5899769  IN   0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0 Ether0.000167109
0x6b9a71ce8acb49f989ab8f139b33c14e84c70d076068ec2b9c9d4e7992cc8f2f109 days 4 hrs ago0x4918fc7974d7ee6f266f9256dfca610fd735bf27  IN   0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0 Ether0.000704823
0xf4458261bd7676d0a4b5423cd9146263c360cae12f6df599e9df20b17323eb71112 days 6 hrs ago0x4918fc7974d7ee6f266f9256dfca610fd735bf27  IN   0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0 Ether0.000483
0xade92e41a11102ad3c4032eb0089de1ecb0566a26c0437612b262b08c6543999113 days 10 hrs ago0x8242672b7b16695b0df0bd8db461c3fff5899769  IN   0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0 Ether0.000074898
0x3724147ef9adcf6cd4c18ba9fbf82d40d5033fd8e0aa221508284e7db83ffffd123 days 12 hrs ago0x8242672b7b16695b0df0bd8db461c3fff5899769  IN   0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0 Ether0.013374925
0xa2a1396091b2ff2a41ba8f221c2be66ba1541aab6d01c417c8c8298af398b9c1123 days 23 hrs ago0x8242672b7b16695b0df0bd8db461c3fff5899769  IN   0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0 Ether0.00022242
0xb91547068bb9e148932d21d85b672144facaedc44cbbd6a4442e4c2fb8c625ac124 days 21 hrs ago0x8242672b7b16695b0df0bd8db461c3fff5899769  IN   0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0 Ether0.00011121
0x9f13a75023c00d988d4f0b00c35c62eda973f542133fa0704c22a0d526718a94124 days 21 hrs ago0x8242672b7b16695b0df0bd8db461c3fff5899769  IN   0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0 Ether0.000110826
0x332536761e2f0f4aaad2014c717c8d4679d4890c71d6f49b86a5602af7d3c37d124 days 21 hrs ago0x8242672b7b16695b0df0bd8db461c3fff5899769  IN   0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0 Ether0.000147693
0xce7f89d439953e95d62a25c96c94a17c3788b7d0b13779cafefcc04e299fa85c125 days 11 hrs ago0x8a91ac199440da0b45b2e278f3fe616b1bccc494  IN   0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0 Ether0.000135408
0xd240e3179b7c63dfefb64e384042a28fc807b45924ed930da1c846cdb365a71e125 days 13 hrs ago0xec6d0482fe96707a57e0978fae827cc37272c822  IN   0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0.033 Ether0.004209839
0xdb60df957b7c2cec2deaf8756ba29ad0341e80124e5d18a5afc723a9b1df997a126 days 11 hrs ago0x8a91ac199440da0b45b2e278f3fe616b1bccc494  IN   0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0 Ether0.000135408
0x48ba2df4c8e170a4892f3e0b46134fdfd789fb233c7e6ef1e708688d8274fe2a127 days 11 hrs ago0x8a91ac199440da0b45b2e278f3fe616b1bccc494  IN   0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0 Ether0.000135408
0x1037e9982daa6b970965de12613dec150a036c4348db9fbff8db3d9fe708b5d2128 days 11 hrs ago0x8a91ac199440da0b45b2e278f3fe616b1bccc494  IN   0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0 Ether0.000135408
0x5ae8d6cdc8f70dfc4e31f57858ac04db3b38d3f5303961cffd5eb8b67d67afd0129 days 9 hrs ago0x035a4581a876a100f2451e2563d665f007907ecd  IN   0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0.1 Ether0.000581432
0xfaa4bb21d4c62bd82c07d86baa3d380665b956aef52d4906c5e1fa4ed58b2a9b129 days 11 hrs ago0x8a91ac199440da0b45b2e278f3fe616b1bccc494  IN   0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0 Ether0.000135408
0xe052f5bf8806c1255ae0c234a4528bbc0fb642fd6653504762ec0f0271ef65a1130 days 6 hrs ago0x5547a0d077c797a8d4caf1a2df77d47e396316fc  IN   0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0.01090426 Ether0.00043922
0x25039c3899c532d934c3e7931648992d1909f1db09d2b1c30d2c28526143630b130 days 11 hrs ago0x5547a0d077c797a8d4caf1a2df77d47e396316fc  IN   0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0.11 Ether0.00205358
0x0cbd33c2fa172e0c4759d73793e8333c3b8bb1d306e87d925151c8d773619705130 days 11 hrs ago0x8a91ac199440da0b45b2e278f3fe616b1bccc494  IN   0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0 Ether0.000135408
0x3d21e3b5de00427da918e827a274ca9be6caacfc31850a387271d559f45f7669131 days 7 hrs ago0x7026b863e1eedcbb63c60bcc9348ec653262ee0a  IN   0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0.085 Ether0.000021
0x4eb14271c0bc8a4fd052897439e9c803730b4d0efa1c3428b2748458dc9ea1f1131 days 11 hrs ago0x8a91ac199440da0b45b2e278f3fe616b1bccc494  IN   0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0 Ether0.000135408
0x9c2765ff5767cdd08234b18f760991e53442bc531560d82d34fab3a2a9503105131 days 13 hrs ago0xb9a5f4c8a14fcdb52e5829f6874e8c063c71dd62  IN   0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0.03352211 Ether0.00081394
0x11bf328ffa33d1f552ae1f823c70d6f90d0f64fcf14e4d24feec05b988807d95133 days 6 hrs ago0x8d3b4407ad5e375ddce78060b77f6d120e8a6f02  IN   0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0.98 Ether0.002156259
0xe30704d9e987cfe84d400a7f858a935342cc8b6544f96da16c65cde66b470b67133 days 7 hrs ago0x336ea743b2f73f7913e59d532ea20cff501c0822  IN   0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0.5 Ether0.002156259
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click here to View More View All
ParentTxHash Block Age From To Value
0x3724147ef9adcf6cd4c18ba9fbf82d40d5033fd8e0aa221508284e7db83ffffd5129200123 days 12 hrs ago0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc  Contract Creation0 Ether
0xd240e3179b7c63dfefb64e384042a28fc807b45924ed930da1c846cdb365a71e5117232125 days 13 hrs ago0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0xd447a81590c0645e92034e45d83eaacad556b3060.033 Ether
0x5ae8d6cdc8f70dfc4e31f57858ac04db3b38d3f5303961cffd5eb8b67d67afd05094313129 days 9 hrs ago0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0xd447a81590c0645e92034e45d83eaacad556b3060.1 Ether
0x25039c3899c532d934c3e7931648992d1909f1db09d2b1c30d2c28526143630b5088047130 days 11 hrs ago0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0xd447a81590c0645e92034e45d83eaacad556b3060.11 Ether
0x11bf328ffa33d1f552ae1f823c70d6f90d0f64fcf14e4d24feec05b988807d955071374133 days 6 hrs ago0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0xd447a81590c0645e92034e45d83eaacad556b3060.98 Ether
0xe30704d9e987cfe84d400a7f858a935342cc8b6544f96da16c65cde66b470b675071007133 days 7 hrs ago0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0xd447a81590c0645e92034e45d83eaacad556b3060.5 Ether
0xb111259c83a2f20cbfe16cfd1be76423e842ade3def8722829bd827720df973c5055739135 days 21 hrs ago0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0xd447a81590c0645e92034e45d83eaacad556b3060.03594012 Ether
0x58ab0d4d053295107ab2bcf96c4a58363fa025208fb48728aa4b690d79ee9dd55051077136 days 15 hrs ago0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0xd447a81590c0645e92034e45d83eaacad556b3060.74 Ether
0x4d3396b0614425ba9362374e4abf0f0f9969514c6b5be1b90dbd84889be02fe65036533139 days 2 hrs ago0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0xd447a81590c0645e92034e45d83eaacad556b3060.1 Ether
0x4e771e4483087b3a1fd742928e86bb787a29d91079fea853019306a1e26f37385024288141 days 4 hrs ago0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0xd447a81590c0645e92034e45d83eaacad556b3060.090778968 Ether
0x317a1643d47ae72b3f8c29de3c272a91b54a0d265c886480ade6ea2f8ed605c15018650142 days 2 hrs ago0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0xd447a81590c0645e92034e45d83eaacad556b3060.032 Ether
0xc7064ab3da4a8fd327ff12d2f00f02d91d27e65ca22f8d06599fc53295c7484b5018021142 days 5 hrs ago0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0xd447a81590c0645e92034e45d83eaacad556b3060.04 Ether
0x524d9ee50d5091cced12b7c963b066a6526032f1805b4351bb20215690175d6a5016819142 days 10 hrs ago0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0xd447a81590c0645e92034e45d83eaacad556b3060.07042894678000072 Ether
0x1f4b4dff0785833f18bd196049b8e5f00748df9bccc1c3277342a102f16db25f5016320142 days 12 hrs ago0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0xd447a81590c0645e92034e45d83eaacad556b3060.03 Ether
0x8a086f566b23a1e5df10beeb7ec351af6bcc4467dd3c98ff1e5aaa9431f734125016134142 days 12 hrs ago0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0xd447a81590c0645e92034e45d83eaacad556b3060.05 Ether
0xe8dd6412a6fe4fc76ffbbc67f13dda815b245b0733904fbc1ced4dcee12cb4af5010536143 days 12 hrs ago0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0xd447a81590c0645e92034e45d83eaacad556b3060.08723 Ether
0xb9039be7196403d7023e76275fc946327d802c122e7041c4689236561bad58c75007367144 days 1 hr ago0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0xd447a81590c0645e92034e45d83eaacad556b3060.07 Ether
0xefb4086a58c8a505d111f80a16c10ab19b5e3e174e99a36ef4cf778e19aacecf5007340144 days 1 hr ago0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0xd447a81590c0645e92034e45d83eaacad556b3060.03 Ether
0xf67ff08034e2eadfb80cfb5d443eca0871f247d01932c3dea2299f343624ae1f5000628145 days 4 hrs ago0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0xd447a81590c0645e92034e45d83eaacad556b3060.076681 Ether
0xcadfb70c99406e1d6c72899a9edc941222aa4fb05f1417a7f02aa85492b3e9014997132145 days 19 hrs ago0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0xd447a81590c0645e92034e45d83eaacad556b3060.39401 Ether
0xf997567f36a6367a8f88fa7d2a84d2c5e0ed66df34011dcdc660c6b9d9e2da8e4995875146 days 4 mins ago0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0xd447a81590c0645e92034e45d83eaacad556b3060.15 Ether
0x4c54586f1de9597dba7c3d0117ce4a809806a172eda3bffba1cba0c39d2cf68a4991504146 days 17 hrs ago0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0xd447a81590c0645e92034e45d83eaacad556b3060.4257 Ether
0x6cf88d9206534f05a034cd34128d6b131e26d9ee69376269cf5786b11b62eabd4988653147 days 5 hrs ago0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0xd447a81590c0645e92034e45d83eaacad556b3060.15 Ether
0x2e29510524df4bc4fa9bfc82957cafc9084794c99d8448144121ade6e07b91044984595147 days 21 hrs ago0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0xd447a81590c0645e92034e45d83eaacad556b3060.26161571 Ether
0xcd218f8b5c4d5e6c3297e520a68ba0c2efc5146196d72e12a3da54145fd455a34982697148 days 5 hrs ago0xff71727e2212b8b4d2d417fb3a57fde3bd9fe3dc0xd447a81590c0645e92034e45d83eaacad556b3060.07540672 Ether
[ Download CSV Export  ] 
Contract Source Code Verified (Exact match)
Contract Name: CrowdsaleBL
Compiler Version: v0.4.18+commit.9cf6e910
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.18;

// Project: High Reward Coin
// v4, 2017-12-31
// This code is the property of CryptoB2B.io
// Copying in whole or in part is prohibited.
// Authors: Ivan Fedorov and Dmitry Borodin
// Do you want the same ICO platform? www.cryptob2b.io


// (A1)
// The main contract for the sale and management of rounds.
contract CrowdsaleBL{
    using SafeMath for uint256;

    enum ICOType {round1, round2}
    enum Roles {beneficiary, accountant, manager, observer, bounty, team, company}

    Token public token;

    bool public isFinalized;
    bool public isInitialized;
    bool public isPausedCrowdsale;

    mapping (uint8 => address) public wallets;
   

    uint256 public startTime = 1516435200;    // 20.01.2018 08:00:00
    uint256 public endTime = 1519171199;      // 20.02.2018 23:59:59

    // How many tokens (excluding the bonus) are transferred to the investor in exchange for 1 ETH
    // **THOUSANDS** 10^3 for human, 1*10**3 for Solidity, 1e3 for MyEtherWallet (MEW).
    // Example: if 1ETH = 40.5 Token ==> use 40500
    uint256 public rate = 400000; // Tokens

    // If the round does not attain this value before the closing date, the round is recognized as a
    // failure and investors take the money back (the founders will not interfere in any way).
    // **QUINTILLIONS** 10^18 / 1*10**18 / 1e18. Example: softcap=15ETH ==> use 15*10**18 (Solidity) or 15e18 (MEW)
    uint256 public softCap = 1240000*10**18; // 1,24M Tokens (~ $1 000 000)

    // The maximum possible amount of income
    // **QUINTILLIONS** 10^18 / 1*10**18 / 1e18. Example: hardcap=123.45ETH ==> use 123450*10**15 (Solidity) or 12345e15 (MEW)
    uint256 public hardCap = 9240000*10**18; // 9,24M Tokens (~ $12 700 00)

    // If the last payment is slightly higher than the hardcap, then the usual contracts do
    // not accept it, because it goes beyond the hardcap. However it is more reasonable to accept the
    // last payment, very slightly raising the hardcap. The value indicates by how many Token emitted the
    // last payment can exceed the hardcap to allow it to be paid. Immediately after this buy, the
    // round closes. The funders should write here a small number, not more than 1% of the CAP.
    // Can be equal to zero, to cancel.
    // **QUINTILLIONS** 10^18 / 1*10**18 / 1e18
    uint256 public overLimit = 20000*10**18; // Tokens (~$20000)

    // The minimum possible payment from an investor in ETH. Payments below this value will be rejected.
    // **QUINTILLIONS** 10^18 / 1*10**18 / 1e18. Example: minPay=0.1ETH ==> use 100*10**15 (Solidity) or 100e15 (MEW)
    uint256 public minPay = 36*10**15; // 0,036 ETH (~$25)

    uint256 public ethWeiRaised;
    uint256 public nonEthWeiRaised;
    uint256 weiRound1;
    uint256 public tokenReserved;

    RefundVault public vault;
    SVTAllocation public lockedAllocation;
    
    
    struct BonusBlock {uint256 amount; uint256 procent;}
    BonusBlock[] public bonusPattern;

    ICOType ICO = ICOType.round2; // only ICO round #2 (no pre-ICO)

    uint256 allToken;

    bool public bounty;
    bool public team;
    bool public company;
    bool public partners;

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

    event Finalized();
    event Initialized();

    function CrowdsaleBL(Token _token, uint256 firstMint) public
    {
        // Initially, all next 7 roles/wallets are given to the Manager. The Manager is an employee of the company
        // with knowledge of IT, who publishes the contract and sets it up. However, money and tokens require
        // a Beneficiary and other roles (Accountant, Team, etc.). The Manager will not have the right
        // to receive them. To enable this, the Manager must either enter specific wallets here, or perform
        // this via method changeWallet. In the finalization methods it is written which wallet and
        // what percentage of tokens are received.

        // Receives all the money (when finalizing pre-ICO & ICO)
        wallets[uint8(Roles.beneficiary)] = 0xe06bD713B2e33C218FDD56295Af74d45cE8c9D98; //msg.sender;

        // Receives all the tokens for non-ETH investors (when finalizing pre-ICO & ICO)
        wallets[uint8(Roles.accountant)] = 0xddC98d7d9CdD82172daD7467c8E341cfBEb077DD; //msg.sender;

        // All rights except the rights to receive tokens or money. Has the right to change any other
        // wallets (Beneficiary, Accountant, ...), but only if the round has not started. Once the
        // round is initialized, the Manager has lost all rights to change the wallets.
        // If the ICO is conducted by one person, then nothing needs to be changed. Permit all 7 roles
        // point to a single wallet.
        wallets[uint8(Roles.manager)] = msg.sender;

        // Has only the right to call paymentsInOtherCurrency (please read the document)
        wallets[uint8(Roles.observer)] = 0x76d737F21296cd1ED6938DbCA217615681b06336; //msg.sender;


        wallets[uint8(Roles.bounty)] = 0x4918fc7974d7Ee6F266f9256DfcA610FD735Bf27; //msg.sender;

        // When the round is finalized, all team tokens are transferred to a special freezing
        // contract. As soon as defrosting is over, only the Team wallet will be able to
        // collect all the tokens. It does not store the address of the freezing contract,
        // but the final wallet of the project team.
        wallets[uint8(Roles.team)] = 0xc59403026685F553f8a6937C53452b9d1DE4c707; // msg.sender;

        // startTime, endDiscountTime, endTime (then you can change it in the setup)
        //changePeriod(now + 5 minutes, now + 5 + 10 minutes, now + 5 + 12 minutes);

        wallets[uint8(Roles.company)] = 0xc59403026685F553f8a6937C53452b9d1DE4c707; //msg.sender;
        
        token = _token;
        token.setOwner();

        token.pause(); // block exchange tokens

        token.addUnpausedWallet(msg.sender);
        token.addUnpausedWallet(wallets[uint8(Roles.company)]);
        token.addUnpausedWallet(wallets[uint8(Roles.bounty)]);
        token.addUnpausedWallet(wallets[uint8(Roles.accountant)]);

        if (firstMint > 0){
            token.mint(msg.sender,firstMint);
        }

    }

    // Returns the name of the current round in plain text. Constant.
    function ICOSaleType()  public constant returns(string){
        return (ICO == ICOType.round1)?'round1':'round2';
    }

    // Transfers the funds of the investor to the contract of return of funds. Internal.
    function forwardFunds() internal {
        vault.deposit.value(msg.value)(msg.sender);
    }

    // Check for the possibility of buying tokens. Inside. Constant.
    function validPurchase() internal constant returns (bool) {

        // The round started and did not end
        bool withinPeriod = (now > startTime && now < endTime);

        // Rate is greater than or equal to the minimum
        bool nonZeroPurchase = msg.value >= minPay;

        // round is initialized and no "Pause of trading" is set
        return withinPeriod && nonZeroPurchase && isInitialized && !isPausedCrowdsale;
    }

    // Check for the ability to finalize the round. Constant.
    function hasEnded() public constant returns (bool) {

        bool timeReached = now > endTime;

        bool capReached = token.totalSupply().add(tokenReserved) >= hardCap;

        return (timeReached || capReached) && isInitialized;
    }
    
    function finalizeAll() external {
        finalize();
        finalize1();
        finalize2();
        finalize3();
        finalize4();
    }

    // Finalize. Only available to the Manager and the Beneficiary. If the round failed, then
    // anyone can call the finalization to unlock the return of funds to investors
    // You must call a function to finalize each round (after the pre-ICO & after the ICO)
    function finalize() public {

        require(wallets[uint8(Roles.manager)] == msg.sender || wallets[uint8(Roles.beneficiary)] == msg.sender|| !goalReached());
        require(!isFinalized);
        require(hasEnded());

        isFinalized = true;
        finalization();
        Finalized();
    }

    // The logic of finalization. Internal
    function finalization() internal {

        // If the goal of the achievement
        if (goalReached()) {

            // Send ether to Beneficiary
            vault.close(wallets[uint8(Roles.beneficiary)]);

            // if there is anything to give
            if (tokenReserved > 0) {

                // Issue tokens of non-eth investors to Accountant account
                token.mint(wallets[uint8(Roles.accountant)],tokenReserved);

                // Reset the counter
                tokenReserved = 0;
            }

            // If the finalization is Round 1 pre-ICO
            if (ICO == ICOType.round1) {

                // Reset settings
                isInitialized = false;
                isFinalized = false;

                // Switch to the second round (to ICO)
                ICO = ICOType.round2;

                // Reset the collection counter
                weiRound1 = weiRaised();
                ethWeiRaised = 0;
                nonEthWeiRaised = 0;

            }
            else // If the second round is finalized
            {

                // Record how many tokens we have issued
                allToken = token.totalSupply();

                // Permission to collect tokens to those who can pick them up
                bounty = true;
                team = true;
                company = true;
                partners = true;

            }

        }
        else // If they failed round
        {
            // Allow investors to withdraw their funds
            vault.enableRefunds();
        }
    }

    // The Manager freezes the tokens for the Team.
    // You must call a function to finalize Round 2 (only after the ICO)
    function finalize1() public {
        require(wallets[uint8(Roles.manager)] == msg.sender || wallets[uint8(Roles.beneficiary)] == msg.sender);
        require(team);
        team = false;
        lockedAllocation = new SVTAllocation(token, wallets[uint8(Roles.team)]);
        token.addUnpausedWallet(lockedAllocation);
        // 6% - tokens to Team wallet after freeze (77% for investors)
        // *** CHECK THESE NUMBERS ***
        token.mint(lockedAllocation, allToken.mul(6).div(77));
    }

    function finalize2() public {
        require(wallets[uint8(Roles.manager)] == msg.sender || wallets[uint8(Roles.beneficiary)] == msg.sender);
        require(bounty);
        bounty = false;
        // 2% - tokens to bounty wallet (77% for investors)
        // *** CHECK THESE NUMBERS ***
        token.mint(wallets[uint8(Roles.bounty)], allToken.mul(2).div(77));
    }

    function finalize3() public {
        require(wallets[uint8(Roles.manager)] == msg.sender || wallets[uint8(Roles.beneficiary)] == msg.sender);
        require(company);
        company = false;
        // 2% - tokens to company wallet (77% for investors)
        // *** CHECK THESE NUMBERS ***
        token.mint(wallets[uint8(Roles.company)],allToken.mul(2).div(77));
    }

    function finalize4()  public {
        require(wallets[uint8(Roles.manager)] == msg.sender || wallets[uint8(Roles.beneficiary)] == msg.sender);
        require(partners);
        partners = false;
        // 13% - tokens to partners+referral wallet (77% for investors)
        // *** CHECK THESE NUMBERS ***
        token.mint(wallets[uint8(Roles.accountant)],allToken.mul(13).div(77));
    }


    // Initializing the round. Available to the manager. After calling the function,
    // the Manager loses all rights: Manager can not change the settings (setup), change
    // wallets, prevent the beginning of the round, etc. You must call a function after setup
    // for the initial round (before the Pre-ICO and before the ICO)
    function initialize() public{

        // Only the Manager
        require(wallets[uint8(Roles.manager)] == msg.sender);

        // If not yet initialized
        require(!isInitialized);

        // And the specified start time has not yet come
        // If initialization return an error, check the start date!
        require(now <= startTime);

        initialization();

        Initialized();

        isInitialized = true;
    }

    function initialization() internal {
	    vault = new RefundVault();
    }

    // At the request of the investor, we raise the funds (if the round has failed because of the hardcap)
    function claimRefund() public{
        vault.refund(msg.sender);
    }

    // We check whether we collected the necessary minimum funds. Constant.
    function goalReached() public constant returns (bool) {
        return token.totalSupply().add(tokenReserved) >= softCap;
    }

    // Customize. The arguments are described in the constructor above.
    function setup(uint256 _startTime, uint256 _endTime, uint256 _softCap, uint256 _hardCap, uint256 _rate, uint256 _overLimit, uint256 _minPay, uint256[] _amount, uint256[] _procent) public{
            changePeriod(_startTime, _endTime);
            changeRate(_rate, _minPay);
            changeCap(_softCap, _hardCap, _overLimit);
            if(_amount.length > 0)
                setBonusPattern(_amount,_procent);
    }

	// Change the date and time: the beginning of the round, the end of the bonus, the end of the round. Available to Manager
    // Description in the Crowdsale constructor
    function changePeriod(uint256 _startTime, uint256 _endTime) public{

        require(wallets[uint8(Roles.manager)] == msg.sender);

        require(!isInitialized);

        // Date and time are correct
        require(now <= _startTime);
        require(_startTime < _endTime);

        startTime = _startTime;
        endTime = _endTime;
    }
    

    // Change the price (the number of tokens per 1 eth), the maximum hardCap for the last bet,
    // the minimum bet. Available to the Manager.
    // Description in the Crowdsale constructor
    function changeRate(uint256 _rate, uint256 _minPay) public {

         require(wallets[uint8(Roles.manager)] == msg.sender || wallets[uint8(Roles.observer)] == msg.sender);

         require(_rate > 0);

         rate = _rate;
         minPay = _minPay;
    }
    
    function changeCap(uint256 _softCap, uint256 _hardCap, uint256 _overLimit) public {
        require(wallets[uint8(Roles.manager)] == msg.sender);
        require(!isInitialized);
        require(_hardCap > _softCap);
        softCap = _softCap;
        hardCap = _hardCap;
        overLimit = _overLimit;
    }
    
    function setBonusPattern(uint256[] _amount, uint256[] _procent) public {
        require(wallets[uint8(Roles.manager)] == msg.sender);
        require(!isInitialized);
        require(_amount.length == _procent.length);
        bonusPattern.length = _amount.length;
        for(uint256 i = 0; i < _amount.length; i++){
            bonusPattern[i] = BonusBlock(_amount[i],_procent[i]);
        }
    }

    // Collected funds for the current round. Constant.
    function weiRaised() public constant returns(uint256){
        return ethWeiRaised.add(nonEthWeiRaised);
    }

    // Returns the amount of fees for both phases. Constant.
    function weiTotalRaised() public constant returns(uint256){
        return weiRound1.add(weiRaised());
    }


    // The ability to quickly check pre-ICO (only for Round 1, only 1 time). Completes the pre-ICO by
    // transferring the specified number of tokens to the Accountant's wallet. Available to the Manager.
    // Use only if this is provided by the script and white paper. In the normal scenario, it
    // does not call and the funds are raised normally. We recommend that you delete this
    // function entirely, so as not to confuse the auditors. Initialize & Finalize not needed.
    // ** QUINTILIONS **  10^18 / 1*10**18 / 1e18
//    function fastICO(uint256 _totalSupply) public {
//      require(wallets[uint8(Roles.manager)] == msg.sender);
//      require(ICO == ICOType.round1 && !isInitialized);
//      token.mint(wallets[uint8(Roles.accountant)], _totalSupply);
//      ICO = ICOType.round2;
//    }

    // Remove the "Pause of exchange". Available to the manager at any time. If the
    // manager refuses to remove the pause, then 30 days after the successful
    // completion of the ICO, anyone can remove a pause and allow the exchange to continue.
    // The manager does not interfere and will not be able to delay the term.
    // He can only cancel the pause before the appointed time.
    function tokenUnpause() public {
        require(wallets[uint8(Roles.manager)] == msg.sender
        	|| (now > endTime + 30 days && ICO == ICOType.round2 && isFinalized && goalReached()));
        token.unpause();
    }

    // Enable the "Pause of exchange". Available to the manager until the ICO is completed.
    // The manager cannot turn on the pause, for example, 3 years after the end of the ICO.
    function tokenPause() public {
        require(wallets[uint8(Roles.manager)] == msg.sender && !isFinalized);
        token.pause();
    }

    // Pause of sale. Available to the manager.
    function crowdsalePause() public {
        require(wallets[uint8(Roles.manager)] == msg.sender);
        require(isPausedCrowdsale == false);
        isPausedCrowdsale = true;
    }

    // Withdrawal from the pause of sale. Available to the manager.
    function crowdsaleUnpause() public {
        require(wallets[uint8(Roles.manager)] == msg.sender);
        require(isPausedCrowdsale == true);
        isPausedCrowdsale = false;
    }

    // Checking whether the rights to address ignore the "Pause of exchange". If the
    // wallet is included in this list, it can translate tokens, ignoring the pause. By default,
    // only the following wallets are included:
    //    - Accountant wallet (he should immediately transfer tokens, but not to non-ETH investors)
    //    - Contract for freezing the tokens for the Team (but Team wallet not included)
    // Inside. Constant.
    function unpausedWallet(address _wallet) internal constant returns(bool) {
        bool _accountant = wallets[uint8(Roles.accountant)] == _wallet;
        bool _manager = wallets[uint8(Roles.manager)] == _wallet;
        bool _bounty = wallets[uint8(Roles.bounty)] == _wallet;
        bool _company = wallets[uint8(Roles.company)] == _wallet;
        return _accountant || _manager || _bounty || _company;
    }

    // For example - After 5 years of the project's existence, all of us suddenly decided collectively
    // (company + investors) that it would be more profitable for everyone to switch to another smart
    // contract responsible for tokens. The company then prepares a new token, investors
    // disassemble, study, discuss, etc. After a general agreement, the manager allows any investor:
	//      - to burn the tokens of the previous contract
	//      - generate new tokens for a new contract
	// It is understood that after a general solution through this function all investors
	// will collectively (and voluntarily) move to a new token.
    function moveTokens(address _migrationAgent) public {
        require(wallets[uint8(Roles.manager)] == msg.sender);
        token.setMigrationAgent(_migrationAgent);
    }

	// Change the address for the specified role.
	// Available to any wallet owner except the observer.
	// Available to the manager until the round is initialized.
	// The Observer's wallet or his own manager can change at any time.
    function changeWallet(Roles _role, address _wallet) public
    {
        require(
        		(msg.sender == wallets[uint8(_role)] && _role != Roles.observer)
      		||
      			(msg.sender == wallets[uint8(Roles.manager)] && (!isInitialized || _role == Roles.observer))
      	);
        address oldWallet = wallets[uint8(_role)];
        wallets[uint8(_role)] = _wallet;
        if(!unpausedWallet(oldWallet))
            token.delUnpausedWallet(oldWallet);
        if(unpausedWallet(_wallet))
            token.addUnpausedWallet(_wallet);
    }

    // If a little more than a year has elapsed (ICO start date + 400 days), a smart contract
    // will allow you to send all the money to the Beneficiary, if any money is present. This is
    // possible if you mistakenly launch the ICO for 30 years (not 30 days), investors will transfer
    // money there and you will not be able to pick them up within a reasonable time. It is also
    // possible that in our checked script someone will make unforeseen mistakes, spoiling the
    // finalization. Without finalization, money cannot be returned. This is a rescue option to
    // get around this problem, but available only after a year (400 days).

	// Another reason - the ICO was a failure, but not all ETH investors took their money during the year after.
	// Some investors may have lost a wallet key, for example.

	// The method works equally with the pre-ICO and ICO. When the pre-ICO starts, the time for unlocking
	// the distructVault begins. If the ICO is then started, then the term starts anew from the first day of the ICO.

	// Next, act independently, in accordance with obligations to investors.

	// Within 400 days of the start of the Round, if it fails only investors can take money. After
	// the deadline this can also include the company as well as investors, depending on who is the first to use the method.
    function distructVault() public {
        require(wallets[uint8(Roles.beneficiary)] == msg.sender);
        require(now > startTime + 400 days);
        vault.del(wallets[uint8(Roles.beneficiary)]);
    }
    
    
    
    function getBonus(uint256 _tokenValue) public constant returns (uint256 value) {
        uint256 totalToken = tokenReserved.add(token.totalSupply());
        uint256 tokenValue = _tokenValue;
        uint256 currentBonus;
        uint256 calculateBonus = 0;
        uint16 i;
        for (i = 0; i < bonusPattern.length; i++){
            if(totalToken >= bonusPattern[i].amount)
                continue;
            currentBonus = tokenValue.mul(bonusPattern[i].procent.add(100000)).div(100000);
            if(totalToken.add(calculateBonus).add(currentBonus) < bonusPattern[i].amount) {
                calculateBonus = calculateBonus.add(currentBonus);
                tokenValue = 0;
                break;
            }
            currentBonus = bonusPattern[i].amount.sub(totalToken.add(calculateBonus));
            tokenValue = tokenValue.sub(currentBonus.mul(100000).div(bonusPattern[i].procent.add(100000)));
            calculateBonus = calculateBonus + currentBonus;
        }
        return calculateBonus.add(tokenValue);
    }


	// We accept payments other than Ethereum (ETH) and other currencies, for example, Bitcoin (BTC).
	// Perhaps other types of cryptocurrency - see the original terms in the white paper and on the ICO website.

	// We release tokens on Ethereum. During the pre-ICO and ICO with a smart contract, you directly transfer
	// the tokens there and immediately, with the same transaction, receive tokens in your wallet.

	// When paying in any other currency, for example in BTC, we accept your money via one common wallet.
	// Our manager fixes the amount received for the bitcoin wallet and calls the method of the smart
    // contract paymentsInOtherCurrency to inform him how much foreign currency has been received - on a daily basis.
    // The smart contract pins the number of accepted ETH directly and the number of BTC. Smart contract
    // monitors softcap and hardcap, so as not to go beyond this framework.

	// In theory, it is possible that when approaching hardcap, we will receive a transfer (one or several
	// transfers) to the wallet of BTC, that together with previously received money will exceed the hardcap in total.
	// In this case, we will refund all the amounts above, in order not to exceed the hardcap.

	// Collection of money in BTC will be carried out via one common wallet. The wallet's address will be published
	// everywhere (in a white paper, on the ICO website, on Telegram, on Bitcointalk, in this code, etc.)
	// Anyone interested can check that the administrator of the smart contract writes down exactly the amount
	// in ETH (in equivalent for BTC) there. In theory, the ability to bypass a smart contract to accept money in
	// BTC and not register them in ETH creates a possibility for manipulation by the company. Thanks to
	// paymentsInOtherCurrency however, this threat is leveled.

	// Any user can check the amounts in BTC and the variable of the smart contract that accounts for this
	// (paymentsInOtherCurrency method). Any user can easily check the incoming transactions in a smart contract
	// on a daily basis. Any hypothetical tricks on the part of the company can be exposed and panic during the ICO,
	// simply pointing out the incompatibility of paymentsInOtherCurrency (ie, the amount of ETH + BTC collection)
	// and the actual transactions in BTC. The company strictly adheres to the described principles of openness.

	// The company administrator is required to synchronize paymentsInOtherCurrency every working day (but you
	// cannot synchronize if there are no new BTC payments). In the case of unforeseen problems, such as
	// brakes on the Ethereum network, this operation may be difficult. You should only worry if the
	// administrator does not synchronize the amount for more than 96 hours in a row, and the BTC wallet
	// receives significant amounts.

	// This scenario ensures that for the sum of all fees in all currencies this value does not exceed hardcap.

    // Common BTC wallet: 12sEoiXPs8a6sJbC2qkbZDjmHsSBv7cGwC

    // ** QUINTILLIONS ** 10^18 / 1**18 / 1e18
    function paymentsInOtherCurrency(uint256 _token, uint256 _value) public {
        require(wallets[uint8(Roles.observer)] == msg.sender);
        bool withinPeriod = (now >= startTime && now <= endTime);

        bool withinCap = token.totalSupply().add(_token) <= hardCap.add(overLimit);
        require(withinPeriod && withinCap && isInitialized);

        nonEthWeiRaised = _value;
        tokenReserved = _token;

    }


    // The function for obtaining smart contract funds in ETH. If all the checks are true, the token is
    // transferred to the buyer, taking into account the current bonus.
    function buyTokens(address beneficiary) public payable {
        require(beneficiary != 0x0);
        require(validPurchase());

        uint256 weiAmount = msg.value;

        // calculate token amount to be created
        uint256 tokens = getBonus(weiAmount*rate/1000);
        
        // hardCap is not reached, and in the event of a transaction, it will not be exceeded by more than OverLimit
        bool withinCap = tokens <= hardCap.sub(token.totalSupply().add(tokenReserved)).add(overLimit);
        
        require(withinCap);

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

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

        forwardFunds();
    }

    // buyTokens alias
    function () public payable {
        buyTokens(msg.sender);
    }

}

// (B)
// The contract for freezing tokens for the team..
contract SVTAllocation {
    using SafeMath for uint256;

    Token public token;

	address public owner;

    uint256 public unlockedAt;

    uint256 tokensCreated = 0;

    // The contract takes the ERC20 coin address from which this contract will work and from the
    // owner (Team wallet) who owns the funds.
    function SVTAllocation(Token _token, address _owner) public{

    	// How many days to freeze from the moment of finalizing ICO
        unlockedAt = now + 1 years;
        token = _token;
        owner = _owner;
    }

    // If the time of freezing expired will return the funds to the owner.
    function unlock() public{
        require(now >= unlockedAt);
        require(token.transfer(owner,token.balanceOf(this)));
    }
}



/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    	uint256 c = a * b;
    	assert(a == 0 || 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 does not hold
        return c;
    }

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

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



/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
    address public owner;

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

}

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

    bool _paused = false;

    function paused() public constant returns(bool)
    {
        return _paused;
    }

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

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

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


// Contract interface for transferring current tokens to another
contract MigrationAgent
{
    function migrateFrom(address _from, uint256 _value) public;
}



// (A2)
// Contract token
contract Token is Pausable{
    using SafeMath for uint256;

    string public constant name = "High Reward Coin";
    string public constant symbol = "HRC";
    uint8 public constant decimals = 18;

    uint256 public totalSupply;

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

    mapping (address => bool) public unpausedWallet;

    bool public mintingFinished = false;

    uint256 public totalMigrated;
    address public migrationAgent;

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    event Mint(address indexed to, uint256 amount);
    event MintFinished();

    event Migrate(address indexed _from, address indexed _to, uint256 _value);

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

     function Token() public {
         owner = 0x0;
     }

     function setOwner() public{
         require(owner == 0x0);
         owner = msg.sender;
     }

    // Balance of the specified address
    function balanceOf(address _owner) public constant returns (uint256 balance) {
        return balances[_owner];
    }

    // Transfer of tokens from one account to another
    function transfer(address _to, uint256 _value) public whenNotPaused returns (bool) {
        require (_value > 0);
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        Transfer(msg.sender, _to, _value);
        return true;
    }

    // Returns the number of tokens that _owner trusted to spend from his account _spender
    function allowance(address _owner, address _spender) public constant returns (uint256 remaining) {
        return allowed[_owner][_spender];
    }

    // Trust _sender and spend _value tokens from your account
    function approve(address _spender, uint256 _value) public 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;
    }

    // Transfer of tokens from the trusted address _from to the address _to in the number _value
    function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused 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);

        require (_value > 0);

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

    // Issue new tokens to the address _to in the amount _amount. Available to the owner of the contract (contract Crowdsale)
    function mint(address _to, uint256 _amount) public onlyOwner canMint returns (bool) {
        totalSupply = totalSupply.add(_amount);
        balances[_to] = balances[_to].add(_amount);
        Mint(_to, _amount);
        Transfer(0x0, _to, _amount);
        return true;
    }

    // Stop the release of tokens. This is not possible to cancel. Available to the owner of the contract.
//    function finishMinting() public onlyOwner returns (bool) {
//        mintingFinished = true;
//        MintFinished();
//        return true;
//    }

    // Redefinition of the method of the returning status of the "Exchange pause".
    // Never for the owner of an unpaused wallet.
    function paused() public constant returns(bool) {
        return super.paused() && !unpausedWallet[msg.sender];
    }


    // Add a wallet ignoring the "Exchange pause". Available to the owner of the contract.
    function addUnpausedWallet(address _wallet) public onlyOwner {
        unpausedWallet[_wallet] = true;
    }

    // Remove the wallet ignoring the "Exchange pause". Available to the owner of the contract.
    function delUnpausedWallet(address _wallet) public onlyOwner {
         unpausedWallet[_wallet] = false;
    }

    // Enable the transfer of current tokens to others. Only 1 time. Disabling this is not possible.
    // Available to the owner of the contract.
    function setMigrationAgent(address _migrationAgent) public onlyOwner {
        require(migrationAgent == 0x0);
        migrationAgent = _migrationAgent;
    }

    // Reissue your tokens.
    function migrate() public
    {
        uint256 value = balances[msg.sender];
        require(value > 0);

        totalSupply = totalSupply.sub(value);
        totalMigrated = totalMigrated.add(value);
        MigrationAgent(migrationAgent).migrateFrom(msg.sender, value);
        Migrate(msg.sender,migrationAgent,value);
        balances[msg.sender] = 0;
    }
}

// (A3)
// Contract for freezing of investors' funds. Hence, investors will be able to withdraw money if the
// round does not attain the softcap. From here the wallet of the beneficiary will receive all the
// money (namely, the beneficiary, not the manager's wallet).
contract RefundVault is Ownable {
    using SafeMath for uint256;

    enum State { Active, Refunding, Closed }

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

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

    function RefundVault() public {
        state = State.Active;
    }

    // Depositing funds on behalf of an ICO investor. Available to the owner of the contract (Crowdsale Contract).
    function deposit(address investor) onlyOwner public payable {
        require(state == State.Active);
        deposited[investor] = deposited[investor].add(msg.value);
        Deposited(investor,msg.value);
    }

    // Move the collected funds to a specified address. Available to the owner of the contract.
    function close(address _wallet) onlyOwner public {
        require(state == State.Active);
        require(_wallet != 0x0);
        state = State.Closed;
        Closed();
        _wallet.transfer(this.balance);
    }

    // Allow refund to investors. Available to the owner of the contract.
    function enableRefunds() onlyOwner public {
        require(state == State.Active);
        state = State.Refunding;
        RefundsEnabled();
    }

    // Return the funds to a specified investor. In case of failure of the round, the investor
    // should call this method of this contract (RefundVault) or call the method claimRefund of Crowdsale
    // contract. This function should be called either by the investor himself, or the company
    // (or anyone) can call this function in the loop to return funds to all investors en masse.
    function refund(address investor) public {
        require(state == State.Refunding);
        require(deposited[investor] > 0);
        uint256 depositedValue = deposited[investor];
        deposited[investor] = 0;
        investor.transfer(depositedValue);
        Refunded(investor, depositedValue);
    }

    // Destruction of the contract with return of funds to the specified address. Available to
    // the owner of the contract.
    function del(address _wallet) external onlyOwner {
        selfdestruct(_wallet);
    }
}

    Contract ABI  
[{"constant":false,"inputs":[],"name":"finalize2","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"tokenPause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"tokenUnpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"_softCap","type":"uint256"},{"name":"_hardCap","type":"uint256"},{"name":"_rate","type":"uint256"},{"name":"_overLimit","type":"uint256"},{"name":"_minPay","type":"uint256"},{"name":"_amount","type":"uint256[]"},{"name":"_procent","type":"uint256[]"}],"name":"setup","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_softCap","type":"uint256"},{"name":"_hardCap","type":"uint256"},{"name":"_overLimit","type":"uint256"}],"name":"changeCap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weiTotalRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ICOSaleType","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"uint256"},{"name":"_value","type":"uint256"}],"name":"paymentsInOtherCurrency","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finalize1","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isInitialized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"crowdsalePause","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":"_tokenValue","type":"uint256"}],"name":"getBonus","outputs":[{"name":"value","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ethWeiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"}],"name":"changePeriod","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finalizeAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_migrationAgent","type":"address"}],"name":"moveTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"company","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint8"}],"name":"wallets","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"bonusPattern","outputs":[{"name":"amount","type":"uint256"},{"name":"procent","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"goalReached","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"partners","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minPay","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"team","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_role","type":"uint8"},{"name":"_wallet","type":"address"}],"name":"changeWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isFinalized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"softCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bounty","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"distructVault","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_rate","type":"uint256"},{"name":"_minPay","type":"uint256"}],"name":"changeRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"nonEthWeiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimRefund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finalize3","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isPausedCrowdsale","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalize4","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lockedAllocation","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"overLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenReserved","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256[]"},{"name":"_procent","type":"uint256[]"}],"name":"setBonusPattern","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"hardCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"crowdsaleUnpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_token","type":"address"},{"name":"firstMint","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[],"name":"Initialized","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6060604052635a62f700600255635a8cb67f60035562061a806004556a01069488e1b66e570000006005556a07a4a567581ddb5f00000060065569043c33c1937564800000600755667fe5cf2bea00006008556010805460ff1916600117905534156200006b57600080fd5b60405160408062003336833981016040528080519190602001805160016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49805473e06bd713b2e33c218fdd56295af74d45ce8c9d98600160a060020a031991821617909155600080516020620032d6833981519152805473ddc98d7d9cdd82172dad7467c8e341cfbeb077dd9083161790557fd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f80548216600160a060020a03338116919091179091557f7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b80547376d737f21296cd1ed6938dbca217615681b06336908416179055600080516020620032f68339815191528054734918fc7974d7ee6f266f9256dfca610fd735bf279084161790557fe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c805473c59403026685f553f8a6937c53452b9d1de4c7079084168117909155600660009081526000805160206200331683398151915280548516909217909155805490921686821617918290559193501690506340caae066040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b15156200026357600080fd5b6102c65a03f115156200027557600080fd5b5050600054600160a060020a03169050638456cb596040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515620002d257600080fd5b6102c65a03f11515620002e457600080fd5b5050600054600160a060020a0316905063abb00601336040517c010000000000000000000000000000000000000000000000000000000063ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b15156200035257600080fd5b6102c65a03f115156200036457600080fd5b505060008054600690915260016020526000805160206200331683398151915254600160a060020a03918216925063abb0060191166040517c010000000000000000000000000000000000000000000000000000000063ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515620003f157600080fd5b6102c65a03f115156200040357600080fd5b50506000805460049091526001602052600080516020620032f683398151915254600160a060020a03918216925063abb0060191166040517c010000000000000000000000000000000000000000000000000000000063ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b15156200049057600080fd5b6102c65a03f11515620004a257600080fd5b505060008054600191829052602091909152600080516020620032d683398151915254600160a060020a03918216925063abb0060191166040517c010000000000000000000000000000000000000000000000000000000063ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b15156200053157600080fd5b6102c65a03f115156200054357600080fd5b5050506000811115620005e95760008054600160a060020a0316906340c10f199033908490604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515620005cc57600080fd5b6102c65a03f11515620005de57600080fd5b505050604051805150505b5050612cdb80620005fb6000396000f3006060604052600436106102425763ffffffff60e060020a60003504166302093ee2811461024d5780630abd2ba8146102605780631b302a16146102735780631cb1778a14610286578063212257de146103345780632c4e722e146103505780632cde15d1146103755780632eb44efc146103885780633197cbb614610412578063333dbda81461042557806336c35f941461043e578063392e53cd146104515780633f174064146104785780634042b66f1461048b5780634aa66b281461049e5780634bb278f3146104b45780634bca4626146104c75780635fe0e081146104da5780636025d3e5146104f357806363689b4a146105065780636904c94d14610525578063733f28a81461053857806378e979251461056d5780637c559d5f146105805780637d3d6522146105ae5780638129fc1c146105c157806381add559146105d457806382d18650146105e757806385f2aef2146105fa5780638a0c47cd1461060d5780638d4e408314610632578063906a26e014610645578063943dfef11461065857806399554fb71461066b578063a883b0c41461067e578063b16d153814610697578063b5545a3c146106aa578063b7992c0b146106bd578063c8b43c10146106d0578063d2038d4d146106e3578063db0834cf146106f6578063e06e0e4314610709578063e195d0961461071c578063ec8ac4d81461072f578063ecb70fb714610743578063f3702b8214610756578063fb86a404146107e5578063fbfa77cf146107f8578063fc0c546a1461080b578063ffa67f6c1461081e575b61024b33610831565b005b341561025857600080fd5b61024b610a14565b341561026b57600080fd5b61024b610b5c565b341561027e57600080fd5b61024b610bfb565b341561029157600080fd5b61024b6004803590602480359160443591606435916084359160a4359160c435916101049060e435908101908301358060208181020160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750949650610cbe95505050505050565b341561033f57600080fd5b61024b600435602435604435610cfc565b341561035b57600080fd5b610363610d5f565b60405190815260200160405180910390f35b341561038057600080fd5b610363610d65565b341561039357600080fd5b61039b610d87565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156103d75780820151838201526020016103bf565b50505050905090810190601f1680156104045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561041d57600080fd5b610363610e19565b341561043057600080fd5b61024b600435602435610e1f565b341561044957600080fd5b61024b610f1b565b341561045c57600080fd5b6104646110cd565b604051901515815260200160405180910390f35b341561048357600080fd5b61024b6110dd565b341561049657600080fd5b61036361114e565b34156104a957600080fd5b610363600435611167565b34156104bf57600080fd5b61024b61138a565b34156104d257600080fd5b610363611481565b34156104e557600080fd5b61024b600435602435611487565b34156104fe57600080fd5b61024b6114f5565b341561051157600080fd5b61024b600160a060020a036004351661151f565b341561053057600080fd5b6104646115b2565b341561054357600080fd5b61055160ff600435166115c1565b604051600160a060020a03909116815260200160405180910390f35b341561057857600080fd5b6103636115dc565b341561058b57600080fd5b6105966004356115e2565b60405191825260208201526040908101905180910390f35b34156105b957600080fd5b61046461160e565b34156105cc57600080fd5b61024b61166a565b34156105df57600080fd5b61046461171d565b34156105f257600080fd5b61036361172d565b341561060557600080fd5b610464611733565b341561061857600080fd5b61024b60ff60043516600160a060020a0360243516611741565b341561063d57600080fd5b61046461195e565b341561065057600080fd5b61036361196e565b341561066357600080fd5b610464611974565b341561067657600080fd5b61024b61197d565b341561068957600080fd5b61024b600435602435611a2f565b34156106a257600080fd5b610363611abd565b34156106b557600080fd5b61024b611ac3565b34156106c857600080fd5b61024b611b13565b34156106db57600080fd5b610464611bb7565b34156106ee57600080fd5b61024b611bc7565b341561070157600080fd5b610551611caa565b341561071457600080fd5b610363611cb9565b341561072757600080fd5b610363611cbf565b61024b600160a060020a0360043516610831565b341561074e57600080fd5b610464611cc5565b341561076157600080fd5b61024b600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750949650611d4d95505050505050565b34156107f057600080fd5b610363611e39565b341561080357600080fd5b610551611e3f565b341561081657600080fd5b610551611e4e565b341561082957600080fd5b61024b611e5d565b60008080600160a060020a038416151561084a57600080fd5b610852611ecc565b151561085d57600080fd5b600454349350610873906103e890850204611167565b600754600c546000805493955061091593610909926108fa929091600160a060020a0316906318160ddd90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156108d357600080fd5b6102c65a03f115156108e457600080fd5b505050604051805191905063ffffffff611f2816565b6006549063ffffffff611f3e16565b9063ffffffff611f2816565b82111590508061092457600080fd5b600954610937908463ffffffff611f2816565b60095560008054600160a060020a0316906340c10f1990869085906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561099c57600080fd5b6102c65a03f115156109ad57600080fd5b505050604051805190505083600160a060020a031633600160a060020a03167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18858560405191825260208201526040908101905180910390a3610a0e611f50565b50505050565b60026000526001602052600080516020612c908339815191525433600160a060020a0390811691161480610a6c5750600080526001602052600080516020612c708339815191525433600160a060020a039081169116145b1515610a7757600080fd5b60125460ff161515610a8857600080fd5b6012805460ff1916905560008054600160a060020a0316906340c10f199060019060045b60ff168152602081019190915260400160002054601154600160a060020a0390911690610af390604d90610ae790600263ffffffff611fb116565b9063ffffffff611fd516565b60006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610b3f57600080fd5b6102c65a03f11515610b5057600080fd5b50505060405180515050565b60026000526001602052600080516020612c908339815191525433600160a060020a039081169116148015610b9b575060005460a060020a900460ff16155b1515610ba657600080fd5b600054600160a060020a0316638456cb596040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515610be557600080fd5b6102c65a03f11515610bf657600080fd5b505050565b60026000526001602052600080516020612c908339815191525433600160a060020a0390811691161480610c74575060035462278d000142118015610c505750600160105460ff166001811115610c4e57fe5b145b8015610c65575060005460a060020a900460ff165b8015610c745750610c7461160e565b1515610c7f57600080fd5b600054600160a060020a0316633f4ba83a6040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515610be557600080fd5b610cc88989611487565b610cd28584611a2f565b610cdd878786610cfc565b600082511115610cf157610cf18282611d4d565b505050505050505050565b60026000526001602052600080516020612c908339815191525433600160a060020a03908116911614610d2e57600080fd5b60005460a860020a900460ff1615610d4557600080fd5b828211610d5157600080fd5b600592909255600655600755565b60045481565b6000610d81610d7261114e565b600b549063ffffffff611f2816565b90505b90565b610d8f612388565b600060105460ff166001811115610da257fe5b14610de05760408051908101604052600681527f726f756e643200000000000000000000000000000000000000000000000000006020820152610d81565b60408051908101604052600681527f726f756e643100000000000000000000000000000000000000000000000000006020820152905090565b60035481565b6003600090815260016020527f7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b54819033600160a060020a03908116911614610e6757600080fd5b6002544210158015610e7b57506003544211155b9150610e94600754600654611f2890919063ffffffff16565b60008054610ee3918791600160a060020a0316906318160ddd90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156108d357600080fd5b11159050818015610ef15750805b8015610f06575060005460a860020a900460ff165b1515610f1157600080fd5b5050600a55600c55565b60026000526001602052600080516020612c908339815191525433600160a060020a0390811691161480610f735750600080526001602052600080516020612c708339815191525433600160a060020a039081169116145b1515610f7e57600080fd5b601254610100900460ff161515610f9457600080fd5b6012805461ff001916905560008054600590915260016020527fe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c54600160a060020a039182169116610fe461239a565b600160a060020a0392831681529116602082015260409081019051809103906000f080151561101257600080fd5b600e805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03928316179081905560005482169163abb00601911660405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b151561108857600080fd5b6102c65a03f1151561109957600080fd5b5050600054600e54601154600160a060020a0392831693506340c10f199290911690610af390604d90610ae7906006611fb1565b60005460a860020a900460ff1681565b60026000526001602052600080516020612c908339815191525433600160a060020a0390811691161461110f57600080fd5b60005460b060020a900460ff161561112657600080fd5b6000805476ff00000000000000000000000000000000000000000000191660b060020a179055565b6000610d81600a54600954611f2890919063ffffffff16565b60008054819081908190819081906111e690600160a060020a03166318160ddd83604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156111bd57600080fd5b6102c65a03f115156111ce57600080fd5b5050506040518051600c54915063ffffffff611f2816565b945086935060009150600090505b600f5461ffff8216101561136f57600f805461ffff831690811061121457fe5b6000918252602090912060029091020154851061123057611367565b611281620186a0610ae7611274620186a0600f8661ffff1681548110151561125457fe5b906000526020600020906002020160010154611f2890919063ffffffff16565b879063ffffffff611fb116565b9250600f8161ffff1681548110151561129657fe5b60009182526020909120600290910201546112bb84610909888663ffffffff611f2816565b10156112dc576112d1828463ffffffff611f2816565b91506000935061136f565b61131e6112ef868463ffffffff611f2816565b600f805461ffff851690811061130157fe5b60009182526020909120600290910201549063ffffffff611f3e16565b9250611360611353611340620186a0600f8561ffff1681548110151561125457fe5b610ae786620186a063ffffffff611fb116565b859063ffffffff611f3e16565b9350908201905b6001016111f4565b61137f828563ffffffff611f2816565b979650505050505050565b60026000526001602052600080516020612c908339815191525433600160a060020a03908116911614806113e25750600080526001602052600080516020612c708339815191525433600160a060020a039081169116145b806113f257506113f061160e565b155b15156113fd57600080fd5b60005460a060020a900460ff161561141457600080fd5b61141c611cc5565b151561142757600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a179055611453611fec565b7f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768160405160405180910390a1565b60095481565b60026000526001602052600080516020612c908339815191525433600160a060020a039081169116146114b957600080fd5b60005460a860020a900460ff16156114d057600080fd5b42829011156114de57600080fd5b8082106114ea57600080fd5b600291909155600355565b6114fd61138a565b611505610f1b565b61150d610a14565b611515611b13565b61151d611bc7565b565b60026000526001602052600080516020612c908339815191525433600160a060020a0390811691161461155157600080fd5b600054600160a060020a03166375e2ff658260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b15156115a157600080fd5b6102c65a03f11515610a0e57600080fd5b60125462010000900460ff1681565b600160205260009081526040902054600160a060020a031681565b60025481565b600f8054829081106115f057fe5b60009182526020909120600290910201805460019091015490915082565b600554600c546000805490929161166391600160a060020a03166318160ddd85604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156108d357600080fd5b1015905090565b60026000526001602052600080516020612c908339815191525433600160a060020a0390811691161461169c57600080fd5b60005460a860020a900460ff16156116b357600080fd5b6002544211156116c257600080fd5b6116ca612277565b7f5daa87a0e9463431830481fd4b6e3403442dfb9a12b9c07597e9f61d50b633c860405160405180910390a16000805475ff000000000000000000000000000000000000000000191660a860020a179055565b6012546301000000900460ff1681565b60085481565b601254610100900460ff1681565b60006001600084600681111561175357fe5b60ff16815260208101919091526040016000205433600160a060020a03908116911614801561178e5750600383600681111561178b57fe5b14155b806117e8575060026000526001602052600080516020612c908339815191525433600160a060020a0390811691161480156117e8575060005460a860020a900460ff1615806117e8575060038360068111156117e657fe5b145b15156117f357600080fd5b6001600084600681111561180357fe5b60ff1681526020810191909152604001600090812054600160a060020a03169150829060019085600681111561183557fe5b60ff1681526020810191909152604001600020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905561187c816122c4565b15156118e757600054600160a060020a03166306301ce88260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b15156118d257600080fd5b6102c65a03f115156118e357600080fd5b5050505b6118f0826122c4565b15610bf657600054600160a060020a031663abb006018360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b151561194557600080fd5b6102c65a03f1151561195657600080fd5b505050505050565b60005460a060020a900460ff1681565b60055481565b60125460ff1681565b600080526001602052600080516020612c708339815191525433600160a060020a039081169116146119ae57600080fd5b60025463020f58000142116119c257600080fd5b600d54600080526001602052600080516020612c7083398151915254600160a060020a039182169163b9caebf4911660405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515610be557600080fd5b60026000526001602052600080516020612c908339815191525433600160a060020a0390811691161480611a9a5750600360005260016020527f7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b5433600160a060020a039081169116145b1515611aa557600080fd5b60008211611ab257600080fd5b600491909155600855565b600a5481565b600d54600160a060020a031663fa89401a3360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515610be557600080fd5b60026000526001602052600080516020612c908339815191525433600160a060020a0390811691161480611b6b5750600080526001602052600080516020612c708339815191525433600160a060020a039081169116145b1515611b7657600080fd5b60125462010000900460ff161515611b8d57600080fd5b6012805462ff00001916905560008054600160a060020a0316906340c10f19906001906006610aac565b60005460b060020a900460ff1681565b60026000526001602052600080516020612c908339815191525433600160a060020a0390811691161480611c1f5750600080526001602052600080516020612c708339815191525433600160a060020a039081169116145b1515611c2a57600080fd5b6012546301000000900460ff161515611c4257600080fd5b6012805463ff00000019169055600080546001918290526020919091527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f54601154600160a060020a03928316926340c10f19921690610af390604d90610ae790600d611fb1565b600e54600160a060020a031681565b60075481565b600c5481565b600354600654600c5460008054909342119284929091611d249190600160a060020a03166318160ddd85604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156108d357600080fd5b101590508180611d315750805b8015611d46575060005460a860020a900460ff165b9250505090565b600260009081526001602052600080516020612c908339815191525433600160a060020a03908116911614611d8157600080fd5b60005460a860020a900460ff1615611d9857600080fd5b8151835114611da657600080fd5b8251611db3600f826123aa565b50600090505b8251811015610bf6576040805190810160405280848381518110611dd957fe5b906020019060200201518152602001838381518110611df457fe5b906020019060200201519052600f805483908110611e0e57fe5b9060005260206000209060020201600082015181556020820151600191820155919091019050611db9565b60065481565b600d54600160a060020a031681565b600054600160a060020a031681565b60026000526001602052600080516020612c908339815191525433600160a060020a03908116911614611e8f57600080fd5b60005460b060020a900460ff161515600114611eaa57600080fd5b6000805476ff0000000000000000000000000000000000000000000019169055565b600080600060025442118015611ee3575060035442105b91506008543410159050818015611ef75750805b8015611f0c575060005460a860020a900460ff165b8015611d4657505060005460b060020a900460ff161592915050565b600082820183811015611f3757fe5b9392505050565b600082821115611f4a57fe5b50900390565b600d54600160a060020a031663f340fa01343360405160e060020a63ffffffff8516028152600160a060020a0390911660048201526024016000604051808303818588803b1515611fa057600080fd5b6125ee5a03f11515610a0e57600080fd5b6000828202831580611fcd5750828482811515611fca57fe5b04145b1515611f3757fe5b6000808284811515611fe357fe5b04949350505050565b611ff461160e565b1561223857600d54600080526001602052600080516020612c7083398151915254600160a060020a039182169163c74073a1911660405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b151561206657600080fd5b6102c65a03f1151561207757600080fd5b5050506000600c541115612137576000805460018083526020527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f54600c54600160a060020a03928316936340c10f1993909216916040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561211657600080fd5b6102c65a03f1151561212757600080fd5b505050604051805150506000600c555b600060105460ff16600181111561214a57fe5b1415612196576000805475ffff0000000000000000000000000000000000000000191690556010805460ff1916600117905561218461114e565b600b5560006009819055600a55612233565b60008054600160a060020a0316906318160ddd90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156121df57600080fd5b6102c65a03f115156121f057600080fd5b5050506040518051601155506012805463ff0000001962ff00001961ff001960ff1990931660011792909216610100179190911662010000171663010000001790555b61151d565b600d54600160a060020a0316638c52dc416040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515610be557600080fd5b61227f6123d6565b604051809103906000f080151561229557600080fd5b600d805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60016020527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f54600080516020612c90833981519152547fedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b56764354600660009081527f8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a549093600160a060020a03868116918116821494811682149381168214921614838061236e5750825b806123765750815b8061237e5750805b9695505050505050565b60206040519081016040526000815290565b60405161029c8061240b83390190565b815481835581811511610bf657600202816002028360005260206000209182019101610bf691906123e6565b6040516105c9806126a783390190565b610d8491905b8082111561240657600080825560018201556002016123ec565b5090560060606040526000600355341561001457600080fd5b60405160408061029c83398101604052808051919060200180516301e13380420160025560008054600160a060020a03958616600160a060020a03199182161790915560018054959092169416939093179092555050610223806100796000396000f3006060604052600436106100485763ffffffff60e060020a6000350416638cb1e9c1811461004d5780638da5cb5b14610072578063a69df4b5146100a1578063fc0c546a146100b6575b600080fd5b341561005857600080fd5b6100606100c9565b60405190815260200160405180910390f35b341561007d57600080fd5b6100856100cf565b604051600160a060020a03909116815260200160405180910390f35b34156100ac57600080fd5b6100b46100de565b005b34156100c157600080fd5b6100856101e8565b60025481565b600154600160a060020a031681565b6002544210156100ed57600080fd5b60008054600154600160a060020a039182169263a9059cbb929091169083906370a082319030906040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561015957600080fd5b6102c65a03f1151561016a57600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156101c057600080fd5b6102c65a03f115156101d157600080fd5b5050506040518051905015156101e657600080fd5b565b600054600160a060020a0316815600a165627a7a72305820091d3464ad6dee29e5bf8cb76732d424c9195969e405ce17967dabff24eff0d500296060604052341561000f57600080fd5b60008054600160a060020a03191633600160a060020a03161781556002805460ff1916905561058590819061004490396000f3006060604052600436106100985763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416638c52dc41811461009d5780638da5cb5b146100b2578063b9caebf4146100e1578063c19d93fb14610100578063c74073a114610137578063cb13cddb14610156578063f2fde38b14610187578063f340fa01146101a6578063fa89401a146101ba575b600080fd5b34156100a857600080fd5b6100b06101d9565b005b34156100bd57600080fd5b6100c561024c565b604051600160a060020a03909116815260200160405180910390f35b34156100ec57600080fd5b6100b0600160a060020a036004351661025b565b341561010b57600080fd5b610113610282565b6040518082600281111561012357fe5b60ff16815260200191505060405180910390f35b341561014257600080fd5b6100b0600160a060020a036004351661028b565b341561016157600080fd5b610175600160a060020a0360043516610350565b60405190815260200160405180910390f35b341561019257600080fd5b6100b0600160a060020a0360043516610362565b6100b0600160a060020a03600435166103c1565b34156101c557600080fd5b6100b0600160a060020a0360043516610477565b60005433600160a060020a039081169116146101f457600080fd5b60006002805460ff169081111561020757fe5b1461021157600080fd5b6002805460ff191660011790557f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8960405160405180910390a1565b600054600160a060020a031681565b60005433600160a060020a0390811691161461027657600080fd5b80600160a060020a0316ff5b60025460ff1681565b60005433600160a060020a039081169116146102a657600080fd5b60006002805460ff16908111156102b957fe5b146102c357600080fd5b600160a060020a03811615156102d857600080fd5b6002805460ff1916811790557f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a180600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f19350505050151561034d57600080fd5b50565b60016020526000908152604090205481565b60005433600160a060020a0390811691161461037d57600080fd5b600160a060020a038116151561039257600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60005433600160a060020a039081169116146103dc57600080fd5b60006002805460ff16908111156103ef57fe5b146103f957600080fd5b600160a060020a038116600090815260016020526040902054610422903463ffffffff61054316565b600160a060020a0382166000818152600160205260409081902092909255907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c49034905190815260200160405180910390a250565b600060016002805460ff169081111561048c57fe5b1461049657600080fd5b600160a060020a038216600090815260016020526040812054116104b957600080fd5b50600160a060020a038116600081815260016020526040808220805492905590919082156108fc0290839051600060405180830381858888f19350505050151561050257600080fd5b81600160a060020a03167fd7dee2702d63ad89917b6a4da9981c90c4d24f8c2bdfd64c604ecae57d8d06518260405190815260200160405180910390a25050565b60008282018381101561055257fe5b93925050505600a165627a7a72305820b24faec5618cd6a2cae4605c629bb7e723d4c84c0db9ae8e4c8c9511c99b2dd70029a6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49d9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330fa165627a7a7230582040b33056024912e03c6a99c3c321f3d88359bcdd28834709ddadb312a61352180029cc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792fedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b5676438f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a000000000000000000000000fbbc46458c53154c0d1b45c801c28a99f95fa7090000000000000000000000000000000000000000000000000000000000000000

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

-----Decoded View---------------
Found 2 constructor arguments :
Arg [0] : 000000000000000000000000FbBc46458C53154C0D1B45C801c28a99F95FA709
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000


   Swarm Source:
bzzr://40b33056024912e03c6a99c3c321f3d88359bcdd28834709ddadb312a6135218

 

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