// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: phone_book.proto
package com.fs.watch.protobuf;
public final class PhoneBook {
  private PhoneBook() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * Protobuf enum {@code PhoneOperation}
   */
  public enum PhoneOperation
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>ADD = 1;</code>
     */
    ADD(1),
    /**
     * <code>REMOVE = 2;</code>
     */
    REMOVE(2),
    /**
     * <code>CLEAR = 3;</code>
     */
    CLEAR(3),
    ;

    /**
     * <code>ADD = 1;</code>
     */
    public static final int ADD_VALUE = 1;
    /**
     * <code>REMOVE = 2;</code>
     */
    public static final int REMOVE_VALUE = 2;
    /**
     * <code>CLEAR = 3;</code>
     */
    public static final int CLEAR_VALUE = 3;


    public final int getNumber() {
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @Deprecated
    public static PhoneOperation valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static PhoneOperation forNumber(int value) {
      switch (value) {
        case 1: return ADD;
        case 2: return REMOVE;
        case 3: return CLEAR;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<PhoneOperation>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        PhoneOperation> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<PhoneOperation>() {
            public PhoneOperation findValueByNumber(int number) {
              return PhoneOperation.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return PhoneBook.getDescriptor().getEnumTypes().get(0);
    }

    private static final PhoneOperation[] VALUES = values();

    public static PhoneOperation valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private PhoneOperation(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:PhoneOperation)
  }

  /**
   * Protobuf enum {@code PhoneResponse}
   */
  public enum PhoneResponse
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>SUCCEED = 1;</code>
     */
    SUCCEED(1),
    /**
     * <code>FAIL = 2;</code>
     */
    FAIL(2),
    /**
     * <code>EXIST = 3;</code>
     */
    EXIST(3),
    ;

    /**
     * <code>SUCCEED = 1;</code>
     */
    public static final int SUCCEED_VALUE = 1;
    /**
     * <code>FAIL = 2;</code>
     */
    public static final int FAIL_VALUE = 2;
    /**
     * <code>EXIST = 3;</code>
     */
    public static final int EXIST_VALUE = 3;


    public final int getNumber() {
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @Deprecated
    public static PhoneResponse valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static PhoneResponse forNumber(int value) {
      switch (value) {
        case 1: return SUCCEED;
        case 2: return FAIL;
        case 3: return EXIST;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<PhoneResponse>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        PhoneResponse> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<PhoneResponse>() {
            public PhoneResponse findValueByNumber(int number) {
              return PhoneResponse.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return PhoneBook.getDescriptor().getEnumTypes().get(1);
    }

    private static final PhoneResponse[] VALUES = values();

    public static PhoneResponse valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private PhoneResponse(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:PhoneResponse)
  }

  public interface SOSGNSSINFOOrBuilder extends
      // @@protoc_insertion_point(interface_extends:SOSGNSSINFO)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required float longitude = 1;</code>
     * @return Whether the longitude field is set.
     */
    boolean hasLongitude();
    /**
     * <code>required float longitude = 1;</code>
     * @return The longitude.
     */
    float getLongitude();

    /**
     * <code>required float latitude = 2;</code>
     * @return Whether the latitude field is set.
     */
    boolean hasLatitude();
    /**
     * <code>required float latitude = 2;</code>
     * @return The latitude.
     */
    float getLatitude();
  }
  /**
   * Protobuf type {@code SOSGNSSINFO}
   */
  public  static final class SOSGNSSINFO extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:SOSGNSSINFO)
      SOSGNSSINFOOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SOSGNSSINFO.newBuilder() to construct.
    private SOSGNSSINFO(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SOSGNSSINFO() {
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new SOSGNSSINFO();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SOSGNSSINFO(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 13: {
              bitField0_ |= 0x00000001;
              longitude_ = input.readFloat();
              break;
            }
            case 21: {
              bitField0_ |= 0x00000002;
              latitude_ = input.readFloat();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return PhoneBook.internal_static_SOSGNSSINFO_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return PhoneBook.internal_static_SOSGNSSINFO_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              SOSGNSSINFO.class, Builder.class);
    }

    private int bitField0_;
    public static final int LONGITUDE_FIELD_NUMBER = 1;
    private float longitude_;
    /**
     * <code>required float longitude = 1;</code>
     * @return Whether the longitude field is set.
     */
    public boolean hasLongitude() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required float longitude = 1;</code>
     * @return The longitude.
     */
    public float getLongitude() {
      return longitude_;
    }

    public static final int LATITUDE_FIELD_NUMBER = 2;
    private float latitude_;
    /**
     * <code>required float latitude = 2;</code>
     * @return Whether the latitude field is set.
     */
    public boolean hasLatitude() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required float latitude = 2;</code>
     * @return The latitude.
     */
    public float getLatitude() {
      return latitude_;
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasLongitude()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasLatitude()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeFloat(1, longitude_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeFloat(2, latitude_);
      }
      unknownFields.writeTo(output);
    }

    @Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(1, longitude_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(2, latitude_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof SOSGNSSINFO)) {
        return super.equals(obj);
      }
      SOSGNSSINFO other = (SOSGNSSINFO) obj;

      if (hasLongitude() != other.hasLongitude()) return false;
      if (hasLongitude()) {
        if (Float.floatToIntBits(getLongitude())
            != Float.floatToIntBits(
                other.getLongitude())) return false;
      }
      if (hasLatitude() != other.hasLatitude()) return false;
      if (hasLatitude()) {
        if (Float.floatToIntBits(getLatitude())
            != Float.floatToIntBits(
                other.getLatitude())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasLongitude()) {
        hash = (37 * hash) + LONGITUDE_FIELD_NUMBER;
        hash = (53 * hash) + Float.floatToIntBits(
            getLongitude());
      }
      if (hasLatitude()) {
        hash = (37 * hash) + LATITUDE_FIELD_NUMBER;
        hash = (53 * hash) + Float.floatToIntBits(
            getLatitude());
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static SOSGNSSINFO parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static SOSGNSSINFO parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static SOSGNSSINFO parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static SOSGNSSINFO parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static SOSGNSSINFO parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static SOSGNSSINFO parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static SOSGNSSINFO parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static SOSGNSSINFO parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static SOSGNSSINFO parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static SOSGNSSINFO parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static SOSGNSSINFO parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static SOSGNSSINFO parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(SOSGNSSINFO prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code SOSGNSSINFO}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:SOSGNSSINFO)
        SOSGNSSINFOOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return PhoneBook.internal_static_SOSGNSSINFO_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return PhoneBook.internal_static_SOSGNSSINFO_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                SOSGNSSINFO.class, Builder.class);
      }

      // Construct using PhoneBook.SOSGNSSINFO.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        longitude_ = 0F;
        bitField0_ = (bitField0_ & ~0x00000001);
        latitude_ = 0F;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return PhoneBook.internal_static_SOSGNSSINFO_descriptor;
      }

      @Override
      public SOSGNSSINFO getDefaultInstanceForType() {
        return SOSGNSSINFO.getDefaultInstance();
      }

      @Override
      public SOSGNSSINFO build() {
        SOSGNSSINFO result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public SOSGNSSINFO buildPartial() {
        SOSGNSSINFO result = new SOSGNSSINFO(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.longitude_ = longitude_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.latitude_ = latitude_;
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof SOSGNSSINFO) {
          return mergeFrom((SOSGNSSINFO)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(SOSGNSSINFO other) {
        if (other == SOSGNSSINFO.getDefaultInstance()) return this;
        if (other.hasLongitude()) {
          setLongitude(other.getLongitude());
        }
        if (other.hasLatitude()) {
          setLatitude(other.getLatitude());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @Override
      public final boolean isInitialized() {
        if (!hasLongitude()) {
          return false;
        }
        if (!hasLatitude()) {
          return false;
        }
        return true;
      }

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        SOSGNSSINFO parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (SOSGNSSINFO) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private float longitude_ ;
      /**
       * <code>required float longitude = 1;</code>
       * @return Whether the longitude field is set.
       */
      public boolean hasLongitude() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required float longitude = 1;</code>
       * @return The longitude.
       */
      public float getLongitude() {
        return longitude_;
      }
      /**
       * <code>required float longitude = 1;</code>
       * @param value The longitude to set.
       * @return This builder for chaining.
       */
      public Builder setLongitude(float value) {
        bitField0_ |= 0x00000001;
        longitude_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required float longitude = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearLongitude() {
        bitField0_ = (bitField0_ & ~0x00000001);
        longitude_ = 0F;
        onChanged();
        return this;
      }

      private float latitude_ ;
      /**
       * <code>required float latitude = 2;</code>
       * @return Whether the latitude field is set.
       */
      public boolean hasLatitude() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required float latitude = 2;</code>
       * @return The latitude.
       */
      public float getLatitude() {
        return latitude_;
      }
      /**
       * <code>required float latitude = 2;</code>
       * @param value The latitude to set.
       * @return This builder for chaining.
       */
      public Builder setLatitude(float value) {
        bitField0_ |= 0x00000002;
        latitude_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required float latitude = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearLatitude() {
        bitField0_ = (bitField0_ & ~0x00000002);
        latitude_ = 0F;
        onChanged();
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:SOSGNSSINFO)
    }

    // @@protoc_insertion_point(class_scope:SOSGNSSINFO)
    private static final SOSGNSSINFO DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new SOSGNSSINFO();
    }

    public static SOSGNSSINFO getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @Deprecated public static final com.google.protobuf.Parser<SOSGNSSINFO>
        PARSER = new com.google.protobuf.AbstractParser<SOSGNSSINFO>() {
      @Override
      public SOSGNSSINFO parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new SOSGNSSINFO(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<SOSGNSSINFO> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<SOSGNSSINFO> getParserForType() {
      return PARSER;
    }

    @Override
    public SOSGNSSINFO getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface HrAlarmV2OrBuilder extends
      // @@protoc_insertion_point(interface_extends:HrAlarmV2)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required fixed32 hr = 1;</code>
     * @return Whether the hr field is set.
     */
    boolean hasHr();
    /**
     * <code>required fixed32 hr = 1;</code>
     * @return The hr.
     */
    int getHr();
  }
  /**
   * Protobuf type {@code HrAlarmV2}
   */
  public  static final class HrAlarmV2 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:HrAlarmV2)
      HrAlarmV2OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use HrAlarmV2.newBuilder() to construct.
    private HrAlarmV2(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private HrAlarmV2() {
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new HrAlarmV2();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private HrAlarmV2(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 13: {
              bitField0_ |= 0x00000001;
              hr_ = input.readFixed32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return PhoneBook.internal_static_HrAlarmV2_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return PhoneBook.internal_static_HrAlarmV2_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              HrAlarmV2.class, Builder.class);
    }

    private int bitField0_;
    public static final int HR_FIELD_NUMBER = 1;
    private int hr_;
    /**
     * <code>required fixed32 hr = 1;</code>
     * @return Whether the hr field is set.
     */
    public boolean hasHr() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required fixed32 hr = 1;</code>
     * @return The hr.
     */
    public int getHr() {
      return hr_;
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasHr()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeFixed32(1, hr_);
      }
      unknownFields.writeTo(output);
    }

    @Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(1, hr_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof HrAlarmV2)) {
        return super.equals(obj);
      }
      HrAlarmV2 other = (HrAlarmV2) obj;

      if (hasHr() != other.hasHr()) return false;
      if (hasHr()) {
        if (getHr()
            != other.getHr()) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasHr()) {
        hash = (37 * hash) + HR_FIELD_NUMBER;
        hash = (53 * hash) + getHr();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static HrAlarmV2 parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static HrAlarmV2 parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static HrAlarmV2 parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static HrAlarmV2 parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static HrAlarmV2 parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static HrAlarmV2 parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static HrAlarmV2 parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static HrAlarmV2 parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static HrAlarmV2 parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static HrAlarmV2 parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static HrAlarmV2 parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static HrAlarmV2 parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(HrAlarmV2 prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code HrAlarmV2}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:HrAlarmV2)
        HrAlarmV2OrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return PhoneBook.internal_static_HrAlarmV2_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return PhoneBook.internal_static_HrAlarmV2_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                HrAlarmV2.class, Builder.class);
      }

      // Construct using PhoneBook.HrAlarmV2.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        hr_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return PhoneBook.internal_static_HrAlarmV2_descriptor;
      }

      @Override
      public HrAlarmV2 getDefaultInstanceForType() {
        return HrAlarmV2.getDefaultInstance();
      }

      @Override
      public HrAlarmV2 build() {
        HrAlarmV2 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public HrAlarmV2 buildPartial() {
        HrAlarmV2 result = new HrAlarmV2(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.hr_ = hr_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof HrAlarmV2) {
          return mergeFrom((HrAlarmV2)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(HrAlarmV2 other) {
        if (other == HrAlarmV2.getDefaultInstance()) return this;
        if (other.hasHr()) {
          setHr(other.getHr());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @Override
      public final boolean isInitialized() {
        if (!hasHr()) {
          return false;
        }
        return true;
      }

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        HrAlarmV2 parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (HrAlarmV2) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int hr_ ;
      /**
       * <code>required fixed32 hr = 1;</code>
       * @return Whether the hr field is set.
       */
      public boolean hasHr() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required fixed32 hr = 1;</code>
       * @return The hr.
       */
      public int getHr() {
        return hr_;
      }
      /**
       * <code>required fixed32 hr = 1;</code>
       * @param value The hr to set.
       * @return This builder for chaining.
       */
      public Builder setHr(int value) {
        bitField0_ |= 0x00000001;
        hr_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required fixed32 hr = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearHr() {
        bitField0_ = (bitField0_ & ~0x00000001);
        hr_ = 0;
        onChanged();
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:HrAlarmV2)
    }

    // @@protoc_insertion_point(class_scope:HrAlarmV2)
    private static final HrAlarmV2 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new HrAlarmV2();
    }

    public static HrAlarmV2 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @Deprecated public static final com.google.protobuf.Parser<HrAlarmV2>
        PARSER = new com.google.protobuf.AbstractParser<HrAlarmV2>() {
      @Override
      public HrAlarmV2 parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new HrAlarmV2(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<HrAlarmV2> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<HrAlarmV2> getParserForType() {
      return PARSER;
    }

    @Override
    public HrAlarmV2 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface Spo2AlarmV2OrBuilder extends
      // @@protoc_insertion_point(interface_extends:Spo2AlarmV2)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required fixed32 spo2 = 1;</code>
     * @return Whether the spo2 field is set.
     */
    boolean hasSpo2();
    /**
     * <code>required fixed32 spo2 = 1;</code>
     * @return The spo2.
     */
    int getSpo2();
  }
  /**
   * Protobuf type {@code Spo2AlarmV2}
   */
  public  static final class Spo2AlarmV2 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Spo2AlarmV2)
      Spo2AlarmV2OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Spo2AlarmV2.newBuilder() to construct.
    private Spo2AlarmV2(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Spo2AlarmV2() {
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new Spo2AlarmV2();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Spo2AlarmV2(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 13: {
              bitField0_ |= 0x00000001;
              spo2_ = input.readFixed32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return PhoneBook.internal_static_Spo2AlarmV2_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return PhoneBook.internal_static_Spo2AlarmV2_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Spo2AlarmV2.class, Builder.class);
    }

    private int bitField0_;
    public static final int SPO2_FIELD_NUMBER = 1;
    private int spo2_;
    /**
     * <code>required fixed32 spo2 = 1;</code>
     * @return Whether the spo2 field is set.
     */
    public boolean hasSpo2() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required fixed32 spo2 = 1;</code>
     * @return The spo2.
     */
    public int getSpo2() {
      return spo2_;
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasSpo2()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeFixed32(1, spo2_);
      }
      unknownFields.writeTo(output);
    }

    @Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(1, spo2_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof Spo2AlarmV2)) {
        return super.equals(obj);
      }
      Spo2AlarmV2 other = (Spo2AlarmV2) obj;

      if (hasSpo2() != other.hasSpo2()) return false;
      if (hasSpo2()) {
        if (getSpo2()
            != other.getSpo2()) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasSpo2()) {
        hash = (37 * hash) + SPO2_FIELD_NUMBER;
        hash = (53 * hash) + getSpo2();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static Spo2AlarmV2 parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Spo2AlarmV2 parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Spo2AlarmV2 parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Spo2AlarmV2 parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Spo2AlarmV2 parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Spo2AlarmV2 parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Spo2AlarmV2 parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static Spo2AlarmV2 parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static Spo2AlarmV2 parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static Spo2AlarmV2 parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static Spo2AlarmV2 parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static Spo2AlarmV2 parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(Spo2AlarmV2 prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Spo2AlarmV2}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Spo2AlarmV2)
        Spo2AlarmV2OrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return PhoneBook.internal_static_Spo2AlarmV2_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return PhoneBook.internal_static_Spo2AlarmV2_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Spo2AlarmV2.class, Builder.class);
      }

      // Construct using PhoneBook.Spo2AlarmV2.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        spo2_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return PhoneBook.internal_static_Spo2AlarmV2_descriptor;
      }

      @Override
      public Spo2AlarmV2 getDefaultInstanceForType() {
        return Spo2AlarmV2.getDefaultInstance();
      }

      @Override
      public Spo2AlarmV2 build() {
        Spo2AlarmV2 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public Spo2AlarmV2 buildPartial() {
        Spo2AlarmV2 result = new Spo2AlarmV2(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.spo2_ = spo2_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof Spo2AlarmV2) {
          return mergeFrom((Spo2AlarmV2)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(Spo2AlarmV2 other) {
        if (other == Spo2AlarmV2.getDefaultInstance()) return this;
        if (other.hasSpo2()) {
          setSpo2(other.getSpo2());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @Override
      public final boolean isInitialized() {
        if (!hasSpo2()) {
          return false;
        }
        return true;
      }

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Spo2AlarmV2 parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (Spo2AlarmV2) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int spo2_ ;
      /**
       * <code>required fixed32 spo2 = 1;</code>
       * @return Whether the spo2 field is set.
       */
      public boolean hasSpo2() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required fixed32 spo2 = 1;</code>
       * @return The spo2.
       */
      public int getSpo2() {
        return spo2_;
      }
      /**
       * <code>required fixed32 spo2 = 1;</code>
       * @param value The spo2 to set.
       * @return This builder for chaining.
       */
      public Builder setSpo2(int value) {
        bitField0_ |= 0x00000001;
        spo2_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required fixed32 spo2 = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSpo2() {
        bitField0_ = (bitField0_ & ~0x00000001);
        spo2_ = 0;
        onChanged();
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Spo2AlarmV2)
    }

    // @@protoc_insertion_point(class_scope:Spo2AlarmV2)
    private static final Spo2AlarmV2 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Spo2AlarmV2();
    }

    public static Spo2AlarmV2 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @Deprecated public static final com.google.protobuf.Parser<Spo2AlarmV2>
        PARSER = new com.google.protobuf.AbstractParser<Spo2AlarmV2>() {
      @Override
      public Spo2AlarmV2 parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Spo2AlarmV2(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<Spo2AlarmV2> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<Spo2AlarmV2> getParserForType() {
      return PARSER;
    }

    @Override
    public Spo2AlarmV2 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ThrombusAlarmV2OrBuilder extends
      // @@protoc_insertion_point(interface_extends:ThrombusAlarmV2)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required bool Thrombus_alarm = 1;</code>
     * @return Whether the thrombusAlarm field is set.
     */
    boolean hasThrombusAlarm();
    /**
     * <code>required bool Thrombus_alarm = 1;</code>
     * @return The thrombusAlarm.
     */
    boolean getThrombusAlarm();
  }
  /**
   * Protobuf type {@code ThrombusAlarmV2}
   */
  public  static final class ThrombusAlarmV2 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:ThrombusAlarmV2)
      ThrombusAlarmV2OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ThrombusAlarmV2.newBuilder() to construct.
    private ThrombusAlarmV2(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ThrombusAlarmV2() {
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new ThrombusAlarmV2();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ThrombusAlarmV2(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {
              bitField0_ |= 0x00000001;
              thrombusAlarm_ = input.readBool();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return PhoneBook.internal_static_ThrombusAlarmV2_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return PhoneBook.internal_static_ThrombusAlarmV2_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ThrombusAlarmV2.class, Builder.class);
    }

    private int bitField0_;
    public static final int THROMBUS_ALARM_FIELD_NUMBER = 1;
    private boolean thrombusAlarm_;
    /**
     * <code>required bool Thrombus_alarm = 1;</code>
     * @return Whether the thrombusAlarm field is set.
     */
    public boolean hasThrombusAlarm() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required bool Thrombus_alarm = 1;</code>
     * @return The thrombusAlarm.
     */
    public boolean getThrombusAlarm() {
      return thrombusAlarm_;
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasThrombusAlarm()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeBool(1, thrombusAlarm_);
      }
      unknownFields.writeTo(output);
    }

    @Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, thrombusAlarm_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ThrombusAlarmV2)) {
        return super.equals(obj);
      }
      ThrombusAlarmV2 other = (ThrombusAlarmV2) obj;

      if (hasThrombusAlarm() != other.hasThrombusAlarm()) return false;
      if (hasThrombusAlarm()) {
        if (getThrombusAlarm()
            != other.getThrombusAlarm()) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasThrombusAlarm()) {
        hash = (37 * hash) + THROMBUS_ALARM_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getThrombusAlarm());
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ThrombusAlarmV2 parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThrombusAlarmV2 parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThrombusAlarmV2 parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThrombusAlarmV2 parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThrombusAlarmV2 parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThrombusAlarmV2 parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThrombusAlarmV2 parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ThrombusAlarmV2 parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static ThrombusAlarmV2 parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static ThrombusAlarmV2 parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ThrombusAlarmV2 parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ThrombusAlarmV2 parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ThrombusAlarmV2 prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code ThrombusAlarmV2}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:ThrombusAlarmV2)
        ThrombusAlarmV2OrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return PhoneBook.internal_static_ThrombusAlarmV2_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return PhoneBook.internal_static_ThrombusAlarmV2_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ThrombusAlarmV2.class, Builder.class);
      }

      // Construct using PhoneBook.ThrombusAlarmV2.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        thrombusAlarm_ = false;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return PhoneBook.internal_static_ThrombusAlarmV2_descriptor;
      }

      @Override
      public ThrombusAlarmV2 getDefaultInstanceForType() {
        return ThrombusAlarmV2.getDefaultInstance();
      }

      @Override
      public ThrombusAlarmV2 build() {
        ThrombusAlarmV2 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public ThrombusAlarmV2 buildPartial() {
        ThrombusAlarmV2 result = new ThrombusAlarmV2(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.thrombusAlarm_ = thrombusAlarm_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ThrombusAlarmV2) {
          return mergeFrom((ThrombusAlarmV2)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ThrombusAlarmV2 other) {
        if (other == ThrombusAlarmV2.getDefaultInstance()) return this;
        if (other.hasThrombusAlarm()) {
          setThrombusAlarm(other.getThrombusAlarm());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @Override
      public final boolean isInitialized() {
        if (!hasThrombusAlarm()) {
          return false;
        }
        return true;
      }

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        ThrombusAlarmV2 parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (ThrombusAlarmV2) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private boolean thrombusAlarm_ ;
      /**
       * <code>required bool Thrombus_alarm = 1;</code>
       * @return Whether the thrombusAlarm field is set.
       */
      public boolean hasThrombusAlarm() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required bool Thrombus_alarm = 1;</code>
       * @return The thrombusAlarm.
       */
      public boolean getThrombusAlarm() {
        return thrombusAlarm_;
      }
      /**
       * <code>required bool Thrombus_alarm = 1;</code>
       * @param value The thrombusAlarm to set.
       * @return This builder for chaining.
       */
      public Builder setThrombusAlarm(boolean value) {
        bitField0_ |= 0x00000001;
        thrombusAlarm_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required bool Thrombus_alarm = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearThrombusAlarm() {
        bitField0_ = (bitField0_ & ~0x00000001);
        thrombusAlarm_ = false;
        onChanged();
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:ThrombusAlarmV2)
    }

    // @@protoc_insertion_point(class_scope:ThrombusAlarmV2)
    private static final ThrombusAlarmV2 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ThrombusAlarmV2();
    }

    public static ThrombusAlarmV2 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @Deprecated public static final com.google.protobuf.Parser<ThrombusAlarmV2>
        PARSER = new com.google.protobuf.AbstractParser<ThrombusAlarmV2>() {
      @Override
      public ThrombusAlarmV2 parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ThrombusAlarmV2(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ThrombusAlarmV2> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<ThrombusAlarmV2> getParserForType() {
      return PARSER;
    }

    @Override
    public ThrombusAlarmV2 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface FallAlarmConfV2OrBuilder extends
      // @@protoc_insertion_point(interface_extends:FallAlarmConfV2)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required bool fall_alarm = 1;</code>
     * @return Whether the fallAlarm field is set.
     */
    boolean hasFallAlarm();
    /**
     * <code>required bool fall_alarm = 1;</code>
     * @return The fallAlarm.
     */
    boolean getFallAlarm();
  }
  /**
   * Protobuf type {@code FallAlarmConfV2}
   */
  public  static final class FallAlarmConfV2 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:FallAlarmConfV2)
      FallAlarmConfV2OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use FallAlarmConfV2.newBuilder() to construct.
    private FallAlarmConfV2(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private FallAlarmConfV2() {
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new FallAlarmConfV2();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private FallAlarmConfV2(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {
              bitField0_ |= 0x00000001;
              fallAlarm_ = input.readBool();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return PhoneBook.internal_static_FallAlarmConfV2_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return PhoneBook.internal_static_FallAlarmConfV2_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              FallAlarmConfV2.class, Builder.class);
    }

    private int bitField0_;
    public static final int FALL_ALARM_FIELD_NUMBER = 1;
    private boolean fallAlarm_;
    /**
     * <code>required bool fall_alarm = 1;</code>
     * @return Whether the fallAlarm field is set.
     */
    public boolean hasFallAlarm() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required bool fall_alarm = 1;</code>
     * @return The fallAlarm.
     */
    public boolean getFallAlarm() {
      return fallAlarm_;
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasFallAlarm()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeBool(1, fallAlarm_);
      }
      unknownFields.writeTo(output);
    }

    @Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, fallAlarm_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof FallAlarmConfV2)) {
        return super.equals(obj);
      }
      FallAlarmConfV2 other = (FallAlarmConfV2) obj;

      if (hasFallAlarm() != other.hasFallAlarm()) return false;
      if (hasFallAlarm()) {
        if (getFallAlarm()
            != other.getFallAlarm()) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasFallAlarm()) {
        hash = (37 * hash) + FALL_ALARM_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getFallAlarm());
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static FallAlarmConfV2 parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static FallAlarmConfV2 parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static FallAlarmConfV2 parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static FallAlarmConfV2 parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static FallAlarmConfV2 parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static FallAlarmConfV2 parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static FallAlarmConfV2 parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static FallAlarmConfV2 parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static FallAlarmConfV2 parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static FallAlarmConfV2 parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static FallAlarmConfV2 parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static FallAlarmConfV2 parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(FallAlarmConfV2 prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code FallAlarmConfV2}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:FallAlarmConfV2)
        FallAlarmConfV2OrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return PhoneBook.internal_static_FallAlarmConfV2_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return PhoneBook.internal_static_FallAlarmConfV2_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                FallAlarmConfV2.class, Builder.class);
      }

      // Construct using PhoneBook.FallAlarmConfV2.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        fallAlarm_ = false;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return PhoneBook.internal_static_FallAlarmConfV2_descriptor;
      }

      @Override
      public FallAlarmConfV2 getDefaultInstanceForType() {
        return FallAlarmConfV2.getDefaultInstance();
      }

      @Override
      public FallAlarmConfV2 build() {
        FallAlarmConfV2 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public FallAlarmConfV2 buildPartial() {
        FallAlarmConfV2 result = new FallAlarmConfV2(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.fallAlarm_ = fallAlarm_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof FallAlarmConfV2) {
          return mergeFrom((FallAlarmConfV2)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(FallAlarmConfV2 other) {
        if (other == FallAlarmConfV2.getDefaultInstance()) return this;
        if (other.hasFallAlarm()) {
          setFallAlarm(other.getFallAlarm());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @Override
      public final boolean isInitialized() {
        if (!hasFallAlarm()) {
          return false;
        }
        return true;
      }

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        FallAlarmConfV2 parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (FallAlarmConfV2) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private boolean fallAlarm_ ;
      /**
       * <code>required bool fall_alarm = 1;</code>
       * @return Whether the fallAlarm field is set.
       */
      public boolean hasFallAlarm() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required bool fall_alarm = 1;</code>
       * @return The fallAlarm.
       */
      public boolean getFallAlarm() {
        return fallAlarm_;
      }
      /**
       * <code>required bool fall_alarm = 1;</code>
       * @param value The fallAlarm to set.
       * @return This builder for chaining.
       */
      public Builder setFallAlarm(boolean value) {
        bitField0_ |= 0x00000001;
        fallAlarm_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required bool fall_alarm = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearFallAlarm() {
        bitField0_ = (bitField0_ & ~0x00000001);
        fallAlarm_ = false;
        onChanged();
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:FallAlarmConfV2)
    }

    // @@protoc_insertion_point(class_scope:FallAlarmConfV2)
    private static final FallAlarmConfV2 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new FallAlarmConfV2();
    }

    public static FallAlarmConfV2 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @Deprecated public static final com.google.protobuf.Parser<FallAlarmConfV2>
        PARSER = new com.google.protobuf.AbstractParser<FallAlarmConfV2>() {
      @Override
      public FallAlarmConfV2 parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new FallAlarmConfV2(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<FallAlarmConfV2> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<FallAlarmConfV2> getParserForType() {
      return PARSER;
    }

    @Override
    public FallAlarmConfV2 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PhoneAlarminfoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:PhoneAlarminfo)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required .DateTime time_stamp = 1;</code>
     * @return Whether the timeStamp field is set.
     */
    boolean hasTimeStamp();
    /**
     * <code>required .DateTime time_stamp = 1;</code>
     * @return The timeStamp.
     */
    RealtimeData.DateTime getTimeStamp();
    /**
     * <code>required .DateTime time_stamp = 1;</code>
     */
    RealtimeData.DateTimeOrBuilder getTimeStampOrBuilder();

    /**
     * <pre>
     *Not wearing status information warning report
     * </pre>
     *
     * <code>optional bool wearstate = 2;</code>
     * @return Whether the wearstate field is set.
     */
    boolean hasWearstate();
    /**
     * <pre>
     *Not wearing status information warning report
     * </pre>
     *
     * <code>optional bool wearstate = 2;</code>
     * @return The wearstate.
     */
    boolean getWearstate();

    /**
     * <pre>
     *sleep status information warning report
     * </pre>
     *
     * <code>optional bool sleepstate = 3;</code>
     * @return Whether the sleepstate field is set.
     */
    boolean hasSleepstate();
    /**
     * <pre>
     *sleep status information warning report
     * </pre>
     *
     * <code>optional bool sleepstate = 3;</code>
     * @return The sleepstate.
     */
    boolean getSleepstate();

    /**
     * <pre>
     *SOS warning information reporting
     * </pre>
     *
     * <code>optional .SOSGNSSINFO gnssinfo = 4;</code>
     * @return Whether the gnssinfo field is set.
     */
    boolean hasGnssinfo();
    /**
     * <pre>
     *SOS warning information reporting
     * </pre>
     *
     * <code>optional .SOSGNSSINFO gnssinfo = 4;</code>
     * @return The gnssinfo.
     */
    SOSGNSSINFO getGnssinfo();
    /**
     * <pre>
     *SOS warning information reporting
     * </pre>
     *
     * <code>optional .SOSGNSSINFO gnssinfo = 4;</code>
     */
    SOSGNSSINFOOrBuilder getGnssinfoOrBuilder();

    /**
     * <pre>
     *Low battery warning information reporting
     * </pre>
     *
     * <code>optional fixed32 lowpowerPercentage = 5;</code>
     * @return Whether the lowpowerPercentage field is set.
     */
    boolean hasLowpowerPercentage();
    /**
     * <pre>
     *Low battery warning information reporting
     * </pre>
     *
     * <code>optional fixed32 lowpowerPercentage = 5;</code>
     * @return The lowpowerPercentage.
     */
    int getLowpowerPercentage();

    /**
     * <pre>
     *Report shutdown information
     * </pre>
     *
     * <code>optional fixed32 poweroffPercentage = 6;</code>
     * @return Whether the poweroffPercentage field is set.
     */
    boolean hasPoweroffPercentage();
    /**
     * <pre>
     *Report shutdown information
     * </pre>
     *
     * <code>optional fixed32 poweroffPercentage = 6;</code>
     * @return The poweroffPercentage.
     */
    int getPoweroffPercentage();

    /**
     * <pre>
     *Unknown number blocking
     * </pre>
     *
     * <code>optional string Phone_intercept_number = 7;</code>
     * @return Whether the phoneInterceptNumber field is set.
     */
    boolean hasPhoneInterceptNumber();
    /**
     * <pre>
     *Unknown number blocking
     * </pre>
     *
     * <code>optional string Phone_intercept_number = 7;</code>
     * @return The phoneInterceptNumber.
     */
    String getPhoneInterceptNumber();
    /**
     * <pre>
     *Unknown number blocking
     * </pre>
     *
     * <code>optional string Phone_intercept_number = 7;</code>
     * @return The bytes for phoneInterceptNumber.
     */
    com.google.protobuf.ByteString
        getPhoneInterceptNumberBytes();
  }
  /**
   * Protobuf type {@code PhoneAlarminfo}
   */
  public  static final class PhoneAlarminfo extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:PhoneAlarminfo)
      PhoneAlarminfoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PhoneAlarminfo.newBuilder() to construct.
    private PhoneAlarminfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PhoneAlarminfo() {
      phoneInterceptNumber_ = "";
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new PhoneAlarminfo();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PhoneAlarminfo(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              RealtimeData.DateTime.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = timeStamp_.toBuilder();
              }
              timeStamp_ = input.readMessage(RealtimeData.DateTime.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(timeStamp_);
                timeStamp_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              wearstate_ = input.readBool();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              sleepstate_ = input.readBool();
              break;
            }
            case 34: {
              SOSGNSSINFO.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) != 0)) {
                subBuilder = gnssinfo_.toBuilder();
              }
              gnssinfo_ = input.readMessage(SOSGNSSINFO.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(gnssinfo_);
                gnssinfo_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 45: {
              bitField0_ |= 0x00000010;
              lowpowerPercentage_ = input.readFixed32();
              break;
            }
            case 53: {
              bitField0_ |= 0x00000020;
              poweroffPercentage_ = input.readFixed32();
              break;
            }
            case 58: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000040;
              phoneInterceptNumber_ = bs;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return PhoneBook.internal_static_PhoneAlarminfo_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return PhoneBook.internal_static_PhoneAlarminfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              PhoneAlarminfo.class, Builder.class);
    }

    private int bitField0_;
    public static final int TIME_STAMP_FIELD_NUMBER = 1;
    private RealtimeData.DateTime timeStamp_;
    /**
     * <code>required .DateTime time_stamp = 1;</code>
     * @return Whether the timeStamp field is set.
     */
    public boolean hasTimeStamp() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required .DateTime time_stamp = 1;</code>
     * @return The timeStamp.
     */
    public RealtimeData.DateTime getTimeStamp() {
      return timeStamp_ == null ? RealtimeData.DateTime.getDefaultInstance() : timeStamp_;
    }
    /**
     * <code>required .DateTime time_stamp = 1;</code>
     */
    public RealtimeData.DateTimeOrBuilder getTimeStampOrBuilder() {
      return timeStamp_ == null ? RealtimeData.DateTime.getDefaultInstance() : timeStamp_;
    }

    public static final int WEARSTATE_FIELD_NUMBER = 2;
    private boolean wearstate_;
    /**
     * <pre>
     *Not wearing status information warning report
     * </pre>
     *
     * <code>optional bool wearstate = 2;</code>
     * @return Whether the wearstate field is set.
     */
    public boolean hasWearstate() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     *Not wearing status information warning report
     * </pre>
     *
     * <code>optional bool wearstate = 2;</code>
     * @return The wearstate.
     */
    public boolean getWearstate() {
      return wearstate_;
    }

    public static final int SLEEPSTATE_FIELD_NUMBER = 3;
    private boolean sleepstate_;
    /**
     * <pre>
     *sleep status information warning report
     * </pre>
     *
     * <code>optional bool sleepstate = 3;</code>
     * @return Whether the sleepstate field is set.
     */
    public boolean hasSleepstate() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     *sleep status information warning report
     * </pre>
     *
     * <code>optional bool sleepstate = 3;</code>
     * @return The sleepstate.
     */
    public boolean getSleepstate() {
      return sleepstate_;
    }

    public static final int GNSSINFO_FIELD_NUMBER = 4;
    private SOSGNSSINFO gnssinfo_;
    /**
     * <pre>
     *SOS warning information reporting
     * </pre>
     *
     * <code>optional .SOSGNSSINFO gnssinfo = 4;</code>
     * @return Whether the gnssinfo field is set.
     */
    public boolean hasGnssinfo() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     *SOS warning information reporting
     * </pre>
     *
     * <code>optional .SOSGNSSINFO gnssinfo = 4;</code>
     * @return The gnssinfo.
     */
    public SOSGNSSINFO getGnssinfo() {
      return gnssinfo_ == null ? SOSGNSSINFO.getDefaultInstance() : gnssinfo_;
    }
    /**
     * <pre>
     *SOS warning information reporting
     * </pre>
     *
     * <code>optional .SOSGNSSINFO gnssinfo = 4;</code>
     */
    public SOSGNSSINFOOrBuilder getGnssinfoOrBuilder() {
      return gnssinfo_ == null ? SOSGNSSINFO.getDefaultInstance() : gnssinfo_;
    }

    public static final int LOWPOWERPERCENTAGE_FIELD_NUMBER = 5;
    private int lowpowerPercentage_;
    /**
     * <pre>
     *Low battery warning information reporting
     * </pre>
     *
     * <code>optional fixed32 lowpowerPercentage = 5;</code>
     * @return Whether the lowpowerPercentage field is set.
     */
    public boolean hasLowpowerPercentage() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     *Low battery warning information reporting
     * </pre>
     *
     * <code>optional fixed32 lowpowerPercentage = 5;</code>
     * @return The lowpowerPercentage.
     */
    public int getLowpowerPercentage() {
      return lowpowerPercentage_;
    }

    public static final int POWEROFFPERCENTAGE_FIELD_NUMBER = 6;
    private int poweroffPercentage_;
    /**
     * <pre>
     *Report shutdown information
     * </pre>
     *
     * <code>optional fixed32 poweroffPercentage = 6;</code>
     * @return Whether the poweroffPercentage field is set.
     */
    public boolean hasPoweroffPercentage() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     *Report shutdown information
     * </pre>
     *
     * <code>optional fixed32 poweroffPercentage = 6;</code>
     * @return The poweroffPercentage.
     */
    public int getPoweroffPercentage() {
      return poweroffPercentage_;
    }

    public static final int PHONE_INTERCEPT_NUMBER_FIELD_NUMBER = 7;
    private volatile Object phoneInterceptNumber_;
    /**
     * <pre>
     *Unknown number blocking
     * </pre>
     *
     * <code>optional string Phone_intercept_number = 7;</code>
     * @return Whether the phoneInterceptNumber field is set.
     */
    public boolean hasPhoneInterceptNumber() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     *Unknown number blocking
     * </pre>
     *
     * <code>optional string Phone_intercept_number = 7;</code>
     * @return The phoneInterceptNumber.
     */
    public String getPhoneInterceptNumber() {
      Object ref = phoneInterceptNumber_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          phoneInterceptNumber_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     *Unknown number blocking
     * </pre>
     *
     * <code>optional string Phone_intercept_number = 7;</code>
     * @return The bytes for phoneInterceptNumber.
     */
    public com.google.protobuf.ByteString
        getPhoneInterceptNumberBytes() {
      Object ref = phoneInterceptNumber_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        phoneInterceptNumber_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasTimeStamp()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getTimeStamp().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasGnssinfo()) {
        if (!getGnssinfo().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getTimeStamp());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBool(2, wearstate_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(3, sleepstate_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getGnssinfo());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeFixed32(5, lowpowerPercentage_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeFixed32(6, poweroffPercentage_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, phoneInterceptNumber_);
      }
      unknownFields.writeTo(output);
    }

    @Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getTimeStamp());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, wearstate_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, sleepstate_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getGnssinfo());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(5, lowpowerPercentage_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(6, poweroffPercentage_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, phoneInterceptNumber_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof PhoneAlarminfo)) {
        return super.equals(obj);
      }
      PhoneAlarminfo other = (PhoneAlarminfo) obj;

      if (hasTimeStamp() != other.hasTimeStamp()) return false;
      if (hasTimeStamp()) {
        if (!getTimeStamp()
            .equals(other.getTimeStamp())) return false;
      }
      if (hasWearstate() != other.hasWearstate()) return false;
      if (hasWearstate()) {
        if (getWearstate()
            != other.getWearstate()) return false;
      }
      if (hasSleepstate() != other.hasSleepstate()) return false;
      if (hasSleepstate()) {
        if (getSleepstate()
            != other.getSleepstate()) return false;
      }
      if (hasGnssinfo() != other.hasGnssinfo()) return false;
      if (hasGnssinfo()) {
        if (!getGnssinfo()
            .equals(other.getGnssinfo())) return false;
      }
      if (hasLowpowerPercentage() != other.hasLowpowerPercentage()) return false;
      if (hasLowpowerPercentage()) {
        if (getLowpowerPercentage()
            != other.getLowpowerPercentage()) return false;
      }
      if (hasPoweroffPercentage() != other.hasPoweroffPercentage()) return false;
      if (hasPoweroffPercentage()) {
        if (getPoweroffPercentage()
            != other.getPoweroffPercentage()) return false;
      }
      if (hasPhoneInterceptNumber() != other.hasPhoneInterceptNumber()) return false;
      if (hasPhoneInterceptNumber()) {
        if (!getPhoneInterceptNumber()
            .equals(other.getPhoneInterceptNumber())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasTimeStamp()) {
        hash = (37 * hash) + TIME_STAMP_FIELD_NUMBER;
        hash = (53 * hash) + getTimeStamp().hashCode();
      }
      if (hasWearstate()) {
        hash = (37 * hash) + WEARSTATE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getWearstate());
      }
      if (hasSleepstate()) {
        hash = (37 * hash) + SLEEPSTATE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getSleepstate());
      }
      if (hasGnssinfo()) {
        hash = (37 * hash) + GNSSINFO_FIELD_NUMBER;
        hash = (53 * hash) + getGnssinfo().hashCode();
      }
      if (hasLowpowerPercentage()) {
        hash = (37 * hash) + LOWPOWERPERCENTAGE_FIELD_NUMBER;
        hash = (53 * hash) + getLowpowerPercentage();
      }
      if (hasPoweroffPercentage()) {
        hash = (37 * hash) + POWEROFFPERCENTAGE_FIELD_NUMBER;
        hash = (53 * hash) + getPoweroffPercentage();
      }
      if (hasPhoneInterceptNumber()) {
        hash = (37 * hash) + PHONE_INTERCEPT_NUMBER_FIELD_NUMBER;
        hash = (53 * hash) + getPhoneInterceptNumber().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static PhoneAlarminfo parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static PhoneAlarminfo parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static PhoneAlarminfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static PhoneAlarminfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static PhoneAlarminfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static PhoneAlarminfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static PhoneAlarminfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static PhoneAlarminfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static PhoneAlarminfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static PhoneAlarminfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static PhoneAlarminfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static PhoneAlarminfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(PhoneAlarminfo prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code PhoneAlarminfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:PhoneAlarminfo)
        PhoneAlarminfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return PhoneBook.internal_static_PhoneAlarminfo_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return PhoneBook.internal_static_PhoneAlarminfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                PhoneAlarminfo.class, Builder.class);
      }

      // Construct using PhoneBook.PhoneAlarminfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTimeStampFieldBuilder();
          getGnssinfoFieldBuilder();
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        if (timeStampBuilder_ == null) {
          timeStamp_ = null;
        } else {
          timeStampBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        wearstate_ = false;
        bitField0_ = (bitField0_ & ~0x00000002);
        sleepstate_ = false;
        bitField0_ = (bitField0_ & ~0x00000004);
        if (gnssinfoBuilder_ == null) {
          gnssinfo_ = null;
        } else {
          gnssinfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        lowpowerPercentage_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        poweroffPercentage_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        phoneInterceptNumber_ = "";
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return PhoneBook.internal_static_PhoneAlarminfo_descriptor;
      }

      @Override
      public PhoneAlarminfo getDefaultInstanceForType() {
        return PhoneAlarminfo.getDefaultInstance();
      }

      @Override
      public PhoneAlarminfo build() {
        PhoneAlarminfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public PhoneAlarminfo buildPartial() {
        PhoneAlarminfo result = new PhoneAlarminfo(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (timeStampBuilder_ == null) {
            result.timeStamp_ = timeStamp_;
          } else {
            result.timeStamp_ = timeStampBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.wearstate_ = wearstate_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.sleepstate_ = sleepstate_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          if (gnssinfoBuilder_ == null) {
            result.gnssinfo_ = gnssinfo_;
          } else {
            result.gnssinfo_ = gnssinfoBuilder_.build();
          }
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.lowpowerPercentage_ = lowpowerPercentage_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.poweroffPercentage_ = poweroffPercentage_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          to_bitField0_ |= 0x00000040;
        }
        result.phoneInterceptNumber_ = phoneInterceptNumber_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof PhoneAlarminfo) {
          return mergeFrom((PhoneAlarminfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(PhoneAlarminfo other) {
        if (other == PhoneAlarminfo.getDefaultInstance()) return this;
        if (other.hasTimeStamp()) {
          mergeTimeStamp(other.getTimeStamp());
        }
        if (other.hasWearstate()) {
          setWearstate(other.getWearstate());
        }
        if (other.hasSleepstate()) {
          setSleepstate(other.getSleepstate());
        }
        if (other.hasGnssinfo()) {
          mergeGnssinfo(other.getGnssinfo());
        }
        if (other.hasLowpowerPercentage()) {
          setLowpowerPercentage(other.getLowpowerPercentage());
        }
        if (other.hasPoweroffPercentage()) {
          setPoweroffPercentage(other.getPoweroffPercentage());
        }
        if (other.hasPhoneInterceptNumber()) {
          bitField0_ |= 0x00000040;
          phoneInterceptNumber_ = other.phoneInterceptNumber_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @Override
      public final boolean isInitialized() {
        if (!hasTimeStamp()) {
          return false;
        }
        if (!getTimeStamp().isInitialized()) {
          return false;
        }
        if (hasGnssinfo()) {
          if (!getGnssinfo().isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        PhoneAlarminfo parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (PhoneAlarminfo) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private RealtimeData.DateTime timeStamp_;
      private com.google.protobuf.SingleFieldBuilderV3<
          RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder> timeStampBuilder_;
      /**
       * <code>required .DateTime time_stamp = 1;</code>
       * @return Whether the timeStamp field is set.
       */
      public boolean hasTimeStamp() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .DateTime time_stamp = 1;</code>
       * @return The timeStamp.
       */
      public RealtimeData.DateTime getTimeStamp() {
        if (timeStampBuilder_ == null) {
          return timeStamp_ == null ? RealtimeData.DateTime.getDefaultInstance() : timeStamp_;
        } else {
          return timeStampBuilder_.getMessage();
        }
      }
      /**
       * <code>required .DateTime time_stamp = 1;</code>
       */
      public Builder setTimeStamp(RealtimeData.DateTime value) {
        if (timeStampBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          timeStamp_ = value;
          onChanged();
        } else {
          timeStampBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .DateTime time_stamp = 1;</code>
       */
      public Builder setTimeStamp(
          RealtimeData.DateTime.Builder builderForValue) {
        if (timeStampBuilder_ == null) {
          timeStamp_ = builderForValue.build();
          onChanged();
        } else {
          timeStampBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .DateTime time_stamp = 1;</code>
       */
      public Builder mergeTimeStamp(RealtimeData.DateTime value) {
        if (timeStampBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              timeStamp_ != null &&
              timeStamp_ != RealtimeData.DateTime.getDefaultInstance()) {
            timeStamp_ =
              RealtimeData.DateTime.newBuilder(timeStamp_).mergeFrom(value).buildPartial();
          } else {
            timeStamp_ = value;
          }
          onChanged();
        } else {
          timeStampBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .DateTime time_stamp = 1;</code>
       */
      public Builder clearTimeStamp() {
        if (timeStampBuilder_ == null) {
          timeStamp_ = null;
          onChanged();
        } else {
          timeStampBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <code>required .DateTime time_stamp = 1;</code>
       */
      public RealtimeData.DateTime.Builder getTimeStampBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getTimeStampFieldBuilder().getBuilder();
      }
      /**
       * <code>required .DateTime time_stamp = 1;</code>
       */
      public RealtimeData.DateTimeOrBuilder getTimeStampOrBuilder() {
        if (timeStampBuilder_ != null) {
          return timeStampBuilder_.getMessageOrBuilder();
        } else {
          return timeStamp_ == null ?
              RealtimeData.DateTime.getDefaultInstance() : timeStamp_;
        }
      }
      /**
       * <code>required .DateTime time_stamp = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder>
          getTimeStampFieldBuilder() {
        if (timeStampBuilder_ == null) {
          timeStampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder>(
                  getTimeStamp(),
                  getParentForChildren(),
                  isClean());
          timeStamp_ = null;
        }
        return timeStampBuilder_;
      }

      private boolean wearstate_ ;
      /**
       * <pre>
       *Not wearing status information warning report
       * </pre>
       *
       * <code>optional bool wearstate = 2;</code>
       * @return Whether the wearstate field is set.
       */
      public boolean hasWearstate() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       *Not wearing status information warning report
       * </pre>
       *
       * <code>optional bool wearstate = 2;</code>
       * @return The wearstate.
       */
      public boolean getWearstate() {
        return wearstate_;
      }
      /**
       * <pre>
       *Not wearing status information warning report
       * </pre>
       *
       * <code>optional bool wearstate = 2;</code>
       * @param value The wearstate to set.
       * @return This builder for chaining.
       */
      public Builder setWearstate(boolean value) {
        bitField0_ |= 0x00000002;
        wearstate_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *Not wearing status information warning report
       * </pre>
       *
       * <code>optional bool wearstate = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearWearstate() {
        bitField0_ = (bitField0_ & ~0x00000002);
        wearstate_ = false;
        onChanged();
        return this;
      }

      private boolean sleepstate_ ;
      /**
       * <pre>
       *sleep status information warning report
       * </pre>
       *
       * <code>optional bool sleepstate = 3;</code>
       * @return Whether the sleepstate field is set.
       */
      public boolean hasSleepstate() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       *sleep status information warning report
       * </pre>
       *
       * <code>optional bool sleepstate = 3;</code>
       * @return The sleepstate.
       */
      public boolean getSleepstate() {
        return sleepstate_;
      }
      /**
       * <pre>
       *sleep status information warning report
       * </pre>
       *
       * <code>optional bool sleepstate = 3;</code>
       * @param value The sleepstate to set.
       * @return This builder for chaining.
       */
      public Builder setSleepstate(boolean value) {
        bitField0_ |= 0x00000004;
        sleepstate_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *sleep status information warning report
       * </pre>
       *
       * <code>optional bool sleepstate = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearSleepstate() {
        bitField0_ = (bitField0_ & ~0x00000004);
        sleepstate_ = false;
        onChanged();
        return this;
      }

      private SOSGNSSINFO gnssinfo_;
      private com.google.protobuf.SingleFieldBuilderV3<
          SOSGNSSINFO, SOSGNSSINFO.Builder, SOSGNSSINFOOrBuilder> gnssinfoBuilder_;
      /**
       * <pre>
       *SOS warning information reporting
       * </pre>
       *
       * <code>optional .SOSGNSSINFO gnssinfo = 4;</code>
       * @return Whether the gnssinfo field is set.
       */
      public boolean hasGnssinfo() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       *SOS warning information reporting
       * </pre>
       *
       * <code>optional .SOSGNSSINFO gnssinfo = 4;</code>
       * @return The gnssinfo.
       */
      public SOSGNSSINFO getGnssinfo() {
        if (gnssinfoBuilder_ == null) {
          return gnssinfo_ == null ? SOSGNSSINFO.getDefaultInstance() : gnssinfo_;
        } else {
          return gnssinfoBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *SOS warning information reporting
       * </pre>
       *
       * <code>optional .SOSGNSSINFO gnssinfo = 4;</code>
       */
      public Builder setGnssinfo(SOSGNSSINFO value) {
        if (gnssinfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          gnssinfo_ = value;
          onChanged();
        } else {
          gnssinfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <pre>
       *SOS warning information reporting
       * </pre>
       *
       * <code>optional .SOSGNSSINFO gnssinfo = 4;</code>
       */
      public Builder setGnssinfo(
          SOSGNSSINFO.Builder builderForValue) {
        if (gnssinfoBuilder_ == null) {
          gnssinfo_ = builderForValue.build();
          onChanged();
        } else {
          gnssinfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <pre>
       *SOS warning information reporting
       * </pre>
       *
       * <code>optional .SOSGNSSINFO gnssinfo = 4;</code>
       */
      public Builder mergeGnssinfo(SOSGNSSINFO value) {
        if (gnssinfoBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
              gnssinfo_ != null &&
              gnssinfo_ != SOSGNSSINFO.getDefaultInstance()) {
            gnssinfo_ =
              SOSGNSSINFO.newBuilder(gnssinfo_).mergeFrom(value).buildPartial();
          } else {
            gnssinfo_ = value;
          }
          onChanged();
        } else {
          gnssinfoBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <pre>
       *SOS warning information reporting
       * </pre>
       *
       * <code>optional .SOSGNSSINFO gnssinfo = 4;</code>
       */
      public Builder clearGnssinfo() {
        if (gnssinfoBuilder_ == null) {
          gnssinfo_ = null;
          onChanged();
        } else {
          gnssinfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      /**
       * <pre>
       *SOS warning information reporting
       * </pre>
       *
       * <code>optional .SOSGNSSINFO gnssinfo = 4;</code>
       */
      public SOSGNSSINFO.Builder getGnssinfoBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getGnssinfoFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *SOS warning information reporting
       * </pre>
       *
       * <code>optional .SOSGNSSINFO gnssinfo = 4;</code>
       */
      public SOSGNSSINFOOrBuilder getGnssinfoOrBuilder() {
        if (gnssinfoBuilder_ != null) {
          return gnssinfoBuilder_.getMessageOrBuilder();
        } else {
          return gnssinfo_ == null ?
              SOSGNSSINFO.getDefaultInstance() : gnssinfo_;
        }
      }
      /**
       * <pre>
       *SOS warning information reporting
       * </pre>
       *
       * <code>optional .SOSGNSSINFO gnssinfo = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          SOSGNSSINFO, SOSGNSSINFO.Builder, SOSGNSSINFOOrBuilder>
          getGnssinfoFieldBuilder() {
        if (gnssinfoBuilder_ == null) {
          gnssinfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              SOSGNSSINFO, SOSGNSSINFO.Builder, SOSGNSSINFOOrBuilder>(
                  getGnssinfo(),
                  getParentForChildren(),
                  isClean());
          gnssinfo_ = null;
        }
        return gnssinfoBuilder_;
      }

      private int lowpowerPercentage_ ;
      /**
       * <pre>
       *Low battery warning information reporting
       * </pre>
       *
       * <code>optional fixed32 lowpowerPercentage = 5;</code>
       * @return Whether the lowpowerPercentage field is set.
       */
      public boolean hasLowpowerPercentage() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       *Low battery warning information reporting
       * </pre>
       *
       * <code>optional fixed32 lowpowerPercentage = 5;</code>
       * @return The lowpowerPercentage.
       */
      public int getLowpowerPercentage() {
        return lowpowerPercentage_;
      }
      /**
       * <pre>
       *Low battery warning information reporting
       * </pre>
       *
       * <code>optional fixed32 lowpowerPercentage = 5;</code>
       * @param value The lowpowerPercentage to set.
       * @return This builder for chaining.
       */
      public Builder setLowpowerPercentage(int value) {
        bitField0_ |= 0x00000010;
        lowpowerPercentage_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *Low battery warning information reporting
       * </pre>
       *
       * <code>optional fixed32 lowpowerPercentage = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearLowpowerPercentage() {
        bitField0_ = (bitField0_ & ~0x00000010);
        lowpowerPercentage_ = 0;
        onChanged();
        return this;
      }

      private int poweroffPercentage_ ;
      /**
       * <pre>
       *Report shutdown information
       * </pre>
       *
       * <code>optional fixed32 poweroffPercentage = 6;</code>
       * @return Whether the poweroffPercentage field is set.
       */
      public boolean hasPoweroffPercentage() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       *Report shutdown information
       * </pre>
       *
       * <code>optional fixed32 poweroffPercentage = 6;</code>
       * @return The poweroffPercentage.
       */
      public int getPoweroffPercentage() {
        return poweroffPercentage_;
      }
      /**
       * <pre>
       *Report shutdown information
       * </pre>
       *
       * <code>optional fixed32 poweroffPercentage = 6;</code>
       * @param value The poweroffPercentage to set.
       * @return This builder for chaining.
       */
      public Builder setPoweroffPercentage(int value) {
        bitField0_ |= 0x00000020;
        poweroffPercentage_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *Report shutdown information
       * </pre>
       *
       * <code>optional fixed32 poweroffPercentage = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearPoweroffPercentage() {
        bitField0_ = (bitField0_ & ~0x00000020);
        poweroffPercentage_ = 0;
        onChanged();
        return this;
      }

      private Object phoneInterceptNumber_ = "";
      /**
       * <pre>
       *Unknown number blocking
       * </pre>
       *
       * <code>optional string Phone_intercept_number = 7;</code>
       * @return Whether the phoneInterceptNumber field is set.
       */
      public boolean hasPhoneInterceptNumber() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       *Unknown number blocking
       * </pre>
       *
       * <code>optional string Phone_intercept_number = 7;</code>
       * @return The phoneInterceptNumber.
       */
      public String getPhoneInterceptNumber() {
        Object ref = phoneInterceptNumber_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            phoneInterceptNumber_ = s;
          }
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *Unknown number blocking
       * </pre>
       *
       * <code>optional string Phone_intercept_number = 7;</code>
       * @return The bytes for phoneInterceptNumber.
       */
      public com.google.protobuf.ByteString
          getPhoneInterceptNumberBytes() {
        Object ref = phoneInterceptNumber_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          phoneInterceptNumber_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *Unknown number blocking
       * </pre>
       *
       * <code>optional string Phone_intercept_number = 7;</code>
       * @param value The phoneInterceptNumber to set.
       * @return This builder for chaining.
       */
      public Builder setPhoneInterceptNumber(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        phoneInterceptNumber_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *Unknown number blocking
       * </pre>
       *
       * <code>optional string Phone_intercept_number = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearPhoneInterceptNumber() {
        bitField0_ = (bitField0_ & ~0x00000040);
        phoneInterceptNumber_ = getDefaultInstance().getPhoneInterceptNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *Unknown number blocking
       * </pre>
       *
       * <code>optional string Phone_intercept_number = 7;</code>
       * @param value The bytes for phoneInterceptNumber to set.
       * @return This builder for chaining.
       */
      public Builder setPhoneInterceptNumberBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        phoneInterceptNumber_ = value;
        onChanged();
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:PhoneAlarminfo)
    }

    // @@protoc_insertion_point(class_scope:PhoneAlarminfo)
    private static final PhoneAlarminfo DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new PhoneAlarminfo();
    }

    public static PhoneAlarminfo getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @Deprecated public static final com.google.protobuf.Parser<PhoneAlarminfo>
        PARSER = new com.google.protobuf.AbstractParser<PhoneAlarminfo>() {
      @Override
      public PhoneAlarminfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PhoneAlarminfo(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<PhoneAlarminfo> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<PhoneAlarminfo> getParserForType() {
      return PARSER;
    }

    @Override
    public PhoneAlarminfo getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface HealthAlarmV2OrBuilder extends
      // @@protoc_insertion_point(interface_extends:HealthAlarmV2)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required .DateTime time_stamp = 1;</code>
     * @return Whether the timeStamp field is set.
     */
    boolean hasTimeStamp();
    /**
     * <code>required .DateTime time_stamp = 1;</code>
     * @return The timeStamp.
     */
    RealtimeData.DateTime getTimeStamp();
    /**
     * <code>required .DateTime time_stamp = 1;</code>
     */
    RealtimeData.DateTimeOrBuilder getTimeStampOrBuilder();

    /**
     * <code>optional .HrAlarmV2 alarm_hr = 2;</code>
     * @return Whether the alarmHr field is set.
     */
    boolean hasAlarmHr();
    /**
     * <code>optional .HrAlarmV2 alarm_hr = 2;</code>
     * @return The alarmHr.
     */
    HrAlarmV2 getAlarmHr();
    /**
     * <code>optional .HrAlarmV2 alarm_hr = 2;</code>
     */
    HrAlarmV2OrBuilder getAlarmHrOrBuilder();

    /**
     * <code>optional .Spo2AlarmV2 alarm_spo2 = 3;</code>
     * @return Whether the alarmSpo2 field is set.
     */
    boolean hasAlarmSpo2();
    /**
     * <code>optional .Spo2AlarmV2 alarm_spo2 = 3;</code>
     * @return The alarmSpo2.
     */
    Spo2AlarmV2 getAlarmSpo2();
    /**
     * <code>optional .Spo2AlarmV2 alarm_spo2 = 3;</code>
     */
    Spo2AlarmV2OrBuilder getAlarmSpo2OrBuilder();

    /**
     * <code>optional .ThrombusAlarmV2 alarm_Thrombus = 4;</code>
     * @return Whether the alarmThrombus field is set.
     */
    boolean hasAlarmThrombus();
    /**
     * <code>optional .ThrombusAlarmV2 alarm_Thrombus = 4;</code>
     * @return The alarmThrombus.
     */
    ThrombusAlarmV2 getAlarmThrombus();
    /**
     * <code>optional .ThrombusAlarmV2 alarm_Thrombus = 4;</code>
     */
    ThrombusAlarmV2OrBuilder getAlarmThrombusOrBuilder();

    /**
     * <code>optional .FallAlarmConfV2 alarm_fall = 5;</code>
     * @return Whether the alarmFall field is set.
     */
    boolean hasAlarmFall();
    /**
     * <code>optional .FallAlarmConfV2 alarm_fall = 5;</code>
     * @return The alarmFall.
     */
    FallAlarmConfV2 getAlarmFall();
    /**
     * <code>optional .FallAlarmConfV2 alarm_fall = 5;</code>
     */
    FallAlarmConfV2OrBuilder getAlarmFallOrBuilder();
  }
  /**
   * Protobuf type {@code HealthAlarmV2}
   */
  public  static final class HealthAlarmV2 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:HealthAlarmV2)
      HealthAlarmV2OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use HealthAlarmV2.newBuilder() to construct.
    private HealthAlarmV2(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private HealthAlarmV2() {
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new HealthAlarmV2();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private HealthAlarmV2(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              RealtimeData.DateTime.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = timeStamp_.toBuilder();
              }
              timeStamp_ = input.readMessage(RealtimeData.DateTime.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(timeStamp_);
                timeStamp_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              HrAlarmV2.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) != 0)) {
                subBuilder = alarmHr_.toBuilder();
              }
              alarmHr_ = input.readMessage(HrAlarmV2.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(alarmHr_);
                alarmHr_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              Spo2AlarmV2.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) != 0)) {
                subBuilder = alarmSpo2_.toBuilder();
              }
              alarmSpo2_ = input.readMessage(Spo2AlarmV2.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(alarmSpo2_);
                alarmSpo2_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 34: {
              ThrombusAlarmV2.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) != 0)) {
                subBuilder = alarmThrombus_.toBuilder();
              }
              alarmThrombus_ = input.readMessage(ThrombusAlarmV2.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(alarmThrombus_);
                alarmThrombus_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 42: {
              FallAlarmConfV2.Builder subBuilder = null;
              if (((bitField0_ & 0x00000010) != 0)) {
                subBuilder = alarmFall_.toBuilder();
              }
              alarmFall_ = input.readMessage(FallAlarmConfV2.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(alarmFall_);
                alarmFall_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000010;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return PhoneBook.internal_static_HealthAlarmV2_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return PhoneBook.internal_static_HealthAlarmV2_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              HealthAlarmV2.class, Builder.class);
    }

    private int bitField0_;
    public static final int TIME_STAMP_FIELD_NUMBER = 1;
    private RealtimeData.DateTime timeStamp_;
    /**
     * <code>required .DateTime time_stamp = 1;</code>
     * @return Whether the timeStamp field is set.
     */
    public boolean hasTimeStamp() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required .DateTime time_stamp = 1;</code>
     * @return The timeStamp.
     */
    public RealtimeData.DateTime getTimeStamp() {
      return timeStamp_ == null ? RealtimeData.DateTime.getDefaultInstance() : timeStamp_;
    }
    /**
     * <code>required .DateTime time_stamp = 1;</code>
     */
    public RealtimeData.DateTimeOrBuilder getTimeStampOrBuilder() {
      return timeStamp_ == null ? RealtimeData.DateTime.getDefaultInstance() : timeStamp_;
    }

    public static final int ALARM_HR_FIELD_NUMBER = 2;
    private HrAlarmV2 alarmHr_;
    /**
     * <code>optional .HrAlarmV2 alarm_hr = 2;</code>
     * @return Whether the alarmHr field is set.
     */
    public boolean hasAlarmHr() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional .HrAlarmV2 alarm_hr = 2;</code>
     * @return The alarmHr.
     */
    public HrAlarmV2 getAlarmHr() {
      return alarmHr_ == null ? HrAlarmV2.getDefaultInstance() : alarmHr_;
    }
    /**
     * <code>optional .HrAlarmV2 alarm_hr = 2;</code>
     */
    public HrAlarmV2OrBuilder getAlarmHrOrBuilder() {
      return alarmHr_ == null ? HrAlarmV2.getDefaultInstance() : alarmHr_;
    }

    public static final int ALARM_SPO2_FIELD_NUMBER = 3;
    private Spo2AlarmV2 alarmSpo2_;
    /**
     * <code>optional .Spo2AlarmV2 alarm_spo2 = 3;</code>
     * @return Whether the alarmSpo2 field is set.
     */
    public boolean hasAlarmSpo2() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional .Spo2AlarmV2 alarm_spo2 = 3;</code>
     * @return The alarmSpo2.
     */
    public Spo2AlarmV2 getAlarmSpo2() {
      return alarmSpo2_ == null ? Spo2AlarmV2.getDefaultInstance() : alarmSpo2_;
    }
    /**
     * <code>optional .Spo2AlarmV2 alarm_spo2 = 3;</code>
     */
    public Spo2AlarmV2OrBuilder getAlarmSpo2OrBuilder() {
      return alarmSpo2_ == null ? Spo2AlarmV2.getDefaultInstance() : alarmSpo2_;
    }

    public static final int ALARM_THROMBUS_FIELD_NUMBER = 4;
    private ThrombusAlarmV2 alarmThrombus_;
    /**
     * <code>optional .ThrombusAlarmV2 alarm_Thrombus = 4;</code>
     * @return Whether the alarmThrombus field is set.
     */
    public boolean hasAlarmThrombus() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional .ThrombusAlarmV2 alarm_Thrombus = 4;</code>
     * @return The alarmThrombus.
     */
    public ThrombusAlarmV2 getAlarmThrombus() {
      return alarmThrombus_ == null ? ThrombusAlarmV2.getDefaultInstance() : alarmThrombus_;
    }
    /**
     * <code>optional .ThrombusAlarmV2 alarm_Thrombus = 4;</code>
     */
    public ThrombusAlarmV2OrBuilder getAlarmThrombusOrBuilder() {
      return alarmThrombus_ == null ? ThrombusAlarmV2.getDefaultInstance() : alarmThrombus_;
    }

    public static final int ALARM_FALL_FIELD_NUMBER = 5;
    private FallAlarmConfV2 alarmFall_;
    /**
     * <code>optional .FallAlarmConfV2 alarm_fall = 5;</code>
     * @return Whether the alarmFall field is set.
     */
    public boolean hasAlarmFall() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>optional .FallAlarmConfV2 alarm_fall = 5;</code>
     * @return The alarmFall.
     */
    public FallAlarmConfV2 getAlarmFall() {
      return alarmFall_ == null ? FallAlarmConfV2.getDefaultInstance() : alarmFall_;
    }
    /**
     * <code>optional .FallAlarmConfV2 alarm_fall = 5;</code>
     */
    public FallAlarmConfV2OrBuilder getAlarmFallOrBuilder() {
      return alarmFall_ == null ? FallAlarmConfV2.getDefaultInstance() : alarmFall_;
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasTimeStamp()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getTimeStamp().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasAlarmHr()) {
        if (!getAlarmHr().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasAlarmSpo2()) {
        if (!getAlarmSpo2().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasAlarmThrombus()) {
        if (!getAlarmThrombus().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasAlarmFall()) {
        if (!getAlarmFall().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getTimeStamp());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getAlarmHr());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getAlarmSpo2());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getAlarmThrombus());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(5, getAlarmFall());
      }
      unknownFields.writeTo(output);
    }

    @Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getTimeStamp());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getAlarmHr());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getAlarmSpo2());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getAlarmThrombus());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getAlarmFall());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof HealthAlarmV2)) {
        return super.equals(obj);
      }
      HealthAlarmV2 other = (HealthAlarmV2) obj;

      if (hasTimeStamp() != other.hasTimeStamp()) return false;
      if (hasTimeStamp()) {
        if (!getTimeStamp()
            .equals(other.getTimeStamp())) return false;
      }
      if (hasAlarmHr() != other.hasAlarmHr()) return false;
      if (hasAlarmHr()) {
        if (!getAlarmHr()
            .equals(other.getAlarmHr())) return false;
      }
      if (hasAlarmSpo2() != other.hasAlarmSpo2()) return false;
      if (hasAlarmSpo2()) {
        if (!getAlarmSpo2()
            .equals(other.getAlarmSpo2())) return false;
      }
      if (hasAlarmThrombus() != other.hasAlarmThrombus()) return false;
      if (hasAlarmThrombus()) {
        if (!getAlarmThrombus()
            .equals(other.getAlarmThrombus())) return false;
      }
      if (hasAlarmFall() != other.hasAlarmFall()) return false;
      if (hasAlarmFall()) {
        if (!getAlarmFall()
            .equals(other.getAlarmFall())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasTimeStamp()) {
        hash = (37 * hash) + TIME_STAMP_FIELD_NUMBER;
        hash = (53 * hash) + getTimeStamp().hashCode();
      }
      if (hasAlarmHr()) {
        hash = (37 * hash) + ALARM_HR_FIELD_NUMBER;
        hash = (53 * hash) + getAlarmHr().hashCode();
      }
      if (hasAlarmSpo2()) {
        hash = (37 * hash) + ALARM_SPO2_FIELD_NUMBER;
        hash = (53 * hash) + getAlarmSpo2().hashCode();
      }
      if (hasAlarmThrombus()) {
        hash = (37 * hash) + ALARM_THROMBUS_FIELD_NUMBER;
        hash = (53 * hash) + getAlarmThrombus().hashCode();
      }
      if (hasAlarmFall()) {
        hash = (37 * hash) + ALARM_FALL_FIELD_NUMBER;
        hash = (53 * hash) + getAlarmFall().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static HealthAlarmV2 parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static HealthAlarmV2 parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static HealthAlarmV2 parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static HealthAlarmV2 parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static HealthAlarmV2 parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static HealthAlarmV2 parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static HealthAlarmV2 parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static HealthAlarmV2 parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static HealthAlarmV2 parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static HealthAlarmV2 parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static HealthAlarmV2 parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static HealthAlarmV2 parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(HealthAlarmV2 prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code HealthAlarmV2}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:HealthAlarmV2)
        HealthAlarmV2OrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return PhoneBook.internal_static_HealthAlarmV2_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return PhoneBook.internal_static_HealthAlarmV2_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                HealthAlarmV2.class, Builder.class);
      }

      // Construct using PhoneBook.HealthAlarmV2.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTimeStampFieldBuilder();
          getAlarmHrFieldBuilder();
          getAlarmSpo2FieldBuilder();
          getAlarmThrombusFieldBuilder();
          getAlarmFallFieldBuilder();
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        if (timeStampBuilder_ == null) {
          timeStamp_ = null;
        } else {
          timeStampBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (alarmHrBuilder_ == null) {
          alarmHr_ = null;
        } else {
          alarmHrBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (alarmSpo2Builder_ == null) {
          alarmSpo2_ = null;
        } else {
          alarmSpo2Builder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        if (alarmThrombusBuilder_ == null) {
          alarmThrombus_ = null;
        } else {
          alarmThrombusBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        if (alarmFallBuilder_ == null) {
          alarmFall_ = null;
        } else {
          alarmFallBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return PhoneBook.internal_static_HealthAlarmV2_descriptor;
      }

      @Override
      public HealthAlarmV2 getDefaultInstanceForType() {
        return HealthAlarmV2.getDefaultInstance();
      }

      @Override
      public HealthAlarmV2 build() {
        HealthAlarmV2 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public HealthAlarmV2 buildPartial() {
        HealthAlarmV2 result = new HealthAlarmV2(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (timeStampBuilder_ == null) {
            result.timeStamp_ = timeStamp_;
          } else {
            result.timeStamp_ = timeStampBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          if (alarmHrBuilder_ == null) {
            result.alarmHr_ = alarmHr_;
          } else {
            result.alarmHr_ = alarmHrBuilder_.build();
          }
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          if (alarmSpo2Builder_ == null) {
            result.alarmSpo2_ = alarmSpo2_;
          } else {
            result.alarmSpo2_ = alarmSpo2Builder_.build();
          }
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          if (alarmThrombusBuilder_ == null) {
            result.alarmThrombus_ = alarmThrombus_;
          } else {
            result.alarmThrombus_ = alarmThrombusBuilder_.build();
          }
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          if (alarmFallBuilder_ == null) {
            result.alarmFall_ = alarmFall_;
          } else {
            result.alarmFall_ = alarmFallBuilder_.build();
          }
          to_bitField0_ |= 0x00000010;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof HealthAlarmV2) {
          return mergeFrom((HealthAlarmV2)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(HealthAlarmV2 other) {
        if (other == HealthAlarmV2.getDefaultInstance()) return this;
        if (other.hasTimeStamp()) {
          mergeTimeStamp(other.getTimeStamp());
        }
        if (other.hasAlarmHr()) {
          mergeAlarmHr(other.getAlarmHr());
        }
        if (other.hasAlarmSpo2()) {
          mergeAlarmSpo2(other.getAlarmSpo2());
        }
        if (other.hasAlarmThrombus()) {
          mergeAlarmThrombus(other.getAlarmThrombus());
        }
        if (other.hasAlarmFall()) {
          mergeAlarmFall(other.getAlarmFall());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @Override
      public final boolean isInitialized() {
        if (!hasTimeStamp()) {
          return false;
        }
        if (!getTimeStamp().isInitialized()) {
          return false;
        }
        if (hasAlarmHr()) {
          if (!getAlarmHr().isInitialized()) {
            return false;
          }
        }
        if (hasAlarmSpo2()) {
          if (!getAlarmSpo2().isInitialized()) {
            return false;
          }
        }
        if (hasAlarmThrombus()) {
          if (!getAlarmThrombus().isInitialized()) {
            return false;
          }
        }
        if (hasAlarmFall()) {
          if (!getAlarmFall().isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        HealthAlarmV2 parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (HealthAlarmV2) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private RealtimeData.DateTime timeStamp_;
      private com.google.protobuf.SingleFieldBuilderV3<
          RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder> timeStampBuilder_;
      /**
       * <code>required .DateTime time_stamp = 1;</code>
       * @return Whether the timeStamp field is set.
       */
      public boolean hasTimeStamp() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .DateTime time_stamp = 1;</code>
       * @return The timeStamp.
       */
      public RealtimeData.DateTime getTimeStamp() {
        if (timeStampBuilder_ == null) {
          return timeStamp_ == null ? RealtimeData.DateTime.getDefaultInstance() : timeStamp_;
        } else {
          return timeStampBuilder_.getMessage();
        }
      }
      /**
       * <code>required .DateTime time_stamp = 1;</code>
       */
      public Builder setTimeStamp(RealtimeData.DateTime value) {
        if (timeStampBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          timeStamp_ = value;
          onChanged();
        } else {
          timeStampBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .DateTime time_stamp = 1;</code>
       */
      public Builder setTimeStamp(
          RealtimeData.DateTime.Builder builderForValue) {
        if (timeStampBuilder_ == null) {
          timeStamp_ = builderForValue.build();
          onChanged();
        } else {
          timeStampBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .DateTime time_stamp = 1;</code>
       */
      public Builder mergeTimeStamp(RealtimeData.DateTime value) {
        if (timeStampBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              timeStamp_ != null &&
              timeStamp_ != RealtimeData.DateTime.getDefaultInstance()) {
            timeStamp_ =
              RealtimeData.DateTime.newBuilder(timeStamp_).mergeFrom(value).buildPartial();
          } else {
            timeStamp_ = value;
          }
          onChanged();
        } else {
          timeStampBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .DateTime time_stamp = 1;</code>
       */
      public Builder clearTimeStamp() {
        if (timeStampBuilder_ == null) {
          timeStamp_ = null;
          onChanged();
        } else {
          timeStampBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <code>required .DateTime time_stamp = 1;</code>
       */
      public RealtimeData.DateTime.Builder getTimeStampBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getTimeStampFieldBuilder().getBuilder();
      }
      /**
       * <code>required .DateTime time_stamp = 1;</code>
       */
      public RealtimeData.DateTimeOrBuilder getTimeStampOrBuilder() {
        if (timeStampBuilder_ != null) {
          return timeStampBuilder_.getMessageOrBuilder();
        } else {
          return timeStamp_ == null ?
              RealtimeData.DateTime.getDefaultInstance() : timeStamp_;
        }
      }
      /**
       * <code>required .DateTime time_stamp = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder>
          getTimeStampFieldBuilder() {
        if (timeStampBuilder_ == null) {
          timeStampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder>(
                  getTimeStamp(),
                  getParentForChildren(),
                  isClean());
          timeStamp_ = null;
        }
        return timeStampBuilder_;
      }

      private HrAlarmV2 alarmHr_;
      private com.google.protobuf.SingleFieldBuilderV3<
          HrAlarmV2, HrAlarmV2.Builder, HrAlarmV2OrBuilder> alarmHrBuilder_;
      /**
       * <code>optional .HrAlarmV2 alarm_hr = 2;</code>
       * @return Whether the alarmHr field is set.
       */
      public boolean hasAlarmHr() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional .HrAlarmV2 alarm_hr = 2;</code>
       * @return The alarmHr.
       */
      public HrAlarmV2 getAlarmHr() {
        if (alarmHrBuilder_ == null) {
          return alarmHr_ == null ? HrAlarmV2.getDefaultInstance() : alarmHr_;
        } else {
          return alarmHrBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .HrAlarmV2 alarm_hr = 2;</code>
       */
      public Builder setAlarmHr(HrAlarmV2 value) {
        if (alarmHrBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          alarmHr_ = value;
          onChanged();
        } else {
          alarmHrBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .HrAlarmV2 alarm_hr = 2;</code>
       */
      public Builder setAlarmHr(
          HrAlarmV2.Builder builderForValue) {
        if (alarmHrBuilder_ == null) {
          alarmHr_ = builderForValue.build();
          onChanged();
        } else {
          alarmHrBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .HrAlarmV2 alarm_hr = 2;</code>
       */
      public Builder mergeAlarmHr(HrAlarmV2 value) {
        if (alarmHrBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
              alarmHr_ != null &&
              alarmHr_ != HrAlarmV2.getDefaultInstance()) {
            alarmHr_ =
              HrAlarmV2.newBuilder(alarmHr_).mergeFrom(value).buildPartial();
          } else {
            alarmHr_ = value;
          }
          onChanged();
        } else {
          alarmHrBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .HrAlarmV2 alarm_hr = 2;</code>
       */
      public Builder clearAlarmHr() {
        if (alarmHrBuilder_ == null) {
          alarmHr_ = null;
          onChanged();
        } else {
          alarmHrBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <code>optional .HrAlarmV2 alarm_hr = 2;</code>
       */
      public HrAlarmV2.Builder getAlarmHrBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getAlarmHrFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .HrAlarmV2 alarm_hr = 2;</code>
       */
      public HrAlarmV2OrBuilder getAlarmHrOrBuilder() {
        if (alarmHrBuilder_ != null) {
          return alarmHrBuilder_.getMessageOrBuilder();
        } else {
          return alarmHr_ == null ?
              HrAlarmV2.getDefaultInstance() : alarmHr_;
        }
      }
      /**
       * <code>optional .HrAlarmV2 alarm_hr = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          HrAlarmV2, HrAlarmV2.Builder, HrAlarmV2OrBuilder>
          getAlarmHrFieldBuilder() {
        if (alarmHrBuilder_ == null) {
          alarmHrBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              HrAlarmV2, HrAlarmV2.Builder, HrAlarmV2OrBuilder>(
                  getAlarmHr(),
                  getParentForChildren(),
                  isClean());
          alarmHr_ = null;
        }
        return alarmHrBuilder_;
      }

      private Spo2AlarmV2 alarmSpo2_;
      private com.google.protobuf.SingleFieldBuilderV3<
          Spo2AlarmV2, Spo2AlarmV2.Builder, Spo2AlarmV2OrBuilder> alarmSpo2Builder_;
      /**
       * <code>optional .Spo2AlarmV2 alarm_spo2 = 3;</code>
       * @return Whether the alarmSpo2 field is set.
       */
      public boolean hasAlarmSpo2() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional .Spo2AlarmV2 alarm_spo2 = 3;</code>
       * @return The alarmSpo2.
       */
      public Spo2AlarmV2 getAlarmSpo2() {
        if (alarmSpo2Builder_ == null) {
          return alarmSpo2_ == null ? Spo2AlarmV2.getDefaultInstance() : alarmSpo2_;
        } else {
          return alarmSpo2Builder_.getMessage();
        }
      }
      /**
       * <code>optional .Spo2AlarmV2 alarm_spo2 = 3;</code>
       */
      public Builder setAlarmSpo2(Spo2AlarmV2 value) {
        if (alarmSpo2Builder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          alarmSpo2_ = value;
          onChanged();
        } else {
          alarmSpo2Builder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .Spo2AlarmV2 alarm_spo2 = 3;</code>
       */
      public Builder setAlarmSpo2(
          Spo2AlarmV2.Builder builderForValue) {
        if (alarmSpo2Builder_ == null) {
          alarmSpo2_ = builderForValue.build();
          onChanged();
        } else {
          alarmSpo2Builder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .Spo2AlarmV2 alarm_spo2 = 3;</code>
       */
      public Builder mergeAlarmSpo2(Spo2AlarmV2 value) {
        if (alarmSpo2Builder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
              alarmSpo2_ != null &&
              alarmSpo2_ != Spo2AlarmV2.getDefaultInstance()) {
            alarmSpo2_ =
              Spo2AlarmV2.newBuilder(alarmSpo2_).mergeFrom(value).buildPartial();
          } else {
            alarmSpo2_ = value;
          }
          onChanged();
        } else {
          alarmSpo2Builder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .Spo2AlarmV2 alarm_spo2 = 3;</code>
       */
      public Builder clearAlarmSpo2() {
        if (alarmSpo2Builder_ == null) {
          alarmSpo2_ = null;
          onChanged();
        } else {
          alarmSpo2Builder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * <code>optional .Spo2AlarmV2 alarm_spo2 = 3;</code>
       */
      public Spo2AlarmV2.Builder getAlarmSpo2Builder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getAlarmSpo2FieldBuilder().getBuilder();
      }
      /**
       * <code>optional .Spo2AlarmV2 alarm_spo2 = 3;</code>
       */
      public Spo2AlarmV2OrBuilder getAlarmSpo2OrBuilder() {
        if (alarmSpo2Builder_ != null) {
          return alarmSpo2Builder_.getMessageOrBuilder();
        } else {
          return alarmSpo2_ == null ?
              Spo2AlarmV2.getDefaultInstance() : alarmSpo2_;
        }
      }
      /**
       * <code>optional .Spo2AlarmV2 alarm_spo2 = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          Spo2AlarmV2, Spo2AlarmV2.Builder, Spo2AlarmV2OrBuilder>
          getAlarmSpo2FieldBuilder() {
        if (alarmSpo2Builder_ == null) {
          alarmSpo2Builder_ = new com.google.protobuf.SingleFieldBuilderV3<
              Spo2AlarmV2, Spo2AlarmV2.Builder, Spo2AlarmV2OrBuilder>(
                  getAlarmSpo2(),
                  getParentForChildren(),
                  isClean());
          alarmSpo2_ = null;
        }
        return alarmSpo2Builder_;
      }

      private ThrombusAlarmV2 alarmThrombus_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ThrombusAlarmV2, ThrombusAlarmV2.Builder, ThrombusAlarmV2OrBuilder> alarmThrombusBuilder_;
      /**
       * <code>optional .ThrombusAlarmV2 alarm_Thrombus = 4;</code>
       * @return Whether the alarmThrombus field is set.
       */
      public boolean hasAlarmThrombus() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional .ThrombusAlarmV2 alarm_Thrombus = 4;</code>
       * @return The alarmThrombus.
       */
      public ThrombusAlarmV2 getAlarmThrombus() {
        if (alarmThrombusBuilder_ == null) {
          return alarmThrombus_ == null ? ThrombusAlarmV2.getDefaultInstance() : alarmThrombus_;
        } else {
          return alarmThrombusBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .ThrombusAlarmV2 alarm_Thrombus = 4;</code>
       */
      public Builder setAlarmThrombus(ThrombusAlarmV2 value) {
        if (alarmThrombusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          alarmThrombus_ = value;
          onChanged();
        } else {
          alarmThrombusBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .ThrombusAlarmV2 alarm_Thrombus = 4;</code>
       */
      public Builder setAlarmThrombus(
          ThrombusAlarmV2.Builder builderForValue) {
        if (alarmThrombusBuilder_ == null) {
          alarmThrombus_ = builderForValue.build();
          onChanged();
        } else {
          alarmThrombusBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .ThrombusAlarmV2 alarm_Thrombus = 4;</code>
       */
      public Builder mergeAlarmThrombus(ThrombusAlarmV2 value) {
        if (alarmThrombusBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
              alarmThrombus_ != null &&
              alarmThrombus_ != ThrombusAlarmV2.getDefaultInstance()) {
            alarmThrombus_ =
              ThrombusAlarmV2.newBuilder(alarmThrombus_).mergeFrom(value).buildPartial();
          } else {
            alarmThrombus_ = value;
          }
          onChanged();
        } else {
          alarmThrombusBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .ThrombusAlarmV2 alarm_Thrombus = 4;</code>
       */
      public Builder clearAlarmThrombus() {
        if (alarmThrombusBuilder_ == null) {
          alarmThrombus_ = null;
          onChanged();
        } else {
          alarmThrombusBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      /**
       * <code>optional .ThrombusAlarmV2 alarm_Thrombus = 4;</code>
       */
      public ThrombusAlarmV2.Builder getAlarmThrombusBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getAlarmThrombusFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .ThrombusAlarmV2 alarm_Thrombus = 4;</code>
       */
      public ThrombusAlarmV2OrBuilder getAlarmThrombusOrBuilder() {
        if (alarmThrombusBuilder_ != null) {
          return alarmThrombusBuilder_.getMessageOrBuilder();
        } else {
          return alarmThrombus_ == null ?
              ThrombusAlarmV2.getDefaultInstance() : alarmThrombus_;
        }
      }
      /**
       * <code>optional .ThrombusAlarmV2 alarm_Thrombus = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ThrombusAlarmV2, ThrombusAlarmV2.Builder, ThrombusAlarmV2OrBuilder>
          getAlarmThrombusFieldBuilder() {
        if (alarmThrombusBuilder_ == null) {
          alarmThrombusBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ThrombusAlarmV2, ThrombusAlarmV2.Builder, ThrombusAlarmV2OrBuilder>(
                  getAlarmThrombus(),
                  getParentForChildren(),
                  isClean());
          alarmThrombus_ = null;
        }
        return alarmThrombusBuilder_;
      }

      private FallAlarmConfV2 alarmFall_;
      private com.google.protobuf.SingleFieldBuilderV3<
          FallAlarmConfV2, FallAlarmConfV2.Builder, FallAlarmConfV2OrBuilder> alarmFallBuilder_;
      /**
       * <code>optional .FallAlarmConfV2 alarm_fall = 5;</code>
       * @return Whether the alarmFall field is set.
       */
      public boolean hasAlarmFall() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional .FallAlarmConfV2 alarm_fall = 5;</code>
       * @return The alarmFall.
       */
      public FallAlarmConfV2 getAlarmFall() {
        if (alarmFallBuilder_ == null) {
          return alarmFall_ == null ? FallAlarmConfV2.getDefaultInstance() : alarmFall_;
        } else {
          return alarmFallBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .FallAlarmConfV2 alarm_fall = 5;</code>
       */
      public Builder setAlarmFall(FallAlarmConfV2 value) {
        if (alarmFallBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          alarmFall_ = value;
          onChanged();
        } else {
          alarmFallBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .FallAlarmConfV2 alarm_fall = 5;</code>
       */
      public Builder setAlarmFall(
          FallAlarmConfV2.Builder builderForValue) {
        if (alarmFallBuilder_ == null) {
          alarmFall_ = builderForValue.build();
          onChanged();
        } else {
          alarmFallBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .FallAlarmConfV2 alarm_fall = 5;</code>
       */
      public Builder mergeAlarmFall(FallAlarmConfV2 value) {
        if (alarmFallBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
              alarmFall_ != null &&
              alarmFall_ != FallAlarmConfV2.getDefaultInstance()) {
            alarmFall_ =
              FallAlarmConfV2.newBuilder(alarmFall_).mergeFrom(value).buildPartial();
          } else {
            alarmFall_ = value;
          }
          onChanged();
        } else {
          alarmFallBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .FallAlarmConfV2 alarm_fall = 5;</code>
       */
      public Builder clearAlarmFall() {
        if (alarmFallBuilder_ == null) {
          alarmFall_ = null;
          onChanged();
        } else {
          alarmFallBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }
      /**
       * <code>optional .FallAlarmConfV2 alarm_fall = 5;</code>
       */
      public FallAlarmConfV2.Builder getAlarmFallBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getAlarmFallFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .FallAlarmConfV2 alarm_fall = 5;</code>
       */
      public FallAlarmConfV2OrBuilder getAlarmFallOrBuilder() {
        if (alarmFallBuilder_ != null) {
          return alarmFallBuilder_.getMessageOrBuilder();
        } else {
          return alarmFall_ == null ?
              FallAlarmConfV2.getDefaultInstance() : alarmFall_;
        }
      }
      /**
       * <code>optional .FallAlarmConfV2 alarm_fall = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          FallAlarmConfV2, FallAlarmConfV2.Builder, FallAlarmConfV2OrBuilder>
          getAlarmFallFieldBuilder() {
        if (alarmFallBuilder_ == null) {
          alarmFallBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              FallAlarmConfV2, FallAlarmConfV2.Builder, FallAlarmConfV2OrBuilder>(
                  getAlarmFall(),
                  getParentForChildren(),
                  isClean());
          alarmFall_ = null;
        }
        return alarmFallBuilder_;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:HealthAlarmV2)
    }

    // @@protoc_insertion_point(class_scope:HealthAlarmV2)
    private static final HealthAlarmV2 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new HealthAlarmV2();
    }

    public static HealthAlarmV2 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @Deprecated public static final com.google.protobuf.Parser<HealthAlarmV2>
        PARSER = new com.google.protobuf.AbstractParser<HealthAlarmV2>() {
      @Override
      public HealthAlarmV2 parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new HealthAlarmV2(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<HealthAlarmV2> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<HealthAlarmV2> getParserForType() {
      return PARSER;
    }

    @Override
    public HealthAlarmV2 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PhoneBookInfoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:PhoneBookInfo)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required fixed32 id = 1;</code>
     * @return Whether the id field is set.
     */
    boolean hasId();
    /**
     * <code>required fixed32 id = 1;</code>
     * @return The id.
     */
    int getId();

    /**
     * <code>required bool is_sos = 2;</code>
     * @return Whether the isSos field is set.
     */
    boolean hasIsSos();
    /**
     * <code>required bool is_sos = 2;</code>
     * @return The isSos.
     */
    boolean getIsSos();

    /**
     * <code>required string name = 3;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <code>required string name = 3;</code>
     * @return The name.
     */
    String getName();
    /**
     * <code>required string name = 3;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <code>required string number = 4;</code>
     * @return Whether the number field is set.
     */
    boolean hasNumber();
    /**
     * <code>required string number = 4;</code>
     * @return The number.
     */
    String getNumber();
    /**
     * <code>required string number = 4;</code>
     * @return The bytes for number.
     */
    com.google.protobuf.ByteString
        getNumberBytes();
  }
  /**
   * Protobuf type {@code PhoneBookInfo}
   */
  public  static final class PhoneBookInfo extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:PhoneBookInfo)
      PhoneBookInfoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PhoneBookInfo.newBuilder() to construct.
    private PhoneBookInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PhoneBookInfo() {
      name_ = "";
      number_ = "";
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new PhoneBookInfo();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PhoneBookInfo(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 13: {
              bitField0_ |= 0x00000001;
              id_ = input.readFixed32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              isSos_ = input.readBool();
              break;
            }
            case 26: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000004;
              name_ = bs;
              break;
            }
            case 34: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000008;
              number_ = bs;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return PhoneBook.internal_static_PhoneBookInfo_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return PhoneBook.internal_static_PhoneBookInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              PhoneBookInfo.class, Builder.class);
    }

    private int bitField0_;
    public static final int ID_FIELD_NUMBER = 1;
    private int id_;
    /**
     * <code>required fixed32 id = 1;</code>
     * @return Whether the id field is set.
     */
    public boolean hasId() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required fixed32 id = 1;</code>
     * @return The id.
     */
    public int getId() {
      return id_;
    }

    public static final int IS_SOS_FIELD_NUMBER = 2;
    private boolean isSos_;
    /**
     * <code>required bool is_sos = 2;</code>
     * @return Whether the isSos field is set.
     */
    public boolean hasIsSos() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required bool is_sos = 2;</code>
     * @return The isSos.
     */
    public boolean getIsSos() {
      return isSos_;
    }

    public static final int NAME_FIELD_NUMBER = 3;
    private volatile Object name_;
    /**
     * <code>required string name = 3;</code>
     * @return Whether the name field is set.
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>required string name = 3;</code>
     * @return The name.
     */
    public String getName() {
      Object ref = name_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string name = 3;</code>
     * @return The bytes for name.
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      Object ref = name_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NUMBER_FIELD_NUMBER = 4;
    private volatile Object number_;
    /**
     * <code>required string number = 4;</code>
     * @return Whether the number field is set.
     */
    public boolean hasNumber() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>required string number = 4;</code>
     * @return The number.
     */
    public String getNumber() {
      Object ref = number_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          number_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string number = 4;</code>
     * @return The bytes for number.
     */
    public com.google.protobuf.ByteString
        getNumberBytes() {
      Object ref = number_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        number_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsSos()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasNumber()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeFixed32(1, id_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBool(2, isSos_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, name_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, number_);
      }
      unknownFields.writeTo(output);
    }

    @Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(1, id_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, isSos_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, name_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, number_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof PhoneBookInfo)) {
        return super.equals(obj);
      }
      PhoneBookInfo other = (PhoneBookInfo) obj;

      if (hasId() != other.hasId()) return false;
      if (hasId()) {
        if (getId()
            != other.getId()) return false;
      }
      if (hasIsSos() != other.hasIsSos()) return false;
      if (hasIsSos()) {
        if (getIsSos()
            != other.getIsSos()) return false;
      }
      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasNumber() != other.hasNumber()) return false;
      if (hasNumber()) {
        if (!getNumber()
            .equals(other.getNumber())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasId()) {
        hash = (37 * hash) + ID_FIELD_NUMBER;
        hash = (53 * hash) + getId();
      }
      if (hasIsSos()) {
        hash = (37 * hash) + IS_SOS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsSos());
      }
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (hasNumber()) {
        hash = (37 * hash) + NUMBER_FIELD_NUMBER;
        hash = (53 * hash) + getNumber().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static PhoneBookInfo parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static PhoneBookInfo parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static PhoneBookInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static PhoneBookInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static PhoneBookInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static PhoneBookInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static PhoneBookInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static PhoneBookInfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static PhoneBookInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static PhoneBookInfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static PhoneBookInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static PhoneBookInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(PhoneBookInfo prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code PhoneBookInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:PhoneBookInfo)
        PhoneBookInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return PhoneBook.internal_static_PhoneBookInfo_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return PhoneBook.internal_static_PhoneBookInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                PhoneBookInfo.class, Builder.class);
      }

      // Construct using PhoneBook.PhoneBookInfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        id_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        isSos_ = false;
        bitField0_ = (bitField0_ & ~0x00000002);
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        number_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return PhoneBook.internal_static_PhoneBookInfo_descriptor;
      }

      @Override
      public PhoneBookInfo getDefaultInstanceForType() {
        return PhoneBookInfo.getDefaultInstance();
      }

      @Override
      public PhoneBookInfo build() {
        PhoneBookInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public PhoneBookInfo buildPartial() {
        PhoneBookInfo result = new PhoneBookInfo(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.id_ = id_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.isSos_ = isSos_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          to_bitField0_ |= 0x00000004;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000008) != 0)) {
          to_bitField0_ |= 0x00000008;
        }
        result.number_ = number_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof PhoneBookInfo) {
          return mergeFrom((PhoneBookInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(PhoneBookInfo other) {
        if (other == PhoneBookInfo.getDefaultInstance()) return this;
        if (other.hasId()) {
          setId(other.getId());
        }
        if (other.hasIsSos()) {
          setIsSos(other.getIsSos());
        }
        if (other.hasName()) {
          bitField0_ |= 0x00000004;
          name_ = other.name_;
          onChanged();
        }
        if (other.hasNumber()) {
          bitField0_ |= 0x00000008;
          number_ = other.number_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @Override
      public final boolean isInitialized() {
        if (!hasId()) {
          return false;
        }
        if (!hasIsSos()) {
          return false;
        }
        if (!hasName()) {
          return false;
        }
        if (!hasNumber()) {
          return false;
        }
        return true;
      }

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        PhoneBookInfo parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (PhoneBookInfo) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int id_ ;
      /**
       * <code>required fixed32 id = 1;</code>
       * @return Whether the id field is set.
       */
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required fixed32 id = 1;</code>
       * @return The id.
       */
      public int getId() {
        return id_;
      }
      /**
       * <code>required fixed32 id = 1;</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(int value) {
        bitField0_ |= 0x00000001;
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required fixed32 id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        id_ = 0;
        onChanged();
        return this;
      }

      private boolean isSos_ ;
      /**
       * <code>required bool is_sos = 2;</code>
       * @return Whether the isSos field is set.
       */
      public boolean hasIsSos() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required bool is_sos = 2;</code>
       * @return The isSos.
       */
      public boolean getIsSos() {
        return isSos_;
      }
      /**
       * <code>required bool is_sos = 2;</code>
       * @param value The isSos to set.
       * @return This builder for chaining.
       */
      public Builder setIsSos(boolean value) {
        bitField0_ |= 0x00000002;
        isSos_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required bool is_sos = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsSos() {
        bitField0_ = (bitField0_ & ~0x00000002);
        isSos_ = false;
        onChanged();
        return this;
      }

      private Object name_ = "";
      /**
       * <code>required string name = 3;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>required string name = 3;</code>
       * @return The name.
       */
      public String getName() {
        Object ref = name_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>required string name = 3;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string name = 3;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string name = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000004);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>required string name = 3;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        name_ = value;
        onChanged();
        return this;
      }

      private Object number_ = "";
      /**
       * <code>required string number = 4;</code>
       * @return Whether the number field is set.
       */
      public boolean hasNumber() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>required string number = 4;</code>
       * @return The number.
       */
      public String getNumber() {
        Object ref = number_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            number_ = s;
          }
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>required string number = 4;</code>
       * @return The bytes for number.
       */
      public com.google.protobuf.ByteString
          getNumberBytes() {
        Object ref = number_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          number_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string number = 4;</code>
       * @param value The number to set.
       * @return This builder for chaining.
       */
      public Builder setNumber(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        number_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string number = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearNumber() {
        bitField0_ = (bitField0_ & ~0x00000008);
        number_ = getDefaultInstance().getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>required string number = 4;</code>
       * @param value The bytes for number to set.
       * @return This builder for chaining.
       */
      public Builder setNumberBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        number_ = value;
        onChanged();
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:PhoneBookInfo)
    }

    // @@protoc_insertion_point(class_scope:PhoneBookInfo)
    private static final PhoneBookInfo DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new PhoneBookInfo();
    }

    public static PhoneBookInfo getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @Deprecated public static final com.google.protobuf.Parser<PhoneBookInfo>
        PARSER = new com.google.protobuf.AbstractParser<PhoneBookInfo>() {
      @Override
      public PhoneBookInfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PhoneBookInfo(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<PhoneBookInfo> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<PhoneBookInfo> getParserForType() {
      return PARSER;
    }

    @Override
    public PhoneBookInfo getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PhoneBookNotifyOrBuilder extends
      // @@protoc_insertion_point(interface_extends:PhoneBookNotify)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required .PhoneOperation opt = 1;</code>
     * @return Whether the opt field is set.
     */
    boolean hasOpt();
    /**
     * <code>required .PhoneOperation opt = 1;</code>
     * @return The opt.
     */
    PhoneOperation getOpt();

    /**
     * <code>repeated .PhoneBookInfo info = 2;</code>
     */
    java.util.List<PhoneBookInfo>
        getInfoList();
    /**
     * <code>repeated .PhoneBookInfo info = 2;</code>
     */
    PhoneBookInfo getInfo(int index);
    /**
     * <code>repeated .PhoneBookInfo info = 2;</code>
     */
    int getInfoCount();
    /**
     * <code>repeated .PhoneBookInfo info = 2;</code>
     */
    java.util.List<? extends PhoneBookInfoOrBuilder>
        getInfoOrBuilderList();
    /**
     * <code>repeated .PhoneBookInfo info = 2;</code>
     */
    PhoneBookInfoOrBuilder getInfoOrBuilder(
        int index);

    /**
     * <code>optional bool PhoneIntercept = 3;</code>
     * @return Whether the phoneIntercept field is set.
     */
    boolean hasPhoneIntercept();
    /**
     * <code>optional bool PhoneIntercept = 3;</code>
     * @return The phoneIntercept.
     */
    boolean getPhoneIntercept();
  }
  /**
   * Protobuf type {@code PhoneBookNotify}
   */
  public  static final class PhoneBookNotify extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:PhoneBookNotify)
      PhoneBookNotifyOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PhoneBookNotify.newBuilder() to construct.
    private PhoneBookNotify(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PhoneBookNotify() {
      opt_ = 1;
      info_ = java.util.Collections.emptyList();
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new PhoneBookNotify();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PhoneBookNotify(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {
              int rawValue = input.readEnum();
                @SuppressWarnings("deprecation")
              PhoneOperation value = PhoneOperation.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(1, rawValue);
              } else {
                bitField0_ |= 0x00000001;
                opt_ = rawValue;
              }
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                info_ = new java.util.ArrayList<PhoneBookInfo>();
                mutable_bitField0_ |= 0x00000002;
              }
              info_.add(
                  input.readMessage(PhoneBookInfo.PARSER, extensionRegistry));
              break;
            }
            case 24: {
              bitField0_ |= 0x00000002;
              phoneIntercept_ = input.readBool();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) != 0)) {
          info_ = java.util.Collections.unmodifiableList(info_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return PhoneBook.internal_static_PhoneBookNotify_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return PhoneBook.internal_static_PhoneBookNotify_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              PhoneBookNotify.class, Builder.class);
    }

    private int bitField0_;
    public static final int OPT_FIELD_NUMBER = 1;
    private int opt_;
    /**
     * <code>required .PhoneOperation opt = 1;</code>
     * @return Whether the opt field is set.
     */
    public boolean hasOpt() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required .PhoneOperation opt = 1;</code>
     * @return The opt.
     */
    public PhoneOperation getOpt() {
      @SuppressWarnings("deprecation")
      PhoneOperation result = PhoneOperation.valueOf(opt_);
      return result == null ? PhoneOperation.ADD : result;
    }

    public static final int INFO_FIELD_NUMBER = 2;
    private java.util.List<PhoneBookInfo> info_;
    /**
     * <code>repeated .PhoneBookInfo info = 2;</code>
     */
    public java.util.List<PhoneBookInfo> getInfoList() {
      return info_;
    }
    /**
     * <code>repeated .PhoneBookInfo info = 2;</code>
     */
    public java.util.List<? extends PhoneBookInfoOrBuilder>
        getInfoOrBuilderList() {
      return info_;
    }
    /**
     * <code>repeated .PhoneBookInfo info = 2;</code>
     */
    public int getInfoCount() {
      return info_.size();
    }
    /**
     * <code>repeated .PhoneBookInfo info = 2;</code>
     */
    public PhoneBookInfo getInfo(int index) {
      return info_.get(index);
    }
    /**
     * <code>repeated .PhoneBookInfo info = 2;</code>
     */
    public PhoneBookInfoOrBuilder getInfoOrBuilder(
        int index) {
      return info_.get(index);
    }

    public static final int PHONEINTERCEPT_FIELD_NUMBER = 3;
    private boolean phoneIntercept_;
    /**
     * <code>optional bool PhoneIntercept = 3;</code>
     * @return Whether the phoneIntercept field is set.
     */
    public boolean hasPhoneIntercept() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional bool PhoneIntercept = 3;</code>
     * @return The phoneIntercept.
     */
    public boolean getPhoneIntercept() {
      return phoneIntercept_;
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasOpt()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getInfoCount(); i++) {
        if (!getInfo(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeEnum(1, opt_);
      }
      for (int i = 0; i < info_.size(); i++) {
        output.writeMessage(2, info_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBool(3, phoneIntercept_);
      }
      unknownFields.writeTo(output);
    }

    @Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, opt_);
      }
      for (int i = 0; i < info_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, info_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, phoneIntercept_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof PhoneBookNotify)) {
        return super.equals(obj);
      }
      PhoneBookNotify other = (PhoneBookNotify) obj;

      if (hasOpt() != other.hasOpt()) return false;
      if (hasOpt()) {
        if (opt_ != other.opt_) return false;
      }
      if (!getInfoList()
          .equals(other.getInfoList())) return false;
      if (hasPhoneIntercept() != other.hasPhoneIntercept()) return false;
      if (hasPhoneIntercept()) {
        if (getPhoneIntercept()
            != other.getPhoneIntercept()) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasOpt()) {
        hash = (37 * hash) + OPT_FIELD_NUMBER;
        hash = (53 * hash) + opt_;
      }
      if (getInfoCount() > 0) {
        hash = (37 * hash) + INFO_FIELD_NUMBER;
        hash = (53 * hash) + getInfoList().hashCode();
      }
      if (hasPhoneIntercept()) {
        hash = (37 * hash) + PHONEINTERCEPT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getPhoneIntercept());
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static PhoneBookNotify parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static PhoneBookNotify parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static PhoneBookNotify parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static PhoneBookNotify parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static PhoneBookNotify parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static PhoneBookNotify parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static PhoneBookNotify parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static PhoneBookNotify parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static PhoneBookNotify parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static PhoneBookNotify parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static PhoneBookNotify parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static PhoneBookNotify parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(PhoneBookNotify prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code PhoneBookNotify}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:PhoneBookNotify)
        PhoneBookNotifyOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return PhoneBook.internal_static_PhoneBookNotify_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return PhoneBook.internal_static_PhoneBookNotify_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                PhoneBookNotify.class, Builder.class);
      }

      // Construct using PhoneBook.PhoneBookNotify.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getInfoFieldBuilder();
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        opt_ = 1;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (infoBuilder_ == null) {
          info_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          infoBuilder_.clear();
        }
        phoneIntercept_ = false;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return PhoneBook.internal_static_PhoneBookNotify_descriptor;
      }

      @Override
      public PhoneBookNotify getDefaultInstanceForType() {
        return PhoneBookNotify.getDefaultInstance();
      }

      @Override
      public PhoneBookNotify build() {
        PhoneBookNotify result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public PhoneBookNotify buildPartial() {
        PhoneBookNotify result = new PhoneBookNotify(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          to_bitField0_ |= 0x00000001;
        }
        result.opt_ = opt_;
        if (infoBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            info_ = java.util.Collections.unmodifiableList(info_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.info_ = info_;
        } else {
          result.info_ = infoBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.phoneIntercept_ = phoneIntercept_;
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof PhoneBookNotify) {
          return mergeFrom((PhoneBookNotify)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(PhoneBookNotify other) {
        if (other == PhoneBookNotify.getDefaultInstance()) return this;
        if (other.hasOpt()) {
          setOpt(other.getOpt());
        }
        if (infoBuilder_ == null) {
          if (!other.info_.isEmpty()) {
            if (info_.isEmpty()) {
              info_ = other.info_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureInfoIsMutable();
              info_.addAll(other.info_);
            }
            onChanged();
          }
        } else {
          if (!other.info_.isEmpty()) {
            if (infoBuilder_.isEmpty()) {
              infoBuilder_.dispose();
              infoBuilder_ = null;
              info_ = other.info_;
              bitField0_ = (bitField0_ & ~0x00000002);
              infoBuilder_ =
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getInfoFieldBuilder() : null;
            } else {
              infoBuilder_.addAllMessages(other.info_);
            }
          }
        }
        if (other.hasPhoneIntercept()) {
          setPhoneIntercept(other.getPhoneIntercept());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @Override
      public final boolean isInitialized() {
        if (!hasOpt()) {
          return false;
        }
        for (int i = 0; i < getInfoCount(); i++) {
          if (!getInfo(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        PhoneBookNotify parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (PhoneBookNotify) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int opt_ = 1;
      /**
       * <code>required .PhoneOperation opt = 1;</code>
       * @return Whether the opt field is set.
       */
      public boolean hasOpt() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .PhoneOperation opt = 1;</code>
       * @return The opt.
       */
      public PhoneOperation getOpt() {
        @SuppressWarnings("deprecation")
        PhoneOperation result = PhoneOperation.valueOf(opt_);
        return result == null ? PhoneOperation.ADD : result;
      }
      /**
       * <code>required .PhoneOperation opt = 1;</code>
       * @param value The opt to set.
       * @return This builder for chaining.
       */
      public Builder setOpt(PhoneOperation value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        opt_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>required .PhoneOperation opt = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearOpt() {
        bitField0_ = (bitField0_ & ~0x00000001);
        opt_ = 1;
        onChanged();
        return this;
      }

      private java.util.List<PhoneBookInfo> info_ =
        java.util.Collections.emptyList();
      private void ensureInfoIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          info_ = new java.util.ArrayList<PhoneBookInfo>(info_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          PhoneBookInfo, PhoneBookInfo.Builder, PhoneBookInfoOrBuilder> infoBuilder_;

      /**
       * <code>repeated .PhoneBookInfo info = 2;</code>
       */
      public java.util.List<PhoneBookInfo> getInfoList() {
        if (infoBuilder_ == null) {
          return java.util.Collections.unmodifiableList(info_);
        } else {
          return infoBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .PhoneBookInfo info = 2;</code>
       */
      public int getInfoCount() {
        if (infoBuilder_ == null) {
          return info_.size();
        } else {
          return infoBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .PhoneBookInfo info = 2;</code>
       */
      public PhoneBookInfo getInfo(int index) {
        if (infoBuilder_ == null) {
          return info_.get(index);
        } else {
          return infoBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .PhoneBookInfo info = 2;</code>
       */
      public Builder setInfo(
          int index, PhoneBookInfo value) {
        if (infoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInfoIsMutable();
          info_.set(index, value);
          onChanged();
        } else {
          infoBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .PhoneBookInfo info = 2;</code>
       */
      public Builder setInfo(
          int index, PhoneBookInfo.Builder builderForValue) {
        if (infoBuilder_ == null) {
          ensureInfoIsMutable();
          info_.set(index, builderForValue.build());
          onChanged();
        } else {
          infoBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .PhoneBookInfo info = 2;</code>
       */
      public Builder addInfo(PhoneBookInfo value) {
        if (infoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInfoIsMutable();
          info_.add(value);
          onChanged();
        } else {
          infoBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .PhoneBookInfo info = 2;</code>
       */
      public Builder addInfo(
          int index, PhoneBookInfo value) {
        if (infoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInfoIsMutable();
          info_.add(index, value);
          onChanged();
        } else {
          infoBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .PhoneBookInfo info = 2;</code>
       */
      public Builder addInfo(
          PhoneBookInfo.Builder builderForValue) {
        if (infoBuilder_ == null) {
          ensureInfoIsMutable();
          info_.add(builderForValue.build());
          onChanged();
        } else {
          infoBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .PhoneBookInfo info = 2;</code>
       */
      public Builder addInfo(
          int index, PhoneBookInfo.Builder builderForValue) {
        if (infoBuilder_ == null) {
          ensureInfoIsMutable();
          info_.add(index, builderForValue.build());
          onChanged();
        } else {
          infoBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .PhoneBookInfo info = 2;</code>
       */
      public Builder addAllInfo(
          Iterable<? extends PhoneBookInfo> values) {
        if (infoBuilder_ == null) {
          ensureInfoIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, info_);
          onChanged();
        } else {
          infoBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .PhoneBookInfo info = 2;</code>
       */
      public Builder clearInfo() {
        if (infoBuilder_ == null) {
          info_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          infoBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .PhoneBookInfo info = 2;</code>
       */
      public Builder removeInfo(int index) {
        if (infoBuilder_ == null) {
          ensureInfoIsMutable();
          info_.remove(index);
          onChanged();
        } else {
          infoBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .PhoneBookInfo info = 2;</code>
       */
      public PhoneBookInfo.Builder getInfoBuilder(
          int index) {
        return getInfoFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .PhoneBookInfo info = 2;</code>
       */
      public PhoneBookInfoOrBuilder getInfoOrBuilder(
          int index) {
        if (infoBuilder_ == null) {
          return info_.get(index);  } else {
          return infoBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .PhoneBookInfo info = 2;</code>
       */
      public java.util.List<? extends PhoneBookInfoOrBuilder>
           getInfoOrBuilderList() {
        if (infoBuilder_ != null) {
          return infoBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(info_);
        }
      }
      /**
       * <code>repeated .PhoneBookInfo info = 2;</code>
       */
      public PhoneBookInfo.Builder addInfoBuilder() {
        return getInfoFieldBuilder().addBuilder(
            PhoneBookInfo.getDefaultInstance());
      }
      /**
       * <code>repeated .PhoneBookInfo info = 2;</code>
       */
      public PhoneBookInfo.Builder addInfoBuilder(
          int index) {
        return getInfoFieldBuilder().addBuilder(
            index, PhoneBookInfo.getDefaultInstance());
      }
      /**
       * <code>repeated .PhoneBookInfo info = 2;</code>
       */
      public java.util.List<PhoneBookInfo.Builder>
           getInfoBuilderList() {
        return getInfoFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          PhoneBookInfo, PhoneBookInfo.Builder, PhoneBookInfoOrBuilder>
          getInfoFieldBuilder() {
        if (infoBuilder_ == null) {
          infoBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              PhoneBookInfo, PhoneBookInfo.Builder, PhoneBookInfoOrBuilder>(
                  info_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          info_ = null;
        }
        return infoBuilder_;
      }

      private boolean phoneIntercept_ ;
      /**
       * <code>optional bool PhoneIntercept = 3;</code>
       * @return Whether the phoneIntercept field is set.
       */
      public boolean hasPhoneIntercept() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional bool PhoneIntercept = 3;</code>
       * @return The phoneIntercept.
       */
      public boolean getPhoneIntercept() {
        return phoneIntercept_;
      }
      /**
       * <code>optional bool PhoneIntercept = 3;</code>
       * @param value The phoneIntercept to set.
       * @return This builder for chaining.
       */
      public Builder setPhoneIntercept(boolean value) {
        bitField0_ |= 0x00000004;
        phoneIntercept_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool PhoneIntercept = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearPhoneIntercept() {
        bitField0_ = (bitField0_ & ~0x00000004);
        phoneIntercept_ = false;
        onChanged();
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:PhoneBookNotify)
    }

    // @@protoc_insertion_point(class_scope:PhoneBookNotify)
    private static final PhoneBookNotify DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new PhoneBookNotify();
    }

    public static PhoneBookNotify getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @Deprecated public static final com.google.protobuf.Parser<PhoneBookNotify>
        PARSER = new com.google.protobuf.AbstractParser<PhoneBookNotify>() {
      @Override
      public PhoneBookNotify parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PhoneBookNotify(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<PhoneBookNotify> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<PhoneBookNotify> getParserForType() {
      return PARSER;
    }

    @Override
    public PhoneBookNotify getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PhoneBookConfirmOrBuilder extends
      // @@protoc_insertion_point(interface_extends:PhoneBookConfirm)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required .PhoneResponse res = 1;</code>
     * @return Whether the res field is set.
     */
    boolean hasRes();
    /**
     * <code>required .PhoneResponse res = 1;</code>
     * @return The res.
     */
    PhoneResponse getRes();

    /**
     * <code>required fixed32 num = 2;</code>
     * @return Whether the num field is set.
     */
    boolean hasNum();
    /**
     * <code>required fixed32 num = 2;</code>
     * @return The num.
     */
    int getNum();

    /**
     * <code>optional .PhoneAlarminfo Alarminfo = 3;</code>
     * @return Whether the alarminfo field is set.
     */
    boolean hasAlarminfo();
    /**
     * <code>optional .PhoneAlarminfo Alarminfo = 3;</code>
     * @return The alarminfo.
     */
    PhoneAlarminfo getAlarminfo();
    /**
     * <code>optional .PhoneAlarminfo Alarminfo = 3;</code>
     */
    PhoneAlarminfoOrBuilder getAlarminfoOrBuilder();

    /**
     * <code>optional .HealthAlarmV2 alarm = 4;</code>
     * @return Whether the alarm field is set.
     */
    boolean hasAlarm();
    /**
     * <code>optional .HealthAlarmV2 alarm = 4;</code>
     * @return The alarm.
     */
    HealthAlarmV2 getAlarm();
    /**
     * <code>optional .HealthAlarmV2 alarm = 4;</code>
     */
    HealthAlarmV2OrBuilder getAlarmOrBuilder();
  }
  /**
   * Protobuf type {@code PhoneBookConfirm}
   */
  public  static final class PhoneBookConfirm extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:PhoneBookConfirm)
      PhoneBookConfirmOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PhoneBookConfirm.newBuilder() to construct.
    private PhoneBookConfirm(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PhoneBookConfirm() {
      res_ = 1;
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new PhoneBookConfirm();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PhoneBookConfirm(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {
              int rawValue = input.readEnum();
                @SuppressWarnings("deprecation")
              PhoneResponse value = PhoneResponse.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(1, rawValue);
              } else {
                bitField0_ |= 0x00000001;
                res_ = rawValue;
              }
              break;
            }
            case 21: {
              bitField0_ |= 0x00000002;
              num_ = input.readFixed32();
              break;
            }
            case 26: {
              PhoneAlarminfo.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) != 0)) {
                subBuilder = alarminfo_.toBuilder();
              }
              alarminfo_ = input.readMessage(PhoneAlarminfo.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(alarminfo_);
                alarminfo_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 34: {
              HealthAlarmV2.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) != 0)) {
                subBuilder = alarm_.toBuilder();
              }
              alarm_ = input.readMessage(HealthAlarmV2.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(alarm_);
                alarm_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return PhoneBook.internal_static_PhoneBookConfirm_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return PhoneBook.internal_static_PhoneBookConfirm_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              PhoneBookConfirm.class, Builder.class);
    }

    private int bitField0_;
    public static final int RES_FIELD_NUMBER = 1;
    private int res_;
    /**
     * <code>required .PhoneResponse res = 1;</code>
     * @return Whether the res field is set.
     */
    public boolean hasRes() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required .PhoneResponse res = 1;</code>
     * @return The res.
     */
    public PhoneResponse getRes() {
      @SuppressWarnings("deprecation")
      PhoneResponse result = PhoneResponse.valueOf(res_);
      return result == null ? PhoneResponse.SUCCEED : result;
    }

    public static final int NUM_FIELD_NUMBER = 2;
    private int num_;
    /**
     * <code>required fixed32 num = 2;</code>
     * @return Whether the num field is set.
     */
    public boolean hasNum() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required fixed32 num = 2;</code>
     * @return The num.
     */
    public int getNum() {
      return num_;
    }

    public static final int ALARMINFO_FIELD_NUMBER = 3;
    private PhoneAlarminfo alarminfo_;
    /**
     * <code>optional .PhoneAlarminfo Alarminfo = 3;</code>
     * @return Whether the alarminfo field is set.
     */
    public boolean hasAlarminfo() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional .PhoneAlarminfo Alarminfo = 3;</code>
     * @return The alarminfo.
     */
    public PhoneAlarminfo getAlarminfo() {
      return alarminfo_ == null ? PhoneAlarminfo.getDefaultInstance() : alarminfo_;
    }
    /**
     * <code>optional .PhoneAlarminfo Alarminfo = 3;</code>
     */
    public PhoneAlarminfoOrBuilder getAlarminfoOrBuilder() {
      return alarminfo_ == null ? PhoneAlarminfo.getDefaultInstance() : alarminfo_;
    }

    public static final int ALARM_FIELD_NUMBER = 4;
    private HealthAlarmV2 alarm_;
    /**
     * <code>optional .HealthAlarmV2 alarm = 4;</code>
     * @return Whether the alarm field is set.
     */
    public boolean hasAlarm() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional .HealthAlarmV2 alarm = 4;</code>
     * @return The alarm.
     */
    public HealthAlarmV2 getAlarm() {
      return alarm_ == null ? HealthAlarmV2.getDefaultInstance() : alarm_;
    }
    /**
     * <code>optional .HealthAlarmV2 alarm = 4;</code>
     */
    public HealthAlarmV2OrBuilder getAlarmOrBuilder() {
      return alarm_ == null ? HealthAlarmV2.getDefaultInstance() : alarm_;
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasRes()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasNum()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasAlarminfo()) {
        if (!getAlarminfo().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasAlarm()) {
        if (!getAlarm().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeEnum(1, res_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeFixed32(2, num_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getAlarminfo());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getAlarm());
      }
      unknownFields.writeTo(output);
    }

    @Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, res_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(2, num_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getAlarminfo());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getAlarm());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof PhoneBookConfirm)) {
        return super.equals(obj);
      }
      PhoneBookConfirm other = (PhoneBookConfirm) obj;

      if (hasRes() != other.hasRes()) return false;
      if (hasRes()) {
        if (res_ != other.res_) return false;
      }
      if (hasNum() != other.hasNum()) return false;
      if (hasNum()) {
        if (getNum()
            != other.getNum()) return false;
      }
      if (hasAlarminfo() != other.hasAlarminfo()) return false;
      if (hasAlarminfo()) {
        if (!getAlarminfo()
            .equals(other.getAlarminfo())) return false;
      }
      if (hasAlarm() != other.hasAlarm()) return false;
      if (hasAlarm()) {
        if (!getAlarm()
            .equals(other.getAlarm())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasRes()) {
        hash = (37 * hash) + RES_FIELD_NUMBER;
        hash = (53 * hash) + res_;
      }
      if (hasNum()) {
        hash = (37 * hash) + NUM_FIELD_NUMBER;
        hash = (53 * hash) + getNum();
      }
      if (hasAlarminfo()) {
        hash = (37 * hash) + ALARMINFO_FIELD_NUMBER;
        hash = (53 * hash) + getAlarminfo().hashCode();
      }
      if (hasAlarm()) {
        hash = (37 * hash) + ALARM_FIELD_NUMBER;
        hash = (53 * hash) + getAlarm().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static PhoneBookConfirm parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static PhoneBookConfirm parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static PhoneBookConfirm parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static PhoneBookConfirm parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static PhoneBookConfirm parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static PhoneBookConfirm parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static PhoneBookConfirm parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static PhoneBookConfirm parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static PhoneBookConfirm parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static PhoneBookConfirm parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static PhoneBookConfirm parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static PhoneBookConfirm parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(PhoneBookConfirm prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code PhoneBookConfirm}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:PhoneBookConfirm)
        PhoneBookConfirmOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return PhoneBook.internal_static_PhoneBookConfirm_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return PhoneBook.internal_static_PhoneBookConfirm_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                PhoneBookConfirm.class, Builder.class);
      }

      // Construct using PhoneBook.PhoneBookConfirm.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getAlarminfoFieldBuilder();
          getAlarmFieldBuilder();
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        res_ = 1;
        bitField0_ = (bitField0_ & ~0x00000001);
        num_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        if (alarminfoBuilder_ == null) {
          alarminfo_ = null;
        } else {
          alarminfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        if (alarmBuilder_ == null) {
          alarm_ = null;
        } else {
          alarmBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return PhoneBook.internal_static_PhoneBookConfirm_descriptor;
      }

      @Override
      public PhoneBookConfirm getDefaultInstanceForType() {
        return PhoneBookConfirm.getDefaultInstance();
      }

      @Override
      public PhoneBookConfirm build() {
        PhoneBookConfirm result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public PhoneBookConfirm buildPartial() {
        PhoneBookConfirm result = new PhoneBookConfirm(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          to_bitField0_ |= 0x00000001;
        }
        result.res_ = res_;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.num_ = num_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          if (alarminfoBuilder_ == null) {
            result.alarminfo_ = alarminfo_;
          } else {
            result.alarminfo_ = alarminfoBuilder_.build();
          }
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          if (alarmBuilder_ == null) {
            result.alarm_ = alarm_;
          } else {
            result.alarm_ = alarmBuilder_.build();
          }
          to_bitField0_ |= 0x00000008;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof PhoneBookConfirm) {
          return mergeFrom((PhoneBookConfirm)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(PhoneBookConfirm other) {
        if (other == PhoneBookConfirm.getDefaultInstance()) return this;
        if (other.hasRes()) {
          setRes(other.getRes());
        }
        if (other.hasNum()) {
          setNum(other.getNum());
        }
        if (other.hasAlarminfo()) {
          mergeAlarminfo(other.getAlarminfo());
        }
        if (other.hasAlarm()) {
          mergeAlarm(other.getAlarm());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @Override
      public final boolean isInitialized() {
        if (!hasRes()) {
          return false;
        }
        if (!hasNum()) {
          return false;
        }
        if (hasAlarminfo()) {
          if (!getAlarminfo().isInitialized()) {
            return false;
          }
        }
        if (hasAlarm()) {
          if (!getAlarm().isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        PhoneBookConfirm parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (PhoneBookConfirm) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int res_ = 1;
      /**
       * <code>required .PhoneResponse res = 1;</code>
       * @return Whether the res field is set.
       */
      public boolean hasRes() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .PhoneResponse res = 1;</code>
       * @return The res.
       */
      public PhoneResponse getRes() {
        @SuppressWarnings("deprecation")
        PhoneResponse result = PhoneResponse.valueOf(res_);
        return result == null ? PhoneResponse.SUCCEED : result;
      }
      /**
       * <code>required .PhoneResponse res = 1;</code>
       * @param value The res to set.
       * @return This builder for chaining.
       */
      public Builder setRes(PhoneResponse value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        res_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>required .PhoneResponse res = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearRes() {
        bitField0_ = (bitField0_ & ~0x00000001);
        res_ = 1;
        onChanged();
        return this;
      }

      private int num_ ;
      /**
       * <code>required fixed32 num = 2;</code>
       * @return Whether the num field is set.
       */
      public boolean hasNum() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required fixed32 num = 2;</code>
       * @return The num.
       */
      public int getNum() {
        return num_;
      }
      /**
       * <code>required fixed32 num = 2;</code>
       * @param value The num to set.
       * @return This builder for chaining.
       */
      public Builder setNum(int value) {
        bitField0_ |= 0x00000002;
        num_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required fixed32 num = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearNum() {
        bitField0_ = (bitField0_ & ~0x00000002);
        num_ = 0;
        onChanged();
        return this;
      }

      private PhoneAlarminfo alarminfo_;
      private com.google.protobuf.SingleFieldBuilderV3<
          PhoneAlarminfo, PhoneAlarminfo.Builder, PhoneAlarminfoOrBuilder> alarminfoBuilder_;
      /**
       * <code>optional .PhoneAlarminfo Alarminfo = 3;</code>
       * @return Whether the alarminfo field is set.
       */
      public boolean hasAlarminfo() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional .PhoneAlarminfo Alarminfo = 3;</code>
       * @return The alarminfo.
       */
      public PhoneAlarminfo getAlarminfo() {
        if (alarminfoBuilder_ == null) {
          return alarminfo_ == null ? PhoneAlarminfo.getDefaultInstance() : alarminfo_;
        } else {
          return alarminfoBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .PhoneAlarminfo Alarminfo = 3;</code>
       */
      public Builder setAlarminfo(PhoneAlarminfo value) {
        if (alarminfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          alarminfo_ = value;
          onChanged();
        } else {
          alarminfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .PhoneAlarminfo Alarminfo = 3;</code>
       */
      public Builder setAlarminfo(
          PhoneAlarminfo.Builder builderForValue) {
        if (alarminfoBuilder_ == null) {
          alarminfo_ = builderForValue.build();
          onChanged();
        } else {
          alarminfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .PhoneAlarminfo Alarminfo = 3;</code>
       */
      public Builder mergeAlarminfo(PhoneAlarminfo value) {
        if (alarminfoBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
              alarminfo_ != null &&
              alarminfo_ != PhoneAlarminfo.getDefaultInstance()) {
            alarminfo_ =
              PhoneAlarminfo.newBuilder(alarminfo_).mergeFrom(value).buildPartial();
          } else {
            alarminfo_ = value;
          }
          onChanged();
        } else {
          alarminfoBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .PhoneAlarminfo Alarminfo = 3;</code>
       */
      public Builder clearAlarminfo() {
        if (alarminfoBuilder_ == null) {
          alarminfo_ = null;
          onChanged();
        } else {
          alarminfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * <code>optional .PhoneAlarminfo Alarminfo = 3;</code>
       */
      public PhoneAlarminfo.Builder getAlarminfoBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getAlarminfoFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .PhoneAlarminfo Alarminfo = 3;</code>
       */
      public PhoneAlarminfoOrBuilder getAlarminfoOrBuilder() {
        if (alarminfoBuilder_ != null) {
          return alarminfoBuilder_.getMessageOrBuilder();
        } else {
          return alarminfo_ == null ?
              PhoneAlarminfo.getDefaultInstance() : alarminfo_;
        }
      }
      /**
       * <code>optional .PhoneAlarminfo Alarminfo = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          PhoneAlarminfo, PhoneAlarminfo.Builder, PhoneAlarminfoOrBuilder>
          getAlarminfoFieldBuilder() {
        if (alarminfoBuilder_ == null) {
          alarminfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              PhoneAlarminfo, PhoneAlarminfo.Builder, PhoneAlarminfoOrBuilder>(
                  getAlarminfo(),
                  getParentForChildren(),
                  isClean());
          alarminfo_ = null;
        }
        return alarminfoBuilder_;
      }

      private HealthAlarmV2 alarm_;
      private com.google.protobuf.SingleFieldBuilderV3<
          HealthAlarmV2, HealthAlarmV2.Builder, HealthAlarmV2OrBuilder> alarmBuilder_;
      /**
       * <code>optional .HealthAlarmV2 alarm = 4;</code>
       * @return Whether the alarm field is set.
       */
      public boolean hasAlarm() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional .HealthAlarmV2 alarm = 4;</code>
       * @return The alarm.
       */
      public HealthAlarmV2 getAlarm() {
        if (alarmBuilder_ == null) {
          return alarm_ == null ? HealthAlarmV2.getDefaultInstance() : alarm_;
        } else {
          return alarmBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .HealthAlarmV2 alarm = 4;</code>
       */
      public Builder setAlarm(HealthAlarmV2 value) {
        if (alarmBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          alarm_ = value;
          onChanged();
        } else {
          alarmBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .HealthAlarmV2 alarm = 4;</code>
       */
      public Builder setAlarm(
          HealthAlarmV2.Builder builderForValue) {
        if (alarmBuilder_ == null) {
          alarm_ = builderForValue.build();
          onChanged();
        } else {
          alarmBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .HealthAlarmV2 alarm = 4;</code>
       */
      public Builder mergeAlarm(HealthAlarmV2 value) {
        if (alarmBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
              alarm_ != null &&
              alarm_ != HealthAlarmV2.getDefaultInstance()) {
            alarm_ =
              HealthAlarmV2.newBuilder(alarm_).mergeFrom(value).buildPartial();
          } else {
            alarm_ = value;
          }
          onChanged();
        } else {
          alarmBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .HealthAlarmV2 alarm = 4;</code>
       */
      public Builder clearAlarm() {
        if (alarmBuilder_ == null) {
          alarm_ = null;
          onChanged();
        } else {
          alarmBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      /**
       * <code>optional .HealthAlarmV2 alarm = 4;</code>
       */
      public HealthAlarmV2.Builder getAlarmBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getAlarmFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .HealthAlarmV2 alarm = 4;</code>
       */
      public HealthAlarmV2OrBuilder getAlarmOrBuilder() {
        if (alarmBuilder_ != null) {
          return alarmBuilder_.getMessageOrBuilder();
        } else {
          return alarm_ == null ?
              HealthAlarmV2.getDefaultInstance() : alarm_;
        }
      }
      /**
       * <code>optional .HealthAlarmV2 alarm = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          HealthAlarmV2, HealthAlarmV2.Builder, HealthAlarmV2OrBuilder>
          getAlarmFieldBuilder() {
        if (alarmBuilder_ == null) {
          alarmBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              HealthAlarmV2, HealthAlarmV2.Builder, HealthAlarmV2OrBuilder>(
                  getAlarm(),
                  getParentForChildren(),
                  isClean());
          alarm_ = null;
        }
        return alarmBuilder_;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:PhoneBookConfirm)
    }

    // @@protoc_insertion_point(class_scope:PhoneBookConfirm)
    private static final PhoneBookConfirm DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new PhoneBookConfirm();
    }

    public static PhoneBookConfirm getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @Deprecated public static final com.google.protobuf.Parser<PhoneBookConfirm>
        PARSER = new com.google.protobuf.AbstractParser<PhoneBookConfirm>() {
      @Override
      public PhoneBookConfirm parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PhoneBookConfirm(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<PhoneBookConfirm> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<PhoneBookConfirm> getParserForType() {
      return PARSER;
    }

    @Override
    public PhoneBookConfirm getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_SOSGNSSINFO_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_SOSGNSSINFO_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_HrAlarmV2_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_HrAlarmV2_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Spo2AlarmV2_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Spo2AlarmV2_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_ThrombusAlarmV2_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_ThrombusAlarmV2_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_FallAlarmConfV2_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_FallAlarmConfV2_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_PhoneAlarminfo_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_PhoneAlarminfo_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_HealthAlarmV2_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_HealthAlarmV2_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_PhoneBookInfo_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_PhoneBookInfo_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_PhoneBookNotify_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_PhoneBookNotify_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_PhoneBookConfirm_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_PhoneBookConfirm_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    String[] descriptorData = {
      "\n\020phone_book.proto\032\023realtime_data.proto\"" +
      "2\n\013SOSGNSSINFO\022\021\n\tlongitude\030\001 \002(\002\022\020\n\010lat" +
      "itude\030\002 \002(\002\"\027\n\tHrAlarmV2\022\n\n\002hr\030\001 \002(\007\"\033\n\013" +
      "Spo2AlarmV2\022\014\n\004spo2\030\001 \002(\007\")\n\017ThrombusAla" +
      "rmV2\022\026\n\016Thrombus_alarm\030\001 \002(\010\"%\n\017FallAlar" +
      "mConfV2\022\022\n\nfall_alarm\030\001 \002(\010\"\316\001\n\016PhoneAla" +
      "rminfo\022\035\n\ntime_stamp\030\001 \002(\0132\t.DateTime\022\021\n" +
      "\twearstate\030\002 \001(\010\022\022\n\nsleepstate\030\003 \001(\010\022\036\n\010" +
      "gnssinfo\030\004 \001(\0132\014.SOSGNSSINFO\022\032\n\022lowpower" +
      "Percentage\030\005 \001(\007\022\032\n\022poweroffPercentage\030\006" +
      " \001(\007\022\036\n\026Phone_intercept_number\030\007 \001(\t\"\276\001\n" +
      "\rHealthAlarmV2\022\035\n\ntime_stamp\030\001 \002(\0132\t.Dat" +
      "eTime\022\034\n\010alarm_hr\030\002 \001(\0132\n.HrAlarmV2\022 \n\na" +
      "larm_spo2\030\003 \001(\0132\014.Spo2AlarmV2\022(\n\016alarm_T" +
      "hrombus\030\004 \001(\0132\020.ThrombusAlarmV2\022$\n\nalarm" +
      "_fall\030\005 \001(\0132\020.FallAlarmConfV2\"I\n\rPhoneBo" +
      "okInfo\022\n\n\002id\030\001 \002(\007\022\016\n\006is_sos\030\002 \002(\010\022\014\n\004na" +
      "me\030\003 \002(\t\022\016\n\006number\030\004 \002(\t\"e\n\017PhoneBookNot" +
      "ify\022\034\n\003opt\030\001 \002(\0162\017.PhoneOperation\022\034\n\004inf" +
      "o\030\002 \003(\0132\016.PhoneBookInfo\022\026\n\016PhoneIntercep" +
      "t\030\003 \001(\010\"\177\n\020PhoneBookConfirm\022\033\n\003res\030\001 \002(\016" +
      "2\016.PhoneResponse\022\013\n\003num\030\002 \002(\007\022\"\n\tAlarmin" +
      "fo\030\003 \001(\0132\017.PhoneAlarminfo\022\035\n\005alarm\030\004 \001(\013" +
      "2\016.HealthAlarmV2*0\n\016PhoneOperation\022\007\n\003AD" +
      "D\020\001\022\n\n\006REMOVE\020\002\022\t\n\005CLEAR\020\003*1\n\rPhoneRespo" +
      "nse\022\013\n\007SUCCEED\020\001\022\010\n\004FAIL\020\002\022\t\n\005EXIST\020\003B\tZ" +
      "\007./iwown"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          RealtimeData.getDescriptor(),
        });
    internal_static_SOSGNSSINFO_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_SOSGNSSINFO_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_SOSGNSSINFO_descriptor,
        new String[] { "Longitude", "Latitude", });
    internal_static_HrAlarmV2_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_HrAlarmV2_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_HrAlarmV2_descriptor,
        new String[] { "Hr", });
    internal_static_Spo2AlarmV2_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_Spo2AlarmV2_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Spo2AlarmV2_descriptor,
        new String[] { "Spo2", });
    internal_static_ThrombusAlarmV2_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_ThrombusAlarmV2_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_ThrombusAlarmV2_descriptor,
        new String[] { "ThrombusAlarm", });
    internal_static_FallAlarmConfV2_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_FallAlarmConfV2_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_FallAlarmConfV2_descriptor,
        new String[] { "FallAlarm", });
    internal_static_PhoneAlarminfo_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_PhoneAlarminfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_PhoneAlarminfo_descriptor,
        new String[] { "TimeStamp", "Wearstate", "Sleepstate", "Gnssinfo", "LowpowerPercentage", "PoweroffPercentage", "PhoneInterceptNumber", });
    internal_static_HealthAlarmV2_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_HealthAlarmV2_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_HealthAlarmV2_descriptor,
        new String[] { "TimeStamp", "AlarmHr", "AlarmSpo2", "AlarmThrombus", "AlarmFall", });
    internal_static_PhoneBookInfo_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_PhoneBookInfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_PhoneBookInfo_descriptor,
        new String[] { "Id", "IsSos", "Name", "Number", });
    internal_static_PhoneBookNotify_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_PhoneBookNotify_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_PhoneBookNotify_descriptor,
        new String[] { "Opt", "Info", "PhoneIntercept", });
    internal_static_PhoneBookConfirm_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_PhoneBookConfirm_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_PhoneBookConfirm_descriptor,
        new String[] { "Res", "Num", "Alarminfo", "Alarm", });
    RealtimeData.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
