// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: UnidentifiedDelivery.proto

package org.session.libsignal.protos;

public final class SignalProtos {
  private SignalProtos() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  public interface ServerCertificateOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional bytes certificate = 1;
    /**
     * <code>optional bytes certificate = 1;</code>
     */
    boolean hasCertificate();
    /**
     * <code>optional bytes certificate = 1;</code>
     */
    com.google.protobuf.ByteString getCertificate();

    // optional bytes signature = 2;
    /**
     * <code>optional bytes signature = 2;</code>
     */
    boolean hasSignature();
    /**
     * <code>optional bytes signature = 2;</code>
     */
    com.google.protobuf.ByteString getSignature();
  }
  /**
   * Protobuf type {@code signal.ServerCertificate}
   */
  public static final class ServerCertificate extends
      com.google.protobuf.GeneratedMessage
      implements ServerCertificateOrBuilder {
    // Use ServerCertificate.newBuilder() to construct.
    private ServerCertificate(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ServerCertificate(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final ServerCertificate defaultInstance;
    public static ServerCertificate getDefaultInstance() {
      return defaultInstance;
    }

    public ServerCertificate getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ServerCertificate(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              certificate_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              signature_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return SignalProtos.internal_static_signal_ServerCertificate_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return SignalProtos.internal_static_signal_ServerCertificate_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              SignalProtos.ServerCertificate.class, SignalProtos.ServerCertificate.Builder.class);
    }

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

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

    public interface CertificateOrBuilder
        extends com.google.protobuf.MessageOrBuilder {

      // optional uint32 id = 1;
      /**
       * <code>optional uint32 id = 1;</code>
       */
      boolean hasId();
      /**
       * <code>optional uint32 id = 1;</code>
       */
      int getId();

      // optional bytes key = 2;
      /**
       * <code>optional bytes key = 2;</code>
       */
      boolean hasKey();
      /**
       * <code>optional bytes key = 2;</code>
       */
      com.google.protobuf.ByteString getKey();
    }
    /**
     * Protobuf type {@code signal.ServerCertificate.Certificate}
     */
    public static final class Certificate extends
        com.google.protobuf.GeneratedMessage
        implements CertificateOrBuilder {
      // Use Certificate.newBuilder() to construct.
      private Certificate(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private Certificate(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

      private static final Certificate defaultInstance;
      public static Certificate getDefaultInstance() {
        return defaultInstance;
      }

      public Certificate getDefaultInstanceForType() {
        return defaultInstance;
      }

      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private Certificate(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        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;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                id_ = input.readUInt32();
                break;
              }
              case 18: {
                bitField0_ |= 0x00000002;
                key_ = input.readBytes();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return SignalProtos.internal_static_signal_ServerCertificate_Certificate_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return SignalProtos.internal_static_signal_ServerCertificate_Certificate_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                SignalProtos.ServerCertificate.Certificate.class, SignalProtos.ServerCertificate.Certificate.Builder.class);
      }

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

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

      private int bitField0_;
      // optional uint32 id = 1;
      public static final int ID_FIELD_NUMBER = 1;
      private int id_;
      /**
       * <code>optional uint32 id = 1;</code>
       */
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional uint32 id = 1;</code>
       */
      public int getId() {
        return id_;
      }

      // optional bytes key = 2;
      public static final int KEY_FIELD_NUMBER = 2;
      private com.google.protobuf.ByteString key_;
      /**
       * <code>optional bytes key = 2;</code>
       */
      public boolean hasKey() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional bytes key = 2;</code>
       */
      public com.google.protobuf.ByteString getKey() {
        return key_;
      }

      private void initFields() {
        id_ = 0;
        key_ = com.google.protobuf.ByteString.EMPTY;
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(1, id_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(2, key_);
        }
        getUnknownFields().writeTo(output);
      }

      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, id_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, key_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }

      public static SignalProtos.ServerCertificate.Certificate parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static SignalProtos.ServerCertificate.Certificate parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static SignalProtos.ServerCertificate.Certificate parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static SignalProtos.ServerCertificate.Certificate parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static SignalProtos.ServerCertificate.Certificate parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static SignalProtos.ServerCertificate.Certificate parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static SignalProtos.ServerCertificate.Certificate parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static SignalProtos.ServerCertificate.Certificate parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static SignalProtos.ServerCertificate.Certificate parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static SignalProtos.ServerCertificate.Certificate parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }

      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(SignalProtos.ServerCertificate.Certificate prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code signal.ServerCertificate.Certificate}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements SignalProtos.ServerCertificate.CertificateOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return SignalProtos.internal_static_signal_ServerCertificate_Certificate_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return SignalProtos.internal_static_signal_ServerCertificate_Certificate_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  SignalProtos.ServerCertificate.Certificate.class, SignalProtos.ServerCertificate.Certificate.Builder.class);
        }

        // Construct using org.session.libsignal.protos.SignalProtos.ServerCertificate.Certificate.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          }
        }
        private static Builder create() {
          return new Builder();
        }

        public Builder clear() {
          super.clear();
          id_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          key_ = com.google.protobuf.ByteString.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return SignalProtos.internal_static_signal_ServerCertificate_Certificate_descriptor;
        }

        public SignalProtos.ServerCertificate.Certificate getDefaultInstanceForType() {
          return SignalProtos.ServerCertificate.Certificate.getDefaultInstance();
        }

        public SignalProtos.ServerCertificate.Certificate build() {
          SignalProtos.ServerCertificate.Certificate result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public SignalProtos.ServerCertificate.Certificate buildPartial() {
          SignalProtos.ServerCertificate.Certificate result = new SignalProtos.ServerCertificate.Certificate(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.id_ = id_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.key_ = key_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof SignalProtos.ServerCertificate.Certificate) {
            return mergeFrom((SignalProtos.ServerCertificate.Certificate)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(SignalProtos.ServerCertificate.Certificate other) {
          if (other == SignalProtos.ServerCertificate.Certificate.getDefaultInstance()) return this;
          if (other.hasId()) {
            setId(other.getId());
          }
          if (other.hasKey()) {
            setKey(other.getKey());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }

        public final boolean isInitialized() {
          return true;
        }

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

        // optional uint32 id = 1;
        private int id_ ;
        /**
         * <code>optional uint32 id = 1;</code>
         */
        public boolean hasId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional uint32 id = 1;</code>
         */
        public int getId() {
          return id_;
        }
        /**
         * <code>optional uint32 id = 1;</code>
         */
        public Builder setId(int value) {
          bitField0_ |= 0x00000001;
          id_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 id = 1;</code>
         */
        public Builder clearId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          id_ = 0;
          onChanged();
          return this;
        }

        // optional bytes key = 2;
        private com.google.protobuf.ByteString key_ = com.google.protobuf.ByteString.EMPTY;
        /**
         * <code>optional bytes key = 2;</code>
         */
        public boolean hasKey() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional bytes key = 2;</code>
         */
        public com.google.protobuf.ByteString getKey() {
          return key_;
        }
        /**
         * <code>optional bytes key = 2;</code>
         */
        public Builder setKey(com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          key_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bytes key = 2;</code>
         */
        public Builder clearKey() {
          bitField0_ = (bitField0_ & ~0x00000002);
          key_ = getDefaultInstance().getKey();
          onChanged();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:signal.ServerCertificate.Certificate)
      }

      static {
        defaultInstance = new Certificate(true);
        defaultInstance.initFields();
      }

      // @@protoc_insertion_point(class_scope:signal.ServerCertificate.Certificate)
    }

    private int bitField0_;
    // optional bytes certificate = 1;
    public static final int CERTIFICATE_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString certificate_;
    /**
     * <code>optional bytes certificate = 1;</code>
     */
    public boolean hasCertificate() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional bytes certificate = 1;</code>
     */
    public com.google.protobuf.ByteString getCertificate() {
      return certificate_;
    }

    // optional bytes signature = 2;
    public static final int SIGNATURE_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString signature_;
    /**
     * <code>optional bytes signature = 2;</code>
     */
    public boolean hasSignature() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional bytes signature = 2;</code>
     */
    public com.google.protobuf.ByteString getSignature() {
      return signature_;
    }

    private void initFields() {
      certificate_ = com.google.protobuf.ByteString.EMPTY;
      signature_ = com.google.protobuf.ByteString.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, certificate_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, signature_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, certificate_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, signature_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static SignalProtos.ServerCertificate parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static SignalProtos.ServerCertificate parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static SignalProtos.ServerCertificate parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static SignalProtos.ServerCertificate parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static SignalProtos.ServerCertificate parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static SignalProtos.ServerCertificate parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static SignalProtos.ServerCertificate parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static SignalProtos.ServerCertificate parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static SignalProtos.ServerCertificate parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static SignalProtos.ServerCertificate parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(SignalProtos.ServerCertificate prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code signal.ServerCertificate}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements SignalProtos.ServerCertificateOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return SignalProtos.internal_static_signal_ServerCertificate_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return SignalProtos.internal_static_signal_ServerCertificate_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                SignalProtos.ServerCertificate.class, SignalProtos.ServerCertificate.Builder.class);
      }

      // Construct using org.session.libsignal.protos.SignalProtos.ServerCertificate.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        certificate_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        signature_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return SignalProtos.internal_static_signal_ServerCertificate_descriptor;
      }

      public SignalProtos.ServerCertificate getDefaultInstanceForType() {
        return SignalProtos.ServerCertificate.getDefaultInstance();
      }

      public SignalProtos.ServerCertificate build() {
        SignalProtos.ServerCertificate result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public SignalProtos.ServerCertificate buildPartial() {
        SignalProtos.ServerCertificate result = new SignalProtos.ServerCertificate(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.certificate_ = certificate_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.signature_ = signature_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof SignalProtos.ServerCertificate) {
          return mergeFrom((SignalProtos.ServerCertificate)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(SignalProtos.ServerCertificate other) {
        if (other == SignalProtos.ServerCertificate.getDefaultInstance()) return this;
        if (other.hasCertificate()) {
          setCertificate(other.getCertificate());
        }
        if (other.hasSignature()) {
          setSignature(other.getSignature());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

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

      // optional bytes certificate = 1;
      private com.google.protobuf.ByteString certificate_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes certificate = 1;</code>
       */
      public boolean hasCertificate() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional bytes certificate = 1;</code>
       */
      public com.google.protobuf.ByteString getCertificate() {
        return certificate_;
      }
      /**
       * <code>optional bytes certificate = 1;</code>
       */
      public Builder setCertificate(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        certificate_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bytes certificate = 1;</code>
       */
      public Builder clearCertificate() {
        bitField0_ = (bitField0_ & ~0x00000001);
        certificate_ = getDefaultInstance().getCertificate();
        onChanged();
        return this;
      }

      // optional bytes signature = 2;
      private com.google.protobuf.ByteString signature_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes signature = 2;</code>
       */
      public boolean hasSignature() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional bytes signature = 2;</code>
       */
      public com.google.protobuf.ByteString getSignature() {
        return signature_;
      }
      /**
       * <code>optional bytes signature = 2;</code>
       */
      public Builder setSignature(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        signature_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bytes signature = 2;</code>
       */
      public Builder clearSignature() {
        bitField0_ = (bitField0_ & ~0x00000002);
        signature_ = getDefaultInstance().getSignature();
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:signal.ServerCertificate)
    }

    static {
      defaultInstance = new ServerCertificate(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:signal.ServerCertificate)
  }

  public interface SenderCertificateOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional string sender = 1;
    /**
     * <code>optional string sender = 1;</code>
     */
    boolean hasSender();
    /**
     * <code>optional string sender = 1;</code>
     */
    java.lang.String getSender();
    /**
     * <code>optional string sender = 1;</code>
     */
    com.google.protobuf.ByteString
        getSenderBytes();

    // optional uint32 senderDevice = 2;
    /**
     * <code>optional uint32 senderDevice = 2;</code>
     */
    boolean hasSenderDevice();
    /**
     * <code>optional uint32 senderDevice = 2;</code>
     */
    int getSenderDevice();
  }
  /**
   * Protobuf type {@code signal.SenderCertificate}
   */
  public static final class SenderCertificate extends
      com.google.protobuf.GeneratedMessage
      implements SenderCertificateOrBuilder {
    // Use SenderCertificate.newBuilder() to construct.
    private SenderCertificate(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private SenderCertificate(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final SenderCertificate defaultInstance;
    public static SenderCertificate getDefaultInstance() {
      return defaultInstance;
    }

    public SenderCertificate getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private SenderCertificate(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              sender_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              senderDevice_ = input.readUInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return SignalProtos.internal_static_signal_SenderCertificate_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return SignalProtos.internal_static_signal_SenderCertificate_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              SignalProtos.SenderCertificate.class, SignalProtos.SenderCertificate.Builder.class);
    }

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

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

    private int bitField0_;
    // optional string sender = 1;
    public static final int SENDER_FIELD_NUMBER = 1;
    private java.lang.Object sender_;
    /**
     * <code>optional string sender = 1;</code>
     */
    public boolean hasSender() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional string sender = 1;</code>
     */
    public java.lang.String getSender() {
      java.lang.Object ref = sender_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          sender_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string sender = 1;</code>
     */
    public com.google.protobuf.ByteString
        getSenderBytes() {
      java.lang.Object ref = sender_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sender_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional uint32 senderDevice = 2;
    public static final int SENDERDEVICE_FIELD_NUMBER = 2;
    private int senderDevice_;
    /**
     * <code>optional uint32 senderDevice = 2;</code>
     */
    public boolean hasSenderDevice() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional uint32 senderDevice = 2;</code>
     */
    public int getSenderDevice() {
      return senderDevice_;
    }

    private void initFields() {
      sender_ = "";
      senderDevice_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getSenderBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt32(2, senderDevice_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getSenderBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, senderDevice_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static SignalProtos.SenderCertificate parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static SignalProtos.SenderCertificate parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static SignalProtos.SenderCertificate parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static SignalProtos.SenderCertificate parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static SignalProtos.SenderCertificate parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static SignalProtos.SenderCertificate parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static SignalProtos.SenderCertificate parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static SignalProtos.SenderCertificate parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static SignalProtos.SenderCertificate parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static SignalProtos.SenderCertificate parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(SignalProtos.SenderCertificate prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code signal.SenderCertificate}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements SignalProtos.SenderCertificateOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return SignalProtos.internal_static_signal_SenderCertificate_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return SignalProtos.internal_static_signal_SenderCertificate_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                SignalProtos.SenderCertificate.class, SignalProtos.SenderCertificate.Builder.class);
      }

      // Construct using org.session.libsignal.protos.SignalProtos.SenderCertificate.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        sender_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        senderDevice_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return SignalProtos.internal_static_signal_SenderCertificate_descriptor;
      }

      public SignalProtos.SenderCertificate getDefaultInstanceForType() {
        return SignalProtos.SenderCertificate.getDefaultInstance();
      }

      public SignalProtos.SenderCertificate build() {
        SignalProtos.SenderCertificate result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public SignalProtos.SenderCertificate buildPartial() {
        SignalProtos.SenderCertificate result = new SignalProtos.SenderCertificate(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.sender_ = sender_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.senderDevice_ = senderDevice_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof SignalProtos.SenderCertificate) {
          return mergeFrom((SignalProtos.SenderCertificate)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(SignalProtos.SenderCertificate other) {
        if (other == SignalProtos.SenderCertificate.getDefaultInstance()) return this;
        if (other.hasSender()) {
          bitField0_ |= 0x00000001;
          sender_ = other.sender_;
          onChanged();
        }
        if (other.hasSenderDevice()) {
          setSenderDevice(other.getSenderDevice());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

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

      // optional string sender = 1;
      private java.lang.Object sender_ = "";
      /**
       * <code>optional string sender = 1;</code>
       */
      public boolean hasSender() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional string sender = 1;</code>
       */
      public java.lang.String getSender() {
        java.lang.Object ref = sender_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          sender_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string sender = 1;</code>
       */
      public com.google.protobuf.ByteString
          getSenderBytes() {
        java.lang.Object ref = sender_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sender_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string sender = 1;</code>
       */
      public Builder setSender(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        sender_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string sender = 1;</code>
       */
      public Builder clearSender() {
        bitField0_ = (bitField0_ & ~0x00000001);
        sender_ = getDefaultInstance().getSender();
        onChanged();
        return this;
      }
      /**
       * <code>optional string sender = 1;</code>
       */
      public Builder setSenderBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        sender_ = value;
        onChanged();
        return this;
      }

      // optional uint32 senderDevice = 2;
      private int senderDevice_ ;
      /**
       * <code>optional uint32 senderDevice = 2;</code>
       */
      public boolean hasSenderDevice() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional uint32 senderDevice = 2;</code>
       */
      public int getSenderDevice() {
        return senderDevice_;
      }
      /**
       * <code>optional uint32 senderDevice = 2;</code>
       */
      public Builder setSenderDevice(int value) {
        bitField0_ |= 0x00000002;
        senderDevice_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 senderDevice = 2;</code>
       */
      public Builder clearSenderDevice() {
        bitField0_ = (bitField0_ & ~0x00000002);
        senderDevice_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:signal.SenderCertificate)
    }

    static {
      defaultInstance = new SenderCertificate(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:signal.SenderCertificate)
  }

  public interface UnidentifiedSenderMessageOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional bytes ephemeralPublic = 1;
    /**
     * <code>optional bytes ephemeralPublic = 1;</code>
     */
    boolean hasEphemeralPublic();
    /**
     * <code>optional bytes ephemeralPublic = 1;</code>
     */
    com.google.protobuf.ByteString getEphemeralPublic();

    // optional bytes encryptedStatic = 2;
    /**
     * <code>optional bytes encryptedStatic = 2;</code>
     */
    boolean hasEncryptedStatic();
    /**
     * <code>optional bytes encryptedStatic = 2;</code>
     */
    com.google.protobuf.ByteString getEncryptedStatic();

    // optional bytes encryptedMessage = 3;
    /**
     * <code>optional bytes encryptedMessage = 3;</code>
     */
    boolean hasEncryptedMessage();
    /**
     * <code>optional bytes encryptedMessage = 3;</code>
     */
    com.google.protobuf.ByteString getEncryptedMessage();
  }
  /**
   * Protobuf type {@code signal.UnidentifiedSenderMessage}
   */
  public static final class UnidentifiedSenderMessage extends
      com.google.protobuf.GeneratedMessage
      implements UnidentifiedSenderMessageOrBuilder {
    // Use UnidentifiedSenderMessage.newBuilder() to construct.
    private UnidentifiedSenderMessage(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private UnidentifiedSenderMessage(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final UnidentifiedSenderMessage defaultInstance;
    public static UnidentifiedSenderMessage getDefaultInstance() {
      return defaultInstance;
    }

    public UnidentifiedSenderMessage getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private UnidentifiedSenderMessage(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              ephemeralPublic_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              encryptedStatic_ = input.readBytes();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              encryptedMessage_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return SignalProtos.internal_static_signal_UnidentifiedSenderMessage_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return SignalProtos.internal_static_signal_UnidentifiedSenderMessage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              SignalProtos.UnidentifiedSenderMessage.class, SignalProtos.UnidentifiedSenderMessage.Builder.class);
    }

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

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

    public interface MessageOrBuilder
        extends com.google.protobuf.MessageOrBuilder {

      // optional .signal.UnidentifiedSenderMessage.Message.Type type = 1;
      /**
       * <code>optional .signal.UnidentifiedSenderMessage.Message.Type type = 1;</code>
       */
      boolean hasType();
      /**
       * <code>optional .signal.UnidentifiedSenderMessage.Message.Type type = 1;</code>
       */
      SignalProtos.UnidentifiedSenderMessage.Message.Type getType();

      // optional .signal.SenderCertificate senderCertificate = 2;
      /**
       * <code>optional .signal.SenderCertificate senderCertificate = 2;</code>
       */
      boolean hasSenderCertificate();
      /**
       * <code>optional .signal.SenderCertificate senderCertificate = 2;</code>
       */
      SignalProtos.SenderCertificate getSenderCertificate();
      /**
       * <code>optional .signal.SenderCertificate senderCertificate = 2;</code>
       */
      SignalProtos.SenderCertificateOrBuilder getSenderCertificateOrBuilder();

      // optional bytes content = 3;
      /**
       * <code>optional bytes content = 3;</code>
       */
      boolean hasContent();
      /**
       * <code>optional bytes content = 3;</code>
       */
      com.google.protobuf.ByteString getContent();
    }
    /**
     * Protobuf type {@code signal.UnidentifiedSenderMessage.Message}
     */
    public static final class Message extends
        com.google.protobuf.GeneratedMessage
        implements MessageOrBuilder {
      // Use Message.newBuilder() to construct.
      private Message(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private Message(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

      private static final Message defaultInstance;
      public static Message getDefaultInstance() {
        return defaultInstance;
      }

      public Message getDefaultInstanceForType() {
        return defaultInstance;
      }

      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private Message(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        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;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                SignalProtos.UnidentifiedSenderMessage.Message.Type value = SignalProtos.UnidentifiedSenderMessage.Message.Type.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  type_ = value;
                }
                break;
              }
              case 18: {
                SignalProtos.SenderCertificate.Builder subBuilder = null;
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                  subBuilder = senderCertificate_.toBuilder();
                }
                senderCertificate_ = input.readMessage(SignalProtos.SenderCertificate.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(senderCertificate_);
                  senderCertificate_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000002;
                break;
              }
              case 26: {
                bitField0_ |= 0x00000004;
                content_ = input.readBytes();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return SignalProtos.internal_static_signal_UnidentifiedSenderMessage_Message_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return SignalProtos.internal_static_signal_UnidentifiedSenderMessage_Message_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                SignalProtos.UnidentifiedSenderMessage.Message.class, SignalProtos.UnidentifiedSenderMessage.Message.Builder.class);
      }

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

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

      /**
       * Protobuf enum {@code signal.UnidentifiedSenderMessage.Message.Type}
       */
      public enum Type
          implements com.google.protobuf.ProtocolMessageEnum {
        /**
         * <code>PREKEY_MESSAGE = 1;</code>
         */
        PREKEY_MESSAGE(0, 1),
        /**
         * <code>MESSAGE = 2;</code>
         */
        MESSAGE(1, 2),
        /**
         * <code>FALLBACK_MESSAGE = 3;</code>
         */
        FALLBACK_MESSAGE(2, 3),
        ;

        /**
         * <code>PREKEY_MESSAGE = 1;</code>
         */
        public static final int PREKEY_MESSAGE_VALUE = 1;
        /**
         * <code>MESSAGE = 2;</code>
         */
        public static final int MESSAGE_VALUE = 2;
        /**
         * <code>FALLBACK_MESSAGE = 3;</code>
         */
        public static final int FALLBACK_MESSAGE_VALUE = 3;


        public final int getNumber() { return value; }

        public static Type valueOf(int value) {
          switch (value) {
            case 1: return PREKEY_MESSAGE;
            case 2: return MESSAGE;
            case 3: return FALLBACK_MESSAGE;
            default: return null;
          }
        }

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

        public final com.google.protobuf.Descriptors.EnumValueDescriptor
            getValueDescriptor() {
          return getDescriptor().getValues().get(index);
        }
        public final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptorForType() {
          return getDescriptor();
        }
        public static final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptor() {
          return SignalProtos.UnidentifiedSenderMessage.Message.getDescriptor().getEnumTypes().get(0);
        }

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

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

        private final int index;
        private final int value;

        private Type(int index, int value) {
          this.index = index;
          this.value = value;
        }

        // @@protoc_insertion_point(enum_scope:signal.UnidentifiedSenderMessage.Message.Type)
      }

      private int bitField0_;
      // optional .signal.UnidentifiedSenderMessage.Message.Type type = 1;
      public static final int TYPE_FIELD_NUMBER = 1;
      private SignalProtos.UnidentifiedSenderMessage.Message.Type type_;
      /**
       * <code>optional .signal.UnidentifiedSenderMessage.Message.Type type = 1;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional .signal.UnidentifiedSenderMessage.Message.Type type = 1;</code>
       */
      public SignalProtos.UnidentifiedSenderMessage.Message.Type getType() {
        return type_;
      }

      // optional .signal.SenderCertificate senderCertificate = 2;
      public static final int SENDERCERTIFICATE_FIELD_NUMBER = 2;
      private SignalProtos.SenderCertificate senderCertificate_;
      /**
       * <code>optional .signal.SenderCertificate senderCertificate = 2;</code>
       */
      public boolean hasSenderCertificate() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .signal.SenderCertificate senderCertificate = 2;</code>
       */
      public SignalProtos.SenderCertificate getSenderCertificate() {
        return senderCertificate_;
      }
      /**
       * <code>optional .signal.SenderCertificate senderCertificate = 2;</code>
       */
      public SignalProtos.SenderCertificateOrBuilder getSenderCertificateOrBuilder() {
        return senderCertificate_;
      }

      // optional bytes content = 3;
      public static final int CONTENT_FIELD_NUMBER = 3;
      private com.google.protobuf.ByteString content_;
      /**
       * <code>optional bytes content = 3;</code>
       */
      public boolean hasContent() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional bytes content = 3;</code>
       */
      public com.google.protobuf.ByteString getContent() {
        return content_;
      }

      private void initFields() {
        type_ = SignalProtos.UnidentifiedSenderMessage.Message.Type.PREKEY_MESSAGE;
        senderCertificate_ = SignalProtos.SenderCertificate.getDefaultInstance();
        content_ = com.google.protobuf.ByteString.EMPTY;
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, type_.getNumber());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeMessage(2, senderCertificate_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeBytes(3, content_);
        }
        getUnknownFields().writeTo(output);
      }

      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, type_.getNumber());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, senderCertificate_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(3, content_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }

      public static SignalProtos.UnidentifiedSenderMessage.Message parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static SignalProtos.UnidentifiedSenderMessage.Message parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static SignalProtos.UnidentifiedSenderMessage.Message parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static SignalProtos.UnidentifiedSenderMessage.Message parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static SignalProtos.UnidentifiedSenderMessage.Message parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static SignalProtos.UnidentifiedSenderMessage.Message parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static SignalProtos.UnidentifiedSenderMessage.Message parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static SignalProtos.UnidentifiedSenderMessage.Message parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static SignalProtos.UnidentifiedSenderMessage.Message parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static SignalProtos.UnidentifiedSenderMessage.Message parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }

      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(SignalProtos.UnidentifiedSenderMessage.Message prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code signal.UnidentifiedSenderMessage.Message}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements SignalProtos.UnidentifiedSenderMessage.MessageOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return SignalProtos.internal_static_signal_UnidentifiedSenderMessage_Message_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return SignalProtos.internal_static_signal_UnidentifiedSenderMessage_Message_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  SignalProtos.UnidentifiedSenderMessage.Message.class, SignalProtos.UnidentifiedSenderMessage.Message.Builder.class);
        }

        // Construct using org.session.libsignal.protos.SignalProtos.UnidentifiedSenderMessage.Message.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getSenderCertificateFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }

        public Builder clear() {
          super.clear();
          type_ = SignalProtos.UnidentifiedSenderMessage.Message.Type.PREKEY_MESSAGE;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (senderCertificateBuilder_ == null) {
            senderCertificate_ = SignalProtos.SenderCertificate.getDefaultInstance();
          } else {
            senderCertificateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          content_ = com.google.protobuf.ByteString.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }

        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return SignalProtos.internal_static_signal_UnidentifiedSenderMessage_Message_descriptor;
        }

        public SignalProtos.UnidentifiedSenderMessage.Message getDefaultInstanceForType() {
          return SignalProtos.UnidentifiedSenderMessage.Message.getDefaultInstance();
        }

        public SignalProtos.UnidentifiedSenderMessage.Message build() {
          SignalProtos.UnidentifiedSenderMessage.Message result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public SignalProtos.UnidentifiedSenderMessage.Message buildPartial() {
          SignalProtos.UnidentifiedSenderMessage.Message result = new SignalProtos.UnidentifiedSenderMessage.Message(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.type_ = type_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          if (senderCertificateBuilder_ == null) {
            result.senderCertificate_ = senderCertificate_;
          } else {
            result.senderCertificate_ = senderCertificateBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.content_ = content_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof SignalProtos.UnidentifiedSenderMessage.Message) {
            return mergeFrom((SignalProtos.UnidentifiedSenderMessage.Message)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(SignalProtos.UnidentifiedSenderMessage.Message other) {
          if (other == SignalProtos.UnidentifiedSenderMessage.Message.getDefaultInstance()) return this;
          if (other.hasType()) {
            setType(other.getType());
          }
          if (other.hasSenderCertificate()) {
            mergeSenderCertificate(other.getSenderCertificate());
          }
          if (other.hasContent()) {
            setContent(other.getContent());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }

        public final boolean isInitialized() {
          return true;
        }

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

        // optional .signal.UnidentifiedSenderMessage.Message.Type type = 1;
        private SignalProtos.UnidentifiedSenderMessage.Message.Type type_ = SignalProtos.UnidentifiedSenderMessage.Message.Type.PREKEY_MESSAGE;
        /**
         * <code>optional .signal.UnidentifiedSenderMessage.Message.Type type = 1;</code>
         */
        public boolean hasType() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional .signal.UnidentifiedSenderMessage.Message.Type type = 1;</code>
         */
        public SignalProtos.UnidentifiedSenderMessage.Message.Type getType() {
          return type_;
        }
        /**
         * <code>optional .signal.UnidentifiedSenderMessage.Message.Type type = 1;</code>
         */
        public Builder setType(SignalProtos.UnidentifiedSenderMessage.Message.Type value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          type_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional .signal.UnidentifiedSenderMessage.Message.Type type = 1;</code>
         */
        public Builder clearType() {
          bitField0_ = (bitField0_ & ~0x00000001);
          type_ = SignalProtos.UnidentifiedSenderMessage.Message.Type.PREKEY_MESSAGE;
          onChanged();
          return this;
        }

        // optional .signal.SenderCertificate senderCertificate = 2;
        private SignalProtos.SenderCertificate senderCertificate_ = SignalProtos.SenderCertificate.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            SignalProtos.SenderCertificate, SignalProtos.SenderCertificate.Builder, SignalProtos.SenderCertificateOrBuilder> senderCertificateBuilder_;
        /**
         * <code>optional .signal.SenderCertificate senderCertificate = 2;</code>
         */
        public boolean hasSenderCertificate() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional .signal.SenderCertificate senderCertificate = 2;</code>
         */
        public SignalProtos.SenderCertificate getSenderCertificate() {
          if (senderCertificateBuilder_ == null) {
            return senderCertificate_;
          } else {
            return senderCertificateBuilder_.getMessage();
          }
        }
        /**
         * <code>optional .signal.SenderCertificate senderCertificate = 2;</code>
         */
        public Builder setSenderCertificate(SignalProtos.SenderCertificate value) {
          if (senderCertificateBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            senderCertificate_ = value;
            onChanged();
          } else {
            senderCertificateBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>optional .signal.SenderCertificate senderCertificate = 2;</code>
         */
        public Builder setSenderCertificate(
            SignalProtos.SenderCertificate.Builder builderForValue) {
          if (senderCertificateBuilder_ == null) {
            senderCertificate_ = builderForValue.build();
            onChanged();
          } else {
            senderCertificateBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>optional .signal.SenderCertificate senderCertificate = 2;</code>
         */
        public Builder mergeSenderCertificate(SignalProtos.SenderCertificate value) {
          if (senderCertificateBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002) &&
                senderCertificate_ != SignalProtos.SenderCertificate.getDefaultInstance()) {
              senderCertificate_ =
                SignalProtos.SenderCertificate.newBuilder(senderCertificate_).mergeFrom(value).buildPartial();
            } else {
              senderCertificate_ = value;
            }
            onChanged();
          } else {
            senderCertificateBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>optional .signal.SenderCertificate senderCertificate = 2;</code>
         */
        public Builder clearSenderCertificate() {
          if (senderCertificateBuilder_ == null) {
            senderCertificate_ = SignalProtos.SenderCertificate.getDefaultInstance();
            onChanged();
          } else {
            senderCertificateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        /**
         * <code>optional .signal.SenderCertificate senderCertificate = 2;</code>
         */
        public SignalProtos.SenderCertificate.Builder getSenderCertificateBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getSenderCertificateFieldBuilder().getBuilder();
        }
        /**
         * <code>optional .signal.SenderCertificate senderCertificate = 2;</code>
         */
        public SignalProtos.SenderCertificateOrBuilder getSenderCertificateOrBuilder() {
          if (senderCertificateBuilder_ != null) {
            return senderCertificateBuilder_.getMessageOrBuilder();
          } else {
            return senderCertificate_;
          }
        }
        /**
         * <code>optional .signal.SenderCertificate senderCertificate = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilder<
            SignalProtos.SenderCertificate, SignalProtos.SenderCertificate.Builder, SignalProtos.SenderCertificateOrBuilder>
            getSenderCertificateFieldBuilder() {
          if (senderCertificateBuilder_ == null) {
            senderCertificateBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                SignalProtos.SenderCertificate, SignalProtos.SenderCertificate.Builder, SignalProtos.SenderCertificateOrBuilder>(
                    senderCertificate_,
                    getParentForChildren(),
                    isClean());
            senderCertificate_ = null;
          }
          return senderCertificateBuilder_;
        }

        // optional bytes content = 3;
        private com.google.protobuf.ByteString content_ = com.google.protobuf.ByteString.EMPTY;
        /**
         * <code>optional bytes content = 3;</code>
         */
        public boolean hasContent() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional bytes content = 3;</code>
         */
        public com.google.protobuf.ByteString getContent() {
          return content_;
        }
        /**
         * <code>optional bytes content = 3;</code>
         */
        public Builder setContent(com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
          content_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bytes content = 3;</code>
         */
        public Builder clearContent() {
          bitField0_ = (bitField0_ & ~0x00000004);
          content_ = getDefaultInstance().getContent();
          onChanged();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:signal.UnidentifiedSenderMessage.Message)
      }

      static {
        defaultInstance = new Message(true);
        defaultInstance.initFields();
      }

      // @@protoc_insertion_point(class_scope:signal.UnidentifiedSenderMessage.Message)
    }

    private int bitField0_;
    // optional bytes ephemeralPublic = 1;
    public static final int EPHEMERALPUBLIC_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString ephemeralPublic_;
    /**
     * <code>optional bytes ephemeralPublic = 1;</code>
     */
    public boolean hasEphemeralPublic() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional bytes ephemeralPublic = 1;</code>
     */
    public com.google.protobuf.ByteString getEphemeralPublic() {
      return ephemeralPublic_;
    }

    // optional bytes encryptedStatic = 2;
    public static final int ENCRYPTEDSTATIC_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString encryptedStatic_;
    /**
     * <code>optional bytes encryptedStatic = 2;</code>
     */
    public boolean hasEncryptedStatic() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional bytes encryptedStatic = 2;</code>
     */
    public com.google.protobuf.ByteString getEncryptedStatic() {
      return encryptedStatic_;
    }

    // optional bytes encryptedMessage = 3;
    public static final int ENCRYPTEDMESSAGE_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString encryptedMessage_;
    /**
     * <code>optional bytes encryptedMessage = 3;</code>
     */
    public boolean hasEncryptedMessage() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional bytes encryptedMessage = 3;</code>
     */
    public com.google.protobuf.ByteString getEncryptedMessage() {
      return encryptedMessage_;
    }

    private void initFields() {
      ephemeralPublic_ = com.google.protobuf.ByteString.EMPTY;
      encryptedStatic_ = com.google.protobuf.ByteString.EMPTY;
      encryptedMessage_ = com.google.protobuf.ByteString.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, ephemeralPublic_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, encryptedStatic_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, encryptedMessage_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, ephemeralPublic_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, encryptedStatic_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, encryptedMessage_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static SignalProtos.UnidentifiedSenderMessage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static SignalProtos.UnidentifiedSenderMessage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static SignalProtos.UnidentifiedSenderMessage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static SignalProtos.UnidentifiedSenderMessage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static SignalProtos.UnidentifiedSenderMessage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static SignalProtos.UnidentifiedSenderMessage parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static SignalProtos.UnidentifiedSenderMessage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static SignalProtos.UnidentifiedSenderMessage parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static SignalProtos.UnidentifiedSenderMessage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static SignalProtos.UnidentifiedSenderMessage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(SignalProtos.UnidentifiedSenderMessage prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code signal.UnidentifiedSenderMessage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements SignalProtos.UnidentifiedSenderMessageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return SignalProtos.internal_static_signal_UnidentifiedSenderMessage_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return SignalProtos.internal_static_signal_UnidentifiedSenderMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                SignalProtos.UnidentifiedSenderMessage.class, SignalProtos.UnidentifiedSenderMessage.Builder.class);
      }

      // Construct using org.session.libsignal.protos.SignalProtos.UnidentifiedSenderMessage.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        ephemeralPublic_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        encryptedStatic_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        encryptedMessage_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return SignalProtos.internal_static_signal_UnidentifiedSenderMessage_descriptor;
      }

      public SignalProtos.UnidentifiedSenderMessage getDefaultInstanceForType() {
        return SignalProtos.UnidentifiedSenderMessage.getDefaultInstance();
      }

      public SignalProtos.UnidentifiedSenderMessage build() {
        SignalProtos.UnidentifiedSenderMessage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public SignalProtos.UnidentifiedSenderMessage buildPartial() {
        SignalProtos.UnidentifiedSenderMessage result = new SignalProtos.UnidentifiedSenderMessage(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.ephemeralPublic_ = ephemeralPublic_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.encryptedStatic_ = encryptedStatic_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.encryptedMessage_ = encryptedMessage_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof SignalProtos.UnidentifiedSenderMessage) {
          return mergeFrom((SignalProtos.UnidentifiedSenderMessage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(SignalProtos.UnidentifiedSenderMessage other) {
        if (other == SignalProtos.UnidentifiedSenderMessage.getDefaultInstance()) return this;
        if (other.hasEphemeralPublic()) {
          setEphemeralPublic(other.getEphemeralPublic());
        }
        if (other.hasEncryptedStatic()) {
          setEncryptedStatic(other.getEncryptedStatic());
        }
        if (other.hasEncryptedMessage()) {
          setEncryptedMessage(other.getEncryptedMessage());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

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

      // optional bytes ephemeralPublic = 1;
      private com.google.protobuf.ByteString ephemeralPublic_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes ephemeralPublic = 1;</code>
       */
      public boolean hasEphemeralPublic() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional bytes ephemeralPublic = 1;</code>
       */
      public com.google.protobuf.ByteString getEphemeralPublic() {
        return ephemeralPublic_;
      }
      /**
       * <code>optional bytes ephemeralPublic = 1;</code>
       */
      public Builder setEphemeralPublic(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        ephemeralPublic_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bytes ephemeralPublic = 1;</code>
       */
      public Builder clearEphemeralPublic() {
        bitField0_ = (bitField0_ & ~0x00000001);
        ephemeralPublic_ = getDefaultInstance().getEphemeralPublic();
        onChanged();
        return this;
      }

      // optional bytes encryptedStatic = 2;
      private com.google.protobuf.ByteString encryptedStatic_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes encryptedStatic = 2;</code>
       */
      public boolean hasEncryptedStatic() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional bytes encryptedStatic = 2;</code>
       */
      public com.google.protobuf.ByteString getEncryptedStatic() {
        return encryptedStatic_;
      }
      /**
       * <code>optional bytes encryptedStatic = 2;</code>
       */
      public Builder setEncryptedStatic(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        encryptedStatic_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bytes encryptedStatic = 2;</code>
       */
      public Builder clearEncryptedStatic() {
        bitField0_ = (bitField0_ & ~0x00000002);
        encryptedStatic_ = getDefaultInstance().getEncryptedStatic();
        onChanged();
        return this;
      }

      // optional bytes encryptedMessage = 3;
      private com.google.protobuf.ByteString encryptedMessage_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes encryptedMessage = 3;</code>
       */
      public boolean hasEncryptedMessage() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional bytes encryptedMessage = 3;</code>
       */
      public com.google.protobuf.ByteString getEncryptedMessage() {
        return encryptedMessage_;
      }
      /**
       * <code>optional bytes encryptedMessage = 3;</code>
       */
      public Builder setEncryptedMessage(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        encryptedMessage_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bytes encryptedMessage = 3;</code>
       */
      public Builder clearEncryptedMessage() {
        bitField0_ = (bitField0_ & ~0x00000004);
        encryptedMessage_ = getDefaultInstance().getEncryptedMessage();
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:signal.UnidentifiedSenderMessage)
    }

    static {
      defaultInstance = new UnidentifiedSenderMessage(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:signal.UnidentifiedSenderMessage)
  }

  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_signal_ServerCertificate_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_signal_ServerCertificate_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_signal_ServerCertificate_Certificate_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_signal_ServerCertificate_Certificate_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_signal_SenderCertificate_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_signal_SenderCertificate_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_signal_UnidentifiedSenderMessage_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_signal_UnidentifiedSenderMessage_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_signal_UnidentifiedSenderMessage_Message_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_signal_UnidentifiedSenderMessage_Message_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\032UnidentifiedDelivery.proto\022\006signal\"c\n\021" +
      "ServerCertificate\022\023\n\013certificate\030\001 \001(\014\022\021" +
      "\n\tsignature\030\002 \001(\014\032&\n\013Certificate\022\n\n\002id\030\001" +
      " \001(\r\022\013\n\003key\030\002 \001(\014\"9\n\021SenderCertificate\022\016" +
      "\n\006sender\030\001 \001(\t\022\024\n\014senderDevice\030\002 \001(\r\"\267\002\n" +
      "\031UnidentifiedSenderMessage\022\027\n\017ephemeralP" +
      "ublic\030\001 \001(\014\022\027\n\017encryptedStatic\030\002 \001(\014\022\030\n\020" +
      "encryptedMessage\030\003 \001(\014\032\315\001\n\007Message\022<\n\004ty" +
      "pe\030\001 \001(\0162..signal.UnidentifiedSenderMess" +
      "age.Message.Type\0224\n\021senderCertificate\030\002 ",
      "\001(\0132\031.signal.SenderCertificate\022\017\n\007conten" +
      "t\030\003 \001(\014\"=\n\004Type\022\022\n\016PREKEY_MESSAGE\020\001\022\013\n\007M" +
      "ESSAGE\020\002\022\024\n\020FALLBACK_MESSAGE\020\003B.\n\036org.se" +
      "ssion.libsignal.metadataB\014SignalProtos"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
      new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
        public com.google.protobuf.ExtensionRegistry assignDescriptors(
            com.google.protobuf.Descriptors.FileDescriptor root) {
          descriptor = root;
          internal_static_signal_ServerCertificate_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_signal_ServerCertificate_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_signal_ServerCertificate_descriptor,
              new java.lang.String[] { "Certificate", "Signature", });
          internal_static_signal_ServerCertificate_Certificate_descriptor =
            internal_static_signal_ServerCertificate_descriptor.getNestedTypes().get(0);
          internal_static_signal_ServerCertificate_Certificate_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_signal_ServerCertificate_Certificate_descriptor,
              new java.lang.String[] { "Id", "Key", });
          internal_static_signal_SenderCertificate_descriptor =
            getDescriptor().getMessageTypes().get(1);
          internal_static_signal_SenderCertificate_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_signal_SenderCertificate_descriptor,
              new java.lang.String[] { "Sender", "SenderDevice", });
          internal_static_signal_UnidentifiedSenderMessage_descriptor =
            getDescriptor().getMessageTypes().get(2);
          internal_static_signal_UnidentifiedSenderMessage_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_signal_UnidentifiedSenderMessage_descriptor,
              new java.lang.String[] { "EphemeralPublic", "EncryptedStatic", "EncryptedMessage", });
          internal_static_signal_UnidentifiedSenderMessage_Message_descriptor =
            internal_static_signal_UnidentifiedSenderMessage_descriptor.getNestedTypes().get(0);
          internal_static_signal_UnidentifiedSenderMessage_Message_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_signal_UnidentifiedSenderMessage_Message_descriptor,
              new java.lang.String[] { "Type", "SenderCertificate", "Content", });
          return null;
        }
      };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
  }

  // @@protoc_insertion_point(outer_class_scope)
}
