ETH Price: $2,384.60 (+2.54%)

Contract

0xBc9CCC8A46d424De38B2E4DF5F4a5001321c5D4C
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Hara Kiri36119542017-04-27 23:22:472701 days ago1493335367IN
0xBc9CCC8A...1321c5D4C
0 ETH0.0002789820
Winner Decided36018692017-04-26 4:28:402702 days ago1493180920IN
0xBc9CCC8A...1321c5D4C
0 ETH0.0019386821.25
Handle Bet36018662017-04-26 4:28:052702 days ago1493180885IN
0xBc9CCC8A...1321c5D4C
0.01 ETH0.0004941813.75
Handle Bet36018662017-04-26 4:28:052702 days ago1493180885IN
0xBc9CCC8A...1321c5D4C
0.01 ETH0.0004941813.75
Handle Bet36018662017-04-26 4:28:052702 days ago1493180885IN
0xBc9CCC8A...1321c5D4C
0.01 ETH0.0004941813.75
Handle Bet36018662017-04-26 4:28:052702 days ago1493180885IN
0xBc9CCC8A...1321c5D4C
0.002 ETH0.0007004313.75
House Keep36018592017-04-26 4:25:332702 days ago1493180733IN
0xBc9CCC8A...1321c5D4C
0 ETH0.00254521.25
Handle Bet36018392017-04-26 4:21:122702 days ago1493180472IN
0xBc9CCC8A...1321c5D4C
0.02 ETH0.0007792821.25
Handle Bet36018382017-04-26 4:20:442702 days ago1493180444IN
0xBc9CCC8A...1321c5D4C
0.01 ETH0.0007792821.25
Handle Bet36018382017-04-26 4:20:442702 days ago1493180444IN
0xBc9CCC8A...1321c5D4C
0.002 ETH0.0010980321.25
Winner Decided36018372017-04-26 4:20:302702 days ago1493180430IN
0xBc9CCC8A...1321c5D4C
0 ETH0.0019231421.25
Start Game36018332017-04-26 4:20:132702 days ago1493180413IN
0xBc9CCC8A...1321c5D4C
0 ETH0.0034156121.25
Handle Bet36018302017-04-26 4:19:302702 days ago1493180370IN
0xBc9CCC8A...1321c5D4C
0.01 ETH0.0004941813.75
Handle Bet36018302017-04-26 4:19:302702 days ago1493180370IN
0xBc9CCC8A...1321c5D4C
0.01 ETH0.0004941813.75
Handle Bet36018302017-04-26 4:19:302702 days ago1493180370IN
0xBc9CCC8A...1321c5D4C
0.01 ETH0.0007792821.25
Handle Bet36018302017-04-26 4:19:302702 days ago1493180370IN
0xBc9CCC8A...1321c5D4C
0.002 ETH0.0007004313.75
Handle Bet36018302017-04-26 4:19:302702 days ago1493180370IN
0xBc9CCC8A...1321c5D4C
0.002 ETH0.0010980321.25
Start Game36018282017-04-26 4:18:552702 days ago1493180335IN
0xBc9CCC8A...1321c5D4C
0 ETH0.0034066521.25
House Keep36017532017-04-26 3:55:172702 days ago1493178917IN
0xBc9CCC8A...1321c5D4C
0 ETH0.0025360321.25
Winner Decided36017482017-04-26 3:54:312702 days ago1493178871IN
0xBc9CCC8A...1321c5D4C
0 ETH0.0019400421.25
Handle Bet36017392017-04-26 3:52:442702 days ago1493178764IN
0xBc9CCC8A...1321c5D4C
0.001 ETH0.0004941813.75
Handle Bet36017392017-04-26 3:52:442702 days ago1493178764IN
0xBc9CCC8A...1321c5D4C
0.002 ETH0.0007004313.75
Handle Bet36017202017-04-26 3:49:002702 days ago1493178540IN
0xBc9CCC8A...1321c5D4C
0.001 ETH0.0007792821.25
Handle Bet36017202017-04-26 3:49:002702 days ago1493178540IN
0xBc9CCC8A...1321c5D4C
0.002 ETH0.0010980321.25
Start Game36017172017-04-26 3:47:252702 days ago1493178445IN
0xBc9CCC8A...1321c5D4C
0 ETH0.0034066521.25
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
36119542017-04-27 23:22:472701 days ago1493335367
0xBc9CCC8A...1321c5D4C
0.0633 ETH
36018692017-04-26 4:28:402702 days ago1493180920
0xBc9CCC8A...1321c5D4C
0.06272 ETH
36018372017-04-26 4:20:302702 days ago1493180430
0xBc9CCC8A...1321c5D4C
0.03332 ETH
36017482017-04-26 3:54:312702 days ago1493178871
0xBc9CCC8A...1321c5D4C
0.00588 ETH
36017172017-04-26 3:47:252702 days ago1493178445
0xBc9CCC8A...1321c5D4C
0.01176 ETH
36017062017-04-26 3:44:092702 days ago1493178249
0xBc9CCC8A...1321c5D4C
0.00588 ETH
36016862017-04-26 3:38:342702 days ago1493177914
0xBc9CCC8A...1321c5D4C
0.00392 ETH
36016622017-04-26 3:30:112702 days ago1493177411
0xBc9CCC8A...1321c5D4C
0.00392 ETH
36016412017-04-26 3:24:362702 days ago1493177076
0xBc9CCC8A...1321c5D4C
0.04312 ETH
36016192017-04-26 3:19:262702 days ago1493176766
0xBc9CCC8A...1321c5D4C
0.00588 ETH
36014542017-04-26 2:41:052702 days ago1493174465
0xBc9CCC8A...1321c5D4C
0.04312 ETH
36013002017-04-26 2:01:552702 days ago1493172115
0xBc9CCC8A...1321c5D4C
0.00392 ETH
36011252017-04-26 1:19:582702 days ago1493169598
0xBc9CCC8A...1321c5D4C
0.00392 ETH
36010612017-04-26 1:00:312703 days ago1493168431
0xBc9CCC8A...1321c5D4C
0.00392 ETH
36009432017-04-26 0:27:122703 days ago1493166432
0xBc9CCC8A...1321c5D4C
0.01568 ETH
36009422017-04-26 0:27:032703 days ago1493166423
0xBc9CCC8A...1321c5D4C
0.03332 ETH
36009012017-04-26 0:15:202703 days ago1493165720
0xBc9CCC8A...1321c5D4C
0.01372 ETH
36009012017-04-26 0:15:202703 days ago1493165720
0xBc9CCC8A...1321c5D4C
0.0098 ETH
36008932017-04-26 0:12:472703 days ago1493165567
0xBc9CCC8A...1321c5D4C
0.03332 ETH
36008922017-04-26 0:12:132703 days ago1493165533
0xBc9CCC8A...1321c5D4C
0.00392 ETH
36008872017-04-26 0:11:032703 days ago1493165463
0xBc9CCC8A...1321c5D4C
0.00392 ETH
36008812017-04-26 0:10:122703 days ago1493165412
0xBc9CCC8A...1321c5D4C
0.01372 ETH
36008762017-04-26 0:08:432703 days ago1493165323
0xBc9CCC8A...1321c5D4C
0.00882 ETH
36008712017-04-26 0:07:252703 days ago1493165245
0xBc9CCC8A...1321c5D4C
0.00392 ETH
36008672017-04-26 0:06:082703 days ago1493165168
0xBc9CCC8A...1321c5D4C
0.01568 ETH
View All Internal Transactions
Loading...
Loading
Contract Self Destruct called at Txn Hash 0xf59e745b53a3960b90de9b1d2a61c9074e49d64cc577bfbd3c2dbc8de5f0c926


Contract Source Code Verified (Exact Match)

Contract Name:
E4RowEscrowU

Compiler Version
v0.4.8+commit.60cc1668

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2017-04-12
*/

pragma solidity ^0.4.6;


contract iE4RowEscrow {
        function getNumGamesStarted() constant returns (int ngames);
}


contract E4RowEscrowU is iE4RowEscrow {

event StatEvent(string msg);
event StatEventI(string msg, uint val);
event StatEventA(string msg, address addr);

        uint constant MAX_PLAYERS = 5;

        enum EndReason  {erWinner, erTimeOut, erCheat}
        enum SettingStateValue  {debug, release, lockedRelease}

        struct gameInstance {
                address[5] players;
                uint[5] playerPots;
                uint numPlayers;

                bool active; // active
                bool allocd; //  allocated already. 
                uint started; // time game started
                uint lastMoved; // time game last moved
                uint payout; // payout amont
                address winner; // address of winner


                EndReason reasonEnded; // enum reason of ended

        }

        struct arbiter {
                mapping (uint => uint)  gameIndexes; // game handles

                uint arbToken; // 2 bytes
                uint gameSlots; // a counter of alloc'd game structs (they can be reused)
                uint gamesStarted; // total games started
                uint gamesCompleted;
                uint gamesCheated;
                uint gamesTimedout;
                uint numPlayers;
                bool registered; 
                bool locked;
        }


        address public  owner;  // owner is address that deployed contract
        address public  tokenPartner;   // the address of partner that receives rake fees
        uint public numArbiters;        // number of arbiters

        int numGamesStarted;    // total stats from all arbiters

        uint public numGamesCompleted; // ...
        uint public numGamesCheated;    // ...
        uint public numGamesTimedOut;   // ...

        uint public houseFeeHoldover; // hold fee till threshold
        uint public lastPayoutTime;     // timestamp of last payout time


        // configurables
        uint public gameTimeOut;
        uint public registrationFee;
        uint public houseFeeThreshold;
        uint public payoutInterval;

        uint raGas; // for register arb
        uint sgGas;// for start game
        uint wpGas; // for winner paid
        uint rfGas; // for refund
        uint feeGas; // for rake fee payout

        SettingStateValue public settingsState = SettingStateValue.debug; 


        mapping (address => arbiter)  arbiters;
        mapping (uint => address)  arbiterTokens;
        mapping (uint => address)  arbiterIndexes;
        mapping (uint => gameInstance)  games;


        function E4RowEscrowU() public
        {
                owner = msg.sender;
        }


        function applySettings(SettingStateValue _state, uint _fee, uint _threshold, uint _timeout, uint _interval)
        {
                if (msg.sender != owner) 
                        throw;

                // ----------------------------------------------
                // these items are tweakable for game optimization
                // ----------------------------------------------
                houseFeeThreshold = _threshold;
                gameTimeOut = _timeout;
                payoutInterval = _interval;

                if (settingsState == SettingStateValue.lockedRelease) {
                        StatEvent("Settings Tweaked");
                        return;
                }

                settingsState = _state;
                registrationFee = _fee;

                // set default op gas -  any futher settings done in set up gas
                raGas = 150000; 
                sgGas = 110000;
                wpGas = 20000; 
                rfGas = 20000; 
                feeGas = 360000; 

                StatEvent("Settings Changed");


        }

        //-----------------------------
        // return an arbiter token from an hGame
        //-----------------------------
        function ArbTokFromHGame(uint _hGame) returns (uint _tok)
        { 
                _tok =  (_hGame / (2 ** 48)) & 0xffff;
        }


        //-----------------------------
        // suicide the contract, not called for release
        //-----------------------------
        function HaraKiri()
        {
                if ((msg.sender == owner) && (settingsState != SettingStateValue.lockedRelease))
                          suicide(tokenPartner);
                else
                        StatEvent("Kill attempt failed");
        }




        //-----------------------------
        // default function
        //-----------------------------
        function() payable  {
                throw;
        }

        //------------------------------------------------------
        // check active game and valid player, return player index
        //-------------------------------------------------------
        function validPlayer(uint _hGame, address _addr)  internal returns( bool _valid, uint _pidx)
        {
                _valid = false;
                if (activeGame(_hGame)) {
                        for (uint i = 0; i < games[_hGame].numPlayers; i++) {
                                if (games[_hGame].players[i] == _addr) {
                                        _valid=true;
                                        _pidx = i;
                                        break;
                                }
                        }
                }
        }

        //------------------------------------------------------
        // check valid player, return player index
        //-------------------------------------------------------
        function validPlayer2(uint _hGame, address _addr) internal  returns( bool _valid, uint _pidx)
        {
                _valid = false;
                for (uint i = 0; i < games[_hGame].numPlayers; i++) {
                        if (games[_hGame].players[i] == _addr) {
                                _valid=true;
                                _pidx = i;
                                break;
                        }
                }
        }

        //------------------------------------------------------
        // check the arbiter is valid by comparing token
        //------------------------------------------------------
        function validArb(address _addr, uint _tok) internal  returns( bool _valid)
        {
                _valid = false;

                if ((arbiters[_addr].registered)
                        && (arbiters[_addr].arbToken == _tok)) 
                        _valid = true;
        }

        //------------------------------------------------------
        // check the arbiter is valid without comparing token
        //------------------------------------------------------
        function validArb2(address _addr) internal  returns( bool _valid)
        {
                _valid = false;
                if (arbiters[_addr].registered)
                        _valid = true;
        }

        //------------------------------------------------------
        // check if arbiter is locked out
        //------------------------------------------------------
        function arbLocked(address _addr) internal  returns( bool _locked)
        {
                _locked = false;
                if (validArb2(_addr)) 
                        _locked = arbiters[_addr].locked;
        }

        //------------------------------------------------------
        // return if game is active
        //------------------------------------------------------
        function activeGame(uint _hGame) internal  returns( bool _valid)
        {
                _valid = false;
                if ((_hGame > 0)
                        && (games[_hGame].active))
                        _valid = true;
        }


        //------------------------------------------------------
        // register game arbiter, max players of 5, pass in exact registration fee
        //------------------------------------------------------
        function registerArbiter(uint _numPlayers, uint _arbToken) public payable 
        {

                if (msg.value != registrationFee) {
                        throw;  //Insufficient Fee
                }

                if (_arbToken == 0) {
                        throw; // invalid token
                }

                if (arbTokenExists(_arbToken & 0xffff)) {
                        throw; // Token Already Exists
                }

                if (arbiters[msg.sender].registered) {
                        throw; // Arb Already Registered
                }

                if (_numPlayers > MAX_PLAYERS) {
                        throw; // Exceeds Max Players
                }

                arbiters[msg.sender].gamesStarted = 0;
                arbiters[msg.sender].gamesCompleted = 0;
                arbiters[msg.sender].gamesCheated = 0;
                arbiters[msg.sender].gamesTimedout = 0;
                arbiters[msg.sender].locked = false;
                arbiters[msg.sender].arbToken = _arbToken & 0xffff;
                arbiters[msg.sender].numPlayers = _numPlayers;
                arbiters[msg.sender].registered = true;

                arbiterTokens[(_arbToken & 0xffff)] = msg.sender;
                arbiterIndexes[numArbiters++] = msg.sender;


                if (!tokenPartner.call.gas(raGas).value(msg.value)()) {
                        //Statvent("Send Error"); // event never registers
                        throw;
                }
                StatEventI("Arb Added", _arbToken);
        }


        //------------------------------------------------------
        // start game.  pass in valid hGame containing token in top two bytes
        //------------------------------------------------------
        function startGame(uint _hGame, int _hkMax, address[] _players) public 
        {
                uint ntok = ArbTokFromHGame(_hGame);
                if (!validArb(msg.sender, ntok )) {
                        StatEvent("Invalid Arb");
                        return; 
                }


                if (arbLocked(msg.sender)) {
                        StatEvent("Arb Locked");
                        return; 
                }

                arbiter xarb = arbiters[msg.sender];
                if (_players.length != xarb.numPlayers) { 
                        StatEvent("Incorrect num players");
                        return; 
                }

                if (_hkMax > 0)
                        houseKeep(_hkMax, ntok); 

                if (!games[_hGame].allocd) {
                        games[_hGame].allocd = true;
                        xarb.gameIndexes[xarb.gameSlots++] = _hGame;
                } 
                numGamesStarted++; // always inc this one
                xarb.gamesStarted++;

                games[_hGame].active = true;
                games[_hGame].started = now; 
                games[_hGame].lastMoved = now; 
                games[_hGame].payout = 0; 
                games[_hGame].winner = address(0);

                games[_hGame].numPlayers = _players.length; // we'll be the judge of how many unique players
                for (uint i = 0; i< _players.length && i < MAX_PLAYERS; i++) {
                    games[_hGame].players[i] = _players[i];
                    games[_hGame].playerPots[i] = 0;
                }


                StatEventI("Game Added", _hGame);


        }

        //------------------------------------------------------
        // clean up game, set to inactive, refund any balances
        // called by housekeep ONLY
        //------------------------------------------------------
        function abortGame(address _arb, uint  _hGame, EndReason _reason) private returns(bool _success)
        {
             gameInstance nGame = games[_hGame];
             
                // find game in game id, 
                if (nGame.active) {
                        _success = true;
                        for (uint i = 0; i < nGame.numPlayers; i++) {
                                if (nGame.playerPots[i] > 0) {
                                        address a = nGame.players[i];
                                        uint nsend = nGame.playerPots[i];
                                        nGame.playerPots[i] = 0;
                                        if (!a.call.gas(rfGas).value(nsend)()) {
                                                houseFeeHoldover += nsend; // cannot refund due to error, give to the house
                                                StatEventA("Cannot Refund Address", a);
                                        }
                                }
                        }
                        nGame.active = false;
                        nGame.reasonEnded = _reason;
                        if (_reason == EndReason.erCheat) {
                                numGamesCheated++;
                                arbiters[_arb].gamesCheated++;
                                StatEvent("Game Aborted-Cheat");
                        } else if (_reason == EndReason.erTimeOut) {
                                numGamesTimedOut++;
                                arbiters[_arb].gamesTimedout++;
                                StatEvent("Game Aborted-TimeOut");
                        } else 
                                StatEvent("Game Aborted!");
                }
        }


        //------------------------------------------------------
        // called by arbiter when winner is decided
        //------------------------------------------------------
        function winnerDecided(uint _hGame, address _winner, uint _winnerBal) public
        {

                if (!validArb(msg.sender, ArbTokFromHGame(_hGame))) {
                        StatEvent("Invalid Arb");
                        return; // no throw no change made
                }

                var (valid, pidx) = validPlayer(_hGame, _winner);
                if (!valid) {
                        StatEvent("Invalid Player");
                        return;
                }

                arbiter xarb = arbiters[msg.sender];
                gameInstance xgame = games[_hGame];

                uint totalPot = 0;

                if (xgame.playerPots[pidx] != _winnerBal) {
                    abortGame(msg.sender, _hGame, EndReason.erCheat);
                    return;
                }

                for (uint i = 0; i < xgame.numPlayers; i++) {
                        totalPot += xgame.playerPots[i];
                }

                uint nportion;
                uint nremnant;
                if (totalPot > 0) {
                        nportion = totalPot/50; // 2 percent fixed
                        nremnant = totalPot-nportion;
                } else {
                        nportion = 0;
                        nremnant = 0;
                }


                xgame.lastMoved = now;
                xgame.active = false;
                xgame.reasonEnded = EndReason.erWinner;
                xgame.winner = _winner;
                xgame.payout = nremnant;

                if (nportion > 0) {
                        houseFeeHoldover += nportion;
                        if ((houseFeeHoldover > houseFeeThreshold)
                                && (now > (lastPayoutTime + payoutInterval))) {
                                uint ntmpho = houseFeeHoldover;
                                houseFeeHoldover = 0;
                                lastPayoutTime = now; // reset regardless of succeed/fail
                                if (!tokenPartner.call.gas(feeGas).value(ntmpho)()) {
                                        houseFeeHoldover = ntmpho; // put it back
                                        StatEvent("House-Fee Error1");
                                } 
                        }
                }

                for (i = 0; i < xgame.numPlayers; i++) {
                        xgame.playerPots[i] = 0;
                }

                xarb.gamesCompleted++;
                numGamesCompleted++;
                if (nremnant > 0) {
                        if (!_winner.call.gas(wpGas).value(uint(nremnant))()) {
                                // StatEvent("Send Error");
                                throw; // if you cant pay the winner - very bad
                        } else {
                                StatEventI("Winner Paid", _hGame);
                        }
                }
        }

        //------------------------------------------------------
        // handle a bet made by a player, validate the player and game
        // add to players balance
        //------------------------------------------------------
        function handleBet(uint _hGame) public payable 
        {
                address narb = arbiterTokens[ArbTokFromHGame(_hGame)];
                if (narb == address(0)) {
                        StatEvent("Invalid hGame");
                        if (settingsState != SettingStateValue.debug)
                                throw;
                        else
                                return;
                }

                var (valid, pidx) = validPlayer(_hGame, msg.sender);
                if (!valid) {
                        StatEvent("Invalid Player");
                        if (settingsState != SettingStateValue.debug)
                                throw;
                        else
                                return;
                }

                games[_hGame].playerPots[pidx] += msg.value;
                games[_hGame].lastMoved = now;

                StatEventI("Bet Added", _hGame);

        }


        //------------------------------------------------------
        // return if arb token exists
        //------------------------------------------------------
        function arbTokenExists(uint _tok) constant returns (bool _exists)
        {
                _exists = false;
                if ((_tok > 0)
                        && (arbiterTokens[_tok] != address(0))
                        && arbiters[arbiterTokens[_tok]].registered)
                        _exists = true;

        }




        //------------------------------------------------------
        // called by ico token contract 
        //------------------------------------------------------
        function getNumGamesStarted() constant returns (int _games) 
        {
                _games = numGamesStarted;
        }

        //------------------------------------------------------
        // return arbiter game stats
        //------------------------------------------------------
        function getArbInfo(uint _idx) constant  returns (address _addr, uint _started, uint _completed, uint _cheated, uint _timedOut) 
        {
                if (_idx >= numArbiters) {
                        StatEvent("Invalid Arb");
                        return;
                }
                _addr = arbiterIndexes[_idx];
                if ((_addr == address(0))
                        || (!arbiters[_addr].registered)) {
                        StatEvent("Invalid Arb");
                        return;
                }
                arbiter xarb = arbiters[_addr];
                _started = xarb.gamesStarted;
                _completed = xarb.gamesCompleted;
                _timedOut = xarb.gamesTimedout;
                _cheated = xarb.gamesCheated;
        }


        //------------------------------------------------------
        // scan for a game 10 minutes old
        // if found abort the game, causing funds to be returned
        //------------------------------------------------------
        function houseKeep(int _max, uint _arbToken) public
        {
                uint gi;
                address a;
                int aborted = 0;

                arbiter xarb = arbiters[msg.sender];// have to set it to something
                
         
                if (msg.sender == owner) {
                        for (uint ar = 0; (ar < numArbiters) && (aborted < _max) ; ar++) {
                            a = arbiterIndexes[ar];
                            xarb = arbiters[a];    

                            for ( gi = 0; (gi < xarb.gameSlots) && (aborted < _max); gi++) {
                                gameInstance ngame0 = games[xarb.gameIndexes[gi]];
                                if ((ngame0.active)
                                    && ((now - ngame0.lastMoved) > gameTimeOut)) {
                                        abortGame(a, xarb.gameIndexes[gi], EndReason.erTimeOut);
                                        ++aborted;
                                }
                            }
                        }

                } else {
                        if (!validArb(msg.sender, _arbToken))
                                StatEvent("Housekeep invalid arbiter");
                        else {
                            a = msg.sender;
                            xarb = arbiters[a];    
                            for (gi = 0; (gi < xarb.gameSlots) && (aborted < _max); gi++) {
                                gameInstance ngame1 = games[xarb.gameIndexes[gi]];
                                if ((ngame1.active)
                                    && ((now - ngame1.lastMoved) > gameTimeOut)) {
                                        abortGame(a, xarb.gameIndexes[gi], EndReason.erTimeOut);
                                        ++aborted;
                                }
                            }

                        }
                }
        }


        //------------------------------------------------------
        // return game info
        //------------------------------------------------------
        function getGameInfo(uint _hGame)  constant  returns (EndReason _reason, uint _players, uint _payout, bool _active, address _winner )
        {
                gameInstance ngame = games[_hGame];
                _active = ngame.active;
                _players = ngame.numPlayers;
                _winner = ngame.winner;
                _payout = ngame.payout;
                _reason = ngame.reasonEnded;

        }

        //------------------------------------------------------
        // return arbToken and low bytes from an HGame
        //------------------------------------------------------
        function checkHGame(uint _hGame) constant returns(uint _arbTok, uint _lowWords)
        {
                _arbTok = ArbTokFromHGame(_hGame);
                _lowWords = _hGame & 0xffffffffffff;

        }

        //------------------------------------------------------
        // get operation gas amounts
        //------------------------------------------------------
        function getOpGas() constant returns (uint _ra, uint _sg, uint _wp, uint _rf, uint _fg) 
        {
                _ra = raGas; // register arb
                _sg = sgGas; // start game
                _wp = wpGas; // winner paid
                _rf = rfGas; // refund
                _fg = feeGas; // rake fee gas
        }


        //------------------------------------------------------
        // set operation gas amounts for forwading operations
        //------------------------------------------------------
        function setOpGas(uint _ra, uint _sg, uint _wp, uint _rf, uint _fg) 
        {
                if (msg.sender != owner)
                        throw;

                raGas = _ra;
                sgGas = _sg;
                wpGas = _wp;
                rfGas = _rf;
                feeGas = _fg;
        }

        //------------------------------------------------------
        // set a micheivous arbiter to locked
        //------------------------------------------------------
        function setArbiterLocked(address _addr, bool _lock)  public 
        {
                if (owner != msg.sender)  {
                        throw; 
                } else if (!validArb2(_addr)) {
                        StatEvent("invalid arb");
                } else {
                        arbiters[_addr].locked = _lock;
                }

        }

        //------------------------------------------------------
        // flush the house fees whenever commanded to.
        // ignore the threshold and the last payout time
        // but this time only reset lastpayouttime upon success
        //------------------------------------------------------
        function flushHouseFees()
        {
                if (msg.sender != owner) {
                        StatEvent("only owner calls this function");
                } else if (houseFeeHoldover > 0) {
                        uint ntmpho = houseFeeHoldover;
                        houseFeeHoldover = 0;
                        if (!tokenPartner.call.gas(feeGas).value(ntmpho)()) {
                                houseFeeHoldover = ntmpho; // put it back
                                StatEvent("House-Fee Error2"); 
                        } else {
                                lastPayoutTime = now;
                                StatEvent("House-Fee Paid");
                        }
                }

        }


        //------------------------------------------------------
        // set the token partner
        //------------------------------------------------------
        function setTokenPartner(address _addr) public
        {
                if (msg.sender != owner) {
                        throw;
                } 

                if ((settingsState == SettingStateValue.lockedRelease) 
                        && (tokenPartner == address(0))) {
                        tokenPartner = _addr;
                        StatEvent("Token Partner Final!");
                } else if (settingsState != SettingStateValue.lockedRelease) {
                        tokenPartner = _addr;
                        StatEvent("Token Partner Assigned!");
                }

        }

        // ----------------------------
        // swap executor
        // ----------------------------
        function changeOwner(address _addr) 
        {
                if (msg.sender != owner
                        || settingsState == SettingStateValue.lockedRelease)
                         throw;

                owner = _addr;
        }



}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_numPlayers","type":"uint256"},{"name":"_arbToken","type":"uint256"}],"name":"registerArbiter","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"payoutInterval","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getNumGamesStarted","outputs":[{"name":"_games","type":"int256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_state","type":"uint8"},{"name":"_fee","type":"uint256"},{"name":"_threshold","type":"uint256"},{"name":"_timeout","type":"uint256"},{"name":"_interval","type":"uint256"}],"name":"applySettings","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"registrationFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"numArbiters","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"houseFeeThreshold","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_hGame","type":"uint256"}],"name":"ArbTokFromHGame","outputs":[{"name":"_tok","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_hGame","type":"uint256"}],"name":"getGameInfo","outputs":[{"name":"_reason","type":"uint8"},{"name":"_players","type":"uint256"},{"name":"_payout","type":"uint256"},{"name":"_active","type":"bool"},{"name":"_winner","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_hGame","type":"uint256"}],"name":"handleBet","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"gameTimeOut","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_idx","type":"uint256"}],"name":"getArbInfo","outputs":[{"name":"_addr","type":"address"},{"name":"_started","type":"uint256"},{"name":"_completed","type":"uint256"},{"name":"_cheated","type":"uint256"},{"name":"_timedOut","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"lastPayoutTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"settingsState","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_hGame","type":"uint256"},{"name":"_winner","type":"address"},{"name":"_winnerBal","type":"uint256"}],"name":"winnerDecided","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"setTokenPartner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"numGamesTimedOut","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_lock","type":"bool"}],"name":"setArbiterLocked","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_max","type":"int256"},{"name":"_arbToken","type":"uint256"}],"name":"houseKeep","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getOpGas","outputs":[{"name":"_ra","type":"uint256"},{"name":"_sg","type":"uint256"},{"name":"_wp","type":"uint256"},{"name":"_rf","type":"uint256"},{"name":"_fg","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"numGamesCheated","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_hGame","type":"uint256"}],"name":"checkHGame","outputs":[{"name":"_arbTok","type":"uint256"},{"name":"_lowWords","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"numGamesCompleted","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_hGame","type":"uint256"},{"name":"_hkMax","type":"int256"},{"name":"_players","type":"address[]"}],"name":"startGame","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_ra","type":"uint256"},{"name":"_sg","type":"uint256"},{"name":"_wp","type":"uint256"},{"name":"_rf","type":"uint256"},{"name":"_fg","type":"uint256"}],"name":"setOpGas","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"houseFeeHoldover","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"flushHouseFees","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokenPartner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tok","type":"uint256"}],"name":"arbTokenExists","outputs":[{"name":"_exists","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"HaraKiri","outputs":[],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"msg","type":"string"}],"name":"StatEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"msg","type":"string"},{"indexed":false,"name":"val","type":"uint256"}],"name":"StatEventI","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"msg","type":"string"},{"indexed":false,"name":"addr","type":"address"}],"name":"StatEventA","type":"event"}]

60606040526000601260006101000a81548160ff02191690836002811161000057021790555034610000575b33600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b61320f8061007d6000396000f30060606040523615610194576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806303015ea3146101a157806309e785e1146101c25780631123efd5146101e557806313bd53e61461020857806314c44e091461024c578063189ae13c1461026f5780631e83ce17146102925780632c78ba6f146102b557806347e1d550146102e65780634f28af6a1461036e57806351c08f4d146103865780635364f721146103a957806358a1cabf146104225780635f437e48146104455780636df088bf146104735780637612115d146104b857806380943252146104eb5780638a75f56a1461050e5780638da5cb5b1461054c5780639307ca0f1461059b5780639a6921e4146105c15780639e31f9b6146106005780639e6d95c714610623578063a6f9dae11461065b578063b05455321461068e578063b26f7efc146106b1578063bcdaea3614610717578063c9fa8f2d14610758578063ca2785bf1461077b578063dcb4775e1461078a578063e7d87cda146107d9578063f081d9bd1461080e575b61019f5b610000565b565b005b6101c0600480803590602001909190803590602001909190505061081d565b005b34610000576101cf610caf565b6040518082815260200191505060405180910390f35b34610000576101f2610cb5565b6040518082815260200191505060405180910390f35b346100005761024a600480803560ff16906020019091908035906020019091908035906020019091908035906020019091908035906020019091905050610cc0565b005b3461000057610259610e8d565b6040518082815260200191505060405180910390f35b346100005761027c610e93565b6040518082815260200191505060405180910390f35b346100005761029f610e99565b6040518082815260200191505060405180910390f35b34610000576102d06004808035906020019091905050610e9f565b6040518082815260200191505060405180910390f35b34610000576103016004808035906020019091905050610ebd565b6040518086600281116100005760ff168152602001858152602001848152602001831515151581526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405180910390f35b6103846004808035906020019091905050610f46565b005b34610000576103936111ce565b6040518082815260200191505060405180910390f35b34610000576103c460048080359060200190919050506111d4565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b346100005761042f6113f0565b6040518082815260200191505060405180910390f35b34610000576104526113f6565b6040518082600281116100005760ff16815260200191505060405180910390f35b34610000576104b6600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611409565b005b34610000576104e9600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118db565b005b34610000576104f8611b3f565b6040518082815260200191505060405180910390f35b346100005761054a600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080351515906020019091905050611b45565b005b3461000057610559611c7e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34610000576105bf6004808035906020019091908035906020019091905050611ca4565b005b34610000576105ce61200e565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b346100005761060d612039565b6040518082815260200191505060405180910390f35b346100005761063e600480803590602001909190505061203f565b604051808381526020018281526020019250505060405180910390f35b346100005761068c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061205f565b005b346100005761069b61212a565b6040518082815260200191505060405180910390f35b3461000057610715600480803590602001909190803590602001909190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050612130565b005b346100005761075660048080359060200190919080359060200190919080359060200190919080359060200190919080359060200190919050506125e9565b005b3461000057610765612670565b6040518082815260200191505060405180910390f35b3461000057610788612676565b005b3461000057610797612899565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34610000576107f460048080359060200190919050506128bf565b604051808215151515815260200191505060405180910390f35b346100005761081b6129d0565b005b600a543414151561082d57610000565b600081141561083b57610000565b61084861ffff82166128bf565b1561085257610000565b601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080160009054906101000a900460ff16156108ac57610000565b60058211156108ba57610000565b6000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055506000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055506000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055506000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601819055506000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080160016101000a81548160ff02191690831515021790555061ffff8116601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555081601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701819055506001601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080160006101000a81548160ff021916908315150217905550336014600061ffff8416815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601560006002600081548092919060010191905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600d5434604051809050600060405180830381858888f193505050501515610c3a57610000565b7f9e229c55f86322ec7d67b654476e2d52934c738b3cd58c026b5b2b6e9b7b992d816040518080602001838152602001828103825260098152602001807f41726220416464656400000000000000000000000000000000000000000000008152506020019250505060405180910390a15b5050565b600c5481565b600060035490505b90565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d1c57610000565b82600b819055508160098190555080600c8190555060026002811161000057601260009054906101000a900460ff1660028111610000571415610dc6577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e6486040518080602001828103825260108152602001807f53657474696e677320547765616b65640000000000000000000000000000000081525060200191505060405180910390a1610e86565b84601260006101000a81548160ff02191690836002811161000057021790555083600a81905550620249f0600d819055506201adb0600e81905550614e20600f81905550614e2060108190555062057e406011819055507f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e6486040518080602001828103825260108152602001807f53657474696e6773204368616e6765640000000000000000000000000000000081525060200191505060405180910390a15b5050505050565b600a5481565b60025481565b600b5481565b600061ffff660100000000000083811561000057041690505b919050565b60006000600060006000600060166000888152602001908152602001600020905080600b0160009054906101000a900460ff16925080600a0154945080600f0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915080600e0154935080600f0160149054906101000a900460ff1695505b5091939590929450565b60006000600060146000610f5986610e9f565b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561105b577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e64860405180806020018281038252600d8152602001807f496e76616c6964206847616d650000000000000000000000000000000000000081525060200191505060405180910390a160006002811161000057601260009054906101000a900460ff16600281116100005714151561105557610000565b6111c8565b5b6110658433612af9565b9150915081151561110c577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e64860405180806020018281038252600e8152602001807f496e76616c696420506c6179657200000000000000000000000000000000000081525060200191505060405180910390a160006002811161000057601260009054906101000a900460ff16600281116100005714151561110657610000565b6111c8565b5b3460166000868152602001908152602001600020600501826005811015610000570160005b82825401925050819055504260166000868152602001908152602001600020600d01819055507f9e229c55f86322ec7d67b654476e2d52934c738b3cd58c026b5b2b6e9b7b992d846040518080602001838152602001828103825260098152602001807f42657420416464656400000000000000000000000000000000000000000000008152506020019250505060405180910390a15b50505050565b60095481565b60006000600060006000600060025487101515611258577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e64860405180806020018281038252600b8152602001807f496e76616c69642041726200000000000000000000000000000000000000000081525060200191505060405180910390a16113e6565b6015600088815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169550600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614806113165750601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080160009054906101000a900460ff16155b15611388577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e64860405180806020018281038252600b8152602001807f496e76616c69642041726200000000000000000000000000000000000000000081525060200191505060405180910390a16113e6565b601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806003015494508060040154935080600601549150806005015492505b5091939590929450565b60085481565b601260009054906101000a900460ff1681565b60006000600060006000600060006000600061142d336114288e610e9f565b612bce565b15156114a0577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e64860405180806020018281038252600b8152602001807f496e76616c69642041726200000000000000000000000000000000000000000081525060200191505060405180910390a16118cd565b6114aa8c8c612af9565b98509850881515611522577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e64860405180806020018281038252600e8152602001807f496e76616c696420506c6179657200000000000000000000000000000000000081525060200191505060405180910390a16118cd565b601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209650601660008d81526020019081526020016000209550600094508986600501896005811015610000570160005b50541415156115aa576115a4338d6002612c82565b506118cd565b600093505b85600a01548410156115e15785600501846005811015610000570160005b5054850194505b83806001019450506115af565b6000851115611600576032858115610000570492508285039150611609565b60009250600091505b4286600d0181905550600086600b0160006101000a81548160ff021916908315150217905550600086600f0160146101000a81548160ff0219169083600281116100005702179055508a86600f0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508186600e018190555060008311156117b55782600760008282540192505081905550600b546007541180156116cf5750600c546008540142115b156117b4576007549050600060078190555042600881905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660115482604051809050600060405180830381858888f1935050505015156117b357806007819055507f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e6486040518080602001828103825260108152602001807f486f7573652d466565204572726f72310000000000000000000000000000000081525060200191505060405180910390a15b5b5b600093505b85600a01548410156117ed57600086600501856005811015610000570160005b50819055505b83806001019450506117ba565b866004016000815480929190600101919050555060046000815480929190600101919050555060008211156118cc578a73ffffffffffffffffffffffffffffffffffffffff16600f5483604051809050600060405180830381858888f19350505050151561185a57610000565b7f9e229c55f86322ec7d67b654476e2d52934c738b3cd58c026b5b2b6e9b7b992d8c60405180806020018381526020018281038252600b8152602001807f57696e6e657220506169640000000000000000000000000000000000000000008152506020019250505060405180910390a15b5b5b505050505050505050505050565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561193757610000565b60026002811161000057601260009054906101000a900460ff1660028111610000571480156119b45750600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15611a675780600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e6486040518080602001828103825260148152602001807f546f6b656e20506172746e65722046696e616c2100000000000000000000000081525060200191505060405180910390a1611b3b565b60026002811161000057601260009054906101000a900460ff166002811161000057141515611b3a5780600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e6486040518080602001828103825260178152602001807f546f6b656e20506172746e65722041737369676e65642100000000000000000081525060200191505060405180910390a15b5b5b50565b60065481565b3373ffffffffffffffffffffffffffffffffffffffff16600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611ba157610000565b611baa826130ca565b1515611c1d577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e64860405180806020018281038252600b8152602001807f696e76616c69642061726200000000000000000000000000000000000000000081525060200191505060405180910390a1611c78565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080160016101000a81548160ff0219169083151502179055505b5b5b5050565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060006000600060006000600060009450601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209350600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611e9857600092505b60025483108015611d6257508885125b15611e93576015600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169550601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209350600096505b836002015487108015611df557508885125b15611e8557601660008560000160008a8152602001908152602001600020548152602001908152602001600020915081600b0160009054906101000a900460ff168015611e49575060095482600d01544203115b15611e7757611e6f868560000160008a8152602001908152602001600020546001612c82565b508460010194505b5b8680600101975050611de3565b5b8280600101935050611d52565b612002565b611ea23389612bce565b1515611f15577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e6486040518080602001828103825260198152602001807f486f7573656b65657020696e76616c696420617262697465720000000000000081525060200191505060405180910390a1612001565b339550601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209350600096505b836002015487108015611f7057508885125b1561200057601660008560000160008a8152602001908152602001600020548152602001908152602001600020905080600b0160009054906101000a900460ff168015611fc4575060095481600d01544203115b15611ff257611fea868560000160008a8152602001908152602001600020546001612c82565b508460010194505b5b8680600101975050611f5e565b5b5b5b505050505050505050565b60006000600060006000600d549450600e549350600f549250601054915060115490505b9091929394565b60055481565b6000600061204c83610e9f565b915065ffffffffffff831690505b915091565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415806120db575060026002811161000057601260009054906101000a900460ff166002811161000057145b156120e557610000565b80600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b60045481565b60006000600061213f86610e9f565b925061214b3384612bce565b15156121be577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e64860405180806020018281038252600b8152602001807f496e76616c69642041726200000000000000000000000000000000000000000081525060200191505060405180910390a16125e1565b6121c733613130565b15612239577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e64860405180806020018281038252600a8152602001807f417262204c6f636b65640000000000000000000000000000000000000000000081525060200191505060405180910390a16125e1565b601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209150816007015484511415156122f5577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e6486040518080602001828103825260158152602001807f496e636f7272656374206e756d20706c6179657273000000000000000000000081525060200191505060405180910390a16125e1565b6000851315612309576123088584611ca4565b5b60166000878152602001908152602001600020600b0160019054906101000a900460ff16151561238f57600160166000888152602001908152602001600020600b0160016101000a81548160ff02191690831515021790555085826000016000846002016000815480929190600101919050558152602001908152602001600020819055505b6003600081548092919060010191905055508160030160008154809291906001019190505550600160166000888152602001908152602001600020600b0160006101000a81548160ff0219169083151502179055504260166000888152602001908152602001600020600c01819055504260166000888152602001908152602001600020600d0181905550600060166000888152602001908152602001600020600e0181905550600060166000888152602001908152602001600020600f0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550835160166000888152602001908152602001600020600a0181905550600090505b8351811080156124bd5750600581105b156125705783818151811015610000579060200190602002015160166000888152602001908152602001600020600001826005811015610000570160005b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060166000888152602001908152602001600020600501826005811015610000570160005b50819055505b80806001019150506124ad565b7f9e229c55f86322ec7d67b654476e2d52934c738b3cd58c026b5b2b6e9b7b992d8660405180806020018381526020018281038252600a8152602001807f47616d65204164646564000000000000000000000000000000000000000000008152506020019250505060405180910390a15b505050505050565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561264557610000565b84600d8190555083600e8190555082600f8190555081601081905550806011819055505b5050505050565b60075481565b6000600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561273c577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e64860405180806020018281038252601e8152602001807f6f6e6c79206f776e65722063616c6c7320746869732066756e6374696f6e000081525060200191505060405180910390a1612895565b600060075411156128945760075490506000600781905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660115482604051809050600060405180830381858888f19350505050151561282357806007819055507f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e6486040518080602001828103825260108152602001807f486f7573652d466565204572726f72320000000000000000000000000000000081525060200191505060405180910390a1612893565b426008819055507f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e64860405180806020018281038252600e8152602001807f486f7573652d466565205061696400000000000000000000000000000000000081525060200191505060405180910390a15b5b5b5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600090506000821180156129355750600073ffffffffffffffffffffffffffffffffffffffff166014600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b80156129c05750601360006014600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080160009054906101000a900460ff165b156129ca57600190505b5b919050565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015612a4d575060026002811161000057601260009054906101000a900460ff16600281116100005714155b15612a8d57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b7f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e6486040518080602001828103825260138152602001807f4b696c6c20617474656d7074206661696c65640000000000000000000000000081525060200191505060405180910390a15b5b565b60006000600060009250612b0c8561319d565b15612bc557600090505b60166000868152602001908152602001600020600a0154811015612bc4578373ffffffffffffffffffffffffffffffffffffffff1660166000878152602001908152602001600020600001826005811015610000570160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612bb65760019250809150612bc4565b5b8080600101915050612b16565b5b5b509250929050565b600060009050601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080160009054906101000a900460ff168015612c71575081601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154145b15612c7b57600190505b5b92915050565b6000600060006000600060166000888152602001908152602001600020935083600b0160009054906101000a900460ff16156130be5760019450600092505b83600a0154831015612e4057600084600501846005811015610000570160005b50541115612e325783600001836005811015610000570160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915083600501836005811015610000570160005b50549050600084600501846005811015610000570160005b50819055508173ffffffffffffffffffffffffffffffffffffffff1660105482604051809050600060405180830381858888f193505050501515612e3157806007600082825401925050819055507fe0e85fe8d69ca593247064bffd9438c76090518a0ec0f0c452c31218c8b9e6a48260405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825260158152602001807f43616e6e6f7420526566756e64204164647265737300000000000000000000008152506020019250505060405180910390a15b5b5b8280600101935050612cc1565b600084600b0160006101000a81548160ff0219169083151502179055508584600f0160146101000a81548160ff021916908360028111610000570217905550600260028111610000578660028111610000571415612f6957600560008154809291906001019190505550601360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501600081548092919060010191905055507f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e6486040518080602001828103825260128152602001807f47616d652041626f727465642d4368656174000000000000000000000000000081525060200191505060405180910390a16130bd565b60016002811161000057866002811161000057141561305357600660008154809291906001019190505550601360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601600081548092919060010191905055507f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e6486040518080602001828103825260148152602001807f47616d652041626f727465642d54696d654f757400000000000000000000000081525060200191505060405180910390a16130bc565b7f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e64860405180806020018281038252600d8152602001807f47616d652041626f72746564210000000000000000000000000000000000000081525060200191505060405180910390a15b5b5b5b505050509392505050565b600060009050601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080160009054906101000a900460ff161561312a57600190505b5b919050565b60006000905061313f826130ca565b1561319757601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080160019054906101000a900460ff1690505b5b919050565b6000600090506000821180156131d3575060166000838152602001908152602001600020600b0160009054906101000a900460ff165b156131dd57600190505b5b9190505600a165627a7a723058200e27c804ca1236762feefdc5eb6488ff76511c869956199bc92a1aa566ecebe00029

Deployed Bytecode

0x60606040523615610194576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806303015ea3146101a157806309e785e1146101c25780631123efd5146101e557806313bd53e61461020857806314c44e091461024c578063189ae13c1461026f5780631e83ce17146102925780632c78ba6f146102b557806347e1d550146102e65780634f28af6a1461036e57806351c08f4d146103865780635364f721146103a957806358a1cabf146104225780635f437e48146104455780636df088bf146104735780637612115d146104b857806380943252146104eb5780638a75f56a1461050e5780638da5cb5b1461054c5780639307ca0f1461059b5780639a6921e4146105c15780639e31f9b6146106005780639e6d95c714610623578063a6f9dae11461065b578063b05455321461068e578063b26f7efc146106b1578063bcdaea3614610717578063c9fa8f2d14610758578063ca2785bf1461077b578063dcb4775e1461078a578063e7d87cda146107d9578063f081d9bd1461080e575b61019f5b610000565b565b005b6101c0600480803590602001909190803590602001909190505061081d565b005b34610000576101cf610caf565b6040518082815260200191505060405180910390f35b34610000576101f2610cb5565b6040518082815260200191505060405180910390f35b346100005761024a600480803560ff16906020019091908035906020019091908035906020019091908035906020019091908035906020019091905050610cc0565b005b3461000057610259610e8d565b6040518082815260200191505060405180910390f35b346100005761027c610e93565b6040518082815260200191505060405180910390f35b346100005761029f610e99565b6040518082815260200191505060405180910390f35b34610000576102d06004808035906020019091905050610e9f565b6040518082815260200191505060405180910390f35b34610000576103016004808035906020019091905050610ebd565b6040518086600281116100005760ff168152602001858152602001848152602001831515151581526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405180910390f35b6103846004808035906020019091905050610f46565b005b34610000576103936111ce565b6040518082815260200191505060405180910390f35b34610000576103c460048080359060200190919050506111d4565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b346100005761042f6113f0565b6040518082815260200191505060405180910390f35b34610000576104526113f6565b6040518082600281116100005760ff16815260200191505060405180910390f35b34610000576104b6600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611409565b005b34610000576104e9600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118db565b005b34610000576104f8611b3f565b6040518082815260200191505060405180910390f35b346100005761054a600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080351515906020019091905050611b45565b005b3461000057610559611c7e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34610000576105bf6004808035906020019091908035906020019091905050611ca4565b005b34610000576105ce61200e565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b346100005761060d612039565b6040518082815260200191505060405180910390f35b346100005761063e600480803590602001909190505061203f565b604051808381526020018281526020019250505060405180910390f35b346100005761068c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061205f565b005b346100005761069b61212a565b6040518082815260200191505060405180910390f35b3461000057610715600480803590602001909190803590602001909190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050612130565b005b346100005761075660048080359060200190919080359060200190919080359060200190919080359060200190919080359060200190919050506125e9565b005b3461000057610765612670565b6040518082815260200191505060405180910390f35b3461000057610788612676565b005b3461000057610797612899565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34610000576107f460048080359060200190919050506128bf565b604051808215151515815260200191505060405180910390f35b346100005761081b6129d0565b005b600a543414151561082d57610000565b600081141561083b57610000565b61084861ffff82166128bf565b1561085257610000565b601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080160009054906101000a900460ff16156108ac57610000565b60058211156108ba57610000565b6000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055506000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055506000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055506000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601819055506000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080160016101000a81548160ff02191690831515021790555061ffff8116601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555081601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701819055506001601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080160006101000a81548160ff021916908315150217905550336014600061ffff8416815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601560006002600081548092919060010191905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600d5434604051809050600060405180830381858888f193505050501515610c3a57610000565b7f9e229c55f86322ec7d67b654476e2d52934c738b3cd58c026b5b2b6e9b7b992d816040518080602001838152602001828103825260098152602001807f41726220416464656400000000000000000000000000000000000000000000008152506020019250505060405180910390a15b5050565b600c5481565b600060035490505b90565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d1c57610000565b82600b819055508160098190555080600c8190555060026002811161000057601260009054906101000a900460ff1660028111610000571415610dc6577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e6486040518080602001828103825260108152602001807f53657474696e677320547765616b65640000000000000000000000000000000081525060200191505060405180910390a1610e86565b84601260006101000a81548160ff02191690836002811161000057021790555083600a81905550620249f0600d819055506201adb0600e81905550614e20600f81905550614e2060108190555062057e406011819055507f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e6486040518080602001828103825260108152602001807f53657474696e6773204368616e6765640000000000000000000000000000000081525060200191505060405180910390a15b5050505050565b600a5481565b60025481565b600b5481565b600061ffff660100000000000083811561000057041690505b919050565b60006000600060006000600060166000888152602001908152602001600020905080600b0160009054906101000a900460ff16925080600a0154945080600f0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915080600e0154935080600f0160149054906101000a900460ff1695505b5091939590929450565b60006000600060146000610f5986610e9f565b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561105b577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e64860405180806020018281038252600d8152602001807f496e76616c6964206847616d650000000000000000000000000000000000000081525060200191505060405180910390a160006002811161000057601260009054906101000a900460ff16600281116100005714151561105557610000565b6111c8565b5b6110658433612af9565b9150915081151561110c577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e64860405180806020018281038252600e8152602001807f496e76616c696420506c6179657200000000000000000000000000000000000081525060200191505060405180910390a160006002811161000057601260009054906101000a900460ff16600281116100005714151561110657610000565b6111c8565b5b3460166000868152602001908152602001600020600501826005811015610000570160005b82825401925050819055504260166000868152602001908152602001600020600d01819055507f9e229c55f86322ec7d67b654476e2d52934c738b3cd58c026b5b2b6e9b7b992d846040518080602001838152602001828103825260098152602001807f42657420416464656400000000000000000000000000000000000000000000008152506020019250505060405180910390a15b50505050565b60095481565b60006000600060006000600060025487101515611258577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e64860405180806020018281038252600b8152602001807f496e76616c69642041726200000000000000000000000000000000000000000081525060200191505060405180910390a16113e6565b6015600088815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169550600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614806113165750601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080160009054906101000a900460ff16155b15611388577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e64860405180806020018281038252600b8152602001807f496e76616c69642041726200000000000000000000000000000000000000000081525060200191505060405180910390a16113e6565b601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806003015494508060040154935080600601549150806005015492505b5091939590929450565b60085481565b601260009054906101000a900460ff1681565b60006000600060006000600060006000600061142d336114288e610e9f565b612bce565b15156114a0577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e64860405180806020018281038252600b8152602001807f496e76616c69642041726200000000000000000000000000000000000000000081525060200191505060405180910390a16118cd565b6114aa8c8c612af9565b98509850881515611522577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e64860405180806020018281038252600e8152602001807f496e76616c696420506c6179657200000000000000000000000000000000000081525060200191505060405180910390a16118cd565b601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209650601660008d81526020019081526020016000209550600094508986600501896005811015610000570160005b50541415156115aa576115a4338d6002612c82565b506118cd565b600093505b85600a01548410156115e15785600501846005811015610000570160005b5054850194505b83806001019450506115af565b6000851115611600576032858115610000570492508285039150611609565b60009250600091505b4286600d0181905550600086600b0160006101000a81548160ff021916908315150217905550600086600f0160146101000a81548160ff0219169083600281116100005702179055508a86600f0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508186600e018190555060008311156117b55782600760008282540192505081905550600b546007541180156116cf5750600c546008540142115b156117b4576007549050600060078190555042600881905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660115482604051809050600060405180830381858888f1935050505015156117b357806007819055507f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e6486040518080602001828103825260108152602001807f486f7573652d466565204572726f72310000000000000000000000000000000081525060200191505060405180910390a15b5b5b600093505b85600a01548410156117ed57600086600501856005811015610000570160005b50819055505b83806001019450506117ba565b866004016000815480929190600101919050555060046000815480929190600101919050555060008211156118cc578a73ffffffffffffffffffffffffffffffffffffffff16600f5483604051809050600060405180830381858888f19350505050151561185a57610000565b7f9e229c55f86322ec7d67b654476e2d52934c738b3cd58c026b5b2b6e9b7b992d8c60405180806020018381526020018281038252600b8152602001807f57696e6e657220506169640000000000000000000000000000000000000000008152506020019250505060405180910390a15b5b5b505050505050505050505050565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561193757610000565b60026002811161000057601260009054906101000a900460ff1660028111610000571480156119b45750600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15611a675780600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e6486040518080602001828103825260148152602001807f546f6b656e20506172746e65722046696e616c2100000000000000000000000081525060200191505060405180910390a1611b3b565b60026002811161000057601260009054906101000a900460ff166002811161000057141515611b3a5780600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e6486040518080602001828103825260178152602001807f546f6b656e20506172746e65722041737369676e65642100000000000000000081525060200191505060405180910390a15b5b5b50565b60065481565b3373ffffffffffffffffffffffffffffffffffffffff16600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611ba157610000565b611baa826130ca565b1515611c1d577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e64860405180806020018281038252600b8152602001807f696e76616c69642061726200000000000000000000000000000000000000000081525060200191505060405180910390a1611c78565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080160016101000a81548160ff0219169083151502179055505b5b5b5050565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060006000600060006000600060009450601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209350600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611e9857600092505b60025483108015611d6257508885125b15611e93576015600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169550601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209350600096505b836002015487108015611df557508885125b15611e8557601660008560000160008a8152602001908152602001600020548152602001908152602001600020915081600b0160009054906101000a900460ff168015611e49575060095482600d01544203115b15611e7757611e6f868560000160008a8152602001908152602001600020546001612c82565b508460010194505b5b8680600101975050611de3565b5b8280600101935050611d52565b612002565b611ea23389612bce565b1515611f15577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e6486040518080602001828103825260198152602001807f486f7573656b65657020696e76616c696420617262697465720000000000000081525060200191505060405180910390a1612001565b339550601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209350600096505b836002015487108015611f7057508885125b1561200057601660008560000160008a8152602001908152602001600020548152602001908152602001600020905080600b0160009054906101000a900460ff168015611fc4575060095481600d01544203115b15611ff257611fea868560000160008a8152602001908152602001600020546001612c82565b508460010194505b5b8680600101975050611f5e565b5b5b5b505050505050505050565b60006000600060006000600d549450600e549350600f549250601054915060115490505b9091929394565b60055481565b6000600061204c83610e9f565b915065ffffffffffff831690505b915091565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415806120db575060026002811161000057601260009054906101000a900460ff166002811161000057145b156120e557610000565b80600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b60045481565b60006000600061213f86610e9f565b925061214b3384612bce565b15156121be577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e64860405180806020018281038252600b8152602001807f496e76616c69642041726200000000000000000000000000000000000000000081525060200191505060405180910390a16125e1565b6121c733613130565b15612239577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e64860405180806020018281038252600a8152602001807f417262204c6f636b65640000000000000000000000000000000000000000000081525060200191505060405180910390a16125e1565b601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209150816007015484511415156122f5577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e6486040518080602001828103825260158152602001807f496e636f7272656374206e756d20706c6179657273000000000000000000000081525060200191505060405180910390a16125e1565b6000851315612309576123088584611ca4565b5b60166000878152602001908152602001600020600b0160019054906101000a900460ff16151561238f57600160166000888152602001908152602001600020600b0160016101000a81548160ff02191690831515021790555085826000016000846002016000815480929190600101919050558152602001908152602001600020819055505b6003600081548092919060010191905055508160030160008154809291906001019190505550600160166000888152602001908152602001600020600b0160006101000a81548160ff0219169083151502179055504260166000888152602001908152602001600020600c01819055504260166000888152602001908152602001600020600d0181905550600060166000888152602001908152602001600020600e0181905550600060166000888152602001908152602001600020600f0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550835160166000888152602001908152602001600020600a0181905550600090505b8351811080156124bd5750600581105b156125705783818151811015610000579060200190602002015160166000888152602001908152602001600020600001826005811015610000570160005b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060166000888152602001908152602001600020600501826005811015610000570160005b50819055505b80806001019150506124ad565b7f9e229c55f86322ec7d67b654476e2d52934c738b3cd58c026b5b2b6e9b7b992d8660405180806020018381526020018281038252600a8152602001807f47616d65204164646564000000000000000000000000000000000000000000008152506020019250505060405180910390a15b505050505050565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561264557610000565b84600d8190555083600e8190555082600f8190555081601081905550806011819055505b5050505050565b60075481565b6000600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561273c577f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e64860405180806020018281038252601e8152602001807f6f6e6c79206f776e65722063616c6c7320746869732066756e6374696f6e000081525060200191505060405180910390a1612895565b600060075411156128945760075490506000600781905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660115482604051809050600060405180830381858888f19350505050151561282357806007819055507f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e6486040518080602001828103825260108152602001807f486f7573652d466565204572726f72320000000000000000000000000000000081525060200191505060405180910390a1612893565b426008819055507f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e64860405180806020018281038252600e8152602001807f486f7573652d466565205061696400000000000000000000000000000000000081525060200191505060405180910390a15b5b5b5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600090506000821180156129355750600073ffffffffffffffffffffffffffffffffffffffff166014600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b80156129c05750601360006014600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080160009054906101000a900460ff165b156129ca57600190505b5b919050565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015612a4d575060026002811161000057601260009054906101000a900460ff16600281116100005714155b15612a8d57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b7f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e6486040518080602001828103825260138152602001807f4b696c6c20617474656d7074206661696c65640000000000000000000000000081525060200191505060405180910390a15b5b565b60006000600060009250612b0c8561319d565b15612bc557600090505b60166000868152602001908152602001600020600a0154811015612bc4578373ffffffffffffffffffffffffffffffffffffffff1660166000878152602001908152602001600020600001826005811015610000570160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612bb65760019250809150612bc4565b5b8080600101915050612b16565b5b5b509250929050565b600060009050601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080160009054906101000a900460ff168015612c71575081601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154145b15612c7b57600190505b5b92915050565b6000600060006000600060166000888152602001908152602001600020935083600b0160009054906101000a900460ff16156130be5760019450600092505b83600a0154831015612e4057600084600501846005811015610000570160005b50541115612e325783600001836005811015610000570160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915083600501836005811015610000570160005b50549050600084600501846005811015610000570160005b50819055508173ffffffffffffffffffffffffffffffffffffffff1660105482604051809050600060405180830381858888f193505050501515612e3157806007600082825401925050819055507fe0e85fe8d69ca593247064bffd9438c76090518a0ec0f0c452c31218c8b9e6a48260405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825260158152602001807f43616e6e6f7420526566756e64204164647265737300000000000000000000008152506020019250505060405180910390a15b5b5b8280600101935050612cc1565b600084600b0160006101000a81548160ff0219169083151502179055508584600f0160146101000a81548160ff021916908360028111610000570217905550600260028111610000578660028111610000571415612f6957600560008154809291906001019190505550601360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501600081548092919060010191905055507f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e6486040518080602001828103825260128152602001807f47616d652041626f727465642d4368656174000000000000000000000000000081525060200191505060405180910390a16130bd565b60016002811161000057866002811161000057141561305357600660008154809291906001019190505550601360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601600081548092919060010191905055507f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e6486040518080602001828103825260148152602001807f47616d652041626f727465642d54696d654f757400000000000000000000000081525060200191505060405180910390a16130bc565b7f1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e64860405180806020018281038252600d8152602001807f47616d652041626f72746564210000000000000000000000000000000000000081525060200191505060405180910390a15b5b5b5b505050509392505050565b600060009050601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080160009054906101000a900460ff161561312a57600190505b5b919050565b60006000905061313f826130ca565b1561319757601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080160019054906101000a900460ff1690505b5b919050565b6000600090506000821180156131d3575060166000838152602001908152602001600020600b0160009054906101000a900460ff165b156131dd57600190505b5b9190505600a165627a7a723058200e27c804ca1236762feefdc5eb6488ff76511c869956199bc92a1aa566ecebe00029

Swarm Source

bzzr://0e27c804ca1236762feefdc5eb6488ff76511c869956199bc92a1aa566ecebe0

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.