contract LootProxy is Proxy {
  address immutable _impl;

  string private _name;
  string private _symbol;
  uint private _slot2;
  uint private _slot3;
  uint private _slot4;
  uint private _slot5;
  uint private _slot6;
  uint private _slot7;
  uint private _slot8;
  uint private _slot9;
  uint private _slot10;
  address private _owner;

  /**
    * @dev Converts a `uint256` to its ASCII `string` decimal representation.
    */
  function toString(uint256 value) internal pure returns (string memory) {
    // Inspired by OraclizeAPI's implementation - MIT licence
    // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

    if (value == 0) {
        return "0";
    }
    uint256 temp = value;
    uint256 digits;
    while (temp != 0) {
        digits++;
        temp /= 10;
    }
    bytes memory buffer = new bytes(digits);
    while (value != 0) {
        digits -= 1;
        buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
        value /= 10;
    }
    return string(buffer);
  }

  constructor(address impl) {
    _impl = impl;
    _name = "Loot TH";
    _symbol = "LTH";
    _owner = msg.sender;
  }

  function getWeapon(uint256) external view returns (string memory) {
    _call();
  }
  
  function getChest(uint256) external view returns (string memory) {
    _call();
  }
  
  function getHead(uint256) external view returns (string memory) {
    _call();
  }
  
  function getWaist(uint256) external view returns (string memory) {
    _call();
  }

  function getFoot(uint256) external view returns (string memory) {
    _call();
  }
  
  function getHand(uint256) external view returns (string memory) {
    _call();
  }
  
  function getNeck(uint256) external view returns (string memory) {
    _call();
  }
  
  function getRing(uint256) external view returns (string memory) {
    _call();
  }

  function tokenURI(uint256 tokenId) external pure returns (string memory) {
    return string(abi.encodePacked("https://bafybeifoioqfcuvapzl3xzsvux3wdcwkt7gylvak2umggs4kdcqsmqt2ke.ipfs.cf-ipfs.com/", toString(tokenId)));
  }

  function contractURI() external pure returns (string memory) {
    return "https://bafybeiaf3jjrm57bz62p6cebotln3ckgdyj7b322sl2gul27rcp4n5p2ha.ipfs.cf-ipfs.com/";
  }

  function _implementation() public view override returns (address) {
    return _impl;
  }

  function claim(uint256) external {
    _fallback();
  }
}
function toString(uint256 value) internal pure returns (string memory) {
  // Inspired by OraclizeAPI's implementation - MIT licence
  // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

  if (value == 0) {
      return "0";
  }
  uint256 temp = value;
  uint256 digits;
  while (temp != 0) {
      digits++;
      temp /= 10;
  }
  bytes memory buffer = new bytes(digits);
  while (value != 0) {
      digits -= 1;
      buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
      value /= 10;
  }
  return string(buffer);
}

/**
 * @dev Converts a `uint256` to its ASCII `string` decimal representation.
 */