code: @Nullable
    public static Fingerprint parse(String input) {
      if (input == null) {
        return null;
      }
      if (Constants.INVALID_UFS_FINGERPRINT.equals(input)) {
        return new Fingerprint(Collections.emptyMap());
      }
      Map<String, String> kv = Splitter.on(TAGDELIMTER).trimResults().omitEmptyStrings()
              .withKeyValueSeparator(KVDELIMTER).split(input);
      Map<Tag, String> tagMap = new HashMap<>();
  
      for (Map.Entry<String, String> entry : kv.entrySet()) {
        tagMap.put(Tag.valueOf(entry.getKey()), entry.getValue());
      }
  
      // Verify required tags
      for (Tag tag : REQUIRED_TAGS) {
        if (!tagMap.containsKey(tag)) {
          return null;
        }
      }
  
      return new Fingerprint(tagMap);
    }
docs: Parses the input string and returns the fingerprint object.
  
  @param input the string to parse
  @return the parsed fingerprint object, or null if parsing failed