ETH Price: $3,410.07 (+2.84%)

Contract

0x1fC7bD85293f3982f40D52698DF8D26be89360d6
 

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Cash Out203286052024-07-17 20:21:47159 days ago1721247707IN
Etheremon: World
0 ETH0.0018427711.05541941
Cash Out203286042024-07-17 20:21:35159 days ago1721247695IN
Etheremon: World
0 ETH0.0068864311.13124674
Cash Out203286022024-07-17 20:21:11159 days ago1721247671IN
Etheremon: World
0 ETH0.0014573511.56688033
Cash Out186874902023-11-30 22:47:23389 days ago1701384443IN
Etheremon: World
0 ETH0.009596446.43910333
Cash Out186844742023-11-30 12:39:11389 days ago1701347951IN
Etheremon: World
0 ETH0.0120975235.55898857
Cash Out186844492023-11-30 12:33:59389 days ago1701347639IN
Etheremon: World
0 ETH0.0017159534.56372544
Cash Out186844442023-11-30 12:32:59389 days ago1701347579IN
Etheremon: World
0 ETH0.0050395933.63047301
Cash Out186844232023-11-30 12:28:35389 days ago1701347315IN
Etheremon: World
0 ETH0.0016625833.48063673
Cash Out186844232023-11-30 12:28:35389 days ago1701347315IN
Etheremon: World
0 ETH0.0029127434.34916559
Cash Out186843642023-11-30 12:16:35389 days ago1701346595IN
Etheremon: World
0 ETH0.0347417336.86978229
Cash Out174117482023-06-05 3:44:47568 days ago1685936687IN
Etheremon: World
0 ETH0.0069886617.75057045
Cash Out150383392022-06-28 6:24:17909 days ago1656397457IN
Etheremon: World
0 ETH0.01324225.63086335
Cash Out150383002022-06-28 6:13:11909 days ago1656396791IN
Etheremon: World
0 ETH0.0007339120.20958232
Rename Monster129136422021-07-28 9:27:291244 days ago1627464449IN
Etheremon: World
0 ETH0.001772231
Rename Monster128266252021-07-14 18:02:031258 days ago1626285723IN
Etheremon: World
0 ETH0.001683729.458
Rename Monster127631942021-07-04 20:28:191268 days ago1625430499IN
Etheremon: World
0 ETH0.000571810
Catch Monster127159342021-06-27 11:59:451275 days ago1624795185IN
Etheremon: World
0 ETH0.000131363.3
Rename Monster127145842021-06-27 6:42:301275 days ago1624776150IN
Etheremon: World
0 ETH0.000285785
Set Catchable123243502021-04-27 19:30:451336 days ago1619551845IN
Etheremon: World
0 ETH0.0042263275
Set Catchable123243492021-04-27 19:30:311336 days ago1619551831IN
Etheremon: World
0 ETH0.0042263275
Set Catchable123243492021-04-27 19:30:311336 days ago1619551831IN
Etheremon: World
0 ETH0.0042263275
Set Catchable123243472021-04-27 19:30:031336 days ago1619551803IN
Etheremon: World
0 ETH0.0042263275
Set Catchable123243452021-04-27 19:29:461336 days ago1619551786IN
Etheremon: World
0 ETH0.0042319675.1
Set Catchable123243442021-04-27 19:29:311336 days ago1619551771IN
Etheremon: World
0 ETH0.0034937662
Set Catchable123243412021-04-27 19:29:111336 days ago1619551751IN
Etheremon: World
0 ETH0.0042263275
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
203286052024-07-17 20:21:47159 days ago1721247707
Etheremon: World
0.006769 ETH
203286042024-07-17 20:21:35159 days ago1721247695
Etheremon: World
0.00901 ETH
203286022024-07-17 20:21:11159 days ago1721247671
Etheremon: World
0.007609 ETH
186874902023-11-30 22:47:23389 days ago1701384443
Etheremon: World
0.0429 ETH
186844742023-11-30 12:39:11389 days ago1701347951
Etheremon: World
0.0185 ETH
186844492023-11-30 12:33:59389 days ago1701347639
Etheremon: World
0.028 ETH
186844442023-11-30 12:32:59389 days ago1701347579
Etheremon: World
0.01533 ETH
186844232023-11-30 12:28:35389 days ago1701347315
Etheremon: World
0.061596 ETH
186844232023-11-30 12:28:35389 days ago1701347315
Etheremon: World
0.022 ETH
186843642023-11-30 12:16:35389 days ago1701346595
Etheremon: World
0.26 ETH
174117482023-06-05 3:44:47568 days ago1685936687
Etheremon: World
0.003015 ETH
150383392022-06-28 6:24:17909 days ago1656397457
Etheremon: World
0.006 ETH
111949522020-11-05 4:08:071510 days ago1604549287
Etheremon: World
0.62074 ETH
100852662020-05-17 18:39:171681 days ago1589740757
Etheremon: World
0.045851 ETH
99519042020-04-27 2:41:521702 days ago1587955312
Etheremon: World
0.029637 ETH
94720282020-02-13 2:47:481776 days ago1581562068
Etheremon: World
0.022269 ETH
93185122020-01-20 13:09:221799 days ago1579525762
Etheremon: World
0.009468 ETH
88247532019-10-28 0:40:201884 days ago1572223220
Etheremon: World
0.0018 ETH
88006962019-10-24 3:50:071888 days ago1571889007
Etheremon: World
12.57 ETH
86302212019-09-27 10:06:341914 days ago1569578794
Etheremon: World
6.7534 ETH
86033982019-09-23 4:57:051919 days ago1569214625
Etheremon: World
18.3 ETH
85977522019-09-22 7:47:131919 days ago1569138433
Etheremon: World
11 ETH
83617182019-08-16 13:11:441956 days ago1565961104
Etheremon: World
0.009288 ETH
82706032019-08-02 9:59:131970 days ago1564739953
Etheremon: World
0.013116 ETH
81848972019-07-20 2:43:341984 days ago1563590614
Etheremon: World
0.562 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EtheremonWorld

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2017-12-29
*/

pragma solidity ^0.4.16;

// copyright [email protected]

contract SafeMath {

    /* function assert(bool assertion) internal { */
    /*   if (!assertion) { */
    /*     throw; */
    /*   } */
    /* }      // assert no longer needed once solidity is on 0.4.10 */

    function safeAdd(uint256 x, uint256 y) pure internal returns(uint256) {
      uint256 z = x + y;
      assert((z >= x) && (z >= y));
      return z;
    }

    function safeSubtract(uint256 x, uint256 y) pure internal returns(uint256) {
      assert(x >= y);
      uint256 z = x - y;
      return z;
    }

    function safeMult(uint256 x, uint256 y) pure internal returns(uint256) {
      uint256 z = x * y;
      assert((x == 0)||(z/x == y));
      return z;
    }

}

contract BasicAccessControl {
    address public owner;
    // address[] public moderators;
    uint16 public totalModerators = 0;
    mapping (address => bool) public moderators;
    bool public isMaintaining = true;

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

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

    modifier onlyModerators() {
        require(moderators[msg.sender] == true);
        _;
    }

    modifier isActive {
        require(!isMaintaining);
        _;
    }

    function ChangeOwner(address _newOwner) onlyOwner public {
        if (_newOwner != address(0)) {
            owner = _newOwner;
        }
    }

    function AddModerator(address _newModerator) onlyOwner public {
        if (moderators[_newModerator] == false) {
            moderators[_newModerator] = true;
            totalModerators += 1;
        }
    }
    
    function RemoveModerator(address _oldModerator) onlyOwner public {
        if (moderators[_oldModerator] == true) {
            moderators[_oldModerator] = false;
            totalModerators -= 1;
        }
    }
    
    function UpdateMaintaining(bool _isMaintaining) onlyOwner public {
        isMaintaining = _isMaintaining;
    }
}

contract EtheremonEnum {

    enum ResultCode {
        SUCCESS,
        ERROR_CLASS_NOT_FOUND,
        ERROR_LOW_BALANCE,
        ERROR_SEND_FAIL,
        ERROR_NOT_TRAINER,
        ERROR_NOT_ENOUGH_MONEY,
        ERROR_INVALID_AMOUNT
    }
    
    enum ArrayType {
        CLASS_TYPE,
        STAT_STEP,
        STAT_START,
        STAT_BASE,
        OBJ_SKILL
    }
    
    enum PropertyType {
        ANCESTOR,
        XFACTOR
    }
}

contract EtheremonDataBase is EtheremonEnum, BasicAccessControl, SafeMath {
    
    uint64 public totalMonster;
    uint32 public totalClass;
    
    // write
    function withdrawEther(address _sendTo, uint _amount) onlyOwner public returns(ResultCode);
    function addElementToArrayType(ArrayType _type, uint64 _id, uint8 _value) onlyModerators public returns(uint);
    function updateIndexOfArrayType(ArrayType _type, uint64 _id, uint _index, uint8 _value) onlyModerators public returns(uint);
    function setMonsterClass(uint32 _classId, uint256 _price, uint256 _returnPrice, bool _catchable) onlyModerators public returns(uint32);
    function addMonsterObj(uint32 _classId, address _trainer, string _name) onlyModerators public returns(uint64);
    function setMonsterObj(uint64 _objId, string _name, uint32 _exp, uint32 _createIndex, uint32 _lastClaimIndex) onlyModerators public;
    function increaseMonsterExp(uint64 _objId, uint32 amount) onlyModerators public;
    function decreaseMonsterExp(uint64 _objId, uint32 amount) onlyModerators public;
    function removeMonsterIdMapping(address _trainer, uint64 _monsterId) onlyModerators public;
    function addMonsterIdMapping(address _trainer, uint64 _monsterId) onlyModerators public;
    function clearMonsterReturnBalance(uint64 _monsterId) onlyModerators public returns(uint256 amount);
    function collectAllReturnBalance(address _trainer) onlyModerators public returns(uint256 amount);
    function transferMonster(address _from, address _to, uint64 _monsterId) onlyModerators public returns(ResultCode);
    function addExtraBalance(address _trainer, uint256 _amount) onlyModerators public returns(uint256);
    function deductExtraBalance(address _trainer, uint256 _amount) onlyModerators public returns(uint256);
    function setExtraBalance(address _trainer, uint256 _amount) onlyModerators public;
    
    // read
    function getSizeArrayType(ArrayType _type, uint64 _id) constant public returns(uint);
    function getElementInArrayType(ArrayType _type, uint64 _id, uint _index) constant public returns(uint8);
    function getMonsterClass(uint32 _classId) constant public returns(uint32 classId, uint256 price, uint256 returnPrice, uint32 total, bool catchable);
    function getMonsterObj(uint64 _objId) constant public returns(uint64 objId, uint32 classId, address trainer, uint32 exp, uint32 createIndex, uint32 lastClaimIndex, uint createTime);
    function getMonsterName(uint64 _objId) constant public returns(string name);
    function getExtraBalance(address _trainer) constant public returns(uint256);
    function getMonsterDexSize(address _trainer) constant public returns(uint);
    function getMonsterObjId(address _trainer, uint index) constant public returns(uint64);
    function getExpectedBalance(address _trainer) constant public returns(uint256);
    function getMonsterReturn(uint64 _objId) constant public returns(uint256 current, uint256 total);
}

contract EtheremonGateway is EtheremonEnum, BasicAccessControl {
    // using for battle contract later
    function increaseMonsterExp(uint64 _objId, uint32 amount) onlyModerators public;
    function decreaseMonsterExp(uint64 _objId, uint32 amount) onlyModerators public;
    
    // read 
    function isGason(uint64 _objId) constant external returns(bool);
    function getObjBattleInfo(uint64 _objId) constant external returns(uint32 classId, uint32 exp, bool isGason, 
        uint ancestorLength, uint xfactorsLength);
    function getClassPropertySize(uint32 _classId, PropertyType _type) constant external returns(uint);
    function getClassPropertyValue(uint32 _classId, PropertyType _type, uint index) constant external returns(uint32);
}

contract EtheremonWorld is EtheremonGateway, SafeMath {
    // old processor
    address constant public ETHEREMON_PROCESSOR = address(0x8a60806F05876f4d6dB00c877B0558DbCAD30682);
    uint8 constant public STAT_COUNT = 6;
    uint8 constant public STAT_MAX = 32;
    uint8 constant public GEN0_NO = 24;
    
    struct MonsterClassAcc {
        uint32 classId;
        uint256 price;
        uint256 returnPrice;
        uint32 total;
        bool catchable;
    }

    struct MonsterObjAcc {
        uint64 monsterId;
        uint32 classId;
        address trainer;
        string name;
        uint32 exp;
        uint32 createIndex;
        uint32 lastClaimIndex;
        uint createTime;
    }
    
    // Gen0 has return price & no longer can be caught when this contract is deployed
    struct Gen0Config {
        uint32 classId;
        uint256 originalPrice;
        uint256 returnPrice;
        uint32 total; // total caught (not count those from eggs)
    }
    
    struct GenXProperty {
        uint32 classId;
        bool isGason;
        uint32[] ancestors;
        uint32[] xfactors;
    }
    
    mapping(uint32 => Gen0Config) public gen0Config;
    mapping(uint32 => GenXProperty) public genxProperty;
    uint256 public totalCashout = 0; // for admin
    uint256 public totalEarn = 0; // exclude gen 0
    uint16 public priceIncreasingRatio = 1000;
    uint public maxDexSize = 500;
    
    address private lastHunter = address(0x0);

    // data contract
    address public dataContract;
    
    // event
    event EventCatchMonster(address indexed trainer, uint64 objId);
    event EventCashOut(address indexed trainer, ResultCode result, uint256 amount);
    event EventWithdrawEther(address indexed sendTo, ResultCode result, uint256 amount);
    
    function EtheremonWorld(address _dataContract) public {
        dataContract = _dataContract;
    }
    
     // admin & moderators
    function setMaxDexSize(uint _value) onlyModerators external {
        maxDexSize = _value;
    }
    
    function setOriginalPriceGen0() onlyModerators external {
        gen0Config[1] = Gen0Config(1, 0.3 ether, 0.003 ether, 374);
        gen0Config[2] = Gen0Config(2, 0.3 ether, 0.003 ether, 408);
        gen0Config[3] = Gen0Config(3, 0.3 ether, 0.003 ether, 373);
        gen0Config[4] = Gen0Config(4, 0.2 ether, 0.002 ether, 437);
        gen0Config[5] = Gen0Config(5, 0.1 ether, 0.001 ether, 497);
        gen0Config[6] = Gen0Config(6, 0.3 ether, 0.003 ether, 380); 
        gen0Config[7] = Gen0Config(7, 0.2 ether, 0.002 ether, 345);
        gen0Config[8] = Gen0Config(8, 0.1 ether, 0.001 ether, 518); 
        gen0Config[9] = Gen0Config(9, 0.1 ether, 0.001 ether, 447);
        gen0Config[10] = Gen0Config(10, 0.2 ether, 0.002 ether, 380); 
        gen0Config[11] = Gen0Config(11, 0.2 ether, 0.002 ether, 354);
        gen0Config[12] = Gen0Config(12, 0.2 ether, 0.002 ether, 346);
        gen0Config[13] = Gen0Config(13, 0.2 ether, 0.002 ether, 351); 
        gen0Config[14] = Gen0Config(14, 0.2 ether, 0.002 ether, 338);
        gen0Config[15] = Gen0Config(15, 0.2 ether, 0.002 ether, 341);
        gen0Config[16] = Gen0Config(16, 0.35 ether, 0.0035 ether, 384);
        gen0Config[17] = Gen0Config(17, 0.1 ether, 0.001 ether, 305); 
        gen0Config[18] = Gen0Config(18, 0.1 ether, 0.001 ether, 427);
        gen0Config[19] = Gen0Config(19, 0.1 ether, 0.001 ether, 304);
        gen0Config[20] = Gen0Config(20, 0.4 ether, 0.005 ether, 82);
        gen0Config[21] = Gen0Config(21, 1, 1, 123);
        gen0Config[22] = Gen0Config(22, 0.2 ether, 0.001 ether, 468);
        gen0Config[23] = Gen0Config(23, 0.5 ether, 0.0025 ether, 302);
        gen0Config[24] = Gen0Config(24, 1 ether, 0.005 ether, 195);
    }

    function getEarningAmount() constant public returns(uint256) {
        // calculate value for gen0
        uint256 totalValidAmount = 0;
        for (uint32 classId=1; classId <= GEN0_NO; classId++) {
            // make sure there is a class
            Gen0Config storage gen0 = gen0Config[classId];
            if (gen0.total >0 && gen0.classId == classId && gen0.originalPrice > 0 && gen0.returnPrice > 0) {
                uint256 rate = gen0.originalPrice/gen0.returnPrice;
                if (rate < gen0.total) {
                    totalValidAmount += (gen0.originalPrice + gen0.returnPrice) * rate / 2;
                    totalValidAmount += (gen0.total - rate) * gen0.returnPrice;
                } else {
                    totalValidAmount += (gen0.originalPrice + gen0.returnPrice * (rate - gen0.total + 1)) / 2 * gen0.total;
                }
            }
        }
        
        // add in earn from genx
        totalValidAmount = safeAdd(totalValidAmount, totalEarn);
        // deduct amount of cashing out 
        totalValidAmount = safeSubtract(totalValidAmount, totalCashout);
        
        return totalValidAmount;
    }
    
    function withdrawEther(address _sendTo, uint _amount) onlyModerators external returns(ResultCode) {
        if (_amount > this.balance) {
            EventWithdrawEther(_sendTo, ResultCode.ERROR_INVALID_AMOUNT, 0);
            return ResultCode.ERROR_INVALID_AMOUNT;
        }
        
        uint256 totalValidAmount = getEarningAmount();
        if (_amount > totalValidAmount) {
            EventWithdrawEther(_sendTo, ResultCode.ERROR_INVALID_AMOUNT, 0);
            return ResultCode.ERROR_INVALID_AMOUNT;
        }
        
        _sendTo.transfer(_amount);
        totalCashout += _amount;
        EventWithdrawEther(_sendTo, ResultCode.SUCCESS, _amount);
        return ResultCode.SUCCESS;
    }

    // convenient tool to add monster
    function addMonsterClassBasic(uint32 _classId, uint8 _type, uint256 _price, uint256 _returnPrice,
        uint8 _ss1, uint8 _ss2, uint8 _ss3, uint8 _ss4, uint8 _ss5, uint8 _ss6) onlyModerators external {
        
        EtheremonDataBase data = EtheremonDataBase(dataContract);
        MonsterClassAcc memory class;
        (class.classId, class.price, class.returnPrice, class.total, class.catchable) = data.getMonsterClass(_classId);
        // can add only one time
        if (_classId == 0 || class.classId == _classId)
            revert();

        data.setMonsterClass(_classId, _price, _returnPrice, true);
        data.addElementToArrayType(ArrayType.CLASS_TYPE, uint64(_classId), _type);
        
        // add stat step
        data.addElementToArrayType(ArrayType.STAT_START, uint64(_classId), _ss1);
        data.addElementToArrayType(ArrayType.STAT_START, uint64(_classId), _ss2);
        data.addElementToArrayType(ArrayType.STAT_START, uint64(_classId), _ss3);
        data.addElementToArrayType(ArrayType.STAT_START, uint64(_classId), _ss4);
        data.addElementToArrayType(ArrayType.STAT_START, uint64(_classId), _ss5);
        data.addElementToArrayType(ArrayType.STAT_START, uint64(_classId), _ss6);
        
    }
    
    function addMonsterClassExtend(uint32 _classId, uint8 _type2, uint8 _type3, 
        uint8 _st1, uint8 _st2, uint8 _st3, uint8 _st4, uint8 _st5, uint8 _st6 ) onlyModerators external {

        EtheremonDataBase data = EtheremonDataBase(dataContract);
        if (_classId == 0 || data.getSizeArrayType(ArrayType.STAT_STEP, uint64(_classId)) > 0)
            revert();

        if (_type2 > 0) {
            data.addElementToArrayType(ArrayType.CLASS_TYPE, uint64(_classId), _type2);
        }
        if (_type3 > 0) {
            data.addElementToArrayType(ArrayType.CLASS_TYPE, uint64(_classId), _type3);
        }
        
        // add stat base
        data.addElementToArrayType(ArrayType.STAT_STEP, uint64(_classId), _st1);
        data.addElementToArrayType(ArrayType.STAT_STEP, uint64(_classId), _st2);
        data.addElementToArrayType(ArrayType.STAT_STEP, uint64(_classId), _st3);
        data.addElementToArrayType(ArrayType.STAT_STEP, uint64(_classId), _st4);
        data.addElementToArrayType(ArrayType.STAT_STEP, uint64(_classId), _st5);
        data.addElementToArrayType(ArrayType.STAT_STEP, uint64(_classId), _st6);
    }
    
    function setCatchable(uint32 _classId, bool catchable) onlyModerators external {
        // can not edit gen 0 - can not catch forever
        Gen0Config storage gen0 = gen0Config[_classId];
        if (gen0.classId == _classId)
            revert();
        
        EtheremonDataBase data = EtheremonDataBase(dataContract);
        MonsterClassAcc memory class;
        (class.classId, class.price, class.returnPrice, class.total, class.catchable) = data.getMonsterClass(_classId);
        data.setMonsterClass(class.classId, class.price, class.returnPrice, catchable);
    }
    
    function setPriceIncreasingRatio(uint16 _ratio) onlyModerators external {
        priceIncreasingRatio = _ratio;
    }
    
    function setGason(uint32 _classId, bool _isGason) onlyModerators external {
        GenXProperty storage pro = genxProperty[_classId];
        pro.isGason = _isGason;
    }
    
    function addClassProperty(uint32 _classId, PropertyType _type, uint32 value) onlyModerators external {
        GenXProperty storage pro = genxProperty[_classId];
        pro.classId = _classId;
        if (_type == PropertyType.ANCESTOR) {
            pro.ancestors.push(value);
        } else {
            pro.xfactors.push(value);
        }
    }
    
    // gate way 
    function increaseMonsterExp(uint64 _objId, uint32 amount) onlyModerators public {
        EtheremonDataBase data = EtheremonDataBase(dataContract);
        data.increaseMonsterExp(_objId, amount);
    }
    
    function decreaseMonsterExp(uint64 _objId, uint32 amount) onlyModerators public {
        EtheremonDataBase data = EtheremonDataBase(dataContract);
        data.decreaseMonsterExp(_objId, amount);
    }
    
    // helper
    function getRandom(uint8 maxRan, uint8 index, address priAddress) constant public returns(uint8) {
        uint256 genNum = uint256(block.blockhash(block.number-1)) + uint256(priAddress);
        for (uint8 i = 0; i < index && i < 6; i ++) {
            genNum /= 256;
        }
        return uint8(genNum % maxRan);
    }
    
    function () payable public {
        if (msg.sender != ETHEREMON_PROCESSOR)
            revert();
    }
    
    // public
    
    function isGason(uint64 _objId) constant external returns(bool) {
        EtheremonDataBase data = EtheremonDataBase(dataContract);
        MonsterObjAcc memory obj;
        (obj.monsterId, obj.classId, obj.trainer, obj.exp, obj.createIndex, obj.lastClaimIndex, obj.createTime) = data.getMonsterObj(_objId);
        GenXProperty storage pro = genxProperty[obj.classId];
        return pro.isGason;
    }
    
    function getObjIndex(uint64 _objId) constant public returns(uint32 classId, uint32 createIndex, uint32 lastClaimIndex) {
        EtheremonDataBase data = EtheremonDataBase(dataContract);
        MonsterObjAcc memory obj;
        (obj.monsterId, obj.classId, obj.trainer, obj.exp, obj.createIndex, obj.lastClaimIndex, obj.createTime) = data.getMonsterObj(_objId);
        return (obj.classId, obj.createIndex, obj.lastClaimIndex);
    }
    
    function getObjBattleInfo(uint64 _objId) constant external returns(uint32 classId, uint32 exp, bool isGason, 
        uint ancestorLength, uint xfactorsLength) {
        EtheremonDataBase data = EtheremonDataBase(dataContract);
        MonsterObjAcc memory obj;
        (obj.monsterId, obj.classId, obj.trainer, obj.exp, obj.createIndex, obj.lastClaimIndex, obj.createTime) = data.getMonsterObj(_objId);
        GenXProperty storage pro = genxProperty[obj.classId];
        return (obj.classId, obj.exp, pro.isGason, pro.ancestors.length, pro.xfactors.length);
    }
    
    function getClassPropertySize(uint32 _classId, PropertyType _type) constant external returns(uint) {
        if (_type == PropertyType.ANCESTOR) 
            return genxProperty[_classId].ancestors.length;
        else
            return genxProperty[_classId].xfactors.length;
    }
    
    function getClassPropertyValue(uint32 _classId, PropertyType _type, uint index) constant external returns(uint32) {
        if (_type == PropertyType.ANCESTOR)
            return genxProperty[_classId].ancestors[index];
        else
            return genxProperty[_classId].xfactors[index];
    }
    
    // only gen 0
    function getGen0COnfig(uint32 _classId) constant public returns(uint32, uint256, uint32) {
        Gen0Config storage gen0 = gen0Config[_classId];
        return (gen0.classId, gen0.originalPrice, gen0.total);
    }
    
    // only gen 0
    function getReturnFromMonster(uint64 _objId) constant public returns(uint256 current, uint256 total) {
        /*
        1. Gen 0 can not be caught anymore.
        2. Egg will not give return.
        */
        
        uint32 classId = 0;
        uint32 createIndex = 0;
        uint32 lastClaimIndex = 0;
        (classId, createIndex, lastClaimIndex) = getObjIndex(_objId);
        Gen0Config storage gen0 = gen0Config[classId];
        if (gen0.classId != classId) {
            return (0, 0);
        }
        
        uint32 currentGap = 0;
        uint32 totalGap = 0;
        if (lastClaimIndex < gen0.total)
            currentGap = gen0.total - lastClaimIndex;
        if (createIndex < gen0.total)
            totalGap = gen0.total - createIndex;
        return (safeMult(currentGap, gen0.returnPrice), safeMult(totalGap, gen0.returnPrice));
    }
    
    // write access
    
    function moveDataContractBalanceToWorld() external {
        EtheremonDataBase data = EtheremonDataBase(dataContract);
        data.withdrawEther(address(this), data.balance);
    }
    
    function renameMonster(uint64 _objId, string name) isActive external {
        EtheremonDataBase data = EtheremonDataBase(dataContract);
        MonsterObjAcc memory obj;
        (obj.monsterId, obj.classId, obj.trainer, obj.exp, obj.createIndex, obj.lastClaimIndex, obj.createTime) = data.getMonsterObj(_objId);
        if (obj.monsterId != _objId || obj.trainer != msg.sender) {
            revert();
        }
        data.setMonsterObj(_objId, name, obj.exp, obj.createIndex, obj.lastClaimIndex);
    }
    
    function catchMonster(uint32 _classId, string _name) isActive external payable {
        EtheremonDataBase data = EtheremonDataBase(dataContract);
        MonsterClassAcc memory class;
        (class.classId, class.price, class.returnPrice, class.total, class.catchable) = data.getMonsterClass(_classId);
        
        if (class.classId == 0 || class.catchable == false) {
            revert();
        }
        
        // can not keep too much etheremon 
        if (data.getMonsterDexSize(msg.sender) > maxDexSize)
            revert();
        
        uint256 totalBalance = safeAdd(msg.value, data.getExtraBalance(msg.sender));
        uint256 payPrice = class.price;
        // increase price for each etheremon created
        if (class.total > 0)
            payPrice += class.price*(class.total-1)/priceIncreasingRatio;
        if (payPrice > totalBalance) {
            revert();
        }
        totalEarn += payPrice;
        
        // deduct the balance
        data.setExtraBalance(msg.sender, safeSubtract(totalBalance, payPrice));
        
        // add monster
        uint64 objId = data.addMonsterObj(_classId, msg.sender, _name);
        // generate base stat for the previous one
        for (uint i=0; i < STAT_COUNT; i+= 1) {
            uint8 value = getRandom(STAT_MAX, uint8(i), lastHunter) + data.getElementInArrayType(ArrayType.STAT_START, uint64(_classId), i);
            data.addElementToArrayType(ArrayType.STAT_BASE, objId, value);
        }
        
        lastHunter = msg.sender;
        EventCatchMonster(msg.sender, objId);
    }


    function cashOut(uint256 _amount) public returns(ResultCode) {
        EtheremonDataBase data = EtheremonDataBase(dataContract);
        
        uint256 totalAmount = data.getExtraBalance(msg.sender);
        uint64 objId = 0;

        // collect gen 0 return price 
        uint dexSize = data.getMonsterDexSize(msg.sender);
        for (uint i = 0; i < dexSize; i++) {
            objId = data.getMonsterObjId(msg.sender, i);
            if (objId > 0) {
                MonsterObjAcc memory obj;
                (obj.monsterId, obj.classId, obj.trainer, obj.exp, obj.createIndex, obj.lastClaimIndex, obj.createTime) = data.getMonsterObj(objId);
                Gen0Config storage gen0 = gen0Config[obj.classId];
                if (gen0.classId == obj.classId) {
                    if (obj.lastClaimIndex < gen0.total) {
                        uint32 gap = uint32(safeSubtract(gen0.total, obj.lastClaimIndex));
                        if (gap > 0) {
                            totalAmount += safeMult(gap, gen0.returnPrice);
                            // reset total (except name is cleared :( )
                            data.setMonsterObj(obj.monsterId, " name me ", obj.exp, obj.createIndex, gen0.total);
                        }
                    }
                }
            }
        }
        
        // default to cash out all
        if (_amount == 0) {
            _amount = totalAmount;
        }
        if (_amount > totalAmount) {
            revert();
        }
        
        // check contract has enough money
        if (this.balance + data.balance < _amount){
            revert();
        } else if (this.balance < _amount) {
            data.withdrawEther(address(this), data.balance);
        }
        
        if (_amount > 0) {
            data.setExtraBalance(msg.sender, totalAmount - _amount);
            if (!msg.sender.send(_amount)) {
                data.setExtraBalance(msg.sender, totalAmount);
                EventCashOut(msg.sender, ResultCode.ERROR_SEND_FAIL, 0);
                return ResultCode.ERROR_SEND_FAIL;
            }
        }
        
        EventCashOut(msg.sender, ResultCode.SUCCESS, _amount);
        return ResultCode.SUCCESS;
    }
    
    // read access
    
    function getTrainerEarn(address _trainer) constant public returns(uint256) {
        EtheremonDataBase data = EtheremonDataBase(dataContract);
        uint256 returnFromMonster = 0;
        // collect gen 0 return price 
        uint256 gen0current = 0;
        uint256 gen0total = 0;
        uint64 objId = 0;
        uint dexSize = data.getMonsterDexSize(_trainer);
        for (uint i = 0; i < dexSize; i++) {
            objId = data.getMonsterObjId(_trainer, i);
            if (objId > 0) {
                (gen0current, gen0total) = getReturnFromMonster(objId);
                returnFromMonster += gen0current;
            }
        }
        return returnFromMonster;
    }
    
    function getTrainerBalance(address _trainer) constant external returns(uint256) {
        EtheremonDataBase data = EtheremonDataBase(dataContract);
        
        uint256 userExtraBalance = data.getExtraBalance(_trainer);
        uint256 returnFromMonster = getTrainerEarn(_trainer);

        return (userExtraBalance + returnFromMonster);
    }
    
    function getMonsterClassBasic(uint32 _classId) constant external returns(uint256, uint256, uint256, bool) {
        EtheremonDataBase data = EtheremonDataBase(dataContract);
        MonsterClassAcc memory class;
        (class.classId, class.price, class.returnPrice, class.total, class.catchable) = data.getMonsterClass(_classId);
        return (class.price, class.returnPrice, class.total, class.catchable);
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"_objId","type":"uint64"}],"name":"getObjBattleInfo","outputs":[{"name":"classId","type":"uint32"},{"name":"exp","type":"uint32"},{"name":"isGason","type":"bool"},{"name":"ancestorLength","type":"uint256"},{"name":"xfactorsLength","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_classId","type":"uint32"},{"name":"_type","type":"uint8"},{"name":"value","type":"uint32"}],"name":"addClassProperty","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"setMaxDexSize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dataContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint32"}],"name":"gen0Config","outputs":[{"name":"classId","type":"uint32"},{"name":"originalPrice","type":"uint256"},{"name":"returnPrice","type":"uint256"},{"name":"total","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"moderators","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxDexSize","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_classId","type":"uint32"},{"name":"_type","type":"uint8"},{"name":"_price","type":"uint256"},{"name":"_returnPrice","type":"uint256"},{"name":"_ss1","type":"uint8"},{"name":"_ss2","type":"uint8"},{"name":"_ss3","type":"uint8"},{"name":"_ss4","type":"uint8"},{"name":"_ss5","type":"uint8"},{"name":"_ss6","type":"uint8"}],"name":"addMonsterClassBasic","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_objId","type":"uint64"}],"name":"getObjIndex","outputs":[{"name":"classId","type":"uint32"},{"name":"createIndex","type":"uint32"},{"name":"lastClaimIndex","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_objId","type":"uint64"},{"name":"amount","type":"uint32"}],"name":"decreaseMonsterExp","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"maxRan","type":"uint8"},{"name":"index","type":"uint8"},{"name":"priAddress","type":"address"}],"name":"getRandom","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_objId","type":"uint64"}],"name":"getReturnFromMonster","outputs":[{"name":"current","type":"uint256"},{"name":"total","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_isMaintaining","type":"bool"}],"name":"UpdateMaintaining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"STAT_MAX","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalModerators","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_sendTo","type":"address"},{"name":"_amount","type":"uint256"}],"name":"withdrawEther","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_objId","type":"uint64"},{"name":"amount","type":"uint32"}],"name":"increaseMonsterExp","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_ratio","type":"uint16"}],"name":"setPriceIncreasingRatio","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getEarningAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_classId","type":"uint32"},{"name":"_type","type":"uint8"},{"name":"index","type":"uint256"}],"name":"getClassPropertyValue","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"cashOut","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"setOriginalPriceGen0","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_classId","type":"uint32"},{"name":"_name","type":"string"}],"name":"catchMonster","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_newModerator","type":"address"}],"name":"AddModerator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"GEN0_NO","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalCashout","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_classId","type":"uint32"},{"name":"_type","type":"uint8"}],"name":"getClassPropertySize","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_classId","type":"uint32"},{"name":"catchable","type":"bool"}],"name":"setCatchable","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_objId","type":"uint64"},{"name":"name","type":"string"}],"name":"renameMonster","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_classId","type":"uint32"}],"name":"getMonsterClassBasic","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint32"}],"name":"genxProperty","outputs":[{"name":"classId","type":"uint32"},{"name":"isGason","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_oldModerator","type":"address"}],"name":"RemoveModerator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_trainer","type":"address"}],"name":"getTrainerEarn","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_classId","type":"uint32"},{"name":"_type2","type":"uint8"},{"name":"_type3","type":"uint8"},{"name":"_st1","type":"uint8"},{"name":"_st2","type":"uint8"},{"name":"_st3","type":"uint8"},{"name":"_st4","type":"uint8"},{"name":"_st5","type":"uint8"},{"name":"_st6","type":"uint8"}],"name":"addMonsterClassExtend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"moveDataContractBalanceToWorld","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"STAT_COUNT","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalEarn","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"priceIncreasingRatio","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ETHEREMON_PROCESSOR","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_classId","type":"uint32"},{"name":"_isGason","type":"bool"}],"name":"setGason","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_classId","type":"uint32"}],"name":"getGen0COnfig","outputs":[{"name":"","type":"uint32"},{"name":"","type":"uint256"},{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isMaintaining","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"ChangeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_trainer","type":"address"}],"name":"getTrainerBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_objId","type":"uint64"}],"name":"isGason","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_dataContract","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"trainer","type":"address"},{"indexed":false,"name":"objId","type":"uint64"}],"name":"EventCatchMonster","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"trainer","type":"address"},{"indexed":false,"name":"result","type":"uint8"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"EventCashOut","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sendTo","type":"address"},{"indexed":false,"name":"result","type":"uint8"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"EventWithdrawEther","type":"event"}]

60606040526000805460a060020a61ffff02191681556002805460ff1916600117905560058190556006556007805461ffff19166103e81790556101f460085560098054600160a060020a0319169055341561005a57600080fd5b6040516020806149d58339810160405280805160008054600160a060020a03338116600160a060020a031992831617909255600a8054929093169116179055505061492b806100aa6000396000f3006060604052600436106102155763ffffffff60e060020a600035041662119f34811461024057806305660ce81461029d57806308c977e7146102c65780630d668818146102dc5780630daf41511461030b57806314d0f1ba146103585780631649b76d1461038b5780631756ffd9146103b05780631bea4a611461040057806331afa55f1461044e5780633a34f09a14610477578063464299f9146104b857806348ef5aa8146104f05780634e3dc2f1146105085780634efb023e1461051b578063522f6815146105455780635643a7111461058b57806357918052146105b457806359187cec146105ce5780635b626339146105e15780635c7b79f51461061f57806366ba267014610635578063681551d1146106485780636c81fd6d1461066557806373d65c001461068457806386048c9a1461069757806388e9abb6146106aa5780638b886d04146106cc5780638d1d22d8146106ed5780638da5cb5b1461071957806394f6ba1c1461072c5780639a21492c14610774578063b85d6275146107b1578063bc62c89a146107d0578063bf5f4edf146107ef578063d7b84f681461083c578063d98e14bd1461084f578063dffd722f14610862578063e19bb96414610875578063e7e7e3e814610888578063e92704e81461089b578063ecff537f146108bc578063ee4e441614610906578063f285329214610919578063f445037b14610938578063fd08374814610957575b33600160a060020a0316738a60806f05876f4d6db00c877b0558dbcad306821461023e57600080fd5b005b341561024b57600080fd5b61026067ffffffffffffffff60043516610977565b60405163ffffffff95861681529390941660208401529015156040808401919091526060830191909152608082019290925260a001905180910390f35b34156102a857600080fd5b61023e63ffffffff60043581169060ff602435169060443516610ac4565b34156102d157600080fd5b61023e600435610bcc565b34156102e757600080fd5b6102ef610bfc565b604051600160a060020a03909116815260200160405180910390f35b341561031657600080fd5b61032763ffffffff60043516610c0b565b60405163ffffffff948516815260208101939093526040808401929092529092166060820152608001905180910390f35b341561036357600080fd5b610377600160a060020a0360043516610c3c565b604051901515815260200160405180910390f35b341561039657600080fd5b61039e610c51565b60405190815260200160405180910390f35b34156103bb57600080fd5b61023e63ffffffff6004351660ff602435811690604435906064359060843581169060a43581169060c43581169060e435811690610104358116906101243516610c57565b341561040b57600080fd5b61042067ffffffffffffffff6004351661129f565b60405163ffffffff938416815291831660208301529091166040808301919091526060909101905180910390f35b341561045957600080fd5b61023e67ffffffffffffffff6004351663ffffffff602435166113aa565b341561048257600080fd5b6104a260ff60043581169060243516600160a060020a036044351661144a565b60405160ff909116815260200160405180910390f35b34156104c357600080fd5b6104d867ffffffffffffffff600435166114a4565b60405191825260208201526040908101905180910390f35b34156104fb57600080fd5b61023e6004351515611579565b341561051357600080fd5b6104a26115a7565b341561052657600080fd5b61052e6115ac565b60405161ffff909116815260200160405180910390f35b341561055057600080fd5b610567600160a060020a03600435166024356115ce565b6040518082600681111561057757fe5b60ff16815260200191505060405180910390f35b341561059657600080fd5b61023e67ffffffffffffffff6004351663ffffffff6024351661175e565b34156105bf57600080fd5b61023e61ffff600435166117e5565b34156105d957600080fd5b61039e611828565b34156105ec57600080fd5b61060663ffffffff6004351660ff60243516604435611951565b60405163ffffffff909116815260200160405180910390f35b341561062a57600080fd5b6105676004356119e2565b341561064057600080fd5b61023e612066565b61023e6004803563ffffffff169060248035908101910135613115565b341561067057600080fd5b61023e600160a060020a036004351661366a565b341561068f57600080fd5b6104a2613714565b34156106a257600080fd5b61039e613719565b34156106b557600080fd5b61039e63ffffffff6004351660ff6024351661371f565b34156106d757600080fd5b61023e63ffffffff600435166024351515613774565b34156106f857600080fd5b61023e6004803567ffffffffffffffff169060248035908101910135613915565b341561072457600080fd5b6102ef613b06565b341561073757600080fd5b61074863ffffffff60043516613b15565b604051938452602084019290925260408084019190915290151560608301526080909101905180910390f35b341561077f57600080fd5b61079063ffffffff60043516613bfd565b60405163ffffffff9092168252151560208201526040908101905180910390f35b34156107bc57600080fd5b61023e600160a060020a0360043516613c22565b34156107db57600080fd5b61039e600160a060020a0360043516613ccc565b34156107fa57600080fd5b61023e63ffffffff6004351660ff60243581169060443581169060643581169060843581169060a43581169060c43581169060e4358116906101043516613e0b565b341561084757600080fd5b61023e614479565b341561085a57600080fd5b6104a26144f8565b341561086d57600080fd5b61039e6144fd565b341561088057600080fd5b61052e614503565b341561089357600080fd5b6102ef61450d565b34156108a657600080fd5b61023e63ffffffff600435166024351515614525565b34156108c757600080fd5b6108d863ffffffff60043516614584565b60405163ffffffff938416815260208101929092529091166040808301919091526060909101905180910390f35b341561091157600080fd5b6103776145b6565b341561092457600080fd5b61023e600160a060020a03600435166145bf565b341561094357600080fd5b61039e600160a060020a0360043516614616565b341561096257600080fd5b61037767ffffffffffffffff600435166146a6565b600080600080600080610988614819565b600a54600160a060020a0316915060008263072024608a8360405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b15156109e657600080fd5b6102c65a03f115156109f757600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08a01525063ffffffff90811660c089015290811660a08801529081166080870152600160a060020a039091166040860152166020840190815267ffffffffffffffff90911683526004906000905163ffffffff1663ffffffff16815260200190815260200160002090508160200151826080015182546001840154600290940154929c919b50640100000000900460ff16995091975095509350505050565b600160a060020a033316600090815260016020819052604082205460ff16151514610aee57600080fd5b5063ffffffff83166000818152600460205260408120805463ffffffff19169092178255836001811115610b1e57fe5b1415610b7857806001018054806001018281610b3a9190614865565b916000526020600020906008918282040191900660040284909190916101000a81548163ffffffff021916908363ffffffff16021790555050610bc6565b60028101805460018101610b8c8382614865565b916000526020600020906008918282040191900660040284909190916101000a81548163ffffffff021916908363ffffffff160217905550505b50505050565b600160a060020a03331660009081526001602081905260409091205460ff16151514610bf757600080fd5b600855565b600a54600160a060020a031681565b6003602081905260009182526040909120805460018201546002830154929093015463ffffffff9182169392911684565b60016020526000908152604090205460ff1681565b60085481565b6000610c6161489e565b600160a060020a03331660009081526001602081905260409091205460ff16151514610c8c57600080fd5b600a54600160a060020a0316915081639d29cac48d600060405160a0015260405163ffffffff83811660e060020a02825291909116600482015260240160a060405180830381600087803b1515610ce257600080fd5b6102c65a03f11515610cf357600080fd5b5050506040518051906020018051906020018051906020018051906020018051151560808701525063ffffffff90811660608601526040850191909152602084019190915290811682528c161580610d57575063ffffffff8c16815163ffffffff16145b15610d6157600080fd5b81600160a060020a031663c8ff80a18d8c8c600160006040516020015260405163ffffffff86811660e060020a0282529490941660048501526024840192909252604483015215156064820152608401602060405180830381600087803b1515610dca57600080fd5b6102c65a03f11515610ddb57600080fd5b50505060405180515050600160a060020a0382166326bda739600063ffffffff8f168e82604051602001526040518463ffffffff1660e060020a02815260040180846004811115610e2857fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b1515610e7457600080fd5b6102c65a03f11515610e8557600080fd5b50505060405180515050600160a060020a0382166326bda739600263ffffffff8f168b6000604051602001526040518463ffffffff1660e060020a02815260040180846004811115610ed357fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b1515610f1f57600080fd5b6102c65a03f11515610f3057600080fd5b50505060405180515050600160a060020a0382166326bda739600263ffffffff8f168a6000604051602001526040518463ffffffff1660e060020a02815260040180846004811115610f7e57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b1515610fca57600080fd5b6102c65a03f11515610fdb57600080fd5b50505060405180515050600160a060020a0382166326bda739600263ffffffff8f16896000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561102957fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561107557600080fd5b6102c65a03f1151561108657600080fd5b50505060405180515050600160a060020a0382166326bda739600263ffffffff8f16886000604051602001526040518463ffffffff1660e060020a028152600401808460048111156110d457fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561112057600080fd5b6102c65a03f1151561113157600080fd5b50505060405180515050600160a060020a0382166326bda739600263ffffffff8f16876000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561117f57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b15156111cb57600080fd5b6102c65a03f115156111dc57600080fd5b50505060405180515050600160a060020a0382166326bda739600263ffffffff8f16866000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561122a57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561127657600080fd5b6102c65a03f1151561128757600080fd5b50505060405180515050505050505050505050505050565b6000806000806112ad614819565b600a54600160a060020a0316915081630720246087600060405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b151561130a57600080fd5b6102c65a03f1151561131b57600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08901525063ffffffff90811660c088015290811660a08701529081166080860152600160a060020a039091166040850152166020830190815267ffffffffffffffff9091168252518160a001518260c0015194509450945050509193909250565b600160a060020a033316600090815260016020819052604082205460ff161515146113d457600080fd5b50600a54600160a060020a0316806331afa55f848460405163ffffffff84811660e060020a02825267ffffffffffffffff93909316600482015291166024820152604401600060405180830381600087803b151561143157600080fd5b6102c65a03f1151561144257600080fd5b505050505050565b6000600019430140600160a060020a03831601815b8460ff168160ff16108015611477575060068160ff16105b1561148b576101008204915060010161145f565b8560ff168281151561149957fe5b069695505050505050565b6000808080808080806114b68961129f565b63ffffffff80841660008181526003602052604090208054959b509399509197509195509116146114ed576000975087965061156e565b50506003810154600090819063ffffffff908116908516101561151b57600383015463ffffffff1684900391505b600383015463ffffffff90811690861610156115415750600382015463ffffffff168490035b6115558263ffffffff1684600201546147c7565b6115698263ffffffff1685600201546147c7565b975097505b505050505050915091565b60005433600160a060020a0390811691161461159457600080fd5b6002805460ff1916911515919091179055565b602081565b60005474010000000000000000000000000000000000000000900461ffff1681565b600160a060020a0333166000908152600160208190526040822054829160ff9091161515146115fc57600080fd5b30600160a060020a0316318311156116705783600160a060020a03167fdd015856503ad75c75662bfdfd4366944a55a7bafb8e8cacaa950659ce2b680f600660006040518083600681111561164d57fe5b60ff1681526020018281526020019250505060405180910390a260069150611757565b611678611828565b9050808311156116c15783600160a060020a03167fdd015856503ad75c75662bfdfd4366944a55a7bafb8e8cacaa950659ce2b680f600660006040518083600681111561164d57fe5b600160a060020a03841683156108fc0284604051600060405180830381858888f1935050505015156116f257600080fd5b6005805484019055600160a060020a0384167fdd015856503ad75c75662bfdfd4366944a55a7bafb8e8cacaa950659ce2b680f6000856040518083600681111561173857fe5b60ff1681526020018281526020019250505060405180910390a2600091505b5092915050565b600160a060020a033316600090815260016020819052604082205460ff1615151461178857600080fd5b50600a54600160a060020a031680635643a711848460405163ffffffff84811660e060020a02825267ffffffffffffffff93909316600482015291166024820152604401600060405180830381600087803b151561143157600080fd5b600160a060020a03331660009081526001602081905260409091205460ff1615151461181057600080fd5b6007805461ffff191661ffff92909216919091179055565b600080600181805b601863ffffffff84161161192e5763ffffffff80841660009081526003602081905260408220908101549094509091161180156118765750815463ffffffff8481169116145b8015611886575060008260010154115b8015611896575060008260020154115b1561192357816002015482600101548115156118ae57fe5b6003840154919004915063ffffffff168110156118f85760028281015460018401540182026002840154600385015463ffffffff1684900302919004949094019390930192611923565b600382015460028084015460018086015463ffffffff90941693848603909101909102010402840193505b600190920191611830565b61193a846006546147eb565b935061194884600554614805565b95945050505050565b60008083600181111561196057fe5b14156119b75763ffffffff8416600090815260046020526040902060010180548390811061198a57fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1690506119db565b63ffffffff8416600090815260046020526040902060020180548390811061198a57fe5b9392505050565b6000806000806000806119f3614819565b600a54600160a060020a031695506000808763c782fc6033836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611a5157600080fd5b6102c65a03f11515611a6257600080fd5b505050604051805197506000965050600160a060020a0388166347c17bac33886040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611ac757600080fd5b6102c65a03f11515611ad857600080fd5b5050506040518051955060009450505b84841015611dcb5787600160a060020a03166375fe2e33338660006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611b4d57600080fd5b6102c65a03f11515611b5e57600080fd5b5050506040518051965050600067ffffffffffffffff87161115611dc05787600160a060020a0316630720246087600060405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b1515611bd457600080fd5b6102c65a03f11515611be557600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08b01525063ffffffff90811660c08a015290811660a08901529081166080880152600160a060020a039091166040870152166020850190815267ffffffffffffffff90911684526003906000905163ffffffff1663ffffffff16815260200190815260200160002091508260200151825463ffffffff90811691161415611dc057600382015463ffffffff1660c084015163ffffffff161015611dc0576003820154611ccf9063ffffffff1660c085015163ffffffff16614805565b905060008163ffffffff161115611dc057611cf48163ffffffff1683600201546147c7565b90960195600160a060020a0388166332666a31845185608001518660a00151600387015463ffffffff1660405163ffffffff86811660e060020a02825267ffffffffffffffff95909516600482015292841660448401529083166064830152909116608482015260a06024820152600960a48201527f206e616d65206d6520000000000000000000000000000000000000000000000060c482015260e401600060405180830381600087803b1515611dab57600080fd5b6102c65a03f11515611dbc57600080fd5b5050505b600190930192611ae8565b891515611dd6578699505b868a1115611de357600080fd5b8988600160a060020a03163130600160a060020a031631011015611e0657600080fd5b8930600160a060020a0316311015611e9257600160a060020a03881663522f681530823160006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611e7657600080fd5b6102c65a03f11515611e8757600080fd5b505050604051805150505b60008a1115611ffc5787600160a060020a031663b55cdbf9338c8a0360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515611ef157600080fd5b6102c65a03f11515611f0257600080fd5b5050600160a060020a03331690508a156108fc028b604051600060405180830381858888f193505050501515611ffc5787600160a060020a031663b55cdbf9338960405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515611f8657600080fd5b6102c65a03f11515611f9757600080fd5b50505033600160a060020a03167fde2ec039772c8252fbdc620a480847194009c38dfbd74c4ae947e3df493a304f6003600060405180836006811115611fd957fe5b60ff1681526020018281526020019250505060405180910390a260039850612059565b33600160a060020a03167fde2ec039772c8252fbdc620a480847194009c38dfbd74c4ae947e3df493a304f60008c6040518083600681111561203a57fe5b60ff1681526020018281526020019250505060405180910390a2600098505b5050505050505050919050565b600160a060020a03331660009081526001602081905260409091205460ff1615151461209157600080fd5b608060405190810160409081526001808352670429d069189e0000602080850191909152660aa87bee538000928401929092526101766060840152600052600390527fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526002808352670429d069189e0000602080850191909152660aa87bee538000928401929092526101986060840152600052600390527fc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526003808352670429d069189e0000602080850191909152660aa87bee538000928401929092526101756060840152600081905290527fcbc4e5fb02c3d1de23a9f1e014b4d2ee5aeaea9505df5e855c9210bf472495af8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260048083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101b56060840152600052600390527f83ec6a1f0257b830b5e016457c9cf1435391bf56cc98f369a58a54fe937724658151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600580835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101f16060840152600052600390527f405aad32e1adbac89bb7f176e338b8fc6e994ca210c9bb7bdca249b4659422508151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526006808352670429d069189e0000602080850191909152660aa87bee5380009284019290925261017c6060840152600052600390527fc69056f16cbaa3c616b828e333ab7d3a32310765507f8f58359e99ebb7a885f38151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260078083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101596060840152600052600390527ff2c49132ed1cee2a7e75bde50d332a2f81f1d01e5456d8a19d1df09bd561dbd28151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600880835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526102066060840152600052600390527f85aaa47b6dc46495bb8824fad4583769726fea36efd831a35556690b830a8fbe8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600980835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101bf6060840152600052600390527f8a8dc4e5242ea8b1ab1d60606dae757e6c2cca9f92a2cced9f72c19960bcb4588151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600a8083526702c68af0bb14000060208085019190915266071afd498d00009284019290925261017c6060840152600052600390527f9dcb9783ba5cd0b54745f65f4f918525e461e91888c334e5342cb380ac558d538151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600b8083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101626060840152600052600390527f2d72af3c1b2b2956e6f694fb741556d5ca9524373974378cdbec16afa8b841648151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600c8083526702c68af0bb14000060208085019190915266071afd498d00009284019290925261015a6060840152600052600390527fd56a60595ebefebed7f22dcee6c2acc61b06cf8c68e84c88677840365d1ff92b8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600d8083526702c68af0bb14000060208085019190915266071afd498d00009284019290925261015f6060840152600052600390527fa8f2d96126c6d0ad63adabaef7bf5cf47f163fb0c218a473d28f62312d197bcf8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600e8083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101526060840152600052600390527fd6ebcc64c739277b117ce359e436534b234b76e914c80ad276abf5b5620789398151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600f8083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101556060840152600052600390527ff60b7f6a315ec68a6ac240e69dca53652b38627f709a2caa217d9e18af4d7a608151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260108083526704db732547630000602080850191909152660c6f3b40b6c000928401929092526101806060840152600052600390527f47d4745e02b343689a5e7ac121d2a352b7a15c10328a8759fd7d4cf0999002bb8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152601180835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101316060840152600052600390527ffc111d09a6e2f0958402cbe16a5aef32c9d8ddb9a4df7271140de57bfed6525a8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152601280835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101ab6060840152600052600390527f6a2b6bffaca788160f671fa62d34758b717f75a90ad5a468757c50d61f33c4438151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152601380835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101306060840152600052600390527f8a8166be5f30abeb6c91ee2f07eeb0b2eb14b4d59534d10a1c143964bd6179198151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152601480835267058d15e1762800006020808501919091526611c37937e080009284019290925260526060840152600052600390527f0ffe031ee7f67944a037276fd51f48fcc2fe05a729c43144606bc8777da8014f8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260158083526001602080850182905292840152607b6060840152600052600390527f94f2575c7592b1dfd5a8846a17482da7b0e38fb10c93880d74916c5f167924648151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260168083526702c68af0bb14000060208085019190915266038d7ea4c68000928401929092526101d46060840152600052600390527f370c8c7c6215b209793aa720f65163fbeecd5f5114008532ba0649ee234054028151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260178083526706f05b59d3b200006020808501919091526608e1bc9bf040009284019290925261012e6060840152600052600390527f0f0519a40093d7edad68f12e2ec868fdf92a03df1cbec3e035c987d6b218f2f48151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526018808352670de0b6b3a76400006020808501919091526611c37937e080009284019290925260c36060840152600052600390527fa3ddc4e8d053be09ec661eb04964a206cbd921c2c11fc03088857923bed1485a8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550565b600061311f61489e565b600254600090819081908190819060ff161561313a57600080fd5b600a54600160a060020a0316965086639d29cac48b600060405160a0015260405163ffffffff83811660e060020a02825291909116600482015260240160a060405180830381600087803b151561319057600080fd5b6102c65a03f115156131a157600080fd5b5050506040518051906020018051906020018051906020018051906020018051151560808c01525063ffffffff90811660608b015260408a01919091526020890191909152168652855163ffffffff1615806131ff57508560800151155b1561320957600080fd5b60085487600160a060020a03166347c17bac3360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561326357600080fd5b6102c65a03f1151561327457600080fd5b50505060405180519050111561328957600080fd5b6133043488600160a060020a031663c782fc603360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156132e457600080fd5b6102c65a03f115156132f557600080fd5b505050604051805190506147eb565b9450856020015193506000866060015163ffffffff16111561334a5760075461ffff16600160608801510363ffffffff1687602001510281151561334457fe5b04840193505b8484111561335757600080fd5b6006805485019055600160a060020a03871663b55cdbf9336133798888614805565b60405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156133bc57600080fd5b6102c65a03f115156133cd57600080fd5b50505086600160a060020a031663fc4d20f58b338c8c60006040516020015260405163ffffffff86811660e060020a028252851660048201908152600160a060020a0385166024830152606060448301908152606483018490529091608401848480828437820191505095505050505050602060405180830381600087803b151561345757600080fd5b6102c65a03f1151561346857600080fd5b5050506040518051935060009250505b60068210156135f55786600160a060020a03166362b21ad760028c63ffffffff16856000604051602001526040518463ffffffff1660e060020a028152600401808460048111156134c557fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b151561350b57600080fd5b6102c65a03f1151561351c57600080fd5b5050506040518051600954909150613541906020908590600160a060020a031661144a565b01905086600160a060020a03166326bda739600385846000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561358257fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b15156135ce57600080fd5b6102c65a03f115156135df57600080fd5b5050506040518051905050600182019150613478565b6009805473ffffffffffffffffffffffffffffffffffffffff191633600160a060020a03169081179091557f77cb179e9e5f39d98ac520c7c9fe2d085ac4e521f56806105fdeb1032885ee098460405167ffffffffffffffff909116815260200160405180910390a250505050505050505050565b60005433600160a060020a0390811691161461368557600080fd5b600160a060020a03811660009081526001602052604090205460ff16151561371157600160a060020a03811660009081526001602081905260408220805460ff191682179055815461ffff7401000000000000000000000000000000000000000080830482169093011690910275ffff0000000000000000000000000000000000000000199091161790555b50565b601881565b60055481565b60008082600181111561372e57fe5b1415613753575063ffffffff821660009081526004602052604090206001015461376e565b5063ffffffff82166000908152600460205260409020600201545b92915050565b60008061377f61489e565b600160a060020a03331660009081526001602081905260409091205460ff161515146137aa57600080fd5b63ffffffff8086166000818152600360205260409020805490955090911614156137d357600080fd5b600a54600160a060020a0316915081639d29cac486600060405160a0015260405163ffffffff83811660e060020a02825291909116600482015260240160a060405180830381600087803b151561382957600080fd5b6102c65a03f1151561383a57600080fd5b5050506040518051906020018051906020018051906020018051906020018051151560808701525063ffffffff908116606086015260408501919091526020840191909152168152600160a060020a03821663c8ff80a18251836020015184604001518860006040516020015260405163ffffffff86811660e060020a0282529490941660048501526024840192909252604483015215156064820152608401602060405180830381600087803b15156138f357600080fd5b6102c65a03f1151561390457600080fd5b505050604051805150505050505050565b600061391f614819565b60025460ff161561392f57600080fd5b600a54600160a060020a0316915081630720246086600060405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b151561398c57600080fd5b6102c65a03f1151561399d57600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08901525063ffffffff90811660c088015290811660a08701529081166080860152600160a060020a03909116604085015216602083015267ffffffffffffffff90811682528516815167ffffffffffffffff16141580613a41575033600160a060020a03168160400151600160a060020a031614155b15613a4b57600080fd5b81600160a060020a03166332666a3186868685608001518660a001518760c0015160405163ffffffff88811660e060020a02825267ffffffffffffffff88166004830190815285821660448401528482166064840152908316608483015260a06024830190815260a48301879052909160c4018787808284378201915050975050505050505050600060405180830381600087803b1515613aeb57600080fd5b6102c65a03f11515613afc57600080fd5b5050505050505050565b600054600160a060020a031681565b6000806000806000613b2561489e565b600a54600160a060020a0316915081639d29cac488600060405160a0015260405163ffffffff83811660e060020a02825291909116600482015260240160a060405180830381600087803b1515613b7b57600080fd5b6102c65a03f11515613b8c57600080fd5b5050506040518051906020018051906020018051906020018051906020018051151560808701525063ffffffff908116606086015260408501919091526020840191825291909116825251816040015182606001518360800151929a91995063ffffffff1697509095509350505050565b60046020526000908152604090205463ffffffff811690640100000000900460ff1682565b60005433600160a060020a03908116911614613c3d57600080fd5b600160a060020a03811660009081526001602081905260409091205460ff161515141561371157600160a060020a03166000908152600160205260408120805460ff19169055805475ffff0000000000000000000000000000000000000000198116740100000000000000000000000000000000000000009182900461ffff9081166000190116909102179055565b600a54600090600160a060020a0316818080808080866347c17bac8a836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515613d2e57600080fd5b6102c65a03f11515613d3f57600080fd5b5050506040518051925060009150505b81811015613dfe5786600160a060020a03166375fe2e338a8360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515613db457600080fd5b6102c65a03f11515613dc557600080fd5b5050506040518051935050600067ffffffffffffffff84161115613df657613dec836114a4565b9681019690955093505b600101613d4f565b5093979650505050505050565b600160a060020a033316600090815260016020819052604082205460ff16151514613e3557600080fd5b50600a54600160a060020a031663ffffffff8a161580613ef15750600081600160a060020a03166341b0eb5360018d63ffffffff166000604051602001526040518363ffffffff1660e060020a02815260040180836004811115613e9557fe5b60ff1681526020018267ffffffffffffffff1667ffffffffffffffff16815260200192505050602060405180830381600087803b1515613ed457600080fd5b6102c65a03f11515613ee557600080fd5b50505060405180519050115b15613efb57600080fd5b60008960ff161115613fb35780600160a060020a03166326bda73960008c63ffffffff168c6000604051602001526040518463ffffffff1660e060020a02815260040180846004811115613f4b57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b1515613f9757600080fd5b6102c65a03f11515613fa857600080fd5b505050604051805150505b60008860ff16111561406b5780600160a060020a03166326bda73960008c63ffffffff168b6000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561400357fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561404f57600080fd5b6102c65a03f1151561406057600080fd5b505050604051805150505b80600160a060020a03166326bda73960018c63ffffffff168a6000604051602001526040518463ffffffff1660e060020a028152600401808460048111156140af57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b15156140fb57600080fd5b6102c65a03f1151561410c57600080fd5b50505060405180515050600160a060020a0381166326bda739600163ffffffff8d16896000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561415a57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b15156141a657600080fd5b6102c65a03f115156141b757600080fd5b50505060405180515050600160a060020a0381166326bda739600163ffffffff8d16886000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561420557fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561425157600080fd5b6102c65a03f1151561426257600080fd5b50505060405180515050600160a060020a0381166326bda739600163ffffffff8d16876000604051602001526040518463ffffffff1660e060020a028152600401808460048111156142b057fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b15156142fc57600080fd5b6102c65a03f1151561430d57600080fd5b50505060405180515050600160a060020a0381166326bda739600163ffffffff8d16866000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561435b57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b15156143a757600080fd5b6102c65a03f115156143b857600080fd5b50505060405180515050600160a060020a0381166326bda739600163ffffffff8d16856000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561440657fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561445257600080fd5b6102c65a03f1151561446357600080fd5b5050506040518051505050505050505050505050565b600a54600160a060020a03168063522f681530823160006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156144da57600080fd5b6102c65a03f115156144eb57600080fd5b5050506040518051505050565b600681565b60065481565b60075461ffff1681565b738a60806f05876f4d6db00c877b0558dbcad3068281565b600160a060020a033316600090815260016020819052604082205460ff1615151461454f57600080fd5b5063ffffffff909116600090815260046020526040902080549115156401000000000264ff0000000019909216919091179055565b63ffffffff80821660009081526003602081905260409091208054600182015492820154908416931690509193909250565b60025460ff1681565b60005433600160a060020a039081169116146145da57600080fd5b600160a060020a038116156137115760008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b600a54600090600160a060020a031681808263c782fc6086836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561467457600080fd5b6102c65a03f1151561468557600080fd5b50505060405180519050915061469a85613ccc565b91909101949350505050565b6000806146b1614819565b600a54600160a060020a031691506000826307202460868360405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b151561470f57600080fd5b6102c65a03f1151561472057600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08a01525063ffffffff90811660c089015290811660a08801529081166080870152600160a060020a039091166040860152166020840190815267ffffffffffffffff90911683526004906000905163ffffffff168152602081019190915260400160002054640100000000900460ff1695945050505050565b60008282028315806147e357508284828115156147e057fe5b04145b15156119db57fe5b60008282018381108015906147e35750828110156119db57fe5b6000808284101561481257fe5b5050900390565b610100604051908101604090815260008083526020830181905290820152606081016148436148cc565b8152600060208201819052604082018190526060820181905260809091015290565b81548183558181151161489957600701600890048160070160089004836000526020600020918201910161489991906148de565b505050565b60a0604051908101604090815260008083526020830181905290820181905260608201819052608082015290565b60206040519081016040526000815290565b6148fc91905b808211156148f857600081556001016148e4565b5090565b905600a165627a7a72305820de2c7d2b7c4c2667b06cd2cb9244d23d79668bf26275594b81a2a7437b49f2410029000000000000000000000000abc1c404424bdf24c19a5cc5ef8f47781d18eb3e

Deployed Bytecode

0x6060604052600436106102155763ffffffff60e060020a600035041662119f34811461024057806305660ce81461029d57806308c977e7146102c65780630d668818146102dc5780630daf41511461030b57806314d0f1ba146103585780631649b76d1461038b5780631756ffd9146103b05780631bea4a611461040057806331afa55f1461044e5780633a34f09a14610477578063464299f9146104b857806348ef5aa8146104f05780634e3dc2f1146105085780634efb023e1461051b578063522f6815146105455780635643a7111461058b57806357918052146105b457806359187cec146105ce5780635b626339146105e15780635c7b79f51461061f57806366ba267014610635578063681551d1146106485780636c81fd6d1461066557806373d65c001461068457806386048c9a1461069757806388e9abb6146106aa5780638b886d04146106cc5780638d1d22d8146106ed5780638da5cb5b1461071957806394f6ba1c1461072c5780639a21492c14610774578063b85d6275146107b1578063bc62c89a146107d0578063bf5f4edf146107ef578063d7b84f681461083c578063d98e14bd1461084f578063dffd722f14610862578063e19bb96414610875578063e7e7e3e814610888578063e92704e81461089b578063ecff537f146108bc578063ee4e441614610906578063f285329214610919578063f445037b14610938578063fd08374814610957575b33600160a060020a0316738a60806f05876f4d6db00c877b0558dbcad306821461023e57600080fd5b005b341561024b57600080fd5b61026067ffffffffffffffff60043516610977565b60405163ffffffff95861681529390941660208401529015156040808401919091526060830191909152608082019290925260a001905180910390f35b34156102a857600080fd5b61023e63ffffffff60043581169060ff602435169060443516610ac4565b34156102d157600080fd5b61023e600435610bcc565b34156102e757600080fd5b6102ef610bfc565b604051600160a060020a03909116815260200160405180910390f35b341561031657600080fd5b61032763ffffffff60043516610c0b565b60405163ffffffff948516815260208101939093526040808401929092529092166060820152608001905180910390f35b341561036357600080fd5b610377600160a060020a0360043516610c3c565b604051901515815260200160405180910390f35b341561039657600080fd5b61039e610c51565b60405190815260200160405180910390f35b34156103bb57600080fd5b61023e63ffffffff6004351660ff602435811690604435906064359060843581169060a43581169060c43581169060e435811690610104358116906101243516610c57565b341561040b57600080fd5b61042067ffffffffffffffff6004351661129f565b60405163ffffffff938416815291831660208301529091166040808301919091526060909101905180910390f35b341561045957600080fd5b61023e67ffffffffffffffff6004351663ffffffff602435166113aa565b341561048257600080fd5b6104a260ff60043581169060243516600160a060020a036044351661144a565b60405160ff909116815260200160405180910390f35b34156104c357600080fd5b6104d867ffffffffffffffff600435166114a4565b60405191825260208201526040908101905180910390f35b34156104fb57600080fd5b61023e6004351515611579565b341561051357600080fd5b6104a26115a7565b341561052657600080fd5b61052e6115ac565b60405161ffff909116815260200160405180910390f35b341561055057600080fd5b610567600160a060020a03600435166024356115ce565b6040518082600681111561057757fe5b60ff16815260200191505060405180910390f35b341561059657600080fd5b61023e67ffffffffffffffff6004351663ffffffff6024351661175e565b34156105bf57600080fd5b61023e61ffff600435166117e5565b34156105d957600080fd5b61039e611828565b34156105ec57600080fd5b61060663ffffffff6004351660ff60243516604435611951565b60405163ffffffff909116815260200160405180910390f35b341561062a57600080fd5b6105676004356119e2565b341561064057600080fd5b61023e612066565b61023e6004803563ffffffff169060248035908101910135613115565b341561067057600080fd5b61023e600160a060020a036004351661366a565b341561068f57600080fd5b6104a2613714565b34156106a257600080fd5b61039e613719565b34156106b557600080fd5b61039e63ffffffff6004351660ff6024351661371f565b34156106d757600080fd5b61023e63ffffffff600435166024351515613774565b34156106f857600080fd5b61023e6004803567ffffffffffffffff169060248035908101910135613915565b341561072457600080fd5b6102ef613b06565b341561073757600080fd5b61074863ffffffff60043516613b15565b604051938452602084019290925260408084019190915290151560608301526080909101905180910390f35b341561077f57600080fd5b61079063ffffffff60043516613bfd565b60405163ffffffff9092168252151560208201526040908101905180910390f35b34156107bc57600080fd5b61023e600160a060020a0360043516613c22565b34156107db57600080fd5b61039e600160a060020a0360043516613ccc565b34156107fa57600080fd5b61023e63ffffffff6004351660ff60243581169060443581169060643581169060843581169060a43581169060c43581169060e4358116906101043516613e0b565b341561084757600080fd5b61023e614479565b341561085a57600080fd5b6104a26144f8565b341561086d57600080fd5b61039e6144fd565b341561088057600080fd5b61052e614503565b341561089357600080fd5b6102ef61450d565b34156108a657600080fd5b61023e63ffffffff600435166024351515614525565b34156108c757600080fd5b6108d863ffffffff60043516614584565b60405163ffffffff938416815260208101929092529091166040808301919091526060909101905180910390f35b341561091157600080fd5b6103776145b6565b341561092457600080fd5b61023e600160a060020a03600435166145bf565b341561094357600080fd5b61039e600160a060020a0360043516614616565b341561096257600080fd5b61037767ffffffffffffffff600435166146a6565b600080600080600080610988614819565b600a54600160a060020a0316915060008263072024608a8360405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b15156109e657600080fd5b6102c65a03f115156109f757600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08a01525063ffffffff90811660c089015290811660a08801529081166080870152600160a060020a039091166040860152166020840190815267ffffffffffffffff90911683526004906000905163ffffffff1663ffffffff16815260200190815260200160002090508160200151826080015182546001840154600290940154929c919b50640100000000900460ff16995091975095509350505050565b600160a060020a033316600090815260016020819052604082205460ff16151514610aee57600080fd5b5063ffffffff83166000818152600460205260408120805463ffffffff19169092178255836001811115610b1e57fe5b1415610b7857806001018054806001018281610b3a9190614865565b916000526020600020906008918282040191900660040284909190916101000a81548163ffffffff021916908363ffffffff16021790555050610bc6565b60028101805460018101610b8c8382614865565b916000526020600020906008918282040191900660040284909190916101000a81548163ffffffff021916908363ffffffff160217905550505b50505050565b600160a060020a03331660009081526001602081905260409091205460ff16151514610bf757600080fd5b600855565b600a54600160a060020a031681565b6003602081905260009182526040909120805460018201546002830154929093015463ffffffff9182169392911684565b60016020526000908152604090205460ff1681565b60085481565b6000610c6161489e565b600160a060020a03331660009081526001602081905260409091205460ff16151514610c8c57600080fd5b600a54600160a060020a0316915081639d29cac48d600060405160a0015260405163ffffffff83811660e060020a02825291909116600482015260240160a060405180830381600087803b1515610ce257600080fd5b6102c65a03f11515610cf357600080fd5b5050506040518051906020018051906020018051906020018051906020018051151560808701525063ffffffff90811660608601526040850191909152602084019190915290811682528c161580610d57575063ffffffff8c16815163ffffffff16145b15610d6157600080fd5b81600160a060020a031663c8ff80a18d8c8c600160006040516020015260405163ffffffff86811660e060020a0282529490941660048501526024840192909252604483015215156064820152608401602060405180830381600087803b1515610dca57600080fd5b6102c65a03f11515610ddb57600080fd5b50505060405180515050600160a060020a0382166326bda739600063ffffffff8f168e82604051602001526040518463ffffffff1660e060020a02815260040180846004811115610e2857fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b1515610e7457600080fd5b6102c65a03f11515610e8557600080fd5b50505060405180515050600160a060020a0382166326bda739600263ffffffff8f168b6000604051602001526040518463ffffffff1660e060020a02815260040180846004811115610ed357fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b1515610f1f57600080fd5b6102c65a03f11515610f3057600080fd5b50505060405180515050600160a060020a0382166326bda739600263ffffffff8f168a6000604051602001526040518463ffffffff1660e060020a02815260040180846004811115610f7e57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b1515610fca57600080fd5b6102c65a03f11515610fdb57600080fd5b50505060405180515050600160a060020a0382166326bda739600263ffffffff8f16896000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561102957fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561107557600080fd5b6102c65a03f1151561108657600080fd5b50505060405180515050600160a060020a0382166326bda739600263ffffffff8f16886000604051602001526040518463ffffffff1660e060020a028152600401808460048111156110d457fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561112057600080fd5b6102c65a03f1151561113157600080fd5b50505060405180515050600160a060020a0382166326bda739600263ffffffff8f16876000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561117f57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b15156111cb57600080fd5b6102c65a03f115156111dc57600080fd5b50505060405180515050600160a060020a0382166326bda739600263ffffffff8f16866000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561122a57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561127657600080fd5b6102c65a03f1151561128757600080fd5b50505060405180515050505050505050505050505050565b6000806000806112ad614819565b600a54600160a060020a0316915081630720246087600060405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b151561130a57600080fd5b6102c65a03f1151561131b57600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08901525063ffffffff90811660c088015290811660a08701529081166080860152600160a060020a039091166040850152166020830190815267ffffffffffffffff9091168252518160a001518260c0015194509450945050509193909250565b600160a060020a033316600090815260016020819052604082205460ff161515146113d457600080fd5b50600a54600160a060020a0316806331afa55f848460405163ffffffff84811660e060020a02825267ffffffffffffffff93909316600482015291166024820152604401600060405180830381600087803b151561143157600080fd5b6102c65a03f1151561144257600080fd5b505050505050565b6000600019430140600160a060020a03831601815b8460ff168160ff16108015611477575060068160ff16105b1561148b576101008204915060010161145f565b8560ff168281151561149957fe5b069695505050505050565b6000808080808080806114b68961129f565b63ffffffff80841660008181526003602052604090208054959b509399509197509195509116146114ed576000975087965061156e565b50506003810154600090819063ffffffff908116908516101561151b57600383015463ffffffff1684900391505b600383015463ffffffff90811690861610156115415750600382015463ffffffff168490035b6115558263ffffffff1684600201546147c7565b6115698263ffffffff1685600201546147c7565b975097505b505050505050915091565b60005433600160a060020a0390811691161461159457600080fd5b6002805460ff1916911515919091179055565b602081565b60005474010000000000000000000000000000000000000000900461ffff1681565b600160a060020a0333166000908152600160208190526040822054829160ff9091161515146115fc57600080fd5b30600160a060020a0316318311156116705783600160a060020a03167fdd015856503ad75c75662bfdfd4366944a55a7bafb8e8cacaa950659ce2b680f600660006040518083600681111561164d57fe5b60ff1681526020018281526020019250505060405180910390a260069150611757565b611678611828565b9050808311156116c15783600160a060020a03167fdd015856503ad75c75662bfdfd4366944a55a7bafb8e8cacaa950659ce2b680f600660006040518083600681111561164d57fe5b600160a060020a03841683156108fc0284604051600060405180830381858888f1935050505015156116f257600080fd5b6005805484019055600160a060020a0384167fdd015856503ad75c75662bfdfd4366944a55a7bafb8e8cacaa950659ce2b680f6000856040518083600681111561173857fe5b60ff1681526020018281526020019250505060405180910390a2600091505b5092915050565b600160a060020a033316600090815260016020819052604082205460ff1615151461178857600080fd5b50600a54600160a060020a031680635643a711848460405163ffffffff84811660e060020a02825267ffffffffffffffff93909316600482015291166024820152604401600060405180830381600087803b151561143157600080fd5b600160a060020a03331660009081526001602081905260409091205460ff1615151461181057600080fd5b6007805461ffff191661ffff92909216919091179055565b600080600181805b601863ffffffff84161161192e5763ffffffff80841660009081526003602081905260408220908101549094509091161180156118765750815463ffffffff8481169116145b8015611886575060008260010154115b8015611896575060008260020154115b1561192357816002015482600101548115156118ae57fe5b6003840154919004915063ffffffff168110156118f85760028281015460018401540182026002840154600385015463ffffffff1684900302919004949094019390930192611923565b600382015460028084015460018086015463ffffffff90941693848603909101909102010402840193505b600190920191611830565b61193a846006546147eb565b935061194884600554614805565b95945050505050565b60008083600181111561196057fe5b14156119b75763ffffffff8416600090815260046020526040902060010180548390811061198a57fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1690506119db565b63ffffffff8416600090815260046020526040902060020180548390811061198a57fe5b9392505050565b6000806000806000806119f3614819565b600a54600160a060020a031695506000808763c782fc6033836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611a5157600080fd5b6102c65a03f11515611a6257600080fd5b505050604051805197506000965050600160a060020a0388166347c17bac33886040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611ac757600080fd5b6102c65a03f11515611ad857600080fd5b5050506040518051955060009450505b84841015611dcb5787600160a060020a03166375fe2e33338660006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611b4d57600080fd5b6102c65a03f11515611b5e57600080fd5b5050506040518051965050600067ffffffffffffffff87161115611dc05787600160a060020a0316630720246087600060405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b1515611bd457600080fd5b6102c65a03f11515611be557600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08b01525063ffffffff90811660c08a015290811660a08901529081166080880152600160a060020a039091166040870152166020850190815267ffffffffffffffff90911684526003906000905163ffffffff1663ffffffff16815260200190815260200160002091508260200151825463ffffffff90811691161415611dc057600382015463ffffffff1660c084015163ffffffff161015611dc0576003820154611ccf9063ffffffff1660c085015163ffffffff16614805565b905060008163ffffffff161115611dc057611cf48163ffffffff1683600201546147c7565b90960195600160a060020a0388166332666a31845185608001518660a00151600387015463ffffffff1660405163ffffffff86811660e060020a02825267ffffffffffffffff95909516600482015292841660448401529083166064830152909116608482015260a06024820152600960a48201527f206e616d65206d6520000000000000000000000000000000000000000000000060c482015260e401600060405180830381600087803b1515611dab57600080fd5b6102c65a03f11515611dbc57600080fd5b5050505b600190930192611ae8565b891515611dd6578699505b868a1115611de357600080fd5b8988600160a060020a03163130600160a060020a031631011015611e0657600080fd5b8930600160a060020a0316311015611e9257600160a060020a03881663522f681530823160006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611e7657600080fd5b6102c65a03f11515611e8757600080fd5b505050604051805150505b60008a1115611ffc5787600160a060020a031663b55cdbf9338c8a0360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515611ef157600080fd5b6102c65a03f11515611f0257600080fd5b5050600160a060020a03331690508a156108fc028b604051600060405180830381858888f193505050501515611ffc5787600160a060020a031663b55cdbf9338960405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515611f8657600080fd5b6102c65a03f11515611f9757600080fd5b50505033600160a060020a03167fde2ec039772c8252fbdc620a480847194009c38dfbd74c4ae947e3df493a304f6003600060405180836006811115611fd957fe5b60ff1681526020018281526020019250505060405180910390a260039850612059565b33600160a060020a03167fde2ec039772c8252fbdc620a480847194009c38dfbd74c4ae947e3df493a304f60008c6040518083600681111561203a57fe5b60ff1681526020018281526020019250505060405180910390a2600098505b5050505050505050919050565b600160a060020a03331660009081526001602081905260409091205460ff1615151461209157600080fd5b608060405190810160409081526001808352670429d069189e0000602080850191909152660aa87bee538000928401929092526101766060840152600052600390527fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526002808352670429d069189e0000602080850191909152660aa87bee538000928401929092526101986060840152600052600390527fc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526003808352670429d069189e0000602080850191909152660aa87bee538000928401929092526101756060840152600081905290527fcbc4e5fb02c3d1de23a9f1e014b4d2ee5aeaea9505df5e855c9210bf472495af8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260048083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101b56060840152600052600390527f83ec6a1f0257b830b5e016457c9cf1435391bf56cc98f369a58a54fe937724658151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600580835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101f16060840152600052600390527f405aad32e1adbac89bb7f176e338b8fc6e994ca210c9bb7bdca249b4659422508151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526006808352670429d069189e0000602080850191909152660aa87bee5380009284019290925261017c6060840152600052600390527fc69056f16cbaa3c616b828e333ab7d3a32310765507f8f58359e99ebb7a885f38151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260078083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101596060840152600052600390527ff2c49132ed1cee2a7e75bde50d332a2f81f1d01e5456d8a19d1df09bd561dbd28151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600880835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526102066060840152600052600390527f85aaa47b6dc46495bb8824fad4583769726fea36efd831a35556690b830a8fbe8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600980835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101bf6060840152600052600390527f8a8dc4e5242ea8b1ab1d60606dae757e6c2cca9f92a2cced9f72c19960bcb4588151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600a8083526702c68af0bb14000060208085019190915266071afd498d00009284019290925261017c6060840152600052600390527f9dcb9783ba5cd0b54745f65f4f918525e461e91888c334e5342cb380ac558d538151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600b8083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101626060840152600052600390527f2d72af3c1b2b2956e6f694fb741556d5ca9524373974378cdbec16afa8b841648151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600c8083526702c68af0bb14000060208085019190915266071afd498d00009284019290925261015a6060840152600052600390527fd56a60595ebefebed7f22dcee6c2acc61b06cf8c68e84c88677840365d1ff92b8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600d8083526702c68af0bb14000060208085019190915266071afd498d00009284019290925261015f6060840152600052600390527fa8f2d96126c6d0ad63adabaef7bf5cf47f163fb0c218a473d28f62312d197bcf8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600e8083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101526060840152600052600390527fd6ebcc64c739277b117ce359e436534b234b76e914c80ad276abf5b5620789398151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600f8083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101556060840152600052600390527ff60b7f6a315ec68a6ac240e69dca53652b38627f709a2caa217d9e18af4d7a608151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260108083526704db732547630000602080850191909152660c6f3b40b6c000928401929092526101806060840152600052600390527f47d4745e02b343689a5e7ac121d2a352b7a15c10328a8759fd7d4cf0999002bb8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152601180835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101316060840152600052600390527ffc111d09a6e2f0958402cbe16a5aef32c9d8ddb9a4df7271140de57bfed6525a8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152601280835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101ab6060840152600052600390527f6a2b6bffaca788160f671fa62d34758b717f75a90ad5a468757c50d61f33c4438151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152601380835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101306060840152600052600390527f8a8166be5f30abeb6c91ee2f07eeb0b2eb14b4d59534d10a1c143964bd6179198151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152601480835267058d15e1762800006020808501919091526611c37937e080009284019290925260526060840152600052600390527f0ffe031ee7f67944a037276fd51f48fcc2fe05a729c43144606bc8777da8014f8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260158083526001602080850182905292840152607b6060840152600052600390527f94f2575c7592b1dfd5a8846a17482da7b0e38fb10c93880d74916c5f167924648151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260168083526702c68af0bb14000060208085019190915266038d7ea4c68000928401929092526101d46060840152600052600390527f370c8c7c6215b209793aa720f65163fbeecd5f5114008532ba0649ee234054028151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260178083526706f05b59d3b200006020808501919091526608e1bc9bf040009284019290925261012e6060840152600052600390527f0f0519a40093d7edad68f12e2ec868fdf92a03df1cbec3e035c987d6b218f2f48151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526018808352670de0b6b3a76400006020808501919091526611c37937e080009284019290925260c36060840152600052600390527fa3ddc4e8d053be09ec661eb04964a206cbd921c2c11fc03088857923bed1485a8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550565b600061311f61489e565b600254600090819081908190819060ff161561313a57600080fd5b600a54600160a060020a0316965086639d29cac48b600060405160a0015260405163ffffffff83811660e060020a02825291909116600482015260240160a060405180830381600087803b151561319057600080fd5b6102c65a03f115156131a157600080fd5b5050506040518051906020018051906020018051906020018051906020018051151560808c01525063ffffffff90811660608b015260408a01919091526020890191909152168652855163ffffffff1615806131ff57508560800151155b1561320957600080fd5b60085487600160a060020a03166347c17bac3360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561326357600080fd5b6102c65a03f1151561327457600080fd5b50505060405180519050111561328957600080fd5b6133043488600160a060020a031663c782fc603360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156132e457600080fd5b6102c65a03f115156132f557600080fd5b505050604051805190506147eb565b9450856020015193506000866060015163ffffffff16111561334a5760075461ffff16600160608801510363ffffffff1687602001510281151561334457fe5b04840193505b8484111561335757600080fd5b6006805485019055600160a060020a03871663b55cdbf9336133798888614805565b60405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156133bc57600080fd5b6102c65a03f115156133cd57600080fd5b50505086600160a060020a031663fc4d20f58b338c8c60006040516020015260405163ffffffff86811660e060020a028252851660048201908152600160a060020a0385166024830152606060448301908152606483018490529091608401848480828437820191505095505050505050602060405180830381600087803b151561345757600080fd5b6102c65a03f1151561346857600080fd5b5050506040518051935060009250505b60068210156135f55786600160a060020a03166362b21ad760028c63ffffffff16856000604051602001526040518463ffffffff1660e060020a028152600401808460048111156134c557fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b151561350b57600080fd5b6102c65a03f1151561351c57600080fd5b5050506040518051600954909150613541906020908590600160a060020a031661144a565b01905086600160a060020a03166326bda739600385846000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561358257fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b15156135ce57600080fd5b6102c65a03f115156135df57600080fd5b5050506040518051905050600182019150613478565b6009805473ffffffffffffffffffffffffffffffffffffffff191633600160a060020a03169081179091557f77cb179e9e5f39d98ac520c7c9fe2d085ac4e521f56806105fdeb1032885ee098460405167ffffffffffffffff909116815260200160405180910390a250505050505050505050565b60005433600160a060020a0390811691161461368557600080fd5b600160a060020a03811660009081526001602052604090205460ff16151561371157600160a060020a03811660009081526001602081905260408220805460ff191682179055815461ffff7401000000000000000000000000000000000000000080830482169093011690910275ffff0000000000000000000000000000000000000000199091161790555b50565b601881565b60055481565b60008082600181111561372e57fe5b1415613753575063ffffffff821660009081526004602052604090206001015461376e565b5063ffffffff82166000908152600460205260409020600201545b92915050565b60008061377f61489e565b600160a060020a03331660009081526001602081905260409091205460ff161515146137aa57600080fd5b63ffffffff8086166000818152600360205260409020805490955090911614156137d357600080fd5b600a54600160a060020a0316915081639d29cac486600060405160a0015260405163ffffffff83811660e060020a02825291909116600482015260240160a060405180830381600087803b151561382957600080fd5b6102c65a03f1151561383a57600080fd5b5050506040518051906020018051906020018051906020018051906020018051151560808701525063ffffffff908116606086015260408501919091526020840191909152168152600160a060020a03821663c8ff80a18251836020015184604001518860006040516020015260405163ffffffff86811660e060020a0282529490941660048501526024840192909252604483015215156064820152608401602060405180830381600087803b15156138f357600080fd5b6102c65a03f1151561390457600080fd5b505050604051805150505050505050565b600061391f614819565b60025460ff161561392f57600080fd5b600a54600160a060020a0316915081630720246086600060405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b151561398c57600080fd5b6102c65a03f1151561399d57600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08901525063ffffffff90811660c088015290811660a08701529081166080860152600160a060020a03909116604085015216602083015267ffffffffffffffff90811682528516815167ffffffffffffffff16141580613a41575033600160a060020a03168160400151600160a060020a031614155b15613a4b57600080fd5b81600160a060020a03166332666a3186868685608001518660a001518760c0015160405163ffffffff88811660e060020a02825267ffffffffffffffff88166004830190815285821660448401528482166064840152908316608483015260a06024830190815260a48301879052909160c4018787808284378201915050975050505050505050600060405180830381600087803b1515613aeb57600080fd5b6102c65a03f11515613afc57600080fd5b5050505050505050565b600054600160a060020a031681565b6000806000806000613b2561489e565b600a54600160a060020a0316915081639d29cac488600060405160a0015260405163ffffffff83811660e060020a02825291909116600482015260240160a060405180830381600087803b1515613b7b57600080fd5b6102c65a03f11515613b8c57600080fd5b5050506040518051906020018051906020018051906020018051906020018051151560808701525063ffffffff908116606086015260408501919091526020840191825291909116825251816040015182606001518360800151929a91995063ffffffff1697509095509350505050565b60046020526000908152604090205463ffffffff811690640100000000900460ff1682565b60005433600160a060020a03908116911614613c3d57600080fd5b600160a060020a03811660009081526001602081905260409091205460ff161515141561371157600160a060020a03166000908152600160205260408120805460ff19169055805475ffff0000000000000000000000000000000000000000198116740100000000000000000000000000000000000000009182900461ffff9081166000190116909102179055565b600a54600090600160a060020a0316818080808080866347c17bac8a836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515613d2e57600080fd5b6102c65a03f11515613d3f57600080fd5b5050506040518051925060009150505b81811015613dfe5786600160a060020a03166375fe2e338a8360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515613db457600080fd5b6102c65a03f11515613dc557600080fd5b5050506040518051935050600067ffffffffffffffff84161115613df657613dec836114a4565b9681019690955093505b600101613d4f565b5093979650505050505050565b600160a060020a033316600090815260016020819052604082205460ff16151514613e3557600080fd5b50600a54600160a060020a031663ffffffff8a161580613ef15750600081600160a060020a03166341b0eb5360018d63ffffffff166000604051602001526040518363ffffffff1660e060020a02815260040180836004811115613e9557fe5b60ff1681526020018267ffffffffffffffff1667ffffffffffffffff16815260200192505050602060405180830381600087803b1515613ed457600080fd5b6102c65a03f11515613ee557600080fd5b50505060405180519050115b15613efb57600080fd5b60008960ff161115613fb35780600160a060020a03166326bda73960008c63ffffffff168c6000604051602001526040518463ffffffff1660e060020a02815260040180846004811115613f4b57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b1515613f9757600080fd5b6102c65a03f11515613fa857600080fd5b505050604051805150505b60008860ff16111561406b5780600160a060020a03166326bda73960008c63ffffffff168b6000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561400357fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561404f57600080fd5b6102c65a03f1151561406057600080fd5b505050604051805150505b80600160a060020a03166326bda73960018c63ffffffff168a6000604051602001526040518463ffffffff1660e060020a028152600401808460048111156140af57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b15156140fb57600080fd5b6102c65a03f1151561410c57600080fd5b50505060405180515050600160a060020a0381166326bda739600163ffffffff8d16896000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561415a57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b15156141a657600080fd5b6102c65a03f115156141b757600080fd5b50505060405180515050600160a060020a0381166326bda739600163ffffffff8d16886000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561420557fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561425157600080fd5b6102c65a03f1151561426257600080fd5b50505060405180515050600160a060020a0381166326bda739600163ffffffff8d16876000604051602001526040518463ffffffff1660e060020a028152600401808460048111156142b057fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b15156142fc57600080fd5b6102c65a03f1151561430d57600080fd5b50505060405180515050600160a060020a0381166326bda739600163ffffffff8d16866000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561435b57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b15156143a757600080fd5b6102c65a03f115156143b857600080fd5b50505060405180515050600160a060020a0381166326bda739600163ffffffff8d16856000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561440657fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561445257600080fd5b6102c65a03f1151561446357600080fd5b5050506040518051505050505050505050505050565b600a54600160a060020a03168063522f681530823160006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156144da57600080fd5b6102c65a03f115156144eb57600080fd5b5050506040518051505050565b600681565b60065481565b60075461ffff1681565b738a60806f05876f4d6db00c877b0558dbcad3068281565b600160a060020a033316600090815260016020819052604082205460ff1615151461454f57600080fd5b5063ffffffff909116600090815260046020526040902080549115156401000000000264ff0000000019909216919091179055565b63ffffffff80821660009081526003602081905260409091208054600182015492820154908416931690509193909250565b60025460ff1681565b60005433600160a060020a039081169116146145da57600080fd5b600160a060020a038116156137115760008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b600a54600090600160a060020a031681808263c782fc6086836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561467457600080fd5b6102c65a03f1151561468557600080fd5b50505060405180519050915061469a85613ccc565b91909101949350505050565b6000806146b1614819565b600a54600160a060020a031691506000826307202460868360405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b151561470f57600080fd5b6102c65a03f1151561472057600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08a01525063ffffffff90811660c089015290811660a08801529081166080870152600160a060020a039091166040860152166020840190815267ffffffffffffffff90911683526004906000905163ffffffff168152602081019190915260400160002054640100000000900460ff1695945050505050565b60008282028315806147e357508284828115156147e057fe5b04145b15156119db57fe5b60008282018381108015906147e35750828110156119db57fe5b6000808284101561481257fe5b5050900390565b610100604051908101604090815260008083526020830181905290820152606081016148436148cc565b8152600060208201819052604082018190526060820181905260809091015290565b81548183558181151161489957600701600890048160070160089004836000526020600020918201910161489991906148de565b505050565b60a0604051908101604090815260008083526020830181905290820181905260608201819052608082015290565b60206040519081016040526000815290565b6148fc91905b808211156148f857600081556001016148e4565b5090565b905600a165627a7a72305820de2c7d2b7c4c2667b06cd2cb9244d23d79668bf26275594b81a2a7437b49f2410029

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

000000000000000000000000abc1c404424bdf24c19a5cc5ef8f47781d18eb3e

-----Decoded View---------------
Arg [0] : _dataContract (address): 0xABC1c404424BDF24C19A5cC5EF8F47781D18Eb3E

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000abc1c404424bdf24c19a5cc5ef8f47781d18eb3e


Swarm Source

bzzr://de2c7d2b7c4c2667b06cd2cb9244d23d79668bf26275594b81a2a7437b49f241

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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