ETH Price: $2,321.90 (-5.10%)

Contract

0xB2c0782ae4A299f7358758B2D15dA9bF29E1DD99
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer126585852021-06-18 13:10:171203 days ago1624021817IN
Etheremon: Asset
0 ETH0.0004804612
Approve119348762021-02-26 20:00:391314 days ago1614369639IN
Etheremon: Asset
0 ETH0.01298141127.3
Transfer From111178642020-10-24 8:04:101440 days ago1603526650IN
Etheremon: Asset
0 ETH0.0008791725.3
Transfer From111178632020-10-24 8:03:471440 days ago1603526627IN
Etheremon: Asset
0 ETH0.0008791725.3
Transfer From111178632020-10-24 8:03:471440 days ago1603526627IN
Etheremon: Asset
0 ETH0.0008791725.3
Transfer From111178632020-10-24 8:03:471440 days ago1603526627IN
Etheremon: Asset
0 ETH0.0008791725.3
Approve110140272020-10-08 9:04:591456 days ago1602147899IN
Etheremon: Asset
0 ETH0.0063537962.3
Approve110140262020-10-08 9:04:551456 days ago1602147895IN
Etheremon: Asset
0 ETH0.0063537962.3
Approve110140262020-10-08 9:04:551456 days ago1602147895IN
Etheremon: Asset
0 ETH0.0063537962.3
Approve110140262020-10-08 9:04:551456 days ago1602147895IN
Etheremon: Asset
0 ETH0.0063537962.3
Approve110140262020-10-08 9:04:551456 days ago1602147895IN
Etheremon: Asset
0 ETH0.0063537962.3
Approve109289812020-09-25 1:58:531469 days ago1600999133IN
Etheremon: Asset
0 ETH0.0081589680.00000145
Approve109190592020-09-23 13:05:491471 days ago1600866349IN
Etheremon: Asset
0 ETH0.0118978116.66
Approve109190592020-09-23 13:05:491471 days ago1600866349IN
Etheremon: Asset
0 ETH0.0118978116.66
Approve109190582020-09-23 13:05:411471 days ago1600866341IN
Etheremon: Asset
0 ETH0.0118978116.66
Approve95736852020-02-28 18:09:141678 days ago1582913354IN
Etheremon: Asset
0 ETH0.000407944
Transfer From94047632020-02-02 18:38:241704 days ago1580668704IN
Etheremon: Asset
0 ETH0.000043071.2
Transfer From94046892020-02-02 18:22:571704 days ago1580667777IN
Etheremon: Asset
0 ETH0.000129213.6
Transfer91549082019-12-24 8:47:311745 days ago1577177251IN
Etheremon: Asset
0 ETH0.000074252.2
Safe Transfer Fr...91461902019-12-22 14:57:291747 days ago1577026649IN
Etheremon: Asset
0 ETH0.000157847
Approve90002562019-11-25 19:45:451773 days ago1574711145IN
Etheremon: Asset
0 ETH0.000049581
Approve89887492019-11-23 21:39:521775 days ago1574545192IN
Etheremon: Asset
0 ETH0.00009061.6
Approve89750872019-11-21 15:15:221778 days ago1574349322IN
Etheremon: Asset
0 ETH0.0012694216.00000001
Safe Transfer Fr...84417092019-08-28 23:57:101862 days ago1567036630IN
Etheremon: Asset
0 ETH0.000174587
Safe Transfer Fr...84414352019-08-28 22:58:451862 days ago1567033125IN
Etheremon: Asset
0 ETH0.000165576.63875016
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EtheremonAsset

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-03-14
*/

pragma solidity ^0.4.18;

// Etheremon ERC721

// 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);
}


interface EtheremonBattle {
    function isOnBattle(uint64 _objId) constant external returns(bool);
}

interface EtheremonTradeInterface {
    function isOnTrading(uint64 _objId) constant external returns(bool);
}

contract ERC721 {
    // ERC20 compatible functions
    // function name() constant returns (string name);
    // function symbol() constant returns (string symbol);
    function totalSupply() public constant returns (uint256 supply);
    function balanceOf(address _owner) public constant returns (uint256 balance);
    // Functions that define ownership
    function ownerOf(uint256 _tokenId) public constant returns (address owner);
    function approve(address _to, uint256 _tokenId) external;
    function takeOwnership(uint256 _tokenId) external;
    function transfer(address _to, uint256 _tokenId) external;
    function transferFrom(address _from, address _to, uint256 _tokenId) external;
    function tokenOfOwnerByIndex(address _owner, uint256 _index) public constant returns (uint tokenId);
    // Token metadata
    //function tokenMetadata(uint256 _tokenId) constant returns (string infoUrl);

    // Events
    event Transfer(address indexed _from, address indexed _to, uint256 _tokenId);
    event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId);
}

contract EtheremonAsset is BasicAccessControl, ERC721 {
    string public constant name = "EtheremonAsset";
    string public constant symbol = "EMONA";
    
    mapping (address => mapping (uint256 => address)) public allowed;
    
    // data contract
    address public dataContract;
    address public battleContract;
    address public tradeContract;
    
    // helper struct
    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;
    }

    // modifier
    
    modifier requireDataContract {
        require(dataContract != address(0));
        _;
    }
    
    modifier requireBattleContract {
        require(battleContract != address(0));
        _;
    }
    
    modifier requireTradeContract {
        require(tradeContract != address(0));
        _;        
    }
    
    function EtheremonAsset(address _dataContract, address _battleContract, address _tradeContract) public {
        dataContract = _dataContract;
        battleContract = _battleContract;
        tradeContract = _tradeContract;
    }

    function setContract(address _dataContract, address _battleContract, address _tradeContract) onlyModerators external {
        dataContract = _dataContract;
        battleContract = _battleContract;
        tradeContract = _tradeContract;
    }
    
    
    // public
    
    function totalSupply() public constant requireDataContract returns (uint256 supply){
        EtheremonDataBase data = EtheremonDataBase(dataContract);
        return data.totalMonster();
    }
    
    function balanceOf(address _owner) public constant requireDataContract returns (uint balance) {
        EtheremonDataBase data = EtheremonDataBase(dataContract);
        return data.getMonsterDexSize(_owner);
    }
    
    function ownerOf(uint256 _tokenId) public constant requireDataContract returns (address owner) {
        EtheremonDataBase data = EtheremonDataBase(dataContract);
        MonsterObjAcc memory obj;
        (obj.monsterId, obj.classId, obj.trainer, obj.exp, obj.createIndex, obj.lastClaimIndex, obj.createTime) = data.getMonsterObj(uint64(_tokenId));
        require(obj.monsterId == uint64(_tokenId));
        return obj.trainer;
    }
    
    function isApprovable(address _owner, uint256 _tokenId) public constant requireDataContract requireBattleContract requireTradeContract 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(uint64(_tokenId));
        if (obj.monsterId != uint64(_tokenId))
            return false;
        if (obj.trainer != _owner)
            return false;
        // check battle & trade contract 
        EtheremonBattle battle = EtheremonBattle(battleContract);
        EtheremonTradeInterface trade = EtheremonTradeInterface(tradeContract);
        return (!battle.isOnBattle(obj.monsterId) && !trade.isOnTrading(obj.monsterId));
    }
    
    function approve(address _to, uint256 _tokenId) requireBattleContract requireTradeContract 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(uint64(_tokenId));
        require(obj.monsterId == uint64(_tokenId));
        require(msg.sender == obj.trainer);
        require(msg.sender != _to);
        
        // check battle & trade contract 
        EtheremonBattle battle = EtheremonBattle(battleContract);
        EtheremonTradeInterface trade = EtheremonTradeInterface(tradeContract);
        if (battle.isOnBattle(obj.monsterId) || trade.isOnTrading(obj.monsterId))
            revert();
        
        allowed[msg.sender][_tokenId] = _to;
        Approval(msg.sender, _to, _tokenId);
    }
    
    function takeOwnership(uint256 _tokenId) requireDataContract requireBattleContract requireTradeContract 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(uint64(_tokenId));
        
        require(obj.monsterId == uint64(_tokenId));
        require(msg.sender != obj.trainer);
        
        require(allowed[obj.trainer][_tokenId] == msg.sender);
        
        // check battle & trade contract 
        EtheremonBattle battle = EtheremonBattle(battleContract);
        EtheremonTradeInterface trade = EtheremonTradeInterface(tradeContract);
        if (battle.isOnBattle(obj.monsterId) || trade.isOnTrading(obj.monsterId))
            revert();
        
        // remove allowed
        allowed[obj.trainer][_tokenId] = address(0);

        // transfer owner
        data.removeMonsterIdMapping(obj.trainer, obj.monsterId);
        data.addMonsterIdMapping(msg.sender, obj.monsterId);
        
        Transfer(obj.trainer, msg.sender, _tokenId);
    }
    
    function transfer(address _to, uint256 _tokenId) requireDataContract 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(uint64(_tokenId));
        
        require(obj.monsterId == uint64(_tokenId));
        require(obj.trainer == msg.sender);
        require(msg.sender != _to);
        require(_to != address(0));
        
        // check battle & trade contract 
        EtheremonBattle battle = EtheremonBattle(battleContract);
        EtheremonTradeInterface trade = EtheremonTradeInterface(tradeContract);
        if (battle.isOnBattle(obj.monsterId) || trade.isOnTrading(obj.monsterId))
            revert();
        
        // remove allowed
        allowed[obj.trainer][_tokenId] = address(0);
        
        // transfer owner
        data.removeMonsterIdMapping(obj.trainer, obj.monsterId);
        data.addMonsterIdMapping(_to, obj.monsterId);
        
        Transfer(obj.trainer, _to, _tokenId);
    }
    
    function transferFrom(address _from, address _to, uint256 _tokenId) requireDataContract requireBattleContract requireTradeContract external {
        EtheremonDataBase data = EtheremonDataBase(dataContract);
        MonsterObjAcc memory obj;
        (obj.monsterId, obj.classId, obj.trainer, obj.exp, obj.createIndex, obj.lastClaimIndex, obj.createTime) = data.getMonsterObj(uint64(_tokenId));
        
        require(obj.monsterId == uint64(_tokenId));
        require(obj.trainer == _from);
        require(_to != address(0));
        require(_to != _from);
        require(allowed[_from][_tokenId] == msg.sender);
    
        // check battle & trade contract 
        EtheremonBattle battle = EtheremonBattle(battleContract);
        EtheremonTradeInterface trade = EtheremonTradeInterface(tradeContract);
        if (battle.isOnBattle(obj.monsterId) || trade.isOnTrading(obj.monsterId))
            revert();
        
        // remove allowed
        allowed[_from][_tokenId] = address(0);

        // transfer owner
        data.removeMonsterIdMapping(obj.trainer, obj.monsterId);
        data.addMonsterIdMapping(_to, obj.monsterId);
        
        Transfer(obj.trainer, _to, _tokenId);
    }
    
    function tokenOfOwnerByIndex(address _owner, uint256 _index) public constant requireDataContract returns (uint tokenId) {
        EtheremonDataBase data = EtheremonDataBase(dataContract);
        return data.getMonsterObjId(_owner, _index);
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","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":"address"}],"name":"moderators","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"supply","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_dataContract","type":"address"},{"name":"_battleContract","type":"address"},{"name":"_tradeContract","type":"address"}],"name":"setContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"name":"tokenId","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"battleContract","outputs":[{"name":"","type":"address"}],"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":"totalModerators","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newModerator","type":"address"}],"name":"AddModerator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"allowed","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"isApprovable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"takeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_oldModerator","type":"address"}],"name":"RemoveModerator","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"tradeContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_dataContract","type":"address"},{"name":"_battleContract","type":"address"},{"name":"_tradeContract","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_approved","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"}]

606060405260008060146101000a81548161ffff021916908361ffff1602179055506001600260006101000a81548160ff021916908315150217905550341561004757600080fd5b604051606080613a7e83398101604052808051906020019091908051906020019091908051906020019091905050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506138f48061018a6000396000f30060606040526004361061013e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610143578063095ea7b3146101d15780630d6688181461021357806314d0f1ba1461026857806318160ddd146102b957806323b872dd146102e257806329291054146103435780632f745c59146103ba578063423b1ca31461041057806348ef5aa8146104655780634efb023e1461048a5780636352211e146104bb5780636c81fd6d1461051e57806370a0823114610557578063739f660d146105a45780638a0520fb146106265780638da5cb5b1461068057806395d89b41146106d5578063a9059cbb14610763578063b2e6ceeb146107a5578063b85d6275146107c8578063ee4e441614610801578063f28532921461082e578063ffa640d814610867575b600080fd5b341561014e57600080fd5b6101566108bc565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561019657808201518184015260208101905061017b565b50505050905090810190601f1680156101c35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101dc57600080fd5b610211600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506108f5565b005b341561021e57600080fd5b610226610ec2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027357600080fd5b61029f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ee8565b604051808215151515815260200191505060405180910390f35b34156102c457600080fd5b6102cc610f08565b6040518082815260200191505060405180910390f35b34156102ed57600080fd5b610341600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611025565b005b341561034e57600080fd5b6103b8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118c0565b005b34156103c557600080fd5b6103fa600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506119e7565b6040518082815260200191505060405180910390f35b341561041b57600080fd5b610423611b46565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561047057600080fd5b61048860048080351515906020019091905050611b6c565b005b341561049557600080fd5b61049d611be4565b604051808261ffff1661ffff16815260200191505060405180910390f35b34156104c657600080fd5b6104dc6004808035906020019091905050611bf8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561052957600080fd5b610555600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611e33565b005b341561056257600080fd5b61058e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611f73565b6040518082815260200191505060405180910390f35b34156105af57600080fd5b6105e4600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506120bf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063157600080fd5b610666600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612101565b604051808215151515815260200191505060405180910390f35b341561068b57600080fd5b6106936125e8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106e057600080fd5b6106e861260d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561072857808201518184015260208101905061070d565b50505050905090810190601f1680156107555780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561076e57600080fd5b6107a3600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612646565b005b34156107b057600080fd5b6107c66004808035906020019091905050612d9a565b005b34156107d357600080fd5b6107ff600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506135e1565b005b341561080c57600080fd5b610814613722565b604051808215151515815260200191505060405180910390f35b341561083957600080fd5b610865600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613735565b005b341561087257600080fd5b61087a61380a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6040805190810160405280600e81526020017f4574686572656d6f6e417373657400000000000000000000000000000000000081525081565b60006108ff613830565b600080600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561096057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156109be57600080fd5b600260009054906101000a900460ff161515156109da57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693508373ffffffffffffffffffffffffffffffffffffffff16630720246086600060405160e001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff16815260200191505060e060405180830381600087803b1515610a8a57600080fd5b6102c65a03f11515610a9b57600080fd5b50505060405180519060200180519060200180519060200180519060200180519060200180519060200180519050896000018a6020018b6040018c6080018d60a0018e60c0018f60e001878152508763ffffffff1663ffffffff168152508763ffffffff1663ffffffff168152508763ffffffff1663ffffffff168152508773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508763ffffffff1663ffffffff168152508767ffffffffffffffff1667ffffffffffffffff16815250505050505050508467ffffffffffffffff16836000015167ffffffffffffffff16141515610b9e57600080fd5b826040015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bdc57600080fd5b8573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515610c1757600080fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff166335f097f384600001516000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff168152602001915050602060405180830381600087803b1515610cf057600080fd5b6102c65a03f11515610d0157600080fd5b5050506040518051905080610dbc57508073ffffffffffffffffffffffffffffffffffffffff1663a847a71c84600001516000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff168152602001915050602060405180830381600087803b1515610da057600080fd5b6102c65a03f11515610db157600080fd5b505050604051805190505b15610dc657600080fd5b85600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040518082815260200191505060405180910390a3505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915054906101000a900460ff1681565b600080600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610f6957600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff16637a09defe6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610ffa57600080fd5b6102c65a03f1151561100b57600080fd5b5050506040518051905067ffffffffffffffff1691505090565b600061102f613830565b600080600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561109057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156110ee57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561114c57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693508373ffffffffffffffffffffffffffffffffffffffff16630720246086600060405160e001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff16815260200191505060e060405180830381600087803b15156111fc57600080fd5b6102c65a03f1151561120d57600080fd5b50505060405180519060200180519060200180519060200180519060200180519060200180519060200180519050896000018a6020018b6040018c6080018d60a0018e60c0018f60e001878152508763ffffffff1663ffffffff168152508763ffffffff1663ffffffff168152508763ffffffff1663ffffffff168152508773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508763ffffffff1663ffffffff168152508767ffffffffffffffff1667ffffffffffffffff16815250505050505050508467ffffffffffffffff16836000015167ffffffffffffffff1614151561131057600080fd5b8673ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff1614151561134e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415151561138a57600080fd5b8673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141515156113c557600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561146f57600080fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff166335f097f384600001516000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff168152602001915050602060405180830381600087803b151561154857600080fd5b6102c65a03f1151561155957600080fd5b505050604051805190508061161457508073ffffffffffffffffffffffffffffffffffffffff1663a847a71c84600001516000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff168152602001915050602060405180830381600087803b15156115f857600080fd5b6102c65a03f1151561160957600080fd5b505050604051805190505b1561161e57600080fd5b6000600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff166360c6ccb2846040015185600001516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff16815260200192505050600060405180830381600087803b151561176c57600080fd5b6102c65a03f1151561177d57600080fd5b5050508373ffffffffffffffffffffffffffffffffffffffff16639248019e8785600001516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff16815260200192505050600060405180830381600087803b151561183a57600080fd5b6102c65a03f1151561184b57600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a350505050505050565b60011515600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151561191f57600080fd5b82600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600080600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611a4857600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166375fe2e3385856000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515611b1857600080fd5b6102c65a03f11515611b2957600080fd5b5050506040518051905067ffffffffffffffff1691505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bc757600080fd5b80600260006101000a81548160ff02191690831515021790555050565b600060149054906101000a900461ffff1681565b600080611c03613830565b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611c6157600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff16630720246085600060405160e001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff16815260200191505060e060405180830381600087803b1515611d1157600080fd5b6102c65a03f11515611d2257600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805190508760000188602001896040018a6080018b60a0018c60c0018d60e001878152508763ffffffff1663ffffffff168152508763ffffffff1663ffffffff168152508763ffffffff1663ffffffff168152508773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508763ffffffff1663ffffffff168152508767ffffffffffffffff1667ffffffffffffffff16815250505050505050508367ffffffffffffffff16816000015167ffffffffffffffff16141515611e2557600080fd5b806040015192505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e8e57600080fd5b60001515600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611f705760018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600060148282829054906101000a900461ffff160192506101000a81548161ffff021916908361ffff1602179055505b50565b600080600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611fd457600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166347c17bac846000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561209c57600080fd5b6102c65a03f115156120ad57600080fd5b50505060405180519050915050919050565b60036020528160005260406000206020528060005260406000206000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008061210c613830565b600080600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561216d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156121cb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561222957600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693508373ffffffffffffffffffffffffffffffffffffffff16630720246087600060405160e001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff16815260200191505060e060405180830381600087803b15156122d957600080fd5b6102c65a03f115156122ea57600080fd5b50505060405180519060200180519060200180519060200180519060200180519060200180519060200180519050896000018a6020018b6040018c6080018d60a0018e60c0018f60e001878152508763ffffffff1663ffffffff168152508763ffffffff1663ffffffff168152508763ffffffff1663ffffffff168152508773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508763ffffffff1663ffffffff168152508767ffffffffffffffff1667ffffffffffffffff16815250505050505050508567ffffffffffffffff16836000015167ffffffffffffffff161415156123f157600094506125de565b8673ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff1614151561243357600094506125de565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff166335f097f384600001516000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff168152602001915050602060405180830381600087803b151561250c57600080fd5b6102c65a03f1151561251d57600080fd5b505050604051805190501580156125db57508073ffffffffffffffffffffffffffffffffffffffff1663a847a71c84600001516000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff168152602001915050602060405180830381600087803b15156125be57600080fd5b6102c65a03f115156125cf57600080fd5b50505060405180519050155b94505b5050505092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600581526020017f454d4f4e4100000000000000000000000000000000000000000000000000000081525081565b6000612650613830565b600080600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156126b157600080fd5b600260009054906101000a900460ff161515156126cd57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693508373ffffffffffffffffffffffffffffffffffffffff16630720246086600060405160e001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff16815260200191505060e060405180830381600087803b151561277d57600080fd5b6102c65a03f1151561278e57600080fd5b50505060405180519060200180519060200180519060200180519060200180519060200180519060200180519050896000018a6020018b6040018c6080018d60a0018e60c0018f60e001878152508763ffffffff1663ffffffff168152508763ffffffff1663ffffffff168152508763ffffffff1663ffffffff168152508773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508763ffffffff1663ffffffff168152508767ffffffffffffffff1667ffffffffffffffff16815250505050505050508467ffffffffffffffff16836000015167ffffffffffffffff1614151561289157600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff161415156128cf57600080fd5b8573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151561290a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415151561294657600080fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff166335f097f384600001516000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff168152602001915050602060405180830381600087803b1515612a1f57600080fd5b6102c65a03f11515612a3057600080fd5b5050506040518051905080612aeb57508073ffffffffffffffffffffffffffffffffffffffff1663a847a71c84600001516000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff168152602001915050602060405180830381600087803b1515612acf57600080fd5b6102c65a03f11515612ae057600080fd5b505050604051805190505b15612af557600080fd5b600060036000856040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff166360c6ccb2846040015185600001516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff16815260200192505050600060405180830381600087803b1515612c4757600080fd5b6102c65a03f11515612c5857600080fd5b5050508373ffffffffffffffffffffffffffffffffffffffff16639248019e8785600001516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff16815260200192505050600060405180830381600087803b1515612d1557600080fd5b6102c65a03f11515612d2657600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3505050505050565b6000612da4613830565b600080600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515612e0557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515612e6357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515612ec157600080fd5b600260009054906101000a900460ff16151515612edd57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693508373ffffffffffffffffffffffffffffffffffffffff16630720246086600060405160e001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff16815260200191505060e060405180830381600087803b1515612f8d57600080fd5b6102c65a03f11515612f9e57600080fd5b50505060405180519060200180519060200180519060200180519060200180519060200180519060200180519050896000018a6020018b6040018c6080018d60a0018e60c0018f60e001878152508763ffffffff1663ffffffff168152508763ffffffff1663ffffffff168152508763ffffffff1663ffffffff168152508773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508763ffffffff1663ffffffff168152508767ffffffffffffffff1667ffffffffffffffff16815250505050505050508467ffffffffffffffff16836000015167ffffffffffffffff161415156130a157600080fd5b826040015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515156130e057600080fd5b3373ffffffffffffffffffffffffffffffffffffffff1660036000856040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561318e57600080fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff166335f097f384600001516000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff168152602001915050602060405180830381600087803b151561326757600080fd5b6102c65a03f1151561327857600080fd5b505050604051805190508061333357508073ffffffffffffffffffffffffffffffffffffffff1663a847a71c84600001516000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff168152602001915050602060405180830381600087803b151561331757600080fd5b6102c65a03f1151561332857600080fd5b505050604051805190505b1561333d57600080fd5b600060036000856040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff166360c6ccb2846040015185600001516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff16815260200192505050600060405180830381600087803b151561348f57600080fd5b6102c65a03f115156134a057600080fd5b5050508373ffffffffffffffffffffffffffffffffffffffff16639248019e3385600001516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff16815260200192505050600060405180830381600087803b151561355d57600080fd5b6102c65a03f1151561356e57600080fd5b5050503373ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a35050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561363c57600080fd5b60011515600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561371f576000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600060148282829054906101000a900461ffff160392506101000a81548161ffff021916908361ffff1602179055505b50565b600260009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561379057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561380757806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61010060405190810160405280600067ffffffffffffffff168152602001600063ffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016138806138b4565b8152602001600063ffffffff168152602001600063ffffffff168152602001600063ffffffff168152602001600081525090565b6020604051908101604052806000815250905600a165627a7a723058205ed7654fd0d5acec6aa8543cf3323a9b0b0b7e5687a409c2378c014dd6886dc90029000000000000000000000000abc1c404424bdf24c19a5cc5ef8f47781d18eb3e000000000000000000000000df6164efd12678bf6a7d5a1ddf73c831493f65740000000000000000000000004ba72f0f8dad13709ee28a992869e79d0fe47030

Deployed Bytecode

0x60606040526004361061013e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610143578063095ea7b3146101d15780630d6688181461021357806314d0f1ba1461026857806318160ddd146102b957806323b872dd146102e257806329291054146103435780632f745c59146103ba578063423b1ca31461041057806348ef5aa8146104655780634efb023e1461048a5780636352211e146104bb5780636c81fd6d1461051e57806370a0823114610557578063739f660d146105a45780638a0520fb146106265780638da5cb5b1461068057806395d89b41146106d5578063a9059cbb14610763578063b2e6ceeb146107a5578063b85d6275146107c8578063ee4e441614610801578063f28532921461082e578063ffa640d814610867575b600080fd5b341561014e57600080fd5b6101566108bc565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561019657808201518184015260208101905061017b565b50505050905090810190601f1680156101c35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101dc57600080fd5b610211600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506108f5565b005b341561021e57600080fd5b610226610ec2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027357600080fd5b61029f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ee8565b604051808215151515815260200191505060405180910390f35b34156102c457600080fd5b6102cc610f08565b6040518082815260200191505060405180910390f35b34156102ed57600080fd5b610341600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611025565b005b341561034e57600080fd5b6103b8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118c0565b005b34156103c557600080fd5b6103fa600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506119e7565b6040518082815260200191505060405180910390f35b341561041b57600080fd5b610423611b46565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561047057600080fd5b61048860048080351515906020019091905050611b6c565b005b341561049557600080fd5b61049d611be4565b604051808261ffff1661ffff16815260200191505060405180910390f35b34156104c657600080fd5b6104dc6004808035906020019091905050611bf8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561052957600080fd5b610555600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611e33565b005b341561056257600080fd5b61058e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611f73565b6040518082815260200191505060405180910390f35b34156105af57600080fd5b6105e4600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506120bf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063157600080fd5b610666600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612101565b604051808215151515815260200191505060405180910390f35b341561068b57600080fd5b6106936125e8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106e057600080fd5b6106e861260d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561072857808201518184015260208101905061070d565b50505050905090810190601f1680156107555780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561076e57600080fd5b6107a3600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612646565b005b34156107b057600080fd5b6107c66004808035906020019091905050612d9a565b005b34156107d357600080fd5b6107ff600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506135e1565b005b341561080c57600080fd5b610814613722565b604051808215151515815260200191505060405180910390f35b341561083957600080fd5b610865600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613735565b005b341561087257600080fd5b61087a61380a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6040805190810160405280600e81526020017f4574686572656d6f6e417373657400000000000000000000000000000000000081525081565b60006108ff613830565b600080600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561096057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156109be57600080fd5b600260009054906101000a900460ff161515156109da57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693508373ffffffffffffffffffffffffffffffffffffffff16630720246086600060405160e001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff16815260200191505060e060405180830381600087803b1515610a8a57600080fd5b6102c65a03f11515610a9b57600080fd5b50505060405180519060200180519060200180519060200180519060200180519060200180519060200180519050896000018a6020018b6040018c6080018d60a0018e60c0018f60e001878152508763ffffffff1663ffffffff168152508763ffffffff1663ffffffff168152508763ffffffff1663ffffffff168152508773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508763ffffffff1663ffffffff168152508767ffffffffffffffff1667ffffffffffffffff16815250505050505050508467ffffffffffffffff16836000015167ffffffffffffffff16141515610b9e57600080fd5b826040015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bdc57600080fd5b8573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515610c1757600080fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff166335f097f384600001516000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff168152602001915050602060405180830381600087803b1515610cf057600080fd5b6102c65a03f11515610d0157600080fd5b5050506040518051905080610dbc57508073ffffffffffffffffffffffffffffffffffffffff1663a847a71c84600001516000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff168152602001915050602060405180830381600087803b1515610da057600080fd5b6102c65a03f11515610db157600080fd5b505050604051805190505b15610dc657600080fd5b85600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040518082815260200191505060405180910390a3505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915054906101000a900460ff1681565b600080600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610f6957600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff16637a09defe6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610ffa57600080fd5b6102c65a03f1151561100b57600080fd5b5050506040518051905067ffffffffffffffff1691505090565b600061102f613830565b600080600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561109057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156110ee57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561114c57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693508373ffffffffffffffffffffffffffffffffffffffff16630720246086600060405160e001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff16815260200191505060e060405180830381600087803b15156111fc57600080fd5b6102c65a03f1151561120d57600080fd5b50505060405180519060200180519060200180519060200180519060200180519060200180519060200180519050896000018a6020018b6040018c6080018d60a0018e60c0018f60e001878152508763ffffffff1663ffffffff168152508763ffffffff1663ffffffff168152508763ffffffff1663ffffffff168152508773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508763ffffffff1663ffffffff168152508767ffffffffffffffff1667ffffffffffffffff16815250505050505050508467ffffffffffffffff16836000015167ffffffffffffffff1614151561131057600080fd5b8673ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff1614151561134e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415151561138a57600080fd5b8673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141515156113c557600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561146f57600080fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff166335f097f384600001516000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff168152602001915050602060405180830381600087803b151561154857600080fd5b6102c65a03f1151561155957600080fd5b505050604051805190508061161457508073ffffffffffffffffffffffffffffffffffffffff1663a847a71c84600001516000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff168152602001915050602060405180830381600087803b15156115f857600080fd5b6102c65a03f1151561160957600080fd5b505050604051805190505b1561161e57600080fd5b6000600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff166360c6ccb2846040015185600001516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff16815260200192505050600060405180830381600087803b151561176c57600080fd5b6102c65a03f1151561177d57600080fd5b5050508373ffffffffffffffffffffffffffffffffffffffff16639248019e8785600001516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff16815260200192505050600060405180830381600087803b151561183a57600080fd5b6102c65a03f1151561184b57600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a350505050505050565b60011515600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151561191f57600080fd5b82600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600080600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611a4857600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166375fe2e3385856000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515611b1857600080fd5b6102c65a03f11515611b2957600080fd5b5050506040518051905067ffffffffffffffff1691505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bc757600080fd5b80600260006101000a81548160ff02191690831515021790555050565b600060149054906101000a900461ffff1681565b600080611c03613830565b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611c6157600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff16630720246085600060405160e001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff16815260200191505060e060405180830381600087803b1515611d1157600080fd5b6102c65a03f11515611d2257600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805190508760000188602001896040018a6080018b60a0018c60c0018d60e001878152508763ffffffff1663ffffffff168152508763ffffffff1663ffffffff168152508763ffffffff1663ffffffff168152508773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508763ffffffff1663ffffffff168152508767ffffffffffffffff1667ffffffffffffffff16815250505050505050508367ffffffffffffffff16816000015167ffffffffffffffff16141515611e2557600080fd5b806040015192505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e8e57600080fd5b60001515600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611f705760018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600060148282829054906101000a900461ffff160192506101000a81548161ffff021916908361ffff1602179055505b50565b600080600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611fd457600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166347c17bac846000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561209c57600080fd5b6102c65a03f115156120ad57600080fd5b50505060405180519050915050919050565b60036020528160005260406000206020528060005260406000206000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008061210c613830565b600080600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561216d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156121cb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561222957600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693508373ffffffffffffffffffffffffffffffffffffffff16630720246087600060405160e001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff16815260200191505060e060405180830381600087803b15156122d957600080fd5b6102c65a03f115156122ea57600080fd5b50505060405180519060200180519060200180519060200180519060200180519060200180519060200180519050896000018a6020018b6040018c6080018d60a0018e60c0018f60e001878152508763ffffffff1663ffffffff168152508763ffffffff1663ffffffff168152508763ffffffff1663ffffffff168152508773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508763ffffffff1663ffffffff168152508767ffffffffffffffff1667ffffffffffffffff16815250505050505050508567ffffffffffffffff16836000015167ffffffffffffffff161415156123f157600094506125de565b8673ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff1614151561243357600094506125de565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff166335f097f384600001516000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff168152602001915050602060405180830381600087803b151561250c57600080fd5b6102c65a03f1151561251d57600080fd5b505050604051805190501580156125db57508073ffffffffffffffffffffffffffffffffffffffff1663a847a71c84600001516000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff168152602001915050602060405180830381600087803b15156125be57600080fd5b6102c65a03f115156125cf57600080fd5b50505060405180519050155b94505b5050505092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600581526020017f454d4f4e4100000000000000000000000000000000000000000000000000000081525081565b6000612650613830565b600080600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156126b157600080fd5b600260009054906101000a900460ff161515156126cd57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693508373ffffffffffffffffffffffffffffffffffffffff16630720246086600060405160e001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff16815260200191505060e060405180830381600087803b151561277d57600080fd5b6102c65a03f1151561278e57600080fd5b50505060405180519060200180519060200180519060200180519060200180519060200180519060200180519050896000018a6020018b6040018c6080018d60a0018e60c0018f60e001878152508763ffffffff1663ffffffff168152508763ffffffff1663ffffffff168152508763ffffffff1663ffffffff168152508773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508763ffffffff1663ffffffff168152508767ffffffffffffffff1667ffffffffffffffff16815250505050505050508467ffffffffffffffff16836000015167ffffffffffffffff1614151561289157600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff161415156128cf57600080fd5b8573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151561290a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415151561294657600080fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff166335f097f384600001516000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff168152602001915050602060405180830381600087803b1515612a1f57600080fd5b6102c65a03f11515612a3057600080fd5b5050506040518051905080612aeb57508073ffffffffffffffffffffffffffffffffffffffff1663a847a71c84600001516000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff168152602001915050602060405180830381600087803b1515612acf57600080fd5b6102c65a03f11515612ae057600080fd5b505050604051805190505b15612af557600080fd5b600060036000856040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff166360c6ccb2846040015185600001516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff16815260200192505050600060405180830381600087803b1515612c4757600080fd5b6102c65a03f11515612c5857600080fd5b5050508373ffffffffffffffffffffffffffffffffffffffff16639248019e8785600001516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff16815260200192505050600060405180830381600087803b1515612d1557600080fd5b6102c65a03f11515612d2657600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3505050505050565b6000612da4613830565b600080600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515612e0557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515612e6357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515612ec157600080fd5b600260009054906101000a900460ff16151515612edd57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693508373ffffffffffffffffffffffffffffffffffffffff16630720246086600060405160e001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff16815260200191505060e060405180830381600087803b1515612f8d57600080fd5b6102c65a03f11515612f9e57600080fd5b50505060405180519060200180519060200180519060200180519060200180519060200180519060200180519050896000018a6020018b6040018c6080018d60a0018e60c0018f60e001878152508763ffffffff1663ffffffff168152508763ffffffff1663ffffffff168152508763ffffffff1663ffffffff168152508773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508763ffffffff1663ffffffff168152508767ffffffffffffffff1667ffffffffffffffff16815250505050505050508467ffffffffffffffff16836000015167ffffffffffffffff161415156130a157600080fd5b826040015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515156130e057600080fd5b3373ffffffffffffffffffffffffffffffffffffffff1660036000856040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561318e57600080fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff166335f097f384600001516000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff168152602001915050602060405180830381600087803b151561326757600080fd5b6102c65a03f1151561327857600080fd5b505050604051805190508061333357508073ffffffffffffffffffffffffffffffffffffffff1663a847a71c84600001516000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff1667ffffffffffffffff168152602001915050602060405180830381600087803b151561331757600080fd5b6102c65a03f1151561332857600080fd5b505050604051805190505b1561333d57600080fd5b600060036000856040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff166360c6ccb2846040015185600001516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff16815260200192505050600060405180830381600087803b151561348f57600080fd5b6102c65a03f115156134a057600080fd5b5050508373ffffffffffffffffffffffffffffffffffffffff16639248019e3385600001516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff16815260200192505050600060405180830381600087803b151561355d57600080fd5b6102c65a03f1151561356e57600080fd5b5050503373ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a35050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561363c57600080fd5b60011515600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561371f576000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600060148282829054906101000a900461ffff160392506101000a81548161ffff021916908361ffff1602179055505b50565b600260009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561379057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561380757806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61010060405190810160405280600067ffffffffffffffff168152602001600063ffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016138806138b4565b8152602001600063ffffffff168152602001600063ffffffff168152602001600063ffffffff168152602001600081525090565b6020604051908101604052806000815250905600a165627a7a723058205ed7654fd0d5acec6aa8543cf3323a9b0b0b7e5687a409c2378c014dd6886dc90029

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

000000000000000000000000abc1c404424bdf24c19a5cc5ef8f47781d18eb3e000000000000000000000000df6164efd12678bf6a7d5a1ddf73c831493f65740000000000000000000000004ba72f0f8dad13709ee28a992869e79d0fe47030

-----Decoded View---------------
Arg [0] : _dataContract (address): 0xABC1c404424BDF24C19A5cC5EF8F47781D18Eb3E
Arg [1] : _battleContract (address): 0xDf6164EfD12678bF6A7d5A1Ddf73C831493F6574
Arg [2] : _tradeContract (address): 0x4bA72F0F8DAd13709EE28a992869E79d0fE47030

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000abc1c404424bdf24c19a5cc5ef8f47781d18eb3e
Arg [1] : 000000000000000000000000df6164efd12678bf6a7d5a1ddf73c831493f6574
Arg [2] : 0000000000000000000000004ba72f0f8dad13709ee28a992869e79d0fe47030


Swarm Source

bzzr://5ed7654fd0d5acec6aa8543cf3323a9b0b0b7e5687a409c2378c014dd6886dc9

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  ]

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.