ETH Price: $3,572.18 (-0.29%)
Gas: 25 Gwei

Contract

0x2d04a81798ec74de48e09e3fd43cA41757d33E6A
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Last Txn Sent

No transactions sent

First Txn Sent

No transactions sent

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Destroy And Send54989202018-04-24 18:49:532164 days ago1524595793IN
0x2d04a817...757d33E6A
0 ETH0.0014326100
Force Withdraw P...54651372018-04-18 23:05:562170 days ago1524092756IN
0x2d04a817...757d33E6A
0 ETH0.000035371.5
Force Withdraw P...54613392018-04-18 7:18:022171 days ago1524035882IN
0x2d04a817...757d33E6A
0 ETH0.000040421.5
Withdraw Payment...54531272018-04-16 21:35:322172 days ago1523914532IN
0x2d04a817...757d33E6A
0 ETH0.000050512
Withdraw Payment...54528622018-04-16 20:33:452172 days ago1523910825IN
0x2d04a817...757d33E6A
0 ETH0.000075763
Withdraw Payment...54528162018-04-16 20:21:442172 days ago1523910104IN
0x2d04a817...757d33E6A
0 ETH0.000025251
Withdraw Payment...54528032018-04-16 20:19:412172 days ago1523909981IN
0x2d04a817...757d33E6A
0 ETH0.000025251
Pay Jackpot54527932018-04-16 20:17:252172 days ago1523909845IN
0x2d04a817...757d33E6A
0 ETH0.000037871
Pay Jackpot54527932018-04-16 20:17:252172 days ago1523909845IN
0x2d04a817...757d33E6A
0 ETH0.000037811
Pay Jackpot54527932018-04-16 20:17:252172 days ago1523909845IN
0x2d04a817...757d33E6A
0 ETH0.000037741
Pay Jackpot54527932018-04-16 20:17:252172 days ago1523909845IN
0x2d04a817...757d33E6A
0 ETH0.000037671
Pay Jackpot54527852018-04-16 20:16:052172 days ago1523909765IN
0x2d04a817...757d33E6A
0 ETH0.000066641
Withdraw Payment...54527692018-04-16 20:12:292172 days ago1523909549IN
0x2d04a817...757d33E6A
0 ETH0.000025251
Withdraw Payment...54527562018-04-16 20:10:262172 days ago1523909426IN
0x2d04a817...757d33E6A
0 ETH0.000025251
Purchase Kingdom54527482018-04-16 20:09:082172 days ago1523909348IN
0x2d04a817...757d33E6A
0.45 ETH0.0011213635
Purchase Kingdom54527442018-04-16 20:08:072172 days ago1523909287IN
0x2d04a817...757d33E6A
0.45 ETH0.0060314121
Purchase Kingdom54527382018-04-16 20:07:062172 days ago1523909226IN
0x2d04a817...757d33E6A
0.45 ETH0.000770763
Purchase Kingdom54527352018-04-16 20:05:482172 days ago1523909148IN
0x2d04a817...757d33E6A
0.45 ETH0.001111674
Purchase Kingdom54527292018-04-16 20:04:412172 days ago1523909081IN
0x2d04a817...757d33E6A
0.45 ETH0.001092754
Withdraw Payment...54473292018-04-15 21:58:232173 days ago1523829503IN
0x2d04a817...757d33E6A
0 ETH0.000025251
Purchase Kingdom54469222018-04-15 20:17:432173 days ago1523823463IN
0x2d04a817...757d33E6A
0.45 ETH0.000143830.5
Withdraw Payment...54468392018-04-15 19:57:532173 days ago1523822273IN
0x2d04a817...757d33E6A
0 ETH0.000025251
Purchase Kingdom54465722018-04-15 18:53:472173 days ago1523818427IN
0x2d04a817...757d33E6A
0.15 ETH0.0002521
Purchase Kingdom54465652018-04-15 18:51:392173 days ago1523818299IN
0x2d04a817...757d33E6A
0.15 ETH0.0002821
Withdraw Payment...54463262018-04-15 17:57:132173 days ago1523815033IN
0x2d04a817...757d33E6A
0 ETH0.000012620.5
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Txn Hash Block From To Value
54989202018-04-24 18:49:532164 days ago1524595793
0x2d04a817...757d33E6A
1.047 ETH
54613392018-04-18 7:18:022171 days ago1524035882
0x2d04a817...757d33E6A
0.2 ETH
54531272018-04-16 21:35:322172 days ago1523914532
0x2d04a817...757d33E6A
0.1 ETH
54528622018-04-16 20:33:452172 days ago1523910825
0x2d04a817...757d33E6A
0.1 ETH
54528162018-04-16 20:21:442172 days ago1523910104
0x2d04a817...757d33E6A
2.1825 ETH
54528032018-04-16 20:19:412172 days ago1523909981
0x2d04a817...757d33E6A
5.6805 ETH
54527692018-04-16 20:12:292172 days ago1523909549
0x2d04a817...757d33E6A
0.3 ETH
54527562018-04-16 20:10:262172 days ago1523909426
0x2d04a817...757d33E6A
0.3 ETH
54473292018-04-15 21:58:232173 days ago1523829503
0x2d04a817...757d33E6A
0.3 ETH
54468392018-04-15 19:57:532173 days ago1523822273
0x2d04a817...757d33E6A
0.1 ETH
54463262018-04-15 17:57:132173 days ago1523815033
0x2d04a817...757d33E6A
0.1 ETH
54462952018-04-15 17:50:502173 days ago1523814650
0x2d04a817...757d33E6A
0.3 ETH
54458132018-04-15 15:54:582173 days ago1523807698
0x2d04a817...757d33E6A
1.2 ETH
54455602018-04-15 14:54:032173 days ago1523804043
0x2d04a817...757d33E6A
0.1 ETH
54455542018-04-15 14:52:382173 days ago1523803958
0x2d04a817...757d33E6A
0.3 ETH
54446362018-04-15 11:01:122173 days ago1523790072
0x2d04a817...757d33E6A
0.1 ETH
54426492018-04-15 2:57:182174 days ago1523761038
0x2d04a817...757d33E6A
0.1 ETH
54418152018-04-14 23:41:562174 days ago1523749316
0x2d04a817...757d33E6A
0.6 ETH
54413522018-04-14 21:45:332174 days ago1523742333
0x2d04a817...757d33E6A
0.1 ETH
54410052018-04-14 20:26:192174 days ago1523737579
0x2d04a817...757d33E6A
0.1 ETH
54410042018-04-14 20:26:052174 days ago1523737565
0x2d04a817...757d33E6A
0.3 ETH
54409862018-04-14 20:21:532174 days ago1523737313
0x2d04a817...757d33E6A
0.2 ETH
54351922018-04-13 20:59:202175 days ago1523653160
0x2d04a817...757d33E6A
0.1 ETH
54351772018-04-13 20:54:132175 days ago1523652853
0x2d04a817...757d33E6A
0.1 ETH
54351492018-04-13 20:49:572175 days ago1523652597
0x2d04a817...757d33E6A
0.1 ETH
View All Internal Transactions
Loading...
Loading
Contract Self Destruct called at Txn Hash 0x7e5011b63a6bd151b0eae1e4a2d253556bae15d2467c009b7a3d8d8d6129a2b3


Contract Source Code Verified (Exact Match)

Contract Name:
Map

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
No with 200 runs

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

pragma solidity ^0.4.18;

library SafeMath {
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) { return 0; }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a / b;
    return c;
  }
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}

contract PullPayment {
  using SafeMath for uint256;
  mapping(address => uint256) public payments;
  uint256 public totalPayments;
  function withdrawPayments() public {
    address payee = msg.sender;
    uint256 payment = payments[payee];
    require(payment != 0);
    require(this.balance >= payment);
    totalPayments = totalPayments.sub(payment);
    payments[payee] = 0;
    assert(payee.send(payment));
  }
  function asyncSend(address dest, uint256 amount) internal {
    payments[dest] = payments[dest].add(amount);
    totalPayments = totalPayments.add(amount);
  }
}

contract Ownable {
  address public owner;
  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
  function Ownable() public {
    owner = msg.sender;
  }
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }
  function transferOwnership(address newOwner) public onlyOwner {
    require(newOwner != address(0));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }
}

contract Destructible is Ownable {
  function Destructible() public payable { }
  function destroy() onlyOwner public {
    selfdestruct(owner);
  }
  function destroyAndSend(address _recipient) onlyOwner public {
    selfdestruct(_recipient);
  }
}

contract ReentrancyGuard {
  bool private reentrancy_lock = false;
  modifier nonReentrant() {
    require(!reentrancy_lock);
    reentrancy_lock = true;
    _;
    reentrancy_lock = false;
  }
}

contract Map is PullPayment, Destructible, ReentrancyGuard {
    using SafeMath for uint256;
    
    // STRUCTS

    struct Transaction {
        string kingdomKey;
        address compensationAddress;
        uint buyingPrice;
        uint compensation;
        uint jackpotContribution;
    }

    struct Kingdom {
        string title;
        string key;
        uint kingdomTier;
        uint kingdomType;
        uint minimumPrice; 
        uint lastTransaction;
        uint transactionCount;
        uint returnPrice;
        address owner;
        bool locked;
    }

    struct Jackpot {
        address winner;
        uint balance;
    }

    struct Round {
        Jackpot globalJackpot;
        Jackpot jackpot1;
        Jackpot jackpot2;
        Jackpot jackpot3;
        Jackpot jackpot4;
        Jackpot jackpot5;

        mapping(string => bool) kingdomsCreated;
        mapping(address => uint) nbKingdoms;
        mapping(address => uint) nbTransactions;
        mapping(address => uint) nbKingdomsType1;
        mapping(address => uint) nbKingdomsType2;
        mapping(address => uint) nbKingdomsType3;
        mapping(address => uint) nbKingdomsType4;
        mapping(address => uint) nbKingdomsType5;

        uint startTime;
        uint endTime;

        mapping(string => uint) kingdomsKeys;
    }

    Kingdom[] public kingdoms;
    Transaction[] public kingdomTransactions;
    uint public currentRound;
    address public bookerAddress;
    
    mapping(uint => Round) rounds;

    uint constant public ACTION_TAX = 0.02 ether;
    uint constant public STARTING_CLAIM_PRICE_WEI = 0.05 ether;
    uint constant MAXIMUM_CLAIM_PRICE_WEI = 800 ether;
    uint constant KINGDOM_MULTIPLIER = 20;
    uint constant TEAM_COMMISSION_RATIO = 10;
    uint constant JACKPOT_COMMISSION_RATIO = 10;

    // MODIFIERS

    modifier onlyForRemainingKingdoms() {
        uint remainingKingdoms = getRemainingKingdoms();
        require(remainingKingdoms > kingdoms.length);
        _;
    }

    modifier checkKingdomExistence(string key) {
        require(rounds[currentRound].kingdomsCreated[key] == true);
        _;
    }

    modifier checkIsNotLocked(string kingdomKey) {
        require(kingdoms[rounds[currentRound].kingdomsKeys[kingdomKey]].locked != true);
        _;
    }

    modifier checkIsClosed() {
        require(now >= rounds[currentRound].endTime);
        _;
    }

    modifier onlyKingdomOwner(string _key, address _sender) {
        require (kingdoms[rounds[currentRound].kingdomsKeys[_key]].owner == _sender);
        _;
    }
    
    // EVENTS

    event LandCreatedEvent(string kingdomKey, address monarchAddress);
    event LandPurchasedEvent(string kingdomKey, address monarchAddress);

    //
    //  CONTRACT CONSTRUCTOR
    //
    function Map(address _bookerAddress, uint _startTime) {
        bookerAddress = _bookerAddress;
        currentRound = 1;
        rounds[currentRound] = Round(Jackpot(address(0), 0), Jackpot(address(0), 0), Jackpot(address(0), 0), Jackpot(address(0), 0), Jackpot(address(0), 0), Jackpot(address(0), 0), 0, 0);
        rounds[currentRound].jackpot1 = Jackpot(address(0), 0);
        rounds[currentRound].jackpot2 = Jackpot(address(0), 0);
        rounds[currentRound].jackpot3 = Jackpot(address(0), 0);
        rounds[currentRound].jackpot4 = Jackpot(address(0), 0);
        rounds[currentRound].jackpot5 = Jackpot(address(0), 0);
        rounds[currentRound].startTime = _startTime;
        rounds[currentRound].endTime = _startTime + 7 days;
        rounds[currentRound].globalJackpot = Jackpot(address(0), 0);
     }

    function () { }

    function getRemainingKingdoms() public view returns (uint nb) {
        for (uint i = 1; i < 8; i++) {
            if (now < rounds[currentRound].startTime + (i * 1 days)) {
                uint result = (10 * i);
                if (result > 70) { 
                    return 70; 
                } else {
                    return result;
                }
            }
        }
    }

    function setTypedJackpotWinner(address _user, uint _type) internal {
        if (_type == 1) {
            if (rounds[currentRound].jackpot1.winner == address(0)) {
                rounds[currentRound].jackpot1.winner = _user;
            } else if (rounds[currentRound].nbKingdomsType1[_user] >= rounds[currentRound].nbKingdomsType1[rounds[currentRound].jackpot1.winner]) {
                rounds[currentRound].jackpot1.winner = _user;
            }
        } else if (_type == 2) {
            if (rounds[currentRound].jackpot2.winner == address(0)) {
                rounds[currentRound].jackpot2.winner = _user;
            } else if (rounds[currentRound].nbKingdomsType2[_user] >= rounds[currentRound].nbKingdomsType2[rounds[currentRound].jackpot2.winner]) {
                rounds[currentRound].jackpot2.winner = _user;
            }
        } else if (_type == 3) {
            if (rounds[currentRound].jackpot3.winner == address(0)) {
                rounds[currentRound].jackpot3.winner = _user;
            } else if (rounds[currentRound].nbKingdomsType3[_user] >= rounds[currentRound].nbKingdomsType3[rounds[currentRound].jackpot3.winner]) {
                rounds[currentRound].jackpot3.winner = _user;
            }
        } else if (_type == 4) {
            if (rounds[currentRound].jackpot4.winner == address(0)) {
                rounds[currentRound].jackpot4.winner = _user;
            } else if (rounds[currentRound].nbKingdomsType4[_user] >= rounds[currentRound].nbKingdomsType4[rounds[currentRound].jackpot4.winner]) {
                rounds[currentRound].jackpot4.winner = _user;
            }
        } else if (_type == 5) {
            if (rounds[currentRound].jackpot5.winner == address(0)) {
                rounds[currentRound].jackpot5.winner = _user;
            } else if (rounds[currentRound].nbKingdomsType5[_user] >= rounds[currentRound].nbKingdomsType5[rounds[currentRound].jackpot5.winner]) {
                rounds[currentRound].jackpot5.winner = _user;
            }
        }
    }

    //
    //  This is the main function. It is called to buy a kingdom
    //
    function purchaseKingdom(string _key, string _title, bool _locked) public 
    payable 
    nonReentrant()
    checkKingdomExistence(_key)
    checkIsNotLocked(_key)
    {
        require(now < rounds[currentRound].endTime);
        Round storage round = rounds[currentRound];
        uint kingdomId = round.kingdomsKeys[_key];
        Kingdom storage kingdom = kingdoms[kingdomId];
        require((kingdom.kingdomTier + 1) < 6);
        uint requiredPrice = kingdom.minimumPrice;
        if (_locked == true) {
            requiredPrice = requiredPrice.add(ACTION_TAX);
        }

        require (msg.value >= requiredPrice);
        uint jackpotCommission = (msg.value).sub(kingdom.returnPrice);

        if (kingdom.returnPrice > 0) {
            round.nbKingdoms[kingdom.owner]--;
            if (kingdom.kingdomType == 1) {
                round.nbKingdomsType1[kingdom.owner]--;
            } else if (kingdom.kingdomType == 2) {
                round.nbKingdomsType2[kingdom.owner]--;
            } else if (kingdom.kingdomType == 3) {
                round.nbKingdomsType3[kingdom.owner]--;
            } else if (kingdom.kingdomType == 4) {
                round.nbKingdomsType4[kingdom.owner]--;
            } else if (kingdom.kingdomType == 5) {
                round.nbKingdomsType5[kingdom.owner]--;
            }
            
            compensateLatestMonarch(kingdom.lastTransaction, kingdom.returnPrice);
        }
        
        uint jackpotSplitted = jackpotCommission.mul(50).div(100);
        round.globalJackpot.balance = round.globalJackpot.balance.add(jackpotSplitted);

        kingdom.kingdomTier++;
        kingdom.title = _title;

        if (kingdom.kingdomTier == 5) {
            kingdom.returnPrice = 0;
        } else {
            kingdom.returnPrice = kingdom.minimumPrice.mul(2);
            kingdom.minimumPrice = kingdom.minimumPrice.add(kingdom.minimumPrice.mul(2));
        }

        kingdom.owner = msg.sender;
        kingdom.locked = _locked;

        uint transactionId = kingdomTransactions.push(Transaction("", msg.sender, msg.value, 0, jackpotSplitted)) - 1;
        kingdomTransactions[transactionId].kingdomKey = _key;
        kingdom.transactionCount++;
        kingdom.lastTransaction = transactionId;
        
        setNewJackpot(kingdom.kingdomType, jackpotSplitted, msg.sender);
        LandPurchasedEvent(_key, msg.sender);
    }

    function setNewJackpot(uint kingdomType, uint jackpotSplitted, address sender) internal {
        rounds[currentRound].nbTransactions[sender]++;
        rounds[currentRound].nbKingdoms[sender]++;
        if (kingdomType == 1) {
            rounds[currentRound].nbKingdomsType1[sender]++;
            rounds[currentRound].jackpot1.balance = rounds[currentRound].jackpot1.balance.add(jackpotSplitted);
        } else if (kingdomType == 2) {
            rounds[currentRound].nbKingdomsType2[sender]++;
            rounds[currentRound].jackpot2.balance = rounds[currentRound].jackpot2.balance.add(jackpotSplitted);
        } else if (kingdomType == 3) {
            rounds[currentRound].nbKingdomsType3[sender]++;
            rounds[currentRound].jackpot3.balance = rounds[currentRound].jackpot3.balance.add(jackpotSplitted);
        } else if (kingdomType == 4) {
            rounds[currentRound].nbKingdomsType4[sender]++;
            rounds[currentRound].jackpot4.balance = rounds[currentRound].jackpot4.balance.add(jackpotSplitted);
        } else if (kingdomType == 5) {
            rounds[currentRound].nbKingdomsType5[sender]++;
            rounds[currentRound].jackpot5.balance = rounds[currentRound].jackpot5.balance.add(jackpotSplitted);
        }
        setNewWinner(msg.sender, kingdomType);
    }

    function setLock(string _key, bool _locked) public payable checkKingdomExistence(_key) onlyKingdomOwner(_key, msg.sender) {
        if (_locked == true) { require(msg.value >= ACTION_TAX); }
        kingdoms[rounds[currentRound].kingdomsKeys[_key]].locked = _locked;
        if (msg.value > 0) { asyncSend(bookerAddress, msg.value); }
    }

    // function setNbKingdomsType(uint kingdomType, address sender, bool increment) internal {
    //     if (kingdomType == 1) {
    //         if (increment == true) {
    //             rounds[currentRound].nbKingdomsType1[sender]++;
    //         } else {
    //             rounds[currentRound].nbKingdomsType1[sender]--;
    //         }
    //     } else if (kingdomType == 2) {
    //         if (increment == true) {
    //             rounds[currentRound].nbKingdomsType2[sender]++;
    //         } else {
    //             rounds[currentRound].nbKingdomsType2[sender]--;
    //         }
    //     } else if (kingdomType == 3) {
    //         if (increment == true) {
    //             rounds[currentRound].nbKingdomsType3[sender]++;
    //         } else {
    //             rounds[currentRound].nbKingdomsType3[sender]--;
    //         }
    //     } else if (kingdomType == 4) {
    //         if (increment == true) {
    //             rounds[currentRound].nbKingdomsType4[sender]++;
    //         } else {
    //             rounds[currentRound].nbKingdomsType4[sender]--;
    //         }
    //     } else if (kingdomType == 5) {
    //         if (increment == true) {
    //             rounds[currentRound].nbKingdomsType5[sender]++;
    //         } else {
    //             rounds[currentRound].nbKingdomsType5[sender]--;
    //         }
    //     }
    // }

    // function upgradeKingdomType(string _key, uint _type) public payable checkKingdomExistence(_key) onlyKingdomOwner(_key, msg.sender) {
    //     require(msg.value >= ACTION_TAX);
    //     require(_type > 0);
    //     require(_type < 6);
    //     require(kingdoms[rounds[currentRound].kingdomsKeys[_key]].owner == msg.sender);
    //     uint kingdomType = kingdoms[rounds[currentRound].kingdomsKeys[_key]].kingdomType;
    //     setNbKingdomsType(kingdomType, msg.sender, false);

        
    //     setNbKingdomsType(_type, msg.sender, true);
    //     setTypedJackpotWinner(msg.sender, _type);

    //     kingdoms[rounds[currentRound].kingdomsKeys[_key]].kingdomType = _type;
    //     asyncSend(bookerAddress, msg.value);
    // }

    //
    //  User can call this function to generate new kingdoms (within the limits of available land)
    //
    function createKingdom(address owner, string _key, string _title, uint _type, bool _locked) onlyForRemainingKingdoms() public payable {
        require(now < rounds[currentRound].endTime);
        require(_type > 0);
        require(_type < 6);
        uint basePrice = STARTING_CLAIM_PRICE_WEI;
        uint requiredPrice = basePrice;
        if (_locked == true) { requiredPrice = requiredPrice.add(ACTION_TAX); }
        require(msg.value >= requiredPrice);
        require(rounds[currentRound].kingdomsCreated[_key] == false);
        uint refundPrice = STARTING_CLAIM_PRICE_WEI.mul(2);
        uint nextMinimumPrice = STARTING_CLAIM_PRICE_WEI.add(refundPrice);
        uint kingdomId = kingdoms.push(Kingdom("", "", 1, _type, 0, 0, 1, refundPrice, address(0), false)) - 1;
        
        kingdoms[kingdomId].title = _title;
        kingdoms[kingdomId].owner = owner;
        kingdoms[kingdomId].key = _key;
        kingdoms[kingdomId].minimumPrice = nextMinimumPrice;
        kingdoms[kingdomId].locked = _locked;

        rounds[currentRound].kingdomsKeys[_key] = kingdomId;
        rounds[currentRound].kingdomsCreated[_key] = true;
        
        uint jackpotSplitted = requiredPrice.mul(50).div(100);
        rounds[currentRound].globalJackpot.balance = rounds[currentRound].globalJackpot.balance.add(jackpotSplitted);

        uint transactionId = kingdomTransactions.push(Transaction("", msg.sender, msg.value, 0, jackpotSplitted)) - 1;
        kingdomTransactions[transactionId].kingdomKey = _key;
        kingdoms[kingdomId].lastTransaction = transactionId;
       
        setNewJackpot(_type, jackpotSplitted, msg.sender);
        LandCreatedEvent(_key, msg.sender);
    }

    //
    //  Send transaction to compensate the previous owner
    //
    function compensateLatestMonarch(uint lastTransaction, uint compensationWei) internal {
        address compensationAddress = kingdomTransactions[lastTransaction].compensationAddress;
        kingdomTransactions[lastTransaction].compensation = compensationWei;
        asyncSend(compensationAddress, compensationWei);
    }

    //
    //  This function may be useful to force withdraw if user never come back to get his money
    //
    function forceWithdrawPayments(address payee) public onlyOwner {
        uint256 payment = payments[payee];
        require(payment != 0);
        require(this.balance >= payment);
        totalPayments = totalPayments.sub(payment);
        payments[payee] = 0;
        assert(payee.send(payment));
    }

    function getStartTime() public view returns (uint startTime) {
        return rounds[currentRound].startTime;
    }

    function getEndTime() public view returns (uint endTime) {
        return rounds[currentRound].endTime;
    }

    function payJackpot(uint _type) public checkIsClosed() {
        Round storage finishedRound = rounds[currentRound];
        if (_type == 1 && finishedRound.jackpot1.winner != address(0) && finishedRound.jackpot1.balance > 0) {
            require(this.balance >= finishedRound.jackpot1.balance);
            uint jackpot1TeamComission = (finishedRound.jackpot1.balance.mul(TEAM_COMMISSION_RATIO)).div(100);
            asyncSend(bookerAddress, jackpot1TeamComission);
            asyncSend(finishedRound.jackpot1.winner, finishedRound.jackpot1.balance.sub(jackpot1TeamComission));
            finishedRound.jackpot1.balance = 0;
        } else if (_type == 2 && finishedRound.jackpot2.winner != address(0) && finishedRound.jackpot2.balance > 0) {
            require(this.balance >= finishedRound.jackpot2.balance);
            uint jackpot2TeamComission = (finishedRound.jackpot2.balance.mul(TEAM_COMMISSION_RATIO)).div(100);
            asyncSend(bookerAddress, jackpot2TeamComission);
            asyncSend(finishedRound.jackpot2.winner, finishedRound.jackpot2.balance.sub(jackpot2TeamComission));
            finishedRound.jackpot2.balance = 0;
        } else if (_type == 3 && finishedRound.jackpot3.winner != address(0) && finishedRound.jackpot3.balance > 0) {
            require(this.balance >= finishedRound.jackpot3.balance);
            uint jackpot3TeamComission = (finishedRound.jackpot3.balance.mul(TEAM_COMMISSION_RATIO)).div(100);
            asyncSend(bookerAddress, jackpot3TeamComission);
            asyncSend(finishedRound.jackpot3.winner, finishedRound.jackpot3.balance.sub(jackpot3TeamComission));
            finishedRound.jackpot3.balance = 0;
        } else if (_type == 4 && finishedRound.jackpot4.winner != address(0) && finishedRound.jackpot4.balance > 0) {
            require(this.balance >= finishedRound.jackpot4.balance);
            uint jackpot4TeamComission = (finishedRound.jackpot4.balance.mul(TEAM_COMMISSION_RATIO)).div(100);
            asyncSend(bookerAddress, jackpot4TeamComission);
            asyncSend(finishedRound.jackpot4.winner, finishedRound.jackpot4.balance.sub(jackpot4TeamComission));
            finishedRound.jackpot4.balance = 0;
        } else if (_type == 5 && finishedRound.jackpot5.winner != address(0) && finishedRound.jackpot5.balance > 0) {
            require(this.balance >= finishedRound.jackpot5.balance);
            uint jackpot5TeamComission = (finishedRound.jackpot5.balance.mul(TEAM_COMMISSION_RATIO)).div(100);
            asyncSend(bookerAddress, jackpot5TeamComission);
            asyncSend(finishedRound.jackpot5.winner, finishedRound.jackpot5.balance.sub(jackpot5TeamComission));
            finishedRound.jackpot5.balance = 0;
        }

        if (finishedRound.globalJackpot.winner != address(0) && finishedRound.globalJackpot.balance > 0) {
            require(this.balance >= finishedRound.globalJackpot.balance);
            uint globalTeamComission = (finishedRound.globalJackpot.balance.mul(TEAM_COMMISSION_RATIO)).div(100);
            asyncSend(bookerAddress, globalTeamComission);
            asyncSend(finishedRound.globalJackpot.winner, finishedRound.globalJackpot.balance.sub(globalTeamComission));
            finishedRound.globalJackpot.balance = 0;
        }
    }

    //
    //  After time expiration, owner can call this function to activate the next round of the game
    //
    function activateNextRound() public checkIsClosed() {
        Round storage finishedRound = rounds[currentRound];
        require(finishedRound.globalJackpot.balance == 0);
        require(finishedRound.jackpot5.balance == 0);
        require(finishedRound.jackpot4.balance == 0);
        require(finishedRound.jackpot3.balance == 0);
        require(finishedRound.jackpot2.balance == 0);
        require(finishedRound.jackpot1.balance == 0);
        currentRound++;
        rounds[currentRound] = Round(Jackpot(address(0), 0), Jackpot(address(0), 0), Jackpot(address(0), 0), Jackpot(address(0), 0), Jackpot(address(0), 0), Jackpot(address(0), 0), 0, 0);
        rounds[currentRound].startTime = now;
        rounds[currentRound].endTime = now + 7 days;
        delete kingdoms;
        delete kingdomTransactions;
    }

    // GETTER AND SETTER FUNCTIONS

    function setNewWinner(address _sender, uint _type) internal {
        if (rounds[currentRound].globalJackpot.winner == address(0)) {
            rounds[currentRound].globalJackpot.winner = _sender;
        } else {
            if (rounds[currentRound].nbKingdoms[_sender] == rounds[currentRound].nbKingdoms[rounds[currentRound].globalJackpot.winner]) {
                if (rounds[currentRound].nbTransactions[_sender] > rounds[currentRound].nbTransactions[rounds[currentRound].globalJackpot.winner]) {
                    rounds[currentRound].globalJackpot.winner = _sender;
                }
            } else if (rounds[currentRound].nbKingdoms[_sender] > rounds[currentRound].nbKingdoms[rounds[currentRound].globalJackpot.winner]) {
                rounds[currentRound].globalJackpot.winner = _sender;
            }
        }
        setTypedJackpotWinner(_sender, _type);
    }

    function getJackpot(uint _nb) public view returns (address winner, uint balance, uint winnerCap) {
        Round storage round = rounds[currentRound];
        if (_nb == 1) {
            return (round.jackpot1.winner, round.jackpot1.balance, round.nbKingdomsType1[round.jackpot1.winner]);
        } else if (_nb == 2) {
            return (round.jackpot2.winner, round.jackpot2.balance, round.nbKingdomsType2[round.jackpot2.winner]);
        } else if (_nb == 3) {
            return (round.jackpot3.winner, round.jackpot3.balance, round.nbKingdomsType3[round.jackpot3.winner]);
        } else if (_nb == 4) {
            return (round.jackpot4.winner, round.jackpot4.balance, round.nbKingdomsType4[round.jackpot4.winner]);
        } else if (_nb == 5) {
            return (round.jackpot5.winner, round.jackpot5.balance, round.nbKingdomsType5[round.jackpot5.winner]);
        } else {
            return (round.globalJackpot.winner, round.globalJackpot.balance, round.nbKingdoms[round.globalJackpot.winner]);
        }
    }

    function getKingdomCount() public view returns (uint kingdomCount) {
        return kingdoms.length;
    }

    function getKingdomInformations(string kingdomKey) public view returns (string title, uint minimumPrice, uint lastTransaction, uint transactionCount, address currentOwner, bool locked) {
        uint kingdomId = rounds[currentRound].kingdomsKeys[kingdomKey];
        Kingdom storage kingdom = kingdoms[kingdomId];
        return (kingdom.title, kingdom.minimumPrice, kingdom.lastTransaction, kingdom.transactionCount, kingdom.owner, kingdom.locked);
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"totalPayments","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_key","type":"string"},{"name":"_title","type":"string"},{"name":"_locked","type":"bool"}],"name":"purchaseKingdom","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"bookerAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getEndTime","outputs":[{"name":"endTime","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_nb","type":"uint256"}],"name":"getJackpot","outputs":[{"name":"winner","type":"address"},{"name":"balance","type":"uint256"},{"name":"winnerCap","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"},{"name":"_key","type":"string"},{"name":"_title","type":"string"},{"name":"_type","type":"uint256"},{"name":"_locked","type":"bool"}],"name":"createKingdom","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"payee","type":"address"}],"name":"forceWithdrawPayments","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawPayments","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_key","type":"string"},{"name":"_locked","type":"bool"}],"name":"setLock","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"STARTING_CLAIM_PRICE_WEI","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"destroy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currentRound","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getKingdomCount","outputs":[{"name":"kingdomCount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"kingdoms","outputs":[{"name":"title","type":"string"},{"name":"key","type":"string"},{"name":"kingdomTier","type":"uint256"},{"name":"kingdomType","type":"uint256"},{"name":"minimumPrice","type":"uint256"},{"name":"lastTransaction","type":"uint256"},{"name":"transactionCount","type":"uint256"},{"name":"returnPrice","type":"uint256"},{"name":"owner","type":"address"},{"name":"locked","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ACTION_TAX","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getStartTime","outputs":[{"name":"startTime","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"kingdomTransactions","outputs":[{"name":"kingdomKey","type":"string"},{"name":"compensationAddress","type":"address"},{"name":"buyingPrice","type":"uint256"},{"name":"compensation","type":"uint256"},{"name":"jackpotContribution","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_type","type":"uint256"}],"name":"payJackpot","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"kingdomKey","type":"string"}],"name":"getKingdomInformations","outputs":[{"name":"title","type":"string"},{"name":"minimumPrice","type":"uint256"},{"name":"lastTransaction","type":"uint256"},{"name":"transactionCount","type":"uint256"},{"name":"currentOwner","type":"address"},{"name":"locked","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getRemainingKingdoms","outputs":[{"name":"nb","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"payments","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"activateNextRound","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_recipient","type":"address"}],"name":"destroyAndSend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_bookerAddress","type":"address"},{"name":"_startTime","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"kingdomKey","type":"string"},{"indexed":false,"name":"monarchAddress","type":"address"}],"name":"LandCreatedEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"kingdomKey","type":"string"},{"indexed":false,"name":"monarchAddress","type":"address"}],"name":"LandPurchasedEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60606040526000600260146101000a81548160ff021916908315150217905550341561002a57600080fd5b604051604080615ae78339810160405280805190602001909190805190602001909190505033600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600581905550610100604051908101604052806040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525081526020016040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525081526020016040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525081526020016040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525081526020016040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525081526020016040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815250815260200160008152602001600081525060076000600554815260200190815260200160002060008201518160000160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155505060208201518160020160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155505060408201518160040160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155505060608201518160060160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155505060808201518160080160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155505060a082015181600a0160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155505060c0820151816014015560e082015181601501559050506040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525060076000600554815260200190815260200160002060020160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050506040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525060076000600554815260200190815260200160002060040160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050506040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525060076000600554815260200190815260200160002060060160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050506040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525060076000600554815260200190815260200160002060080160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050506040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815250600760006005548152602001908152602001600020600a0160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155905050806007600060055481526020019081526020016000206014018190555062093a808101600760006005548152602001908152602001600020601501819055506040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525060076000600554815260200190815260200160002060000160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155905050505061528f806108586000396000f300606060405260043610610148576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680625b4487146101555780630203596d1461017e57806308cad05c1461021e578063439f5ac2146102735780634ce4f9271461029c57806356247e6d1461030d5780635d760b45146103d55780636103d70b1461040e57806376520713146104235780637720295a1461048057806383197ef0146104a95780638a19c8bc146104be5780638da5cb5b146104e75780638e4060721461053c5780639133210a14610565578063981ae4011461070f578063c828371e14610738578063ca907e7914610761578063d093e04b14610862578063d2bf779f14610885578063d9d84531146109ae578063e2982c21146109d7578063e8bc0d4014610a24578063f2fde38b14610a39578063f5074f4114610a72575b341561015357600080fd5b005b341561016057600080fd5b610168610aab565b6040518082815260200191505060405180910390f35b61021c600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919080351515906020019091905050610ab1565b005b341561022957600080fd5b610231611479565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027e57600080fd5b61028661149f565b6040518082815260200191505060405180910390f35b34156102a757600080fd5b6102bd60048080359060200190919050506114bf565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390f35b6103d3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001909190803515159060200190919050506118e5565b005b34156103e057600080fd5b61040c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612107565b005b341561041957600080fd5b61042161227c565b005b61047e600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919080351515906020019091905050612399565b005b341561048b57600080fd5b610493612652565b6040518082815260200191505060405180910390f35b34156104b457600080fd5b6104bc61265d565b005b34156104c957600080fd5b6104d16126f4565b6040518082815260200191505060405180910390f35b34156104f257600080fd5b6104fa6126fa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561054757600080fd5b61054f612720565b6040518082815260200191505060405180910390f35b341561057057600080fd5b610586600480803590602001909190505061272d565b6040518080602001806020018b81526020018a81526020018981526020018881526020018781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018415151515815260200183810383528d8181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156106735780601f1061064857610100808354040283529160200191610673565b820191906000526020600020905b81548152906001019060200180831161065657829003601f168201915b505083810382528c8181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156106f65780601f106106cb576101008083540402835291602001916106f6565b820191906000526020600020905b8154815290600101906020018083116106d957829003601f168201915b50509c5050505050505050505050505060405180910390f35b341561071a57600080fd5b6107226127bb565b6040518082815260200191505060405180910390f35b341561074357600080fd5b61074b6127c6565b6040518082815260200191505060405180910390f35b341561076c57600080fd5b61078260048080359060200190919050506127e6565b60405180806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183815260200182810382528781815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561084f5780601f106108245761010080835404028352916020019161084f565b820191906000526020600020905b81548152906001019060200180831161083257829003601f168201915b5050965050505050505060405180910390f35b341561086d57600080fd5b610883600480803590602001909190505061284a565b005b341561089057600080fd5b6108e0600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506130d3565b60405180806020018781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183151515158152602001828103825288818151815260200191508051906020019080838360005b8381101561096e578082015181840152602081019050610953565b50505050905090810190601f16801561099b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b34156109b957600080fd5b6109c1613286565b6040518082815260200191505060405180910390f35b34156109e257600080fd5b610a0e600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506132f3565b6040518082815260200191505060405180910390f35b3415610a2f57600080fd5b610a3761330b565b005b3415610a4457600080fd5b610a70600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506137d8565b005b3415610a7d57600080fd5b610aa9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613930565b005b60015481565b6000806000806000806000600260149054906101000a900460ff16151515610ad857600080fd5b6001600260146101000a81548160ff0219169083151502179055508960011515600760006005548152602001908152602001600020600c01826040518082805190602001908083835b602083101515610b465780518252602082019150602081019050602083039250610b21565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900460ff161515141515610b9557600080fd5b8a600115156003600760006005548152602001908152602001600020601601836040518082805190602001908083835b602083101515610bea5780518252602082019150602081019050602083039250610bc5565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054815481101515610c2a57fe5b906000526020600020906009020160080160149054906101000a900460ff16151514151515610c5857600080fd5b6007600060055481526020019081526020016000206015015442101515610c7e57600080fd5b6007600060055481526020019081526020016000209850886016018c6040518082805190602001908083835b602083101515610ccf5780518252602082019150602081019050602083039250610caa565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020549750600388815481101515610d1457fe5b9060005260206000209060090201965060066001886002015401101515610d3a57600080fd5b86600401549550600115158a15151415610d6b57610d6866470de4df820000876139a590919063ffffffff16565b95505b853410151515610d7a57600080fd5b610d918760070154346139c390919063ffffffff16565b94506000876007015411156110d15788600d0160008860080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550600187600301541415610e9e5788600f0160008860080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506110be565b600287600301541415610f26578860100160008860080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506110bd565b600387600301541415610fae578860110160008860080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506110bc565b600487600301541415611036578860120160008860080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506110bb565b6005876003015414156110ba578860130160008860080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055505b5b5b5b5b6110d0876005015488600701546139dc565b5b6110f860646110ea603288613a5590919063ffffffff16565b613a9090919063ffffffff16565b9350611114848a600001600101546139a590919063ffffffff16565b896000016001018190555086600201600081548092919060010191905055508a87600001908051906020019061114b929190614f1e565b5060058760020154141561116857600087600701819055506111bf565b61118060028860040154613a5590919063ffffffff16565b87600701819055506111b66111a360028960040154613a5590919063ffffffff16565b88600401546139a590919063ffffffff16565b87600401819055505b338760080160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550898760080160146101000a81548160ff0219169083151502179055506001600480548060010182816112349190614f9e565b9160005260206000209060050201600060a060405190810160405280602060405190810160405280600081525081526020013373ffffffffffffffffffffffffffffffffffffffff1681526020013481526020016000815260200189815250909190915060008201518160000190805190602001906112b4929190614fd0565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020155606082015181600301556080820151816004015550500392508b60048481548110151561132f57fe5b90600052602060002090600502016000019080519060200190611353929190614f1e565b50866006016000815480929190600101919050555082876005018190555061138087600301548533613aab565b7f33ad373ff55ff0131d5dc1caa21daa4a081eb0707eb9efe075d2200bd2eecf438c3360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b838110156114155780820151818401526020810190506113fa565b50505050905090810190601f1680156114425780820380516001836020036101000a031916815260200191505b50935050505060405180910390a150506000600260146101000a81548160ff02191690831515021790555050505050505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060076000600554815260200190815260200160002060150154905090565b60008060008060076000600554815260200190815260200160002090506001851415611589578060020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816002016001015482600f0160008460020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549350935093506118dd565b6002851415611636578060040160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600401600101548260100160008460040160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549350935093506118dd565b60038514156116e3578060060160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600601600101548260110160008460060160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549350935093506118dd565b6004851415611790578060080160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600801600101548260120160008460080160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549350935093506118dd565b600585141561183d5780600a0160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600a016001015482601301600084600a0160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549350935093506118dd565b8060000160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816000016001015482600d0160008460000160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549350935093505b509193909250565b6000806000806000806000806118f9613286565b90506003805490508111151561190e57600080fd5b600760006005548152602001908152602001600020601501544210151561193457600080fd5b60008a11151561194357600080fd5b60068a10151561195257600080fd5b66b1a2bc2ec5000097508796506001151589151514156119895761198666470de4df820000886139a590919063ffffffff16565b96505b86341015151561199857600080fd5b60001515600760006005548152602001908152602001600020600c018d6040518082805190602001908083835b6020831015156119ea57805182526020820191506020810190506020830392506119c5565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900460ff161515141515611a3957600080fd5b611a54600266b1a2bc2ec50000613a5590919063ffffffff16565b9550611a708666b1a2bc2ec500006139a590919063ffffffff16565b9450600160038054806001018281611a889190615050565b91600052602060002090600902016000610140604051908101604052806020604051908101604052806000815250815260200160206040519081016040528060008152508152602001600181526020018f81526020016000815260200160008152602001600181526020018b8152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000151581525090919091506000820151816000019080519060200190611b3e929190614fd0565b506020820151816001019080519060200190611b5b929190614fd0565b5060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101208201518160080160146101000a81548160ff02191690831515021790555050500393508a600385815481101515611c1657fe5b90600052602060002090600902016000019080519060200190611c3a929190614f1e565b508c600385815481101515611c4b57fe5b906000526020600020906009020160080160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b600385815481101515611caa57fe5b90600052602060002090600902016001019080519060200190611cce929190614f1e565b5084600385815481101515611cdf57fe5b90600052602060002090600902016004018190555088600385815481101515611d0457fe5b906000526020600020906009020160080160146101000a81548160ff021916908315150217905550836007600060055481526020019081526020016000206016018d6040518082805190602001908083835b602083101515611d7b5780518252602082019150602081019050602083039250611d56565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020819055506001600760006005548152602001908152602001600020600c018d6040518082805190602001908083835b602083101515611e025780518252602082019150602081019050602083039250611ddd565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548160ff021916908315150217905550611e736064611e6560328a613a5590919063ffffffff16565b613a9090919063ffffffff16565b9250611ea383600760006005548152602001908152602001600020600001600101546139a590919063ffffffff16565b60076000600554815260200190815260200160002060000160010181905550600160048054806001018281611ed89190614f9e565b9160005260206000209060050201600060a060405190810160405280602060405190810160405280600081525081526020013373ffffffffffffffffffffffffffffffffffffffff168152602001348152602001600081526020018881525090919091506000820151816000019080519060200190611f58929190614fd0565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020155606082015181600301556080820151816004015550500391508b600483815481101515611fd357fe5b90600052602060002090600502016000019080519060200190611ff7929190614f1e565b508160038581548110151561200857fe5b9060005260206000209060090201600501819055506120288a8433613aab565b7f28852447a61cd7468288ee09e688ab82ac6561117c6abc695290ade7479086a18c3360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b838110156120bd5780820151818401526020810190506120a2565b50505050905090810190601f1680156120ea5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a150505050505050505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561216557600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081141515156121b657600080fd5b803073ffffffffffffffffffffffffffffffffffffffff1631101515156121dc57600080fd5b6121f1816001546139c390919063ffffffff16565b60018190555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561227857fe5b5050565b6000803391506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081141515156122d357600080fd5b803073ffffffffffffffffffffffffffffffffffffffff1631101515156122f957600080fd5b61230e816001546139c390919063ffffffff16565b60018190555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561239557fe5b5050565b8160011515600760006005548152602001908152602001600020600c01826040518082805190602001908083835b6020831015156123ec57805182526020820191506020810190506020830392506123c7565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900460ff16151514151561243b57600080fd5b82338073ffffffffffffffffffffffffffffffffffffffff166003600760006005548152602001908152602001600020601601846040518082805190602001908083835b6020831015156124a4578051825260208201915060208101905060208303925061247f565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020548154811015156124e457fe5b906000526020600020906009020160080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561253857600080fd5b60011515841515141561255c5766470de4df820000341015151561255b57600080fd5b5b836003600760006005548152602001908152602001600020601601876040518082805190602001908083835b6020831015156125ad5780518252602082019150602081019050602083039250612588565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020548154811015156125ed57fe5b906000526020600020906009020160080160146101000a81548160ff021916908315150217905550600034111561264b5761264a600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1634613f44565b5b5050505050565b66b1a2bc2ec5000081565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156126b957600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b60055481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600380549050905090565b60038181548110151561273c57fe5b9060005260206000209060090201600091509050806000019080600101908060020154908060030154908060040154908060050154908060060154908060070154908060080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060080160149054906101000a900460ff1690508a565b66470de4df82000081565b600060076000600554815260200190815260200160002060140154905090565b6004818154811015156127f557fe5b906000526020600020906005020160009150905080600001908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030154908060040154905085565b600080600080600080600060076000600554815260200190815260200160002060150154421015151561287c57600080fd5b60076000600554815260200190815260200160002096506001881480156128f75750600073ffffffffffffffffffffffffffffffffffffffff168760020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b801561290a575060008760020160010154115b156129f45786600201600101543073ffffffffffffffffffffffffffffffffffffffff16311015151561293c57600080fd5b61296a606461295c600a8a60020160010154613a5590919063ffffffff16565b613a9090919063ffffffff16565b9550612998600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687613f44565b6129e28760020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166129dd888a600201600101546139c390919063ffffffff16565b613f44565b60008760020160010181905550612f78565b600288148015612a585750600073ffffffffffffffffffffffffffffffffffffffff168760040160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015612a6b575060008760040160010154115b15612b555786600401600101543073ffffffffffffffffffffffffffffffffffffffff163110151515612a9d57600080fd5b612acb6064612abd600a8a60040160010154613a5590919063ffffffff16565b613a9090919063ffffffff16565b9450612af9600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686613f44565b612b438760040160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612b3e878a600401600101546139c390919063ffffffff16565b613f44565b60008760040160010181905550612f77565b600388148015612bb95750600073ffffffffffffffffffffffffffffffffffffffff168760060160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015612bcc575060008760060160010154115b15612cb65786600601600101543073ffffffffffffffffffffffffffffffffffffffff163110151515612bfe57600080fd5b612c2c6064612c1e600a8a60060160010154613a5590919063ffffffff16565b613a9090919063ffffffff16565b9350612c5a600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685613f44565b612ca48760060160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612c9f868a600601600101546139c390919063ffffffff16565b613f44565b60008760060160010181905550612f76565b600488148015612d1a5750600073ffffffffffffffffffffffffffffffffffffffff168760080160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015612d2d575060008760080160010154115b15612e175786600801600101543073ffffffffffffffffffffffffffffffffffffffff163110151515612d5f57600080fd5b612d8d6064612d7f600a8a60080160010154613a5590919063ffffffff16565b613a9090919063ffffffff16565b9250612dbb600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613f44565b612e058760080160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612e00858a600801600101546139c390919063ffffffff16565b613f44565b60008760080160010181905550612f75565b600588148015612e7b5750600073ffffffffffffffffffffffffffffffffffffffff1687600a0160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015612e8e5750600087600a0160010154115b15612f745786600a01600101543073ffffffffffffffffffffffffffffffffffffffff163110151515612ec057600080fd5b612eee6064612ee0600a8a600a0160010154613a5590919063ffffffff16565b613a9090919063ffffffff16565b9150612f1c600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613f44565b612f6687600a0160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612f61848a600a01600101546139c390919063ffffffff16565b613f44565b600087600a01600101819055505b5b5b5b5b600073ffffffffffffffffffffffffffffffffffffffff168760000160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612fe3575060008760000160010154115b156130c95786600001600101543073ffffffffffffffffffffffffffffffffffffffff16311015151561301557600080fd5b6130436064613035600a8a60000160010154613a5590919063ffffffff16565b613a9090919063ffffffff16565b9050613071600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613f44565b6130bb8760000160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166130b6838a600001600101546139c390919063ffffffff16565b613f44565b600087600001600101819055505b5050505050505050565b6130db615082565b6000806000806000806000600760006005548152602001908152602001600020601601896040518082805190602001908083835b602083101515613134578051825260208201915060208101905060208303925061310f565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054915060038281548110151561317957fe5b90600052602060002090600902019050806000018160040154826005015483600601548460080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168560080160149054906101000a900460ff16858054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156132685780601f1061323d57610100808354040283529160200191613268565b820191906000526020600020905b81548152906001019060200180831161324b57829003601f168201915b50505050509550975097509750975097509750505091939550919395565b6000806000600191505b60088210156132ed5762015180820260076000600554815260200190815260200160002060140154014210156132e05781600a02905060468111156132d857604692506132ee565b8092506132ee565b8180600101925050613290565b5b505090565b60006020528060005260406000206000915090505481565b600060076000600554815260200190815260200160002060150154421015151561333457600080fd5b60076000600554815260200190815260200160002090506000816000016001015414151561336157600080fd5b600081600a016001015414151561337757600080fd5b6000816008016001015414151561338d57600080fd5b600081600601600101541415156133a357600080fd5b600081600401600101541415156133b957600080fd5b600081600201600101541415156133cf57600080fd5b600560008154809291906001019190505550610100604051908101604052806040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525081526020016040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525081526020016040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525081526020016040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525081526020016040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525081526020016040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815250815260200160008152602001600081525060076000600554815260200190815260200160002060008201518160000160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155505060208201518160020160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155505060408201518160040160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155505060608201518160060160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155505060808201518160080160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155505060a082015181600a0160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155505060c0820151816014015560e08201518160150155905050426007600060055481526020019081526020016000206014018190555062093a80420160076000600554815260200190815260200160002060150181905550600360006137c79190615096565b600460006137d591906150ba565b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561383457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561387057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561398c57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16ff5b60008082840190508381101515156139b957fe5b8091505092915050565b60008282111515156139d157fe5b818303905092915050565b60006004838154811015156139ed57fe5b906000526020600020906005020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600484815481101515613a3157fe5b906000526020600020906005020160030181905550613a508183613f44565b505050565b6000806000841415613a6a5760009150613a89565b8284029050828482811515613a7b57fe5b04141515613a8557fe5b8091505b5092915050565b6000808284811515613a9e57fe5b0490508091505092915050565b600760006005548152602001908152602001600020600e0160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550600760006005548152602001908152602001600020600d0160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055506001831415613c3557600760006005548152602001908152602001600020600f0160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550613c1182600760006005548152602001908152602001600020600201600101546139a590919063ffffffff16565b60076000600554815260200190815260200160002060020160010181905550613f35565b6002831415613cf55760076000600554815260200190815260200160002060100160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550613cd182600760006005548152602001908152602001600020600401600101546139a590919063ffffffff16565b60076000600554815260200190815260200160002060040160010181905550613f34565b6003831415613db55760076000600554815260200190815260200160002060110160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550613d9182600760006005548152602001908152602001600020600601600101546139a590919063ffffffff16565b60076000600554815260200190815260200160002060060160010181905550613f33565b6004831415613e755760076000600554815260200190815260200160002060120160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550613e5182600760006005548152602001908152602001600020600801600101546139a590919063ffffffff16565b60076000600554815260200190815260200160002060080160010181905550613f32565b6005831415613f315760076000600554815260200190815260200160002060130160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550613f1182600760006005548152602001908152602001600020600a01600101546139a590919063ffffffff16565b600760006005548152602001908152602001600020600a01600101819055505b5b5b5b5b613f3f3384613ff6565b505050565b613f95816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139a590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fec816001546139a590919063ffffffff16565b6001819055505050565b600073ffffffffffffffffffffffffffffffffffffffff1660076000600554815260200190815260200160002060000160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156140c5578160076000600554815260200190815260200160002060000160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614449565b600760006005548152602001908152602001600020600d01600060076000600554815260200190815260200160002060000160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760006005548152602001908152602001600020600d0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156142ff57600760006005548152602001908152602001600020600e01600060076000600554815260200190815260200160002060000160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760006005548152602001908152602001600020600e0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156142fa578160076000600554815260200190815260200160002060000160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b614448565b600760006005548152602001908152602001600020600d01600060076000600554815260200190815260200160002060000160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760006005548152602001908152602001600020600d0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115614447578160076000600554815260200190815260200160002060000160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b6144538282614457565b5050565b600181141561467e57600073ffffffffffffffffffffffffffffffffffffffff1660076000600554815260200190815260200160002060020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561452f578160076000600554815260200190815260200160002060020160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614679565b600760006005548152602001908152602001600020600f01600060076000600554815260200190815260200160002060020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760006005548152602001908152602001600020600f0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515614678578160076000600554815260200190815260200160002060020160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b614f1a565b60028114156148a557600073ffffffffffffffffffffffffffffffffffffffff1660076000600554815260200190815260200160002060040160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415614756578160076000600554815260200190815260200160002060040160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506148a0565b600760006005548152602001908152602001600020601001600060076000600554815260200190815260200160002060040160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460076000600554815260200190815260200160002060100160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151561489f578160076000600554815260200190815260200160002060040160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b614f19565b6003811415614acc57600073ffffffffffffffffffffffffffffffffffffffff1660076000600554815260200190815260200160002060060160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561497d578160076000600554815260200190815260200160002060060160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614ac7565b600760006005548152602001908152602001600020601101600060076000600554815260200190815260200160002060060160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460076000600554815260200190815260200160002060110160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515614ac6578160076000600554815260200190815260200160002060060160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b614f18565b6004811415614cf357600073ffffffffffffffffffffffffffffffffffffffff1660076000600554815260200190815260200160002060080160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415614ba4578160076000600554815260200190815260200160002060080160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614cee565b600760006005548152602001908152602001600020601201600060076000600554815260200190815260200160002060080160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460076000600554815260200190815260200160002060120160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515614ced578160076000600554815260200190815260200160002060080160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b614f17565b6005811415614f1657600073ffffffffffffffffffffffffffffffffffffffff16600760006005548152602001908152602001600020600a0160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415614dcb5781600760006005548152602001908152602001600020600a0160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614f15565b6007600060055481526020019081526020016000206013016000600760006005548152602001908152602001600020600a0160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460076000600554815260200190815260200160002060130160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515614f145781600760006005548152602001908152602001600020600a0160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b5b5b5b5b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614f5f57805160ff1916838001178555614f8d565b82800160010185558215614f8d579182015b82811115614f8c578251825591602001919060010190614f71565b5b509050614f9a91906150de565b5090565b815481835581811511614fcb57600502816005028360005260206000209182019101614fca9190615103565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061501157805160ff191683800117855561503f565b8280016001018555821561503f579182015b8281111561503e578251825591602001919060010190615023565b5b50905061504c91906150de565b5090565b81548183558181151161507d5760090281600902836000526020600020918201910161507c9190615171565b5b505050565b602060405190810160405280600081525090565b50805460008255600902906000526020600020908101906150b79190615171565b50565b50805460008255600502906000526020600020908101906150db9190615103565b50565b61510091905b808211156150fc5760008160009055506001016150e4565b5090565b90565b61516e91905b8082111561516a5760008082016000615122919061521b565b6001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560028201600090556003820160009055600482016000905550600501615109565b5090565b90565b61521891905b808211156152145760008082016000615190919061521b565b6001820160006151a0919061521b565b6002820160009055600382016000905560048201600090556005820160009055600682016000905560078201600090556008820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556008820160146101000a81549060ff021916905550600901615177565b5090565b90565b50805460018160011615610100020316600290046000825580601f106152415750615260565b601f01602090049060005260206000209081019061525f91906150de565b5b505600a165627a7a72305820f0ea0cf9a1e087fbe62ddddd208584a76a41f6c57859149175d2d005c59a7a1a00290000000000000000000000008c7d96da59d23b50b9eeefdacf58a5fce62b35b5000000000000000000000000000000000000000000000000000000005acbc861

Deployed Bytecode

0x606060405260043610610148576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680625b4487146101555780630203596d1461017e57806308cad05c1461021e578063439f5ac2146102735780634ce4f9271461029c57806356247e6d1461030d5780635d760b45146103d55780636103d70b1461040e57806376520713146104235780637720295a1461048057806383197ef0146104a95780638a19c8bc146104be5780638da5cb5b146104e75780638e4060721461053c5780639133210a14610565578063981ae4011461070f578063c828371e14610738578063ca907e7914610761578063d093e04b14610862578063d2bf779f14610885578063d9d84531146109ae578063e2982c21146109d7578063e8bc0d4014610a24578063f2fde38b14610a39578063f5074f4114610a72575b341561015357600080fd5b005b341561016057600080fd5b610168610aab565b6040518082815260200191505060405180910390f35b61021c600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919080351515906020019091905050610ab1565b005b341561022957600080fd5b610231611479565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027e57600080fd5b61028661149f565b6040518082815260200191505060405180910390f35b34156102a757600080fd5b6102bd60048080359060200190919050506114bf565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390f35b6103d3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001909190803515159060200190919050506118e5565b005b34156103e057600080fd5b61040c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612107565b005b341561041957600080fd5b61042161227c565b005b61047e600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919080351515906020019091905050612399565b005b341561048b57600080fd5b610493612652565b6040518082815260200191505060405180910390f35b34156104b457600080fd5b6104bc61265d565b005b34156104c957600080fd5b6104d16126f4565b6040518082815260200191505060405180910390f35b34156104f257600080fd5b6104fa6126fa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561054757600080fd5b61054f612720565b6040518082815260200191505060405180910390f35b341561057057600080fd5b610586600480803590602001909190505061272d565b6040518080602001806020018b81526020018a81526020018981526020018881526020018781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018415151515815260200183810383528d8181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156106735780601f1061064857610100808354040283529160200191610673565b820191906000526020600020905b81548152906001019060200180831161065657829003601f168201915b505083810382528c8181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156106f65780601f106106cb576101008083540402835291602001916106f6565b820191906000526020600020905b8154815290600101906020018083116106d957829003601f168201915b50509c5050505050505050505050505060405180910390f35b341561071a57600080fd5b6107226127bb565b6040518082815260200191505060405180910390f35b341561074357600080fd5b61074b6127c6565b6040518082815260200191505060405180910390f35b341561076c57600080fd5b61078260048080359060200190919050506127e6565b60405180806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183815260200182810382528781815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561084f5780601f106108245761010080835404028352916020019161084f565b820191906000526020600020905b81548152906001019060200180831161083257829003601f168201915b5050965050505050505060405180910390f35b341561086d57600080fd5b610883600480803590602001909190505061284a565b005b341561089057600080fd5b6108e0600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506130d3565b60405180806020018781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183151515158152602001828103825288818151815260200191508051906020019080838360005b8381101561096e578082015181840152602081019050610953565b50505050905090810190601f16801561099b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b34156109b957600080fd5b6109c1613286565b6040518082815260200191505060405180910390f35b34156109e257600080fd5b610a0e600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506132f3565b6040518082815260200191505060405180910390f35b3415610a2f57600080fd5b610a3761330b565b005b3415610a4457600080fd5b610a70600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506137d8565b005b3415610a7d57600080fd5b610aa9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613930565b005b60015481565b6000806000806000806000600260149054906101000a900460ff16151515610ad857600080fd5b6001600260146101000a81548160ff0219169083151502179055508960011515600760006005548152602001908152602001600020600c01826040518082805190602001908083835b602083101515610b465780518252602082019150602081019050602083039250610b21565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900460ff161515141515610b9557600080fd5b8a600115156003600760006005548152602001908152602001600020601601836040518082805190602001908083835b602083101515610bea5780518252602082019150602081019050602083039250610bc5565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054815481101515610c2a57fe5b906000526020600020906009020160080160149054906101000a900460ff16151514151515610c5857600080fd5b6007600060055481526020019081526020016000206015015442101515610c7e57600080fd5b6007600060055481526020019081526020016000209850886016018c6040518082805190602001908083835b602083101515610ccf5780518252602082019150602081019050602083039250610caa565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020549750600388815481101515610d1457fe5b9060005260206000209060090201965060066001886002015401101515610d3a57600080fd5b86600401549550600115158a15151415610d6b57610d6866470de4df820000876139a590919063ffffffff16565b95505b853410151515610d7a57600080fd5b610d918760070154346139c390919063ffffffff16565b94506000876007015411156110d15788600d0160008860080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550600187600301541415610e9e5788600f0160008860080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506110be565b600287600301541415610f26578860100160008860080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506110bd565b600387600301541415610fae578860110160008860080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506110bc565b600487600301541415611036578860120160008860080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506110bb565b6005876003015414156110ba578860130160008860080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055505b5b5b5b5b6110d0876005015488600701546139dc565b5b6110f860646110ea603288613a5590919063ffffffff16565b613a9090919063ffffffff16565b9350611114848a600001600101546139a590919063ffffffff16565b896000016001018190555086600201600081548092919060010191905055508a87600001908051906020019061114b929190614f1e565b5060058760020154141561116857600087600701819055506111bf565b61118060028860040154613a5590919063ffffffff16565b87600701819055506111b66111a360028960040154613a5590919063ffffffff16565b88600401546139a590919063ffffffff16565b87600401819055505b338760080160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550898760080160146101000a81548160ff0219169083151502179055506001600480548060010182816112349190614f9e565b9160005260206000209060050201600060a060405190810160405280602060405190810160405280600081525081526020013373ffffffffffffffffffffffffffffffffffffffff1681526020013481526020016000815260200189815250909190915060008201518160000190805190602001906112b4929190614fd0565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020155606082015181600301556080820151816004015550500392508b60048481548110151561132f57fe5b90600052602060002090600502016000019080519060200190611353929190614f1e565b50866006016000815480929190600101919050555082876005018190555061138087600301548533613aab565b7f33ad373ff55ff0131d5dc1caa21daa4a081eb0707eb9efe075d2200bd2eecf438c3360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b838110156114155780820151818401526020810190506113fa565b50505050905090810190601f1680156114425780820380516001836020036101000a031916815260200191505b50935050505060405180910390a150506000600260146101000a81548160ff02191690831515021790555050505050505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060076000600554815260200190815260200160002060150154905090565b60008060008060076000600554815260200190815260200160002090506001851415611589578060020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816002016001015482600f0160008460020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549350935093506118dd565b6002851415611636578060040160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600401600101548260100160008460040160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549350935093506118dd565b60038514156116e3578060060160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600601600101548260110160008460060160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549350935093506118dd565b6004851415611790578060080160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600801600101548260120160008460080160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549350935093506118dd565b600585141561183d5780600a0160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600a016001015482601301600084600a0160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549350935093506118dd565b8060000160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816000016001015482600d0160008460000160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549350935093505b509193909250565b6000806000806000806000806118f9613286565b90506003805490508111151561190e57600080fd5b600760006005548152602001908152602001600020601501544210151561193457600080fd5b60008a11151561194357600080fd5b60068a10151561195257600080fd5b66b1a2bc2ec5000097508796506001151589151514156119895761198666470de4df820000886139a590919063ffffffff16565b96505b86341015151561199857600080fd5b60001515600760006005548152602001908152602001600020600c018d6040518082805190602001908083835b6020831015156119ea57805182526020820191506020810190506020830392506119c5565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900460ff161515141515611a3957600080fd5b611a54600266b1a2bc2ec50000613a5590919063ffffffff16565b9550611a708666b1a2bc2ec500006139a590919063ffffffff16565b9450600160038054806001018281611a889190615050565b91600052602060002090600902016000610140604051908101604052806020604051908101604052806000815250815260200160206040519081016040528060008152508152602001600181526020018f81526020016000815260200160008152602001600181526020018b8152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000151581525090919091506000820151816000019080519060200190611b3e929190614fd0565b506020820151816001019080519060200190611b5b929190614fd0565b5060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101208201518160080160146101000a81548160ff02191690831515021790555050500393508a600385815481101515611c1657fe5b90600052602060002090600902016000019080519060200190611c3a929190614f1e565b508c600385815481101515611c4b57fe5b906000526020600020906009020160080160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b600385815481101515611caa57fe5b90600052602060002090600902016001019080519060200190611cce929190614f1e565b5084600385815481101515611cdf57fe5b90600052602060002090600902016004018190555088600385815481101515611d0457fe5b906000526020600020906009020160080160146101000a81548160ff021916908315150217905550836007600060055481526020019081526020016000206016018d6040518082805190602001908083835b602083101515611d7b5780518252602082019150602081019050602083039250611d56565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020819055506001600760006005548152602001908152602001600020600c018d6040518082805190602001908083835b602083101515611e025780518252602082019150602081019050602083039250611ddd565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548160ff021916908315150217905550611e736064611e6560328a613a5590919063ffffffff16565b613a9090919063ffffffff16565b9250611ea383600760006005548152602001908152602001600020600001600101546139a590919063ffffffff16565b60076000600554815260200190815260200160002060000160010181905550600160048054806001018281611ed89190614f9e565b9160005260206000209060050201600060a060405190810160405280602060405190810160405280600081525081526020013373ffffffffffffffffffffffffffffffffffffffff168152602001348152602001600081526020018881525090919091506000820151816000019080519060200190611f58929190614fd0565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020155606082015181600301556080820151816004015550500391508b600483815481101515611fd357fe5b90600052602060002090600502016000019080519060200190611ff7929190614f1e565b508160038581548110151561200857fe5b9060005260206000209060090201600501819055506120288a8433613aab565b7f28852447a61cd7468288ee09e688ab82ac6561117c6abc695290ade7479086a18c3360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b838110156120bd5780820151818401526020810190506120a2565b50505050905090810190601f1680156120ea5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a150505050505050505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561216557600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081141515156121b657600080fd5b803073ffffffffffffffffffffffffffffffffffffffff1631101515156121dc57600080fd5b6121f1816001546139c390919063ffffffff16565b60018190555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561227857fe5b5050565b6000803391506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081141515156122d357600080fd5b803073ffffffffffffffffffffffffffffffffffffffff1631101515156122f957600080fd5b61230e816001546139c390919063ffffffff16565b60018190555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561239557fe5b5050565b8160011515600760006005548152602001908152602001600020600c01826040518082805190602001908083835b6020831015156123ec57805182526020820191506020810190506020830392506123c7565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900460ff16151514151561243b57600080fd5b82338073ffffffffffffffffffffffffffffffffffffffff166003600760006005548152602001908152602001600020601601846040518082805190602001908083835b6020831015156124a4578051825260208201915060208101905060208303925061247f565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020548154811015156124e457fe5b906000526020600020906009020160080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561253857600080fd5b60011515841515141561255c5766470de4df820000341015151561255b57600080fd5b5b836003600760006005548152602001908152602001600020601601876040518082805190602001908083835b6020831015156125ad5780518252602082019150602081019050602083039250612588565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020548154811015156125ed57fe5b906000526020600020906009020160080160146101000a81548160ff021916908315150217905550600034111561264b5761264a600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1634613f44565b5b5050505050565b66b1a2bc2ec5000081565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156126b957600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b60055481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600380549050905090565b60038181548110151561273c57fe5b9060005260206000209060090201600091509050806000019080600101908060020154908060030154908060040154908060050154908060060154908060070154908060080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060080160149054906101000a900460ff1690508a565b66470de4df82000081565b600060076000600554815260200190815260200160002060140154905090565b6004818154811015156127f557fe5b906000526020600020906005020160009150905080600001908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030154908060040154905085565b600080600080600080600060076000600554815260200190815260200160002060150154421015151561287c57600080fd5b60076000600554815260200190815260200160002096506001881480156128f75750600073ffffffffffffffffffffffffffffffffffffffff168760020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b801561290a575060008760020160010154115b156129f45786600201600101543073ffffffffffffffffffffffffffffffffffffffff16311015151561293c57600080fd5b61296a606461295c600a8a60020160010154613a5590919063ffffffff16565b613a9090919063ffffffff16565b9550612998600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687613f44565b6129e28760020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166129dd888a600201600101546139c390919063ffffffff16565b613f44565b60008760020160010181905550612f78565b600288148015612a585750600073ffffffffffffffffffffffffffffffffffffffff168760040160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015612a6b575060008760040160010154115b15612b555786600401600101543073ffffffffffffffffffffffffffffffffffffffff163110151515612a9d57600080fd5b612acb6064612abd600a8a60040160010154613a5590919063ffffffff16565b613a9090919063ffffffff16565b9450612af9600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686613f44565b612b438760040160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612b3e878a600401600101546139c390919063ffffffff16565b613f44565b60008760040160010181905550612f77565b600388148015612bb95750600073ffffffffffffffffffffffffffffffffffffffff168760060160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015612bcc575060008760060160010154115b15612cb65786600601600101543073ffffffffffffffffffffffffffffffffffffffff163110151515612bfe57600080fd5b612c2c6064612c1e600a8a60060160010154613a5590919063ffffffff16565b613a9090919063ffffffff16565b9350612c5a600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685613f44565b612ca48760060160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612c9f868a600601600101546139c390919063ffffffff16565b613f44565b60008760060160010181905550612f76565b600488148015612d1a5750600073ffffffffffffffffffffffffffffffffffffffff168760080160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015612d2d575060008760080160010154115b15612e175786600801600101543073ffffffffffffffffffffffffffffffffffffffff163110151515612d5f57600080fd5b612d8d6064612d7f600a8a60080160010154613a5590919063ffffffff16565b613a9090919063ffffffff16565b9250612dbb600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613f44565b612e058760080160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612e00858a600801600101546139c390919063ffffffff16565b613f44565b60008760080160010181905550612f75565b600588148015612e7b5750600073ffffffffffffffffffffffffffffffffffffffff1687600a0160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015612e8e5750600087600a0160010154115b15612f745786600a01600101543073ffffffffffffffffffffffffffffffffffffffff163110151515612ec057600080fd5b612eee6064612ee0600a8a600a0160010154613a5590919063ffffffff16565b613a9090919063ffffffff16565b9150612f1c600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613f44565b612f6687600a0160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612f61848a600a01600101546139c390919063ffffffff16565b613f44565b600087600a01600101819055505b5b5b5b5b600073ffffffffffffffffffffffffffffffffffffffff168760000160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612fe3575060008760000160010154115b156130c95786600001600101543073ffffffffffffffffffffffffffffffffffffffff16311015151561301557600080fd5b6130436064613035600a8a60000160010154613a5590919063ffffffff16565b613a9090919063ffffffff16565b9050613071600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613f44565b6130bb8760000160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166130b6838a600001600101546139c390919063ffffffff16565b613f44565b600087600001600101819055505b5050505050505050565b6130db615082565b6000806000806000806000600760006005548152602001908152602001600020601601896040518082805190602001908083835b602083101515613134578051825260208201915060208101905060208303925061310f565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054915060038281548110151561317957fe5b90600052602060002090600902019050806000018160040154826005015483600601548460080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168560080160149054906101000a900460ff16858054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156132685780601f1061323d57610100808354040283529160200191613268565b820191906000526020600020905b81548152906001019060200180831161324b57829003601f168201915b50505050509550975097509750975097509750505091939550919395565b6000806000600191505b60088210156132ed5762015180820260076000600554815260200190815260200160002060140154014210156132e05781600a02905060468111156132d857604692506132ee565b8092506132ee565b8180600101925050613290565b5b505090565b60006020528060005260406000206000915090505481565b600060076000600554815260200190815260200160002060150154421015151561333457600080fd5b60076000600554815260200190815260200160002090506000816000016001015414151561336157600080fd5b600081600a016001015414151561337757600080fd5b6000816008016001015414151561338d57600080fd5b600081600601600101541415156133a357600080fd5b600081600401600101541415156133b957600080fd5b600081600201600101541415156133cf57600080fd5b600560008154809291906001019190505550610100604051908101604052806040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525081526020016040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525081526020016040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525081526020016040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525081526020016040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525081526020016040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815250815260200160008152602001600081525060076000600554815260200190815260200160002060008201518160000160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155505060208201518160020160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155505060408201518160040160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155505060608201518160060160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155505060808201518160080160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155505060a082015181600a0160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155505060c0820151816014015560e08201518160150155905050426007600060055481526020019081526020016000206014018190555062093a80420160076000600554815260200190815260200160002060150181905550600360006137c79190615096565b600460006137d591906150ba565b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561383457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561387057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561398c57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16ff5b60008082840190508381101515156139b957fe5b8091505092915050565b60008282111515156139d157fe5b818303905092915050565b60006004838154811015156139ed57fe5b906000526020600020906005020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600484815481101515613a3157fe5b906000526020600020906005020160030181905550613a508183613f44565b505050565b6000806000841415613a6a5760009150613a89565b8284029050828482811515613a7b57fe5b04141515613a8557fe5b8091505b5092915050565b6000808284811515613a9e57fe5b0490508091505092915050565b600760006005548152602001908152602001600020600e0160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550600760006005548152602001908152602001600020600d0160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055506001831415613c3557600760006005548152602001908152602001600020600f0160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550613c1182600760006005548152602001908152602001600020600201600101546139a590919063ffffffff16565b60076000600554815260200190815260200160002060020160010181905550613f35565b6002831415613cf55760076000600554815260200190815260200160002060100160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550613cd182600760006005548152602001908152602001600020600401600101546139a590919063ffffffff16565b60076000600554815260200190815260200160002060040160010181905550613f34565b6003831415613db55760076000600554815260200190815260200160002060110160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550613d9182600760006005548152602001908152602001600020600601600101546139a590919063ffffffff16565b60076000600554815260200190815260200160002060060160010181905550613f33565b6004831415613e755760076000600554815260200190815260200160002060120160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550613e5182600760006005548152602001908152602001600020600801600101546139a590919063ffffffff16565b60076000600554815260200190815260200160002060080160010181905550613f32565b6005831415613f315760076000600554815260200190815260200160002060130160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550613f1182600760006005548152602001908152602001600020600a01600101546139a590919063ffffffff16565b600760006005548152602001908152602001600020600a01600101819055505b5b5b5b5b613f3f3384613ff6565b505050565b613f95816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139a590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fec816001546139a590919063ffffffff16565b6001819055505050565b600073ffffffffffffffffffffffffffffffffffffffff1660076000600554815260200190815260200160002060000160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156140c5578160076000600554815260200190815260200160002060000160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614449565b600760006005548152602001908152602001600020600d01600060076000600554815260200190815260200160002060000160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760006005548152602001908152602001600020600d0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156142ff57600760006005548152602001908152602001600020600e01600060076000600554815260200190815260200160002060000160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760006005548152602001908152602001600020600e0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156142fa578160076000600554815260200190815260200160002060000160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b614448565b600760006005548152602001908152602001600020600d01600060076000600554815260200190815260200160002060000160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760006005548152602001908152602001600020600d0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115614447578160076000600554815260200190815260200160002060000160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b6144538282614457565b5050565b600181141561467e57600073ffffffffffffffffffffffffffffffffffffffff1660076000600554815260200190815260200160002060020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561452f578160076000600554815260200190815260200160002060020160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614679565b600760006005548152602001908152602001600020600f01600060076000600554815260200190815260200160002060020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760006005548152602001908152602001600020600f0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515614678578160076000600554815260200190815260200160002060020160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b614f1a565b60028114156148a557600073ffffffffffffffffffffffffffffffffffffffff1660076000600554815260200190815260200160002060040160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415614756578160076000600554815260200190815260200160002060040160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506148a0565b600760006005548152602001908152602001600020601001600060076000600554815260200190815260200160002060040160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460076000600554815260200190815260200160002060100160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151561489f578160076000600554815260200190815260200160002060040160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b614f19565b6003811415614acc57600073ffffffffffffffffffffffffffffffffffffffff1660076000600554815260200190815260200160002060060160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561497d578160076000600554815260200190815260200160002060060160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614ac7565b600760006005548152602001908152602001600020601101600060076000600554815260200190815260200160002060060160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460076000600554815260200190815260200160002060110160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515614ac6578160076000600554815260200190815260200160002060060160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b614f18565b6004811415614cf357600073ffffffffffffffffffffffffffffffffffffffff1660076000600554815260200190815260200160002060080160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415614ba4578160076000600554815260200190815260200160002060080160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614cee565b600760006005548152602001908152602001600020601201600060076000600554815260200190815260200160002060080160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460076000600554815260200190815260200160002060120160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515614ced578160076000600554815260200190815260200160002060080160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b614f17565b6005811415614f1657600073ffffffffffffffffffffffffffffffffffffffff16600760006005548152602001908152602001600020600a0160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415614dcb5781600760006005548152602001908152602001600020600a0160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614f15565b6007600060055481526020019081526020016000206013016000600760006005548152602001908152602001600020600a0160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460076000600554815260200190815260200160002060130160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515614f145781600760006005548152602001908152602001600020600a0160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b5b5b5b5b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614f5f57805160ff1916838001178555614f8d565b82800160010185558215614f8d579182015b82811115614f8c578251825591602001919060010190614f71565b5b509050614f9a91906150de565b5090565b815481835581811511614fcb57600502816005028360005260206000209182019101614fca9190615103565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061501157805160ff191683800117855561503f565b8280016001018555821561503f579182015b8281111561503e578251825591602001919060010190615023565b5b50905061504c91906150de565b5090565b81548183558181151161507d5760090281600902836000526020600020918201910161507c9190615171565b5b505050565b602060405190810160405280600081525090565b50805460008255600902906000526020600020908101906150b79190615171565b50565b50805460008255600502906000526020600020908101906150db9190615103565b50565b61510091905b808211156150fc5760008160009055506001016150e4565b5090565b90565b61516e91905b8082111561516a5760008082016000615122919061521b565b6001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560028201600090556003820160009055600482016000905550600501615109565b5090565b90565b61521891905b808211156152145760008082016000615190919061521b565b6001820160006151a0919061521b565b6002820160009055600382016000905560048201600090556005820160009055600682016000905560078201600090556008820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556008820160146101000a81549060ff021916905550600901615177565b5090565b90565b50805460018160011615610100020316600290046000825580601f106152415750615260565b601f01602090049060005260206000209081019061525f91906150de565b5b505600a165627a7a72305820f0ea0cf9a1e087fbe62ddddd208584a76a41f6c57859149175d2d005c59a7a1a0029

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

0000000000000000000000008c7d96da59d23b50b9eeefdacf58a5fce62b35b5000000000000000000000000000000000000000000000000000000005acbc861

-----Decoded View---------------
Arg [0] : _bookerAddress (address): 0x8C7D96DA59D23B50b9eEefdACf58A5fCe62B35b5
Arg [1] : _startTime (uint256): 1523304545

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000008c7d96da59d23b50b9eeefdacf58a5fce62b35b5
Arg [1] : 000000000000000000000000000000000000000000000000000000005acbc861


Swarm Source

bzzr://f0ea0cf9a1e087fbe62ddddd208584a76a41f6c57859149175d2d005c59a7a1a

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

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.