content: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // NO CHECKED-IN PROTOBUF GENCODE
  // source: messages.proto
  // Protobuf Java Version: 4.28.2
  
  package finsky.protos;
  
  /**
   * Protobuf type {@code finsky.protos.DeviceConfigurationProto}
   */
  public  final class DeviceConfigurationProto extends
      com.google.protobuf.GeneratedMessageLite<
          DeviceConfigurationProto, DeviceConfigurationProto.Builder> implements
      // @@protoc_insertion_point(message_implements:finsky.protos.DeviceConfigurationProto)
      DeviceConfigurationProtoOrBuilder {
    private DeviceConfigurationProto() {
      systemSharedLibrary_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
      systemAvailableFeature_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
      nativePlatform_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
      systemSupportedLocale_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
      glExtension_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
      maxApkDownloadSizeMb_ = 50;
      totalMemoryBytes_ = 8354971648L;
      maxNumOfCPUCores_ = 8;
      deviceFeature_ = emptyProtobufList();
      unknown30_ = 4;
    }
    private int bitField0_;
    public static final int TOUCHSCREEN_FIELD_NUMBER = 1;
    private int touchScreen_;
    /**
     * <code>optional int32 touchScreen = 1;</code>
     * @return Whether the touchScreen field is set.
     */
    @java.lang.Override
    public boolean hasTouchScreen() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional int32 touchScreen = 1;</code>
     * @return The touchScreen.
     */
    @java.lang.Override
    public int getTouchScreen() {
      return touchScreen_;
    }
    /**
     * <code>optional int32 touchScreen = 1;</code>
     * @param value The touchScreen to set.
     */
    private void setTouchScreen(int value) {
      bitField0_ |= 0x00000001;
      touchScreen_ = value;
    }
    /**
     * <code>optional int32 touchScreen = 1;</code>
     */
    private void clearTouchScreen() {
      bitField0_ = (bitField0_ & ~0x00000001);
      touchScreen_ = 0;
    }
  
    public static final int KEYBOARD_FIELD_NUMBER = 2;
    private int keyboard_;
    /**
     * <code>optional int32 keyboard = 2;</code>
     * @return Whether the keyboard field is set.
     */
    @java.lang.Override
    public boolean hasKeyboard() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional int32 keyboard = 2;</code>
     * @return The keyboard.
     */
    @java.lang.Override
    public int getKeyboard() {
      return keyboard_;
    }
    /**
     * <code>optional int32 keyboard = 2;</code>
     * @param value The keyboard to set.
     */
    private void setKeyboard(int value) {
      bitField0_ |= 0x00000002;
      keyboard_ = value;
    }
    /**
     * <code>optional int32 keyboard = 2;</code>
     */
    private void clearKeyboard() {
      bitField0_ = (bitField0_ & ~0x00000002);
      keyboard_ = 0;
    }
  
    public static final int NAVIGATION_FIELD_NUMBER = 3;
    private int navigation_;
    /**
     * <code>optional int32 navigation = 3;</code>
     * @return Whether the navigation field is set.
     */
    @java.lang.Override
    public boolean hasNavigation() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional int32 navigation = 3;</code>
     * @return The navigation.
     */
    @java.lang.Override
    public int getNavigation() {
      return navigation_;
    }
    /**
     * <code>optional int32 navigation = 3;</code>
     * @param value The navigation to set.
     */
    private void setNavigation(int value) {
      bitField0_ |= 0x00000004;
      navigation_ = value;
    }
    /**
     * <code>optional int32 navigation = 3;</code>
     */
    private void clearNavigation() {
      bitField0_ = (bitField0_ & ~0x00000004);
      navigation_ = 0;
    }
  
    public static final int SCREENLAYOUT_FIELD_NUMBER = 4;
    private int screenLayout_;
    /**
     * <code>optional int32 screenLayout = 4;</code>
     * @return Whether the screenLayout field is set.
     */
    @java.lang.Override
    public boolean hasScreenLayout() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional int32 screenLayout = 4;</code>
     * @return The screenLayout.
     */
    @java.lang.Override
    public int getScreenLayout() {
      return screenLayout_;
    }
    /**
     * <code>optional int32 screenLayout = 4;</code>
     * @param value The screenLayout to set.
     */
    private void setScreenLayout(int value) {
      bitField0_ |= 0x00000008;
      screenLayout_ = value;
    }
    /**
     * <code>optional int32 screenLayout = 4;</code>
     */
    private void clearScreenLayout() {
      bitField0_ = (bitField0_ & ~0x00000008);
      screenLayout_ = 0;
    }
  
    public static final int HASHARDKEYBOARD_FIELD_NUMBER = 5;
    private boolean hasHardKeyboard_;
    /**
     * <code>optional bool hasHardKeyboard = 5;</code>
     * @return Whether the hasHardKeyboard field is set.
     */
    @java.lang.Override
    public boolean hasHasHardKeyboard() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>optional bool hasHardKeyboard = 5;</code>
     * @return The hasHardKeyboard.
     */
    @java.lang.Override
    public boolean getHasHardKeyboard() {
      return hasHardKeyboard_;
    }
    /**
     * <code>optional bool hasHardKeyboard = 5;</code>
     * @param value The hasHardKeyboard to set.
     */
    private void setHasHardKeyboard(boolean value) {
      bitField0_ |= 0x00000010;
      hasHardKeyboard_ = value;
    }
    /**
     * <code>optional bool hasHardKeyboard = 5;</code>
     */
    private void clearHasHardKeyboard() {
      bitField0_ = (bitField0_ & ~0x00000010);
      hasHardKeyboard_ = false;
    }
  
    public static final int HASFIVEWAYNAVIGATION_FIELD_NUMBER = 6;
    private boolean hasFiveWayNavigation_;
    /**
     * <code>optional bool hasFiveWayNavigation = 6;</code>
     * @return Whether the hasFiveWayNavigation field is set.
     */
    @java.lang.Override
    public boolean hasHasFiveWayNavigation() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <code>optional bool hasFiveWayNavigation = 6;</code>
     * @return The hasFiveWayNavigation.
     */
    @java.lang.Override
    public boolean getHasFiveWayNavigation() {
      return hasFiveWayNavigation_;
    }
    /**
     * <code>optional bool hasFiveWayNavigation = 6;</code>
     * @param value The hasFiveWayNavigation to set.
     */
    private void setHasFiveWayNavigation(boolean value) {
      bitField0_ |= 0x00000020;
      hasFiveWayNavigation_ = value;
    }
    /**
     * <code>optional bool hasFiveWayNavigation = 6;</code>
     */
    private void clearHasFiveWayNavigation() {
      bitField0_ = (bitField0_ & ~0x00000020);
      hasFiveWayNavigation_ = false;
    }
  
    public static final int SCREENDENSITY_FIELD_NUMBER = 7;
    private int screenDensity_;
    /**
     * <code>optional int32 screenDensity = 7;</code>
     * @return Whether the screenDensity field is set.
     */
    @java.lang.Override
    public boolean hasScreenDensity() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <code>optional int32 screenDensity = 7;</code>
     * @return The screenDensity.
     */
    @java.lang.Override
    public int getScreenDensity() {
      return screenDensity_;
    }
    /**
     * <code>optional int32 screenDensity = 7;</code>
     * @param value The screenDensity to set.
     */
    private void setScreenDensity(int value) {
      bitField0_ |= 0x00000040;
      screenDensity_ = value;
    }
    /**
     * <code>optional int32 screenDensity = 7;</code>
     */
    private void clearScreenDensity() {
      bitField0_ = (bitField0_ & ~0x00000040);
      screenDensity_ = 0;
    }
  
    public static final int GLESVERSION_FIELD_NUMBER = 8;
    private int glEsVersion_;
    /**
     * <code>optional int32 glEsVersion = 8;</code>
     * @return Whether the glEsVersion field is set.
     */
    @java.lang.Override
    public boolean hasGlEsVersion() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <code>optional int32 glEsVersion = 8;</code>
     * @return The glEsVersion.
     */
    @java.lang.Override
    public int getGlEsVersion() {
      return glEsVersion_;
    }
    /**
     * <code>optional int32 glEsVersion = 8;</code>
     * @param value The glEsVersion to set.
     */
    private void setGlEsVersion(int value) {
      bitField0_ |= 0x00000080;
      glEsVersion_ = value;
    }
    /**
     * <code>optional int32 glEsVersion = 8;</code>
     */
    private void clearGlEsVersion() {
      bitField0_ = (bitField0_ & ~0x00000080);
      glEsVersion_ = 0;
    }
  
    public static final int SYSTEMSHAREDLIBRARY_FIELD_NUMBER = 9;
    private com.google.protobuf.Internal.ProtobufList<java.lang.String> systemSharedLibrary_;
    /**
     * <code>repeated string systemSharedLibrary = 9;</code>
     * @return A list containing the systemSharedLibrary.
     */
    @java.lang.Override
    public java.util.List<java.lang.String> getSystemSharedLibraryList() {
      return systemSharedLibrary_;
    }
    /**
     * <code>repeated string systemSharedLibrary = 9;</code>
     * @return The count of systemSharedLibrary.
     */
    @java.lang.Override
    public int getSystemSharedLibraryCount() {
      return systemSharedLibrary_.size();
    }
    /**
     * <code>repeated string systemSharedLibrary = 9;</code>
     * @param index The index of the element to return.
     * @return The systemSharedLibrary at the given index.
     */
    @java.lang.Override
    public java.lang.String getSystemSharedLibrary(int index) {
      return systemSharedLibrary_.get(index);
    }
    /**
     * <code>repeated string systemSharedLibrary = 9;</code>
     * @param index The index of the value to return.
     * @return The bytes of the systemSharedLibrary at the given index.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSystemSharedLibraryBytes(int index) {
      return com.google.protobuf.ByteString.copyFromUtf8(
          systemSharedLibrary_.get(index));
    }
    private void ensureSystemSharedLibraryIsMutable() {
      com.google.protobuf.Internal.ProtobufList<java.lang.String> tmp =
          systemSharedLibrary_;  if (!tmp.isModifiable()) {
        systemSharedLibrary_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }
    /**
     * <code>repeated string systemSharedLibrary = 9;</code>
     * @param index The index to set the value at.
     * @param value The systemSharedLibrary to set.
     */
    private void setSystemSharedLibrary(
        int index, java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
    ensureSystemSharedLibraryIsMutable();
      systemSharedLibrary_.set(index, value);
    }
    /**
     * <code>repeated string systemSharedLibrary = 9;</code>
     * @param value The systemSharedLibrary to add.
     */
    private void addSystemSharedLibrary(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
    ensureSystemSharedLibraryIsMutable();
      systemSharedLibrary_.add(value);
    }
    /**
     * <code>repeated string systemSharedLibrary = 9;</code>
     * @param values The systemSharedLibrary to add.
     */
    private void addAllSystemSharedLibrary(
        java.lang.Iterable<java.lang.String> values) {
      ensureSystemSharedLibraryIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, systemSharedLibrary_);
    }
    /**
     * <code>repeated string systemSharedLibrary = 9;</code>
     */
    private void clearSystemSharedLibrary() {
      systemSharedLibrary_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
    }
    /**
     * <code>repeated string systemSharedLibrary = 9;</code>
     * @param value The bytes of the systemSharedLibrary to add.
     */
    private void addSystemSharedLibraryBytes(
        com.google.protobuf.ByteString value) {
      ensureSystemSharedLibraryIsMutable();
      systemSharedLibrary_.add(value.toStringUtf8());
    }
  
    public static final int SYSTEMAVAILABLEFEATURE_FIELD_NUMBER = 10;
    private com.google.protobuf.Internal.ProtobufList<java.lang.String> systemAvailableFeature_;
    /**
     * <code>repeated string systemAvailableFeature = 10;</code>
     * @return A list containing the systemAvailableFeature.
     */
    @java.lang.Override
    public java.util.List<java.lang.String> getSystemAvailableFeatureList() {
      return systemAvailableFeature_;
    }
    /**
     * <code>repeated string systemAvailableFeature = 10;</code>
     * @return The count of systemAvailableFeature.
     */
    @java.lang.Override
    public int getSystemAvailableFeatureCount() {
      return systemAvailableFeature_.size();
    }
    /**
     * <code>repeated string systemAvailableFeature = 10;</code>
     * @param index The index of the element to return.
     * @return The systemAvailableFeature at the given index.
     */
    @java.lang.Override
    public java.lang.String getSystemAvailableFeature(int index) {
      return systemAvailableFeature_.get(index);
    }
    /**
     * <code>repeated string systemAvailableFeature = 10;</code>
     * @param index The index of the value to return.
     * @return The bytes of the systemAvailableFeature at the given index.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSystemAvailableFeatureBytes(int index) {
      return com.google.protobuf.ByteString.copyFromUtf8(
          systemAvailableFeature_.get(index));
    }
    private void ensureSystemAvailableFeatureIsMutable() {
      com.google.protobuf.Internal.ProtobufList<java.lang.String> tmp =
          systemAvailableFeature_;  if (!tmp.isModifiable()) {
        systemAvailableFeature_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }
    /**
     * <code>repeated string systemAvailableFeature = 10;</code>
     * @param index The index to set the value at.
     * @param value The systemAvailableFeature to set.
     */
    private void setSystemAvailableFeature(
        int index, java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
    ensureSystemAvailableFeatureIsMutable();
      systemAvailableFeature_.set(index, value);
    }
    /**
     * <code>repeated string systemAvailableFeature = 10;</code>
     * @param value The systemAvailableFeature to add.
     */
    private void addSystemAvailableFeature(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
    ensureSystemAvailableFeatureIsMutable();
      systemAvailableFeature_.add(value);
    }
    /**
     * <code>repeated string systemAvailableFeature = 10;</code>
     * @param values The systemAvailableFeature to add.
     */
    private void addAllSystemAvailableFeature(
        java.lang.Iterable<java.lang.String> values) {
      ensureSystemAvailableFeatureIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, systemAvailableFeature_);
    }
    /**
     * <code>repeated string systemAvailableFeature = 10;</code>
     */
    private void clearSystemAvailableFeature() {
      systemAvailableFeature_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
    }
    /**
     * <code>repeated string systemAvailableFeature = 10;</code>
     * @param value The bytes of the systemAvailableFeature to add.
     */
    private void addSystemAvailableFeatureBytes(
        com.google.protobuf.ByteString value) {
      ensureSystemAvailableFeatureIsMutable();
      systemAvailableFeature_.add(value.toStringUtf8());
    }
  
    public static final int NATIVEPLATFORM_FIELD_NUMBER = 11;
    private com.google.protobuf.Internal.ProtobufList<java.lang.String> nativePlatform_;
    /**
     * <code>repeated string nativePlatform = 11;</code>
     * @return A list containing the nativePlatform.
     */
    @java.lang.Override
    public java.util.List<java.lang.String> getNativePlatformList() {
      return nativePlatform_;
    }
    /**
     * <code>repeated string nativePlatform = 11;</code>
     * @return The count of nativePlatform.
     */
    @java.lang.Override
    public int getNativePlatformCount() {
      return nativePlatform_.size();
    }
    /**
     * <code>repeated string nativePlatform = 11;</code>
     * @param index The index of the element to return.
     * @return The nativePlatform at the given index.
     */
    @java.lang.Override
    public java.lang.String getNativePlatform(int index) {
      return nativePlatform_.get(index);
    }
    /**
     * <code>repeated string nativePlatform = 11;</code>
     * @param index The index of the value to return.
     * @return The bytes of the nativePlatform at the given index.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNativePlatformBytes(int index) {
      return com.google.protobuf.ByteString.copyFromUtf8(
          nativePlatform_.get(index));
    }
    private void ensureNativePlatformIsMutable() {
      com.google.protobuf.Internal.ProtobufList<java.lang.String> tmp =
          nativePlatform_;  if (!tmp.isModifiable()) {
        nativePlatform_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }
    /**
     * <code>repeated string nativePlatform = 11;</code>
     * @param index The index to set the value at.
     * @param value The nativePlatform to set.
     */
    private void setNativePlatform(
        int index, java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
    ensureNativePlatformIsMutable();
      nativePlatform_.set(index, value);
    }
    /**
     * <code>repeated string nativePlatform = 11;</code>
     * @param value The nativePlatform to add.
     */
    private void addNativePlatform(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
    ensureNativePlatformIsMutable();
      nativePlatform_.add(value);
    }
    /**
     * <code>repeated string nativePlatform = 11;</code>
     * @param values The nativePlatform to add.
     */
    private void addAllNativePlatform(
        java.lang.Iterable<java.lang.String> values) {
      ensureNativePlatformIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, nativePlatform_);
    }
    /**
     * <code>repeated string nativePlatform = 11;</code>
     */
    private void clearNativePlatform() {
      nativePlatform_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
    }
    /**
     * <code>repeated string nativePlatform = 11;</code>
     * @param value The bytes of the nativePlatform to add.
     */
    private void addNativePlatformBytes(
        com.google.protobuf.ByteString value) {
      ensureNativePlatformIsMutable();
      nativePlatform_.add(value.toStringUtf8());
    }
  
    public static final int SCREENWIDTH_FIELD_NUMBER = 12;
    private int screenWidth_;
    /**
     * <code>optional int32 screenWidth = 12;</code>
     * @return Whether the screenWidth field is set.
     */
    @java.lang.Override
    public boolean hasScreenWidth() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <code>optional int32 screenWidth = 12;</code>
     * @return The screenWidth.
     */
    @java.lang.Override
    public int getScreenWidth() {
      return screenWidth_;
    }
    /**
     * <code>optional int32 screenWidth = 12;</code>
     * @param value The screenWidth to set.
     */
    private void setScreenWidth(int value) {
      bitField0_ |= 0x00000100;
      screenWidth_ = value;
    }
    /**
     * <code>optional int32 screenWidth = 12;</code>
     */
    private void clearScreenWidth() {
      bitField0_ = (bitField0_ & ~0x00000100);
      screenWidth_ = 0;
    }
  
    public static final int SCREENHEIGHT_FIELD_NUMBER = 13;
    private int screenHeight_;
    /**
     * <code>optional int32 screenHeight = 13;</code>
     * @return Whether the screenHeight field is set.
     */
    @java.lang.Override
    public boolean hasScreenHeight() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <code>optional int32 screenHeight = 13;</code>
     * @return The screenHeight.
     */
    @java.lang.Override
    public int getScreenHeight() {
      return screenHeight_;
    }
    /**
     * <code>optional int32 screenHeight = 13;</code>
     * @param value The screenHeight to set.
     */
    private void setScreenHeight(int value) {
      bitField0_ |= 0x00000200;
      screenHeight_ = value;
    }
    /**
     * <code>optional int32 screenHeight = 13;</code>
     */
    private void clearScreenHeight() {
      bitField0_ = (bitField0_ & ~0x00000200);
      screenHeight_ = 0;
    }
  
    public static final int SYSTEMSUPPORTEDLOCALE_FIELD_NUMBER = 14;
    private com.google.protobuf.Internal.ProtobufList<java.lang.String> systemSupportedLocale_;
    /**
     * <code>repeated string systemSupportedLocale = 14;</code>
     * @return A list containing the systemSupportedLocale.
     */
    @java.lang.Override
    public java.util.List<java.lang.String> getSystemSupportedLocaleList() {
      return systemSupportedLocale_;
    }
    /**
     * <code>repeated string systemSupportedLocale = 14;</code>
     * @return The count of systemSupportedLocale.
     */
    @java.lang.Override
    public int getSystemSupportedLocaleCount() {
      return systemSupportedLocale_.size();
    }
    /**
     * <code>repeated string systemSupportedLocale = 14;</code>
     * @param index The index of the element to return.
     * @return The systemSupportedLocale at the given index.
     */
    @java.lang.Override
    public java.lang.String getSystemSupportedLocale(int index) {
      return systemSupportedLocale_.get(index);
    }
    /**
     * <code>repeated string systemSupportedLocale = 14;</code>
     * @param index The index of the value to return.
     * @return The bytes of the systemSupportedLocale at the given index.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSystemSupportedLocaleBytes(int index) {
      return com.google.protobuf.ByteString.copyFromUtf8(
          systemSupportedLocale_.get(index));
    }
    private void ensureSystemSupportedLocaleIsMutable() {
      com.google.protobuf.Internal.ProtobufList<java.lang.String> tmp =
          systemSupportedLocale_;  if (!tmp.isModifiable()) {
        systemSupportedLocale_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }
    /**
     * <code>repeated string systemSupportedLocale = 14;</code>
     * @param index The index to set the value at.
     * @param value The systemSupportedLocale to set.
     */
    private void setSystemSupportedLocale(
        int index, java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
    ensureSystemSupportedLocaleIsMutable();
      systemSupportedLocale_.set(index, value);
    }
    /**
     * <code>repeated string systemSupportedLocale = 14;</code>
     * @param value The systemSupportedLocale to add.
     */
    private void addSystemSupportedLocale(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
    ensureSystemSupportedLocaleIsMutable();
      systemSupportedLocale_.add(value);
    }
    /**
     * <code>repeated string systemSupportedLocale = 14;</code>
     * @param values The systemSupportedLocale to add.
     */
    private void addAllSystemSupportedLocale(
        java.lang.Iterable<java.lang.String> values) {
      ensureSystemSupportedLocaleIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, systemSupportedLocale_);
    }
    /**
     * <code>repeated string systemSupportedLocale = 14;</code>
     */
    private void clearSystemSupportedLocale() {
      systemSupportedLocale_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
    }
    /**
     * <code>repeated string systemSupportedLocale = 14;</code>
     * @param value The bytes of the systemSupportedLocale to add.
     */
    private void addSystemSupportedLocaleBytes(
        com.google.protobuf.ByteString value) {
      ensureSystemSupportedLocaleIsMutable();
      systemSupportedLocale_.add(value.toStringUtf8());
    }
  
    public static final int GLEXTENSION_FIELD_NUMBER = 15;
    private com.google.protobuf.Internal.ProtobufList<java.lang.String> glExtension_;
    /**
     * <code>repeated string glExtension = 15;</code>
     * @return A list containing the glExtension.
     */
    @java.lang.Override
    public java.util.List<java.lang.String> getGlExtensionList() {
      return glExtension_;
    }
    /**
     * <code>repeated string glExtension = 15;</code>
     * @return The count of glExtension.
     */
    @java.lang.Override
    public int getGlExtensionCount() {
      return glExtension_.size();
    }
    /**
     * <code>repeated string glExtension = 15;</code>
     * @param index The index of the element to return.
     * @return The glExtension at the given index.
     */
    @java.lang.Override
    public java.lang.String getGlExtension(int index) {
      return glExtension_.get(index);
    }
    /**
     * <code>repeated string glExtension = 15;</code>
     * @param index The index of the value to return.
     * @return The bytes of the glExtension at the given index.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getGlExtensionBytes(int index) {
      return com.google.protobuf.ByteString.copyFromUtf8(
          glExtension_.get(index));
    }
    private void ensureGlExtensionIsMutable() {
      com.google.protobuf.Internal.ProtobufList<java.lang.String> tmp =
          glExtension_;  if (!tmp.isModifiable()) {
        glExtension_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }
    /**
     * <code>repeated string glExtension = 15;</code>
     * @param index The index to set the value at.
     * @param value The glExtension to set.
     */
    private void setGlExtension(
        int index, java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
    ensureGlExtensionIsMutable();
      glExtension_.set(index, value);
    }
    /**
     * <code>repeated string glExtension = 15;</code>
     * @param value The glExtension to add.
     */
    private void addGlExtension(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
    ensureGlExtensionIsMutable();
      glExtension_.add(value);
    }
    /**
     * <code>repeated string glExtension = 15;</code>
     * @param values The glExtension to add.
     */
    private void addAllGlExtension(
        java.lang.Iterable<java.lang.String> values) {
      ensureGlExtensionIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, glExtension_);
    }
    /**
     * <code>repeated string glExtension = 15;</code>
     */
    private void clearGlExtension() {
      glExtension_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
    }
    /**
     * <code>repeated string glExtension = 15;</code>
     * @param value The bytes of the glExtension to add.
     */
    private void addGlExtensionBytes(
        com.google.protobuf.ByteString value) {
      ensureGlExtensionIsMutable();
      glExtension_.add(value.toStringUtf8());
    }
  
    public static final int DEVICECLASS_FIELD_NUMBER = 16;
    private int deviceClass_;
    /**
     * <code>optional int32 deviceClass = 16;</code>
     * @return Whether the deviceClass field is set.
     */
    @java.lang.Override
    public boolean hasDeviceClass() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <code>optional int32 deviceClass = 16;</code>
     * @return The deviceClass.
     */
    @java.lang.Override
    public int getDeviceClass() {
      return deviceClass_;
    }
    /**
     * <code>optional int32 deviceClass = 16;</code>
     * @param value The deviceClass to set.
     */
    private void setDeviceClass(int value) {
      bitField0_ |= 0x00000400;
      deviceClass_ = value;
    }
    /**
     * <code>optional int32 deviceClass = 16;</code>
     */
    private void clearDeviceClass() {
      bitField0_ = (bitField0_ & ~0x00000400);
      deviceClass_ = 0;
    }
  
    public static final int MAXAPKDOWNLOADSIZEMB_FIELD_NUMBER = 17;
    private int maxApkDownloadSizeMb_;
    /**
     * <code>optional int32 maxApkDownloadSizeMb = 17 [default = 50];</code>
     * @return Whether the maxApkDownloadSizeMb field is set.
     */
    @java.lang.Override
    public boolean hasMaxApkDownloadSizeMb() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     * <code>optional int32 maxApkDownloadSizeMb = 17 [default = 50];</code>
     * @return The maxApkDownloadSizeMb.
     */
    @java.lang.Override
    public int getMaxApkDownloadSizeMb() {
      return maxApkDownloadSizeMb_;
    }
    /**
     * <code>optional int32 maxApkDownloadSizeMb = 17 [default = 50];</code>
     * @param value The maxApkDownloadSizeMb to set.
     */
    private void setMaxApkDownloadSizeMb(int value) {
      bitField0_ |= 0x00000800;
      maxApkDownloadSizeMb_ = value;
    }
    /**
     * <code>optional int32 maxApkDownloadSizeMb = 17 [default = 50];</code>
     */
    private void clearMaxApkDownloadSizeMb() {
      bitField0_ = (bitField0_ & ~0x00000800);
      maxApkDownloadSizeMb_ = 50;
    }
  
    public static final int SMALLESTSCREENWIDTHDP_FIELD_NUMBER = 18;
    private int smallestScreenWidthDP_;
    /**
     * <code>optional int32 smallestScreenWidthDP = 18;</code>
     * @return Whether the smallestScreenWidthDP field is set.
     */
    @java.lang.Override
    public boolean hasSmallestScreenWidthDP() {
      return ((bitField0_ & 0x00001000) != 0);
    }
    /**
     * <code>optional int32 smallestScreenWidthDP = 18;</code>
     * @return The smallestScreenWidthDP.
     */
    @java.lang.Override
    public int getSmallestScreenWidthDP() {
      return smallestScreenWidthDP_;
    }
    /**
     * <code>optional int32 smallestScreenWidthDP = 18;</code>
     * @param value The smallestScreenWidthDP to set.
     */
    private void setSmallestScreenWidthDP(int value) {
      bitField0_ |= 0x00001000;
      smallestScreenWidthDP_ = value;
    }
    /**
     * <code>optional int32 smallestScreenWidthDP = 18;</code>
     */
    private void clearSmallestScreenWidthDP() {
      bitField0_ = (bitField0_ & ~0x00001000);
      smallestScreenWidthDP_ = 0;
    }
  
    public static final int LOWRAMDEVICE_FIELD_NUMBER = 19;
    private int lowRamDevice_;
    /**
     * <code>optional int32 lowRamDevice = 19 [default = 0];</code>
     * @return Whether the lowRamDevice field is set.
     */
    @java.lang.Override
    public boolean hasLowRamDevice() {
      return ((bitField0_ & 0x00002000) != 0);
    }
    /**
     * <code>optional int32 lowRamDevice = 19 [default = 0];</code>
     * @return The lowRamDevice.
     */
    @java.lang.Override
    public int getLowRamDevice() {
      return lowRamDevice_;
    }
    /**
     * <code>optional int32 lowRamDevice = 19 [default = 0];</code>
     * @param value The lowRamDevice to set.
     */
    private void setLowRamDevice(int value) {
      bitField0_ |= 0x00002000;
      lowRamDevice_ = value;
    }
    /**
     * <code>optional int32 lowRamDevice = 19 [default = 0];</code>
     */
    private void clearLowRamDevice() {
      bitField0_ = (bitField0_ & ~0x00002000);
      lowRamDevice_ = 0;
    }
  
    public static final int TOTALMEMORYBYTES_FIELD_NUMBER = 20;
    private long totalMemoryBytes_;
    /**
     * <code>optional int64 totalMemoryBytes = 20 [default = 8354971648];</code>
     * @return Whether the totalMemoryBytes field is set.
     */
    @java.lang.Override
    public boolean hasTotalMemoryBytes() {
      return ((bitField0_ & 0x00004000) != 0);
    }
    /**
     * <code>optional int64 totalMemoryBytes = 20 [default = 8354971648];</code>
     * @return The totalMemoryBytes.
     */
    @java.lang.Override
    public long getTotalMemoryBytes() {
      return totalMemoryBytes_;
    }
    /**
     * <code>optional int64 totalMemoryBytes = 20 [default = 8354971648];</code>
     * @param value The totalMemoryBytes to set.
     */
    private void setTotalMemoryBytes(long value) {
      bitField0_ |= 0x00004000;
      totalMemoryBytes_ = value;
    }
    /**
     * <code>optional int64 totalMemoryBytes = 20 [default = 8354971648];</code>
     */
    private void clearTotalMemoryBytes() {
      bitField0_ = (bitField0_ & ~0x00004000);
      totalMemoryBytes_ = 8354971648L;
    }
  
    public static final int MAXNUMOF_CPUCORES_FIELD_NUMBER = 21;
    private int maxNumOfCPUCores_;
    /**
     * <code>optional int32 maxNumOf_CPUCores = 21 [default = 8];</code>
     * @return Whether the maxNumOfCPUCores field is set.
     */
    @java.lang.Override
    public boolean hasMaxNumOfCPUCores() {
      return ((bitField0_ & 0x00008000) != 0);
    }
    /**
     * <code>optional int32 maxNumOf_CPUCores = 21 [default = 8];</code>
     * @return The maxNumOfCPUCores.
     */
    @java.lang.Override
    public int getMaxNumOfCPUCores() {
      return maxNumOfCPUCores_;
    }
    /**
     * <code>optional int32 maxNumOf_CPUCores = 21 [default = 8];</code>
     * @param value The maxNumOfCPUCores to set.
     */
    private void setMaxNumOfCPUCores(int value) {
      bitField0_ |= 0x00008000;
      maxNumOfCPUCores_ = value;
    }
    /**
     * <code>optional int32 maxNumOf_CPUCores = 21 [default = 8];</code>
     */
    private void clearMaxNumOfCPUCores() {
      bitField0_ = (bitField0_ & ~0x00008000);
      maxNumOfCPUCores_ = 8;
    }
  
    public static final int DEVICEFEATURE_FIELD_NUMBER = 26;
    private com.google.protobuf.Internal.ProtobufList<finsky.protos.DeviceFeature> deviceFeature_;
    /**
     * <code>repeated .finsky.protos.DeviceFeature deviceFeature = 26;</code>
     */
    @java.lang.Override
    public java.util.List<finsky.protos.DeviceFeature> getDeviceFeatureList() {
      return deviceFeature_;
    }
    /**
     * <code>repeated .finsky.protos.DeviceFeature deviceFeature = 26;</code>
     */
    public java.util.List<? extends finsky.protos.DeviceFeatureOrBuilder> 
        getDeviceFeatureOrBuilderList() {
      return deviceFeature_;
    }
    /**
     * <code>repeated .finsky.protos.DeviceFeature deviceFeature = 26;</code>
     */
    @java.lang.Override
    public int getDeviceFeatureCount() {
      return deviceFeature_.size();
    }
    /**
     * <code>repeated .finsky.protos.DeviceFeature deviceFeature = 26;</code>
     */
    @java.lang.Override
    public finsky.protos.DeviceFeature getDeviceFeature(int index) {
      return deviceFeature_.get(index);
    }
    /**
     * <code>repeated .finsky.protos.DeviceFeature deviceFeature = 26;</code>
     */
    public finsky.protos.DeviceFeatureOrBuilder getDeviceFeatureOrBuilder(
        int index) {
      return deviceFeature_.get(index);
    }
    private void ensureDeviceFeatureIsMutable() {
      com.google.protobuf.Internal.ProtobufList<finsky.protos.DeviceFeature> tmp = deviceFeature_;
      if (!tmp.isModifiable()) {
        deviceFeature_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }
  
    /**
     * <code>repeated .finsky.protos.DeviceFeature deviceFeature = 26;</code>
     */
    private void setDeviceFeature(
        int index, finsky.protos.DeviceFeature value) {
      value.getClass();
    ensureDeviceFeatureIsMutable();
      deviceFeature_.set(index, value);
    }
    /**
     * <code>repeated .finsky.protos.DeviceFeature deviceFeature = 26;</code>
     */
    private void addDeviceFeature(finsky.protos.DeviceFeature value) {
      value.getClass();
    ensureDeviceFeatureIsMutable();
      deviceFeature_.add(value);
    }
    /**
     * <code>repeated .finsky.protos.DeviceFeature deviceFeature = 26;</code>
     */
    private void addDeviceFeature(
        int index, finsky.protos.DeviceFeature value) {
      value.getClass();
    ensureDeviceFeatureIsMutable();
      deviceFeature_.add(index, value);
    }
    /**
     * <code>repeated .finsky.protos.DeviceFeature deviceFeature = 26;</code>
     */
    private void addAllDeviceFeature(
        java.lang.Iterable<? extends finsky.protos.DeviceFeature> values) {
      ensureDeviceFeatureIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, deviceFeature_);
    }
    /**
     * <code>repeated .finsky.protos.DeviceFeature deviceFeature = 26;</code>
     */
    private void clearDeviceFeature() {
      deviceFeature_ = emptyProtobufList();
    }
    /**
     * <code>repeated .finsky.protos.DeviceFeature deviceFeature = 26;</code>
     */
    private void removeDeviceFeature(int index) {
      ensureDeviceFeatureIsMutable();
      deviceFeature_.remove(index);
    }
  
    public static final int UNKNOWN28_FIELD_NUMBER = 28;
    private int unknown28_;
    /**
     * <code>optional int32 unknown28 = 28 [default = 0];</code>
     * @return Whether the unknown28 field is set.
     */
    @java.lang.Override
    public boolean hasUnknown28() {
      return ((bitField0_ & 0x00010000) != 0);
    }
    /**
     * <code>optional int32 unknown28 = 28 [default = 0];</code>
     * @return The unknown28.
     */
    @java.lang.Override
    public int getUnknown28() {
      return unknown28_;
    }
    /**
     * <code>optional int32 unknown28 = 28 [default = 0];</code>
     * @param value The unknown28 to set.
     */
    private void setUnknown28(int value) {
      bitField0_ |= 0x00010000;
      unknown28_ = value;
    }
    /**
     * <code>optional int32 unknown28 = 28 [default = 0];</code>
     */
    private void clearUnknown28() {
      bitField0_ = (bitField0_ & ~0x00010000);
      unknown28_ = 0;
    }
  
    public static final int UNKNOWN30_FIELD_NUMBER = 30;
    private int unknown30_;
    /**
     * <code>optional int32 unknown30 = 30 [default = 4];</code>
     * @return Whether the unknown30 field is set.
     */
    @java.lang.Override
    public boolean hasUnknown30() {
      return ((bitField0_ & 0x00020000) != 0);
    }
    /**
     * <code>optional int32 unknown30 = 30 [default = 4];</code>
     * @return The unknown30.
     */
    @java.lang.Override
    public int getUnknown30() {
      return unknown30_;
    }
    /**
     * <code>optional int32 unknown30 = 30 [default = 4];</code>
     * @param value The unknown30 to set.
     */
    private void setUnknown30(int value) {
      bitField0_ |= 0x00020000;
      unknown30_ = value;
    }
    /**
     * <code>optional int32 unknown30 = 30 [default = 4];</code>
     */
    private void clearUnknown30() {
      bitField0_ = (bitField0_ & ~0x00020000);
      unknown30_ = 4;
    }
  
    public static finsky.protos.DeviceConfigurationProto parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static finsky.protos.DeviceConfigurationProto parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static finsky.protos.DeviceConfigurationProto parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static finsky.protos.DeviceConfigurationProto parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static finsky.protos.DeviceConfigurationProto parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static finsky.protos.DeviceConfigurationProto parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static finsky.protos.DeviceConfigurationProto parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static finsky.protos.DeviceConfigurationProto parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
  
    public static finsky.protos.DeviceConfigurationProto parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
  
    public static finsky.protos.DeviceConfigurationProto parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static finsky.protos.DeviceConfigurationProto parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static finsky.protos.DeviceConfigurationProto parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
  
    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(finsky.protos.DeviceConfigurationProto prototype) {
      return DEFAULT_INSTANCE.createBuilder(prototype);
    }
  
    /**
     * Protobuf type {@code finsky.protos.DeviceConfigurationProto}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          finsky.protos.DeviceConfigurationProto, Builder> implements
        // @@protoc_insertion_point(builder_implements:finsky.protos.DeviceConfigurationProto)
        finsky.protos.DeviceConfigurationProtoOrBuilder {
      // Construct using finsky.protos.DeviceConfigurationProto.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }
  
  
      /**
       * <code>optional int32 touchScreen = 1;</code>
       * @return Whether the touchScreen field is set.
       */
      @java.lang.Override
      public boolean hasTouchScreen() {
        return instance.hasTouchScreen();
      }
      /**
       * <code>optional int32 touchScreen = 1;</code>
       * @return The touchScreen.
       */
      @java.lang.Override
      public int getTouchScreen() {
        return instance.getTouchScreen();
      }
      /**
       * <code>optional int32 touchScreen = 1;</code>
       * @param value The touchScreen to set.
       * @return This builder for chaining.
       */
      public Builder setTouchScreen(int value) {
        copyOnWrite();
        instance.setTouchScreen(value);
        return this;
      }
      /**
       * <code>optional int32 touchScreen = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTouchScreen() {
        copyOnWrite();
        instance.clearTouchScreen();
        return this;
      }
  
      /**
       * <code>optional int32 keyboard = 2;</code>
       * @return Whether the keyboard field is set.
       */
      @java.lang.Override
      public boolean hasKeyboard() {
        return instance.hasKeyboard();
      }
      /**
       * <code>optional int32 keyboard = 2;</code>
       * @return The keyboard.
       */
      @java.lang.Override
      public int getKeyboard() {
        return instance.getKeyboard();
      }
      /**
       * <code>optional int32 keyboard = 2;</code>
       * @param value The keyboard to set.
       * @return This builder for chaining.
       */
      public Builder setKeyboard(int value) {
        copyOnWrite();
        instance.setKeyboard(value);
        return this;
      }
      /**
       * <code>optional int32 keyboard = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearKeyboard() {
        copyOnWrite();
        instance.clearKeyboard();
        return this;
      }
  
      /**
       * <code>optional int32 navigation = 3;</code>
       * @return Whether the navigation field is set.
       */
      @java.lang.Override
      public boolean hasNavigation() {
        return instance.hasNavigation();
      }
      /**
       * <code>optional int32 navigation = 3;</code>
       * @return The navigation.
       */
      @java.lang.Override
      public int getNavigation() {
        return instance.getNavigation();
      }
      /**
       * <code>optional int32 navigation = 3;</code>
       * @param value The navigation to set.
       * @return This builder for chaining.
       */
      public Builder setNavigation(int value) {
        copyOnWrite();
        instance.setNavigation(value);
        return this;
      }
      /**
       * <code>optional int32 navigation = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearNavigation() {
        copyOnWrite();
        instance.clearNavigation();
        return this;
      }
  
      /**
       * <code>optional int32 screenLayout = 4;</code>
       * @return Whether the screenLayout field is set.
       */
      @java.lang.Override
      public boolean hasScreenLayout() {
        return instance.hasScreenLayout();
      }
      /**
       * <code>optional int32 screenLayout = 4;</code>
       * @return The screenLayout.
       */
      @java.lang.Override
      public int getScreenLayout() {
        return instance.getScreenLayout();
      }
      /**
       * <code>optional int32 screenLayout = 4;</code>
       * @param value The screenLayout to set.
       * @return This builder for chaining.
       */
      public Builder setScreenLayout(int value) {
        copyOnWrite();
        instance.setScreenLayout(value);
        return this;
      }
      /**
       * <code>optional int32 screenLayout = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearScreenLayout() {
        copyOnWrite();
        instance.clearScreenLayout();
        return this;
      }
  
      /**
       * <code>optional bool hasHardKeyboard = 5;</code>
       * @return Whether the hasHardKeyboard field is set.
       */
      @java.lang.Override
      public boolean hasHasHardKeyboard() {
        return instance.hasHasHardKeyboard();
      }
      /**
       * <code>optional bool hasHardKeyboard = 5;</code>
       * @return The hasHardKeyboard.
       */
      @java.lang.Override
      public boolean getHasHardKeyboard() {
        return instance.getHasHardKeyboard();
      }
      /**
       * <code>optional bool hasHardKeyboard = 5;</code>
       * @param value The hasHardKeyboard to set.
       * @return This builder for chaining.
       */
      public Builder setHasHardKeyboard(boolean value) {
        copyOnWrite();
        instance.setHasHardKeyboard(value);
        return this;
      }
      /**
       * <code>optional bool hasHardKeyboard = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearHasHardKeyboard() {
        copyOnWrite();
        instance.clearHasHardKeyboard();
        return this;
      }
  
      /**
       * <code>optional bool hasFiveWayNavigation = 6;</code>
       * @return Whether the hasFiveWayNavigation field is set.
       */
      @java.lang.Override
      public boolean hasHasFiveWayNavigation() {
        return instance.hasHasFiveWayNavigation();
      }
      /**
       * <code>optional bool hasFiveWayNavigation = 6;</code>
       * @return The hasFiveWayNavigation.
       */
      @java.lang.Override
      public boolean getHasFiveWayNavigation() {
        return instance.getHasFiveWayNavigation();
      }
      /**
       * <code>optional bool hasFiveWayNavigation = 6;</code>
       * @param value The hasFiveWayNavigation to set.
       * @return This builder for chaining.
       */
      public Builder setHasFiveWayNavigation(boolean value) {
        copyOnWrite();
        instance.setHasFiveWayNavigation(value);
        return this;
      }
      /**
       * <code>optional bool hasFiveWayNavigation = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearHasFiveWayNavigation() {
        copyOnWrite();
        instance.clearHasFiveWayNavigation();
        return this;
      }
  
      /**
       * <code>optional int32 screenDensity = 7;</code>
       * @return Whether the screenDensity field is set.
       */
      @java.lang.Override
      public boolean hasScreenDensity() {
        return instance.hasScreenDensity();
      }
      /**
       * <code>optional int32 screenDensity = 7;</code>
       * @return The screenDensity.
       */
      @java.lang.Override
      public int getScreenDensity() {
        return instance.getScreenDensity();
      }
      /**
       * <code>optional int32 screenDensity = 7;</code>
       * @param value The screenDensity to set.
       * @return This builder for chaining.
       */
      public Builder setScreenDensity(int value) {
        copyOnWrite();
        instance.setScreenDensity(value);
        return this;
      }
      /**
       * <code>optional int32 screenDensity = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearScreenDensity() {
        copyOnWrite();
        instance.clearScreenDensity();
        return this;
      }
  
      /**
       * <code>optional int32 glEsVersion = 8;</code>
       * @return Whether the glEsVersion field is set.
       */
      @java.lang.Override
      public boolean hasGlEsVersion() {
        return instance.hasGlEsVersion();
      }
      /**
       * <code>optional int32 glEsVersion = 8;</code>
       * @return The glEsVersion.
       */
      @java.lang.Override
      public int getGlEsVersion() {
        return instance.getGlEsVersion();
      }
      /**
       * <code>optional int32 glEsVersion = 8;</code>
       * @param value The glEsVersion to set.
       * @return This builder for chaining.
       */
      public Builder setGlEsVersion(int value) {
        copyOnWrite();
        instance.setGlEsVersion(value);
        return this;
      }
      /**
       * <code>optional int32 glEsVersion = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearGlEsVersion() {
        copyOnWrite();
        instance.clearGlEsVersion();
        return this;
      }
  
      /**
       * <code>repeated string systemSharedLibrary = 9;</code>
       * @return A list containing the systemSharedLibrary.
       */
      @java.lang.Override
      public java.util.List<java.lang.String>
          getSystemSharedLibraryList() {
        return java.util.Collections.unmodifiableList(
            instance.getSystemSharedLibraryList());
      }
      /**
       * <code>repeated string systemSharedLibrary = 9;</code>
       * @return The count of systemSharedLibrary.
       */
      @java.lang.Override
      public int getSystemSharedLibraryCount() {
        return instance.getSystemSharedLibraryCount();
      }
      /**
       * <code>repeated string systemSharedLibrary = 9;</code>
       * @param index The index of the element to return.
       * @return The systemSharedLibrary at the given index.
       */
      @java.lang.Override
      public java.lang.String getSystemSharedLibrary(int index) {
        return instance.getSystemSharedLibrary(index);
      }
      /**
       * <code>repeated string systemSharedLibrary = 9;</code>
       * @param index The index of the value to return.
       * @return The bytes of the systemSharedLibrary at the given index.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getSystemSharedLibraryBytes(int index) {
        return instance.getSystemSharedLibraryBytes(index);
      }
      /**
       * <code>repeated string systemSharedLibrary = 9;</code>
       * @param index The index to set the value at.
       * @param value The systemSharedLibrary to set.
       * @return This builder for chaining.
       */
      public Builder setSystemSharedLibrary(
          int index, java.lang.String value) {
        copyOnWrite();
        instance.setSystemSharedLibrary(index, value);
        return this;
      }
      /**
       * <code>repeated string systemSharedLibrary = 9;</code>
       * @param value The systemSharedLibrary to add.
       * @return This builder for chaining.
       */
      public Builder addSystemSharedLibrary(
          java.lang.String value) {
        copyOnWrite();
        instance.addSystemSharedLibrary(value);
        return this;
      }
      /**
       * <code>repeated string systemSharedLibrary = 9;</code>
       * @param values The systemSharedLibrary to add.
       * @return This builder for chaining.
       */
      public Builder addAllSystemSharedLibrary(
          java.lang.Iterable<java.lang.String> values) {
        copyOnWrite();
        instance.addAllSystemSharedLibrary(values);
        return this;
      }
      /**
       * <code>repeated string systemSharedLibrary = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearSystemSharedLibrary() {
        copyOnWrite();
        instance.clearSystemSharedLibrary();
        return this;
      }
      /**
       * <code>repeated string systemSharedLibrary = 9;</code>
       * @param value The bytes of the systemSharedLibrary to add.
       * @return This builder for chaining.
       */
      public Builder addSystemSharedLibraryBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.addSystemSharedLibraryBytes(value);
        return this;
      }
  
      /**
       * <code>repeated string systemAvailableFeature = 10;</code>
       * @return A list containing the systemAvailableFeature.
       */
      @java.lang.Override
      public java.util.List<java.lang.String>
          getSystemAvailableFeatureList() {
        return java.util.Collections.unmodifiableList(
            instance.getSystemAvailableFeatureList());
      }
      /**
       * <code>repeated string systemAvailableFeature = 10;</code>
       * @return The count of systemAvailableFeature.
       */
      @java.lang.Override
      public int getSystemAvailableFeatureCount() {
        return instance.getSystemAvailableFeatureCount();
      }
      /**
       * <code>repeated string systemAvailableFeature = 10;</code>
       * @param index The index of the element to return.
       * @return The systemAvailableFeature at the given index.
       */
      @java.lang.Override
      public java.lang.String getSystemAvailableFeature(int index) {
        return instance.getSystemAvailableFeature(index);
      }
      /**
       * <code>repeated string systemAvailableFeature = 10;</code>
       * @param index The index of the value to return.
       * @return The bytes of the systemAvailableFeature at the given index.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getSystemAvailableFeatureBytes(int index) {
        return instance.getSystemAvailableFeatureBytes(index);
      }
      /**
       * <code>repeated string systemAvailableFeature = 10;</code>
       * @param index The index to set the value at.
       * @param value The systemAvailableFeature to set.
       * @return This builder for chaining.
       */
      public Builder setSystemAvailableFeature(
          int index, java.lang.String value) {
        copyOnWrite();
        instance.setSystemAvailableFeature(index, value);
        return this;
      }
      /**
       * <code>repeated string systemAvailableFeature = 10;</code>
       * @param value The systemAvailableFeature to add.
       * @return This builder for chaining.
       */
      public Builder addSystemAvailableFeature(
          java.lang.String value) {
        copyOnWrite();
        instance.addSystemAvailableFeature(value);
        return this;
      }
      /**
       * <code>repeated string systemAvailableFeature = 10;</code>
       * @param values The systemAvailableFeature to add.
       * @return This builder for chaining.
       */
      public Builder addAllSystemAvailableFeature(
          java.lang.Iterable<java.lang.String> values) {
        copyOnWrite();
        instance.addAllSystemAvailableFeature(values);
        return this;
      }
      /**
       * <code>repeated string systemAvailableFeature = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearSystemAvailableFeature() {
        copyOnWrite();
        instance.clearSystemAvailableFeature();
        return this;
      }
      /**
       * <code>repeated string systemAvailableFeature = 10;</code>
       * @param value The bytes of the systemAvailableFeature to add.
       * @return This builder for chaining.
       */
      public Builder addSystemAvailableFeatureBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.addSystemAvailableFeatureBytes(value);
        return this;
      }
  
      /**
       * <code>repeated string nativePlatform = 11;</code>
       * @return A list containing the nativePlatform.
       */
      @java.lang.Override
      public java.util.List<java.lang.String>
          getNativePlatformList() {
        return java.util.Collections.unmodifiableList(
            instance.getNativePlatformList());
      }
      /**
       * <code>repeated string nativePlatform = 11;</code>
       * @return The count of nativePlatform.
       */
      @java.lang.Override
      public int getNativePlatformCount() {
        return instance.getNativePlatformCount();
      }
      /**
       * <code>repeated string nativePlatform = 11;</code>
       * @param index The index of the element to return.
       * @return The nativePlatform at the given index.
       */
      @java.lang.Override
      public java.lang.String getNativePlatform(int index) {
        return instance.getNativePlatform(index);
      }
      /**
       * <code>repeated string nativePlatform = 11;</code>
       * @param index The index of the value to return.
       * @return The bytes of the nativePlatform at the given index.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getNativePlatformBytes(int index) {
        return instance.getNativePlatformBytes(index);
      }
      /**
       * <code>repeated string nativePlatform = 11;</code>
       * @param index The index to set the value at.
       * @param value The nativePlatform to set.
       * @return This builder for chaining.
       */
      public Builder setNativePlatform(
          int index, java.lang.String value) {
        copyOnWrite();
        instance.setNativePlatform(index, value);
        return this;
      }
      /**
       * <code>repeated string nativePlatform = 11;</code>
       * @param value The nativePlatform to add.
       * @return This builder for chaining.
       */
      public Builder addNativePlatform(
          java.lang.String value) {
        copyOnWrite();
        instance.addNativePlatform(value);
        return this;
      }
      /**
       * <code>repeated string nativePlatform = 11;</code>
       * @param values The nativePlatform to add.
       * @return This builder for chaining.
       */
      public Builder addAllNativePlatform(
          java.lang.Iterable<java.lang.String> values) {
        copyOnWrite();
        instance.addAllNativePlatform(values);
        return this;
      }
      /**
       * <code>repeated string nativePlatform = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearNativePlatform() {
        copyOnWrite();
        instance.clearNativePlatform();
        return this;
      }
      /**
       * <code>repeated string nativePlatform = 11;</code>
       * @param value The bytes of the nativePlatform to add.
       * @return This builder for chaining.
       */
      public Builder addNativePlatformBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.addNativePlatformBytes(value);
        return this;
      }
  
      /**
       * <code>optional int32 screenWidth = 12;</code>
       * @return Whether the screenWidth field is set.
       */
      @java.lang.Override
      public boolean hasScreenWidth() {
        return instance.hasScreenWidth();
      }
      /**
       * <code>optional int32 screenWidth = 12;</code>
       * @return The screenWidth.
       */
      @java.lang.Override
      public int getScreenWidth() {
        return instance.getScreenWidth();
      }
      /**
       * <code>optional int32 screenWidth = 12;</code>
       * @param value The screenWidth to set.
       * @return This builder for chaining.
       */
      public Builder setScreenWidth(int value) {
        copyOnWrite();
        instance.setScreenWidth(value);
        return this;
      }
      /**
       * <code>optional int32 screenWidth = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearScreenWidth() {
        copyOnWrite();
        instance.clearScreenWidth();
        return this;
      }
  
      /**
       * <code>optional int32 screenHeight = 13;</code>
       * @return Whether the screenHeight field is set.
       */
      @java.lang.Override
      public boolean hasScreenHeight() {
        return instance.hasScreenHeight();
      }
      /**
       * <code>optional int32 screenHeight = 13;</code>
       * @return The screenHeight.
       */
      @java.lang.Override
      public int getScreenHeight() {
        return instance.getScreenHeight();
      }
      /**
       * <code>optional int32 screenHeight = 13;</code>
       * @param value The screenHeight to set.
       * @return This builder for chaining.
       */
      public Builder setScreenHeight(int value) {
        copyOnWrite();
        instance.setScreenHeight(value);
        return this;
      }
      /**
       * <code>optional int32 screenHeight = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearScreenHeight() {
        copyOnWrite();
        instance.clearScreenHeight();
        return this;
      }
  
      /**
       * <code>repeated string systemSupportedLocale = 14;</code>
       * @return A list containing the systemSupportedLocale.
       */
      @java.lang.Override
      public java.util.List<java.lang.String>
          getSystemSupportedLocaleList() {
        return java.util.Collections.unmodifiableList(
            instance.getSystemSupportedLocaleList());
      }
      /**
       * <code>repeated string systemSupportedLocale = 14;</code>
       * @return The count of systemSupportedLocale.
       */
      @java.lang.Override
      public int getSystemSupportedLocaleCount() {
        return instance.getSystemSupportedLocaleCount();
      }
      /**
       * <code>repeated string systemSupportedLocale = 14;</code>
       * @param index The index of the element to return.
       * @return The systemSupportedLocale at the given index.
       */
      @java.lang.Override
      public java.lang.String getSystemSupportedLocale(int index) {
        return instance.getSystemSupportedLocale(index);
      }
      /**
       * <code>repeated string systemSupportedLocale = 14;</code>
       * @param index The index of the value to return.
       * @return The bytes of the systemSupportedLocale at the given index.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getSystemSupportedLocaleBytes(int index) {
        return instance.getSystemSupportedLocaleBytes(index);
      }
      /**
       * <code>repeated string systemSupportedLocale = 14;</code>
       * @param index The index to set the value at.
       * @param value The systemSupportedLocale to set.
       * @return This builder for chaining.
       */
      public Builder setSystemSupportedLocale(
          int index, java.lang.String value) {
        copyOnWrite();
        instance.setSystemSupportedLocale(index, value);
        return this;
      }
      /**
       * <code>repeated string systemSupportedLocale = 14;</code>
       * @param value The systemSupportedLocale to add.
       * @return This builder for chaining.
       */
      public Builder addSystemSupportedLocale(
          java.lang.String value) {
        copyOnWrite();
        instance.addSystemSupportedLocale(value);
        return this;
      }
      /**
       * <code>repeated string systemSupportedLocale = 14;</code>
       * @param values The systemSupportedLocale to add.
       * @return This builder for chaining.
       */
      public Builder addAllSystemSupportedLocale(
          java.lang.Iterable<java.lang.String> values) {
        copyOnWrite();
        instance.addAllSystemSupportedLocale(values);
        return this;
      }
      /**
       * <code>repeated string systemSupportedLocale = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearSystemSupportedLocale() {
        copyOnWrite();
        instance.clearSystemSupportedLocale();
        return this;
      }
      /**
       * <code>repeated string systemSupportedLocale = 14;</code>
       * @param value The bytes of the systemSupportedLocale to add.
       * @return This builder for chaining.
       */
      public Builder addSystemSupportedLocaleBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.addSystemSupportedLocaleBytes(value);
        return this;
      }
  
      /**
       * <code>repeated string glExtension = 15;</code>
       * @return A list containing the glExtension.
       */
      @java.lang.Override
      public java.util.List<java.lang.String>
          getGlExtensionList() {
        return java.util.Collections.unmodifiableList(
            instance.getGlExtensionList());
      }
      /**
       * <code>repeated string glExtension = 15;</code>
       * @return The count of glExtension.
       */
      @java.lang.Override
      public int getGlExtensionCount() {
        return instance.getGlExtensionCount();
      }
      /**
       * <code>repeated string glExtension = 15;</code>
       * @param index The index of the element to return.
       * @return The glExtension at the given index.
       */
      @java.lang.Override
      public java.lang.String getGlExtension(int index) {
        return instance.getGlExtension(index);
      }
      /**
       * <code>repeated string glExtension = 15;</code>
       * @param index The index of the value to return.
       * @return The bytes of the glExtension at the given index.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getGlExtensionBytes(int index) {
        return instance.getGlExtensionBytes(index);
      }
      /**
       * <code>repeated string glExtension = 15;</code>
       * @param index The index to set the value at.
       * @param value The glExtension to set.
       * @return This builder for chaining.
       */
      public Builder setGlExtension(
          int index, java.lang.String value) {
        copyOnWrite();
        instance.setGlExtension(index, value);
        return this;
      }
      /**
       * <code>repeated string glExtension = 15;</code>
       * @param value The glExtension to add.
       * @return This builder for chaining.
       */
      public Builder addGlExtension(
          java.lang.String value) {
        copyOnWrite();
        instance.addGlExtension(value);
        return this;
      }
      /**
       * <code>repeated string glExtension = 15;</code>
       * @param values The glExtension to add.
       * @return This builder for chaining.
       */
      public Builder addAllGlExtension(
          java.lang.Iterable<java.lang.String> values) {
        copyOnWrite();
        instance.addAllGlExtension(values);
        return this;
      }
      /**
       * <code>repeated string glExtension = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearGlExtension() {
        copyOnWrite();
        instance.clearGlExtension();
        return this;
      }
      /**
       * <code>repeated string glExtension = 15;</code>
       * @param value The bytes of the glExtension to add.
       * @return This builder for chaining.
       */
      public Builder addGlExtensionBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.addGlExtensionBytes(value);
        return this;
      }
  
      /**
       * <code>optional int32 deviceClass = 16;</code>
       * @return Whether the deviceClass field is set.
       */
      @java.lang.Override
      public boolean hasDeviceClass() {
        return instance.hasDeviceClass();
      }
      /**
       * <code>optional int32 deviceClass = 16;</code>
       * @return The deviceClass.
       */
      @java.lang.Override
      public int getDeviceClass() {
        return instance.getDeviceClass();
      }
      /**
       * <code>optional int32 deviceClass = 16;</code>
       * @param value The deviceClass to set.
       * @return This builder for chaining.
       */
      public Builder setDeviceClass(int value) {
        copyOnWrite();
        instance.setDeviceClass(value);
        return this;
      }
      /**
       * <code>optional int32 deviceClass = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearDeviceClass() {
        copyOnWrite();
        instance.clearDeviceClass();
        return this;
      }
  
      /**
       * <code>optional int32 maxApkDownloadSizeMb = 17 [default = 50];</code>
       * @return Whether the maxApkDownloadSizeMb field is set.
       */
      @java.lang.Override
      public boolean hasMaxApkDownloadSizeMb() {
        return instance.hasMaxApkDownloadSizeMb();
      }
      /**
       * <code>optional int32 maxApkDownloadSizeMb = 17 [default = 50];</code>
       * @return The maxApkDownloadSizeMb.
       */
      @java.lang.Override
      public int getMaxApkDownloadSizeMb() {
        return instance.getMaxApkDownloadSizeMb();
      }
      /**
       * <code>optional int32 maxApkDownloadSizeMb = 17 [default = 50];</code>
       * @param value The maxApkDownloadSizeMb to set.
       * @return This builder for chaining.
       */
      public Builder setMaxApkDownloadSizeMb(int value) {
        copyOnWrite();
        instance.setMaxApkDownloadSizeMb(value);
        return this;
      }
      /**
       * <code>optional int32 maxApkDownloadSizeMb = 17 [default = 50];</code>
       * @return This builder for chaining.
       */
      public Builder clearMaxApkDownloadSizeMb() {
        copyOnWrite();
        instance.clearMaxApkDownloadSizeMb();
        return this;
      }
  
      /**
       * <code>optional int32 smallestScreenWidthDP = 18;</code>
       * @return Whether the smallestScreenWidthDP field is set.
       */
      @java.lang.Override
      public boolean hasSmallestScreenWidthDP() {
        return instance.hasSmallestScreenWidthDP();
      }
      /**
       * <code>optional int32 smallestScreenWidthDP = 18;</code>
       * @return The smallestScreenWidthDP.
       */
      @java.lang.Override
      public int getSmallestScreenWidthDP() {
        return instance.getSmallestScreenWidthDP();
      }
      /**
       * <code>optional int32 smallestScreenWidthDP = 18;</code>
       * @param value The smallestScreenWidthDP to set.
       * @return This builder for chaining.
       */
      public Builder setSmallestScreenWidthDP(int value) {
        copyOnWrite();
        instance.setSmallestScreenWidthDP(value);
        return this;
      }
      /**
       * <code>optional int32 smallestScreenWidthDP = 18;</code>
       * @return This builder for chaining.
       */
      public Builder clearSmallestScreenWidthDP() {
        copyOnWrite();
        instance.clearSmallestScreenWidthDP();
        return this;
      }
  
      /**
       * <code>optional int32 lowRamDevice = 19 [default = 0];</code>
       * @return Whether the lowRamDevice field is set.
       */
      @java.lang.Override
      public boolean hasLowRamDevice() {
        return instance.hasLowRamDevice();
      }
      /**
       * <code>optional int32 lowRamDevice = 19 [default = 0];</code>
       * @return The lowRamDevice.
       */
      @java.lang.Override
      public int getLowRamDevice() {
        return instance.getLowRamDevice();
      }
      /**
       * <code>optional int32 lowRamDevice = 19 [default = 0];</code>
       * @param value The lowRamDevice to set.
       * @return This builder for chaining.
       */
      public Builder setLowRamDevice(int value) {
        copyOnWrite();
        instance.setLowRamDevice(value);
        return this;
      }
      /**
       * <code>optional int32 lowRamDevice = 19 [default = 0];</code>
       * @return This builder for chaining.
       */
      public Builder clearLowRamDevice() {
        copyOnWrite();
        instance.clearLowRamDevice();
        return this;
      }
  
      /**
       * <code>optional int64 totalMemoryBytes = 20 [default = 8354971648];</code>
       * @return Whether the totalMemoryBytes field is set.
       */
      @java.lang.Override
      public boolean hasTotalMemoryBytes() {
        return instance.hasTotalMemoryBytes();
      }
      /**
       * <code>optional int64 totalMemoryBytes = 20 [default = 8354971648];</code>
       * @return The totalMemoryBytes.
       */
      @java.lang.Override
      public long getTotalMemoryBytes() {
        return instance.getTotalMemoryBytes();
      }
      /**
       * <code>optional int64 totalMemoryBytes = 20 [default = 8354971648];</code>
       * @param value The totalMemoryBytes to set.
       * @return This builder for chaining.
       */
      public Builder setTotalMemoryBytes(long value) {
        copyOnWrite();
        instance.setTotalMemoryBytes(value);
        return this;
      }
      /**
       * <code>optional int64 totalMemoryBytes = 20 [default = 8354971648];</code>
       * @return This builder for chaining.
       */
      public Builder clearTotalMemoryBytes() {
        copyOnWrite();
        instance.clearTotalMemoryBytes();
        return this;
      }
  
      /**
       * <code>optional int32 maxNumOf_CPUCores = 21 [default = 8];</code>
       * @return Whether the maxNumOfCPUCores field is set.
       */
      @java.lang.Override
      public boolean hasMaxNumOfCPUCores() {
        return instance.hasMaxNumOfCPUCores();
      }
      /**
       * <code>optional int32 maxNumOf_CPUCores = 21 [default = 8];</code>
       * @return The maxNumOfCPUCores.
       */
      @java.lang.Override
      public int getMaxNumOfCPUCores() {
        return instance.getMaxNumOfCPUCores();
      }
      /**
       * <code>optional int32 maxNumOf_CPUCores = 21 [default = 8];</code>
       * @param value The maxNumOfCPUCores to set.
       * @return This builder for chaining.
       */
      public Builder setMaxNumOfCPUCores(int value) {
        copyOnWrite();
        instance.setMaxNumOfCPUCores(value);
        return this;
      }
      /**
       * <code>optional int32 maxNumOf_CPUCores = 21 [default = 8];</code>
       * @return This builder for chaining.
       */
      public Builder clearMaxNumOfCPUCores() {
        copyOnWrite();
        instance.clearMaxNumOfCPUCores();
        return this;
      }
  
      /**
       * <code>repeated .finsky.protos.DeviceFeature deviceFeature = 26;</code>
       */
      @java.lang.Override
      public java.util.List<finsky.protos.DeviceFeature> getDeviceFeatureList() {
        return java.util.Collections.unmodifiableList(
            instance.getDeviceFeatureList());
      }
      /**
       * <code>repeated .finsky.protos.DeviceFeature deviceFeature = 26;</code>
       */
      @java.lang.Override
      public int getDeviceFeatureCount() {
        return instance.getDeviceFeatureCount();
      }/**
       * <code>repeated .finsky.protos.DeviceFeature deviceFeature = 26;</code>
       */
      @java.lang.Override
      public finsky.protos.DeviceFeature getDeviceFeature(int index) {
        return instance.getDeviceFeature(index);
      }
      /**
       * <code>repeated .finsky.protos.DeviceFeature deviceFeature = 26;</code>
       */
      public Builder setDeviceFeature(
          int index, finsky.protos.DeviceFeature value) {
        copyOnWrite();
        instance.setDeviceFeature(index, value);
        return this;
      }
      /**
       * <code>repeated .finsky.protos.DeviceFeature deviceFeature = 26;</code>
       */
      public Builder setDeviceFeature(
          int index, finsky.protos.DeviceFeature.Builder builderForValue) {
        copyOnWrite();
        instance.setDeviceFeature(index,
            builderForValue.build());
        return this;
      }
      /**
       * <code>repeated .finsky.protos.DeviceFeature deviceFeature = 26;</code>
       */
      public Builder addDeviceFeature(finsky.protos.DeviceFeature value) {
        copyOnWrite();
        instance.addDeviceFeature(value);
        return this;
      }
      /**
       * <code>repeated .finsky.protos.DeviceFeature deviceFeature = 26;</code>
       */
      public Builder addDeviceFeature(
          int index, finsky.protos.DeviceFeature value) {
        copyOnWrite();
        instance.addDeviceFeature(index, value);
        return this;
      }
      /**
       * <code>repeated .finsky.protos.DeviceFeature deviceFeature = 26;</code>
       */
      public Builder addDeviceFeature(
          finsky.protos.DeviceFeature.Builder builderForValue) {
        copyOnWrite();
        instance.addDeviceFeature(builderForValue.build());
        return this;
      }
      /**
       * <code>repeated .finsky.protos.DeviceFeature deviceFeature = 26;</code>
       */
      public Builder addDeviceFeature(
          int index, finsky.protos.DeviceFeature.Builder builderForValue) {
        copyOnWrite();
        instance.addDeviceFeature(index,
            builderForValue.build());
        return this;
      }
      /**
       * <code>repeated .finsky.protos.DeviceFeature deviceFeature = 26;</code>
       */
      public Builder addAllDeviceFeature(
          java.lang.Iterable<? extends finsky.protos.DeviceFeature> values) {
        copyOnWrite();
        instance.addAllDeviceFeature(values);
        return this;
      }
      /**
       * <code>repeated .finsky.protos.DeviceFeature deviceFeature = 26;</code>
       */
      public Builder clearDeviceFeature() {
        copyOnWrite();
        instance.clearDeviceFeature();
        return this;
      }
      /**
       * <code>repeated .finsky.protos.DeviceFeature deviceFeature = 26;</code>
       */
      public Builder removeDeviceFeature(int index) {
        copyOnWrite();
        instance.removeDeviceFeature(index);
        return this;
      }
  
      /**
       * <code>optional int32 unknown28 = 28 [default = 0];</code>
       * @return Whether the unknown28 field is set.
       */
      @java.lang.Override
      public boolean hasUnknown28() {
        return instance.hasUnknown28();
      }
      /**
       * <code>optional int32 unknown28 = 28 [default = 0];</code>
       * @return The unknown28.
       */
      @java.lang.Override
      public int getUnknown28() {
        return instance.getUnknown28();
      }
      /**
       * <code>optional int32 unknown28 = 28 [default = 0];</code>
       * @param value The unknown28 to set.
       * @return This builder for chaining.
       */
      public Builder setUnknown28(int value) {
        copyOnWrite();
        instance.setUnknown28(value);
        return this;
      }
      /**
       * <code>optional int32 unknown28 = 28 [default = 0];</code>
       * @return This builder for chaining.
       */
      public Builder clearUnknown28() {
        copyOnWrite();
        instance.clearUnknown28();
        return this;
      }
  
      /**
       * <code>optional int32 unknown30 = 30 [default = 4];</code>
       * @return Whether the unknown30 field is set.
       */
      @java.lang.Override
      public boolean hasUnknown30() {
        return instance.hasUnknown30();
      }
      /**
       * <code>optional int32 unknown30 = 30 [default = 4];</code>
       * @return The unknown30.
       */
      @java.lang.Override
      public int getUnknown30() {
        return instance.getUnknown30();
      }
      /**
       * <code>optional int32 unknown30 = 30 [default = 4];</code>
       * @param value The unknown30 to set.
       * @return This builder for chaining.
       */
      public Builder setUnknown30(int value) {
        copyOnWrite();
        instance.setUnknown30(value);
        return this;
      }
      /**
       * <code>optional int32 unknown30 = 30 [default = 4];</code>
       * @return This builder for chaining.
       */
      public Builder clearUnknown30() {
        copyOnWrite();
        instance.clearUnknown30();
        return this;
      }
  
      // @@protoc_insertion_point(builder_scope:finsky.protos.DeviceConfigurationProto)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new finsky.protos.DeviceConfigurationProto();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "bitField0_",
              "touchScreen_",
              "keyboard_",
              "navigation_",
              "screenLayout_",
              "hasHardKeyboard_",
              "hasFiveWayNavigation_",
              "screenDensity_",
              "glEsVersion_",
              "systemSharedLibrary_",
              "systemAvailableFeature_",
              "nativePlatform_",
              "screenWidth_",
              "screenHeight_",
              "systemSupportedLocale_",
              "glExtension_",
              "deviceClass_",
              "maxApkDownloadSizeMb_",
              "smallestScreenWidthDP_",
              "lowRamDevice_",
              "totalMemoryBytes_",
              "maxNumOfCPUCores_",
              "deviceFeature_",
              finsky.protos.DeviceFeature.class,
              "unknown28_",
              "unknown30_",
            };
            java.lang.String info =
                "\u0001\u0018\u0000\u0001\u0001\u001e\u0018\u0000\u0006\u0000\u0001\u1004\u0000\u0002" +
                "\u1004\u0001\u0003\u1004\u0002\u0004\u1004\u0003\u0005\u1007\u0004\u0006\u1007\u0005" +
                "\u0007\u1004\u0006\b\u1004\u0007\t\u001a\n\u001a\u000b\u001a\f\u1004\b\r\u1004\t" +
                "\u000e\u001a\u000f\u001a\u0010\u1004\n\u0011\u1004\u000b\u0012\u1004\f\u0013\u1004" +
                "\r\u0014\u1002\u000e\u0015\u1004\u000f\u001a\u001b\u001c\u1004\u0010\u001e\u1004" +
                "\u0011";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<finsky.protos.DeviceConfigurationProto> parser = PARSER;
          if (parser == null) {
            synchronized (finsky.protos.DeviceConfigurationProto.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<finsky.protos.DeviceConfigurationProto>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }
  
  
    // @@protoc_insertion_point(class_scope:finsky.protos.DeviceConfigurationProto)
    private static final finsky.protos.DeviceConfigurationProto DEFAULT_INSTANCE;
    static {
      DeviceConfigurationProto defaultInstance = new DeviceConfigurationProto();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        DeviceConfigurationProto.class, defaultInstance);
    }
  
    public static finsky.protos.DeviceConfigurationProto getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
  
    private static volatile com.google.protobuf.Parser<DeviceConfigurationProto> PARSER;
  
    public static com.google.protobuf.Parser<DeviceConfigurationProto> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }
  
  