Contract 0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d

 

TxHash Block Age From To Value [TxFee]
0xbaa52557ca77f0539d3669a0a71f8ca3beef99f572ceac507cdd20e62248fc5f72304311 hr 20 mins ago0x0c6fc5083f7f4ec4a3b2de37ccef88a72b64fa1a  IN   0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0 Ether0.00706835
0x770572ce8327676948ab4d88d1d7d4dab47d2ee4661b061ca77e1078d98c3de072304261 hr 22 mins ago0xfbe565f98802697cf37726989b2cba5772fa346c  IN   0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0 Ether0.009460763466
0x8eb50a361f5410cd1fbfa224b8aade6545dbf567180d10e0e51c0f61728dafab72303791 hr 40 mins ago0xfbe565f98802697cf37726989b2cba5772fa346c  IN   0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0 Ether0.0068745195
0xd1a9aa4778ca667768a4c7ae0af1d0f83d5d6d03d74d0a001013719ba851e7e772299364 hrs 10 mins ago0x0c6fc5083f7f4ec4a3b2de37ccef88a72b64fa1a  IN   0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0 Ether0.012352392
0x374d32017e234429588068913d694936a746e8f50dac9ed1b8946d7bedcb4a5e72299244 hrs 14 mins ago0x0c6fc5083f7f4ec4a3b2de37ccef88a72b64fa1a  IN   0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0 Ether0.010528424
0xdb739bb124cb4f42e4c9c39aef758eb7eec87952ca7611268b6b4fbbd679736372296875 hrs 38 mins ago0x92a1d9d9b8d8310ba2d0af09bb7e86031d147ddd  IN   0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0 Ether0.004211307
0x6b94a9ea1392ce365920d13914339262ad991859bfb1243763d6d302200a410672296525 hrs 48 mins ago0x92a1d9d9b8d8310ba2d0af09bb7e86031d147ddd  IN   0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0 Ether0.004139628
0x579977a0963bf0bee55a2a08730f855ac09d77715da6726bf096ca1225fadecf72292568 hrs 6 mins ago0xa43d3cfaf7a968d008e693d193d892c3474622cc  IN   0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0 Ether0.002693432
0x02bb6977f2d22f8b25e3c04e4d3a6541d383e555cd4585e5d3a4d4e448a3067372292568 hrs 6 mins ago0x0c6fc5083f7f4ec4a3b2de37ccef88a72b64fa1a  IN   0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0 Ether0.00266379
0x5122924a730a9d9564bc223f21bdfbeb782efb49b58862777f6ab2a8777e75a572292198 hrs 17 mins ago0x0c6fc5083f7f4ec4a3b2de37ccef88a72b64fa1a  IN   0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0 Ether0.004352151
0xa056fb5bad952feae7ee6bbfaa229de20d03f0c6056567e21fa9b837e46c8dde72292068 hrs 21 mins ago0x0c6fc5083f7f4ec4a3b2de37ccef88a72b64fa1a  IN   0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0 Ether0.00716972
0x0906bc2b3d95e0165deec141eef889af9a76ef907e2033bde97e27db59814fef722876610 hrs 45 mins ago0x274e0c39175fab58d4f0d4de3f1ff86472325a3f  IN   0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0 Ether0.002004464
0x9bbfe8216b9d8a36864637e9cd0888374e7e2f4f43a73cdcb4420438478e7c6d722848912 hrs 26 mins ago0x140e683864fc714935ed162b9abf802fa7bb5e58  IN   0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0 Ether0.002778002
0x8241314768ff2439ddf020693215e068defaeaf6470540ed70a4fd66203f6404722847912 hrs 29 mins ago0x140e683864fc714935ed162b9abf802fa7bb5e58  IN   0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0 Ether0.002997102
0x8d6830e816e6c39c827a2a9e87f662aceb852a7ff7d3d43e2707971e09733116722846412 hrs 34 mins ago0x140e683864fc714935ed162b9abf802fa7bb5e58  IN   0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0 Ether0.002732544
0xdfbb8d659aabb23a6fc6ce2246dcd67482ab33ab4b109b330e7ea61faee799c3722846012 hrs 35 mins ago0xb91ebd8586a6c6716c23911fa929ab2254add10e  IN   0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0 Ether0.006102136
0xc61adfd93e9182a34730b01602a173b143235c50d195d6bc6b22427534d389e7722845712 hrs 36 mins ago0x0c6fc5083f7f4ec4a3b2de37ccef88a72b64fa1a  IN   0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0 Ether0.00681169
0x9a0500cb9b5b4e5a44e3fadf1a45adcdfdd7c249cb2949cc35db408072b96bcd722822913 hrs 51 mins ago0x0c6fc5083f7f4ec4a3b2de37ccef88a72b64fa1a  IN   0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0 Ether0.007392305
0xe21d2f5d3975586c8385de302b7c5e0e1b96d2306edb91f6a92636f485bcd5bd722793215 hrs 31 mins ago0x18ecb66d903aff63dee981de69290c77ebeaf159  IN   0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0 Ether0.006896165
0x59d8741b70ae09731fe5ed7daf989690d85d75940da05759ddccdbabd22f461b722766817 hrs 6 mins ago0x140e683864fc714935ed162b9abf802fa7bb5e58  IN   0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0 Ether0.0025230465
0x184778b4e0bd6971caa813d9b2ceca89756a0739f8fc1e8df2296c1d9f9467c6722764417 hrs 13 mins ago0x140e683864fc714935ed162b9abf802fa7bb5e58  IN   0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0 Ether0.002853802
0x3afcff5f9a43fe1ddab80dccae41f22af10d3cf11395986ad3f432ab7133877b722748517 hrs 59 mins ago0x140e683864fc714935ed162b9abf802fa7bb5e58  IN   0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0 Ether0.002817838
0x945d49cc1c1891b95dcfcd0eaef6b27964d0c762296fbb04ae5eb640fa18bd75722746018 hrs 6 mins ago0x140e683864fc714935ed162b9abf802fa7bb5e58  IN   0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0 Ether0.002942156
0x940228ebb0ccd28a13f40cc94aef2cbeb2da599a7f3a3ad0e393e2b963743a9e722745118 hrs 9 mins ago0x140e683864fc714935ed162b9abf802fa7bb5e58  IN   0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0 Ether0.002847972
0x2368c22b49e5ee90c462c757514ae6800c34177ff2c3a92df31fc7f287c2a244722743618 hrs 12 mins ago0x140e683864fc714935ed162b9abf802fa7bb5e58  IN   0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0 Ether0.002680732
[ Download CSV Export 

Latest 3 Internal Transactions Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0xf47d128290a1ae75fd8655ada82afcf1bee47b7627324d4efe7fd271254972e2715516416 days 10 hrs ago0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0xc0fc330729cd77e6c403da011ef52aac7b00b7d20.04 Ether
0x53ac99a359c5998caee88e76cf8ee79c66a850e0217279ef0639a5ec06b9e754714572218 days 8 hrs ago0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0xc0fc330729cd77e6c403da011ef52aac7b00b7d20.03 Ether
0xcf3aace08dd60d6d83e9d92fa31da3934dfb1494276d6cc6d0246d534c65e55e713842819 days 20 hrs ago0x82ed9b45cce53d7a3c83039a48b1531b2ec1f47d0xc0fc330729cd77e6c403da011ef52aac7b00b7d20.01 Ether
[ Download CSV Export 
Contract Source Code Verified (Exact Match)
Contract Name: MainBattle
Compiler Version: v0.4.25+commit.59dbf8f1
Optimization Enabled: No
Runs (Optimizer):  200


Contract Source Code
pragma solidity 0.4.25;

contract Ownable {
    address public owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    function _validateAddress(address _addr) internal pure {
        require(_addr != address(0), "invalid address");
    }

    constructor() public {
        owner = msg.sender;
    }

    modifier onlyOwner() {
        require(msg.sender == owner, "not a contract owner");
        _;
    }

    function transferOwnership(address newOwner) public onlyOwner {
        _validateAddress(newOwner);
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

}

contract Pausable is Ownable {
    event Pause();
    event Unpause();

    bool public paused = false;

    modifier whenNotPaused() {
        require(!paused, "contract is paused");
        _;
    }

    modifier whenPaused() {
        require(paused, "contract is not paused");
        _;
    }

    function pause() public onlyOwner whenNotPaused {
        paused = true;
        emit Pause();
    }

    function unpause() public onlyOwner whenPaused {
        paused = false;
        emit Unpause();
    }
}

contract Controllable is Ownable {
    mapping(address => bool) controllers;

    modifier onlyController {
        require(_isController(msg.sender), "no controller rights");
        _;
    }

    function _isController(address _controller) internal view returns (bool) {
        return controllers[_controller];
    }

    function _setControllers(address[] _controllers) internal {
        for (uint256 i = 0; i < _controllers.length; i++) {
            _validateAddress(_controllers[i]);
            controllers[_controllers[i]] = true;
        }
    }
}

contract Upgradable is Controllable {
    address[] internalDependencies;
    address[] externalDependencies;

    function getInternalDependencies() public view returns(address[]) {
        return internalDependencies;
    }

    function getExternalDependencies() public view returns(address[]) {
        return externalDependencies;
    }

    function setInternalDependencies(address[] _newDependencies) public onlyOwner {
        for (uint256 i = 0; i < _newDependencies.length; i++) {
            _validateAddress(_newDependencies[i]);
        }
        internalDependencies = _newDependencies;
    }

    function setExternalDependencies(address[] _newDependencies) public onlyOwner {
        externalDependencies = _newDependencies;
        _setControllers(_newDependencies);
    }
}

contract HumanOriented {
    modifier onlyHuman() {
        require(msg.sender == tx.origin, "not a human");
        _;
    }
}


contract Events {
    function emitBattleEnded(uint256, uint256, uint256, uint256, uint256, uint256, bool, uint256) external;
    function emitBattleDragonsDetails(uint256, uint8, uint32, uint8, uint32) external;
    function emitBattleHealthAndMana(uint256, uint32, uint32, uint32, uint32, uint32, uint32, uint32, uint32) external;
    function emitBattleSkills(uint256, uint32, uint32, uint32, uint32, uint32, uint32, uint32, uint32, uint32, uint32) external;
    function emitBattleTacticsAndBuffs(uint256, uint8, uint8, uint8, uint8, uint32[5], uint32[5]) external;
    function emitGladiatorBattleEnded(uint256, uint256, address, address, uint256, bool) external;
    function emitGladiatorBattleCreated(uint256, address, uint256, uint256, bool) external;
    function emitGladiatorBattleApplicantAdded(uint256, address, uint256) external;
    function emitGladiatorBattleOpponentSelected(uint256, uint256) external;
    function emitGladiatorBattleCancelled(uint256) external;
    function emitGladiatorBattleBetReturned(uint256, address) external;
    function emitGladiatorBattleOpponentSelectTimeUpdated(uint256, uint256) external;
    function emitGladiatorBattleBlockNumberUpdated(uint256, uint256) external;
    function emitGladiatorBattleSpectatorBetPlaced(uint256, address, bool, uint256, bool) external;
    function emitGladiatorBattleSpectatorBetRemoved(uint256, address) external;
    function emitGladiatorBattleSpectatorRewardPaidOut(uint256, address, uint256, bool) external;
}

contract BattleController {
    function startBattle(address, uint256, uint256, uint8[2]) external returns (uint256, uint256, uint256[2]);
    function matchOpponents(uint256) external view returns (uint256[6]);
    function resetDragonBuffs(uint256) external;
}

contract Getter {
    function getDragonProfile(uint256) external view returns (bytes32, uint16, uint256, uint8, uint8, uint16, bool, uint32);
    function getDragonTactics(uint256) external view returns (uint8, uint8);
    function getDragonSkills(uint256) external view returns (uint32, uint32, uint32, uint32, uint32);
    function getDragonCurrentHealthAndMana(uint256) external view returns (uint32, uint32, uint8, uint8);
    function getDragonMaxHealthAndMana(uint256) external view returns (uint32, uint32);
    function getDragonBuffs(uint256) external view returns (uint32[5]);
    function getDragonApplicationForGladiatorBattle(uint256) external view returns (uint256, uint8[2], address);
    function getGladiatorBattleParticipants(uint256) external view returns (address, uint256, address, uint256, address, uint256);
}

contract GladiatorBattle {
    function create(address, uint256, uint8[2], bool, uint256, uint16, uint256) external returns (uint256);
    function apply(uint256, address, uint256, uint8[2], uint256) external;
    function chooseOpponent(address, uint256, uint256, bytes32) external;
    function autoSelectOpponent(uint256, bytes32) external returns (uint256);
    function start(uint256) external returns (uint256, uint256, uint256, bool);
    function cancel(address, uint256, bytes32) external;
    function returnBet(address, uint256) external;
    function addTimeForOpponentSelect(address, uint256) external returns (uint256);
    function updateBattleBlockNumber(uint256) external returns (uint256);
}

contract GladiatorBattleSpectators {
    function placeBet(address, uint256, bool, uint256, uint256) external returns (bool);
    function removeBet(address, uint256) external;
    function requestReward(address, uint256) external returns (uint256, bool);
}



contract MainBattle is Upgradable, Pausable, HumanOriented {
    BattleController battleController;
    Getter getter;
    GladiatorBattle gladiatorBattle;
    GladiatorBattleSpectators gladiatorBattleSpectators;
    Events events;

    function matchOpponents(uint256 _id) external view returns (uint256[6]) {
        return battleController.matchOpponents(_id);
    }

    function battle(
        uint256 _id,
        uint256 _opponentId,
        uint8[2] _tactics
    ) external onlyHuman whenNotPaused {
        uint32 _attackerInitHealth;
        uint32 _attackerInitMana;
        uint32 _opponentInitHealth;
        uint32 _opponentInitMana;
        (_attackerInitHealth, _attackerInitMana, , ) = getter.getDragonCurrentHealthAndMana(_id);
        (_opponentInitHealth, _opponentInitMana, , ) = getter.getDragonCurrentHealthAndMana(_opponentId);

        uint256 _battleId;
        uint256 _seed;
        uint256[2] memory _winnerLooserIds;
        (
            _battleId,
            _seed,
            _winnerLooserIds
        ) = battleController.startBattle(msg.sender, _id, _opponentId, _tactics);

        _emitBattleEventsPure(
            _id,
            _opponentId,
            _tactics,
            _winnerLooserIds,
            _battleId,
            _seed,
            _attackerInitHealth,
            _attackerInitMana,
            _opponentInitHealth,
            _opponentInitMana
        );
    }

    function _emitBattleEventsPure(
        uint256 _id,
        uint256 _opponentId,
        uint8[2] _tactics,
        uint256[2] _winnerLooserIds,
        uint256 _battleId,
        uint256 _seed,
        uint32 _attackerInitHealth,
        uint32 _attackerInitMana,
        uint32 _opponentInitHealth,
        uint32 _opponentInitMana
    ) internal {
        _saveBattleHealthAndMana(
            _battleId,
            _id,
            _opponentId,
            _attackerInitHealth,
            _attackerInitMana,
            _opponentInitHealth,
            _opponentInitMana
        );
        _emitBattleEvents(
            _id,
            _opponentId,
            _tactics,
            [0, 0],
            _winnerLooserIds[0],
            _winnerLooserIds[1],
            _battleId,
            _seed,
            0
        );
    }

    function _emitBattleEventsForGladiatorBattle(
        uint256 _battleId,
        uint256 _seed,
        uint256 _gladiatorBattleId
    ) internal {
        uint256 _firstDragonId;
        uint256 _secondDragonId;
        uint256 _winnerDragonId;
        (
          , _firstDragonId,
          , _secondDragonId,
          , _winnerDragonId
        ) = getter.getGladiatorBattleParticipants(_gladiatorBattleId);

        _saveBattleHealthAndManaFull(
            _battleId,
            _firstDragonId,
            _secondDragonId
        );

        uint8[2] memory _tactics;
        uint8[2] memory _tactics2;

        ( , _tactics, ) = getter.getDragonApplicationForGladiatorBattle(_firstDragonId);
        ( , _tactics2, ) = getter.getDragonApplicationForGladiatorBattle(_secondDragonId);

        _emitBattleEvents(
            _firstDragonId,
            _secondDragonId,
            _tactics,
            _tactics2,
            _winnerDragonId,
            _winnerDragonId != _firstDragonId ? _firstDragonId : _secondDragonId,
            _battleId,
            _seed,
            _gladiatorBattleId
        );
    }

    function _emitBattleEvents(
        uint256 _id,
        uint256 _opponentId,
        uint8[2] _tactics,
        uint8[2] _tactics2,
        uint256 _winnerId,
        uint256 _looserId,
        uint256 _battleId,
        uint256 _seed,
        uint256 _gladiatorBattleId
    ) internal {
        _saveBattleData(
            _battleId,
            _seed,
            _id,
            _winnerId,
            _looserId,
            _gladiatorBattleId
        );

        _saveBattleDragonsDetails(
            _battleId,
            _id,
            _opponentId
        );

        _saveBattleSkills(
            _battleId,
            _id,
            _opponentId
        );
        _saveBattleTacticsAndBuffs(
            _battleId,
            _id,
            _opponentId,
            _tactics[0],
            _tactics[1],
            _tactics2[0],
            _tactics2[1]
        );
    }

    function _saveBattleData(
        uint256 _battleId,
        uint256 _seed,
        uint256 _attackerId,
        uint256 _winnerId,
        uint256 _looserId,
        uint256 _gladiatorBattleId
    ) internal {

        events.emitBattleEnded(
            _battleId,
            now, // solium-disable-line security/no-block-members
            _seed,
            _attackerId,
            _winnerId,
            _looserId,
            _gladiatorBattleId > 0,
            _gladiatorBattleId
        );
    }

    function _saveBattleDragonsDetails(
        uint256 _battleId,
        uint256 _winnerId,
        uint256 _looserId
    ) internal {
        uint8 _winnerLevel;
        uint32 _winnerCoolness;
        uint8 _looserLevel;
        uint32 _looserCoolness;
        (, , , _winnerLevel, , , , _winnerCoolness) = getter.getDragonProfile(_winnerId);
        (, , , _looserLevel, , , , _looserCoolness) = getter.getDragonProfile(_looserId);

        events.emitBattleDragonsDetails(
            _battleId,
            _winnerLevel,
            _winnerCoolness,
            _looserLevel,
            _looserCoolness
        );
    }

    function _saveBattleHealthAndManaFull(
        uint256 _battleId,
        uint256 _firstId,
        uint256 _secondId
    ) internal {
        uint32 _firstInitHealth;
        uint32 _firstInitMana;
        uint32 _secondInitHealth;
        uint32 _secondInitMana;

        (_firstInitHealth, _firstInitMana) = getter.getDragonMaxHealthAndMana(_firstId);
        (_secondInitHealth, _secondInitMana) = getter.getDragonMaxHealthAndMana(_secondId);

        _saveBattleHealthAndMana(
            _battleId,
            _firstId,
            _secondId,
            _firstInitHealth,
            _firstInitMana,
            _secondInitHealth,
            _secondInitMana
        );
    }

    function _saveBattleHealthAndMana(
        uint256 _battleId,
        uint256 _attackerId,
        uint256 _opponentId,
        uint32 _attackerInitHealth,
        uint32 _attackerInitMana,
        uint32 _opponentInitHealth,
        uint32 _opponentInitMana
    ) internal {
        uint32 _attackerMaxHealth;
        uint32 _attackerMaxMana;
        uint32 _opponentMaxHealth;
        uint32 _opponentMaxMana;
        (_attackerMaxHealth, _attackerMaxMana) = getter.getDragonMaxHealthAndMana(_attackerId);
        (_opponentMaxHealth, _opponentMaxMana) = getter.getDragonMaxHealthAndMana(_opponentId);

        events.emitBattleHealthAndMana(
            _battleId,
            _attackerMaxHealth,
            _attackerMaxMana,
            _attackerInitHealth,
            _attackerInitMana,
            _opponentMaxHealth,
            _opponentMaxMana,
            _opponentInitHealth,
            _opponentInitMana
        );
    }

    function _saveBattleSkills(
        uint256 _battleId,
        uint256 _attackerId,
        uint256 _opponentId
    ) internal {
        uint32 _attackerAttack;
        uint32 _attackerDefense;
        uint32 _attackerStamina;
        uint32 _attackerSpeed;
        uint32 _attackerIntelligence;
        uint32 _opponentAttack;
        uint32 _opponentDefense;
        uint32 _opponentStamina;
        uint32 _opponentSpeed;
        uint32 _opponentIntelligence;

        (
            _attackerAttack,
            _attackerDefense,
            _attackerStamina,
            _attackerSpeed,
            _attackerIntelligence
        ) = getter.getDragonSkills(_attackerId);
        (
            _opponentAttack,
            _opponentDefense,
            _opponentStamina,
            _opponentSpeed,
            _opponentIntelligence
        ) = getter.getDragonSkills(_opponentId);

        events.emitBattleSkills(
            _battleId,
            _attackerAttack,
            _attackerDefense,
            _attackerStamina,
            _attackerSpeed,
            _attackerIntelligence,
            _opponentAttack,
            _opponentDefense,
            _opponentStamina,
            _opponentSpeed,
            _opponentIntelligence
        );
    }

    function _saveBattleTacticsAndBuffs(
        uint256 _battleId,
        uint256 _id,
        uint256 _opponentId,
        uint8 _attackerMeleeChance,
        uint8 _attackerAttackChance,
        uint8 _opponentMeleeChance,
        uint8 _opponentAttackChance
    ) internal {
        if (_opponentMeleeChance == 0 || _opponentAttackChance == 0) {
            (
                _opponentMeleeChance,
                _opponentAttackChance
            ) = getter.getDragonTactics(_opponentId);
        }

        uint32[5] memory _buffs = getter.getDragonBuffs(_id);
        uint32[5] memory _opponentBuffs = getter.getDragonBuffs(_opponentId);

        battleController.resetDragonBuffs(_id);
        battleController.resetDragonBuffs(_opponentId);

        events.emitBattleTacticsAndBuffs(
            _battleId,
            _attackerMeleeChance,
            _attackerAttackChance,
            _opponentMeleeChance,
            _opponentAttackChance,
            _buffs,
            _opponentBuffs
        );
    }

    // GLADIATOR BATTLES

    function createGladiatorBattle(
        uint256 _dragonId,
        uint8[2] _tactics,
        bool _isGold,
        uint256 _bet,
        uint16 _counter
    ) external payable onlyHuman whenNotPaused {
        address(gladiatorBattle).transfer(msg.value);
        uint256 _id = gladiatorBattle.create(msg.sender, _dragonId, _tactics, _isGold, _bet, _counter, msg.value);
        events.emitGladiatorBattleCreated(_id, msg.sender, _dragonId, _bet, _isGold);
    }

    function applyForGladiatorBattle(
        uint256 _battleId,
        uint256 _dragonId,
        uint8[2] _tactics
    ) external payable onlyHuman whenNotPaused {
        address(gladiatorBattle).transfer(msg.value);
        gladiatorBattle.apply(_battleId, msg.sender, _dragonId, _tactics, msg.value);
        events.emitGladiatorBattleApplicantAdded(_battleId, msg.sender, _dragonId);
    }

    function chooseOpponentForGladiatorBattle(
        uint256 _battleId,
        uint256 _opponentId,
        bytes32 _applicantsHash
    ) external onlyHuman whenNotPaused {
        gladiatorBattle.chooseOpponent(msg.sender, _battleId, _opponentId, _applicantsHash);
        events.emitGladiatorBattleOpponentSelected(_battleId, _opponentId);
    }

    function autoSelectOpponentForGladiatorBattle(
        uint256 _battleId,
        bytes32 _applicantsHash
    ) external onlyHuman whenNotPaused {
        uint256 _opponentId = gladiatorBattle.autoSelectOpponent(_battleId, _applicantsHash);
        events.emitGladiatorBattleOpponentSelected(_battleId, _opponentId);
    }

    function _emitGladiatorBattleEnded(
        uint256 _gladiatorBattleId,
        uint256 _battleId,
        address _winner,
        address _looser,
        uint256 _reward,
        bool _isGold
    ) internal {
        events.emitGladiatorBattleEnded(
            _gladiatorBattleId,
            _battleId,
            _winner,
            _looser,
            _reward,
            _isGold
        );
    }

    function startGladiatorBattle(
        uint256 _gladiatorBattleId
    ) external onlyHuman whenNotPaused returns (uint256) {
        (
            uint256 _seed,
            uint256 _battleId,
            uint256 _reward,
            bool _isGold
        ) = gladiatorBattle.start(_gladiatorBattleId);

        (
            address _firstUser, ,
            address _secondUser, ,
            address _winner,
            uint256 _winnerId
        ) = getter.getGladiatorBattleParticipants(_gladiatorBattleId);

        _emitGladiatorBattleEnded(
            _gladiatorBattleId,
            _battleId,
            _winner,
            _winner != _firstUser ? _firstUser : _secondUser,
            _reward,
            _isGold
        );

        _emitBattleEventsForGladiatorBattle(
            _battleId,
            _seed,
            _gladiatorBattleId
        );

        return _winnerId;
    }

    function cancelGladiatorBattle(
        uint256 _battleId,
        bytes32 _applicantsHash
    ) external onlyHuman whenNotPaused {
        gladiatorBattle.cancel(msg.sender, _battleId, _applicantsHash);
        events.emitGladiatorBattleCancelled(_battleId);
    }

    function returnBetFromGladiatorBattle(uint256 _battleId) external onlyHuman whenNotPaused {
        gladiatorBattle.returnBet(msg.sender, _battleId);
        events.emitGladiatorBattleBetReturned(_battleId, msg.sender);
    }

    function addTimeForOpponentSelectForGladiatorBattle(uint256 _battleId) external onlyHuman whenNotPaused {
        uint256 _blockNumber = gladiatorBattle.addTimeForOpponentSelect(msg.sender, _battleId);
        events.emitGladiatorBattleOpponentSelectTimeUpdated(_battleId, _blockNumber);
    }

    function updateBlockNumberOfGladiatorBattle(uint256 _battleId) external onlyHuman whenNotPaused {
        uint256 _blockNumber = gladiatorBattle.updateBattleBlockNumber(_battleId);
        events.emitGladiatorBattleBlockNumberUpdated(_battleId, _blockNumber);
    }

    function placeSpectatorBetOnGladiatorBattle(
        uint256 _battleId,
        bool _willCreatorWin,
        uint256 _value
    ) external payable onlyHuman whenNotPaused {
        address(gladiatorBattleSpectators).transfer(msg.value);
        bool _isGold = gladiatorBattleSpectators.placeBet(msg.sender, _battleId, _willCreatorWin, _value, msg.value);
        events.emitGladiatorBattleSpectatorBetPlaced(_battleId, msg.sender, _willCreatorWin, _value, _isGold);
    }

    function removeSpectatorBetFromGladiatorBattle(
        uint256 _battleId
    ) external onlyHuman whenNotPaused {
        gladiatorBattleSpectators.removeBet(msg.sender, _battleId);
        events.emitGladiatorBattleSpectatorBetRemoved(_battleId, msg.sender);
    }

    function requestSpectatorRewardForGladiatorBattle(
        uint256 _battleId
    ) external onlyHuman whenNotPaused {
        (uint256 _reward, bool _isGold) = gladiatorBattleSpectators.requestReward(msg.sender, _battleId);
        events.emitGladiatorBattleSpectatorRewardPaidOut(_battleId, msg.sender, _reward, _isGold);
    }

    // UPDATE CONTRACT

    function setInternalDependencies(address[] _newDependencies) public onlyOwner {
        super.setInternalDependencies(_newDependencies);

        battleController = BattleController(_newDependencies[0]);
        gladiatorBattle = GladiatorBattle(_newDependencies[1]);
        gladiatorBattleSpectators = GladiatorBattleSpectators(_newDependencies[2]);
        getter = Getter(_newDependencies[3]);
        events = Events(_newDependencies[4]);
    }
}

Contract ABI
[{"constant":false,"inputs":[{"name":"_dragonId","type":"uint256"},{"name":"_tactics","type":"uint8[2]"},{"name":"_isGold","type":"bool"},{"name":"_bet","type":"uint256"},{"name":"_counter","type":"uint16"}],"name":"createGladiatorBattle","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_opponentId","type":"uint256"},{"name":"_tactics","type":"uint8[2]"}],"name":"battle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_battleId","type":"uint256"},{"name":"_opponentId","type":"uint256"},{"name":"_applicantsHash","type":"bytes32"}],"name":"chooseOpponentForGladiatorBattle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_battleId","type":"uint256"}],"name":"requestSpectatorRewardForGladiatorBattle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"matchOpponents","outputs":[{"name":"","type":"uint256[6]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newDependencies","type":"address[]"}],"name":"setExternalDependencies","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_battleId","type":"uint256"},{"name":"_willCreatorWin","type":"bool"},{"name":"_value","type":"uint256"}],"name":"placeSpectatorBetOnGladiatorBattle","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_newDependencies","type":"address[]"}],"name":"setInternalDependencies","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_battleId","type":"uint256"}],"name":"updateBlockNumberOfGladiatorBattle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_battleId","type":"uint256"}],"name":"removeSpectatorBetFromGladiatorBattle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_battleId","type":"uint256"},{"name":"_applicantsHash","type":"bytes32"}],"name":"cancelGladiatorBattle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_battleId","type":"uint256"},{"name":"_applicantsHash","type":"bytes32"}],"name":"autoSelectOpponentForGladiatorBattle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_battleId","type":"uint256"}],"name":"addTimeForOpponentSelectForGladiatorBattle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_battleId","type":"uint256"}],"name":"returnBetFromGladiatorBattle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getInternalDependencies","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_gladiatorBattleId","type":"uint256"}],"name":"startGladiatorBattle","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getExternalDependencies","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_battleId","type":"uint256"},{"name":"_dragonId","type":"uint256"},{"name":"_tactics","type":"uint8[2]"}],"name":"applyForGladiatorBattle","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

Contract Creation Code
60806040526000600460006101000a81548160ff021916908315150217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061571f8061006e6000396000f300608060405260043610610133576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806303ae8508146101385780631c20361214610186578063278c2977146101c75780633721a6341461020c5780633f4ba83a146102395780635c975abb146102505780635cc53bc71461027f57806365fc1253146102e8578063690973b61461034e57806369c0ad931461038457806378517536146103ea5780637c45c98a1461041757806382b7fa4e146104445780638456cb591461047f57806384680fc2146104965780638da5cb5b146104d15780639e6b0faf14610528578063a510fd2b14610555578063b75c4f8014610582578063c26d7daa146105ee578063e6458f6e1461062f578063f2fde38b1461069b578063fec5f0d2146106de575b600080fd5b610184600480360381019080803590602001909291908060400190919291929080351515906020019092919080359060200190929190803561ffff169060200190929190505050610712565b005b34801561019257600080fd5b506101c5600480360381019080803590602001909291908035906020019092919080604001909192919290505050610ae5565b005b3480156101d357600080fd5b5061020a60048036038101908080359060200190929190803590602001909291908035600019169060200190929190505050610f8a565b005b34801561021857600080fd5b506102376004803603810190808035906020019092919050505061125d565b005b34801561024557600080fd5b5061024e61158b565b005b34801561025c57600080fd5b5061026561171c565b604051808215151515815260200191505060405180910390f35b34801561028b57600080fd5b506102aa6004803603810190808035906020019092919050505061172f565b6040518082600660200280838360005b838110156102d55780820151818401526020810190506102ba565b5050505090500191505060405180910390f35b3480156102f457600080fd5b5061034c60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611810565b005b61038260048036038101908080359060200190929190803515159060200190929190803590602001909291905050506118f7565b005b34801561039057600080fd5b506103e860048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611cab565b005b3480156103f657600080fd5b5061041560048036038101908080359060200190929190505050611f38565b005b34801561042357600080fd5b50610442600480360381019080803590602001909291905050506121e5565b005b34801561045057600080fd5b5061047d6004803603810190808035906020019092919080356000191690602001909291905050506124ca565b005b34801561048b57600080fd5b5061049461278c565b005b3480156104a257600080fd5b506104cf60048036038101908080359060200190929190803560001916906020019092919050505061291e565b005b3480156104dd57600080fd5b506104e6612bdc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561053457600080fd5b5061055360048036038101908080359060200190929190505050612c01565b005b34801561056157600080fd5b5061058060048036038101908080359060200190929190505050612ee2565b005b34801561058e57600080fd5b506105976131c7565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105da5780820151818401526020810190506105bf565b505050509050019250505060405180910390f35b3480156105fa57600080fd5b5061061960048036038101908080359060200190929190505050613255565b6040518082815260200191505060405180910390f35b34801561063b57600080fd5b506106446135e9565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561068757808201518184015260208101905061066c565b505050509050019250505060405180910390f35b3480156106a757600080fd5b506106dc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613677565b005b610710600480360381019080803590602001909291908035906020019092919080604001909192919290505050613802565b005b60003273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f6e6f7420612068756d616e00000000000000000000000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900460ff1615151561083c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f636f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156108a4573d6000803e3d6000fd5b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ad10f1d338888888888346040518863ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001878152602001866002602002808284378201915050851515151581526020018481526020018361ffff1661ffff168152602001828152602001975050505050505050602060405180830381600087803b1580156109a757600080fd5b505af11580156109bb573d6000803e3d6000fd5b505050506040513d60208110156109d157600080fd5b81019080805190602001909291905050509050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166365186fec82338987896040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018215151515815260200195505050505050600060405180830381600087803b158015610ac557600080fd5b505af1158015610ad9573d6000803e3d6000fd5b50505050505050505050565b600080600080600080610af661559c565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f6e6f7420612068756d616e00000000000000000000000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900460ff16151515610c1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f636f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8640dc78b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050608060405180830381600087803b158015610caf57600080fd5b505af1158015610cc3573d6000803e3d6000fd5b505050506040513d6080811015610cd957600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050509050508097508198505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8640dc78a6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050608060405180830381600087803b158015610da457600080fd5b505af1158015610db8573d6000803e3d6000fd5b505050506040513d6080811015610dce57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050509050508095508196505050600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d71c9cf3338c8c8c6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001826002602002808284378201915050945050505050608060405180830381600087803b158015610ee657600080fd5b505af1158015610efa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506080811015610f1f57600080fd5b81019080805190602001909291908051906020019092919091905050809350819450829550505050610f7e8a8a8a600280602002604051908101604052809291908260026020028082843782019150505050508487878d8d8d8d613b7b565b50505050505050505050565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561102d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f6e6f7420612068756d616e00000000000000000000000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900460ff161515156110b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f636f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166333527bf5338585856040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018260001916600019168152602001945050505050600060405180830381600087803b15801561118f57600080fd5b505af11580156111a3573d6000803e3d6000fd5b50505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630584f88684846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050600060405180830381600087803b15801561124057600080fd5b505af1158015611254573d6000803e3d6000fd5b50505050505050565b6000803273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611303576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f6e6f7420612068756d616e00000000000000000000000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900460ff16151515611388576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f636f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8f5ca3a33856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040805180830381600087803b15801561144c57600080fd5b505af1158015611460573d6000803e3d6000fd5b505050506040513d604081101561147657600080fd5b81019080805190602001909291908051906020019092919050505091509150600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663538dc57d843385856040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b15801561156e57600080fd5b505af1158015611582573d6000803e3d6000fd5b50505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561164f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900460ff1615156116d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f636f6e7472616374206973206e6f74207061757365640000000000000000000081525060200191505060405180910390fd5b6000600460006101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b600460009054906101000a900460ff1681565b6117376155be565b600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cc53bc7836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060c060405180830381600087803b1580156117c857600080fd5b505af11580156117dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525060c081101561180157600080fd5b81019080919050509050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b80600390805190602001906118ea9291906155e1565b506118f481613bea565b50565b60003273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561199c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f6e6f7420612068756d616e00000000000000000000000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900460ff16151515611a21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f636f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611a89573d6000803e3d6000fd5b50600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663519168c633868686346040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018415151515815260200183815260200182815260200195505050505050602060405180830381600087803b158015611b6b57600080fd5b505af1158015611b7f573d6000803e3d6000fd5b505050506040513d6020811015611b9557600080fd5b81019080805190602001909291905050509050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375a3fd5b85338686866040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001841515151581526020018381526020018215151515815260200195505050505050600060405180830381600087803b158015611c8d57600080fd5b505af1158015611ca1573d6000803e3d6000fd5b5050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d6f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b611d7881613c98565b806000815181101515611d8757fe5b90602001906020020151600460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806001815181101515611de057fe5b90602001906020020151600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806002815181101515611e3957fe5b90602001906020020151600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806003815181101515611e9257fe5b90602001906020020151600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806004815181101515611eeb57fe5b90602001906020020151600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60003273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611fdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f6e6f7420612068756d616e00000000000000000000000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900460ff16151515612062576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f636f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fcab9e5c836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156120f357600080fd5b505af1158015612107573d6000803e3d6000fd5b505050506040513d602081101561211d57600080fd5b81019080805190602001909291905050509050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166313ec8e6c83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050600060405180830381600087803b1580156121c957600080fd5b505af11580156121dd573d6000803e3d6000fd5b505050505050565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f6e6f7420612068756d616e00000000000000000000000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900460ff1615151561230d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f636f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eb2138a533836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156123d257600080fd5b505af11580156123e6573d6000803e3d6000fd5b50505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166381fa42e482336040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b1580156124af57600080fd5b505af11580156124c3573d6000803e3d6000fd5b5050505050565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561256d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f6e6f7420612068756d616e00000000000000000000000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900460ff161515156125f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f636f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f5cd8b13384846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182600019166000191681526020019350505050600060405180830381600087803b1580156126c757600080fd5b505af11580156126db573d6000803e3d6000fd5b50505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a839edc5836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561277057600080fd5b505af1158015612784573d6000803e3d6000fd5b505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612850576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900460ff161515156128d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f636f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b6001600460006101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b60003273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f6e6f7420612068756d616e00000000000000000000000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900460ff16151515612a48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f636f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663afedc66084846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180838152602001826000191660001916815260200192505050602060405180830381600087803b158015612ae957600080fd5b505af1158015612afd573d6000803e3d6000fd5b505050506040513d6020811015612b1357600080fd5b81019080805190602001909291905050509050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630584f88684836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050600060405180830381600087803b158015612bbf57600080fd5b505af1158015612bd3573d6000803e3d6000fd5b50505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612ca6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f6e6f7420612068756d616e00000000000000000000000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900460ff16151515612d2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f636f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663096fea9f33846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612df057600080fd5b505af1158015612e04573d6000803e3d6000fd5b505050506040513d6020811015612e1a57600080fd5b81019080805190602001909291905050509050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166374cda5c283836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050600060405180830381600087803b158015612ec657600080fd5b505af1158015612eda573d6000803e3d6000fd5b505050505050565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612f85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f6e6f7420612068756d616e00000000000000000000000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900460ff1615151561300a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f636f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632432d53533836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156130cf57600080fd5b505af11580156130e3573d6000803e3d6000fd5b50505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632444753382336040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b1580156131ac57600080fd5b505af11580156131c0573d6000803e3d6000fd5b5050505050565b6060600280548060200260200160405190810160405280929190818152602001828054801561324b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311613201575b5050505050905090565b60008060008060008060008060003273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613306576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f6e6f7420612068756d616e00000000000000000000000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900460ff1615151561338b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f636f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166395805dad8b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050608060405180830381600087803b15801561341c57600080fd5b505af1158015613430573d6000803e3d6000fd5b505050506040513d608081101561344657600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050509750975097509750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663022dd1978b6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060c060405180830381600087803b15801561350e57600080fd5b505af1158015613522573d6000803e3d6000fd5b505050506040513d60c081101561353857600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050955095505094505093506135ce8a88848773ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156135c557866135c7565b875b8a8a613db4565b6135d987898c613ee9565b8098505050505050505050919050565b6060600380548060200260200160405190810160405280929190818152602001828054801561366d57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311613623575b5050505050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561373b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b6137448161422f565b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156138a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f6e6f7420612068756d616e00000000000000000000000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900460ff1615151561392a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f636f6e747261637420697320706175736564000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015613992573d6000803e3d6000fd5b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cf6fc06984338585346040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183600260200280828437820191505082815260200195505050505050600060405180830381600087803b158015613a7957600080fd5b505af1158015613a8d573d6000803e3d6000fd5b50505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ea8decb28433856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015613b5e57600080fd5b505af1158015613b72573d6000803e3d6000fd5b50505050505050565b613b8a868b8b878787876142d7565b613bde8a8a8a6040805190810160405280600060ff168152602001600060ff168152508b6000600281101515613bbc57fe5b60200201518c6001600281101515613bd057fe5b60200201518c8c60006145ed565b50505050505050505050565b60008090505b8151811015613c9457613c198282815181101515613c0a57fe5b9060200190602002015161422f565b60018060008484815181101515613c2c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050613bf0565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613d5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b600090505b8151811015613d9957613d8c8282815181101515613d7d57fe5b9060200190602002015161422f565b8080600101915050613d63565b8160029080519060200190613daf9291906155e1565b505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663535d3c088787878787876040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001821515151581526020019650505050505050600060405180830381600087803b158015613ec957600080fd5b505af1158015613edd573d6000803e3d6000fd5b50505050505050505050565b6000806000613ef661566b565b613efe61566b565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663022dd197876040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060c060405180830381600087803b158015613f8f57600080fd5b505af1158015613fa3573d6000803e3d6000fd5b505050506040513d60c0811015613fb957600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505090919293945090919250905080955081965082975050505061401f888686614677565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637c97bf08866040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050608060405180830381600087803b1580156140b057600080fd5b505af11580156140c4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525060808110156140e957600080fd5b8101908080519060200190929190919082604001805190602001909291905050509091505080925050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637c97bf08856040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050608060405180830381600087803b1580156141a357600080fd5b505af11580156141b7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525060808110156141dc57600080fd5b810190808051906020019092919091908260400180519060200190929190505050909150508091505061422585858484878a89141561421b578961421d565b8a5b8e8e8e6145ed565b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156142d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f696e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b50565b600080600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166397ab18bd8b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808281526020019150506040805180830381600087803b15801561436d57600080fd5b505af1158015614381573d6000803e3d6000fd5b505050506040513d604081101561439757600080fd5b8101908080519060200190929190805190602001909291905050508094508195505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166397ab18bd8a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808281526020019150506040805180830381600087803b15801561444a57600080fd5b505af115801561445e573d6000803e3d6000fd5b505050506040513d604081101561447457600080fd5b8101908080519060200190929190805190602001909291905050508092508193505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663316c1d6e8c86868c8c88888e8e6040518a63ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808a81526020018963ffffffff1663ffffffff1681526020018863ffffffff1663ffffffff1681526020018763ffffffff1663ffffffff1681526020018663ffffffff1663ffffffff1681526020018563ffffffff1663ffffffff1681526020018463ffffffff1663ffffffff1681526020018363ffffffff1663ffffffff1681526020018263ffffffff1663ffffffff1681526020019950505050505050505050600060405180830381600087803b1580156145c857600080fd5b505af11580156145dc573d6000803e3d6000fd5b505050505050505050505050505050565b6145fb83838b88888661484f565b614606838a8a61493f565b614611838a8a614caf565b61466c838a8a8a600060028110151561462657fe5b60200201518b600160028110151561463a57fe5b60200201518b600060028110151561464e57fe5b60200201518c600160028110151561466257fe5b602002015161504e565b505050505050505050565b600080600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166397ab18bd876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808281526020019150506040805180830381600087803b15801561470d57600080fd5b505af1158015614721573d6000803e3d6000fd5b505050506040513d604081101561473757600080fd5b8101908080519060200190929190805190602001909291905050508094508195505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166397ab18bd866040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808281526020019150506040805180830381600087803b1580156147ea57600080fd5b505af11580156147fe573d6000803e3d6000fd5b505050506040513d604081101561481457600080fd5b8101908080519060200190929190805190602001909291905050508092508193505050614846878787878787876142d7565b50505050505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166386f2840187428888888860008911896040518963ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808981526020018881526020018781526020018681526020018581526020018481526020018315151515815260200182815260200198505050505050505050600060405180830381600087803b15801561491f57600080fd5b505af1158015614933573d6000803e3d6000fd5b50505050505050505050565b600080600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e79ab76a876040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505061010060405180830381600087803b1580156149d757600080fd5b505af11580156149eb573d6000803e3d6000fd5b505050506040513d610100811015614a0257600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050509091929394959650909192939495509091929394509091925090915090508094508195505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e79ab76a866040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505061010060405180830381600087803b158015614b1157600080fd5b505af1158015614b25573d6000803e3d6000fd5b505050506040513d610100811015614b3c57600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050509091929394959650909192939495509091929394509091925090915090508092508193505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632fe36c1388868686866040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808681526020018560ff1660ff1681526020018463ffffffff1663ffffffff1681526020018360ff1660ff1681526020018263ffffffff1663ffffffff16815260200195505050505050600060405180830381600087803b158015614c8e57600080fd5b505af1158015614ca2573d6000803e3d6000fd5b5050505050505050505050565b600080600080600080600080600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e18c7e2d8d6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060a060405180830381600087803b158015614d4f57600080fd5b505af1158015614d63573d6000803e3d6000fd5b505050506040513d60a0811015614d7957600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050809a50819b50829c50839d50849e505050505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e18c7e2d8c6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060a060405180830381600087803b158015614e5757600080fd5b505af1158015614e6b573d6000803e3d6000fd5b505050506040513d60a0811015614e8157600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050508095508196508297508398508499505050505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663730859f68e8c8c8c8c8c8c8c8c8c8c6040518c63ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808c81526020018b63ffffffff1663ffffffff1681526020018a63ffffffff1663ffffffff1681526020018963ffffffff1663ffffffff1681526020018863ffffffff1663ffffffff1681526020018763ffffffff1663ffffffff1681526020018663ffffffff1663ffffffff1681526020018563ffffffff1663ffffffff1681526020018463ffffffff1663ffffffff1681526020018363ffffffff1663ffffffff1681526020018263ffffffff1663ffffffff1681526020019b505050505050505050505050600060405180830381600087803b15801561502757600080fd5b505af115801561503b573d6000803e3d6000fd5b5050505050505050505050505050505050565b61505661568d565b61505e61568d565b60008460ff161480615073575060008360ff16145b1561515657600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c076174886040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808281526020019150506040805180830381600087803b15801561510857600080fd5b505af115801561511c573d6000803e3d6000fd5b505050506040513d604081101561513257600080fd5b81019080805190602001909291908051906020019092919050505080945081955050505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318c0aa9b896040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060a060405180830381600087803b1580156151e757600080fd5b505af11580156151fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525060a081101561522057600080fd5b81019080919050509150600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318c0aa9b886040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060a060405180830381600087803b1580156152bb57600080fd5b505af11580156152cf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525060a08110156152f457600080fd5b81019080919050509050600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368662301896040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561538f57600080fd5b505af11580156153a3573d6000803e3d6000fd5b50505050600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368662301886040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561543857600080fd5b505af115801561544c573d6000803e3d6000fd5b50505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630a76e43e8a8888888888886040518863ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808881526020018760ff1660ff1681526020018660ff1660ff1681526020018560ff1660ff1681526020018460ff1660ff16815260200183600560200280838360005b83811015615521578082015181840152602081019050615506565b5050505090500182600560200280838360005b8381101561554f578082015181840152602081019050615534565b50505050905001975050505050505050600060405180830381600087803b15801561557957600080fd5b505af115801561558d573d6000803e3d6000fd5b50505050505050505050505050565b6040805190810160405280600290602082028038833980820191505090505090565b60c060405190810160405280600690602082028038833980820191505090505090565b82805482825590600052602060002090810192821561565a579160200282015b828111156156595782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190615601565b5b50905061566791906156b0565b5090565b6040805190810160405280600290602082028038833980820191505090505090565b60a060405190810160405280600590602082028038833980820191505090505090565b6156f091905b808211156156ec57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016156b6565b5090565b905600a165627a7a723058206d1a0b26eea4455236496ef0ed1d390fc50ac967d764bf4cae242aba10bb7e100029


   Swarm Source:
bzzr://6d1a0b26eea4455236496ef0ed1d390fc50ac967d764bf4cae242aba10bb7e10
Block Age transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.