Contract Overview | FairDAPP
Balance: 0.002093006318962332 Ether
Ether Value: $0.37 (@ $176.63/ETH)
Transactions: 13039 txns
Token Tracker: Infinity (Inf)
Misc:
Address Watch: Add To Watch List
Contract Creator: 0xbc817a495f0114755da5305c5aa84fc5ca7ebabdat txn 0xbc93bd0fe70f19c2aa249efedca9d207fbffbbc1365b4029e4f63a85a60328ab
Token Balance:
 Latest 25 transactions from a total of 13039 transactions

TxHash Age From To Value [TxFee]
0x7cf1acdaab7fa2634f6ac064e83335fa686023bb4a006cba2225c6c28b8a0cb57 days 21 hrs ago0x9769a6dd076c6adc5d3a43847969fcba3e8126c3  IN   FairDAPP0.5 Ether0.000464732
0xed149d3fb554522e3b364d81867e6f456df2c491ef73fbd82881d506067666268 days 22 hrs ago0x9769a6dd076c6adc5d3a43847969fcba3e8126c3  IN   FairDAPP0.5 Ether0.000697098
0x23f017624b9bb7f37635c661573e768c262333ea81ee3b3bcdeab816babb1b918 days 22 hrs ago0x9769a6dd076c6adc5d3a43847969fcba3e8126c3  IN   FairDAPP0 Ether0.000258135
0x5124cf45be4c7809891d6ca7621c8bce99c6e310c7e3f9153de735917e5424f48 days 22 hrs ago0x9769a6dd076c6adc5d3a43847969fcba3e8126c3  IN   FairDAPP0.5 Ether0.00116186
0xe820bdbe80d482c369e6e3fe74e75710d884c1644357b7fbe48f8009562e99cb8 days 22 hrs ago0x9769a6dd076c6adc5d3a43847969fcba3e8126c3  IN   FairDAPP0.5 Ether0.00116184
0x30bbaa437cd7ee510779e6a22e3f5ec4555ae80954172f1da56b42a886c6c5b28 days 22 hrs ago0x9769a6dd076c6adc5d3a43847969fcba3e8126c3  IN   FairDAPP1 Ether0.001621284
0x0f1dd709499dfa81a742828dd33c2d096168891c25d3b6f3ea7373223b4c09228 days 22 hrs ago0x9769a6dd076c6adc5d3a43847969fcba3e8126c3  IN   FairDAPP0 Ether0.000258135
0xdf0c0f8468df7d7894d123294bdfcc12083ea16bfad5ad476f9c8869551f839218 days 9 hrs ago0xc72ebec36d186997bcfdf847370c9a05bd5aef70  IN   FairDAPP0 Ether0.000598591
0x0dcd44004e76a49751fbb8084e06103357ea5f45b992a374a45989ff7ebe0c6a28 days 18 hrs ago0x9769a6dd076c6adc5d3a43847969fcba3e8126c3  IN   FairDAPP0.5 Ether0.000697098
0x9f64e134ec5f8f2df44ff9231cf1206a4667438b78bc1da480cde584a82beddb38 days 5 hrs ago0x6d0acdd986b7589295a43c91b95fd1f26fbc59f6  IN   FairDAPP0 Ether0.0002050205
0x706254a55f0009cb5fb399d453962dcc6672c050226509edd608135f7eb4662038 days 5 hrs ago0x6d0acdd986b7589295a43c91b95fd1f26fbc59f6  IN   FairDAPP0.105 Ether0.00061803378
0x7a7caf5648248c31ccb55271eb95a8a850883c44b87cba700f23595b50c16d5838 days 9 hrs ago0xcd8a1bdfa29cbb3671649e39a8cb1a34e88437ce  IN   FairDAPP0 Ether0.000074965
0x1324ea6177fa2e26a30582583522391ef4c63d9139c0290cf5359b8bad5cb33e38 days 22 hrs ago0x20920c6df10c08ff92d74143a86a330185a726bf  IN   FairDAPP0 Ether0.000293754
0x7cc641f50e47cd995e57a0096d289ed3ea4047af4a0e316ba76c3595a381097838 days 22 hrs ago0x1cb84ce6365592c63ff3242a4cc9a50cfc31fa0b  IN   FairDAPP0 Ether0.000195438
0x0e1597035dc8de89466ecc3cf450753fc6d0873ef398c535582a727d9d6cb9aa38 days 23 hrs ago0xb1c1d7f38f32c629787d821fd98be66f8c777514  IN   FairDAPP0 Ether0.00032573
0x7776c2d4b017a02cf80427541c98f43fd47e26f276e1c805e09634e0666b056b38 days 23 hrs ago0xfc32260a554556417e2ddd7b5872566905d2d482  IN   FairDAPP0 Ether0.0003867761
0xb965ddeb1e36546373a588df2da4d92442fc29205b768f733e28e2b7c810388938 days 23 hrs ago0x8d5626647bd0b3f7499f6ac78637f8eddbad421b  IN   FairDAPP0 Ether0.000750015
0xebba06032a39e2fa7ae8a96b6465eb6ac4369c758930b47ee993d9d7299f492838 days 23 hrs ago0x6d0acdd986b7589295a43c91b95fd1f26fbc59f6  IN   FairDAPP0 Ether0.00078328
0xd449f69340008135c4f34c1b88029d830d9857993e4813def1a940f696141dc838 days 23 hrs ago0xab4485ca338b91087a09ae8bc141648bb1c6e967  IN   FairDAPP0 Ether0.00097918
0xf897b4e3eecd1db62a4b6fa609930820eba0421b3b31db1509c83fd81fa8afec38 days 23 hrs ago0x8d5626647bd0b3f7499f6ac78637f8eddbad421b  IN   FairDAPP0.001 Ether0.00434479
0xd22698a75710704917812324fce327663a6ece6df23419b6b5d4025070098abe38 days 23 hrs ago0xfc32260a554556417e2ddd7b5872566905d2d482  IN   FairDAPP0 Ether0.000328158
0xc685752ec712f0884a9fa7060cf37f031450e31f9322249b50c035b77ad8182b38 days 23 hrs ago0x8d5626647bd0b3f7499f6ac78637f8eddbad421b  IN   FairDAPP0.2 Ether0.00135888
0x5b0fe818e7231f837dca4a0b0b505b60008d4e2219a89c7d73aa1eff800bf6e638 days 23 hrs ago0x6d0acdd986b7589295a43c91b95fd1f26fbc59f6  IN   FairDAPP0 Ether0.000868224
0xd6d92fa43316f2f00615e52df1847e96f82861641f9033e8d4f2f3b7bfdda93738 days 23 hrs ago0xab4485ca338b91087a09ae8bc141648bb1c6e967  IN   FairDAPP0.1 Ether0.0077395
0xa5fbded1bd03a797a670ebe6fa55755e1c012742f5b9de50b802c4cb475874a438 days 23 hrs ago0x8d5626647bd0b3f7499f6ac78637f8eddbad421b  IN   FairDAPP0.2 Ether0.0015529122
[ 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
0x9f64e134ec5f8f2df44ff9231cf1206a4667438b78bc1da480cde584a82beddb649471338 days 5 hrs ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290x6d0acdd986b7589295a43c91b95fd1f26fbc59f60.161145245924662657 Ether
0x706254a55f0009cb5fb399d453962dcc6672c050226509edd608135f7eb46620649471338 days 5 hrs ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.0021 Ether
0x7a7caf5648248c31ccb55271eb95a8a850883c44b87cba700f23595b50c16d58649365338 days 9 hrs ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xcd8a1bdfa29cbb3671649e39a8cb1a34e88437ce0.000725483001266692 Ether
0x1324ea6177fa2e26a30582583522391ef4c63d9139c0290cf5359b8bad5cb33e649015338 days 22 hrs ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290x20920c6df10c08ff92d74143a86a330185a726bf0.016114524592466265 Ether
0x7cc641f50e47cd995e57a0096d289ed3ea4047af4a0e316ba76c3595a3810978649015338 days 22 hrs ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290x1cb84ce6365592c63ff3242a4cc9a50cfc31fa0b0.011 Ether
0x0e1597035dc8de89466ecc3cf450753fc6d0873ef398c535582a727d9d6cb9aa649013338 days 23 hrs ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xb1c1d7f38f32c629787d821fd98be66f8c7775140.0401 Ether
0x7776c2d4b017a02cf80427541c98f43fd47e26f276e1c805e09634e0666b056b649012138 days 23 hrs ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xfc32260a554556417e2ddd7b5872566905d2d4820.016114524592466265 Ether
0xd449f69340008135c4f34c1b88029d830d9857993e4813def1a940f696141dc8649011438 days 23 hrs ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xab4485ca338b91087a09ae8bc141648bb1c6e9670.241717868886993987 Ether
0xf897b4e3eecd1db62a4b6fa609930820eba0421b3b31db1509c83fd81fa8afec649011338 days 23 hrs ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.00002 Ether
0xc685752ec712f0884a9fa7060cf37f031450e31f9322249b50c035b77ad8182b649010338 days 23 hrs ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.004 Ether
0x5b0fe818e7231f837dca4a0b0b505b60008d4e2219a89c7d73aa1eff800bf6e6649010338 days 23 hrs ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290x6d0acdd986b7589295a43c91b95fd1f26fbc59f60.60624615163285858 Ether
0xd6d92fa43316f2f00615e52df1847e96f82861641f9033e8d4f2f3b7bfdda937649010238 days 23 hrs ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.002 Ether
0xa5fbded1bd03a797a670ebe6fa55755e1c012742f5b9de50b802c4cb475874a4649010038 days 23 hrs ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.004 Ether
0xe43ee0ae5c9650a11d29d73738d8a57a4a8249cc6556154a134ef634a21a9495649008538 days 23 hrs ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.002 Ether
0x9bd27b1633c944c642438bcfa72580e0b510fcfb42fac9aaa334ff224bccdab4649006738 days 23 hrs ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.001 Ether
0x130c6a19cf3aea9ec90898146fdc6d3bc8a7aad66019d2a4cb506b8d514ccda4649001638 days 23 hrs ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.0002 Ether
0xa672a4df396c428d2d8c171722b3925a2b4bf3d73e476ebd77f95a166bdb8f55648984739 days 9 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290x1cb84ce6365592c63ff3242a4cc9a50cfc31fa0b0.260129083029016314 Ether
0x0db87c8442aa2d73b0309b0ec224c6b4841851ee6137639b69cb8b8d1156f730648972439 days 38 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xe18bbc1813899a83d605447b772ce38d070493090.067065893040213281 Ether
0x2b6f897210a66047e46746ec85cadbc777db11b2a165a31545c43b35ee50ec0c648972439 days 38 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290x3abbefaa33e404988a85b028e8007080715630c30.067065893040213281 Ether
0x728966e1c10248d97a7def42f6c59256dc3ef3f1f5cf417fd2ced9b41933c88d648972439 days 38 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290x9eb82267f2e8082fb487271a2e65faff98bd54a90.067065893040213281 Ether
0xa5d8bc128d9d4bbf7893c4cc9648e4a4fd3aa18af19801ffcbc56f4def2a157e648972439 days 38 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290x3ed60fd005962393b2fc4de281536f056cf4d1db0.067065893040213281 Ether
0x1328d656c2dc4f6f542fdf35ab761804a262731d92c819520763a5d658e18ab7648972439 days 38 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290x924cac19774e6763fab501acc8aca9cf3bcdc6310.067065893040213281 Ether
0xe58dd88ac50bd9e90df3969a351a3d6b775245d6a6e50ee0b482cf6f7e62cbce648972439 days 38 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290x2fa379b472fe14cdab9fd7e506a35bac61f76adc0.067065893040213281 Ether
0xd98a9139cb81944cdd4872254c0044dfb848681b906781baba0810d952619838648972439 days 38 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290x4265a190e8160c1bad4d0e956d06f14a0d2cb3c20.067065893040213281 Ether
0xfd617ed3cd118246e310a36058814aeb2c34c33ac394e86b0db53795ecfc5bc6648972439 days 38 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xc5d122b6592e60ce10a84d5171a27d6d9c6542bd0.067065893040213281 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: Infinity
Compiler Text: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.24;

/**
 *
 *
 *  http://fairdapp.com     http://fairdapp.com     http://fairdapp.com
 *   
 *                       _______     _       ______  _______ ______ ______  
 *                      (_______)   (_)     (______)(_______|_____ (_____ \ 
 *                       _____ _____ _  ____ _     _ _______ _____) )____) )
 *                      |  ___|____ | |/ ___) |   | |  ___  |  ____/  ____/ 
 *                      | |   / ___ | | |   | |__/ /| |   | | |    | |      
 *                      |_|   \_____|_|_|   |_____/ |_|   |_|_|    |_|      
 *                                                                    
 *                               _         ___ _       _             
 *                              | |       / __|_)     (_)  _         
 *                              | |____ _| |__ _ ____  _ _| |_ _   _ 
 *                              | |  _ (_   __) |  _ \| (_   _) | | |
 *                              | | | | || |  | | | | | | | |_| |_| |
 *                              |_|_| |_||_|  |_|_| |_|_|  \__)\__  |
 *                                                            (____/                                                                  
 *   
 *  Warning:
 *     
 *  FairDAPP – Infinity is a system designed to explore human behavior
 *  using infinite loops of token redistribution through open source 
 *  smart contract codes and pre-defined rules.
 *   
 *  This system is for internal use only and all could be lost
 *  by sending anything to this contract address.
 *   
 *  -The contract has an activation switch to activate the system.
 *  -No one can change anything once the contract has been deployed.
 *   
 *  -Built in Antiwhale for initial stages for a fairer system.
 *
**/


contract Infinity {
    using SafeMath for uint256;
    
    /*------------------------------
                CONFIGURABLES
     ------------------------------*/
    string public name = "Infinity";    // Contract name
    string public symbol = "Inf";
    
    uint256 public initAmount;          // Initial stage target
    uint256 public amountProportion;    // Stage target growth rate %
    uint256 public dividend;            // Input to Dividend %
    uint256 public jackpot;             // Input to Jackpot %
    uint256 public jackpotProportion;   // Jackpot payout %
    uint256 public scientists;          // Donation Fee % to scientists
    uint256 public promotionRatio;      // Promotion %
    uint256 public duration;            // Duration per stage
    bool public activated = false;
    
    address public developerAddr;
    
    /*------------------------------
                DATASETS
     ------------------------------*/
    uint256 public rId;   // Current round id number
    uint256 public sId;   // Current stage id number
    
    mapping (uint256 => Indatasets.Round) public round; // (rId => data) round data by round id
    mapping (uint256 => mapping (uint256 => Indatasets.Stage)) public stage;    // (rId => sId => data) stage data by round id & stage id
    mapping (address => Indatasets.Player) public player;   // (address => data) player data
    mapping (uint256 => mapping (address => uint256)) public playerRoundAmount; // (rId => address => playerRoundAmount) round data by round id
    mapping (uint256 => mapping (address => uint256)) public playerRoundSid; 
    mapping (uint256 => mapping (address => uint256)) public playerRoundwithdrawAmountFlag; 
    mapping (uint256 => mapping (uint256 => mapping (address => uint256))) public playerStageAmount;    // (rId => sId => address => playerStageAmount) round data by round id & stage id
    mapping (uint256 => mapping (uint256 => mapping (address => uint256))) public playerStageAccAmount;  
    
    //Antiwhale setting, max 5% of stage target for the first 10 stages per address
    uint256[] amountLimit = [0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50];

    /*------------------------------
                PUBLIC FUNCTIONS
    ------------------------------*/
    
    constructor()
        public
    {
        developerAddr = msg.sender;
    }
    
    /*------------------------------
                MODIFIERS
     ------------------------------*/
     
    modifier isActivated() {
        require(activated == true, "its not ready yet.  check ?eta in discord"); 
        _;
    }
    
    modifier senderVerify() {
        require (msg.sender == tx.origin);
        _;
    }
    
    modifier stageVerify(uint256 _rId, uint256 _sId, uint256 _amount) {
        require(stage[_rId][_sId].amount.add(_amount) <= stage[_rId][_sId].targetAmount);
        _;
    }
    
    /**
     * Don't toy or spam the contract.
     * The scientists will take anything below 0.0001 ETH sent to the contract.
     * Thank you for your donation.
     */
    modifier amountVerify() {
        if(msg.value < 100000000000000){
            developerAddr.transfer(msg.value);
        }else{
            require(msg.value >= 100000000000000);
            _;
        }
    }
    
    modifier playerVerify() {
        require(player[msg.sender].active == true);
        _;
    }
    
    /**
     * Activation of contract with settings
     */
    function activate()
        public
    {
        require(msg.sender == developerAddr);
        require(activated == false, "Infinity already activated");
        
        activated = true;
        initAmount = 10000000000000000000;
        amountProportion = 10;
        dividend = 70;
        jackpot = 28;  
        jackpotProportion = 70;  
        scientists = 2;
        promotionRatio = 10;
        duration = 86400;
        rId = 1;
        sId = 1;
        
        round[rId].start = now;
        initStage(rId, sId);
    
    }
    
    /**
     * Fallback function to handle ethereum that was send straight to the contract
     * Unfortunately we cannot use a referral address this way.
     */
    function()
        isActivated()
        senderVerify()
        amountVerify()
        payable
        public
    {
        buyAnalysis(0x0);
    }

    /**
     * Standard buy function.
     */
    function buy(address _recommendAddr)
        isActivated()
        senderVerify()
        amountVerify()
        public
        payable
        returns(uint256)
    {
        buyAnalysis(_recommendAddr);
    }
    
    /**
     * Withdraw function.
     * Withdraw 50 stages at once on current settings.
     * May require to request withdraw more than once to withdraw everything.
     */
    function withdraw()
        isActivated()
        senderVerify()
        playerVerify()
        public
    {
        uint256 _rId = rId;
        uint256 _sId = sId;
        uint256 _amount;
        uint256 _playerWithdrawAmountFlag;
        
        (_amount, player[msg.sender].withdrawRid, player[msg.sender].withdrawSid, _playerWithdrawAmountFlag) = getPlayerDividendByStage(_rId, _sId, msg.sender);

        if(_playerWithdrawAmountFlag > 0)
            playerRoundwithdrawAmountFlag[player[msg.sender].withdrawRid][msg.sender] = _playerWithdrawAmountFlag;
        
        if(player[msg.sender].promotionAmount > 0 ){
            _amount = _amount.add(player[msg.sender].promotionAmount);
            player[msg.sender].promotionAmount = 0;
        }    
        msg.sender.transfer(_amount);
    }

    
    /**
     * Core logic to analyse buy behaviour. 
     */
    function buyAnalysis(address _recommendAddr)
        private
    {
        uint256 _rId = rId;
        uint256 _sId = sId;
        uint256 _amount = msg.value;
        uint256 _promotionRatio = promotionRatio;
        
        if(now > stage[_rId][_sId].end && stage[_rId][_sId].targetAmount > stage[_rId][_sId].amount){
            
            endRound(_rId, _sId);
            
            _rId = rId;
            _sId = sId;
            round[_rId].start = now;
            initStage(_rId, _sId);
            
            _amount = limitAmount(_rId, _sId);
            buyRoundDataRecord(_rId, _amount);
            _promotionRatio = promotionDataRecord(_recommendAddr, _amount);
            buyStageDataRecord(_rId, _sId, _promotionRatio, _amount);
            buyPlayerDataRecord(_rId, _sId, _amount);
            
        }else if(now <= stage[_rId][_sId].end){
            
            _amount = limitAmount(_rId, _sId);
            buyRoundDataRecord(_rId, _amount);
            _promotionRatio = promotionDataRecord(_recommendAddr, _amount);
            
            if(stage[_rId][_sId].amount.add(_amount) >= stage[_rId][_sId].targetAmount){
                
                uint256 differenceAmount = (stage[_rId][_sId].targetAmount).sub(stage[_rId][_sId].amount);
                buyStageDataRecord(_rId, _sId, _promotionRatio, differenceAmount);
                buyPlayerDataRecord(_rId, _sId, differenceAmount);
                
                endStage(_rId, _sId);

                _sId = sId;
                initStage(_rId, _sId);
                round[_rId].endSid = _sId;
                buyStageDataRecord(_rId, _sId, _promotionRatio, _amount.sub(differenceAmount));
                buyPlayerDataRecord(_rId, _sId, _amount.sub(differenceAmount));
                
            }else{
                buyStageDataRecord(_rId, _sId, _promotionRatio, _amount);
                buyPlayerDataRecord(_rId, _sId, _amount);
                
            }
        }
    }
    
    
    /**
     * Sets the initial stage parameter. 
     */
    function initStage(uint256 _rId, uint256 _sId)
        private
    {
        uint256 _targetAmount;
        stage[_rId][_sId].start = now;
        stage[_rId][_sId].end = now.add(duration);
        if(_sId > 1){
            stage[_rId][_sId - 1].end = now;
            stage[_rId][_sId - 1].ended = true;
            _targetAmount = (stage[_rId][_sId - 1].targetAmount.mul(amountProportion + 100)) / 100;
        }else
            _targetAmount = initAmount;
            
        stage[_rId][_sId].targetAmount = _targetAmount;
        
    }
    
    /**
     * Execution of antiwhale. 
     */
    function limitAmount(uint256 _rId, uint256 _sId)
        private
        returns(uint256)
    {
        uint256 _amount = msg.value;
        
        if(amountLimit.length > _sId)
            _amount = ((stage[_rId][_sId].targetAmount.mul(amountLimit[_sId])) / 1000).sub(playerStageAmount[_rId][_sId][msg.sender]);
        else
            _amount = ((stage[_rId][_sId].targetAmount.mul(500)) / 1000).sub(playerStageAmount[_rId][_sId][msg.sender]);
            
        if(_amount >= msg.value)
            return msg.value;
        else
            msg.sender.transfer(msg.value.sub(_amount));
        
        return _amount;
    }
    
    /**
     * Record the addresses eligible for promotion links.
     */
    function promotionDataRecord(address _recommendAddr, uint256 _amount)
        private
        returns(uint256)
    {
        uint256 _promotionRatio = promotionRatio;
        
        if(_recommendAddr != 0x0000000000000000000000000000000000000000 
            && _recommendAddr != msg.sender 
            && player[_recommendAddr].active == true
        )
            player[_recommendAddr].promotionAmount = player[_recommendAddr].promotionAmount.add((_amount.mul(_promotionRatio)) / 100);
        else
            _promotionRatio = 0;
        
        return _promotionRatio;
    }
    
    
    /**
     * Records the round data.
     */
    function buyRoundDataRecord(uint256 _rId, uint256 _amount)
        private
    {

        round[_rId].amount = round[_rId].amount.add(_amount);
        developerAddr.transfer(_amount.mul(scientists) / 100);
    }
    
    /**
     * Records the stage data.
     */
    function buyStageDataRecord(uint256 _rId, uint256 _sId, uint256 _promotionRatio, uint256 _amount)
        stageVerify(_rId, _sId, _amount)
        private
    {
        if(_amount <= 0)
            return;
        stage[_rId][_sId].amount = stage[_rId][_sId].amount.add(_amount);
        stage[_rId][_sId].dividendAmount = stage[_rId][_sId].dividendAmount.add((_amount.mul(dividend.sub(_promotionRatio))) / 100);
    }
    
    /**
     * Records the player data.
     */
    function buyPlayerDataRecord(uint256 _rId, uint256 _sId, uint256 _amount)
        private
    {
        if(_amount <= 0)
            return;
            
        if(player[msg.sender].active == false){
            player[msg.sender].active = true;
            player[msg.sender].withdrawRid = _rId;
            player[msg.sender].withdrawSid = _sId;
        }
            
        if(playerRoundAmount[_rId][msg.sender] == 0){
            round[_rId].players++;
            playerRoundSid[_rId][msg.sender] = _sId;
        }
            
        if(playerStageAmount[_rId][_sId][msg.sender] == 0)
            stage[_rId][_sId].players++;
            
        playerRoundAmount[_rId][msg.sender] = playerRoundAmount[_rId][msg.sender].add(_amount);
        playerStageAmount[_rId][_sId][msg.sender] = playerStageAmount[_rId][_sId][msg.sender].add(_amount);
        
        player[msg.sender].amount = player[msg.sender].amount.add(_amount);
        
        if(playerRoundSid[_rId][msg.sender] > 0){
            
            if(playerStageAccAmount[_rId][_sId][msg.sender] == 0){
                
                for(uint256 i = playerRoundSid[_rId][msg.sender]; i < _sId; i++){
                
                    if(playerStageAmount[_rId][i][msg.sender] > 0)
                        playerStageAccAmount[_rId][_sId][msg.sender] = playerStageAccAmount[_rId][_sId][msg.sender].add(playerStageAmount[_rId][i][msg.sender]);
                    
                }
            }
            
            playerStageAccAmount[_rId][_sId][msg.sender] = playerStageAccAmount[_rId][_sId][msg.sender].add(_amount);
        }
    }
    
    /**
     * Execute end of round events.
     */
    function endRound(uint256 _rId, uint256 _sId)
        private
    {
        round[_rId].end = now;
        round[_rId].ended = true;
        round[_rId].endSid = _sId;
        stage[_rId][_sId].end = now;
        stage[_rId][_sId].ended = true;
        
        if(stage[_rId][_sId].players == 0)
            round[_rId + 1].jackpotAmount = round[_rId + 1].jackpotAmount.add(round[_rId].jackpotAmount);
        else
            round[_rId + 1].jackpotAmount = round[_rId + 1].jackpotAmount.add(round[_rId].jackpotAmount.mul(100 - jackpotProportion) / 100);
        
        rId++;
        sId = 1;
        
    }
    
    /**
     * Execute end of stage events.
     */
    function endStage(uint256 _rId, uint256 _sId)
        private
    {
        uint256 _jackpotAmount = stage[_rId][_sId].amount.mul(jackpot) / 100;
        round[_rId].endSid = _sId;
        round[_rId].jackpotAmount = round[_rId].jackpotAmount.add(_jackpotAmount);
        stage[_rId][_sId].end = now;
        stage[_rId][_sId].ended = true;
        if(_sId > 1)
            stage[_rId][_sId].accAmount = stage[_rId][_sId].targetAmount.add(stage[_rId][_sId - 1].accAmount);
        else
            stage[_rId][_sId].accAmount = stage[_rId][_sId].targetAmount;
        
        sId++;
    }
    
    /**
     * Precalculations for withdraws to conserve gas.
     */
    function getPlayerDividendByStage(uint256 _rId, uint256 _sId, address _playerAddr)
        private
        view
        returns(uint256, uint256, uint256, uint256)
    {
        
        uint256 _dividend;
        uint256 _stageNumber;
        uint256 _startSid;
        uint256 _playerAmount;    
        
        for(uint256 i = player[_playerAddr].withdrawRid; i <= _rId; i++){
            
            if(playerRoundAmount[i][_playerAddr] == 0)
                continue;
            
            _playerAmount = 0;    
            _startSid = i == player[_playerAddr].withdrawRid ? player[_playerAddr].withdrawSid : 1;
            for(uint256 j = _startSid; j < round[i].endSid; j++){
                    
                if(playerStageAccAmount[i][j][_playerAddr] > 0)
                    _playerAmount = playerStageAccAmount[i][j][_playerAddr];
                    
                if(_playerAmount == 0)
                    _playerAmount = playerRoundwithdrawAmountFlag[i][_playerAddr];
                    
                if(_playerAmount == 0)
                    continue;
                _dividend = _dividend.add(
                    (
                        _playerAmount.mul(stage[i][j].dividendAmount)
                    ).div(stage[i][j].accAmount)
                );
                
                _stageNumber++;
                if(_stageNumber >= 50)
                    return (_dividend, i, j + 1, _playerAmount);
            }
            
            if(round[i].ended == true
                && stage[i][round[i].endSid].amount > 0
                && playerStageAmount[i][round[i].endSid][_playerAddr] > 0
            ){
                _dividend = _dividend.add(getPlayerJackpot(_playerAddr, i));
                _stageNumber++;
                if(_stageNumber >= 50)
                    return (_dividend, i + 1, 1, 0);
            }
        }
        return (_dividend, _rId, _sId, _playerAmount);
    }
    
    /**
     * Get player current withdrawable dividend.
     */
    function getPlayerDividend(address _playerAddr)
        public
        view
        returns(uint256)
    {
        uint256 _endRid = rId;
        uint256 _startRid = player[_playerAddr].withdrawRid;
        uint256 _startSid;
        uint256 _dividend;
        
        for(uint256 i = _startRid; i <= _endRid; i++){
            
            if(i == _startRid)
                _startSid = player[_playerAddr].withdrawSid;
            else
                _startSid = 1;
            _dividend = _dividend.add(getPlayerDividendByRound(_playerAddr, i, _startSid));
        }
        
        return _dividend;
    }
    
    /**
     * Get player data for rounds and stages.
     */
    function getPlayerDividendByRound(address _playerAddr, uint256 _rId, uint256 _sId)
        public
        view
        returns(uint256)
    {
        uint256 _dividend;
        uint256 _startSid = _sId;
        uint256 _endSid = round[_rId].endSid;
        
        uint256 _playerAmount;
        uint256 _totalAmount;
        for(uint256 i = _startSid; i < _endSid; i++){
            
            if(stage[_rId][i].ended == false)
                continue;
                
            _playerAmount = 0;    
            _totalAmount = 0;
            for(uint256 j = 1; j <= i; j++){
                
                if(playerStageAmount[_rId][j][_playerAddr] > 0)
                    _playerAmount = _playerAmount.add(playerStageAmount[_rId][j][_playerAddr]);
                
                _totalAmount = _totalAmount.add(stage[_rId][j].amount);
            }
            
            if(_playerAmount == 0 || stage[_rId][i].dividendAmount == 0)
                continue;
            _dividend = _dividend.add((_playerAmount.mul(stage[_rId][i].dividendAmount)).div(_totalAmount));
        }
        
        if(round[_rId].ended == true)
            _dividend = _dividend.add(getPlayerJackpot(_playerAddr, _rId));

        return _dividend;
    }
    
    
    /**
     * Get player data for jackpot winnings.
     */
    function getPlayerJackpot(address _playerAddr, uint256 _rId)
        public
        view
        returns(uint256)
    {
        uint256 _dividend;
        
        if(round[_rId].ended == false)
            return _dividend;
        
        uint256 _endSid = round[_rId].endSid;
        uint256 _playerStageAmount = playerStageAmount[_rId][_endSid][_playerAddr];
        uint256 _stageAmount = stage[_rId][_endSid].amount;
        if(_stageAmount <= 0)
            return _dividend;
            
        uint256 _jackpotAmount = round[_rId].jackpotAmount.mul(jackpotProportion) / 100;
        uint256 _stageDividendAmount = stage[_rId][_endSid].dividendAmount;
        uint256 _stageJackpotAmount = (_stageAmount.mul(jackpot) / 100).add(_stageDividendAmount);
        
        _dividend = _dividend.add(((_playerStageAmount.mul(_jackpotAmount)).div(_stageAmount)));
        _dividend = _dividend.add(((_playerStageAmount.mul(_stageJackpotAmount)).div(_stageAmount)));
        
        return _dividend;
    }
    
    /**
     * For frontend.
     */
    function getHeadInfo()
        public
        view
        returns(uint256, uint256, uint256, uint256, uint256, uint256, bool)
    {
        return
            (
                rId,
                sId,
                round[rId].jackpotAmount,
                stage[rId][sId].targetAmount,
                stage[rId][sId].amount,
                stage[rId][sId].end,
                stage[rId][sId].ended
            );
    }
    
    /**
     * For frontend.
     */
    function getPersonalStatus(address _playerAddr)
        public
        view
        returns(uint256, uint256, uint256)
    {
        if (player[_playerAddr].active == true){
            return
            (
                round[rId].jackpotAmount,
                playerRoundAmount[rId][_playerAddr],
                getPlayerDividendByRound(_playerAddr, rId, 1)
            );
        }else{
            return
            (
                round[rId].jackpotAmount,
                0,
                0
            );
        }
    }
    
    /**
     * For frontend.
     */
    function getValueInfo(address _playerAddr)
        public
        view
        returns(uint256, uint256)
    {
        if (player[_playerAddr].active == true){
            return
            (
                getPlayerDividend(_playerAddr),
                player[_playerAddr].promotionAmount
            );
        }else{
            return
            (
                0,
                0
            );
        }
    }
    
}

library Indatasets {
    
    struct Round {
        uint256 start;          // time round started
        uint256 end;            // time round ends/ended
        bool ended;             // has round end function been ran
        uint256 endSid;         // last stage for current round
        uint256 amount;         // Eth recieved for current round
        uint256 jackpotAmount;  // total jackpot for current round
        uint256 players;        // total players for current round
    }
    
    struct Stage {
        uint256 start;          // time stage started
        uint256 end;            // time strage ends/ended
        bool ended;             // has stage end function been ran
        uint256 targetAmount;   // amount needed for current stage
        uint256 amount;         // Eth received for current stage
        uint256 dividendAmount; // total dividend for current stage
        uint256 accAmount;      // total accumulative amount for current stage
        uint256 players;        // total players for current stage
    }
    
    struct Player {
        bool active;                // Activation status of player, if false player has not been activated.
        uint256 amount;             // Total player input.
        uint256 promotionAmount;    // Total promotion amount of the player.
        uint256 withdrawRid;        // Last withdraw round of the player.
        uint256 withdrawSid;        // Last withdraw stage of the player.
    }
}

/**
 * @title SafeMath v0.1.9
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
    
    /**
    * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b) 
        internal 
        pure 
        returns (uint256) 
    {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
    
    /**
    * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) 
        internal 
        pure 
        returns (uint256) 
    {
        assert(b <= a);
        return a - b;
    }

    /**
    * @dev Multiplies two numbers, throws on overflow.
    */
    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;
    }
    
    /**
    * @dev Integer division of two numbers, truncating the quotient.
    */
    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;
    }
    
    /**
     * @dev gives square root of given x.
     */
    function sqrt(uint256 x)
        internal
        pure
        returns (uint256 y) 
    {
        uint256 z = ((add(x,1)) / 2);
        y = x;
        while (z < y) 
        {
            y = z;
            z = ((add((x / z),z)) / 2);
        }
    }
    
    /**
     * @dev gives square. multiplies x by x
     */
    function sq(uint256 x)
        internal
        pure
        returns (uint256)
    {
        return (mul(x,x));
    }
    
    /**
     * @dev x to the power of y 
     */
    function pwr(uint256 x, uint256 y)
        internal 
        pure 
        returns (uint256)
    {
        if (x==0)
            return (0);
        else if (y==0)
            return (1);
        else 
        {
            uint256 z = x;
            for (uint256 i=1; i < y; i++)
                z = mul(z,x);
            return (z);
        }
    }
}

    Contract ABI  
[{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"playerRoundwithdrawAmountFlag","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"activate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"duration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dividend","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"activated","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"scientists","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"playerStageAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_playerAddr","type":"address"}],"name":"getPlayerDividend","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"developerAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"stage","outputs":[{"name":"start","type":"uint256"},{"name":"end","type":"uint256"},{"name":"ended","type":"bool"},{"name":"targetAmount","type":"uint256"},{"name":"amount","type":"uint256"},{"name":"dividendAmount","type":"uint256"},{"name":"accAmount","type":"uint256"},{"name":"players","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"round","outputs":[{"name":"start","type":"uint256"},{"name":"end","type":"uint256"},{"name":"ended","type":"bool"},{"name":"endSid","type":"uint256"},{"name":"amount","type":"uint256"},{"name":"jackpotAmount","type":"uint256"},{"name":"players","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"playerRoundAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"player","outputs":[{"name":"active","type":"bool"},{"name":"amount","type":"uint256"},{"name":"promotionAmount","type":"uint256"},{"name":"withdrawRid","type":"uint256"},{"name":"withdrawSid","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"initAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"playerStageAccAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"jackpot","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"playerRoundSid","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"promotionRatio","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"jackpotProportion","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_playerAddr","type":"address"},{"name":"_rId","type":"uint256"},{"name":"_sId","type":"uint256"}],"name":"getPlayerDividendByRound","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"amountProportion","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_playerAddr","type":"address"},{"name":"_rId","type":"uint256"}],"name":"getPlayerJackpot","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_playerAddr","type":"address"}],"name":"getPersonalStatus","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_playerAddr","type":"address"}],"name":"getValueInfo","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getHeadInfo","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_recommendAddr","type":"address"}],"name":"buy","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"}]

  Contract Creation Code Switch To Opcodes View
60c0604052600860808190527f496e66696e69747900000000000000000000000000000000000000000000000060a090815262000040916000919062000128565b506040805180820190915260038082527f496e6600000000000000000000000000000000000000000000000000000000006020909201918252620000879160019162000128565b50600a805460ff19169055604080516101608101825260008152603260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810191909152620000fc90601590600b620001ad565b503480156200010a57600080fd5b50600a805461010060a860020a031916336101000217905562000210565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200016b57805160ff19168380011785556200019b565b828001600101855582156200019b579182015b828111156200019b5782518255916020019190600101906200017e565b50620001a9929150620001f0565b5090565b8280548282559060005260206000209081019282156200019b579160200282015b828111156200019b578251829060ff16905591602001919060010190620001ce565b6200020d91905b80821115620001a95760008155600101620001f7565b90565b61229580620002206000396000f30060806040526004361061018a5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630177c42d811461028e57806306fdde03146102c45780630f15f4c01461034e5780630fb5a6b4146103635780630ff8cf9b14610378578063186601ca1461038d578063255e444e146103b65780632763ea7f146103cb5780632e1d22b6146103f257806333b6baf51461041357806334aed7a01461044457806334d5f37b146104a05780633ccfd60b146104f05780634480f84e146105055780634c54e1b514610529578063501976461461057757806354999f6d1461058c57806364c4bc49146105a15780636b31ee01146105c8578063774b99dd146105dd5780637a07424e146106015780638090d83c1461061657806395d89b411461062b5780639b8342d414610640578063b055d1bc14610667578063b5554e731461067c578063bb87b5f8146106a0578063bed47ed8146106df578063c62fae5d146106f4578063d571dbac1461072e578063f088d5471461077d575b600a5460ff16151560011461020f576040805160e560020a62461bcd02815260206004820152602960248201527f697473206e6f74207265616479207965742e2020636865636b203f657461206960448201527f6e20646973636f72640000000000000000000000000000000000000000000000606482015290519081900360840190fd5b33321461021b57600080fd5b655af3107a400034101561026f57600a54604051600160a060020a0361010090920491909116903480156108fc02916000818181858888f19350505050158015610269573d6000803e3d6000fd5b5061028c565b655af3107a400034101561028257600080fd5b61028c6000610791565b005b34801561029a57600080fd5b506102b2600435600160a060020a036024351661099e565b60408051918252519081900360200190f35b3480156102d057600080fd5b506102d96109bb565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103135781810151838201526020016102fb565b50505050905090810190601f1680156103405780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561035a57600080fd5b5061028c610a49565b34801561036f57600080fd5b506102b2610b44565b34801561038457600080fd5b506102b2610b4a565b34801561039957600080fd5b506103a2610b50565b604080519115158252519081900360200190f35b3480156103c257600080fd5b506102b2610b59565b3480156103d757600080fd5b506102b2600435602435600160a060020a0360443516610b5f565b3480156103fe57600080fd5b506102b2600160a060020a0360043516610b82565b34801561041f57600080fd5b50610428610c0e565b60408051600160a060020a039092168252519081900360200190f35b34801561045057600080fd5b5061045f600435602435610c22565b604080519889526020890197909752941515878701526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b3480156104ac57600080fd5b506104b8600435610c74565b604080519788526020880196909652931515868601526060860192909252608085015260a084015260c0830152519081900360e00190f35b3480156104fc57600080fd5b5061028c610cb5565b34801561051157600080fd5b506102b2600435600160a060020a0360243516610e62565b34801561053557600080fd5b5061054a600160a060020a0360043516610e7f565b60408051951515865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561058357600080fd5b506102b2610eb2565b34801561059857600080fd5b506102b2610eb8565b3480156105ad57600080fd5b506102b2600435602435600160a060020a0360443516610ebe565b3480156105d457600080fd5b506102b2610ee1565b3480156105e957600080fd5b506102b2600435600160a060020a0360243516610ee7565b34801561060d57600080fd5b506102b2610f04565b34801561062257600080fd5b506102b2610f0a565b34801561063757600080fd5b506102d9610f10565b34801561064c57600080fd5b506102b2600160a060020a0360043516602435604435610f6a565b34801561067357600080fd5b506102b2611140565b34801561068857600080fd5b506102b2600160a060020a0360043516602435611146565b3480156106ac57600080fd5b506106c1600160a060020a03600435166112ae565b60408051938452602084019290925282820152519081900360600190f35b3480156106eb57600080fd5b506102b2611346565b34801561070057600080fd5b50610715600160a060020a036004351661134c565b6040805192835260208301919091528051918290030190f35b34801561073a57600080fd5b506107436113af565b604080519788526020880196909652868601949094526060860192909252608085015260a0840152151560c0830152519081900360e00190f35b6102b2600160a060020a0360043516611402565b600b54600c546008546000838152600e6020908152604080832085845290915281206001015434929190421180156107ea57506000858152600e6020908152604080832087845290915290206004810154600390910154115b1561085d576107f9858561150b565b600b54600c546000828152600d60205260409020429055909550935061081f858561163d565b6108298585611718565b92506108358584611863565b61083f86846118f9565b915061084d858584866119c1565b610858858585611ae1565b610996565b6000858152600e6020908152604080832087845290915290206001015442116109965761088a8585611718565b92506108968584611863565b6108a086846118f9565b6000868152600e6020908152604080832088845290915290206003810154600490910154919350906108d29085611df7565b1061097f576000858152600e602090815260408083208784529091529020600481015460039091015461090491611e06565b9050610912858584846119c1565b61091d858583611ae1565b6109278585611e18565b600c549350610936858561163d565b6000858152600d60205260409020600301849055610965858584610960878663ffffffff611e0616565b6119c1565b610858858561097a868563ffffffff611e0616565b611ae1565b61098b858584866119c1565b610996858585611ae1565b505050505050565b601260209081526000928352604080842090915290825290205481565b6000805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a415780601f10610a1657610100808354040283529160200191610a41565b820191906000526020600020905b815481529060010190602001808311610a2457829003601f168201915b505050505081565b600a546101009004600160a060020a03163314610a6557600080fd5b600a5460ff1615610ac0576040805160e560020a62461bcd02815260206004820152601a60248201527f496e66696e69747920616c726561647920616374697661746564000000000000604482015290519081900360640190fd5b600a805460ff191660019081178255678ac7230489e800006002908155600383905560466004819055601c60055560065560075560089190915562015180600955600b819055600c8190556000819052600d602052427ffd54ff1ed53f34a900b24c5ba64f85761163b5d82d98a47b9bd80e45466993c555610b42908061163d565b565b60095481565b60045481565b600a5460ff1681565b60075481565b601360209081526000938452604080852082529284528284209052825290205481565b600b54600160a060020a0382166000908152600f60205260408120600301549091908280825b848111610c045783811415610bda57600160a060020a0387166000908152600f60205260409020600401549250610bdf565b600192505b610bfa610bed888386610f6a565b839063ffffffff611df716565b9150600101610ba8565b5095945050505050565b600a546101009004600160a060020a031681565b600e602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600586015460068701546007909701549596949560ff9094169492939192909188565b600d6020526000908152604090208054600182015460028301546003840154600485015460058601546006909601549495939460ff90931693919290919087565b600a5460009081908190819060ff161515600114610d43576040805160e560020a62461bcd02815260206004820152602960248201527f697473206e6f74207265616479207965742e2020636865636b203f657461206960448201527f6e20646973636f72640000000000000000000000000000000000000000000000606482015290519081900360840190fd5b333214610d4f57600080fd5b336000908152600f602052604090205460ff161515600114610d7057600080fd5b600b549350600c549250610d85848433611f51565b336000908152600f6020526040812060048101939093556003909201929092559193509150811115610ddb57336000818152600f6020908152604080832060030154835260128252808320938352929052208190555b336000908152600f60205260408120600201541115610e2e57336000908152600f6020526040902060020154610e1890839063ffffffff611df716565b336000908152600f602052604081206002015591505b604051339083156108fc029084906000818181858888f19350505050158015610e5b573d6000803e3d6000fd5b5050505050565b601060209081526000928352604080842090915290825290205481565b600f602052600090815260409020805460018201546002830154600384015460049094015460ff90931693919290919085565b600b5481565b60025481565b601460209081526000938452604080852082529284528284209052825290205481565b60055481565b601160209081526000928352604080842090915290825290205481565b60085481565b60065481565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a415780601f10610a1657610100808354040283529160200191610a41565b6000828152600d602052604081206003015481908390828083815b848210156111025760008a8152600e6020908152604080832085845290915290206002015460ff161515610fb8576110f7565b506000925082915060015b8181116110725760008a81526013602090815260408083208484528252808320600160a060020a038f168452909152812054111561103a5760008a81526013602090815260408083208484528252808320600160a060020a038f16845290915290205461103790859063ffffffff611df716565b93505b60008a8152600e6020908152604080832084845290915290206004015461106890849063ffffffff611df716565b9250600101610fc3565b831580611099575060008a8152600e60209081526040808320858452909152902060050154155b156110a3576110f7565b60008a8152600e602090815260408083208584529091529020600501546110f4906110e79085906110db90889063ffffffff61220a16565b9063ffffffff61223516565b889063ffffffff611df716565b96505b600190910190610f85565b60008a8152600d602052604090206002015460ff161515600114156111315761112e6110e78c8c611146565b96505b50949998505050505050505050565b60035481565b6000818152600d6020526040812060020154819081908190819081908190819060ff161515611177578697506112a1565b6000898152600d6020908152604080832060030154601383528184208185528352818420600160a060020a038f1685528352818420548d8552600e845282852082865290935290832060040154909850909650945084116111da578697506112a1565b60065460008a8152600d6020526040902060050154606491611202919063ffffffff61220a16565b81151561120b57fe5b049250600e60008a815260200190815260200160002060008781526020019081526020016000206005015491506112698260646112536005548861220a90919063ffffffff16565b81151561125c57fe5b049063ffffffff611df716565b90506112826110e7856110db888763ffffffff61220a16565b965061129b6110e7856110db888563ffffffff61220a16565b96508697505b5050505050505092915050565b600160a060020a0381166000908152600f60205260408120548190819060ff1615156001141561132457600b546000818152600d602090815260408083206005015460108352818420600160a060020a038a1685529092529091205490916113199087906001610f6a565b92509250925061133f565b5050600b546000908152600d60205260408120600501549150805b9193909250565b600c5481565b600160a060020a0381166000908152600f6020526040812054819060ff161515600114156113a35761137d83610b82565b600160a060020a0384166000908152600f602052604090206002015490925090506113aa565b5060009050805b915091565b600b54600c546000828152600d6020908152604080832060050154600e8352818420858552909252909120600381015460048201546001830154600290930154959694959394919390929160ff90911690565b600a5460009060ff16151560011461148a576040805160e560020a62461bcd02815260206004820152602960248201527f697473206e6f74207265616479207965742e2020636865636b203f657461206960448201527f6e20646973636f72640000000000000000000000000000000000000000000000606482015290519081900360840190fd5b33321461149657600080fd5b655af3107a40003410156114ea57600a54604051600160a060020a0361010090920491909116903480156108fc02916000818181858888f193505050501580156114e4573d6000803e3d6000fd5b50611506565b655af3107a40003410156114fd57600080fd5b61150682610791565b919050565b6000828152600d602090815260408083204260018083018290556002808401805460ff1990811684179091556003909401889055600e8652848720888852909552929094208083019490945591830180549092161790556007015415156115b9576000828152600d6020526040808220600590810154600186018452919092209091015461159e9163ffffffff611df716565b600183016000908152600d602052604090206005015561162a565b6006546000838152600d6020526040902060050154611613916064916115e691830363ffffffff61220a16565b8115156115ef57fe5b600185016000908152600d602052604090206005015491900463ffffffff611df716565b600183016000908152600d60205260409020600501555b5050600b80546001908101909155600c55565b6000828152600e602090815260408083208484529091528120429081905560095461166e919063ffffffff611df716565b6000848152600e6020908152604080832086845290915290206001908101919091558211156116f4576000838152600e602090815260408083206000198601845290915290204260018083019190915560028201805460ff19169091179055600380549101546064916116e39190830161220a565b8115156116ec57fe5b0490506116f9565b506002545b6000928352600e60209081526040808520938552929052912060030155565b60155460009034908310156117b45760008481526013602090815260408083208684528252808320338452909152902054601580546117ad92916103e89161179791908890811061176557fe5b60009182526020808320909101548a8352600e825260408084208b85529092529120600301549063ffffffff61220a16565b8115156117a057fe5b049063ffffffff611e0616565b905061180b565b60008481526013602090815260408083208684528252808320338452825280832054878452600e83528184208785529092529091206003015461180891906103e890611797906101f463ffffffff61220a16565b90505b34811061181a5734915061185c565b336108fc61182e348463ffffffff611e0616565b6040518115909202916000818181858888f19350505050158015611856573d6000803e3d6000fd5b505b8091505b5092915050565b6000828152600d6020526040902060040154611885908263ffffffff611df716565b6000838152600d6020526040902060040155600a54600754610100909104600160a060020a0316906108fc906064906118bf90859061220a565b8115156118c857fe5b049081150290604051600060405180830381858888f193505050501580156118f4573d6000803e3d6000fd5b505050565b600854600090600160a060020a038416158015906119205750600160a060020a0384163314155b80156119495750600160a060020a0384166000908152600f602052604090205460ff1615156001145b156119b7576119966064611963858463ffffffff61220a16565b81151561196c57fe5b600160a060020a0387166000908152600f602052604090206002015491900463ffffffff611df716565b600160a060020a0385166000908152600f6020526040902060020155611858565b5060009392505050565b6000848152600e6020908152604080832086845290915290206003810154600490910154859185918491906119f69083611df7565b1115611a0157600080fd5b60008411611a0e57611ad8565b6000878152600e60209081526040808320898452909152902060040154611a3b908563ffffffff611df716565b6000888152600e602090815260408083208a8452909152902060049081019190915554611aba90606490611a8690611a79908963ffffffff611e0616565b879063ffffffff61220a16565b811515611a8f57fe5b60008a8152600e602090815260408083208c845290915290206005015491900463ffffffff611df716565b6000888152600e602090815260408083208a84529091529020600501555b50505050505050565b6000808211611aef57611df1565b336000908152600f602052604090205460ff161515611b3057336000908152600f60205260409020805460ff19166001178155600381018590556004018390555b60008481526010602090815260408083203384529091529020541515611b7e576000848152600d60209081526040808320600601805460010190556011825280832033845290915290208390555b600084815260136020908152604080832086845282528083203384529091529020541515611bca576000848152600e602090815260408083208684529091529020600701805460010190555b6000848152601060209081526040808320338452909152902054611bf4908363ffffffff611df716565b600085815260106020908152604080832033808552908352818420949094558783526013825280832087845282528083209383529290522054611c3d908363ffffffff611df716565b60008581526013602090815260408083208784528252808320338452825280832093909355600f90522060010154611c7b908363ffffffff611df716565b336000818152600f60209081526040808320600101949094558782526011815283822092825291909152908120541115611df157600084815260146020908152604080832086845282528083203384529091529020541515611d9c575060008381526011602090815260408083203384529091529020545b82811015611d9c57600084815260136020908152604080832084845282528083203384529091528120541115611d9457600084815260136020908152604080832084845282528083203380855290835281842054888552601484528285208886528452828520918552925290912054611d719163ffffffff611df716565b600085815260146020908152604080832087845282528083203384529091529020555b600101611cf3565b60008481526014602090815260408083208684528252808320338452909152902054611dce908363ffffffff611df716565b600085815260146020908152604080832087845282528083203384529091529020555b50505050565b60008282018381101561185857fe5b600082821115611e1257fe5b50900390565b6005546000838152600e602090815260408083208584529091528120600401549091606491611e4c9163ffffffff61220a16565b811515611e5557fe5b6000858152600d6020526040902060038101859055600501549190049150611e83908263ffffffff611df716565b6000848152600d6020908152604080832060050193909355600e8152828220858352905220426001808301919091556002909101805460ff191682179055821115611f1e576000838152600e602090815260408083206000198601845290915280822060060154848352912060030154611efc91611df7565b6000848152600e60209081526040808320868452909152902060060155611f43565b6000838152600e60209081526040808320858452909152902060038101546006909101555b5050600c8054600101905550565b600160a060020a0381166000908152600f60205260408120600301548190819081908190819081908190815b8c82116121ee576000828152601060209081526040808320600160a060020a038f1684529091529020541515611fb2576121e3565b600160a060020a038b166000908152600f60205260408120600301549093508214611fde576001611ffb565b600160a060020a038b166000908152600f60205260409020600401545b93508390505b6000828152600d60205260409020600301548110156121225760008281526014602090815260408083208484528252808320600160a060020a038f16845290915281205411156120795760008281526014602090815260408083208484528252808320600160a060020a038f16845290915290205492505b8215156120a6576000828152601260209081526040808320600160a060020a038f16845290915290205492505b8215156120b25761211a565b6000828152600e60209081526040808320848452909152902060068101546005909101546120f6916120e9916110db90879061220a565b879063ffffffff611df716565b95506001909401936032851061211a578582826001018599509950995099506121fb565b600101612001565b6000828152600d602052604090206002015460ff161515600114801561216c57506000828152600e60209081526040808320600d8352818420600301548452909152812060040154115b80156121aa57506000828152601360209081526040808320600d83528184206003015484528252808320600160a060020a038f168452909152812054115b156121e3576121bc6120e98c84611146565b9550600190940193603285106121e3579498506001808201985096506000955088946121fb565b600190910190611f7d565b858d8d8599509950995099505b50505050505093509350935093565b60008083151561221d576000915061185c565b5082820282848281151561222d57fe5b041461185857fe5b60008080831161224157fe5b828481151561224c57fe5b049050828481151561225a57fe5b06818402018414151561185857fe00a165627a7a72305820c491b4fa52ea9260696dea5aea7bcb79914b0e65fee8a5f24dad8ff5c6bdd54e0029

   Swarm Source:
bzzr://c491b4fa52ea9260696dea5aea7bcb79914b0e65fee8a5f24dad8ff5c6bdd54e

 

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