Contract 0x7dca125b1e805dc88814aed7ccc810f677d3e1db

Contract Overview

Balance:
0 Ether
Txn Hash Method
Block
From
To
Value
0xb53d659223a607f5a0e3f71873bd09bcac16411ae14e09a082c7ffa49c73f7d2Approve86571232021-05-27 5:16:0218 days 23 hrs ago0x8286804f7e979f89a8a9aa71f46bc08e0ee6f918 IN  0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether0.0000241731
0x971e7caf283b101b4627c77714534deca2ffc35fc3bb4ca1ffd2d8d19dbdc576Mint To86571162021-05-27 5:14:1718 days 23 hrs ago0x8286804f7e979f89a8a9aa71f46bc08e0ee6f918 IN  0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether0.000024111
0x8a1885be65a7e070f386f66837605801af2870495ea7f55360b8ba70e520c391Mint To86399622021-05-24 5:44:4221 days 22 hrs ago0x0b1f11d30515b035e9e92ae55d1cf3d4ce7e1189 IN  0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether0.000024111
0x781425248b66df31c94cd5b09dcfaebb24b7f4a2b62bfeed0848d74a4dc6b8efSet Approval For...85503442021-05-08 16:08:2137 days 12 hrs ago0x8fbe57f7b1017e74da6b23819c85824a5969a232 IN  0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether0.0000464131
0xe0293d6337a95ed7c835ae064698d9c625bdf68e2ad27aad946a45c30888154aSet Approval For...85472022021-05-08 3:02:2538 days 1 hr ago0x683bcf3ecc5a6e2e99ff83f3300515a584108391 IN  0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether0.0000265131
0x59381a1acbe4b4c389e797fba0ac536bbbb4f14755d6a63ef1b335f42c5736f6Set Approval For...85443792021-05-07 15:16:3038 days 13 hrs ago0x683bcf3ecc5a6e2e99ff83f3300515a584108391 IN  0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether0.0000464131
0xca7c2320c2ee6849751303070229cd4334b4ee75311ffe409abf87c7f230796bApprove83808112021-04-09 5:24:1566 days 23 hrs ago0xe734ec83b615dedd7cb2b24ddd69b3df56735d1f IN  0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether0.0000346281
0x4c41c3dbe9e7b3e312282c03577ba01d4aa90c5ca9761d0392193774e9bff516Safe Transfer Fr...83709432021-04-07 12:16:4768 days 16 hrs ago0xd0b00382c7ee6d6f8a7ef1fda07750c1d5fa68cb IN  0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether0.0000782131
0x3eed171c795a5becd572ff09ce2d3cd051c966bd8a6c5644137a125bd6500b07Set Approval For...81331542021-02-25 4:17:50110 days 14 mins ago0xe96a1b303a1eb8d04fb973eb2b291b8d591c8f72 IN  0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether0.0000451131
0x9980b3e693deca92dfe061ca7b850b8c0379b679600243b122ab05e9e0ddc002Safe Transfer Fr...81268682021-02-24 2:04:22111 days 2 hrs ago0x8a4454d469829d59b93d29e129c57ed6de61d4ce IN  0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether0.0000827131
0xb5fdad66cb13be22dbe41d719c779142bef4fa2077d332293ab942aceeafdd95Set Approval For...81266872021-02-24 1:19:07111 days 3 hrs ago0x8a4454d469829d59b93d29e129c57ed6de61d4ce IN  0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether0.0000451131
0xa17a7df6e0ce165ee12589337bb407f83a1f60d1354534aab449d70242c6065aTransfer From81266772021-02-24 1:16:36111 days 3 hrs ago0xcb10d83d8447a90bfda18b6a57376dab13270a31 IN  0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether0.0003266284
0x034469da084827539f06a4f8194a42e0a2901019c29b401d31b1805b78e1b410Set Approval For...81266492021-02-24 1:09:36111 days 3 hrs ago0xcb10d83d8447a90bfda18b6a57376dab13270a31 IN  0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether0.0000451131
0x02743eed38febdbc4d00031843cfcab8877e8a9f28900f72339597fba293678eTransfer From81266042021-02-24 0:58:21111 days 3 hrs ago0xd7383c3c94a1e2f1224ec54b06db9fae5352d375 IN  0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether0.0003266284
0xf51ffcc8aefca679bebcb64e009d1f09ea6e153e322806f6702b406aacf062f5Transfer From81172652021-02-22 10:01:24112 days 18 hrs ago0xfeaaa222c85bc1303302d73d9143e58a1b207f9f IN  0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether0.0003266284
0xb3456a6bbc77cb8dffd1426ceca6567329d4e5a5014d010a9c83afeba49f7034Transfer From80425932021-02-09 10:44:37125 days 17 hrs ago0xfeaaa222c85bc1303302d73d9143e58a1b207f9f IN  0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether0.0003266284
0xedeaf440d8ea1c0774e879e4d8c01048419adeeaf447ba3230a8d2964a976159Set Approval For...80165242021-02-04 22:02:38130 days 6 hrs ago0x39979745b166572c25b4c7e4e0939c9298efe79d IN  0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether0.0000451131
0xa8b92ce312349e90ff0f5156f35742fe8012df2f56157871247ade50a8120890Set Approval For...80159632021-02-04 19:42:22130 days 8 hrs ago0xd7383c3c94a1e2f1224ec54b06db9fae5352d375 IN  0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether0.0000451131
0xf4aeeb5c5ad131bcc98506af19fae2aaeae7d8a707f6b0ba25f52ab4033ba0f2Set Approval For...80159602021-02-04 19:41:37130 days 8 hrs ago0xd7383c3c94a1e2f1224ec54b06db9fae5352d375 IN  0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether0.0000151011
0xfaadc20ed360f6a5b7254687548639ad65647e5453a2ce73ba1eab12a00c89d4Set Approval For...80115482021-02-04 1:18:28131 days 3 hrs ago0xd7383c3c94a1e2f1224ec54b06db9fae5352d375 IN  0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether0.0000451131
0x207292e0669034236e7339844be4bd5002ba0697e165630c4e15fe03835a5bf3Set Approval For...80115462021-02-04 1:17:58131 days 3 hrs ago0xd7383c3c94a1e2f1224ec54b06db9fae5352d375 IN  0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether0.0000151011
0xe473c58a26b546eb16d2a975033711b1a6d3204356ef41512c812f1ab06855c3Set Approval For...80115402021-02-04 1:16:28131 days 3 hrs ago0xd7383c3c94a1e2f1224ec54b06db9fae5352d375 IN  0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether0.0000451131
0xf1d3653b8f6f4938a14b4513c15f78741a13511e5e88b9389092b2f20a4ca8afSet Approval For...80115102021-02-04 1:08:58131 days 3 hrs ago0xd7383c3c94a1e2f1224ec54b06db9fae5352d375 IN  0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether0.0000151011
0xa4df25ae408fd6d20ce09782d54bb4befae086817464eb4ef7c43bdf8e8d7198Set Approval For...80114752021-02-04 1:00:13131 days 3 hrs ago0x39979745b166572c25b4c7e4e0939c9298efe79d IN  0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether0.0000151011
0x8ad07f6541d1067f9de54c0164674f87777e6945817a939d6d8e171fe1b57b1bSet Approval For...79678402021-01-27 11:09:44138 days 17 hrs ago0xfeaaa222c85bc1303302d73d9143e58a1b207f9f IN  0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether0.0000451131
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x5ac9d04299ff654ea22ce6ac52ef45a62a46872813f254a4597486fd94c90f2787200112021-06-07 3:23:148 days 1 hr ago 0xed26a426e7ef2510a164c12d6ccb1572ef77dd97 0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether
0x3e63164485de2760523c3190742e570dc79a18040df1fa2c0d4c64ab94878d9f86949702021-06-02 19:01:1412 days 9 hrs ago 0x2a23a463c7d676f3c94402ea0b0450e36bf14305 0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether
0x3e63164485de2760523c3190742e570dc79a18040df1fa2c0d4c64ab94878d9f86949702021-06-02 19:01:1412 days 9 hrs ago 0x2a23a463c7d676f3c94402ea0b0450e36bf14305 0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether
0x55dc57f398c1630d084966d0a2ebca89bc8a39003a8ec1dc37fab42a37cbef7f84043052021-04-13 7:19:3262 days 21 hrs ago 0x7dca125b1e805dc88814aed7ccc810f677d3e1db 0xf57b2c51ded3a29e6891aba85459d600256cf3170 Ether
0x55dc57f398c1630d084966d0a2ebca89bc8a39003a8ec1dc37fab42a37cbef7f84043052021-04-13 7:19:3262 days 21 hrs ago 0x7f10d80f2659aaae790ab03da12be11c4e6008c3 0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether
0x6681f7ffa527908b390d4b253964347e9561a400d2ba8063d44d5df408bd7b5f84010902021-04-12 17:55:4263 days 10 hrs ago 0x7dca125b1e805dc88814aed7ccc810f677d3e1db 0xf57b2c51ded3a29e6891aba85459d600256cf3170 Ether
0x6681f7ffa527908b390d4b253964347e9561a400d2ba8063d44d5df408bd7b5f84010902021-04-12 17:55:4263 days 10 hrs ago 0x7f10d80f2659aaae790ab03da12be11c4e6008c3 0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether
0x02674c62624fe5a9442d3c55bc8c3bf08b9a28125a27f3919fd033e9e46f22df83817232021-04-09 9:12:2066 days 19 hrs ago 0x7dca125b1e805dc88814aed7ccc810f677d3e1db 0xf57b2c51ded3a29e6891aba85459d600256cf3170 Ether
0x02674c62624fe5a9442d3c55bc8c3bf08b9a28125a27f3919fd033e9e46f22df83817232021-04-09 9:12:2066 days 19 hrs ago 0x7f10d80f2659aaae790ab03da12be11c4e6008c3 0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether
0xca7c2320c2ee6849751303070229cd4334b4ee75311ffe409abf87c7f230796b83808112021-04-09 5:24:1566 days 23 hrs ago 0x7dca125b1e805dc88814aed7ccc810f677d3e1db 0xf57b2c51ded3a29e6891aba85459d600256cf3170 Ether
0x767c32b88ed014668233095a57e1ba4abd5def5a98cf2936fa5e75f3c6521daf83728742021-04-07 20:19:3468 days 8 hrs ago 0x7dca125b1e805dc88814aed7ccc810f677d3e1db 0xf57b2c51ded3a29e6891aba85459d600256cf3170 Ether
0x767c32b88ed014668233095a57e1ba4abd5def5a98cf2936fa5e75f3c6521daf83728742021-04-07 20:19:3468 days 8 hrs ago 0x7f10d80f2659aaae790ab03da12be11c4e6008c3 0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether
0x70cff30c07a8d1f22c596bf51ce47858fc8964c58d6bbe4b5af47a61bce10b5483728102021-04-07 20:03:3468 days 8 hrs ago 0x7dca125b1e805dc88814aed7ccc810f677d3e1db 0xf57b2c51ded3a29e6891aba85459d600256cf3170 Ether
0x70cff30c07a8d1f22c596bf51ce47858fc8964c58d6bbe4b5af47a61bce10b5483728102021-04-07 20:03:3468 days 8 hrs ago 0x7f10d80f2659aaae790ab03da12be11c4e6008c3 0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether
0x36df351e1f24dc08142ff88296f3c9c97dd8beafdd01729fb4587fb67a2579e983713052021-04-07 13:47:1968 days 14 hrs ago 0x7dca125b1e805dc88814aed7ccc810f677d3e1db 0xf57b2c51ded3a29e6891aba85459d600256cf3170 Ether
0x36df351e1f24dc08142ff88296f3c9c97dd8beafdd01729fb4587fb67a2579e983713052021-04-07 13:47:1968 days 14 hrs ago 0x7f10d80f2659aaae790ab03da12be11c4e6008c3 0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether
0x44a054b4f7aaec82c601640401bd79b02405fe067c18d404737a2e2424cff94883712682021-04-07 13:38:0368 days 14 hrs ago 0x7dca125b1e805dc88814aed7ccc810f677d3e1db 0xf57b2c51ded3a29e6891aba85459d600256cf3170 Ether
0x44a054b4f7aaec82c601640401bd79b02405fe067c18d404737a2e2424cff94883712682021-04-07 13:38:0368 days 14 hrs ago 0x7f10d80f2659aaae790ab03da12be11c4e6008c3 0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether
0x237f72b24ea7300c23cdc77a5e44d2352c581501f21210296d37bdeb616de08a83711602021-04-07 13:11:0368 days 15 hrs ago 0x7dca125b1e805dc88814aed7ccc810f677d3e1db 0xf57b2c51ded3a29e6891aba85459d600256cf3170 Ether
0x237f72b24ea7300c23cdc77a5e44d2352c581501f21210296d37bdeb616de08a83711602021-04-07 13:11:0368 days 15 hrs ago 0x7f10d80f2659aaae790ab03da12be11c4e6008c3 0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether
0x5e115315b7f7a4faf38e287d7b921eebc9a84a1b648040b0dabe99273b43dd0683709812021-04-07 12:26:1768 days 16 hrs ago 0x7dca125b1e805dc88814aed7ccc810f677d3e1db 0xf57b2c51ded3a29e6891aba85459d600256cf3170 Ether
0x5e115315b7f7a4faf38e287d7b921eebc9a84a1b648040b0dabe99273b43dd0683709812021-04-07 12:26:1768 days 16 hrs ago 0x7f10d80f2659aaae790ab03da12be11c4e6008c3 0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether
0x49dda01e4e7192b5b0e33de5db879734433c57794bae9b910f195a218ccb3c1183709542021-04-07 12:19:3268 days 16 hrs ago 0x7dca125b1e805dc88814aed7ccc810f677d3e1db 0xf57b2c51ded3a29e6891aba85459d600256cf3170 Ether
0x49dda01e4e7192b5b0e33de5db879734433c57794bae9b910f195a218ccb3c1183709542021-04-07 12:19:3268 days 16 hrs ago 0x7f10d80f2659aaae790ab03da12be11c4e6008c3 0x7dca125b1e805dc88814aed7ccc810f677d3e1db0 Ether
0xa77f323edbdc35a7fe9a2d772fd22ffa5e96ed1a38f3f43b9cc971fb88ee766083709082021-04-07 12:08:0268 days 16 hrs ago 0x7dca125b1e805dc88814aed7ccc810f677d3e1db 0xf57b2c51ded3a29e6891aba85459d600256cf3170 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Creature

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-11-09
*/

pragma solidity ^0.4.24;

// File: openzeppelin-solidity/contracts/introspection/ERC165.sol

/**
 * @title ERC165
 * @dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md
 */
interface ERC165 {

  /**
   * @notice Query if a contract implements an interface
   * @param _interfaceId The interface identifier, as specified in ERC-165
   * @dev Interface identification is specified in ERC-165. This function
   * uses less than 30,000 gas.
   */
  function supportsInterface(bytes4 _interfaceId)
    external
    view
    returns (bool);
}

// File: openzeppelin-solidity/contracts/token/ERC721/ERC721Basic.sol

/**
 * @title ERC721 Non-Fungible Token Standard basic interface
 * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
 */
contract ERC721Basic is ERC165 {

  bytes4 internal constant InterfaceId_ERC721 = 0x80ac58cd;
  /*
   * 0x80ac58cd ===
   *   bytes4(keccak256('balanceOf(address)')) ^
   *   bytes4(keccak256('ownerOf(uint256)')) ^
   *   bytes4(keccak256('approve(address,uint256)')) ^
   *   bytes4(keccak256('getApproved(uint256)')) ^
   *   bytes4(keccak256('setApprovalForAll(address,bool)')) ^
   *   bytes4(keccak256('isApprovedForAll(address,address)')) ^
   *   bytes4(keccak256('transferFrom(address,address,uint256)')) ^
   *   bytes4(keccak256('safeTransferFrom(address,address,uint256)')) ^
   *   bytes4(keccak256('safeTransferFrom(address,address,uint256,bytes)'))
   */

  bytes4 internal constant InterfaceId_ERC721Exists = 0x4f558e79;
  /*
   * 0x4f558e79 ===
   *   bytes4(keccak256('exists(uint256)'))
   */

  bytes4 internal constant InterfaceId_ERC721Enumerable = 0x780e9d63;
  /**
   * 0x780e9d63 ===
   *   bytes4(keccak256('totalSupply()')) ^
   *   bytes4(keccak256('tokenOfOwnerByIndex(address,uint256)')) ^
   *   bytes4(keccak256('tokenByIndex(uint256)'))
   */

  bytes4 internal constant InterfaceId_ERC721Metadata = 0x5b5e139f;
  /**
   * 0x5b5e139f ===
   *   bytes4(keccak256('name()')) ^
   *   bytes4(keccak256('symbol()')) ^
   *   bytes4(keccak256('tokenURI(uint256)'))
   */

  event Transfer(
    address indexed _from,
    address indexed _to,
    uint256 indexed _tokenId
  );
  event Approval(
    address indexed _owner,
    address indexed _approved,
    uint256 indexed _tokenId
  );
  event ApprovalForAll(
    address indexed _owner,
    address indexed _operator,
    bool _approved
  );

  function balanceOf(address _owner) public view returns (uint256 _balance);
  function ownerOf(uint256 _tokenId) public view returns (address _owner);
  function exists(uint256 _tokenId) public view returns (bool _exists);

  function approve(address _to, uint256 _tokenId) public;
  function getApproved(uint256 _tokenId)
    public view returns (address _operator);

  function setApprovalForAll(address _operator, bool _approved) public;
  function isApprovedForAll(address _owner, address _operator)
    public view returns (bool);

  function transferFrom(address _from, address _to, uint256 _tokenId) public;
  function safeTransferFrom(address _from, address _to, uint256 _tokenId)
    public;

  function safeTransferFrom(
    address _from,
    address _to,
    uint256 _tokenId,
    bytes _data
  )
    public;
}

// File: openzeppelin-solidity/contracts/token/ERC721/ERC721.sol

/**
 * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
 * @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
 */
contract ERC721Enumerable is ERC721Basic {
  function totalSupply() public view returns (uint256);
  function tokenOfOwnerByIndex(
    address _owner,
    uint256 _index
  )
    public
    view
    returns (uint256 _tokenId);

  function tokenByIndex(uint256 _index) public view returns (uint256);
}


/**
 * @title ERC-721 Non-Fungible Token Standard, optional metadata extension
 * @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
 */
contract ERC721Metadata is ERC721Basic {
  function name() external view returns (string _name);
  function symbol() external view returns (string _symbol);
  function tokenURI(uint256 _tokenId) public view returns (string);
}


/**
 * @title ERC-721 Non-Fungible Token Standard, full implementation interface
 * @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
 */
contract ERC721 is ERC721Basic, ERC721Enumerable, ERC721Metadata {
}

// File: openzeppelin-solidity/contracts/token/ERC721/ERC721Receiver.sol

/**
 * @title ERC721 token receiver interface
 * @dev Interface for any contract that wants to support safeTransfers
 * from ERC721 asset contracts.
 */
contract ERC721Receiver {
  /**
   * @dev Magic value to be returned upon successful reception of an NFT
   *  Equals to `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`,
   *  which can be also obtained as `ERC721Receiver(0).onERC721Received.selector`
   */
  bytes4 internal constant ERC721_RECEIVED = 0x150b7a02;

  /**
   * @notice Handle the receipt of an NFT
   * @dev The ERC721 smart contract calls this function on the recipient
   * after a `safetransfer`. This function MAY throw to revert and reject the
   * transfer. Return of other than the magic value MUST result in the
   * transaction being reverted.
   * Note: the contract address is always the message sender.
   * @param _operator The address which called `safeTransferFrom` function
   * @param _from The address which previously owned the token
   * @param _tokenId The NFT identifier which is being transferred
   * @param _data Additional data with no specified format
   * @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`
   */
  function onERC721Received(
    address _operator,
    address _from,
    uint256 _tokenId,
    bytes _data
  )
    public
    returns(bytes4);
}

// File: openzeppelin-solidity/contracts/math/SafeMath.sol

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

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

    c = _a * _b;
    assert(c / _a == _b);
    return c;
  }

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

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

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

// File: openzeppelin-solidity/contracts/AddressUtils.sol

/**
 * Utility library of inline functions on addresses
 */
library AddressUtils {

  /**
   * Returns whether the target address is a contract
   * @dev This function will return false if invoked during the constructor of a contract,
   * as the code is not actually created until after the constructor finishes.
   * @param _addr address to check
   * @return whether the target address is a contract
   */
  function isContract(address _addr) internal view returns (bool) {
    uint256 size;
    // XXX Currently there is no better way to check if there is a contract in an address
    // than to check the size of the code at that address.
    // See https://ethereum.stackexchange.com/a/14016/36603
    // for more details about how this works.
    // TODO Check this again before the Serenity release, because all addresses will be
    // contracts then.
    // solium-disable-next-line security/no-inline-assembly
    assembly { size := extcodesize(_addr) }
    return size > 0;
  }

}

// File: openzeppelin-solidity/contracts/introspection/SupportsInterfaceWithLookup.sol

/**
 * @title SupportsInterfaceWithLookup
 * @author Matt Condon (@shrugs)
 * @dev Implements ERC165 using a lookup table.
 */
contract SupportsInterfaceWithLookup is ERC165 {

  bytes4 public constant InterfaceId_ERC165 = 0x01ffc9a7;
  /**
   * 0x01ffc9a7 ===
   *   bytes4(keccak256('supportsInterface(bytes4)'))
   */

  /**
   * @dev a mapping of interface id to whether or not it's supported
   */
  mapping(bytes4 => bool) internal supportedInterfaces;

  /**
   * @dev A contract implementing SupportsInterfaceWithLookup
   * implement ERC165 itself
   */
  constructor()
    public
  {
    _registerInterface(InterfaceId_ERC165);
  }

  /**
   * @dev implement supportsInterface(bytes4) using a lookup table
   */
  function supportsInterface(bytes4 _interfaceId)
    external
    view
    returns (bool)
  {
    return supportedInterfaces[_interfaceId];
  }

  /**
   * @dev private method for registering an interface
   */
  function _registerInterface(bytes4 _interfaceId)
    internal
  {
    require(_interfaceId != 0xffffffff);
    supportedInterfaces[_interfaceId] = true;
  }
}

// File: openzeppelin-solidity/contracts/token/ERC721/ERC721BasicToken.sol

/**
 * @title ERC721 Non-Fungible Token Standard basic implementation
 * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
 */
contract ERC721BasicToken is SupportsInterfaceWithLookup, ERC721Basic {

  using SafeMath for uint256;
  using AddressUtils for address;

  // Equals to `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`
  // which can be also obtained as `ERC721Receiver(0).onERC721Received.selector`
  bytes4 private constant ERC721_RECEIVED = 0x150b7a02;

  // Mapping from token ID to owner
  mapping (uint256 => address) internal tokenOwner;

  // Mapping from token ID to approved address
  mapping (uint256 => address) internal tokenApprovals;

  // Mapping from owner to number of owned token
  mapping (address => uint256) internal ownedTokensCount;

  // Mapping from owner to operator approvals
  mapping (address => mapping (address => bool)) internal operatorApprovals;

  constructor()
    public
  {
    // register the supported interfaces to conform to ERC721 via ERC165
    _registerInterface(InterfaceId_ERC721);
    _registerInterface(InterfaceId_ERC721Exists);
  }

  /**
   * @dev Gets the balance of the specified address
   * @param _owner address to query the balance of
   * @return uint256 representing the amount owned by the passed address
   */
  function balanceOf(address _owner) public view returns (uint256) {
    require(_owner != address(0));
    return ownedTokensCount[_owner];
  }

  /**
   * @dev Gets the owner of the specified token ID
   * @param _tokenId uint256 ID of the token to query the owner of
   * @return owner address currently marked as the owner of the given token ID
   */
  function ownerOf(uint256 _tokenId) public view returns (address) {
    address owner = tokenOwner[_tokenId];
    require(owner != address(0));
    return owner;
  }

  /**
   * @dev Returns whether the specified token exists
   * @param _tokenId uint256 ID of the token to query the existence of
   * @return whether the token exists
   */
  function exists(uint256 _tokenId) public view returns (bool) {
    address owner = tokenOwner[_tokenId];
    return owner != address(0);
  }

  /**
   * @dev Approves another address to transfer the given token ID
   * The zero address indicates there is no approved address.
   * There can only be one approved address per token at a given time.
   * Can only be called by the token owner or an approved operator.
   * @param _to address to be approved for the given token ID
   * @param _tokenId uint256 ID of the token to be approved
   */
  function approve(address _to, uint256 _tokenId) public {
    address owner = ownerOf(_tokenId);
    require(_to != owner);
    require(msg.sender == owner || isApprovedForAll(owner, msg.sender));

    tokenApprovals[_tokenId] = _to;
    emit Approval(owner, _to, _tokenId);
  }

  /**
   * @dev Gets the approved address for a token ID, or zero if no address set
   * @param _tokenId uint256 ID of the token to query the approval of
   * @return address currently approved for the given token ID
   */
  function getApproved(uint256 _tokenId) public view returns (address) {
    return tokenApprovals[_tokenId];
  }

  /**
   * @dev Sets or unsets the approval of a given operator
   * An operator is allowed to transfer all tokens of the sender on their behalf
   * @param _to operator address to set the approval
   * @param _approved representing the status of the approval to be set
   */
  function setApprovalForAll(address _to, bool _approved) public {
    require(_to != msg.sender);
    operatorApprovals[msg.sender][_to] = _approved;
    emit ApprovalForAll(msg.sender, _to, _approved);
  }

  /**
   * @dev Tells whether an operator is approved by a given owner
   * @param _owner owner address which you want to query the approval of
   * @param _operator operator address which you want to query the approval of
   * @return bool whether the given operator is approved by the given owner
   */
  function isApprovedForAll(
    address _owner,
    address _operator
  )
    public
    view
    returns (bool)
  {
    return operatorApprovals[_owner][_operator];
  }

  /**
   * @dev Transfers the ownership of a given token ID to another address
   * Usage of this method is discouraged, use `safeTransferFrom` whenever possible
   * Requires the msg sender to be the owner, approved, or operator
   * @param _from current owner of the token
   * @param _to address to receive the ownership of the given token ID
   * @param _tokenId uint256 ID of the token to be transferred
  */
  function transferFrom(
    address _from,
    address _to,
    uint256 _tokenId
  )
    public
  {
    require(isApprovedOrOwner(msg.sender, _tokenId));
    require(_from != address(0));
    require(_to != address(0));

    clearApproval(_from, _tokenId);
    removeTokenFrom(_from, _tokenId);
    addTokenTo(_to, _tokenId);

    emit Transfer(_from, _to, _tokenId);
  }

  /**
   * @dev Safely transfers the ownership of a given token ID to another address
   * If the target address is a contract, it must implement `onERC721Received`,
   * which is called upon a safe transfer, and return the magic value
   * `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`; otherwise,
   * the transfer is reverted.
   *
   * Requires the msg sender to be the owner, approved, or operator
   * @param _from current owner of the token
   * @param _to address to receive the ownership of the given token ID
   * @param _tokenId uint256 ID of the token to be transferred
  */
  function safeTransferFrom(
    address _from,
    address _to,
    uint256 _tokenId
  )
    public
  {
    // solium-disable-next-line arg-overflow
    safeTransferFrom(_from, _to, _tokenId, "");
  }

  /**
   * @dev Safely transfers the ownership of a given token ID to another address
   * If the target address is a contract, it must implement `onERC721Received`,
   * which is called upon a safe transfer, and return the magic value
   * `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`; otherwise,
   * the transfer is reverted.
   * Requires the msg sender to be the owner, approved, or operator
   * @param _from current owner of the token
   * @param _to address to receive the ownership of the given token ID
   * @param _tokenId uint256 ID of the token to be transferred
   * @param _data bytes data to send along with a safe transfer check
   */
  function safeTransferFrom(
    address _from,
    address _to,
    uint256 _tokenId,
    bytes _data
  )
    public
  {
    transferFrom(_from, _to, _tokenId);
    // solium-disable-next-line arg-overflow
    require(checkAndCallSafeTransfer(_from, _to, _tokenId, _data));
  }

  /**
   * @dev Returns whether the given spender can transfer a given token ID
   * @param _spender address of the spender to query
   * @param _tokenId uint256 ID of the token to be transferred
   * @return bool whether the msg.sender is approved for the given token ID,
   *  is an operator of the owner, or is the owner of the token
   */
  function isApprovedOrOwner(
    address _spender,
    uint256 _tokenId
  )
    internal
    view
    returns (bool)
  {
    address owner = ownerOf(_tokenId);
    // Disable solium check because of
    // https://github.com/duaraghav8/Solium/issues/175
    // solium-disable-next-line operator-whitespace
    return (
      _spender == owner ||
      getApproved(_tokenId) == _spender ||
      isApprovedForAll(owner, _spender)
    );
  }

  /**
   * @dev Internal function to mint a new token
   * Reverts if the given token ID already exists
   * @param _to The address that will own the minted token
   * @param _tokenId uint256 ID of the token to be minted by the msg.sender
   */
  function _mint(address _to, uint256 _tokenId) internal {
    require(_to != address(0));
    addTokenTo(_to, _tokenId);
    emit Transfer(address(0), _to, _tokenId);
  }

  /**
   * @dev Internal function to burn a specific token
   * Reverts if the token does not exist
   * @param _tokenId uint256 ID of the token being burned by the msg.sender
   */
  function _burn(address _owner, uint256 _tokenId) internal {
    clearApproval(_owner, _tokenId);
    removeTokenFrom(_owner, _tokenId);
    emit Transfer(_owner, address(0), _tokenId);
  }

  /**
   * @dev Internal function to clear current approval of a given token ID
   * Reverts if the given address is not indeed the owner of the token
   * @param _owner owner of the token
   * @param _tokenId uint256 ID of the token to be transferred
   */
  function clearApproval(address _owner, uint256 _tokenId) internal {
    require(ownerOf(_tokenId) == _owner);
    if (tokenApprovals[_tokenId] != address(0)) {
      tokenApprovals[_tokenId] = address(0);
    }
  }

  /**
   * @dev Internal function to add a token ID to the list of a given address
   * @param _to address representing the new owner of the given token ID
   * @param _tokenId uint256 ID of the token to be added to the tokens list of the given address
   */
  function addTokenTo(address _to, uint256 _tokenId) internal {
    require(tokenOwner[_tokenId] == address(0));
    tokenOwner[_tokenId] = _to;
    ownedTokensCount[_to] = ownedTokensCount[_to].add(1);
  }

  /**
   * @dev Internal function to remove a token ID from the list of a given address
   * @param _from address representing the previous owner of the given token ID
   * @param _tokenId uint256 ID of the token to be removed from the tokens list of the given address
   */
  function removeTokenFrom(address _from, uint256 _tokenId) internal {
    require(ownerOf(_tokenId) == _from);
    ownedTokensCount[_from] = ownedTokensCount[_from].sub(1);
    tokenOwner[_tokenId] = address(0);
  }

  /**
   * @dev Internal function to invoke `onERC721Received` on a target address
   * The call is not executed if the target address is not a contract
   * @param _from address representing the previous owner of the given token ID
   * @param _to target address that will receive the tokens
   * @param _tokenId uint256 ID of the token to be transferred
   * @param _data bytes optional data to send along with the call
   * @return whether the call correctly returned the expected magic value
   */
  function checkAndCallSafeTransfer(
    address _from,
    address _to,
    uint256 _tokenId,
    bytes _data
  )
    internal
    returns (bool)
  {
    if (!_to.isContract()) {
      return true;
    }
    bytes4 retval = ERC721Receiver(_to).onERC721Received(
      msg.sender, _from, _tokenId, _data);
    return (retval == ERC721_RECEIVED);
  }
}

// File: openzeppelin-solidity/contracts/token/ERC721/ERC721Token.sol

/**
 * @title Full ERC721 Token
 * This implementation includes all the required and some optional functionality of the ERC721 standard
 * Moreover, it includes approve all functionality using operator terminology
 * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
 */
contract ERC721Token is SupportsInterfaceWithLookup, ERC721BasicToken, ERC721 {

  // Token name
  string internal name_;

  // Token symbol
  string internal symbol_;

  // Mapping from owner to list of owned token IDs
  mapping(address => uint256[]) internal ownedTokens;

  // Mapping from token ID to index of the owner tokens list
  mapping(uint256 => uint256) internal ownedTokensIndex;

  // Array with all token ids, used for enumeration
  uint256[] internal allTokens;

  // Mapping from token id to position in the allTokens array
  mapping(uint256 => uint256) internal allTokensIndex;

  // Optional mapping for token URIs
  mapping(uint256 => string) internal tokenURIs;

  /**
   * @dev Constructor function
   */
  constructor(string _name, string _symbol) public {
    name_ = _name;
    symbol_ = _symbol;

    // register the supported interfaces to conform to ERC721 via ERC165
    _registerInterface(InterfaceId_ERC721Enumerable);
    _registerInterface(InterfaceId_ERC721Metadata);
  }

  /**
   * @dev Gets the token name
   * @return string representing the token name
   */
  function name() external view returns (string) {
    return name_;
  }

  /**
   * @dev Gets the token symbol
   * @return string representing the token symbol
   */
  function symbol() external view returns (string) {
    return symbol_;
  }

  /**
   * @dev Returns an URI for a given token ID
   * Throws if the token ID does not exist. May return an empty string.
   * @param _tokenId uint256 ID of the token to query
   */
  function tokenURI(uint256 _tokenId) public view returns (string) {
    require(exists(_tokenId));
    return tokenURIs[_tokenId];
  }

  /**
   * @dev Gets the token ID at a given index of the tokens list of the requested owner
   * @param _owner address owning the tokens list to be accessed
   * @param _index uint256 representing the index to be accessed of the requested tokens list
   * @return uint256 token ID at the given index of the tokens list owned by the requested address
   */
  function tokenOfOwnerByIndex(
    address _owner,
    uint256 _index
  )
    public
    view
    returns (uint256)
  {
    require(_index < balanceOf(_owner));
    return ownedTokens[_owner][_index];
  }

  /**
   * @dev Gets the total amount of tokens stored by the contract
   * @return uint256 representing the total amount of tokens
   */
  function totalSupply() public view returns (uint256) {
    return allTokens.length;
  }

  /**
   * @dev Gets the token ID at a given index of all the tokens in this contract
   * Reverts if the index is greater or equal to the total number of tokens
   * @param _index uint256 representing the index to be accessed of the tokens list
   * @return uint256 token ID at the given index of the tokens list
   */
  function tokenByIndex(uint256 _index) public view returns (uint256) {
    require(_index < totalSupply());
    return allTokens[_index];
  }

  /**
   * @dev Internal function to set the token URI for a given token
   * Reverts if the token ID does not exist
   * @param _tokenId uint256 ID of the token to set its URI
   * @param _uri string URI to assign
   */
  function _setTokenURI(uint256 _tokenId, string _uri) internal {
    require(exists(_tokenId));
    tokenURIs[_tokenId] = _uri;
  }

  /**
   * @dev Internal function to add a token ID to the list of a given address
   * @param _to address representing the new owner of the given token ID
   * @param _tokenId uint256 ID of the token to be added to the tokens list of the given address
   */
  function addTokenTo(address _to, uint256 _tokenId) internal {
    super.addTokenTo(_to, _tokenId);
    uint256 length = ownedTokens[_to].length;
    ownedTokens[_to].push(_tokenId);
    ownedTokensIndex[_tokenId] = length;
  }

  /**
   * @dev Internal function to remove a token ID from the list of a given address
   * @param _from address representing the previous owner of the given token ID
   * @param _tokenId uint256 ID of the token to be removed from the tokens list of the given address
   */
  function removeTokenFrom(address _from, uint256 _tokenId) internal {
    super.removeTokenFrom(_from, _tokenId);

    // To prevent a gap in the array, we store the last token in the index of the token to delete, and
    // then delete the last slot.
    uint256 tokenIndex = ownedTokensIndex[_tokenId];
    uint256 lastTokenIndex = ownedTokens[_from].length.sub(1);
    uint256 lastToken = ownedTokens[_from][lastTokenIndex];

    ownedTokens[_from][tokenIndex] = lastToken;
    // This also deletes the contents at the last position of the array
    ownedTokens[_from].length--;

    // Note that this will handle single-element arrays. In that case, both tokenIndex and lastTokenIndex are going to
    // be zero. Then we can make sure that we will remove _tokenId from the ownedTokens list since we are first swapping
    // the lastToken to the first position, and then dropping the element placed in the last position of the list

    ownedTokensIndex[_tokenId] = 0;
    ownedTokensIndex[lastToken] = tokenIndex;
  }

  /**
   * @dev Internal function to mint a new token
   * Reverts if the given token ID already exists
   * @param _to address the beneficiary that will own the minted token
   * @param _tokenId uint256 ID of the token to be minted by the msg.sender
   */
  function _mint(address _to, uint256 _tokenId) internal {
    super._mint(_to, _tokenId);

    allTokensIndex[_tokenId] = allTokens.length;
    allTokens.push(_tokenId);
  }

  /**
   * @dev Internal function to burn a specific token
   * Reverts if the token does not exist
   * @param _owner owner of the token to burn
   * @param _tokenId uint256 ID of the token being burned by the msg.sender
   */
  function _burn(address _owner, uint256 _tokenId) internal {
    super._burn(_owner, _tokenId);

    // Clear metadata (if any)
    if (bytes(tokenURIs[_tokenId]).length != 0) {
      delete tokenURIs[_tokenId];
    }

    // Reorg all tokens array
    uint256 tokenIndex = allTokensIndex[_tokenId];
    uint256 lastTokenIndex = allTokens.length.sub(1);
    uint256 lastToken = allTokens[lastTokenIndex];

    allTokens[tokenIndex] = lastToken;
    allTokens[lastTokenIndex] = 0;

    allTokens.length--;
    allTokensIndex[_tokenId] = 0;
    allTokensIndex[lastToken] = tokenIndex;
  }

}

// File: openzeppelin-solidity/contracts/ownership/Ownable.sol

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;


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


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  constructor() public {
    owner = msg.sender;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   * @notice Renouncing to ownership will leave the contract without an owner.
   * It will not be possible to call the functions with the `onlyOwner`
   * modifier anymore.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipRenounced(owner);
    owner = address(0);
  }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function transferOwnership(address _newOwner) public onlyOwner {
    _transferOwnership(_newOwner);
  }

  /**
   * @dev Transfers control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function _transferOwnership(address _newOwner) internal {
    require(_newOwner != address(0));
    emit OwnershipTransferred(owner, _newOwner);
    owner = _newOwner;
  }
}

// File: contracts/Strings.sol

library Strings {
  // via https://github.com/oraclize/ethereum-api/blob/master/oraclizeAPI_0.5.sol
  function strConcat(string _a, string _b, string _c, string _d, string _e) internal pure returns (string) {
      bytes memory _ba = bytes(_a);
      bytes memory _bb = bytes(_b);
      bytes memory _bc = bytes(_c);
      bytes memory _bd = bytes(_d);
      bytes memory _be = bytes(_e);
      string memory abcde = new string(_ba.length + _bb.length + _bc.length + _bd.length + _be.length);
      bytes memory babcde = bytes(abcde);
      uint k = 0;
      for (uint i = 0; i < _ba.length; i++) babcde[k++] = _ba[i];
      for (i = 0; i < _bb.length; i++) babcde[k++] = _bb[i];
      for (i = 0; i < _bc.length; i++) babcde[k++] = _bc[i];
      for (i = 0; i < _bd.length; i++) babcde[k++] = _bd[i];
      for (i = 0; i < _be.length; i++) babcde[k++] = _be[i];
      return string(babcde);
    }

    function strConcat(string _a, string _b, string _c, string _d) internal pure returns (string) {
        return strConcat(_a, _b, _c, _d, "");
    }

    function strConcat(string _a, string _b, string _c) internal pure returns (string) {
        return strConcat(_a, _b, _c, "", "");
    }

    function strConcat(string _a, string _b) internal pure returns (string) {
        return strConcat(_a, _b, "", "", "");
    }

    function uint2str(uint i) internal pure returns (string) {
        if (i == 0) return "0";
        uint j = i;
        uint len;
        while (j != 0){
            len++;
            j /= 10;
        }
        bytes memory bstr = new bytes(len);
        uint k = len - 1;
        while (i != 0){
            bstr[k--] = byte(48 + i % 10);
            i /= 10;
        }
        return string(bstr);
    }
}

// File: contracts/TradeableERC721Token.sol

contract OwnableDelegateProxy { }

contract ProxyRegistry {
    mapping(address => OwnableDelegateProxy) public proxies;
}

/**
 * @title TradeableERC721Token
 * TradeableERC721Token - ERC721 contract that whitelists a trading address, and has minting functionality.
 */
contract TradeableERC721Token is ERC721Token, Ownable {
  using Strings for string;

  address proxyRegistryAddress;

  constructor(string _name, string _symbol, address _proxyRegistryAddress) ERC721Token(_name, _symbol) public {
    proxyRegistryAddress = _proxyRegistryAddress;
  }

  /**
    * @dev Mints a token to an address with a tokenURI.
    * @param _to address of the future owner of the token
    */
  function mintTo(address _to) public onlyOwner {
    uint256 newTokenId = _getNextTokenId();
    _mint(_to, newTokenId);
  }

  /**
    * @dev calculates the next token ID based on totalSupply
    * @return uint256 for the next token ID
    */
  function _getNextTokenId() private view returns (uint256) {
    return totalSupply().add(1);
  }

  function baseTokenURI() public view returns (string) {
    return "";
  }

  function tokenURI(uint256 _tokenId) public view returns (string) {
    return Strings.strConcat(
        baseTokenURI(),
        Strings.uint2str(_tokenId)
    );
  }

  /**
   * Override isApprovedForAll to whitelist user's OpenSea proxy accounts to enable gas-less listings.
   */
  function isApprovedForAll(
    address owner,
    address operator
  )
    public
    view
    returns (bool)
  {
    // Whitelist OpenSea proxy contract for easy trading.
    ProxyRegistry proxyRegistry = ProxyRegistry(proxyRegistryAddress);
    if (proxyRegistry.proxies(owner) == operator) {
        return true;
    }

    return super.isApprovedForAll(owner, operator);
  }
}

// File: contracts/Creature.sol

/**
 * @title Creature
 * Creature - a contract for my non-fungible creatures.
 */
contract Creature is TradeableERC721Token {
  constructor(address _proxyRegistryAddress) TradeableERC721Token("Creature", "OSC", _proxyRegistryAddress) public {  }

  function baseTokenURI() public view returns (string) {
    return "https://opensea-creatures-api.herokuapp.com/api/creature/";
  }
}

Contract ABI

[{"constant":true,"inputs":[{"name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"name":"","type":"address"}],"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":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"InterfaceId_ERC165","outputs":[{"name":"","type":"bytes4"}],"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":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"exists","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"mintTo","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":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"baseTokenURI","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_proxyRegistryAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":true,"name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_approved","type":"address"},{"indexed":true,"name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_operator","type":"address"},{"indexed":false,"name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"}]

60806040523480156200001157600080fd5b5060405160208062002c35833981018060405281019080805190602001909291905050506040805190810160405280600881526020017f43726561747572650000000000000000000000000000000000000000000000008152506040805190810160405280600381526020017f4f53430000000000000000000000000000000000000000000000000000000000815250828282620000e16301ffc9a77c01000000000000000000000000000000000000000000000000000000000262000295640100000000026401000000009004565b6200011e6380ac58cd7c01000000000000000000000000000000000000000000000000000000000262000295640100000000026401000000009004565b6200015b634f558e797c01000000000000000000000000000000000000000000000000000000000262000295640100000000026401000000009004565b81600590805190602001906200017392919062000353565b5080600690805190602001906200018c92919062000353565b50620001ca63780e9d637c01000000000000000000000000000000000000000000000000000000000262000295640100000000026401000000009004565b62000207635b5e139f7c01000000000000000000000000000000000000000000000000000000000262000295640100000000026401000000009004565b505033600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000402565b63ffffffff7c010000000000000000000000000000000000000000000000000000000002817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614151515620002e757600080fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200039657805160ff1916838001178555620003c7565b82800160010185558215620003c7579182015b82811115620003c6578251825591602001919060010190620003a9565b5b509050620003d69190620003da565b5090565b620003ff91905b80821115620003fb576000816000905550600101620003e1565b5090565b90565b61282380620004126000396000f300608060405260043610610133576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a71461013857806306fdde031461019c578063081812fc1461022c578063095ea7b31461029957806318160ddd146102e657806319fa8f501461031157806323b872dd1461037a5780632f745c59146103e757806342842e0e146104485780634f558e79146104b55780634f6ccce7146104fa5780636352211e1461053b57806370a08231146105a8578063715018a6146105ff578063755edd17146106165780638da5cb5b1461065957806395d89b41146106b0578063a22cb46514610740578063b88d4fde1461078f578063c87b56dd14610842578063d547cfb7146108e8578063e985e9c514610978578063f2fde38b146109f3575b600080fd5b34801561014457600080fd5b5061018260048036038101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610a36565b604051808215151515815260200191505060405180910390f35b3480156101a857600080fd5b506101b1610a9d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f15780820151818401526020810190506101d6565b50505050905090810190601f16801561021e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023857600080fd5b5061025760048036038101908080359060200190929190505050610b3f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a557600080fd5b506102e4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b7c565b005b3480156102f257600080fd5b506102fb610cc1565b6040518082815260200191505060405180910390f35b34801561031d57600080fd5b50610326610cce565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34801561038657600080fd5b506103e5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cf5565b005b3480156103f357600080fd5b50610432600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e00565b6040518082815260200191505060405180910390f35b34801561045457600080fd5b506104b3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e77565b005b3480156104c157600080fd5b506104e060048036038101908080359060200190929190505050610e98565b604051808215151515815260200191505060405180910390f35b34801561050657600080fd5b5061052560048036038101908080359060200190929190505050610f0a565b6040518082815260200191505060405180910390f35b34801561054757600080fd5b5061056660048036038101908080359060200190929190505050610f42565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105b457600080fd5b506105e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fc0565b6040518082815260200191505060405180910390f35b34801561060b57600080fd5b50610614611044565b005b34801561062257600080fd5b50610657600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611149565b005b34801561066557600080fd5b5061066e6111bf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106bc57600080fd5b506106c56111e5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107055780820151818401526020810190506106ea565b50505050905090810190601f1680156107325780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561074c57600080fd5b5061078d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611287565b005b34801561079b57600080fd5b50610840600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506113c3565b005b34801561084e57600080fd5b5061086d600480360381019080803590602001909291905050506113eb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108ad578082015181840152602081019050610892565b50505050905090810190601f1680156108da5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108f457600080fd5b506108fd61140d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561093d578082015181840152602081019050610922565b50505050905090810190601f16801561096a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561098457600080fd5b506109d9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611470565b604051808215151515815260200191505060405180910390f35b3480156109ff57600080fd5b50610a34600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115be565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b355780601f10610b0a57610100808354040283529160200191610b35565b820191906000526020600020905b815481529060010190602001808311610b1857829003601f168201915b5050505050905090565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610b8782610f42565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610bc457600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610c045750610c038133611470565b5b1515610c0f57600080fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000600980549050905090565b6301ffc9a77c01000000000000000000000000000000000000000000000000000000000281565b610cff3382611626565b1515610d0a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610d4657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610d8257600080fd5b610d8c83826116bb565b610d9683826117be565b610da0828261197a565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000610e0b83610fc0565b82101515610e1857600080fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481101515610e6457fe5b9060005260206000200154905092915050565b610e9383838360206040519081016040528060008152506113c3565b505050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b6000610f14610cc1565b82101515610f2157600080fd5b600982815481101515610f3057fe5b90600052602060002001549050919050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610fb757600080fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610ffd57600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110a057600080fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111a757600080fd5b6111af611a51565b90506111bb8282611a73565b5050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060068054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561127d5780601f106112525761010080835404028352916020019161127d565b820191906000526020600020905b81548152906001019060200180831161126057829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156112c257600080fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6113ce848484610cf5565b6113da84848484611aca565b15156113e557600080fd5b50505050565b60606114066113f861140d565b61140184611cec565b611e43565b9050919050565b60608060405190810160405280603981526020017f68747470733a2f2f6f70656e7365612d6372656174757265732d6170692e686581526020017f726f6b756170702e636f6d2f6170692f63726561747572652f00000000000000815250905090565b600080600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663c4552791866040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561154a57600080fd5b505af115801561155e573d6000803e3d6000fd5b505050506040513d602081101561157457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614156115aa57600191506115b7565b6115b48484611e8a565b91505b5092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561161a57600080fd5b61162381611f1e565b50565b60008061163283610f42565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806116a157508373ffffffffffffffffffffffffffffffffffffffff1661168984610b3f565b73ffffffffffffffffffffffffffffffffffffffff16145b806116b257506116b18185611470565b5b91505092915050565b8173ffffffffffffffffffffffffffffffffffffffff166116db82610f42565b73ffffffffffffffffffffffffffffffffffffffff161415156116fd57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156117ba5760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b60008060006117cd858561201a565b600860008581526020019081526020016000205492506118396001600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905061214990919063ffffffff16565b9150600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110151561188757fe5b9060005260206000200154905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811015156118e157fe5b9060005260206000200181905550600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548091906001900361194191906127a6565b50600060086000868152602001908152602001600020819055508260086000838152602001908152602001600020819055505050505050565b60006119868383612162565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020829080600181540180825580915050906001820390600052602060002001600090919290919091505550806008600084815260200190815260200160002081905550505050565b6000611a6e6001611a60610cc1565b6122bc90919063ffffffff16565b905090565b611a7d82826122d8565b600980549050600a60008381526020019081526020016000208190555060098190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b600080611aec8573ffffffffffffffffffffffffffffffffffffffff1661237e565b1515611afb5760019150611ce3565b8473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611bf0578082015181840152602081019050611bd5565b50505050905090810190601f168015611c1d5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611c3f57600080fd5b505af1158015611c53573d6000803e3d6000fd5b505050506040513d6020811015611c6957600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505b50949350505050565b60606000806060600080861415611d3a576040805190810160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509450611e3a565b8593505b600084141515611d64578280600101935050600a84811515611d5c57fe5b049350611d3e565b826040519080825280601f01601f191660200182016040528015611d975781602001602082028038833980820191505090505b5091506001830390505b600086141515611e3657600a86811515611db757fe5b066030017f010000000000000000000000000000000000000000000000000000000000000002828280600190039350815181101515611df257fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a86811515611e2e57fe5b049550611da1565b8194505b50505050919050565b6060611e828383602060405190810160405280600081525060206040519081016040528060008152506020604051908101604052806000815250612391565b905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611f5a57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8173ffffffffffffffffffffffffffffffffffffffff1661203a82610f42565b73ffffffffffffffffffffffffffffffffffffffff1614151561205c57600080fd5b6120af6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461214990919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600082821115151561215757fe5b818303905092915050565b600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156121d057600080fd5b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506122756001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122bc90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600081830190508281101515156122cf57fe5b80905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561231457600080fd5b61231e828261197a565b808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b6060806060806060806060806000808e98508d97508c96508b95508a94508451865188518a518c51010101016040519080825280601f01601f1916602001820160405280156123ef5781602001602082028038833980820191505090505b50935083925060009150600090505b88518110156124b157888181518110151561241557fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838380600101945081518110151561247457fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506123fe565b600090505b87518110156125695787818151811015156124cd57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838380600101945081518110151561252c57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506124b6565b600090505b865181101561262157868181518110151561258557fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283838060010194508151811015156125e457fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505061256e565b600090505b85518110156126d957858181518110151561263d57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838380600101945081518110151561269c57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050612626565b600090505b84518110156127915784818151811015156126f557fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838380600101945081518110151561275457fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506126de565b82995050505050505050505095945050505050565b8154818355818111156127cd578183600052602060002091820191016127cc91906127d2565b5b505050565b6127f491905b808211156127f05760008160009055506001016127d8565b5090565b905600a165627a7a723058205d9b55bb07517c266793d7e58e7c4ae0de49d1fc15bb678131f245ea3a1768bc0029000000000000000000000000f57b2c51ded3a29e6891aba85459d600256cf317

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

000000000000000000000000f57b2c51ded3a29e6891aba85459d600256cf317

-----Decoded View---------------
Arg [0] : _proxyRegistryAddress (address): 0xf57b2c51ded3a29e6891aba85459d600256cf317

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


Swarm Source

bzzr://5d9b55bb07517c266793d7e58e7c4ae0de49d1fc15bb678131f245ea3a1768bc
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading