Contract Overview |  GU_AuctionPack
Balance: 146.27933039937087 Ether
Ether Value: $17,010.82 (@ $116.29/ETH)
Transactions: 164 txns
 Latest 25 transactions from a total of 164 transactions

TxHash Age From To Value [TxFee]
0x80c07f618dcb00fc5017f8946ad62a9cb4bc85b11264f9e3145890549ccd674a173 days 6 hrs ago0x4e6f10ed3b919cbbd872807f866ded9acdf7eede  IN   GU_AuctionPack0 Ether0.000628856
0xcf75ffeb98a93f588939251d08dce8e99201ac7626c0746dcfbb8199949d8711174 days 18 hrs ago0xbdb1b430f194b6f5eb161948dfb15c07836889f4  IN   GU_AuctionPack0 Ether0.00006575473
0xc924bf958c80afbe679751393a9c7a79a6887018a4859a43986ce73f86c06c77174 days 18 hrs ago0x90d2c40ade77067624a7270339afa76831f54769  IN   GU_AuctionPack146.27933039937087 Ether0.0004034982
0x726de15a459c8490896ca9ac2973e834fc537512b80f42591ed3a50f26906111174 days 19 hrs ago0x3f55f4d7475d1dadb893cd602ecc28aacb565a07  IN   GU_AuctionPack0 Ether0.000084572
0xaeef484c6b9a6b3afe481390621f70f64290eda3de3232fb10bfd6c91e41fe12174 days 19 hrs ago0x7e86ece08501937bc0cbd381a86e0382208c8dd4  IN   GU_AuctionPack143.41110823467732 Ether0.0004034982
0xaf59ce87033dac4a84bbfb8682c9208a82a1820fe0378d1a6dc350dfbca12ecf174 days 19 hrs ago0x62cb5d92b491d4f921844e5d787041225b87876d  IN   GU_AuctionPack0 Ether0.000084572
0x2770c67a59a7cd1097db307d644fa7e15c062b50b50cff4c557993253551cad0174 days 19 hrs ago0x90d2c40ade77067624a7270339afa76831f54769  IN   GU_AuctionPack140.59912572027188 Ether0.0003406032
0xca0ee966d4546ea786f42ce3952a46e490a36dec739698fad9381724b5efdfa5176 days 21 hrs ago0x47977e24b15e57b99aa381a4302dc74530455584  IN   GU_AuctionPack0 Ether0.0000676576
0xe30aa3a07a56d1cedcdeec2ae859e83bc8a761bb4e5f9635e84a65e90e32a964176 days 21 hrs ago0xe4a8dfca175cdca4ae370f5b7aaff24bd1c9c8ef  IN   GU_AuctionPack137.8422801179136 Ether0.003406032
0x8fccf1a4b2b564cb25e2f4c58db452fd4d7c253077d4650b9eff28af86b910f7177 days 11 hrs ago0x64e6d553a4a071a1133ba02d74f1d84013861177  IN   GU_AuctionPack0 Ether0.000063429
0xe9bd44f9568cc7b1d298626ae38422f8a299e9649e2c075d941e4ec078ced467177 days 11 hrs ago0xa8fef13a53ec1503e00bfbedacb3566d778e5d27  IN   GU_AuctionPack135.13949031168 Ether0.0001784112
0xdb56d5b402a9ecee70c2e827a913be40a6fd79150a42cad545de151162674ba1177 days 22 hrs ago0x8b5f5bae3ecb49a9b65f0f3d6e52cf9d98678bd4  IN   GU_AuctionPack0 Ether0.000063429
0x651d0871a5a68a28b962766bd35d1af1dcef04c1a9056eadc58ef99711048906177 days 22 hrs ago0xe4a8dfca175cdca4ae370f5b7aaff24bd1c9c8ef  IN   GU_AuctionPack132.489696384 Ether0.001784112
0xa4a1b5a4d6afa43a47fed8b4c833536186a4fe9ab9efe5f36b265fda060ab010179 days 13 hrs ago0x6edee6f5e53f72b00f928e20f8711f51ec64e074  IN   GU_AuctionPack0 Ether0.000063429
0x41936c55b862f91e8a1bd259acb202a1ff57a05e170d8ca84b30b80b918f81c1179 days 13 hrs ago0xa8fef13a53ec1503e00bfbedacb3566d778e5d27  IN   GU_AuctionPack129.8918592 Ether0.000354384
0x03b414bf4e3dc275d96d7da47db036599e06d60eb791823b67970af01c7d3e5c179 days 15 hrs ago0x9026e7628bc104b6ff7283f29848c9573255019b  IN   GU_AuctionPack0 Ether0.00042286
0xeb0d92caa7ab2e151d9cf13dc23748b6367fcd0d31ab1775fb9558dae26edff0179 days 17 hrs ago0x5aa2a43308108f304053456efc7aef86452e5624  IN   GU_AuctionPack0 Ether0.000063429
0xbcc89d8abc13c88bdd384dfa245a02558878d1bdd087aa55c8d7edd6207b7eed179 days 17 hrs ago0xe4a8dfca175cdca4ae370f5b7aaff24bd1c9c8ef  IN   GU_AuctionPack127.34496 Ether0.002113562
0xb6a0890488d10271c6eaefc6559d2c198c812b3f86362157a079b0d5b59aeb32179 days 19 hrs ago0x9ec0549ea7423f041106af109229634ba63e5601  IN   GU_AuctionPack124.848 Ether0.000288138
0x472d49f527a514158198670c0887abc9f53cb14050181e30bc3f3868ab9b2820179 days 19 hrs ago0xea53ef1649357feb24dc0109db08517c8a4b4b38  IN   GU_AuctionPack0 Ether0.000093984
0x28c8f6a17023ba02339650049fb721a7db0c4cdf71d94efa13555060f37a9c02179 days 19 hrs ago0x5fb8ea9688b5c44fa45988018c211e74d2cf7a18  IN   GU_AuctionPack0 Ether0.000084572
0x7e9242e044a094d93cdc52f46d1af7c54a956d6d70e6a261cfc6458f89da2f7e179 days 19 hrs ago0xc2707568d31f3fb1fc55b2f8b2ae5682eaa72041  IN   GU_AuctionPack122.4 Ether0.0005956402
0x1dc300f79076d20a6d1d57e462e3780d430c004ffef4f26bf28284e5d0add0a1179 days 20 hrs ago0xbdb1b430f194b6f5eb161948dfb15c07836889f4  IN   GU_AuctionPack0 Ether0.000063429
0x83c84444ee4f35eed96d981d974b595beac2f36ca45813a8b1fd16bc636c6080179 days 20 hrs ago0xe4a8dfca175cdca4ae370f5b7aaff24bd1c9c8ef  IN   GU_AuctionPack120 Ether0.005491402
0x55460c99d4a6f716f0a2f84d0ccdaaa422bc01187561206eb3c6217009096e98180 days 1 hr ago0x1aff1e0f1d5f76f92145a278d8c31af9ade783dd  IN   GU_AuctionPack0.0001 Ether0.000042092
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click here To View More View All
ParentTxHash Block Age From To Value
0xcf75ffeb98a93f588939251d08dce8e99201ac7626c0746dcfbb8199949d87116074767174 days 18 hrs ago0x9b45b116b68c388e49610c9be585dbee201467a70x7e86ece08501937bc0cbd381a86e0382208c8dd4143.41110823467732 Ether
0x726de15a459c8490896ca9ac2973e834fc537512b80f42591ed3a50f269061116074635174 days 19 hrs ago0x9b45b116b68c388e49610c9be585dbee201467a70x90d2c40ade77067624a7270339afa76831f54769140.59912572027188 Ether
0xaf59ce87033dac4a84bbfb8682c9208a82a1820fe0378d1a6dc350dfbca12ecf6074594174 days 19 hrs ago0x9b45b116b68c388e49610c9be585dbee201467a70xe4a8dfca175cdca4ae370f5b7aaff24bd1c9c8ef137.8422801179136 Ether
0xca0ee966d4546ea786f42ce3952a46e490a36dec739698fad9381724b5efdfa56062110176 days 21 hrs ago0x9b45b116b68c388e49610c9be585dbee201467a70xa8fef13a53ec1503e00bfbedacb3566d778e5d27135.13949031168 Ether
0x8fccf1a4b2b564cb25e2f4c58db452fd4d7c253077d4650b9eff28af86b910f76058823177 days 11 hrs ago0x9b45b116b68c388e49610c9be585dbee201467a70xe4a8dfca175cdca4ae370f5b7aaff24bd1c9c8ef132.489696384 Ether
0xdb56d5b402a9ecee70c2e827a913be40a6fd79150a42cad545de151162674ba16056002177 days 22 hrs ago0x9b45b116b68c388e49610c9be585dbee201467a70xa8fef13a53ec1503e00bfbedacb3566d778e5d27129.8918592 Ether
0xa4a1b5a4d6afa43a47fed8b4c833536186a4fe9ab9efe5f36b265fda060ab0106046388179 days 13 hrs ago0x9b45b116b68c388e49610c9be585dbee201467a70xe4a8dfca175cdca4ae370f5b7aaff24bd1c9c8ef127.34496 Ether
0x03b414bf4e3dc275d96d7da47db036599e06d60eb791823b67970af01c7d3e5c6045730179 days 15 hrs ago0x9b45b116b68c388e49610c9be585dbee201467a70xc2707568d31f3fb1fc55b2f8b2ae5682eaa72041122.4 Ether
0xeb0d92caa7ab2e151d9cf13dc23748b6367fcd0d31ab1775fb9558dae26edff06045343179 days 17 hrs ago0x9b45b116b68c388e49610c9be585dbee201467a70x9ec0549ea7423f041106af109229634ba63e5601124.848 Ether
0x28c8f6a17023ba02339650049fb721a7db0c4cdf71d94efa13555060f37a9c026044829179 days 19 hrs ago0x9b45b116b68c388e49610c9be585dbee201467a70xe4a8dfca175cdca4ae370f5b7aaff24bd1c9c8ef120 Ether
0x1dc300f79076d20a6d1d57e462e3780d430c004ffef4f26bf28284e5d0add0a16044557179 days 20 hrs ago0x9b45b116b68c388e49610c9be585dbee201467a70xa8fef13a53ec1503e00bfbedacb3566d778e5d2791.263888 Ether
0x2c57e738af4947a5c544d382f4269843f6c8d150ff892bc4a02b0b7a80bdf3616042861180 days 3 hrs ago0x9b45b116b68c388e49610c9be585dbee201467a70xc1adaf309fc6df3547a083b189abb68f8fc76a9089.4744 Ether
0x2d1fa6a0758914a7a2f6727a90b63de46836c375e2bd337825332d90c4f2502f6042654180 days 4 hrs ago0x9b45b116b68c388e49610c9be585dbee201467a70xa8fef13a53ec1503e00bfbedacb3566d778e5d2787.72 Ether
0xbe3a00201e961b1d6625779a9b60211933e00c42175b04982e00067ae21726986042601180 days 4 hrs ago0x9b45b116b68c388e49610c9be585dbee201467a70xe8ac0cf3a9cea74e7653a863499e8e661440be1386 Ether
0x64c829ba9e66649bd16922e597753b23c4fa547d5c124eaba3b96c77133a64446042599180 days 4 hrs ago0x9b45b116b68c388e49610c9be585dbee201467a70xa8fef13a53ec1503e00bfbedacb3566d778e5d2783.64 Ether
0xf4ca64a45b0e319d87c7b25992dd6ac3436b23513f5571d06fadca12ee03b5826042587180 days 4 hrs ago0x9b45b116b68c388e49610c9be585dbee201467a70xe8ac0cf3a9cea74e7653a863499e8e661440be1382 Ether
0xb154b771b64b7765fd0046095b985e1494e163fa12be853706a924b8d127ee436042575180 days 4 hrs ago0x9b45b116b68c388e49610c9be585dbee201467a70xa8fef13a53ec1503e00bfbedacb3566d778e5d2779.56 Ether
0x7297ea556e800ad539327d5b97cba599a27fae794e4e808c9051262b1c06a49e6042570180 days 4 hrs ago0x9b45b116b68c388e49610c9be585dbee201467a70xe8ac0cf3a9cea74e7653a863499e8e661440be1378 Ether
0x6db820da4dff8be21dd0a7c68c680d4b3bff25b591fee7d1993fc9c478399b2a6042520180 days 4 hrs ago0x9b45b116b68c388e49610c9be585dbee201467a70xa8fef13a53ec1503e00bfbedacb3566d778e5d2776 Ether
0xc808752a2e0028dada391e72be196f7776d53ea3c0a0d293c47b5d7293989cd66042475180 days 4 hrs ago0x9b45b116b68c388e49610c9be585dbee201467a70xe8ac0cf3a9cea74e7653a863499e8e661440be1362 Ether
0xb28b77775ec9cfd50c1694fca31159ba8279e1b2eb3bf7028d86374a44ab98be6042458180 days 4 hrs ago0x9b45b116b68c388e49610c9be585dbee201467a70xb08f95dbc639621dbaf48a472ae8fce0f6f56a6e59.389 Ether
0xadc4fbeca3f5ce26ef2598a9436c9ea9dd12c76a6f7da750714e3d12adc188c46042445180 days 5 hrs ago0x9b45b116b68c388e49610c9be585dbee201467a70xe7fb32ac2dc526a8cc9b3a732c35670c08a64e7258.22364 Ether
0x18800469b74c13beaf651e4fdc607886402ab563039831ba961a9e84beea3bb76042403180 days 5 hrs ago0x9b45b116b68c388e49610c9be585dbee201467a70xb08f95dbc639621dbaf48a472ae8fce0f6f56a6e57.082 Ether
0xb61d675f5e5561d7558ffebc483f7d031b4d6a474f5b88dba3a337b1507c34cb6042321180 days 5 hrs ago0x9b45b116b68c388e49610c9be585dbee201467a70xe7fb32ac2dc526a8cc9b3a732c35670c08a64e7255.9623 Ether
0x303c65e4b9da667284bbc6fea3505bdd9d53c1ad1ade746b3e32ab8f9db078166042292180 days 5 hrs ago0x9b45b116b68c388e49610c9be585dbee201467a70xb08f95dbc639621dbaf48a472ae8fce0f6f56a6e54.865 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

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



  Contract Source Code   Find Similiar Contracts

pragma solidity 0.4.24;


contract Governable {

    event Pause();
    event Unpause();

    address public governor;
    bool public paused = false;

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

    function setGovernor(address _gov) public onlyGovernor {
        governor = _gov;
    }

    modifier onlyGovernor {
        require(msg.sender == governor);
        _;
    }

    /**
    * @dev Modifier to make a function callable only when the contract is not paused.
    */
    modifier whenNotPaused() {
        require(!paused);
        _;
    }

    /**
    * @dev Modifier to make a function callable only when the contract is paused.
    */
    modifier whenPaused() {
        require(paused);
        _;
    }

    /**
    * @dev called by the owner to pause, triggers stopped state
    */
    function pause() onlyGovernor whenNotPaused public {
        paused = true;
        emit Pause();
    }

    /**
    * @dev called by the owner to unpause, returns to normal state
    */
    function unpause() onlyGovernor whenPaused public {
        paused = false;
        emit Unpause();
    }

}

contract CardBase is Governable {


    struct Card {
        uint16 proto;
        uint16 purity;
    }

    function getCard(uint id) public view returns (uint16 proto, uint16 purity) {
        Card memory card = cards[id];
        return (card.proto, card.purity);
    }

    function getShine(uint16 purity) public pure returns (uint8) {
        return uint8(purity / 1000);
    }

    Card[] public cards;
    
}

contract CardProto is CardBase {

    event NewProtoCard(
        uint16 id, uint8 season, uint8 god, 
        Rarity rarity, uint8 mana, uint8 attack, 
        uint8 health, uint8 cardType, uint8 tribe, bool packable
    );

    struct Limit {
        uint64 limit;
        bool exists;
    }

    // limits for mythic cards
    mapping(uint16 => Limit) public limits;

    // can only set limits once
    function setLimit(uint16 id, uint64 limit) public onlyGovernor {
        Limit memory l = limits[id];
        require(!l.exists);
        limits[id] = Limit({
            limit: limit,
            exists: true
        });
    }

    function getLimit(uint16 id) public view returns (uint64 limit, bool set) {
        Limit memory l = limits[id];
        return (l.limit, l.exists);
    }

    // could make these arrays to save gas
    // not really necessary - will be update a very limited no of times
    mapping(uint8 => bool) public seasonTradable;
    mapping(uint8 => bool) public seasonTradabilityLocked;
    uint8 public currentSeason;

    function makeTradable(uint8 season) public onlyGovernor {
        seasonTradable[season] = true;
    }

    function makeUntradable(uint8 season) public onlyGovernor {
        require(!seasonTradabilityLocked[season]);
        seasonTradable[season] = false;
    }

    function makePermanantlyTradable(uint8 season) public onlyGovernor {
        require(seasonTradable[season]);
        seasonTradabilityLocked[season] = true;
    }

    function isTradable(uint16 proto) public view returns (bool) {
        return seasonTradable[protos[proto].season];
    }

    function nextSeason() public onlyGovernor {
        //Seasons shouldn't go to 0 if there is more than the uint8 should hold, the governor should know this ¯\_(ツ)_/¯ -M
        require(currentSeason <= 255); 

        currentSeason++;
        mythic.length = 0;
        legendary.length = 0;
        epic.length = 0;
        rare.length = 0;
        common.length = 0;
    }

    enum Rarity {
        Common,
        Rare,
        Epic,
        Legendary, 
        Mythic
    }

    uint8 constant SPELL = 1;
    uint8 constant MINION = 2;
    uint8 constant WEAPON = 3;
    uint8 constant HERO = 4;

    struct ProtoCard {
        bool exists;
        uint8 god;
        uint8 season;
        uint8 cardType;
        Rarity rarity;
        uint8 mana;
        uint8 attack;
        uint8 health;
        uint8 tribe;
    }

    // there is a particular design decision driving this:
    // need to be able to iterate over mythics only for card generation
    // don't store 5 different arrays: have to use 2 ids
    // better to bear this cost (2 bytes per proto card)
    // rather than 1 byte per instance

    uint16 public protoCount;
    
    mapping(uint16 => ProtoCard) protos;

    uint16[] public mythic;
    uint16[] public legendary;
    uint16[] public epic;
    uint16[] public rare;
    uint16[] public common;

    function addProtos(
        uint16[] externalIDs, uint8[] gods, Rarity[] rarities, uint8[] manas, uint8[] attacks, 
        uint8[] healths, uint8[] cardTypes, uint8[] tribes, bool[] packable
    ) public onlyGovernor returns(uint16) {

        for (uint i = 0; i < externalIDs.length; i++) {

            ProtoCard memory card = ProtoCard({
                exists: true,
                god: gods[i],
                season: currentSeason,
                cardType: cardTypes[i],
                rarity: rarities[i],
                mana: manas[i],
                attack: attacks[i],
                health: healths[i],
                tribe: tribes[i]
            });

            _addProto(externalIDs[i], card, packable[i]);
        }
        
    }

    function addProto(
        uint16 externalID, uint8 god, Rarity rarity, uint8 mana, uint8 attack, uint8 health, uint8 cardType, uint8 tribe, bool packable
    ) public onlyGovernor returns(uint16) {
        ProtoCard memory card = ProtoCard({
            exists: true,
            god: god,
            season: currentSeason,
            cardType: cardType,
            rarity: rarity,
            mana: mana,
            attack: attack,
            health: health,
            tribe: tribe
        });

        _addProto(externalID, card, packable);
    }

    function addWeapon(
        uint16 externalID, uint8 god, Rarity rarity, uint8 mana, uint8 attack, uint8 durability, bool packable
    ) public onlyGovernor returns(uint16) {

        ProtoCard memory card = ProtoCard({
            exists: true,
            god: god,
            season: currentSeason,
            cardType: WEAPON,
            rarity: rarity,
            mana: mana,
            attack: attack,
            health: durability,
            tribe: 0
        });

        _addProto(externalID, card, packable);
    }

    function addSpell(uint16 externalID, uint8 god, Rarity rarity, uint8 mana, bool packable) public onlyGovernor returns(uint16) {

        ProtoCard memory card = ProtoCard({
            exists: true,
            god: god,
            season: currentSeason,
            cardType: SPELL,
            rarity: rarity,
            mana: mana,
            attack: 0,
            health: 0,
            tribe: 0
        });

        _addProto(externalID, card, packable);
    }

    function addMinion(
        uint16 externalID, uint8 god, Rarity rarity, uint8 mana, uint8 attack, uint8 health, uint8 tribe, bool packable
    ) public onlyGovernor returns(uint16) {

        ProtoCard memory card = ProtoCard({
            exists: true,
            god: god,
            season: currentSeason,
            cardType: MINION,
            rarity: rarity,
            mana: mana,
            attack: attack,
            health: health,
            tribe: tribe
        });

        _addProto(externalID, card, packable);
    }

    function _addProto(uint16 externalID, ProtoCard memory card, bool packable) internal {

        require(!protos[externalID].exists);

        card.exists = true;

        protos[externalID] = card;

        protoCount++;

        emit NewProtoCard(
            externalID, currentSeason, card.god, 
            card.rarity, card.mana, card.attack, 
            card.health, card.cardType, card.tribe, packable
        );

        if (packable) {
            Rarity rarity = card.rarity;
            if (rarity == Rarity.Common) {
                common.push(externalID);
            } else if (rarity == Rarity.Rare) {
                rare.push(externalID);
            } else if (rarity == Rarity.Epic) {
                epic.push(externalID);
            } else if (rarity == Rarity.Legendary) {
                legendary.push(externalID);
            } else if (rarity == Rarity.Mythic) {
                mythic.push(externalID);
            } else {
                require(false);
            }
        }
    }

    function getProto(uint16 id) public view returns(
        bool exists, uint8 god, uint8 season, uint8 cardType, Rarity rarity, uint8 mana, uint8 attack, uint8 health, uint8 tribe
    ) {
        ProtoCard memory proto = protos[id];
        return (
            proto.exists,
            proto.god,
            proto.season,
            proto.cardType,
            proto.rarity,
            proto.mana,
            proto.attack,
            proto.health,
            proto.tribe
        );
    }

    function getRandomCard(Rarity rarity, uint16 random) public view returns (uint16) {
        // modulo bias is fine - creates rarity tiers etc
        // will obviously revert is there are no cards of that type: this is expected - should never happen
        if (rarity == Rarity.Common) {
            return common[random % common.length];
        } else if (rarity == Rarity.Rare) {
            return rare[random % rare.length];
        } else if (rarity == Rarity.Epic) {
            return epic[random % epic.length];
        } else if (rarity == Rarity.Legendary) {
            return legendary[random % legendary.length];
        } else if (rarity == Rarity.Mythic) {
            // make sure a mythic is available
            uint16 id;
            uint64 limit;
            bool set;
            for (uint i = 0; i < mythic.length; i++) {
                id = mythic[(random + i) % mythic.length];
                (limit, set) = getLimit(id);
                if (set && limit > 0){
                    return id;
                }
            }
            // if not, they get a legendary :(
            return legendary[random % legendary.length];
        }
        require(false);
        return 0;
    }

    // can never adjust tradable cards
    // each season gets a 'balancing beta'
    // totally immutable: season, rarity
    function replaceProto(
        uint16 index, uint8 god, uint8 cardType, uint8 mana, uint8 attack, uint8 health, uint8 tribe
    ) public onlyGovernor {
        ProtoCard memory pc = protos[index];
        require(!seasonTradable[pc.season]);
        protos[index] = ProtoCard({
            exists: true,
            god: god,
            season: pc.season,
            cardType: cardType,
            rarity: pc.rarity,
            mana: mana,
            attack: attack,
            health: health,
            tribe: tribe
        });
    }

}

contract MigrationInterface {

    function createCard(address user, uint16 proto, uint16 purity) public returns (uint);

    function getRandomCard(CardProto.Rarity rarity, uint16 random) public view returns (uint16);

    function migrate(uint id) public;

}

contract CardPackFour {

    MigrationInterface public migration;
    uint public creationBlock;

    constructor(MigrationInterface _core) public payable {
        migration = _core;
        creationBlock = 5939061 + 2000; // set to creation block of first contracts + 8 hours for down time
    }

    event Referral(address indexed referrer, uint value, address purchaser);

    /**
    * purchase 'count' of this type of pack
    */
    function purchase(uint16 packCount, address referrer) public payable;

    // store purity and shine as one number to save users gas
    function _getPurity(uint16 randOne, uint16 randTwo) internal pure returns (uint16) {
        if (randOne >= 998) {
            return 3000 + randTwo;
        } else if (randOne >= 988) {
            return 2000 + randTwo;
        } else if (randOne >= 938) {
            return 1000 + randTwo;
        } else {
            return randTwo;
        }
    }

}

contract Ownable {

    address public owner;

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

    function setOwner(address _owner) public onlyOwner {
        owner = _owner;
    }

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

}

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

    bool public paused = false;


    /**
    * @dev Modifier to make a function callable only when the contract is not paused.
    */
    modifier whenNotPaused() {
        require(!paused);
        _;
    }

    /**
    * @dev Modifier to make a function callable only when the contract is paused.
    */
    modifier whenPaused() {
        require(paused);
        _;
    }

    /**
    * @dev called by the owner to pause, triggers stopped state
    */
    function pause() onlyOwner whenNotPaused public {
        paused = true;
        emit Pause();
    }

    /**
    * @dev called by the owner to unpause, returns to normal state
    */
    function unpause() onlyOwner whenPaused public {
        paused = false;
        emit Unpause();
    }
}

library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
    // Gas optimization: this is cheaper than asserting 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
    if (a == 0) {
      return 0;
    }

    c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    // uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return a / b;
  }

  /**
  * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
    c = a + b;
    assert(c >= a);
    return c;
  }
}

library SafeMath64 {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint64 a, uint64 b) internal pure returns (uint64 c) {
    // Gas optimization: this is cheaper than asserting 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
    if (a == 0) {
      return 0;
    }

    c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint64 a, uint64 b) internal pure returns (uint64) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    // uint64 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return a / b;
  }

  /**
  * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint64 a, uint64 b) internal pure returns (uint64) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint64 a, uint64 b) internal pure returns (uint64 c) {
    c = a + b;
    assert(c >= a);
    return c;
  }
}

contract AuctionPack is CardPackFour, Pausable {

    using SafeMath for uint;
    // probably a better way to do this/don't need to do it at all
    using SafeMath64 for uint64;

    mapping(address => uint) owed;

    event Created(uint indexed id, uint16 proto, uint16 purity, uint minBid, uint length);
    event Opened(uint indexed id, uint64 start);
    event Extended(uint indexed id, uint64 length);
    event Bid(uint indexed id, address indexed bidder, uint value);
    event Claimed(uint indexed id, uint indexed cardID, address indexed bidder, uint value, uint16 proto, uint16 purity);
    event Bonus(uint indexed id, uint indexed cardID, address indexed bidder, uint16 proto, uint16 purity);

    enum Status {
        Closed,
        Open,
        Claimed
    }

    struct Auction {
        Status status;
        uint16 proto;
        uint16 purity;
        uint highestBid;
        address highestBidder;
        uint64 start;
        uint64 length;
        address beneficiary;
        uint16 bonusProto;
        uint16 bonusPurity;
        uint64 bufferPeriod;
        uint minIncreasePercent;
    }

    Auction[] auctions;

    constructor(MigrationInterface _migration) public CardPackFour(_migration) {
        
    }

    function getAuction(uint id) public view returns (
        Status status,
        uint16 proto,
        uint16 purity,
        uint highestBid,
        address highestBidder,
        uint64 start,
        uint64 length,
        uint16 bonusProto,
        uint16 bonusPurity,
        uint64 bufferPeriod,
        uint minIncreasePercent,
        address beneficiary
    ) {
        require(auctions.length > id);
        Auction memory a = auctions[id];
        return (
            a.status, a.proto, a.purity, a.highestBid, 
            a.highestBidder, a.start, a.length, a.bonusProto, 
            a.bonusPurity, a.bufferPeriod, a.minIncreasePercent, a.beneficiary
        );
    }

    function createAuction(
        address beneficiary, uint16 proto, uint16 purity, 
        uint minBid, uint64 length, uint16 bonusProto, uint16 bonusPurity,
        uint64 bufferPeriod, uint minIncrease
    ) public onlyOwner whenNotPaused returns (uint) {

        require(beneficiary != address(0));
        require(minBid >= 100 wei);

        Auction memory auction = Auction({
            status: Status.Closed,
            proto: proto,
            purity: purity,
            highestBid: minBid,
            highestBidder: address(0),
            start: 0,
            length: length,
            beneficiary: beneficiary,
            bonusProto: bonusProto,
            bonusPurity: bonusPurity,
            bufferPeriod: bufferPeriod,
            minIncreasePercent: minIncrease
        });

        uint id = auctions.push(auction) - 1;

        emit Created(id, proto, purity, minBid, length);

        return id;
    }

    function openAuction(uint id) public onlyOwner {
        Auction storage auction = auctions[id];
        require(auction.status == Status.Closed);
        auction.status = Status.Open;
        auction.start = uint64(block.number);
        emit Opened(id, auction.start);
    }

    // dummy implementation to support interface
    function purchase(uint16, address) public payable { 
        
    }

    function getMinBid(uint id) public view returns (uint) {

        Auction memory auction = auctions[id];

        uint highest = auction.highestBid;
        
        // calculate one percent of the number
        // highest will always be >= 100
        uint numerator = highest.div(100);

        // calculate the minimum increase required
        uint minIncrease = numerator.mul(auction.minIncreasePercent);

        uint threshold = highest + minIncrease;

        return threshold;
    }

    function bid(uint id) public payable {

        Auction storage auction = auctions[id];

        require(auction.status == Status.Open);

        uint64 end = auction.start.add(auction.length);

        require(end >= block.number);

        uint threshold = getMinBid(id);
        
        require(msg.value >= threshold);

        
        // if within the buffer period of the auction
        // extend to the buffer period of blocks

        uint64 differenceToEnd = end.sub(uint64(block.number));

        if (auction.bufferPeriod > differenceToEnd) {
            
            // extend the auction period to be at least the buffer period
            uint64 toAdd = auction.bufferPeriod.sub(differenceToEnd);

            auction.length = auction.length.add(toAdd);

            emit Extended(id, auction.length);
        }

        emit Bid(id, msg.sender, msg.value);

        if (auction.highestBidder != address(0)) {

            // let's just go with the safe option rather than using send(): probably fine but no loss
            owed[auction.highestBidder] = owed[auction.highestBidder].add(auction.highestBid);

            // give the previous bidder their bonus/consolation card 
            if (auction.bonusProto != 0) {
                uint cardID = migration.createCard(auction.highestBidder, auction.bonusProto, auction.bonusPurity);
                emit Bonus(id, cardID, auction.highestBidder, auction.bonusProto, auction.bonusPurity);
            }
        }

        auction.highestBid = msg.value;
        auction.highestBidder = msg.sender;
    }

    // anyone can claim the card/pay gas for them
    function claim(uint id) public returns (uint) {

        Auction storage auction = auctions[id];

        uint64 end = auction.start.add(auction.length);

        require(block.number > end);

        require(auction.status == Status.Open);
        
        auction.status = Status.Claimed;

        uint cardID = migration.createCard(auction.highestBidder, auction.proto, auction.purity);

        emit Claimed(id, cardID, auction.highestBidder, auction.highestBid, auction.proto, auction.purity);

        // don't require this to be a trusted address
        owed[auction.beneficiary] = owed[auction.beneficiary].add(auction.highestBid);

        return cardID;
    }

    function withdraw(address user) public {
        uint balance = owed[user];
        require(balance > 0);
        owed[user] = 0;
        user.transfer(balance);
    }

    function getOwed(address user) public view returns (uint) {
        return owed[user];
    }
    
}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"migration","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"creationBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"uint256"}],"name":"openAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"uint256"}],"name":"claim","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"","type":"uint16"},{"name":"","type":"address"}],"name":"purchase","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"uint256"}],"name":"bid","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"getOwed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"uint256"}],"name":"getAuction","outputs":[{"name":"status","type":"uint8"},{"name":"proto","type":"uint16"},{"name":"purity","type":"uint16"},{"name":"highestBid","type":"uint256"},{"name":"highestBidder","type":"address"},{"name":"start","type":"uint64"},{"name":"length","type":"uint64"},{"name":"bonusProto","type":"uint16"},{"name":"bonusPurity","type":"uint16"},{"name":"bufferPeriod","type":"uint64"},{"name":"minIncreasePercent","type":"uint256"},{"name":"beneficiary","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"uint256"}],"name":"getMinBid","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"proto","type":"uint16"},{"name":"purity","type":"uint16"},{"name":"minBid","type":"uint256"},{"name":"length","type":"uint64"},{"name":"bonusProto","type":"uint16"},{"name":"bonusPurity","type":"uint16"},{"name":"bufferPeriod","type":"uint64"},{"name":"minIncrease","type":"uint256"}],"name":"createAuction","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_migration","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"uint256"},{"indexed":false,"name":"proto","type":"uint16"},{"indexed":false,"name":"purity","type":"uint16"},{"indexed":false,"name":"minBid","type":"uint256"},{"indexed":false,"name":"length","type":"uint256"}],"name":"Created","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"uint256"},{"indexed":false,"name":"start","type":"uint64"}],"name":"Opened","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"uint256"},{"indexed":false,"name":"length","type":"uint64"}],"name":"Extended","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"uint256"},{"indexed":true,"name":"bidder","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Bid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"uint256"},{"indexed":true,"name":"cardID","type":"uint256"},{"indexed":true,"name":"bidder","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"proto","type":"uint16"},{"indexed":false,"name":"purity","type":"uint16"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"uint256"},{"indexed":true,"name":"cardID","type":"uint256"},{"indexed":true,"name":"bidder","type":"address"},{"indexed":false,"name":"proto","type":"uint16"},{"indexed":false,"name":"purity","type":"uint16"}],"name":"Bonus","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"referrer","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"purchaser","type":"address"}],"name":"Referral","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60806040526002805460a060020a60ff021916905534801561002057600080fd5b5060405160208061148b833981016040525160008054600160a060020a03909216600160a060020a0319928316179055625aa745600155600280549091163317905561141a806100716000396000f3006080604052600436106100cc5763ffffffff60e060020a60003504166313af403581146100d15780631705a3bd146100f457806317634514146101255780631edc8f911461014c578063379607f514610164578063396c82281461017c5780633f4ba83a14610197578063454a2ab3146101ac57806351cff8d9146101b75780635c975abb146101d857806370c0b6471461020157806378bd7935146102225780637f21d498146102d35780638456cb59146102eb5780638da5cb5b14610300578063a944f15b14610315575b600080fd5b3480156100dd57600080fd5b506100f2600160a060020a036004351661036d565b005b34801561010057600080fd5b506101096103b3565b60408051600160a060020a039092168252519081900360200190f35b34801561013157600080fd5b5061013a6103c2565b60408051918252519081900360200190f35b34801561015857600080fd5b506100f26004356103c8565b34801561017057600080fd5b5061013a6004356104ac565b6100f261ffff60043516600160a060020a03602435166106d2565b3480156101a357600080fd5b506100f26106d6565b6100f260043561074e565b3480156101c357600080fd5b506100f2600160a060020a0360043516610acf565b3480156101e457600080fd5b506101ed610b3d565b604080519115158252519081900360200190f35b34801561020d57600080fd5b5061013a600160a060020a0360043516610b4d565b34801561022e57600080fd5b5061023a600435610b68565b604051808d600281111561024a57fe5b60ff16815261ffff9c8d1660208201529a8c166040808d019190915260608c019a909a5250600160a060020a0397881660808b015267ffffffffffffffff96871660a08b015294861660c08a015292891660e089015297166101008701529590911661012085015261014084019490945292909216610160820152905190819003610180019150f35b3480156102df57600080fd5b5061013a600435610dcd565b3480156102f757600080fd5b506100f2610f1a565b34801561030c57600080fd5b50610109610f97565b34801561032157600080fd5b5061013a600160a060020a036004351661ffff6024358116906044358116906064359067ffffffffffffffff60843581169160a43581169160c4359091169060e4351661010435610fa6565b600254600160a060020a0316331461038457600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a031681565b60015481565b600254600090600160a060020a031633146103e257600080fd5b60048054839081106103f057fe5b6000918252602082206006909102019150815460ff16600281111561041157fe5b1461041b57600080fd5b8054600160ff1990911617815560028101805467ffffffffffffffff43811660a060020a9081027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff90931692909217928390556040805192909304168152905183917f6f83e6d20684954e1a342ff1c4bdb86ac81188a98aedf50f27e24066eeb8f78c919081900360200190a25050565b6000806000806004858154811015156104c157fe5b60009182526020909120600690910201600381015460028201549194506104fc9167ffffffffffffffff60a060020a909104811691166112fe565b915067ffffffffffffffff8216431161051457600080fd5b6001835460ff16600281111561052657fe5b1461053057600080fd5b825460ff191660029081178085556000805492860154604080517ffb36eba1000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152610100850461ffff9081166024830152630100000090950490941660448501525193169263fb36eba1926064808201936020939283900390910190829087803b1580156105c957600080fd5b505af11580156105dd573d6000803e3d6000fd5b505050506040513d60208110156105f357600080fd5b50516002840154600185015485546040805192835261ffff61010083048116602085015263010000009092049091168282015251929350600160a060020a0390911691839188917f022d1fd745dac3ef695c0702dea9a03950feff1b0b8921fabf4e900ff761baec9181900360600190a46001830154600380850154680100000000000000009004600160a060020a03166000908152602091909152604090205461069d9161131e565b600384810154600160a060020a0368010000000000000000909104166000908152602091909152604090205592505050919050565b5050565b600254600160a060020a031633146106ed57600080fd5b60025460a060020a900460ff16151561070557600080fd5b6002805474ff0000000000000000000000000000000000000000191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b60008060008060008060048781548110151561076657fe5b6000918252602090912060069091020195506001865460ff16600281111561078a57fe5b1461079457600080fd5b600386015460028701546107bc9167ffffffffffffffff60a060020a909204821691166112fe565b94504367ffffffffffffffff861610156107d557600080fd5b6107de87610dcd565b9350348411156107ed57600080fd5b61080767ffffffffffffffff86164363ffffffff61132b16565b600487015490935067ffffffffffffffff808516911611156108c25760048601546108429067ffffffffffffffff168463ffffffff61132b16565b60038701549092506108649067ffffffffffffffff168363ffffffff6112fe16565b60038701805467ffffffffffffffff92831667ffffffffffffffff19909116179081905560408051919092168152905188917f338e4f3270c5fe01ef48624162999aac13d87c287a841fd1bc89f7531df5e341919081900360200190a25b604080513481529051339189917fdcd726e11f8b5e160f00290f0fe3a1abb547474e53a8e7a8f49a85e7b1ca31999181900360200190a36002860154600160a060020a031615610aa15760018601546002870154600160a060020a031660009081526003602052604090205461093d9163ffffffff61131e16565b6002870154600160a060020a031660009081526003602081905260409091209190915586015460e060020a900461ffff1615610aa1576000805460028801546003890154604080517ffb36eba1000000000000000000000000000000000000000000000000000000008152600160a060020a03938416600482015261ffff60e060020a84048116602483015260f060020a909304909216604483015251919092169263fb36eba192606480820193602093909283900390910190829087803b158015610a0857600080fd5b505af1158015610a1c573d6000803e3d6000fd5b505050506040513d6020811015610a3257600080fd5b5051600287015460038801546040805161ffff60e060020a84048116825260f060020a90930490921660208301528051939450600160a060020a039092169284928b927fb06a5c1eec1252e935d05805ac0f4879f49574f1e0ac3ba6d72c83264aa07da7929081900390910190a45b5050346001850155505050600201805473ffffffffffffffffffffffffffffffffffffffff19163317905550565b600160a060020a038116600090815260036020526040812054908111610af457600080fd5b600160a060020a0382166000818152600360205260408082208290555183156108fc0291849190818181858888f19350505050158015610b38573d6000803e3d6000fd5b505050565b60025460a060020a900460ff1681565b600160a060020a031660009081526003602052604090205490565b600080600080600080600080600080600080610b82611388565b6004548e10610b9057600080fd5b600480548f908110610b9e57fe5b600091825260209091206040805161018081019091526006909202018054829060ff166002811115610bcc57fe5b6002811115610bd757fe5b81526020016000820160019054906101000a900461ffff1661ffff1661ffff1681526020016000820160039054906101000a900461ffff1661ffff1661ffff168152602001600182015481526020016002820160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020016002820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016003820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016003820160089054906101000a9004600160a060020a0316600160a060020a0316600160a060020a0316815260200160038201601c9054906101000a900461ffff1661ffff1661ffff16815260200160038201601e9054906101000a900461ffff1661ffff1661ffff1681526020016004820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016005820154815250509050806000015181602001518260400151836060015184608001518560a001518660c001518761010001518861012001518961014001518a61016001518b60e001519c509c509c509c509c509c509c509c509c509c509c509c505091939597999b5091939597999b565b6000610dd7611388565b600080600080600487815481101515610dec57fe5b600091825260209091206040805161018081019091526006909202018054829060ff166002811115610e1a57fe5b6002811115610e2557fe5b8152815461010080820461ffff908116602085015263010000009092048216604084015260018401546060808501919091526002850154600160a060020a03808216608087015260a060020a90910467ffffffffffffffff90811660a0870152600387015480821660c088015268010000000000000000810490921660e087015260e060020a820485169386019390935260f060020a9004909216610120840152600484015416610140830152600590920154610160909101528101519095509350610ef284606461134a565b9250610f0c8561016001518461135f90919063ffffffff16565b939093019695505050505050565b600254600160a060020a03163314610f3157600080fd5b60025460a060020a900460ff1615610f4857600080fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b600254600160a060020a031681565b6000610fb0611388565b600254600090600160a060020a03163314610fca57600080fd5b60025460a060020a900460ff1615610fe157600080fd5b600160a060020a038c161515610ff657600080fd5b606489101561100457600080fd5b60408051610180810190915280600081526020018c61ffff1681526020018b61ffff1681526020018a81526020016000600160a060020a03168152602001600067ffffffffffffffff1681526020018967ffffffffffffffff1681526020018d600160a060020a031681526020018861ffff1681526020018761ffff1681526020018667ffffffffffffffff16815260200185815250915060016004839080600181540180825580915050906001820390600052602060002090600602016000909192909190915060008201518160000160006101000a81548160ff021916908360028111156110f057fe5b021790555060208201518160000160016101000a81548161ffff021916908361ffff16021790555060408201518160000160036101000a81548161ffff021916908361ffff1602179055506060820151816001015560808201518160020160006101000a815481600160a060020a030219169083600160a060020a0316021790555060a08201518160020160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060c08201518160030160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060e08201518160030160086101000a815481600160a060020a030219169083600160a060020a0316021790555061010082015181600301601c6101000a81548161ffff021916908361ffff16021790555061012082015181600301601e6101000a81548161ffff021916908361ffff1602179055506101408201518160040160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061016082015181600501555050039050807fe283da1ad7e0c3dbaffc2333834834fbd101381ccb094eb16e589bcd9cf78ae48c8c8c8c604051808561ffff1661ffff1681526020018461ffff1661ffff1681526020018381526020018267ffffffffffffffff16815260200194505050505060405180910390a29b9a5050505050505050505050565b81810167ffffffffffffffff808416908216101561131857fe5b92915050565b8181018281101561131857fe5b600067ffffffffffffffff808416908316111561134457fe5b50900390565b6000818381151561135757fe5b049392505050565b600082151561137057506000611318565b5081810281838281151561138057fe5b041461131857fe5b604080516101808101909152806000815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e0820181905261010082018190526101208201819052610140820181905261016090910152905600a165627a7a72305820096faa617f5bec77ba4bdcbd58cf2f8edee63a314764ae7261d42e0795990ffb00290000000000000000000000006ebeaf8e8e946f0716e6533a6f2cefc83f60e8ab

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

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000006ebeaf8e8e946f0716e6533a6f2cefc83f60e8ab


   Swarm Source:
bzzr://096faa617f5bec77ba4bdcbd58cf2f8edee63a314764ae7261d42e0795990ffb

 

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