ETH Price: $2,643.06 (-0.16%)

Contract

0x2FCF3DebfF7feBf4b3e7348bC4d8Ceb943771717
 

Overview

ETH Balance

0.267612069179236514 ETH

Eth Value

$707.31 (@ $2,643.06/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Buy Xaddr109809152020-10-03 4:54:281477 days ago1601700868IN
0x2FCF3Deb...943771717
0.01 ETH0.0111987549
Buy Xaddr109787802020-10-02 20:43:001477 days ago1601671380IN
0x2FCF3Deb...943771717
0.001 ETH0.0173133649
Buy Xaddr109787682020-10-02 20:39:091477 days ago1601671149IN
0x2FCF3Deb...943771717
0.01 ETH0.019649
Withdraw109787432020-10-02 20:32:391477 days ago1601670759IN
0x2FCF3Deb...943771717
0 ETH0.001996749
Withdraw106722302020-08-16 16:44:251525 days ago1597596265IN
0x2FCF3Deb...943771717
0 ETH0.00456388112
Withdraw106266012020-08-09 15:41:351532 days ago1596987695IN
0x2FCF3Deb...943771717
0 ETH0.00411564101
Withdraw106099102020-08-07 2:13:161534 days ago1596766396IN
0x2FCF3Deb...943771717
0 ETH0.0023493648
Withdraw106092982020-08-06 23:51:131534 days ago1596757873IN
0x2FCF3Deb...943771717
0 ETH0.001752243
Withdraw106092922020-08-06 23:50:031534 days ago1596757803IN
0x2FCF3Deb...943771717
0 ETH0.001752243
Re Load Xaddr106092922020-08-06 23:50:031534 days ago1596757803IN
0x2FCF3Deb...943771717
0 ETH0.0009621643
Re Load Xaddr106092852020-08-06 23:47:381534 days ago1596757658IN
0x2FCF3Deb...943771717
0 ETH0.0009621643
Withdraw106092852020-08-06 23:47:381534 days ago1596757658IN
0x2FCF3Deb...943771717
0 ETH0.001752243
Buy Xaddr106055222020-08-06 9:53:341535 days ago1596707614IN
0x2FCF3Deb...943771717
0.1 ETH0.0070849231
Buy Xaddr106044182020-08-06 5:54:161535 days ago1596693256IN
0x2FCF3Deb...943771717
0.1 ETH0.0106091460
Buy Xaddr106043522020-08-06 5:42:121535 days ago1596692532IN
0x2FCF3Deb...943771717
0.01 ETH0.0088409550
Buy Xaddr106043522020-08-06 5:42:121535 days ago1596692532IN
0x2FCF3Deb...943771717
0.01 ETH0.0105500455
Buy Xaddr106043502020-08-06 5:42:081535 days ago1596692528IN
0x2FCF3Deb...943771717
0.01 ETH0.0099395628.27339363
Buy Xaddr106041952020-08-06 5:04:051535 days ago1596690245IN
0x2FCF3Deb...943771717
0.01 ETH0.0087005142
Buy Xaddr106040592020-08-06 4:33:271535 days ago1596688407IN
0x2FCF3Deb...943771717
0.01 ETH0.0100607528.5
Withdraw106039772020-08-06 4:18:001535 days ago1596687480IN
0x2FCF3Deb...943771717
0 ETH0.0020822751.1
Withdraw106039672020-08-06 4:15:361535 days ago1596687336IN
0x2FCF3Deb...943771717
0 ETH0.0021189452
Buy Xaddr106031632020-08-06 1:14:201535 days ago1596676460IN
0x2FCF3Deb...943771717
0.2 ETH0.0140835.2
Buy Xaddr106031472020-08-06 1:10:241535 days ago1596676224IN
0x2FCF3Deb...943771717
0.1 ETH0.020451
Withdraw92417422020-01-08 19:00:541745 days ago1578510054IN
0x2FCF3Deb...943771717
0 ETH0.000420823
Buy Xaddr91757162019-12-28 12:08:141757 days ago1577534894IN
0x2FCF3Deb...943771717
0.0001 ETH0.000393521
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
109787802020-10-02 20:43:001477 days ago1601671380
0x2FCF3Deb...943771717
0.00025 ETH
109787802020-10-02 20:43:001477 days ago1601671380
0x2FCF3Deb...943771717
0.00005 ETH
109787682020-10-02 20:39:091477 days ago1601671149
0x2FCF3Deb...943771717
0.0015 ETH
109787682020-10-02 20:39:091477 days ago1601671149
0x2FCF3Deb...943771717
0.0005 ETH
106099102020-08-07 2:13:161534 days ago1596766396
0x2FCF3Deb...943771717
0.091 ETH
106044182020-08-06 5:54:161535 days ago1596693256
0x2FCF3Deb...943771717
0.025 ETH
106044182020-08-06 5:54:161535 days ago1596693256
0x2FCF3Deb...943771717
0.005 ETH
106043522020-08-06 5:42:121535 days ago1596692532
0x2FCF3Deb...943771717
0.0025 ETH
106043522020-08-06 5:42:121535 days ago1596692532
0x2FCF3Deb...943771717
0.0005 ETH
106043522020-08-06 5:42:121535 days ago1596692532
0x2FCF3Deb...943771717
0.0025 ETH
106043522020-08-06 5:42:121535 days ago1596692532
0x2FCF3Deb...943771717
0.0005 ETH
106043502020-08-06 5:42:081535 days ago1596692528
0x2FCF3Deb...943771717
0.0025 ETH
106043502020-08-06 5:42:081535 days ago1596692528
0x2FCF3Deb...943771717
0.0005 ETH
106040592020-08-06 4:33:271535 days ago1596688407
0x2FCF3Deb...943771717
0.0025 ETH
106040592020-08-06 4:33:271535 days ago1596688407
0x2FCF3Deb...943771717
0.0005 ETH
106031632020-08-06 1:14:201535 days ago1596676460
0x2FCF3Deb...943771717
0.03 ETH
106031632020-08-06 1:14:201535 days ago1596676460
0x2FCF3Deb...943771717
0.01 ETH
106031472020-08-06 1:10:241535 days ago1596676224
0x2FCF3Deb...943771717
0.015 ETH
106031472020-08-06 1:10:241535 days ago1596676224
0x2FCF3Deb...943771717
0.005 ETH
91757162019-12-28 12:08:141757 days ago1577534894
0x2FCF3Deb...943771717
0.000015 ETH
91757162019-12-28 12:08:141757 days ago1577534894
0x2FCF3Deb...943771717
0.000005 ETH
91756902019-12-28 12:00:011757 days ago1577534401
0x2FCF3Deb...943771717
0.56571099 ETH
91756792019-12-28 11:56:521757 days ago1577534212
0x2FCF3Deb...943771717
0.39754 ETH
91756722019-12-28 11:54:431757 days ago1577534083
0x2FCF3Deb...943771717
0.42706659 ETH
91756702019-12-28 11:53:301757 days ago1577534010
0x2FCF3Deb...943771717
0.47665352 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PolyFomo

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-11-15
*/

pragma solidity ^0.4.24;

/**
              _.-+.
         _.-""     '.
      :""       o    '.
      |\       m       '.
      | \     o       _.+
      |  '.  F    _.-"  |
      |    \  _.-"      |
      |     +"       e  |
       \    |      b    |
        \   |    u     .+
         \  |  C    .-'
          \ |    .-'
           \| .-'
            +'
            
This contract is an evolution of Fomo3D Long:
https://etherscan.io/address/0xa62142888aba8370742be823c1782d17a0389da1#code
https://fomo3d.hostedwiki.co/pages/FAQ

Modifications:
- Replaced "PlayerBook" with FomoCube username contract
- Removed staking requirement
- Removed teams
- Removed airdrops
|
--- New ETH distribution:
// 50% for POLY holders, 20% for the jackpot
// 15% for CUBE holders, 10% for referrer or CUBE holders
// 5% for the developers <3
|
--- Replaced "Pot" system with a jackpot and "increment":
|
- The increment is the minimum purchase to become the leader (in POLY)
|
- The increment starts at 0 and increases by 100 for every ETH in the jackpot
|
- The jackpot is awarded to the leader when the timer runs out
|
- Each new leader increases the round timer by 30 minutes, and the maximum is 72 hours
|
- POLY follows the same price formula as "Fomo3D Long",
- thus the cost of becoming the leader is affected by price and increment
|
- For example:
~~ Jackpot of 10 ETH --> Becoming the leader costs 0.14 ETH
~~ Jackpot of 50 ETH --> Becoming the leader costs 1.44 ETH
~~ Jackpot of 100 ETH -> Becoming the leader costs 4.02 ETH
|
~~~
  This system is designed to end the round before players lose interest.
  The increasing cost of becoming the leader forces whales to fight for the jackpot -
  - benefitting all previous buyers.
~~~
|
>>> https://fomocube.io/

 */
 
//==============================================================================
//     _    _  _ _|_ _  .
//    (/_\/(/_| | | _\  .
//==============================================================================
contract PolyFomoEvents {
    // fired at end of buy or reload
    event onEndTx
    (
        uint256 compressedData,     
        uint256 compressedIDs,      
        bytes32 playerName,
        address playerAddress,
        uint256 ethIn,
        uint256 polyBought,
        address winnerAddr,
        bytes32 winnerName,
        uint256 amountWon,
        uint256 newPot,
        uint256 cubeAmount,
        uint256 genAmount,
        uint256 potAmount
    );
    
    // fired whenever theres a withdraw
    event onWithdraw
    (
        uint256 indexed playerID,
        address playerAddress,
        bytes32 playerName,
        uint256 ethOut,
        uint256 timeStamp
    );
    
    // fired whenever a withdraw forces end round to be ran
    event onWithdrawAndDistribute
    (
        address playerAddress,
        bytes32 playerName,
        uint256 ethOut,
        uint256 compressedData,
        uint256 compressedIDs,
        address winnerAddr,
        bytes32 winnerName,
        uint256 amountWon,
        uint256 newPot
    );
    
    // fired whenever a player tries a buy after round timer 
    // hit zero, and causes end round to be ran.
    event onBuyAndDistribute
    (
        address playerAddress,
        bytes32 playerName,
        uint256 ethIn,
        uint256 compressedData,
        uint256 compressedIDs,
        address winnerAddr,
        bytes32 winnerName,
        uint256 amountWon,
        uint256 newPot
    );
    
    // fired whenever a player tries a reload after round timer 
    // hit zero, and causes end round to be ran.
    event onReLoadAndDistribute
    (
        address playerAddress,
        bytes32 playerName,
        uint256 compressedData,
        uint256 compressedIDs,
        address winnerAddr,
        bytes32 winnerName,
        uint256 amountWon,
        uint256 newPot
    );
    
    // fired whenever an affiliate is paid
    event onAffiliatePayout
    (
        uint256 indexed affiliateID,
        address affiliateAddress,
        bytes32 affiliateName,
        uint256 indexed roundID,
        uint256 indexed buyerID,
        uint256 amount,
        uint256 timeStamp
    );
}

//==============================================================================
//   _ _  _ _|_ _ _  __|_   _ _ _|_    _   .
//  (_(_)| | | | (_|(_ |   _\(/_ | |_||_)  .
//====================================|=========================================

contract modularLong is PolyFomoEvents {}

contract PolyFomo is modularLong {
    using SafeMath for *;
    using PolygonCalcLong for uint256;
    
    address private comAddress_;
    CubeInterface private cube;
    UsernameInterface private username;
    
//==============================================================================
//     _ _  _  |`. _     _ _ |_ | _  _  .
//    (_(_)| |~|~|(_||_|| (_||_)|(/__\  .  (game settings)
//=================_|===========================================================
    string constant public name = "PolyFomo";
    string constant public symbol = "POLY";
    uint256 constant private rndExtra_ = 24 hours;              // Countdown before open
    uint256 constant private rndInit_ = 1 hours;                // round timer starts at this
    uint256 constant private rndInc_ = 30 minutes;              // every new leader adds 30 minutes to the timer
    uint256 constant private rndMax_ = 72 hours;                // max length a round timer can be
    
//==============================================================================
//     _| _ _|_ _    _ _ _|_    _   .
//    (_|(_| | (_|  _\(/_ | |_||_)  .  (data used to store game info that changes)
//=============================|================================================
    uint256 public rID_;    // round id number / total rounds that have happened
    uint256 public pID_;  // total number of players
//****************
// PLAYER DATA 
//****************
    mapping (address => uint256) public pIDxAddr_;                                               // (addr => pID) returns player id by address
    mapping (uint256 => PolyFomoDatasets.Player) public plyr_;                                   // (pID => data) player data
    mapping (uint256 => mapping (uint256 => PolyFomoDatasets.PlayerRounds)) public plyrRnds_;    // (pID => rID => data) player round data by player id & round id

//****************
// ROUND DATA 
//****************
    mapping (uint256 => PolyFomoDatasets.Round) public round_;              // (rID => data) round data
    uint256 public rndEth_;
//****************
// TEAM FEE DATA 
//****************
//==============================================================================
//     _ _  _  __|_ _    __|_ _  _  .
//    (_(_)| |_\ | | |_|(_ | (_)|   .  (initial data setup upon contract deploy)
//==============================================================================
    constructor(address usernameAddress, address cubeAddress, address comAddress)
        public
    {
        username = UsernameInterface(usernameAddress);
        cube = CubeInterface(cubeAddress);
        comAddress_ = comAddress;
        
        // PURCHASES
        // 50% for POLY holders, 20% for jackpot, 15% for CUBE holders, 10% for referral or CUBE holders, 5% dev fee
        
        // Open the gates
        rID_ = 1;
        round_[1].strt = cube.startTime() + rndExtra_;
        round_[1].end = cube.startTime() + rndInit_ + rndExtra_;
	}
//==============================================================================
//     _ _  _  _|. |`. _  _ _  .
//    | | |(_)(_||~|~|(/_| _\  .  (these are safety checks)
//==============================================================================

    /**
     * @dev prevents contracts from interacting with fomo3d 
     */
    modifier isHuman() {
        require(tx.origin == msg.sender);
        _;
    }

    /**
     * @dev sets boundaries for incoming tx 
     */
    modifier isWithinLimits(uint256 _eth) {
        require(_eth >= 1000000000, "pocket lint: not a valid currency");
        require(_eth <= 100000000000000000000000, "no vitalik, no");
        _;    
    }
    
//==============================================================================
//     _    |_ |. _   |`    _  __|_. _  _  _  .
//    |_)|_||_)||(_  ~|~|_|| |(_ | |(_)| |_\  .  (use these to interact with contract)
//====|=========================================================================
    /**
     * @dev emergency buy uses last stored affiliate ID
     */
    function()
        isHuman()
        isWithinLimits(msg.value)
        public
        payable
    {
        // set up our tx event data and determine if player is new or not
        PolyFomoDatasets.EventReturns memory _eventData_ = determinePID(_eventData_);
            
        // fetch player id
        uint256 _pID = pIDxAddr_[msg.sender];
        
        // buy core 
        buyCore(_pID, plyr_[_pID].laff, _eventData_);
    }
    
    /**
     * @dev converts all incoming ethereum to poly.
     * @param _affCode the ID/address/name of the player who gets the affiliate fee
     */
    
    function buyXaddr(address _affCode)
        isHuman()
        isWithinLimits(msg.value)
        public
        payable
    {
        // set up our tx event data and determine if player is new or not
        PolyFomoDatasets.EventReturns memory _eventData_ = determinePID(_eventData_);
        
        // fetch player id
        uint256 _pID = pIDxAddr_[msg.sender];
        
        // manage affiliate residuals
        uint256 _affID;
        // if no affiliate code was given or player tried to use their own, lolz
        if (_affCode == address(0) || _affCode == msg.sender)
        {
            // use last stored affiliate code
            _affID = plyr_[_pID].laff;
        
        // if affiliate code was given    
        } else {
            // get affiliate ID from aff Code 
            _affID = pIDxAddr_[_affCode];
            
            if (_affID == 0) {
                _affID = registerReferrer(_affCode);
            }
            
            // if affID is not the same as previously stored 
            if (_affID != plyr_[_pID].laff)
            {
                // update last affiliate
                plyr_[_pID].laff = _affID;
            }
        }
        
        // buy core 
        buyCore(_pID, _affID, _eventData_);
    }
    
    /**
     * @dev essentially the same as buy, but instead of you sending ether 
     * from your wallet, it uses your unwithdrawn earnings.
     * @param _affCode the ID/address/name of the player who gets the affiliate fee
     * @param _eth amount of earnings to use (remainder returned to gen vault)
     */
    
    function reLoadXaddr(address _affCode, uint256 _eth)
        isHuman()
        isWithinLimits(_eth)
        public
    {
        // set up our tx event data
        PolyFomoDatasets.EventReturns memory _eventData_;
        
        // fetch player ID
        uint256 _pID = pIDxAddr_[msg.sender];
        
        // manage affiliate residuals
        uint256 _affID;
        // if no affiliate code was given or player tried to use their own, lolz
        if (_affCode == address(0) || _affCode == msg.sender)
        {
            // use last stored affiliate code
            _affID = plyr_[_pID].laff;
        
        // if affiliate code was given    
        } else {
            // get affiliate ID from aff Code 
            _affID = pIDxAddr_[_affCode];
            
            // set up new referrer if necessary
            if (_affID == 0) {
                _affID = registerReferrer(_affCode);
            }
            // if affID is not the same as previously stored 
            if (_affID != plyr_[_pID].laff)
            {
                // update last affiliate
                plyr_[_pID].laff = _affID;
            }
        }
        
        // reload core
        reLoadCore(_pID, _affID, _eth, _eventData_);
    }

    /**
     * @dev withdraws all of your earnings.
     */
    function withdraw()
        isHuman()
        public
    {
        // setup local rID 
        uint256 _rID = rID_;
        
        // grab time
        uint256 _now = now;
        
        // fetch player ID
        uint256 _pID = pIDxAddr_[msg.sender];
        
        // setup temp var for player eth
        uint256 _eth;
        
        // check to see if round has ended and no one has run round end yet
        if (_now > round_[_rID].end && round_[_rID].ended == false && round_[_rID].plyr != 0)
        {
            // set up our tx event data
            PolyFomoDatasets.EventReturns memory _eventData_;
            
            // end the round (distributes pot)
            round_[_rID].ended = true;
            _eventData_ = endRound(_eventData_);
            
            // get their earnings
            _eth = withdrawEarnings(_pID);
            
            // gib moni
            if (_eth > 0)
                plyr_[_pID].addr.transfer(_eth);    
            
            // build event data
            _eventData_.compressedData = _eventData_.compressedData + (_now * 1000000000000000000);
            _eventData_.compressedIDs = _eventData_.compressedIDs + _pID;
            
            // fire withdraw and distribute event
            emit PolyFomoEvents.onWithdrawAndDistribute
            (
                msg.sender, 
                username.getNameByAddress(plyr_[_pID].addr), 
                _eth, 
                _eventData_.compressedData, 
                _eventData_.compressedIDs, 
                _eventData_.winnerAddr, 
                _eventData_.winnerName, 
                _eventData_.amountWon, 
                _eventData_.newPot
            );
            
        // in any other situation
        } else {
            // get their earnings
            _eth = withdrawEarnings(_pID);
            
            // gib moni
            if (_eth > 0)
                plyr_[_pID].addr.transfer(_eth);
            
            // fire withdraw event
            emit PolyFomoEvents.onWithdraw(_pID, msg.sender, username.getNameByAddress(plyr_[_pID].addr), _eth, _now);
        }
    }
    
//==============================================================================
//     _  _ _|__|_ _  _ _  .
//    (_|(/_ |  | (/_| _\  . (for UI & viewing things on etherscan)
//=====_|=======================================================================

    /**
     * @dev return minimum purchase in POLY for 1 timer increment
     * @return minimum purchase in POLY for 1 timer increment (in wei format)
     */

    function getIncrementPrice()
        public 
        view
        returns(uint256)
    {  
        // setup local rID
        uint256 _rID = rID_;
        
        // grab pot
        uint256 _pot = round_[_rID].pot;
        
        return (_pot / 1000000000000000000).mul(100000000000000000000);
    }

    /**
     * @dev return the price buyer will pay for next 1 individual poly.
     * @return price for next poly bought (in wei format)
     */
    function getBuyPrice()
        public 
        view 
        returns(uint256)
    {  
        // setup local rID
        uint256 _rID = rID_;
        
        // grab time
        uint256 _now = now;
        
        // are we in a round?
        if (_now > round_[_rID].strt && (_now <= round_[_rID].end || (_now > round_[_rID].end && round_[_rID].plyr == 0)))
            return ( (round_[_rID].poly.add(1000000000000000000)).ethRec(1000000000000000000) );
        else // rounds over.  need price for new round
            return ( 75000000000000 ); // init
    }
    
    /**
     * @dev returns time left.  dont spam this, you'll ddos yourself from your node 
     * provider
     * @return time left in seconds
     */
    function getTimeLeft()
        public
        view
        returns(uint256)
    {
        // setup local rID
        uint256 _rID = rID_;
        
        // grab time
        uint256 _now = now;
        
        if (_now < round_[_rID].end)
            if (_now > round_[_rID].strt)
                return( (round_[_rID].end).sub(_now) );
            else
                return( (round_[_rID].strt).sub(_now) );
        else
            return(0);
    }
    
    /**
     * @dev returns player earnings per vaults 
     * @return winnings vault
     * @return general vault
     * @return affiliate vault
     */
    function getPlayerVaults(uint256 _pID)
        public
        view
        returns(uint256 ,uint256, uint256)
    {
        // setup local rID
        uint256 _rID = rID_;
        
        // if round has ended.  but round end has not been run (so contract has not distributed winnings)
        if (now > round_[_rID].end && round_[_rID].ended == false && round_[_rID].plyr != 0)
        {
            // if player is winner 
            if (round_[_rID].plyr == _pID)
            {
                return
                (
                    (plyr_[_pID].win).add(round_[_rID].pot),
                    (plyr_[_pID].gen).add(  getPlayerVaultsHelper(_pID, _rID).sub(plyrRnds_[_pID][_rID].mask)   ),
                    plyr_[_pID].aff
                );
            // if player is not the winner
            } else {
                return
                (
                    plyr_[_pID].win,
                    (plyr_[_pID].gen).add(  getPlayerVaultsHelper(_pID, _rID).sub(plyrRnds_[_pID][_rID].mask)  ),
                    plyr_[_pID].aff
                );
            }
            
        // if round is still going on, or round has ended and round end has been ran
        } else {
            return
            (
                plyr_[_pID].win,
                (plyr_[_pID].gen).add(calcUnMaskedEarnings(_pID, plyr_[_pID].lrnd)),
                plyr_[_pID].aff
            );
        }
    }
    
    /**
     * solidity hates stack limits.  this lets us avoid that hate 
     */
    function getPlayerVaultsHelper(uint256 _pID, uint256 _rID)
        private
        view
        returns(uint256)
    {
        return round_[_rID].mask.mul(plyrRnds_[_pID][_rID].poly) / 1000000000000000000;
    }
    
    /**
     * @dev returns all current round info needed for front end
     * @return round id 
     * @return total poly for round 
     * @return time round ends
     * @return time round started
     * @return current pot 
     * @return current player in leads address 
     * @return current player in leads name
     * @return eth spent in current round
     */
    function getCurrentRoundInfo()
        public
        view
        returns(uint256, uint256, uint256, uint256, uint256, address, bytes32, uint256)
    {
        // setup local rID
        uint256 _rID = rID_;
        
        return
        (
            _rID,                                                     //0
            round_[_rID].poly,                                        //1
            round_[_rID].end,                                         //2
            round_[_rID].strt,                                        //3
            round_[_rID].pot,                                         //4
            plyr_[round_[_rID].plyr].addr,                            //5
            username.getNameByAddress(plyr_[round_[_rID].plyr].addr), //6
            rndEth_                                                   //7
        );
    }

    /**
     * @dev returns player info based on address.  if no address is given, it will 
     * use msg.sender 
     * @param _addr address of the player you want to lookup 
     * @return player ID 
     * @return player name
     * @return poly owned (current round)
     * @return winnings vault
     * @return general vault 
     * @return affiliate vault 
     * @return player round eth
     */
    function getPlayerInfoByAddress(address _addr)
        public 
        view 
        returns(uint256, bytes32, uint256, uint256, uint256, uint256, uint256)
    {
        // setup local rID
        uint256 _rID = rID_;
        
        if (_addr == address(0))
        {
            _addr == msg.sender;
        }
        uint256 _pID = pIDxAddr_[_addr];
        
        return
        (
            _pID,                               //0
            username.getNameByAddress(_addr),   //1
            plyrRnds_[_pID][_rID].poly,         //2
            plyr_[_pID].win,                    //3
            (plyr_[_pID].gen).add(calcUnMaskedEarnings(_pID, plyr_[_pID].lrnd)),       //4
            plyr_[_pID].aff,                    //5
            plyrRnds_[_pID][_rID].eth           //6
        );
    }

//==============================================================================
//     _ _  _ _   | _  _ . _  .
//    (_(_)| (/_  |(_)(_||(_  . (this + tools + calcs + modules = our softwares engine)
//=====================_|=======================================================
    /**
     * @dev logic runs whenever a buy order is executed.  determines how to handle 
     * incoming eth depending on if we are in an active round or not
     */
    function buyCore(uint256 _pID, uint256 _affID, PolyFomoDatasets.EventReturns memory _eventData_)
        private
    {
        // setup local rID
        uint256 _rID = rID_;
        
        // grab time
        uint256 _now = now;
        // if round is active
        if (_now > round_[_rID].strt && (_now <= round_[_rID].end || (_now > round_[_rID].end && round_[_rID].plyr == 0))) 
        {
            // call core 
            core(_rID, _pID, msg.value, _affID, _eventData_);
        
        // if round is not active     
        } else {
            // check to see if end round needs to be ran
            if (_now > round_[_rID].end && round_[_rID].ended == false) 
            {
                // end the round (distributes pot) & start new round
                round_[_rID].ended = true;
                _eventData_ = endRound(_eventData_);
                
                // build event data
                _eventData_.compressedData = _eventData_.compressedData + (_now * 1000000000000000000);
                _eventData_.compressedIDs = _eventData_.compressedIDs + _pID;
                
                // fire buy and distribute event 
                emit PolyFomoEvents.onBuyAndDistribute
                (
                    msg.sender, 
                    username.getNameByAddress(plyr_[_pID].addr), 
                    msg.value, 
                    _eventData_.compressedData, 
                    _eventData_.compressedIDs, 
                    _eventData_.winnerAddr, 
                    _eventData_.winnerName, 
                    _eventData_.amountWon, 
                    _eventData_.newPot
                );
            }
            
            // put eth in players vault 
            plyr_[_pID].gen = plyr_[_pID].gen.add(msg.value);
        }
    }
    
    /**
     * @dev logic runs whenever a reload order is executed.  determines how to handle 
     * incoming eth depending on if we are in an active round or not 
     */
    function reLoadCore(uint256 _pID, uint256 _affID, uint256 _eth, PolyFomoDatasets.EventReturns memory _eventData_)
        private
    {
        // setup local rID
        uint256 _rID = rID_;
        
        // grab time
        uint256 _now = now;
        
        // if round is active
        if (_now > round_[_rID].strt && (_now <= round_[_rID].end || (_now > round_[_rID].end && round_[_rID].plyr == 0))) 
        {
            // get earnings from all vaults and return unused to gen vault
            // because we use a custom safemath library.  this will throw if player 
            // tried to spend more eth than they have.
            plyr_[_pID].gen = withdrawEarnings(_pID).sub(_eth);
            
            // call core 
            core(_rID, _pID, _eth, _affID, _eventData_);
        
        // if round is not active and end round needs to be ran   
        } else if (_now > round_[_rID].end && round_[_rID].ended == false) {
            // end the round (distributes pot) & start new round
            round_[_rID].ended = true;
            _eventData_ = endRound(_eventData_);
                
            // build event data
            _eventData_.compressedData = _eventData_.compressedData + (_now * 1000000000000000000);
            _eventData_.compressedIDs = _eventData_.compressedIDs + _pID;
                
            // fire buy and distribute event 
            emit PolyFomoEvents.onReLoadAndDistribute
            (
                msg.sender, 
                username.getNameByAddress(plyr_[_pID].addr), 
                _eventData_.compressedData, 
                _eventData_.compressedIDs, 
                _eventData_.winnerAddr, 
                _eventData_.winnerName, 
                _eventData_.amountWon, 
                _eventData_.newPot
            );
        }
    }
    
    /**
     * @dev this is the core logic for any buy/reload that happens while a round 
     * is live.
     */
    function core(uint256 _rID, uint256 _pID, uint256 _eth, uint256 _affID, PolyFomoDatasets.EventReturns memory _eventData_)
        private
    {
        // if player is new to round
        if (plyrRnds_[_pID][_rID].poly == 0)
            _eventData_ = managePlayer(_pID, _eventData_);
        
        // early round eth limiter 
        if (round_[_rID].eth < 30000000000000000000 && plyrRnds_[_pID][_rID].eth.add(_eth) > 1000000000000000000)
        {
            uint256 _availableLimit = (1000000000000000000).sub(plyrRnds_[_pID][_rID].eth);
            uint256 _refund = _eth.sub(_availableLimit);
            plyr_[_pID].gen = plyr_[_pID].gen.add(_refund);
            _eth = _availableLimit;
        }
        
        // if eth left is greater than min eth allowed (sorry no pocket lint)
        if (_eth > 1000000000) 
        {
            
            // mint the new poly
            uint256 _poly = (round_[_rID].eth).polyRec(_eth);
            
            if (_poly >= getIncrementPrice())
            {
                updateTimer(_rID);

                // set new leaders
                if (round_[_rID].plyr != _pID)
                    round_[_rID].plyr = _pID;  
                
                // set the new leader bool to true
                _eventData_.compressedData = _eventData_.compressedData + 100;
            }
            
            // update player 
            plyrRnds_[_pID][_rID].poly = _poly.add(plyrRnds_[_pID][_rID].poly);
            plyrRnds_[_pID][_rID].eth = _eth.add(plyrRnds_[_pID][_rID].eth);
            
            // update round
            round_[_rID].poly = _poly.add(round_[_rID].poly);
            round_[_rID].eth = _eth.add(round_[_rID].eth);
            rndEth_ = _eth.add(rndEth_);
    
            // distribute eth
            _eventData_ = distributeExternal(_rID, _pID, _eth, _affID, _eventData_);
            _eventData_ = distributeInternal(_rID, _pID, _eth, _poly, _eventData_);
            
            // call end tx function to fire end tx event.
            endTx(_pID, _eth, _poly, _eventData_);
        }
    }
//==============================================================================
//     _ _ | _   | _ _|_ _  _ _  .
//    (_(_||(_|_||(_| | (_)| _\  .
//==============================================================================
    /**
     * @dev calculates unmasked earnings (just calculates, does not update mask)
     * @return earnings in wei format
     */
    function calcUnMaskedEarnings(uint256 _pID, uint256 _rIDlast)
        private
        view
        returns(uint256)
    {
        return(  (((round_[_rIDlast].mask).mul(plyrRnds_[_pID][_rIDlast].poly)) / (1000000000000000000)).sub(plyrRnds_[_pID][_rIDlast].mask)  );
    }
    
    /** 
     * @dev returns the amount of poly you would get given an amount of eth. 
     * @param _rID round ID you want price for
     * @param _eth amount of eth sent in 
     * @return poly received 
     */
    function calcPolyReceived(uint256 _rID, uint256 _eth)
        public
        view
        returns(uint256)
    {
        // grab time
        uint256 _now = now;
        
        // are we in a round?
        if (_now > round_[_rID].strt && (_now <= round_[_rID].end || (_now > round_[_rID].end && round_[_rID].plyr == 0)))
            return ( (round_[_rID].eth).polyRec(_eth) );
        else // rounds over.  need poly for new round
            return ( (_eth).poly() );
    }
    
    /** 
     * @dev returns current eth price for X poly.  
     * @param _poly number of poly desired (in 18 decimal format)
     * @return amount of eth needed to send
     */
    function iWantXPoly(uint256 _poly)
        public
        view
        returns(uint256)
    {
        // setup local rID
        uint256 _rID = rID_;
        
        // grab time
        uint256 _now = now;
        
        // are we in a round?
        if (_now > round_[_rID].strt && (_now <= round_[_rID].end || (_now > round_[_rID].end && round_[_rID].plyr == 0)))
            return ( (round_[_rID].poly.add(_poly)).ethRec(_poly) );
        else // rounds over.  need price for new round
            return ( (_poly).eth() );
    }
//==============================================================================
//    _|_ _  _ | _  .
//     | (_)(_)|_\  .
//==============================================================================
        
    /**
     * @dev gets existing or registers new pID.  use this when a player may be new
     * @return pID 
     */
    function determinePID(PolyFomoDatasets.EventReturns memory _eventData_)
        private
        returns (PolyFomoDatasets.EventReturns memory)
    {
        uint256 _pID = pIDxAddr_[msg.sender];

        if (_pID == 0)
        {
            pID_++;
            pIDxAddr_[msg.sender] = pID_;
            plyr_[pID_].addr = msg.sender;
            
            // set the new player bool to true
            _eventData_.compressedData = _eventData_.compressedData + 1;
        }
        
        return (_eventData_);
    }
    
    /**
     * @dev registers a non-player referrer
     * @return pID 
     */
    function registerReferrer(address _affCode)
        private
        returns (uint256 affID)
    {
        pID_++;
        pIDxAddr_[_affCode] = pID_;
        plyr_[pID_].addr = _affCode;
        
        return pID_;
    }
    
    /**
     * @dev decides if round end needs to be run & new round started.  and if 
     * player unmasked earnings from previously played rounds need to be moved.
     */
    function managePlayer(uint256 _pID, PolyFomoDatasets.EventReturns memory _eventData_)
        private
        returns (PolyFomoDatasets.EventReturns memory)
    {
        // if player has played a previous round, move their unmasked earnings
        // from that round to gen vault.
        if (plyr_[_pID].lrnd != 0)
            updateGenVault(_pID, plyr_[_pID].lrnd);
            
        // update player's last round played
        plyr_[_pID].lrnd = rID_;
            
        // set the joined round bool to true
        _eventData_.compressedData = _eventData_.compressedData + 10;
        
        return(_eventData_);
    }
    
    /**
     * @dev ends the round. manages paying out winner/splitting up pot
     */
    function endRound(PolyFomoDatasets.EventReturns memory _eventData_)
        private
        returns (PolyFomoDatasets.EventReturns memory)
    {
        // setup local rID
        uint256 _rID = rID_;
        
        // grab our winning player
        uint256 _winPID = round_[_rID].plyr;
        
        // Entire 20% of buys / pot value
        uint256 _win = round_[_rID].pot;

        // pay our winner
        plyr_[_winPID].win = _win.add(plyr_[_winPID].win);
        
        // prepare event data
        _eventData_.compressedData = _eventData_.compressedData + (round_[_rID].end * 1000000);
        _eventData_.compressedIDs = _eventData_.compressedIDs + (_winPID * 100000000000000000000000000);
        _eventData_.winnerAddr = plyr_[_winPID].addr;
        _eventData_.winnerName = username.getNameByAddress(plyr_[_winPID].addr);
        _eventData_.amountWon = _win;
        _eventData_.newPot = 0;
        
        // start next round
        rID_++;
        _rID++;
        round_[_rID].strt = now;
        round_[_rID].end = now.add(rndInit_);
        round_[_rID].pot = 0;
        
        return(_eventData_);
    }
    
    /**
     * @dev moves any unmasked earnings to gen vault.  updates earnings mask
     */
    function updateGenVault(uint256 _pID, uint256 _rIDlast)
        private 
    {
        uint256 _earnings = calcUnMaskedEarnings(_pID, _rIDlast);
        if (_earnings > 0)
        {
            // put in gen vault
            plyr_[_pID].gen = _earnings.add(plyr_[_pID].gen);
            // zero out their earnings by updating mask
            plyrRnds_[_pID][_rIDlast].mask = _earnings.add(plyrRnds_[_pID][_rIDlast].mask);
        }
    }
    
    /**
     * @dev increment timer if poly requirement is met
     */
    function updateTimer(uint256 _rID)
        private
    {
        // grab time
        uint256 _now = now;
        
        // calculate time based on number of poly bought
        uint256 _newTime;
        if (_now > round_[_rID].end && round_[_rID].plyr == 0)
            _newTime = rndInc_.add(_now);
        else
            _newTime = rndInc_.add(round_[_rID].end);
        
        // compare to max and set new end time
        if (_newTime < (rndMax_).add(_now))
            round_[_rID].end = _newTime;
        else
            round_[_rID].end = rndMax_.add(_now);
    }

    /**
     * @dev distributes eth based on fees to com, aff, and cube
     */
    function distributeExternal(uint256 _rID, uint256 _pID, uint256 _eth, uint256 _affID, PolyFomoDatasets.EventReturns memory _eventData_)
        private
        returns(PolyFomoDatasets.EventReturns memory)
    {       
        uint256 _cube;
    
        // 5% for the developers :)
        uint256 _com = _eth / 20;
        comAddress_.transfer(_com);
        
        // 10% for aff or CUBE holders
        uint256 _aff = _eth / 10;
        
        if (_affID != _pID && _affID != 0) {
            plyr_[_affID].aff = _aff.add(plyr_[_affID].aff);
            emit PolyFomoEvents.onAffiliatePayout(_affID, plyr_[_affID].addr, username.getNameByAddress(plyr_[_affID].addr), _rID, _pID, _aff, now);
        } else {
            _cube = _aff;
        }
        
        // 15% for CUBE holders
        _cube = _cube.add((_eth.mul(15)) / (100));
        if (_cube > 0)
        {
            // distribute to CUBE
            cube.distribute.value(_cube)();
            
            // set up event data
            _eventData_.cubeAmount = _cube.add(_eventData_.cubeAmount);
        }
        
        return(_eventData_);
    }

    /**
     * @dev distributes eth based on fees to gen and pot
     */
    function distributeInternal(uint256 _rID, uint256 _pID, uint256 _eth, uint256 _poly, PolyFomoDatasets.EventReturns memory _eventData_)
        private
        returns(PolyFomoDatasets.EventReturns memory)
    {
        // 50% for POLY holders
        uint256 _gen = (_eth.mul(50)) / 100;
        
        // update eth balance (eth = eth - (developers (5%) + aff share (10%)) + cube share (15%))
        _eth = _eth.sub((_eth.mul(30)) / 100);
        
        // 20% for winner
        uint256 _pot = _eth.sub(_gen);
        
        // distribute gen share (thats what updateMasks() does) and adjust
        // balances for dust.
        uint256 _dust = updateMasks(_rID, _pID, _gen, _poly);
        if (_dust > 0)
            _gen = _gen.sub(_dust);
        
        // add the 20% + dust
        round_[_rID].pot = _pot.add(_dust).add(round_[_rID].pot);
        
        // set up event data
        _eventData_.genAmount = _gen.add(_eventData_.genAmount);
        _eventData_.potAmount = _pot;
        
        return(_eventData_);
    }
    
    /**
     * @dev updates masks for round and player when poly are bought
     * @return dust left over 
     */
    function updateMasks(uint256 _rID, uint256 _pID, uint256 _gen, uint256 _poly)
        private
        returns(uint256)
    {
        /* MASKING NOTES
            earnings masks are a tricky thing for people to wrap their minds around.
            the basic thing to understand here.  is were going to have a global
            tracker based on profit per share for each round, that increases in
            relevant proportion to the increase in share supply.
            
            the player will have an additional mask that basically says "based
            on the rounds mask, my shares, and how much i've already withdrawn,
            how much is still owed to me?"
        */
        
        // calc profit per poly & round mask based on this buy:  (dust goes to pot)
        uint256 _ppt = (_gen.mul(1000000000000000000)) / (round_[_rID].poly);
        round_[_rID].mask = _ppt.add(round_[_rID].mask);
            
        // calculate player earning from their own buy (only based on the poly
        // they just bought).  & update player earnings mask
        uint256 _pearn = (_ppt.mul(_poly)) / (1000000000000000000);
        plyrRnds_[_pID][_rID].mask = (((round_[_rID].mask.mul(_poly)) / (1000000000000000000)).sub(_pearn)).add(plyrRnds_[_pID][_rID].mask);
        
        // calculate & return dust
        return(_gen.sub((_ppt.mul(round_[_rID].poly)) / (1000000000000000000)));
    }
    
    /**
     * @dev adds up unmasked earnings, & vault earnings, sets them all to 0
     * @return earnings in wei format
     */
    function withdrawEarnings(uint256 _pID)
        private
        returns(uint256)
    {
        // update gen vault
        updateGenVault(_pID, plyr_[_pID].lrnd);
        
        // from vaults 
        uint256 _earnings = (plyr_[_pID].win).add(plyr_[_pID].gen).add(plyr_[_pID].aff);
        if (_earnings > 0)
        {
            plyr_[_pID].win = 0;
            plyr_[_pID].gen = 0;
            plyr_[_pID].aff = 0;
        }

        return(_earnings);
    }
    
    /**
     * @dev prepares compression data and fires event for buy or reload tx's
     */
    function endTx(uint256 _pID, uint256 _eth, uint256 _poly, PolyFomoDatasets.EventReturns memory _eventData_)
        private
    {
        _eventData_.compressedData = _eventData_.compressedData + (now * 1000000000000000000);
        _eventData_.compressedIDs = _eventData_.compressedIDs + _pID + (rID_ * 10000000000000000000000000000000000000000000000000000);
        
        emit PolyFomoEvents.onEndTx
        (
            _eventData_.compressedData,
            _eventData_.compressedIDs,
            username.getNameByAddress(plyr_[_pID].addr),
            msg.sender,
            _eth,
            _poly,
            _eventData_.winnerAddr,
            _eventData_.winnerName,
            _eventData_.amountWon,
            _eventData_.newPot,
            _eventData_.cubeAmount,
            _eventData_.genAmount,
            _eventData_.potAmount
        );
    }
}

//==============================================================================
//   __|_ _    __|_ _  .
//  _\ | | |_|(_ | _\  .
//==============================================================================
library PolyFomoDatasets {
    struct EventReturns {
        uint256 compressedData;
        uint256 compressedIDs;
        address winnerAddr;         // winner address
        bytes32 winnerName;         // winner name
        uint256 amountWon;          // amount won
        uint256 newPot;             // amount in new pot
        uint256 cubeAmount;         // amount distributed to cube
        uint256 genAmount;          // amount distributed to gen
        uint256 potAmount;          // amount added to pot
    }
    struct Player {
        address addr;   // player address
        bytes32 name;   // player name
        uint256 win;    // winnings vault
        uint256 gen;    // general vault
        uint256 aff;    // affiliate vault
        uint256 lrnd;   // last round played
        uint256 laff;   // last affiliate id used
    }
    struct PlayerRounds {
        uint256 eth;    // eth player has added to round (used for eth limiter)
        uint256 poly;   // poly
        uint256 mask;   // player mask 
    }
    struct Round {
        uint256 plyr;   // pID of player in lead
        uint256 end;    // time ends/ended
        bool ended;     // has round end function been ran
        uint256 strt;   // time round started
        uint256 poly;   // poly
        uint256 eth;    // total eth in
        uint256 pot;    // eth to pot (during round) / final amount paid to winner (after round ends)
        uint256 mask;   // global mask
    }
}

//==============================================================================
//  |  _      _ _ | _  .
//  |<(/_\/  (_(_||(_  .
//=======/======================================================================
library PolygonCalcLong {
    using SafeMath for *;
    /**
     * @dev calculates number of poly received given X eth 
     * @param _curEth current amount of eth in contract 
     * @param _newEth eth being spent
     * @return amount of ticket purchased
     */
    function polyRec(uint256 _curEth, uint256 _newEth)
        internal
        pure
        returns (uint256)
    {
        return(poly((_curEth).add(_newEth)).sub(poly(_curEth)));
    }
    
    /**
     * @dev calculates amount of eth received if you sold X poly 
     * @param _curPoly current amount of poly that exist 
     * @param _sellPoly amount of poly you wish to sell
     * @return amount of eth received
     */
    function ethRec(uint256 _curPoly, uint256 _sellPoly)
        internal
        pure
        returns (uint256)
    {
        return((eth(_curPoly)).sub(eth(_curPoly.sub(_sellPoly))));
    }

    /**
     * @dev calculates how many poly would exist with given an amount of eth
     * @param _eth eth "in contract"
     * @return number of poly that would exist
     */
    function poly(uint256 _eth) 
        internal
        pure
        returns(uint256)
    {
        return ((((((_eth).mul(1000000000000000000)).mul(312500000000000000000000000)).add(5624988281256103515625000000000000000000000000000000000000000000)).sqrt()).sub(74999921875000000000000000000000)) / (156250000);
    }
    
    /**
     * @dev calculates how much eth would be in contract given a number of poly
     * @param _poly number of poly "in contract" 
     * @return eth that would exists
     */
    function eth(uint256 _poly) 
        internal
        pure
        returns(uint256)  
    {
        return ((78125000).mul(_poly.sq()).add(((149999843750000).mul(_poly.mul(1000000000000000000))) / (2))) / ((1000000000000000000).sq());
    }
}

//==============================================================================
//  . _ _|_ _  _ |` _  _ _  _  .
//  || | | (/_| ~|~(_|(_(/__\  .
//==============================================================================

interface UsernameInterface {
    function getNameByAddress(address _addr) external view returns (bytes32);
}

interface CubeInterface {
    function distribute() external payable;
    function startTime() external view returns (uint256);
}

/**
 * @title SafeMath v0.1.9
 * @dev Math operations with safety checks that throw on error
 * change notes:  original SafeMath library from OpenZeppelin modified by Inventor
 * - added sqrt
 * - added sq
 * - added pwr 
 * - changed asserts to requires with error log outputs
 * - removed div, its useless
 */
library SafeMath {
    
    /**
    * @dev Multiplies two numbers, throws on overflow.
    */
    function mul(uint256 a, uint256 b) 
        internal 
        pure 
        returns (uint256 c) 
    {
        if (a == 0) {
            return 0;
        }
        c = a * b;
        require(c / a == b, "SafeMath mul failed");
        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) 
    {
        require(b <= a, "SafeMath sub failed");
        return a - b;
    }

    /**
    * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b)
        internal
        pure
        returns (uint256 c) 
    {
        c = a + b;
        require(c >= a, "SafeMath add failed");
        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 Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_affCode","type":"address"},{"name":"_eth","type":"uint256"}],"name":"reLoadXaddr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getBuyPrice","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":true,"inputs":[{"name":"","type":"address"}],"name":"pIDxAddr_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"round_","outputs":[{"name":"plyr","type":"uint256"},{"name":"end","type":"uint256"},{"name":"ended","type":"bool"},{"name":"strt","type":"uint256"},{"name":"poly","type":"uint256"},{"name":"eth","type":"uint256"},{"name":"pot","type":"uint256"},{"name":"mask","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_poly","type":"uint256"}],"name":"iWantXPoly","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pID_","outputs":[{"name":"","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":"_pID","type":"uint256"}],"name":"getPlayerVaults","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentRoundInfo","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"address"},{"name":"","type":"bytes32"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_rID","type":"uint256"},{"name":"_eth","type":"uint256"}],"name":"calcPolyReceived","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":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"plyrRnds_","outputs":[{"name":"eth","type":"uint256"},{"name":"poly","type":"uint256"},{"name":"mask","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_affCode","type":"address"}],"name":"buyXaddr","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"getTimeLeft","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getIncrementPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"plyr_","outputs":[{"name":"addr","type":"address"},{"name":"name","type":"bytes32"},{"name":"win","type":"uint256"},{"name":"gen","type":"uint256"},{"name":"aff","type":"uint256"},{"name":"lrnd","type":"uint256"},{"name":"laff","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rndEth_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"getPlayerInfoByAddress","outputs":[{"name":"","type":"uint256"},{"name":"","type":"bytes32"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"usernameAddress","type":"address"},{"name":"cubeAddress","type":"address"},{"name":"comAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"compressedData","type":"uint256"},{"indexed":false,"name":"compressedIDs","type":"uint256"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"ethIn","type":"uint256"},{"indexed":false,"name":"polyBought","type":"uint256"},{"indexed":false,"name":"winnerAddr","type":"address"},{"indexed":false,"name":"winnerName","type":"bytes32"},{"indexed":false,"name":"amountWon","type":"uint256"},{"indexed":false,"name":"newPot","type":"uint256"},{"indexed":false,"name":"cubeAmount","type":"uint256"},{"indexed":false,"name":"genAmount","type":"uint256"},{"indexed":false,"name":"potAmount","type":"uint256"}],"name":"onEndTx","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"playerID","type":"uint256"},{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"ethOut","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"ethOut","type":"uint256"},{"indexed":false,"name":"compressedData","type":"uint256"},{"indexed":false,"name":"compressedIDs","type":"uint256"},{"indexed":false,"name":"winnerAddr","type":"address"},{"indexed":false,"name":"winnerName","type":"bytes32"},{"indexed":false,"name":"amountWon","type":"uint256"},{"indexed":false,"name":"newPot","type":"uint256"}],"name":"onWithdrawAndDistribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"ethIn","type":"uint256"},{"indexed":false,"name":"compressedData","type":"uint256"},{"indexed":false,"name":"compressedIDs","type":"uint256"},{"indexed":false,"name":"winnerAddr","type":"address"},{"indexed":false,"name":"winnerName","type":"bytes32"},{"indexed":false,"name":"amountWon","type":"uint256"},{"indexed":false,"name":"newPot","type":"uint256"}],"name":"onBuyAndDistribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"compressedData","type":"uint256"},{"indexed":false,"name":"compressedIDs","type":"uint256"},{"indexed":false,"name":"winnerAddr","type":"address"},{"indexed":false,"name":"winnerName","type":"bytes32"},{"indexed":false,"name":"amountWon","type":"uint256"},{"indexed":false,"name":"newPot","type":"uint256"}],"name":"onReLoadAndDistribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"affiliateID","type":"uint256"},{"indexed":false,"name":"affiliateAddress","type":"address"},{"indexed":false,"name":"affiliateName","type":"bytes32"},{"indexed":true,"name":"roundID","type":"uint256"},{"indexed":true,"name":"buyerID","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onAffiliatePayout","type":"event"}]

60806040523480156200001157600080fd5b5060405160608062002db383398101604081815282516020808501519483015160028054600160a060020a03808616600160a060020a03199283161790925560018054838a16908316178082556000805485871694169390931783556003919091557f78e979250000000000000000000000000000000000000000000000000000000088529551949796929562015180959216936378e97925936004808201949293918390030190829087803b158015620000cb57600080fd5b505af1158015620000e0573d6000803e3d6000fd5b505050506040513d6020811015620000f757600080fd5b50516001600081815260086020908152939092017fad67d757c34507f157cacfa2e3153e9f260a2244f30428821be7be64587ac5625554604080517f78e9792500000000000000000000000000000000000000000000000000000000815290516201518094610e1094600160a060020a03909416936378e979259360048082019492918390030190829087803b1580156200019157600080fd5b505af1158015620001a6573d6000803e3d6000fd5b505050506040513d6020811015620001bd57600080fd5b50516001600052600860205201017fad67d757c34507f157cacfa2e3153e9f260a2244f30428821be7be64587ac56055505050612bb380620002006000396000f3006080604052600436106100f85763ffffffff60e060020a600035041663015008b18114610232578063018a25e81461025857806306fdde031461027f57806310f01eba1461030957806324c33d331461032a57806338337f72146103835780633ccfd60b1461039b5780634b227176146103b0578063624ae5c0146103c557806363066434146103da578063747dff421461041057806380018c5c1461046f57806395d89b411461048a578063a2bccae91461049f578063aeeed0db146104ba578063c7e284b8146104ce578063db87e4bd146104e3578063de7874f3146104f8578063e99fa41714610552578063ee0b5d8b14610567575b610100612b2e565b600032331461010e57600080fd5b34633b9aca00811015610191576040805160e560020a62461bcd02815260206004820152602160248201527f706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6360448201527f7900000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b69152d02c7e14af68000008111156101f3576040805160e560020a62461bcd02815260206004820152600e60248201527f6e6f20766974616c696b2c206e6f000000000000000000000000000000000000604482015290519081900360640190fd5b6101fc836105c0565b3360009081526005602090815260408083205480845260069283905292200154919450925061022d9083908561063b565b505050005b34801561023e57600080fd5b50610256600160a060020a03600435166024356108ca565b005b34801561026457600080fd5b5061026d610a86565b60408051918252519081900360200190f35b34801561028b57600080fd5b50610294610b45565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102ce5781810151838201526020016102b6565b50505050905090810190601f1680156102fb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031557600080fd5b5061026d600160a060020a0360043516610b7c565b34801561033657600080fd5b50610342600435610b8e565b604080519889526020890197909752941515878701526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b34801561038f57600080fd5b5061026d600435610bd5565b3480156103a757600080fd5b50610256610c81565b3480156103bc57600080fd5b5061026d61100c565b3480156103d157600080fd5b5061026d611012565b3480156103e657600080fd5b506103f2600435611018565b60408051938452602084019290925282820152519081900360600190f35b34801561041c57600080fd5b5061042561119d565b6040805198895260208901979097528787019590955260608701939093526080860191909152600160a060020a031660a085015260c084015260e083015251908190036101000190f35b34801561047b57600080fd5b5061026d600435602435611286565b34801561049657600080fd5b50610294611328565b3480156104ab57600080fd5b506103f260043560243561135f565b610256600160a060020a036004351661138b565b3480156104da57600080fd5b5061026d61154a565b3480156104ef57600080fd5b5061026d6115d1565b34801561050457600080fd5b5061051060043561160d565b60408051600160a060020a0390981688526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b34801561055e57600080fd5b5061026d611655565b34801561057357600080fd5b50610588600160a060020a036004351661165b565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b6105c8612b2e565b3360009081526005602052604090205480151561063157600480546001908101918290553360008181526005602090815260408083208690559482526006905292909220805473ffffffffffffffffffffffffffffffffffffffff191690921790915583510183525b8291505b50919050565b600380546000818152600860205260409020909101544290811180156106a35750600082815260086020526040902060010154811115806106a35750600082815260086020526040902060010154811180156106a35750600082815260086020526040902054155b156106ba576106b5828634878761179a565b6108c3565b600082815260086020526040902060010154811180156106ec575060008281526008602052604090206002015460ff16155b1561088e576000828152600860205260409020600201805460ff1916600117905561071683611a3f565b8051670de0b6b3a764000083020181526020808201805188019052600254600088815260068352604080822054815160e060020a637c80bb4f028152600160a060020a03918216600482015291519598507fdf9835510241cec35e56d21551a9cc57d18680e3b196333a739cd27bd31406759533959190941693637c80bb4f936024808501948390030190829087803b1580156107b257600080fd5b505af11580156107c6573d6000803e3d6000fd5b505050506040513d60208110156107dc57600080fd5b81019080805190602001909291905050503486600001518760200151886040015189606001518a608001518b60a00151604051808a600160a060020a0316600160a060020a03168152602001896000191660001916815260200188815260200187815260200186815260200185600160a060020a0316600160a060020a031681526020018460001916600019168152602001838152602001828152602001995050505050505050505060405180910390a15b6000858152600660205260409020600301546108b0903463ffffffff611bc216565b6000868152600660205260409020600301555b5050505050565b6108d2612b2e565b6000803233146108e157600080fd5b83633b9aca00811015610964576040805160e560020a62461bcd02815260206004820152602160248201527f706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6360448201527f7900000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b69152d02c7e14af68000008111156109c6576040805160e560020a62461bcd02815260206004820152600e60248201527f6e6f20766974616c696b2c206e6f000000000000000000000000000000000000604482015290519081900360640190fd5b336000908152600560205260409020549250600160a060020a03861615806109f65750600160a060020a03861633145b15610a1557600083815260066020819052604090912001549150610a72565b600160a060020a0386166000908152600560205260409020549150811515610a4357610a4086611c23565b91505b600083815260066020819052604090912001548214610a72576000838152600660208190526040909120018290555b610a7e83838787611c7a565b505050505050565b60038054600081815260086020526040812090920154429081118015610aee575060008281526008602052604090206001015481111580610aee575060008281526008602052604090206001015481118015610aee5750600082815260086020526040902054155b15610b3657600082815260086020526040902060040154610b2f90670de0b6b3a764000090610b23908263ffffffff611bc216565b9063ffffffff611eeb16565b9250610b40565b6544364c5bb00092505b505090565b60408051808201909152600881527f506f6c79466f6d6f000000000000000000000000000000000000000000000000602082015281565b60056020526000908152604090205481565b600860205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701549596949560ff9094169492939192909188565b60038054600081815260086020526040812090920154429081118015610c3d575060008281526008602052604090206001015481111580610c3d575060008281526008602052604090206001015481118015610c3d5750600082815260086020526040902054155b15610c7157600082815260086020526040902060040154610c6a908590610b23908263ffffffff611bc216565b9250610c7a565b610c6a84611f18565b5050919050565b600080600080610c8f612b2e565b323314610c9b57600080fd5b60035433600090815260056020908152604080832054848452600890925290912060010154919650429550935084118015610ce8575060008581526008602052604090206002015460ff16155b8015610d01575060008581526008602052604090205415155b15610ec8576000858152600860205260409020600201805460ff19166001179055610d2b81611a3f565b9050610d3683611fa1565b91506000821115610d8757600083815260066020526040808220549051600160a060020a039091169184156108fc02918591818181858888f19350505050158015610d85573d6000803e3d6000fd5b505b8051670de0b6b3a764000085020181526020808201805185019052600254600085815260068352604080822054815160e060020a637c80bb4f028152600160a060020a03918216600482015291517fcc4a20d23779e1e925dc3957cc5df661a322aad7a5ebeb46747ddf3136e47e209533959290921693637c80bb4f936024808201949392918390030190829087803b158015610e2357600080fd5b505af1158015610e37573d6000803e3d6000fd5b505050506040513d6020811015610e4d57600080fd5b505183516020858101516040808801516060808a01516080808c015160a0808e01518751600160a060020a039d8e168152998a019b909b528887018f90529388019890985286019490945296169583019590955260c082015260e08101919091526101008101919091529051908190036101200190a16108c3565b610ed183611fa1565b91506000821115610f2257600083815260066020526040808220549051600160a060020a039091169184156108fc02918591818181858888f19350505050158015610f20573d6000803e3d6000fd5b505b600254600084815260066020908152604080832054815160e060020a637c80bb4f028152600160a060020a039182166004820152915188957f8f36579a548bc439baa172a6521207464154da77f411e2da3db2f53affe6cc3a9533959390911693637c80bb4f93602480830194919391928390030190829087803b158015610fa957600080fd5b505af1158015610fbd573d6000803e3d6000fd5b505050506040513d6020811015610fd357600080fd5b505160408051600160a060020a039093168352602083019190915281810186905260608201889052519081900360800190a25050505050565b60045481565b60035481565b6003546000818152600860205260408120600101549091829182919042118015611054575060008181526008602052604090206002015460ff16155b801561106d575060008181526008602052604090205415155b1561116d576000818152600860205260409020548514156111315760008181526008602090815260408083206006908101548985529252909120600201546110ba9163ffffffff611bc216565b6000868152600760209081526040808320858452909152902060020154611113906110f5906110e98986612023565b9063ffffffff61207616565b6000888152600660205260409020600301549063ffffffff611bc216565b60008781526006602052604090206004015491955093509150611195565b600085815260066020908152604080832060029081015460078452828520868652909352922090910154611113906110f5906110e98986612023565b60008581526006602052604090206002810154600590910154611113906110f59088906120d6565b509193909250565b60038054600081815260086020908152604080832060048082015460018301549783015460068085015494548852865284872054600254865160e060020a637c80bb4f028152600160a060020a039283169581018690529651989a8b9a8b9a8b9a8b9a8b9a8b9a8b9a95998a999698909692959194921692637c80bb4f92602480830193919282900301818e87803b15801561123857600080fd5b505af115801561124c573d6000803e3d6000fd5b505050506040513d602081101561126257600080fd5b5051600954969f50949d50929b509099509750955093509150509091929394959697565b6000828152600860205260408120600301544290811180156112ea5750600084815260086020526040902060010154811115806112ea5750600084815260086020526040902060010154811180156112ea5750600084815260086020526040902054155b1561131857600084815260086020526040902060050154611311908463ffffffff61213416565b9150611321565b61131183612155565b5092915050565b60408051808201909152600481527f504f4c5900000000000000000000000000000000000000000000000000000000602082015281565b600760209081526000928352604080842090915290825290208054600182015460029092015490919083565b611393612b2e565b6000803233146113a257600080fd5b34633b9aca00811015611425576040805160e560020a62461bcd02815260206004820152602160248201527f706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6360448201527f7900000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b69152d02c7e14af6800000811115611487576040805160e560020a62461bcd02815260206004820152600e60248201527f6e6f20766974616c696b2c206e6f000000000000000000000000000000000000604482015290519081900360640190fd5b611490846105c0565b336000908152600560205260409020549094509250600160a060020a03851615806114c35750600160a060020a03851633145b156114e25760008381526006602081905260409091200154915061153f565b600160a060020a03851660009081526005602052604090205491508115156115105761150d85611c23565b91505b60008381526006602081905260409091200154821461153f576000838152600660208190526040909120018290555b6108c383838661063b565b60035460008181526008602052604081206001015490919042908110156115c8576000828152600860205260409020600301548111156115a657600082815260086020526040902060010154610b2f908263ffffffff61207616565b600082815260086020526040902060030154610b2f908263ffffffff61207616565b60009250610b40565b600354600081815260086020526040812060060154909190611606670de0b6b3a7640000820468056bc75e2d631000006121c9565b9250505090565b60066020819052600091825260409091208054600182015460028301546003840154600485015460058601549590960154600160a060020a0390941695929491939092919087565b60095481565b600354600160a060020a03828116600081815260056020908152604080832054600254825160e060020a637c80bb4f028152600481019690965291519396879687968796879687968796948594911692637c80bb4f9260248084019391929182900301818a87803b1580156116cf57600080fd5b505af11580156116e3573d6000803e3d6000fd5b505050506040513d60208110156116f957600080fd5b505160008381526007602090815260408083208784528252808320600101548684526006909252909120600281015460059091015461175b9061173d9087906120d6565b6000878152600660205260409020600301549063ffffffff611bc216565b600095865260066020908152604080882060040154600783528189209989529890915290952054939e929d50909b509950919750919550909350915050565b60008481526007602090815260408083208884529091528120600101548190819015156117ce576117cb8785612240565b93505b6000888152600860205260409020600501546801a055690d9db80000118015611828575060008781526007602090815260408083208b8452909152902054670de0b6b3a764000090611826908863ffffffff611bc216565b115b156118af5760008781526007602090815260408083208b845290915290205461186090670de0b6b3a76400009063ffffffff61207616565b9250611872868463ffffffff61207616565b600088815260066020526040902060030154909250611897908363ffffffff611bc216565b60008881526006602052604090206003015591945084915b633b9aca00861115611a35576000888152600860205260409020600501546118dd908763ffffffff61213416565b90506118e76115d1565b8110611925576118f6886122a0565b600088815260086020526040902054871461191d5760008881526008602052604090208790555b835160640184525b60008781526007602090815260408083208b845290915290206001015461195390829063ffffffff611bc216565b60008881526007602090815260408083208c84529091529020600181019190915554611980908790611bc2565b60008881526007602090815260408083208c84528252808320939093556008905220600401546119b790829063ffffffff611bc216565b60008981526008602052604090206004810191909155600501546119e290879063ffffffff611bc216565b600089815260086020526040902060050155600954611a0890879063ffffffff611bc216565b600955611a188888888888612373565b9350611a27888888848861262c565b9350611a3587878387612728565b5050505050505050565b611a47612b2e565b6003546000818152600860209081526040808320805460069182015481865291909352922060020154909190611a8490829063ffffffff611bc216565b600083815260066020818152604080842060028082019690965588855260088352818520600101548b51620f4240909102018b528a830180516a52b7d2dcc80cd2e40000008a0201905254600160a060020a039081168b83018190529554888652938352815160e060020a637c80bb4f02815260048101969096529051921693637c80bb4f93602480830194928390030190829087803b158015611b2757600080fd5b505af1158015611b3b573d6000803e3d6000fd5b505050506040513d6020811015611b5157600080fd5b5051606086015260808501819052600060a086018190526003805460019081018255949094018082526008602052604090912042940184905592611b9d90610e1063ffffffff611bc216565b6000938452600860205260408420600181019190915560060192909255509192915050565b81810182811015611c1d576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820616464206661696c656400000000000000000000000000604482015290519081900360640190fd5b92915050565b60048054600101808255600160a060020a03831660008181526005602090815260408083208590559382526006905291909120805473ffffffffffffffffffffffffffffffffffffffff1916909117905554919050565b60038054600081815260086020526040902090910154429081118015611ce2575060008281526008602052604090206001015481111580611ce2575060008281526008602052604090206001015481118015611ce25750600082815260086020526040902054155b15611d1857611cf4846110e988611fa1565b600087815260066020526040902060030155611d13828786888761179a565b610a7e565b60008281526008602052604090206001015481118015611d4a575060008281526008602052604090206002015460ff16155b15610a7e576000828152600860205260409020600201805460ff19166001179055611d7483611a3f565b8051670de0b6b3a764000083020181526020808201805189019052600254600089815260068352604080822054815160e060020a637c80bb4f028152600160a060020a03918216600482015291519598507ff9e13fe0fdf5dca9b8895e9926aab1d1dde7592bc7df30f758fa7f51dc93f5c99533959190941693637c80bb4f936024808501948390030190829087803b158015611e1057600080fd5b505af1158015611e24573d6000803e3d6000fd5b505050506040513d6020811015611e3a57600080fd5b8101908080519060200190929190505050856000015186602001518760400151886060015189608001518a60a001516040518089600160a060020a0316600160a060020a03168152602001886000191660001916815260200187815260200186815260200185600160a060020a0316600160a060020a0316815260200184600019166000191681526020018381526020018281526020019850505050505050505060405180910390a1505050505050565b6000611f11611f08611f03858563ffffffff61207616565b611f18565b6110e985611f18565b9392505050565b6000611f2b670de0b6b3a76400006128ea565b611f916002611f5e611f4b86670de0b6b3a764000063ffffffff6121c916565b65886c8f6730709063ffffffff6121c916565b811515611f6757fe5b04611f85611f74866128ea565b6304a817c89063ffffffff6121c916565b9063ffffffff611bc216565b811515611f9a57fe5b0492915050565b6000818152600660205260408120600501548190611fc09084906128f6565b600083815260066020526040902060048101546003820154600290920154611ff292611f85919063ffffffff611bc216565b90506000811115611c1d57600083815260066020526040812060028101829055600381018290556004015592915050565b60008281526007602081815260408084208585528252808420600101546008909252832090910154670de0b6b3a764000091612065919063ffffffff6121c916565b81151561206e57fe5b049392505050565b6000828211156120d0576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820737562206661696c656400000000000000000000000000604482015290519081900360640190fd5b50900390565b600082815260076020818152604080842085855282528084206002810154600190910154600890935290842090920154611f119291670de0b6b3a76400009161211e916121c9565b81151561212757fe5b049063ffffffff61207616565b6000611f1161214284612155565b6110e9612155868663ffffffff611bc216565b60006309502f90611f916d03b2a1d15167e7c5699bfde000006110e96121c47a0dac7055469777a6122ee4310dd6c14410500f2904840000000000611f856b01027e72f1f12813088000006121b88a670de0b6b3a764000063ffffffff6121c916565b9063ffffffff6121c916565b61298c565b60008215156121da57506000611c1d565b508181028183828115156121ea57fe5b0414611c1d576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d617468206d756c206661696c656400000000000000000000000000604482015290519081900360640190fd5b612248612b2e565b6000838152600660205260409020600501541561227c5760008381526006602052604090206005015461227c9084906128f6565b506003546000838152600660205260409020600501558051600a0181528092915050565b600081815260086020526040812060010154429190821180156122cf5750600083815260086020526040902054155b156122ed576122e66107088363ffffffff611bc216565b9050612315565b600083815260086020526040902060010154612312906107089063ffffffff611bc216565b90505b6123286203f4808363ffffffff611bc216565b81101561234857600083815260086020526040902060010181905561236e565b61235b6203f4808363ffffffff611bc216565b6000848152600860205260409020600101555b505050565b61237b612b2e565b6000805460405160148704918391600160a060020a03909116906108fc84150290849084818181858888f193505050501580156123bc573d6000803e3d6000fd5b5050600a86048588148015906123d157508515155b1561255a576000868152600660205260409020600401546123f990829063ffffffff611bc216565b60066000888152602001908152602001600020600401819055508789877f590bbc0fc16915a85269a48f74783c39842b7ae9eceb7c295c95dbe8b3ec7331600660008b815260200190815260200160002060000160009054906101000a9004600160a060020a0316600260009054906101000a9004600160a060020a0316600160a060020a0316637c80bb4f600660008e815260200190815260200160002060000160009054906101000a9004600160a060020a03166040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b1580156124fa57600080fd5b505af115801561250e573d6000803e3d6000fd5b505050506040513d602081101561252457600080fd5b505160408051600160a060020a0390931683526020830191909152818101879052426060830152519081900360800190a461255e565b8092505b61258c606461257489600f63ffffffff6121c916565b81151561257d57fe5b8591900463ffffffff611bc216565b9250600083111561261f57600160009054906101000a9004600160a060020a0316600160a060020a031663e4fc6b6d846040518263ffffffff1660e060020a0281526004016000604051808303818588803b1580156125ea57600080fd5b505af11580156125fe573d6000803e3d6000fd5b50505060c0870151612619925085915063ffffffff611bc216565b60c08601525b5092979650505050505050565b612634612b2e565b60008080606461264b88603263ffffffff6121c916565b81151561265457fe5b049250612685606461266d89601e63ffffffff6121c916565b81151561267657fe5b8991900463ffffffff61207616565b9650612697878463ffffffff61207616565b91506126a5898985896129df565b905060008111156126c3576126c0838263ffffffff61207616565b92505b6000898152600860205260409020600601546126e990611f85848463ffffffff611bc216565b60008a81526008602052604090206006015560e085015161271190849063ffffffff611bc216565b60e086015250610100840152509095945050505050565b8051670de0b6b3a7640000420201808252600354602080840180518801751aba4714957d300d0e549208b31adb100000000000009093029290920191829052600254600088815260068352604080822054815160e060020a637c80bb4f028152600160a060020a03918216600482015291517f3671a735b2c7f1e43f1ab4385d4c5b480bbff437ad893b703fb0dfdbd24679e29796959190941693637c80bb4f936024808501948390030190829087803b1580156127e557600080fd5b505af11580156127f9573d6000803e3d6000fd5b505050506040513d602081101561280f57600080fd5b81019080805190602001909291905050503387878760400151886060015189608001518a60a001518b60c001518c60e001518d6101000151604051808e81526020018d81526020018c600019166000191681526020018b600160a060020a0316600160a060020a031681526020018a815260200189815260200188600160a060020a0316600160a060020a0316815260200187600019166000191681526020018681526020018581526020018481526020018381526020018281526020019d505050505050505050505050505060405180910390a150505050565b6000611c1d82836121c9565b600061290283836120d6565b9050600081111561236e5760008381526006602052604090206003015461293090829063ffffffff611bc216565b600084815260066020908152604080832060030193909355600781528282208583529052206002015461296a90829063ffffffff611bc216565b6000848152600760209081526040808320868452909152902060020155505050565b600080600261299c846001611bc2565b8115156129a557fe5b0490508291505b818110156106355780915060026129ce82858115156129c757fe5b0483611bc2565b8115156129d757fe5b0490506129ac565b60008481526008602052604081206004015481908190612a0d86670de0b6b3a764000063ffffffff6121c916565b811515612a1657fe5b6000898152600860205260409020600701549190049250612a3e90839063ffffffff611bc216565b600088815260086020526040902060070155670de0b6b3a7640000612a69838663ffffffff6121c916565b811515612a7257fe5b60008881526007602081815260408084208d855282528084206002015460089092529092200154929091049250612ac391611f85908490670de0b6b3a76400009061211e908a63ffffffff6121c916565b60008781526007602090815260408083208b8452825280832060020193909355600890522060040154612b2390670de0b6b3a764000090612b0b90859063ffffffff6121c916565b811515612b1457fe5b8791900463ffffffff61207616565b979650505050505050565b6101206040519081016040528060008152602001600081526020016000600160a060020a0316815260200160008019168152602001600081526020016000815260200160008152602001600081526020016000815250905600a165627a7a72305820e9550dab6466b194a0a4fdf7a799692a641fc77d80ccad32e7b8d508410296790029000000000000000000000000006f58215dadb1ed27446aa132b622ebdf5b4cca000000000000000000000000eb6aaeff15f1faa7acecb0627364294fb085fbab00000000000000000000000098a32ffc3c90d24236b32090498e1a241b3d257c

Deployed Bytecode

0x6080604052600436106100f85763ffffffff60e060020a600035041663015008b18114610232578063018a25e81461025857806306fdde031461027f57806310f01eba1461030957806324c33d331461032a57806338337f72146103835780633ccfd60b1461039b5780634b227176146103b0578063624ae5c0146103c557806363066434146103da578063747dff421461041057806380018c5c1461046f57806395d89b411461048a578063a2bccae91461049f578063aeeed0db146104ba578063c7e284b8146104ce578063db87e4bd146104e3578063de7874f3146104f8578063e99fa41714610552578063ee0b5d8b14610567575b610100612b2e565b600032331461010e57600080fd5b34633b9aca00811015610191576040805160e560020a62461bcd02815260206004820152602160248201527f706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6360448201527f7900000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b69152d02c7e14af68000008111156101f3576040805160e560020a62461bcd02815260206004820152600e60248201527f6e6f20766974616c696b2c206e6f000000000000000000000000000000000000604482015290519081900360640190fd5b6101fc836105c0565b3360009081526005602090815260408083205480845260069283905292200154919450925061022d9083908561063b565b505050005b34801561023e57600080fd5b50610256600160a060020a03600435166024356108ca565b005b34801561026457600080fd5b5061026d610a86565b60408051918252519081900360200190f35b34801561028b57600080fd5b50610294610b45565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102ce5781810151838201526020016102b6565b50505050905090810190601f1680156102fb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031557600080fd5b5061026d600160a060020a0360043516610b7c565b34801561033657600080fd5b50610342600435610b8e565b604080519889526020890197909752941515878701526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b34801561038f57600080fd5b5061026d600435610bd5565b3480156103a757600080fd5b50610256610c81565b3480156103bc57600080fd5b5061026d61100c565b3480156103d157600080fd5b5061026d611012565b3480156103e657600080fd5b506103f2600435611018565b60408051938452602084019290925282820152519081900360600190f35b34801561041c57600080fd5b5061042561119d565b6040805198895260208901979097528787019590955260608701939093526080860191909152600160a060020a031660a085015260c084015260e083015251908190036101000190f35b34801561047b57600080fd5b5061026d600435602435611286565b34801561049657600080fd5b50610294611328565b3480156104ab57600080fd5b506103f260043560243561135f565b610256600160a060020a036004351661138b565b3480156104da57600080fd5b5061026d61154a565b3480156104ef57600080fd5b5061026d6115d1565b34801561050457600080fd5b5061051060043561160d565b60408051600160a060020a0390981688526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b34801561055e57600080fd5b5061026d611655565b34801561057357600080fd5b50610588600160a060020a036004351661165b565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b6105c8612b2e565b3360009081526005602052604090205480151561063157600480546001908101918290553360008181526005602090815260408083208690559482526006905292909220805473ffffffffffffffffffffffffffffffffffffffff191690921790915583510183525b8291505b50919050565b600380546000818152600860205260409020909101544290811180156106a35750600082815260086020526040902060010154811115806106a35750600082815260086020526040902060010154811180156106a35750600082815260086020526040902054155b156106ba576106b5828634878761179a565b6108c3565b600082815260086020526040902060010154811180156106ec575060008281526008602052604090206002015460ff16155b1561088e576000828152600860205260409020600201805460ff1916600117905561071683611a3f565b8051670de0b6b3a764000083020181526020808201805188019052600254600088815260068352604080822054815160e060020a637c80bb4f028152600160a060020a03918216600482015291519598507fdf9835510241cec35e56d21551a9cc57d18680e3b196333a739cd27bd31406759533959190941693637c80bb4f936024808501948390030190829087803b1580156107b257600080fd5b505af11580156107c6573d6000803e3d6000fd5b505050506040513d60208110156107dc57600080fd5b81019080805190602001909291905050503486600001518760200151886040015189606001518a608001518b60a00151604051808a600160a060020a0316600160a060020a03168152602001896000191660001916815260200188815260200187815260200186815260200185600160a060020a0316600160a060020a031681526020018460001916600019168152602001838152602001828152602001995050505050505050505060405180910390a15b6000858152600660205260409020600301546108b0903463ffffffff611bc216565b6000868152600660205260409020600301555b5050505050565b6108d2612b2e565b6000803233146108e157600080fd5b83633b9aca00811015610964576040805160e560020a62461bcd02815260206004820152602160248201527f706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6360448201527f7900000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b69152d02c7e14af68000008111156109c6576040805160e560020a62461bcd02815260206004820152600e60248201527f6e6f20766974616c696b2c206e6f000000000000000000000000000000000000604482015290519081900360640190fd5b336000908152600560205260409020549250600160a060020a03861615806109f65750600160a060020a03861633145b15610a1557600083815260066020819052604090912001549150610a72565b600160a060020a0386166000908152600560205260409020549150811515610a4357610a4086611c23565b91505b600083815260066020819052604090912001548214610a72576000838152600660208190526040909120018290555b610a7e83838787611c7a565b505050505050565b60038054600081815260086020526040812090920154429081118015610aee575060008281526008602052604090206001015481111580610aee575060008281526008602052604090206001015481118015610aee5750600082815260086020526040902054155b15610b3657600082815260086020526040902060040154610b2f90670de0b6b3a764000090610b23908263ffffffff611bc216565b9063ffffffff611eeb16565b9250610b40565b6544364c5bb00092505b505090565b60408051808201909152600881527f506f6c79466f6d6f000000000000000000000000000000000000000000000000602082015281565b60056020526000908152604090205481565b600860205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701549596949560ff9094169492939192909188565b60038054600081815260086020526040812090920154429081118015610c3d575060008281526008602052604090206001015481111580610c3d575060008281526008602052604090206001015481118015610c3d5750600082815260086020526040902054155b15610c7157600082815260086020526040902060040154610c6a908590610b23908263ffffffff611bc216565b9250610c7a565b610c6a84611f18565b5050919050565b600080600080610c8f612b2e565b323314610c9b57600080fd5b60035433600090815260056020908152604080832054848452600890925290912060010154919650429550935084118015610ce8575060008581526008602052604090206002015460ff16155b8015610d01575060008581526008602052604090205415155b15610ec8576000858152600860205260409020600201805460ff19166001179055610d2b81611a3f565b9050610d3683611fa1565b91506000821115610d8757600083815260066020526040808220549051600160a060020a039091169184156108fc02918591818181858888f19350505050158015610d85573d6000803e3d6000fd5b505b8051670de0b6b3a764000085020181526020808201805185019052600254600085815260068352604080822054815160e060020a637c80bb4f028152600160a060020a03918216600482015291517fcc4a20d23779e1e925dc3957cc5df661a322aad7a5ebeb46747ddf3136e47e209533959290921693637c80bb4f936024808201949392918390030190829087803b158015610e2357600080fd5b505af1158015610e37573d6000803e3d6000fd5b505050506040513d6020811015610e4d57600080fd5b505183516020858101516040808801516060808a01516080808c015160a0808e01518751600160a060020a039d8e168152998a019b909b528887018f90529388019890985286019490945296169583019590955260c082015260e08101919091526101008101919091529051908190036101200190a16108c3565b610ed183611fa1565b91506000821115610f2257600083815260066020526040808220549051600160a060020a039091169184156108fc02918591818181858888f19350505050158015610f20573d6000803e3d6000fd5b505b600254600084815260066020908152604080832054815160e060020a637c80bb4f028152600160a060020a039182166004820152915188957f8f36579a548bc439baa172a6521207464154da77f411e2da3db2f53affe6cc3a9533959390911693637c80bb4f93602480830194919391928390030190829087803b158015610fa957600080fd5b505af1158015610fbd573d6000803e3d6000fd5b505050506040513d6020811015610fd357600080fd5b505160408051600160a060020a039093168352602083019190915281810186905260608201889052519081900360800190a25050505050565b60045481565b60035481565b6003546000818152600860205260408120600101549091829182919042118015611054575060008181526008602052604090206002015460ff16155b801561106d575060008181526008602052604090205415155b1561116d576000818152600860205260409020548514156111315760008181526008602090815260408083206006908101548985529252909120600201546110ba9163ffffffff611bc216565b6000868152600760209081526040808320858452909152902060020154611113906110f5906110e98986612023565b9063ffffffff61207616565b6000888152600660205260409020600301549063ffffffff611bc216565b60008781526006602052604090206004015491955093509150611195565b600085815260066020908152604080832060029081015460078452828520868652909352922090910154611113906110f5906110e98986612023565b60008581526006602052604090206002810154600590910154611113906110f59088906120d6565b509193909250565b60038054600081815260086020908152604080832060048082015460018301549783015460068085015494548852865284872054600254865160e060020a637c80bb4f028152600160a060020a039283169581018690529651989a8b9a8b9a8b9a8b9a8b9a8b9a8b9a95998a999698909692959194921692637c80bb4f92602480830193919282900301818e87803b15801561123857600080fd5b505af115801561124c573d6000803e3d6000fd5b505050506040513d602081101561126257600080fd5b5051600954969f50949d50929b509099509750955093509150509091929394959697565b6000828152600860205260408120600301544290811180156112ea5750600084815260086020526040902060010154811115806112ea5750600084815260086020526040902060010154811180156112ea5750600084815260086020526040902054155b1561131857600084815260086020526040902060050154611311908463ffffffff61213416565b9150611321565b61131183612155565b5092915050565b60408051808201909152600481527f504f4c5900000000000000000000000000000000000000000000000000000000602082015281565b600760209081526000928352604080842090915290825290208054600182015460029092015490919083565b611393612b2e565b6000803233146113a257600080fd5b34633b9aca00811015611425576040805160e560020a62461bcd02815260206004820152602160248201527f706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6360448201527f7900000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b69152d02c7e14af6800000811115611487576040805160e560020a62461bcd02815260206004820152600e60248201527f6e6f20766974616c696b2c206e6f000000000000000000000000000000000000604482015290519081900360640190fd5b611490846105c0565b336000908152600560205260409020549094509250600160a060020a03851615806114c35750600160a060020a03851633145b156114e25760008381526006602081905260409091200154915061153f565b600160a060020a03851660009081526005602052604090205491508115156115105761150d85611c23565b91505b60008381526006602081905260409091200154821461153f576000838152600660208190526040909120018290555b6108c383838661063b565b60035460008181526008602052604081206001015490919042908110156115c8576000828152600860205260409020600301548111156115a657600082815260086020526040902060010154610b2f908263ffffffff61207616565b600082815260086020526040902060030154610b2f908263ffffffff61207616565b60009250610b40565b600354600081815260086020526040812060060154909190611606670de0b6b3a7640000820468056bc75e2d631000006121c9565b9250505090565b60066020819052600091825260409091208054600182015460028301546003840154600485015460058601549590960154600160a060020a0390941695929491939092919087565b60095481565b600354600160a060020a03828116600081815260056020908152604080832054600254825160e060020a637c80bb4f028152600481019690965291519396879687968796879687968796948594911692637c80bb4f9260248084019391929182900301818a87803b1580156116cf57600080fd5b505af11580156116e3573d6000803e3d6000fd5b505050506040513d60208110156116f957600080fd5b505160008381526007602090815260408083208784528252808320600101548684526006909252909120600281015460059091015461175b9061173d9087906120d6565b6000878152600660205260409020600301549063ffffffff611bc216565b600095865260066020908152604080882060040154600783528189209989529890915290952054939e929d50909b509950919750919550909350915050565b60008481526007602090815260408083208884529091528120600101548190819015156117ce576117cb8785612240565b93505b6000888152600860205260409020600501546801a055690d9db80000118015611828575060008781526007602090815260408083208b8452909152902054670de0b6b3a764000090611826908863ffffffff611bc216565b115b156118af5760008781526007602090815260408083208b845290915290205461186090670de0b6b3a76400009063ffffffff61207616565b9250611872868463ffffffff61207616565b600088815260066020526040902060030154909250611897908363ffffffff611bc216565b60008881526006602052604090206003015591945084915b633b9aca00861115611a35576000888152600860205260409020600501546118dd908763ffffffff61213416565b90506118e76115d1565b8110611925576118f6886122a0565b600088815260086020526040902054871461191d5760008881526008602052604090208790555b835160640184525b60008781526007602090815260408083208b845290915290206001015461195390829063ffffffff611bc216565b60008881526007602090815260408083208c84529091529020600181019190915554611980908790611bc2565b60008881526007602090815260408083208c84528252808320939093556008905220600401546119b790829063ffffffff611bc216565b60008981526008602052604090206004810191909155600501546119e290879063ffffffff611bc216565b600089815260086020526040902060050155600954611a0890879063ffffffff611bc216565b600955611a188888888888612373565b9350611a27888888848861262c565b9350611a3587878387612728565b5050505050505050565b611a47612b2e565b6003546000818152600860209081526040808320805460069182015481865291909352922060020154909190611a8490829063ffffffff611bc216565b600083815260066020818152604080842060028082019690965588855260088352818520600101548b51620f4240909102018b528a830180516a52b7d2dcc80cd2e40000008a0201905254600160a060020a039081168b83018190529554888652938352815160e060020a637c80bb4f02815260048101969096529051921693637c80bb4f93602480830194928390030190829087803b158015611b2757600080fd5b505af1158015611b3b573d6000803e3d6000fd5b505050506040513d6020811015611b5157600080fd5b5051606086015260808501819052600060a086018190526003805460019081018255949094018082526008602052604090912042940184905592611b9d90610e1063ffffffff611bc216565b6000938452600860205260408420600181019190915560060192909255509192915050565b81810182811015611c1d576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820616464206661696c656400000000000000000000000000604482015290519081900360640190fd5b92915050565b60048054600101808255600160a060020a03831660008181526005602090815260408083208590559382526006905291909120805473ffffffffffffffffffffffffffffffffffffffff1916909117905554919050565b60038054600081815260086020526040902090910154429081118015611ce2575060008281526008602052604090206001015481111580611ce2575060008281526008602052604090206001015481118015611ce25750600082815260086020526040902054155b15611d1857611cf4846110e988611fa1565b600087815260066020526040902060030155611d13828786888761179a565b610a7e565b60008281526008602052604090206001015481118015611d4a575060008281526008602052604090206002015460ff16155b15610a7e576000828152600860205260409020600201805460ff19166001179055611d7483611a3f565b8051670de0b6b3a764000083020181526020808201805189019052600254600089815260068352604080822054815160e060020a637c80bb4f028152600160a060020a03918216600482015291519598507ff9e13fe0fdf5dca9b8895e9926aab1d1dde7592bc7df30f758fa7f51dc93f5c99533959190941693637c80bb4f936024808501948390030190829087803b158015611e1057600080fd5b505af1158015611e24573d6000803e3d6000fd5b505050506040513d6020811015611e3a57600080fd5b8101908080519060200190929190505050856000015186602001518760400151886060015189608001518a60a001516040518089600160a060020a0316600160a060020a03168152602001886000191660001916815260200187815260200186815260200185600160a060020a0316600160a060020a0316815260200184600019166000191681526020018381526020018281526020019850505050505050505060405180910390a1505050505050565b6000611f11611f08611f03858563ffffffff61207616565b611f18565b6110e985611f18565b9392505050565b6000611f2b670de0b6b3a76400006128ea565b611f916002611f5e611f4b86670de0b6b3a764000063ffffffff6121c916565b65886c8f6730709063ffffffff6121c916565b811515611f6757fe5b04611f85611f74866128ea565b6304a817c89063ffffffff6121c916565b9063ffffffff611bc216565b811515611f9a57fe5b0492915050565b6000818152600660205260408120600501548190611fc09084906128f6565b600083815260066020526040902060048101546003820154600290920154611ff292611f85919063ffffffff611bc216565b90506000811115611c1d57600083815260066020526040812060028101829055600381018290556004015592915050565b60008281526007602081815260408084208585528252808420600101546008909252832090910154670de0b6b3a764000091612065919063ffffffff6121c916565b81151561206e57fe5b049392505050565b6000828211156120d0576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820737562206661696c656400000000000000000000000000604482015290519081900360640190fd5b50900390565b600082815260076020818152604080842085855282528084206002810154600190910154600890935290842090920154611f119291670de0b6b3a76400009161211e916121c9565b81151561212757fe5b049063ffffffff61207616565b6000611f1161214284612155565b6110e9612155868663ffffffff611bc216565b60006309502f90611f916d03b2a1d15167e7c5699bfde000006110e96121c47a0dac7055469777a6122ee4310dd6c14410500f2904840000000000611f856b01027e72f1f12813088000006121b88a670de0b6b3a764000063ffffffff6121c916565b9063ffffffff6121c916565b61298c565b60008215156121da57506000611c1d565b508181028183828115156121ea57fe5b0414611c1d576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d617468206d756c206661696c656400000000000000000000000000604482015290519081900360640190fd5b612248612b2e565b6000838152600660205260409020600501541561227c5760008381526006602052604090206005015461227c9084906128f6565b506003546000838152600660205260409020600501558051600a0181528092915050565b600081815260086020526040812060010154429190821180156122cf5750600083815260086020526040902054155b156122ed576122e66107088363ffffffff611bc216565b9050612315565b600083815260086020526040902060010154612312906107089063ffffffff611bc216565b90505b6123286203f4808363ffffffff611bc216565b81101561234857600083815260086020526040902060010181905561236e565b61235b6203f4808363ffffffff611bc216565b6000848152600860205260409020600101555b505050565b61237b612b2e565b6000805460405160148704918391600160a060020a03909116906108fc84150290849084818181858888f193505050501580156123bc573d6000803e3d6000fd5b5050600a86048588148015906123d157508515155b1561255a576000868152600660205260409020600401546123f990829063ffffffff611bc216565b60066000888152602001908152602001600020600401819055508789877f590bbc0fc16915a85269a48f74783c39842b7ae9eceb7c295c95dbe8b3ec7331600660008b815260200190815260200160002060000160009054906101000a9004600160a060020a0316600260009054906101000a9004600160a060020a0316600160a060020a0316637c80bb4f600660008e815260200190815260200160002060000160009054906101000a9004600160a060020a03166040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b1580156124fa57600080fd5b505af115801561250e573d6000803e3d6000fd5b505050506040513d602081101561252457600080fd5b505160408051600160a060020a0390931683526020830191909152818101879052426060830152519081900360800190a461255e565b8092505b61258c606461257489600f63ffffffff6121c916565b81151561257d57fe5b8591900463ffffffff611bc216565b9250600083111561261f57600160009054906101000a9004600160a060020a0316600160a060020a031663e4fc6b6d846040518263ffffffff1660e060020a0281526004016000604051808303818588803b1580156125ea57600080fd5b505af11580156125fe573d6000803e3d6000fd5b50505060c0870151612619925085915063ffffffff611bc216565b60c08601525b5092979650505050505050565b612634612b2e565b60008080606461264b88603263ffffffff6121c916565b81151561265457fe5b049250612685606461266d89601e63ffffffff6121c916565b81151561267657fe5b8991900463ffffffff61207616565b9650612697878463ffffffff61207616565b91506126a5898985896129df565b905060008111156126c3576126c0838263ffffffff61207616565b92505b6000898152600860205260409020600601546126e990611f85848463ffffffff611bc216565b60008a81526008602052604090206006015560e085015161271190849063ffffffff611bc216565b60e086015250610100840152509095945050505050565b8051670de0b6b3a7640000420201808252600354602080840180518801751aba4714957d300d0e549208b31adb100000000000009093029290920191829052600254600088815260068352604080822054815160e060020a637c80bb4f028152600160a060020a03918216600482015291517f3671a735b2c7f1e43f1ab4385d4c5b480bbff437ad893b703fb0dfdbd24679e29796959190941693637c80bb4f936024808501948390030190829087803b1580156127e557600080fd5b505af11580156127f9573d6000803e3d6000fd5b505050506040513d602081101561280f57600080fd5b81019080805190602001909291905050503387878760400151886060015189608001518a60a001518b60c001518c60e001518d6101000151604051808e81526020018d81526020018c600019166000191681526020018b600160a060020a0316600160a060020a031681526020018a815260200189815260200188600160a060020a0316600160a060020a0316815260200187600019166000191681526020018681526020018581526020018481526020018381526020018281526020019d505050505050505050505050505060405180910390a150505050565b6000611c1d82836121c9565b600061290283836120d6565b9050600081111561236e5760008381526006602052604090206003015461293090829063ffffffff611bc216565b600084815260066020908152604080832060030193909355600781528282208583529052206002015461296a90829063ffffffff611bc216565b6000848152600760209081526040808320868452909152902060020155505050565b600080600261299c846001611bc2565b8115156129a557fe5b0490508291505b818110156106355780915060026129ce82858115156129c757fe5b0483611bc2565b8115156129d757fe5b0490506129ac565b60008481526008602052604081206004015481908190612a0d86670de0b6b3a764000063ffffffff6121c916565b811515612a1657fe5b6000898152600860205260409020600701549190049250612a3e90839063ffffffff611bc216565b600088815260086020526040902060070155670de0b6b3a7640000612a69838663ffffffff6121c916565b811515612a7257fe5b60008881526007602081815260408084208d855282528084206002015460089092529092200154929091049250612ac391611f85908490670de0b6b3a76400009061211e908a63ffffffff6121c916565b60008781526007602090815260408083208b8452825280832060020193909355600890522060040154612b2390670de0b6b3a764000090612b0b90859063ffffffff6121c916565b811515612b1457fe5b8791900463ffffffff61207616565b979650505050505050565b6101206040519081016040528060008152602001600081526020016000600160a060020a0316815260200160008019168152602001600081526020016000815260200160008152602001600081526020016000815250905600a165627a7a72305820e9550dab6466b194a0a4fdf7a799692a641fc77d80ccad32e7b8d508410296790029

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

000000000000000000000000006f58215dadb1ed27446aa132b622ebdf5b4cca000000000000000000000000eb6aaeff15f1faa7acecb0627364294fb085fbab00000000000000000000000098a32ffc3c90d24236b32090498e1a241b3d257c

-----Decoded View---------------
Arg [0] : usernameAddress (address): 0x006f58215dadB1ed27446aA132B622EBdF5b4CCa
Arg [1] : cubeAddress (address): 0xeB6aAEff15f1faA7aCeCB0627364294fb085fbab
Arg [2] : comAddress (address): 0x98a32fFC3c90D24236B32090498E1a241b3d257c

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000006f58215dadb1ed27446aa132b622ebdf5b4cca
Arg [1] : 000000000000000000000000eb6aaeff15f1faa7acecb0627364294fb085fbab
Arg [2] : 00000000000000000000000098a32ffc3c90d24236b32090498e1a241b3d257c


Deployed Bytecode Sourcemap

4593:35439:0:-;;;;;;;;;-1:-1:-1;;;4593:35439:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8887:48;;:::i;:::-;9016:12;7987:9;8000:10;7987:23;7979:32;;;;;;8752:9;8168:10;8160:18;;;8152:64;;;;;-1:-1:-1;;;;;8152:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8243:24;8235:32;;;8227:59;;;;;-1:-1:-1;;;;;8227:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8938:25;8951:11;8938:12;:25::i;:::-;9041:10;9031:21;;;;:9;:21;;;;;;;;;9109:11;;;:5;:11;;;;;;:16;;8887:76;;-1:-1:-1;9031:21:0;-1:-1:-1;9095:44:0;;9031:21;;8887:76;9095:7;:44::i;:::-;8022:1;8698:449;;4593:35439;10963:1279;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10963:1279:0;-1:-1:-1;;;;;10963:1279:0;;;;;;;;;15427:582;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15427:582:0;;;;;;;;;;;;;;;;;;;;5087:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5087:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5087:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6064:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6064:45:0;-1:-1:-1;;;;;6064:45:0;;;;;6557:57;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6557:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29321:553;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;29321:553:0;;;;;12313:2198;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12313:2198:0;;;;5953:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5953:19:0;;;;5871;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5871:19:0;;;;16824:1447;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16824:1447:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18979:870;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18979:870:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18979:870:0;;;;;;;;;;;;;;;;;;;;;;28634:491;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;28634:491:0;;;;;;;5134:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5134:38:0;;;;6335:88;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6335:88:0;;;;;;;9321:1304;;-1:-1:-1;;;;;9321:1304:0;;;;;16179:473;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16179:473:0;;;;14954:315;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14954:315:0;;;;6208:57;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6208:57:0;;;;;;;;;-1:-1:-1;;;;;6208:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6662:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6662:22:0;;;;20273:831;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;20273:831:0;-1:-1:-1;;;;;20273:831:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30223:538;30330:29;;:::i;:::-;30409:10;30384:12;30399:21;;;:9;:21;;;;;;30437:9;;30433:280;;;30472:4;:6;;;;;;;;;;30503:10;30472:4;30493:21;;;:9;:21;;;;;;;;:28;;;30536:11;;;:5;:11;;;;;;:29;;-1:-1:-1;;30536:29:0;;;;;;;30671:26;;:30;30642:59;;30433:280;30741:11;30733:20;;30223:538;;;;;:::o;21571:1844::-;21744:4;;;21729:12;21862;;;:6;:12;;;;;:17;;;;21806:3;;21855:24;;:109;;;;-1:-1:-1;21892:12:0;;;;:6;:12;;;;;:16;;;21884:24;;;;:79;;-1:-1:-1;21920:12:0;;;;:6;:12;;;;;:16;;;21913:23;;:49;;;;-1:-1:-1;21940:12:0;;;;:6;:12;;;;;:17;:22;21913:49;21851:1557;;;22018:48;22023:4;22029;22035:9;22046:6;22054:11;22018:4;:48::i;:::-;21851:1557;;;22218:12;;;;:6;:12;;;;;:16;;;22211:23;;:54;;;;-1:-1:-1;22238:12:0;;;;:6;:12;;;;;:18;;;;;:27;22211:54;22207:1071;;;22370:12;;;;:6;:12;;;;;:18;;:25;;-1:-1:-1;;22370:25:0;22391:4;22370:25;;;22428:21;22437:11;22428:8;:21::i;:::-;22552:26;;22589:19;22582:26;;22552:57;22523:86;;22656:25;;;;;;:32;;22628:60;;22889:8;;22552:26;22915:11;;;:5;:11;;;;;;:16;22889:43;;-1:-1:-1;;;;;22889:43:0;;-1:-1:-1;;;;;22915:16:0;;;22889:43;;;;;;22414:35;;-1:-1:-1;22781:481:0;;22855:10;;22889:8;;;;;:25;;:43;;;;;;;;;;;;:8;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;22889:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22889:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22889:43:0;;;;;;;;;;;;;;;;22956:9;22989:11;:26;;;23039:11;:25;;;23088:11;:22;;;23134:11;:22;;;23180:11;:21;;;23225:11;:18;;;22781:481;;;;-1:-1:-1;;;;;22781:481:0;-1:-1:-1;;;;;22781:481:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22781:481:0;-1:-1:-1;;;;;22781:481:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22207:1071;23366:11;;;;:5;:11;;;;;:15;;;:30;;23386:9;23366:30;:19;:30;:::i;:::-;23348:11;;;;:5;:11;;;;;:15;;:48;21851:1557;21571:1844;;;;;:::o;10963:1279::-;11134:48;;:::i;:::-;11231:12;;7987:9;8000:10;7987:23;7979:32;;;;;;11059:4;8168:10;8160:18;;;8152:64;;;;;-1:-1:-1;;;;;8152:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8243:24;8235:32;;;8227:59;;;;;-1:-1:-1;;;;;8227:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11256:10;11246:21;;;;:9;:21;;;;;;;-1:-1:-1;;;;;;11438:22:0;;;;:48;;-1:-1:-1;;;;;;11464:22:0;;11476:10;11464:22;11438:48;11434:713;;;11568:11;;;;:5;:11;;;;;;;;:16;;;-1:-1:-1;11434:713:0;;;-1:-1:-1;;;;;11728:19:0;;;;;;:9;:19;;;;;;;-1:-1:-1;11829:11:0;;11825:87;;;11870:26;11887:8;11870:16;:26::i;:::-;11861:35;;11825:87;12003:11;;;;:5;:11;;;;;;;;:16;;11993:26;;11989:147;;12095:11;;;;:5;:11;;;;;;;;:16;:25;;;11989:147;12191:43;12202:4;12208:6;12216:4;12222:11;12191:10;:43::i;:::-;8022:1;10963:1279;;;;;:::o;15427:582::-;15569:4;;;15499:7;15697:12;;;:6;:12;;;;;:17;;;;15631:3;;15690:24;;:109;;;;-1:-1:-1;15727:12:0;;;;:6;:12;;;;;:16;;;15719:24;;;;:79;;-1:-1:-1;15755:12:0;;;;:6;:12;;;;;:16;;;15748:23;;:49;;;;-1:-1:-1;15775:12:0;;;;:6;:12;;;;;:17;:22;15748:49;15686:307;;;15824:12;;;;:6;:12;;;;;:17;;;15823:72;;15875:19;;15824:42;;15875:19;15824:42;:21;:42;:::i;:::-;15823:51;:72;:51;:72;:::i;:::-;15814:83;;;;15686:307;15977:14;15968:25;;15686:307;15427:582;;;:::o;5087:40::-;;;;;;;;;;;;;;;;;;;:::o;6064:45::-;;;;;;;;;;;;;:::o;6557:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;29321:553::-;29471:4;;;29403:7;29599:12;;;:6;:12;;;;;:17;;;;29533:3;;29592:24;;:109;;;;-1:-1:-1;29629:12:0;;;;:6;:12;;;;;:16;;;29621:24;;;;:79;;-1:-1:-1;29657:12:0;;;;:6;:12;;;;;:16;;;29650:23;;:49;;;;-1:-1:-1;29677:12:0;;;;:6;:12;;;;;:17;:22;29650:49;29588:278;;;29726:12;;;;:6;:12;;;;;:17;;;29725:44;;29763:5;;29726:28;;29763:5;29726:28;:21;:28;:::i;29725:44::-;29716:55;;;;29588:278;29851:13;29852:5;29851:11;:13::i;29588:278::-;29321:553;;;;;:::o;12313:2198::-;12413:12;12475;12542;12641;12902:48;;:::i;:::-;7987:9;8000:10;7987:23;7979:32;;;;;;12428:4;;12567:10;12557:21;;;;:9;:21;;;;;;;;;12762:12;;;:6;:12;;;;;;:16;;;12428:4;;-1:-1:-1;12490:3:0;;-1:-1:-1;12557:21:0;-1:-1:-1;12755:23:0;;:54;;;;-1:-1:-1;12782:12:0;;;;:6;:12;;;;;:18;;;;;:27;12755:54;:80;;;;-1:-1:-1;12813:12:0;;;;:6;:12;;;;;:17;:22;;12755:80;12751:1753;;;13027:12;;;;:6;:12;;;;;:18;;:25;;-1:-1:-1;;13027:25:0;13048:4;13027:25;;;13081:21;13090:11;13081:8;:21::i;:::-;13067:35;;13173:22;13190:4;13173:16;:22::i;:::-;13166:29;;13260:1;13253:4;:8;13249:62;;;13280:11;;;;:5;:11;;;;;;:16;:31;;-1:-1:-1;;;;;13280:16:0;;;;:31;;;;;13306:4;;13280:31;:11;:31;13306:4;13280:16;:31;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13280:31:0;13249:62;13406:26;;13443:19;13436:26;;13406:57;13377:86;;13506:25;;;;;;:32;;13478:60;;13724:8;;13406:26;13750:11;;;:5;:11;;;;;;:16;13724:43;;-1:-1:-1;;;;;13724:43:0;;-1:-1:-1;;;;;13750:16:0;;;13724:43;;;;;;13623:437;;13694:10;;13724:8;;;;;:25;;:43;;;;;13506:25;13724:43;;;;;;;;;:8;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;13724:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13724:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13724:43:0;13811:26;;13724:43;13857:25;;;;13902:22;;;;;13944;;;;;13986:21;;;;;14027:18;;;;;13623:437;;-1:-1:-1;;;;;13623:437:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12751:1753;;;14184:22;14201:4;14184:16;:22::i;:::-;14177:29;;14271:1;14264:4;:8;14260:62;;;14291:11;;;;:5;:11;;;;;;:16;:31;;-1:-1:-1;;;;;14291:16:0;;;;:31;;;;;14317:4;;14291:31;:11;:31;14317:4;14291:16;:31;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14291:31:0;14260:62;14436:8;;;14462:11;;;:5;:11;;;;;;;;:16;14436:43;;-1:-1:-1;;;;;14436:43:0;;-1:-1:-1;;;;;14462:16:0;;;14436:43;;;;;;14418:4;;14392:100;;14424:10;;14436:8;;;;;:25;;:43;;;;;14462:11;;14436:43;;;;;;;;;:8;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;14436:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14436:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14436:43:0;14392:100;;;-1:-1:-1;;;;;14392:100:0;;;;;14436:43;14392:100;;;;;;;;;;;;;;;;;;;;;;;;;;;12313:2198;;;;;:::o;5953:19::-;;;;:::o;5871:::-;;;;:::o;16824:1447::-;16996:4;;16910:7;17138:12;;;:6;:12;;;;;:16;;;16910:7;;;;;;16996:4;17132:3;:22;:53;;;;-1:-1:-1;17158:12:0;;;;:6;:12;;;;;:18;;;;;:27;17132:53;:79;;;;-1:-1:-1;17189:12:0;;;;:6;:12;;;;;:17;:22;;17132:79;17128:1136;;;17278:12;;;;:6;:12;;;;;:17;:25;;17274:657;;;17406:12;;;;:6;:12;;;;;;;;:16;;;;;17385:11;;;;;;;;:15;;;17384:39;;;:21;:39;:::i;:::-;17508:15;;;;:9;:15;;;;;;;;:21;;;;;;;;:26;;;17446:93;;17470:65;;:33;17518:4;17524;17470:21;:33::i;:::-;:37;:65;:37;:65;:::i;:::-;17447:11;;;;:5;:11;;;;;:15;;;;17446:93;:21;:93;:::i;:::-;17562:11;;;;:5;:11;;;;;:15;;;17337:259;;-1:-1:-1;17337:259:0;-1:-1:-1;17562:15:0;-1:-1:-1;17337:259:0;;17274:657;17728:11;;;;:5;:11;;;;;;;;:15;;;;;17828:9;:15;;;;;:21;;;;;;;;:26;;;;17766:92;;17790:65;;:33;17734:4;17844;17790:21;:33::i;17128:1136::-;18102:11;;;;:5;:11;;;;;:15;;;;18185:16;;;;;18136:67;;18158:44;;18108:4;;18158:20;:44::i;17128:1136::-;16824:1447;;;;;;:::o;18979:870::-;19188:4;;;19057:7;19319:12;;;:6;:12;;;;;;;;:17;;;;;19394:16;;;;19469:17;;;;19544:16;;;;;19625:17;;19619:24;;;;;;;:29;19694:8;;:56;;-1:-1:-1;;;;;19694:56:0;;-1:-1:-1;;;;;19619:29:0;;;19694:56;;;;;;;;19057:7;;;;;;;;;;;;;;;;19188:4;;;;19319:17;;19469;;19544:16;;19619:29;;19694:8;;;:25;;:56;;;;;19319:12;;19694:56;;;;;19057:7;19694:8;:56;;;5:2:-1;;;;30:1;27;20:12;5:2;19694:56:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19694:56:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19694:56:0;19769:7;;19213:628;;-1:-1:-1;19213:628:0;;-1:-1:-1;19213:628:0;;-1:-1:-1;19213:628:0;;-1:-1:-1;19213:628:0;-1:-1:-1;19213:628:0;-1:-1:-1;19694:56:0;-1:-1:-1;19769:7:0;-1:-1:-1;18979:870:0;;;;;;;;;:::o;28634:491::-;28735:7;28863:12;;;:6;:12;;;;;:17;;;28797:3;;28856:24;;:109;;;;-1:-1:-1;28893:12:0;;;;:6;:12;;;;;:16;;;28885:24;;;;:79;;-1:-1:-1;28921:12:0;;;;:6;:12;;;;;:16;;;28914:23;;:49;;;;-1:-1:-1;28941:12:0;;;;:6;:12;;;;;:17;:22;28914:49;28852:265;;;28990:12;;;;:6;:12;;;;;:16;;;28989:32;;29016:4;28989:32;:26;:32;:::i;:::-;28980:43;;;;28852:265;29102:13;29103:4;29102:11;:13::i;28852:265::-;28634:491;;;;;:::o;5134:38::-;;;;;;;;;;;;;;;;;;;:::o;6335:88::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9321:1304::-;9535:48;;:::i;:::-;9660:12;;7987:9;8000:10;7987:23;7979:32;;;;;;9400:9;8168:10;8160:18;;;8152:64;;;;;-1:-1:-1;;;;;8152:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8243:24;8235:32;;;8227:59;;;;;-1:-1:-1;;;;;8227:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9586:25;9599:11;9586:12;:25::i;:::-;9685:10;9675:21;;;;:9;:21;;;;;;9535:76;;-1:-1:-1;9675:21:0;-1:-1:-1;;;;;;9867:22:0;;;;:48;;-1:-1:-1;;;;;;9893:22:0;;9905:10;9893:22;9867:48;9863:678;;;9997:11;;;;:5;:11;;;;;;;;:16;;;-1:-1:-1;9863:678:0;;;-1:-1:-1;;;;;10157:19:0;;;;;;:9;:19;;;;;;;-1:-1:-1;10209:11:0;;10205:87;;;10250:26;10267:8;10250:16;:26::i;:::-;10241:35;;10205:87;10397:11;;;;:5;:11;;;;;;;;:16;;10387:26;;10383:147;;10489:11;;;;:5;:11;;;;;;;;:16;:25;;;10383:147;10583:34;10591:4;10597:6;10605:11;10583:7;:34::i;16179:473::-;16317:4;;16249:7;16414:12;;;:6;:12;;;;;:16;;;16249:7;;16317:4;16379:3;;16407:23;;16403:241;;;16456:12;;;;:6;:12;;;;;:17;;;16449:24;;16445:161;;;16501:12;;;;:6;:12;;;;;:16;;;16500:28;;16523:4;16500:28;:22;:28;:::i;16445:161::-;16576:12;;;;:6;:12;;;;;:17;;;16575:29;;16599:4;16575:29;:23;:29;:::i;16403:241::-;16642:1;16635:9;;;;14954:315;15101:4;;15031:7;15162:12;;;:6;:12;;;;;:16;;;15031:7;;15101:4;15206:55;15214:19;15207:26;;15239:21;15206:32;:55::i;:::-;15199:62;;14954:315;;;:::o;6208:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6208:57:0;;;;;;;;;;;;;:::o;6662:22::-;;;;:::o;20273:831::-;20491:4;;-1:-1:-1;;;;;20621:16:0;;;20369:7;20621:16;;;:9;:16;;;;;;;;;20742:8;;:32;;-1:-1:-1;;;;;20742:32:0;;;;;;;;;;;20369:7;;;;;;;;;;;;;;20621:16;;;20742:8;;;:25;;:32;;;;;20621:16;;20742:32;;;;;;20369:7;20742:8;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;20742:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20742:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20742:32:0;20795:15;;;;:9;20742:32;20795:15;;;;;;;:21;;;;;;;;:26;;;20848:11;;;:5;:11;;;;;;:15;;;;20950:16;;;;;20901:67;;20923:44;;20805:4;;20923:20;:44::i;:::-;20902:11;;;;:5;:11;;;;;:15;;;;20901:67;:21;:67;:::i;:::-;20993:11;;;;:5;:11;;;;;;;;:15;;;21046:9;:15;;;;;:21;;;;;;;;;;:25;20658:438;;;;-1:-1:-1;20658:438:0;;-1:-1:-1;20658:438:0;-1:-1:-1;20658:438:0;;-1:-1:-1;20993:15:0;;-1:-1:-1;21046:25:0;;-1:-1:-1;20273:831:0;-1:-1:-1;;20273:831:0:o;25602:2141::-;26078:23;25799:15;;;:9;:15;;;;;;;;:21;;;;;;;;:26;;;26078:23;;;;25799:31;25795:95;;;25859:31;25872:4;25878:11;25859:12;:31::i;:::-;25845:45;;25795:95;25952:12;;;;:6;:12;;;;;:16;;;25971:20;-1:-1:-1;25952:100:0;;;;-1:-1:-1;25995:15:0;;;;:9;:15;;;;;;;;:21;;;;;;;;:25;26033:19;;25995:35;;26025:4;25995:35;:29;:35;:::i;:::-;:57;25952:100;25948:376;;;26130:15;;;;:9;:15;;;;;;;;:21;;;;;;;;:25;26104:52;;26105:19;;26104:52;:25;:52;:::i;:::-;26078:78;-1:-1:-1;26189:25:0;:4;26078:78;26189:25;:8;:25;:::i;:::-;26247:11;;;;:5;:11;;;;;:15;;;26171:43;;-1:-1:-1;26247:28:0;;26171:43;26247:28;:19;:28;:::i;:::-;26229:11;;;;:5;:11;;;;;:15;;:46;26297:15;;-1:-1:-1;26297:15:0;;25948:376;26434:10;26427:4;:17;26423:1313;;;26536:12;;;;:6;:12;;;;;:16;;;26535:32;;26562:4;26535:32;:26;:32;:::i;:::-;26519:48;;26609:19;:17;:19::i;:::-;26600:28;;26596:384;;26662:17;26674:4;26662:11;:17::i;:::-;26740:12;;;;:6;:12;;;;;:17;:25;;26736:76;;26788:12;;;;:6;:12;;;;;:24;;;26736:76;26932:26;;26961:3;26932:32;26903:61;;26596:384;27078:15;;;;:9;:15;;;;;;;;:21;;;;;;;;:26;;;27068:37;;:5;;:37;:9;:37;:::i;:::-;27039:15;;;;:9;:15;;;;;;;;:21;;;;;;;;:26;;;:66;;;;27157:25;27148:35;;:4;;:8;:35::i;:::-;27120:15;;;;:9;:15;;;;;;;;:21;;;;;;;;:63;;;;27271:6;:12;;;:17;;;27261:28;;:5;;:28;:9;:28;:::i;:::-;27241:12;;;;:6;:12;;;;;:17;;;:48;;;;27332:16;;;27323:26;;:4;;:26;:8;:26;:::i;:::-;27304:12;;;;:6;:12;;;;;:16;;:45;27383:7;;27374:17;;:4;;:17;:8;:17;:::i;:::-;27364:7;:27;27457:57;27476:4;27482;27488;27494:6;27502:11;27457:18;:57::i;:::-;27443:71;;27543:56;27562:4;27568;27574;27580:5;27587:11;27543:18;:56::i;:::-;27529:70;;27687:37;27693:4;27699;27705:5;27712:11;27687:5;:37::i;:::-;25602:2141;;;;;;;;:::o;32029:1166::-;32132:29;;:::i;:::-;32229:4;;32214:12;32308;;;:6;:12;;;;;;;;:17;;32404:16;;;;;32490:14;;;;;;;;;:18;;;32308:17;;32404:16;32481:28;;32404:16;;32481:28;:8;:28;:::i;:::-;32460:14;;;;:5;:14;;;;;;;;:18;;;;:49;;;;32620:12;;;:6;:12;;;;;:16;;;32590:26;;32639:7;32620:26;;;32590:57;32561:86;;32686:25;;;;;32725:27;32715:37;;32686:67;32658:95;;32789:19;-1:-1:-1;;;;;32789:19:0;;;32764:22;;;:44;;;32844:8;;32870:14;;;;;;32844:46;;-1:-1:-1;;;;;32844:46:0;;;;;;;;;;;:8;;;:25;;:46;;;;;;;;;;;;;:8;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;32844:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32844:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;32844:46:0;32819:22;;;:71;32901:21;;;:28;;;32819:71;32940:18;;;:22;;;33012:4;:6;;;;;;;;33029;;;;33046:12;;;:6;32844:46;33046:12;;;;;33066:3;33046:17;;:23;;;33029:6;33099:17;;5305:7;33099:17;:7;:17;:::i;:::-;33080:12;;;;:6;:12;;;;;:16;;;:36;;;;33127:16;;:20;;;;-1:-1:-1;33175:11:0;;32029:1166;-1:-1:-1;;32029:1166:0:o;45407:198::-;45524:5;;;45548:6;;;;45540:38;;;;;-1:-1:-1;;;;;45540:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;45407:198;;;;:::o;30857:231::-;30967:4;:6;;;;;;;-1:-1:-1;;;;;30984:19:0;;30936:13;30984:19;;;:9;:19;;;;;;;;:26;;;31021:11;;;:5;:11;;;;;;:27;;-1:-1:-1;;31021:27:0;;;;;;31076:4;30857:231;;;:::o;23604:1868::-;23794:4;;;23779:12;23922;;;:6;:12;;;;;:17;;;;23856:3;;23915:24;;:109;;;;-1:-1:-1;23952:12:0;;;;:6;:12;;;;;:16;;;23944:24;;;;:79;;-1:-1:-1;23980:12:0;;;;:6;:12;;;;;:16;;;23973:23;;:49;;;;-1:-1:-1;24000:12:0;;;;:6;:12;;;;;:17;:22;23973:49;23911:1554;;;24287:32;24314:4;24287:22;24304:4;24287:16;:22::i;:32::-;24269:11;;;;:5;:11;;;;;:15;;:50;24375:43;24380:4;24275;24392;24398:6;24406:11;24375:4;:43::i;:::-;23911:1554;;;24525:12;;;;:6;:12;;;;;:16;;;24518:23;;:54;;;;-1:-1:-1;24545:12:0;;;;:6;:12;;;;;:18;;;;;:27;24518:54;24514:951;;;24655:12;;;;:6;:12;;;;;:18;;:25;;-1:-1:-1;;24655:25:0;24676:4;24655:25;;;24709:21;24718:11;24709:8;:21::i;:::-;24825:26;;24862:19;24855:26;;24825:57;24796:86;;24925:25;;;;;;:32;;24897:60;;25141:8;;24825:26;25167:11;;;:5;:11;;;;;;:16;25141:43;;-1:-1:-1;;;;;25141:43:0;;-1:-1:-1;;;;;25167:16:0;;;25141:43;;;;;;24695:35;;-1:-1:-1;25042:411:0;;25111:10;;25141:8;;;;;:25;;:43;;;;;;;;;;;;:8;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;25141:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25141:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25141:43:0;;;;;;;;;;;;;;;;25204:11;:26;;;25250:11;:25;;;25295:11;:22;;;25337:11;:22;;;25379:11;:21;;;25420:11;:18;;;25042:411;;;;-1:-1:-1;;;;;25042:411:0;-1:-1:-1;;;;;25042:411:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25042:411:0;-1:-1:-1;;;;;25042:411:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23604:1868;;;;;;:::o;42698:193::-;42801:7;42833:49;42853:28;42857:23;:8;42870:9;42857:23;:12;:23;:::i;:::-;42853:3;:28::i;:::-;42834:13;42838:8;42834:3;:13::i;42833:49::-;42826:57;42698:193;-1:-1:-1;;;42698:193:0:o;43602:246::-;43680:7;43813:26;43814:19;43813:24;:26::i;:::-;43715:93;43805:1;43747:53;43769:30;:5;43779:19;43769:30;:9;:30;:::i;:::-;43748:15;;43747:53;:21;:53;:::i;:::-;43746:61;;;;;;;;43715:26;43730:10;:5;:8;:10::i;:::-;43716:8;;43715:26;:14;:26;:::i;:::-;:30;:93;:30;:93;:::i;:::-;43714:126;;;;;;;;;43602:246;-1:-1:-1;;43602:246:0:o;38546:481::-;38620:7;38695:11;;;:5;:11;;;;;:16;;;38620:7;;38674:38;;38689:4;;38674:14;:38::i;:::-;38821:11;;;;:5;:11;;;;;:15;;;;38800;;;;38779;;;;;38778:59;;:38;;38779:15;38778:38;:21;:38;:::i;:59::-;38758:79;;38864:1;38852:9;:13;38848:142;;;38909:1;38891:11;;;:5;:11;;;;;:15;;;:19;;;38925:15;;;:19;;;38959:15;;:19;39009:9;38546:481;-1:-1:-1;;38546:481:0:o;18369:218::-;18476:7;18530:15;;;:9;:15;;;;;;;;:21;;;;;;;;:26;;;18508:6;:12;;;;;:17;;;;18560:19;;18508:49;;:17;:49;:21;:49;:::i;:::-;:71;;;;;;;;;18369:218;-1:-1:-1;;;18369:218:0:o;45152:180::-;45237:7;45271:6;;;;45263:38;;;;;-1:-1:-1;;;;;45263:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;45319:5:0;;;45152:180::o;28124:278::-;28234:7;28360:15;;;:9;:15;;;;;;;;:25;;;;;;;;:30;;;;28298;;;;;28271:6;:16;;;;;;:21;;;;28268:123;;28360:30;28334:19;;28270:59;;:27;:59::i;:::-;28269:85;;;;;;;;;28268:123;:91;:123;:::i;42257:189::-;42358:7;42390:47;42423:13;42428:7;42423:4;:13::i;:::-;42390:28;42395:22;42396:7;42409;42395:22;:13;:22;:::i;:::-;43159:7;43384:9;43192:187;43346:32;43193:147;43194:138;43267:64;43195:66;43233:27;43196:31;43197:4;43207:19;43196:31;:10;:31;:::i;:::-;43195:37;:66;:37;:66;:::i;43194:138::-;43193:145;:147::i;44765:262::-;44853:9;44885:6;;44881:47;;;-1:-1:-1;44915:1:0;44908:8;;44881:47;-1:-1:-1;44942:5:0;;;44946:1;44942;:5;44966;;;;;;;;:10;44958:42;;;;;-1:-1:-1;;;;;44958:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;31279:648;31400:29;;:::i;:::-;31580:11;;;;:5;:11;;;;;:16;;;:21;31576:78;;31637:11;;;;:5;:11;;;;;:16;;;31616:38;;31631:4;;31616:14;:38::i;:::-;-1:-1:-1;31744:4:0;;31725:11;;;;:5;:11;;;;;:16;;:23;31848:26;;31877:2;31848:31;31819:60;;31848:11;31279:648;;;;:::o;33839:597::-;33929:12;34064;;;:6;:12;;;;;:16;;;33944:3;;33929:12;34057:23;;:49;;;;-1:-1:-1;34084:12:0;;;;:6;:12;;;;;:17;:22;34057:49;34053:165;;;34132:17;5399:10;34144:4;34132:17;:11;:17;:::i;:::-;34121:28;;34053:165;;;34201:12;;;;:6;:12;;;;;:16;;;34189:29;;5399:10;;34189:29;:11;:29;:::i;:::-;34178:40;;34053:165;34302:19;5513:8;34316:4;34302:19;:13;:19;:::i;:::-;34291:8;:30;34287:141;;;34336:12;;;;:6;:12;;;;;:16;;:27;;;34287:141;;;34411:17;5513:8;34423:4;34411:17;:11;:17;:::i;:::-;34392:12;;;;:6;:12;;;;;:16;;:36;34287:141;33839:597;;;:::o;34527:1158::-;34697:29;;:::i;:::-;34758:13;34860:11;;:26;;34847:2;34840:9;;;34758:13;;-1:-1:-1;;;;;34860:11:0;;;;:26;;;;;34840:9;;34758:13;34860:26;34758:13;34860:26;34840:9;34860:11;:26;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;34969:2:0;34962:9;;34996:14;;;;;;:29;;-1:-1:-1;35014:11:0;;;34996:29;34992:304;;;35071:13;;;;:5;:13;;;;;:17;;;35062:27;;:4;;:27;:8;:27;:::i;:::-;35042:5;:13;35048:6;35042:13;;;;;;;;;;;:17;;:47;;;;35223:4;35217;35142:6;35109:130;35150:5;:13;35156:6;35150:13;;;;;;;;;;;:18;;;;;;;;;;-1:-1:-1;;;;;35150:18:0;35170:8;;;;;;;;;-1:-1:-1;;;;;35170:8:0;-1:-1:-1;;;;;35170:25:0;;35196:5;:13;35202:6;35196:13;;;;;;;;;;;:18;;;;;;;;;;-1:-1:-1;;;;;35196:18:0;35170:45;;;;;-1:-1:-1;;;35170:45:0;;;;;;;-1:-1:-1;;;;;35170:45:0;-1:-1:-1;;;;;35170:45:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35170:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35170:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;35170:45:0;35109:130;;;-1:-1:-1;;;;;35109:130:0;;;;;35170:45;35109:130;;;;;;;;;;;;35235:3;35109:130;;;;;;;;;;;;;34992:304;;;35280:4;35272:12;;34992:304;35357:33;35385:3;35368:12;:4;35377:2;35368:12;:8;:12;:::i;:::-;35367:22;;;;;;;35357:5;;35367:22;;35357:33;:9;:33;:::i;:::-;35349:41;;35413:1;35405:5;:9;35401:237;;;35475:4;;;;;;;;;-1:-1:-1;;;;;35475:4:0;-1:-1:-1;;;;;35475:15:0;;35497:5;35475:30;;;;;-1:-1:-1;;;35475:30:0;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35475:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;35603:22:0;;;;35593:33;;-1:-1:-1;35593:5:0;;-1:-1:-1;35593:33:0;:9;:33;:::i;:::-;35568:22;;;:58;35401:237;-1:-1:-1;35665:11:0;;34527:1158;-1:-1:-1;;;;;;;34527:1158:0:o;35769:1068::-;35938:29;;:::i;:::-;36025:12;;;36057:3;36041:12;:4;36050:2;36041:12;:8;:12;:::i;:::-;36040:20;;;;;;;;;-1:-1:-1;36188:30:0;36214:3;36198:12;:4;36207:2;36198:12;:8;:12;:::i;:::-;36197:20;;;;;;;36188:4;;36197:20;;36188:30;:8;:30;:::i;:::-;36181:37;-1:-1:-1;36281:14:0;36181:37;36290:4;36281:14;:8;:14;:::i;:::-;36266:29;;36439:36;36451:4;36457;36463;36469:5;36439:11;:36::i;:::-;36423:52;;36498:1;36490:5;:9;36486:50;;;36521:15;:4;36530:5;36521:15;:8;:15;:::i;:::-;36514:22;;36486:50;36627:12;;;;:6;:12;;;;;:16;;;36607:37;;:15;:4;36616:5;36607:15;:8;:15;:::i;:37::-;36588:12;;;;:6;:12;;;;;:16;;:56;36728:21;;;;36719:31;;:4;;:31;:8;:31;:::i;:::-;36695:21;;;:55;-1:-1:-1;36761:21:0;;;:28;-1:-1:-1;36695:21:0;;35769:1068;-1:-1:-1;;;;;35769:1068:0:o;39135:894::-;39305:26;;39341:19;39335:3;:25;39305:56;39276:85;;;39436:4;;39400:25;;;;;;:32;;39443:53;39436:60;;;39400:97;;;;39372:125;;;;39651:8;;39305:26;39677:11;;;:5;:11;;;;;;:16;39651:43;;-1:-1:-1;;;;;39651:43:0;;-1:-1:-1;;;;;39677:16:0;;;39651:43;;;;;;39523:498;;39305:56;39400:97;39651:8;;;;;:25;;:43;;;;;;;;;;;;:8;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;39651:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;39651:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;39651:43:0;;;;;;;;;;;;;;;;39709:10;39734:4;39753:5;39773:11;:22;;;39810:11;:22;;;39847:11;:21;;;39883:11;:18;;;39916:11;:22;;;39953:11;:21;;;39989:11;:21;;;39523:498;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;39523:498:0;-1:-1:-1;;;;;39523:498:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;39523:498:0;-1:-1:-1;;;;;39523:498:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39135:894;;;;:::o;46015:123::-;46088:7;46121:8;46125:1;46127;46121:3;:8::i;33303:450::-;33393:17;33413:36;33434:4;33440:8;33413:20;:36::i;:::-;33393:56;;33476:1;33464:9;:13;33460:286;;;33568:11;;;;:5;:11;;;;;:15;;;33554:30;;:9;;:30;:13;:30;:::i;:::-;33536:11;;;;:5;:11;;;;;;;;:15;;:48;;;;33703:9;:15;;;;;:25;;;;;;:30;;;33689:45;;:9;;:45;:13;:45;:::i;:::-;33656:15;;;;:9;:15;;;;;;;;:25;;;;;;;;:30;;:78;33303:450;;;:::o;45678:262::-;45753:9;45781;45807:1;45795:8;45799:1;45801;45795:3;:8::i;:::-;45794:14;;;;;;;;45781:28;;45824:1;45820:5;;45836:97;45847:1;45843;:5;45836:97;;;45879:1;45875:5;;45919:1;45901:14;45910:1;45906;:5;;;;;;;;45913:1;45901:3;:14::i;:::-;45900:20;;;;;;;;45895:26;;45836:97;;36968:1432;37080:7;37821:12;;;:6;:12;;;;;:17;;;37080:7;;;;37787:29;:4;37796:19;37787:29;:8;:29;:::i;:::-;37786:53;;;;;;;37879:12;;;;:6;:12;;;;;:17;;;37786:53;;;;-1:-1:-1;37870:27:0;;37786:53;;37870:27;:8;:27;:::i;:::-;37850:12;;;;:6;:12;;;;;:17;;:47;38102:19;38082:15;:4;38091:5;38082:15;:8;:15;:::i;:::-;38081:41;;;;;;;38237:15;;;;:9;:15;;;;;;;;:21;;;;;;;;:26;;;38165:6;:12;;;;;;:17;;38081:41;;;;;-1:-1:-1;38162:102:0;;38163:68;;38081:41;;38198:19;;38165:28;;38187:5;38165:28;:21;:28;:::i;38162:102::-;38133:15;;;;:9;:15;;;;;;;;:21;;;;;;;;:26;;:131;;;;38347:6;:12;;;:17;;;38328:63;;38370:19;;38338:27;;:4;;:27;:8;:27;:::i;:::-;38337:53;;;;;;;38328:4;;38337:53;;38328:63;:8;:63;:::i;:::-;38321:71;36968:1432;-1:-1:-1;;;;;;;36968:1432:0:o;4593:35439::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4593:35439:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://e9550dab6466b194a0a4fdf7a799692a641fc77d80ccad32e7b8d50841029679

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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